How routerarchitects/tip-olg-nats-agent-core works
olg-nats-agent-core is a reusable NATS messaging and desired-state library embedded in long-running agents, not a daemon. An agent submits configure or action commands: configure persists desired state before publishing a notification, while action publishes directly. The target agent receives typed messages, loads or watches desired state as needed, and can publish results or status; subscriptions are restored after reconnect. The graph reflects README capabilities and sampled implementation paths; unsampled APIs are represented only where their directory or path is supported.
Main entry points: client.go Client facade · session.go Session manager · handlers_runtime.go Handler runtime · publisher.go NATS publisher
Components 13
Agent API
- Client facade
agentcore/client.go - Message contracts
agentcore/contracts.go
Message Routing
- Handler runtime
agentcore/handlers_runtime.go - Subject builder
internal/subjects/subjects.go - Subscription registry
internal/registry/registry.go - NATS publisher
internal/transport/publisher.go
Desired State
- Desired-config store
internal/kv/store.go - Desired-config watch
internal/kv/watch.go
Runtime Session
- Session manager
internal/session/session.go - Session defaults
internal/session/options.go
Other components
- Owning agent
- NATS server
- JetStream KV
Connections 23
- Owning agent → Client facade: calls APIs
- Client facade → Message contracts: validates messages
- Client facade → Subject builder: builds subjects
- Client facade → Session manager: starts session
- Client facade → Desired-config store: stores and loads
- Client facade → Desired-config watch: starts watches
- Client facade → NATS publisher: publishes messages
- Client facade → Handler runtime: registers handlers
- Handler runtime → Subscription registry: records intent
- Handler runtime → NATS server: subscribes and receives
- Handler runtime → Message contracts: decodes messages
- Session manager → Session defaults: normalizes config
- Session manager → NATS server: connects
- Session manager → JetStream KV: creates KV access
- NATS publisher → Session manager: gets connection
- NATS publisher → NATS server: publishes and flushes
- Desired-config store → Session manager: gets KV handle
- Desired-config watch → Session manager: gets KV handle
- Desired-config store → JetStream KV: reads and writes
- Desired-config watch → JetStream KV: watches keys
- NATS server → Handler runtime: delivers messages
- Handler runtime → Owning agent: dispatches callbacks
- Owning agent → Client facade: registers callbacks