package config

// The ecosystem trio. Maven owns conversation and personal memory; it owns
// neither identity, nor operational state, nor execution. Each of these three
// is nil unless configured and each degrades on its own — an outage is a named
// gap in the answer, never a broken turn and never a guess. See docs/ecosystem.md.
//
// All three carry the same two fields, and they stay three types rather than one
// shared EndpointConfig on purpose: the block a reader greps for is the service
// they are debugging, and a shared type would put "url" in one place for three
// different trust levels.

// PraxisConfig — maven's connection to the Praxis attention service.
type PraxisConfig struct {
	// URL — the Praxis HTTP API base URL (e.g. "http://localhost:9742").
	URL string `json:"url,omitempty"`

	// Token — the shared bearer token sent on every request. Empty ⇒ calls
	// go out unauthenticated, which is only appropriate on a loopback or
	// unix-socket transport. Supports ${VAR} expansion, so the secret lives
	// in deploy/telegram.env, not in the committed config.
	Token string `json:"token,omitempty"`
}

// NexusConfig — connection to the Nexus identity service.
type NexusConfig struct {
	// URL — the Nexus HTTP API base URL (e.g. "http://localhost:9740").
	URL string `json:"url,omitempty"`

	// Token — shared bearer token; see PraxisConfig.Token.
	Token string `json:"token,omitempty"`
}

// HexisConfig — connection to the Hexis capability execution service.
type HexisConfig struct {
	// URL — the Hexis HTTP API base URL (e.g. "http://localhost:9741").
	URL string `json:"url,omitempty"`

	// Token — shared bearer token; see PraxisConfig.Token.
	Token string `json:"token,omitempty"`
}
