@ziggs-ai/agent-sdk 0.1.12 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +41 -2
  3. package/dist/AgentHost.d.ts +201 -0
  4. package/dist/AgentHost.js +652 -0
  5. package/dist/adapters/AnthropicAdapter.d.ts +39 -0
  6. package/dist/adapters/AnthropicAdapter.js +200 -0
  7. package/dist/adapters/McpAdapter.d.ts +199 -0
  8. package/dist/adapters/McpAdapter.js +468 -0
  9. package/dist/adapters/OpenAIAdapter.d.ts +26 -0
  10. package/dist/adapters/OpenAIAdapter.js +158 -0
  11. package/dist/adapters/index.js +2 -0
  12. package/dist/agent/Agent.d.ts +78 -0
  13. package/dist/agent/Agent.js +58 -0
  14. package/dist/agent/ClaudeSdkAgent.d.ts +38 -0
  15. package/dist/agent/ClaudeSdkAgent.js +322 -0
  16. package/dist/agent/claudeCognition.d.ts +67 -0
  17. package/dist/agent/claudeCognition.js +103 -0
  18. package/dist/agent/claudeSdkProtocol.d.ts +11 -0
  19. package/dist/agent/claudeSdkTools.d.ts +19 -0
  20. package/dist/agent/claudeSdkTools.js +57 -0
  21. package/dist/agent/hostedAgentConnection.d.ts +15 -0
  22. package/dist/agent/hostedAgentConnection.js +29 -0
  23. package/dist/agent/toolManagerToSdkMcp.d.ts +12 -0
  24. package/dist/agent/toolManagerToSdkMcp.js +123 -0
  25. package/dist/brain/index.d.ts +50 -0
  26. package/dist/brain/index.js +45 -0
  27. package/dist/cognition/validateContext.d.ts +11 -0
  28. package/dist/cognition/validateContext.js +117 -0
  29. package/dist/context/applyEffects.d.ts +2 -0
  30. package/dist/context/applyEffects.js +89 -0
  31. package/dist/context/batch.d.ts +2 -0
  32. package/dist/context/batch.js +18 -0
  33. package/dist/context/classifyEnvelope.d.ts +1 -0
  34. package/dist/context/classifyEnvelope.js +58 -0
  35. package/dist/context/routingLabels.d.ts +4 -0
  36. package/dist/context/routingLabels.js +48 -0
  37. package/dist/defineAgent.d.ts +14 -0
  38. package/dist/defineAgent.js +68 -0
  39. package/dist/formatters/AgreementFormatter.d.ts +18 -0
  40. package/dist/formatters/AgreementFormatter.js +130 -0
  41. package/dist/formatters/HistoryFormatter.d.ts +26 -0
  42. package/dist/formatters/HistoryFormatter.js +173 -0
  43. package/dist/formatters/index.js +2 -0
  44. package/{src/index.ts → dist/index.d.ts} +7 -53
  45. package/dist/index.js +66 -0
  46. package/dist/ingress/normalizeIncoming.d.ts +65 -0
  47. package/dist/ingress/normalizeIncoming.js +88 -0
  48. package/dist/memory/MemoryStore.d.ts +55 -0
  49. package/dist/memory/MemoryStore.js +78 -0
  50. package/dist/pricing/fleetDefaults.d.ts +46 -0
  51. package/dist/pricing/fleetDefaults.js +168 -0
  52. package/dist/pricing/fleetEvalFree.d.ts +7 -0
  53. package/dist/pricing/fleetEvalFree.js +24 -0
  54. package/dist/pricing/fleetFreeTierA.gen.d.ts +6 -0
  55. package/{src/pricing/fleetFreeTierA.gen.ts → dist/pricing/fleetFreeTierA.gen.js} +5 -6
  56. package/dist/pricing/fleetTierByAgentId.gen.d.ts +7 -0
  57. package/dist/pricing/fleetTierByAgentId.gen.js +768 -0
  58. package/dist/runtime/AgentMachine.d.ts +143 -0
  59. package/dist/runtime/AgentMachine.js +400 -0
  60. package/dist/runtime/PromptBuilder.d.ts +96 -0
  61. package/dist/runtime/PromptBuilder.js +439 -0
  62. package/{src/runtime/bootstrapCtx.ts → dist/runtime/bootstrapCtx.d.ts} +1 -22
  63. package/dist/runtime/bootstrapCtx.js +37 -0
  64. package/dist/runtime/buildOutcome.d.ts +68 -0
  65. package/dist/runtime/buildOutcome.js +464 -0
  66. package/dist/runtime/defaults.d.ts +54 -0
  67. package/dist/runtime/defaults.js +47 -0
  68. package/dist/runtime/deriveRespondsToProposals.d.ts +9 -0
  69. package/dist/runtime/deriveRespondsToProposals.js +38 -0
  70. package/dist/runtime/kickoff.d.ts +15 -0
  71. package/dist/runtime/kickoff.js +112 -0
  72. package/dist/runtime/runMechanical.d.ts +25 -0
  73. package/dist/runtime/runMechanical.js +74 -0
  74. package/dist/runtime/runTurn.d.ts +63 -0
  75. package/dist/runtime/runTurn.js +800 -0
  76. package/dist/runtime/validateWorkflow.d.ts +17 -0
  77. package/dist/runtime/validateWorkflow.js +209 -0
  78. package/dist/server/ConnectionPool.d.ts +68 -0
  79. package/dist/server/ConnectionPool.js +166 -0
  80. package/dist/server/EventQueue.d.ts +33 -0
  81. package/dist/server/EventQueue.js +98 -0
  82. package/dist/server/InboxCatchUp.d.ts +24 -0
  83. package/dist/server/InboxCatchUp.js +214 -0
  84. package/dist/server/OutboxBuffer.d.ts +33 -0
  85. package/dist/server/OutboxBuffer.js +68 -0
  86. package/dist/server/SeenMessages.d.ts +13 -0
  87. package/dist/server/SeenMessages.js +31 -0
  88. package/dist/server/StateTimers.d.ts +34 -0
  89. package/dist/server/StateTimers.js +70 -0
  90. package/dist/server/ZiggsEffectHandler.d.ts +79 -0
  91. package/dist/server/ZiggsEffectHandler.js +319 -0
  92. package/dist/server/agreements/AgreementService.d.ts +50 -0
  93. package/dist/server/agreements/AgreementService.js +85 -0
  94. package/dist/server/createHealthServer.d.ts +7 -0
  95. package/dist/server/createHealthServer.js +75 -0
  96. package/dist/server/proactive/ProactiveTrigger.d.ts +33 -0
  97. package/dist/server/proactive/ProactiveTrigger.js +71 -0
  98. package/dist/server/runLauncher.d.ts +28 -0
  99. package/dist/server/runLauncher.js +93 -0
  100. package/dist/server/tasks/TaskService.d.ts +25 -0
  101. package/dist/server/tasks/TaskService.js +103 -0
  102. package/dist/server/tasks/index.js +1 -0
  103. package/dist/server/telemetryIngest.d.ts +24 -0
  104. package/dist/server/telemetryIngest.js +62 -0
  105. package/dist/server/tools/index.d.ts +24 -0
  106. package/{src/server/tools/index.ts → dist/server/tools/index.js} +4 -24
  107. package/dist/server/tools/tier1/protocolRunner.d.ts +39 -0
  108. package/dist/server/tools/tier1/protocolRunner.js +288 -0
  109. package/dist/server/tools/tier1/protocolTools.d.ts +12 -0
  110. package/dist/server/tools/tier1/protocolTools.js +37 -0
  111. package/dist/server/tools/tier2/connectionTools.d.ts +4 -0
  112. package/dist/server/tools/tier2/connectionTools.js +63 -0
  113. package/dist/server/tools/tier2/contextTools.d.ts +4 -0
  114. package/dist/server/tools/tier2/contextTools.js +46 -0
  115. package/dist/server/tools/tier2/discoveryTools.d.ts +4 -0
  116. package/dist/server/tools/tier2/discoveryTools.js +25 -0
  117. package/dist/server/tools/tier2/marketplaceTools.d.ts +3 -0
  118. package/dist/server/tools/tier2/marketplaceTools.js +22 -0
  119. package/dist/server/tools/tier2/paymentTools.d.ts +12 -0
  120. package/dist/server/tools/tier2/paymentTools.js +165 -0
  121. package/dist/server/ziggsconnect/ZiggsConnectClient.d.ts +35 -0
  122. package/dist/server/ziggsconnect/ZiggsConnectClient.js +95 -0
  123. package/dist/server/ziggscontext/ZiggsContextClient.d.ts +53 -0
  124. package/dist/server/ziggscontext/ZiggsContextClient.js +124 -0
  125. package/dist/server/ziggspay/ZiggsPayClient.d.ts +82 -0
  126. package/dist/server/ziggspay/ZiggsPayClient.js +203 -0
  127. package/dist/shared/ids.d.ts +1 -0
  128. package/dist/shared/ids.js +3 -0
  129. package/dist/shared/runtimeLog.d.ts +18 -0
  130. package/dist/shared/runtimeLog.js +68 -0
  131. package/dist/shared/types.d.ts +22 -0
  132. package/dist/shared/types.js +23 -0
  133. package/dist/tasks/protocolRegistry.d.ts +16 -0
  134. package/dist/tasks/protocolRegistry.js +20 -0
  135. package/dist/tools/ToolManager.d.ts +12 -0
  136. package/dist/tools/ToolManager.js +74 -0
  137. package/dist/tools/ToolProvider.d.ts +6 -0
  138. package/dist/tools/ToolProvider.js +21 -0
  139. package/dist/tools/defineTool.d.ts +27 -0
  140. package/dist/tools/defineTool.js +62 -0
  141. package/{src/tools/index.ts → dist/tools/index.d.ts} +0 -1
  142. package/dist/tools/index.js +6 -0
  143. package/dist/tools/recordReport.d.ts +41 -0
  144. package/dist/tools/recordReport.js +30 -0
  145. package/dist/types.d.ts +466 -0
  146. package/dist/types.js +7 -0
  147. package/dist/utils/jsonExtractor.d.ts +2 -0
  148. package/dist/utils/jsonExtractor.js +111 -0
  149. package/package.json +14 -6
  150. package/src/AgentHost.ts +0 -814
  151. package/src/adapters/AnthropicAdapter.ts +0 -238
  152. package/src/adapters/McpAdapter.ts +0 -678
  153. package/src/adapters/OpenAIAdapter.ts +0 -194
  154. package/src/agent/Agent.ts +0 -112
  155. package/src/agent/ClaudeSdkAgent.ts +0 -401
  156. package/src/agent/claudeCognition.ts +0 -139
  157. package/src/agent/claudeSdkTools.ts +0 -81
  158. package/src/agent/hostedAgentConnection.ts +0 -41
  159. package/src/agent/toolManagerToSdkMcp.ts +0 -136
  160. package/src/cognition/validateContext.ts +0 -95
  161. package/src/context/applyEffects.ts +0 -80
  162. package/src/context/batch.ts +0 -19
  163. package/src/context/classifyEnvelope.ts +0 -38
  164. package/src/context/routingLabels.ts +0 -46
  165. package/src/defineAgent.ts +0 -77
  166. package/src/formatters/AgreementFormatter.ts +0 -111
  167. package/src/formatters/HistoryFormatter.ts +0 -172
  168. package/src/ingress/normalizeIncoming.ts +0 -162
  169. package/src/memory/MemoryStore.ts +0 -104
  170. package/src/pricing/fleetDefaults.ts +0 -225
  171. package/src/pricing/fleetEvalFree.ts +0 -24
  172. package/src/pricing/fleetTierByAgentId.gen.ts +0 -775
  173. package/src/runtime/AgentMachine.ts +0 -484
  174. package/src/runtime/PromptBuilder.ts +0 -522
  175. package/src/runtime/buildOutcome.ts +0 -563
  176. package/src/runtime/defaults.ts +0 -86
  177. package/src/runtime/deriveRespondsToProposals.ts +0 -35
  178. package/src/runtime/kickoff.ts +0 -117
  179. package/src/runtime/runMechanical.ts +0 -106
  180. package/src/runtime/runTurn.ts +0 -870
  181. package/src/runtime/validateWorkflow.ts +0 -221
  182. package/src/server/ConnectionPool.ts +0 -206
  183. package/src/server/EventQueue.ts +0 -133
  184. package/src/server/InboxCatchUp.ts +0 -291
  185. package/src/server/OutboxBuffer.ts +0 -90
  186. package/src/server/SeenMessages.ts +0 -27
  187. package/src/server/StateTimers.ts +0 -85
  188. package/src/server/ZiggsEffectHandler.ts +0 -427
  189. package/src/server/agreements/AgreementService.ts +0 -118
  190. package/src/server/createHealthServer.ts +0 -85
  191. package/src/server/proactive/ProactiveTrigger.ts +0 -83
  192. package/src/server/runLauncher.ts +0 -146
  193. package/src/server/tasks/TaskService.ts +0 -111
  194. package/src/server/telemetryIngest.ts +0 -91
  195. package/src/server/tools/tier1/protocolRunner.ts +0 -353
  196. package/src/server/tools/tier1/protocolTools.ts +0 -114
  197. package/src/server/tools/tier2/connectionTools.ts +0 -75
  198. package/src/server/tools/tier2/contextTools.ts +0 -63
  199. package/src/server/tools/tier2/discoveryTools.ts +0 -34
  200. package/src/server/tools/tier2/marketplaceTools.ts +0 -27
  201. package/src/server/tools/tier2/paymentTools.ts +0 -170
  202. package/src/server/ziggsconnect/ZiggsConnectClient.ts +0 -126
  203. package/src/server/ziggscontext/ZiggsContextClient.ts +0 -129
  204. package/src/server/ziggspay/ZiggsPayClient.ts +0 -193
  205. package/src/shared/ids.ts +0 -3
  206. package/src/shared/runtimeLog.ts +0 -72
  207. package/src/shared/types.ts +0 -29
  208. package/src/tasks/protocolRegistry.ts +0 -25
  209. package/src/tools/ToolManager.ts +0 -95
  210. package/src/tools/ToolProvider.ts +0 -19
  211. package/src/tools/defineTool.ts +0 -90
  212. package/src/tools/recordReport.ts +0 -82
  213. package/src/types.ts +0 -483
  214. package/src/utils/jsonExtractor.ts +0 -100
  215. /package/{src/adapters/index.ts → dist/adapters/index.d.ts} +0 -0
  216. /package/{src/agent/claudeSdkProtocol.ts → dist/agent/claudeSdkProtocol.js} +0 -0
  217. /package/{src/formatters/index.ts → dist/formatters/index.d.ts} +0 -0
  218. /package/{src/server/tasks/index.ts → dist/server/tasks/index.d.ts} +0 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0 — 2026-07-16
4
+
5
+ ### Added (ZIG-784)
6
+
7
+ - Public brain selection API: `ziggsBrain()`, `claudeBrain()`, and `Brain` interface (`tick()`).
8
+ - `AgentHost` / `createAgent` accept `brain` — preferred over legacy `cognition: 'fsm' | 'claude-sdk'`.
9
+ - README operator flow for picking Ziggs vs Claude brain.
10
+ - `npm run build` + `prepack` for npm publish (compiled `dist/` + `.d.ts`).
11
+
12
+ ### Deprecated
13
+
14
+ - `cognition` option on `AgentHost` — use `brain: ziggsBrain()` or `brain: claudeBrain()` instead.
package/README.md CHANGED
@@ -47,6 +47,44 @@ The `wait` action is built-in: `defineAgent` automatically injects it into every
47
47
 
48
48
  ---
49
49
 
50
+ ## Pick a brain
51
+
52
+ The **host** (`AgentHost` / `createAgent`) is the product — identity, WebSocket, tasks, agreements, tools. The **brain** is only *how the agent decides* on each wake.
53
+
54
+ | Brain | Factory | When to use |
55
+ |--------|---------|-------------|
56
+ | **Ziggs** (workflow / FSM) | `ziggsBrain({ model?, openaiKey?, anthropicKey? })` | Author a workflow; deterministic, controllable routing via `runTurn`. |
57
+ | **Claude** (Agent SDK) | `claudeBrain({ anthropicKey, model?, maxTurns?, specialization? })` | Hand the loop to Claude `query()`; fewer knobs, more autonomy. |
58
+
59
+ Both brains share the same host, tools, and Ziggs protocol. Pick control vs autonomy.
60
+
61
+ ```ts
62
+ import { createAgent, defineAgent, ziggsBrain, claudeBrain } from '@ziggs-ai/agent-sdk';
63
+
64
+ // Ziggs brain — workflow required (states + initial or explicit workflow)
65
+ const ziggsHost = createAgent({
66
+ ...defineAgent({ agentId: 'my-agent', description: '…', initial: 'idle', states: { … } }),
67
+ operatorKey: process.env.ZIGGS_OPERATOR_KEY,
68
+ brain: ziggsBrain({ openaiKey: process.env.OPENAI_API_KEY }),
69
+ });
70
+
71
+ // Claude brain — no workflow needed (host synthesizes a parked state)
72
+ const claudeHost = createAgent({
73
+ agentId: 'claude-agent',
74
+ description: 'A hired Claude specialist',
75
+ operatorKey: process.env.ZIGGS_OPERATOR_KEY,
76
+ brain: claudeBrain({ anthropicKey: process.env.ANTHROPIC_API_KEY }),
77
+ });
78
+
79
+ await claudeHost.connectAsync();
80
+ ```
81
+
82
+ Legacy `cognition: 'fsm' | 'claude-sdk'` still works but is deprecated — prefer `brain`.
83
+
84
+ The public **`Brain`** interface is `tick(TickInput): Promise<TickOutput>`. Built-in implementations: `Agent` (Ziggs) and `ClaudeSdkAgent` (Claude).
85
+
86
+ ---
87
+
50
88
  ## How you usually run an agent
51
89
 
52
90
  1. **`defineAgent({ ... })`** → options object including `workflow`.
@@ -60,6 +98,7 @@ Examples in the repo: `examples/agents/*.js` (e.g. coffee, expense, delivery age
60
98
  ## Main exports (entry: `src/index.js`)
61
99
 
62
100
  - **`AgentHost`**, **`createAgent`**, **`createAgentPool`**, **`defineAgent`**
101
+ - **Brains:** `ziggsBrain`, `claudeBrain`, type `Brain`
63
102
  - **`Agent`**, **`AgentMachine`**, **`runTurn`**
64
103
  - **Prompt / tools:** `PromptBuilder`, `ToolManager`, `defineTool`
65
104
  - **Tools come in two tiers — single home: `server/tools/`:**
@@ -68,14 +107,14 @@ Examples in the repo: `examples/agents/*.js` (e.g. coffee, expense, delivery age
68
107
  - **Adapters / utils:** `OpenAIAdapter`, JSON helpers, formatters
69
108
  - **Re-exported** from `@ziggs-ai/api-client`: `WebSocketClient`, `ContextReadClient`, `ContextDiscoveryClient`, `ContextGrantsClient`, `ArtifactsClient`, `MessagesClient`, `ScopeClient`, `AgentSearchClient`, `getBackendUrl`, `getWebSocketUrl`, etc. (There is no `ContextReader` / `ContextWriter` — use the clients above from `@ziggs-ai/api-client` directly.)
70
109
 
71
- Package export: `"."` → `src/index.js` (see `package.json`).
110
+ Package export: `"."` → `dist/index.js` (see `package.json`; `npm run build` before publish or monorepo tests).
72
111
 
73
112
  ---
74
113
 
75
114
  ## Requirements
76
115
 
77
116
  - **Node** ≥ 18
78
- - Env: **`OPENAI_API_KEY`** (and optionally **`OPENAI_MODEL`**) for `defineAgent` defaults; Ziggs **`ZIGGS_OPERATOR_KEY`** (operator token, scope `agents:impersonate`) for platform features.
117
+ - Env: **`OPENAI_API_KEY`** for the Ziggs brain; **`ANTHROPIC_API_KEY`** for the Claude brain; Ziggs **`ZIGGS_OPERATOR_KEY`** (operator token, scope `agents:impersonate`) for platform features.
79
118
 
80
119
  ---
81
120
 
@@ -0,0 +1,201 @@
1
+ import type { AgentConfig, Ctx, Workflow } from './types.js';
2
+ import { Agent } from './agent/Agent.js';
3
+ import { ClaudeSdkAgent, type CognitionKind } from './agent/ClaudeSdkAgent.js';
4
+ import { type BrainSelection } from './brain/index.js';
5
+ export type { CognitionKind };
6
+ import { type NormalizedEvent } from './ingress/normalizeIncoming.js';
7
+ import { type MemoryStore } from './memory/MemoryStore.js';
8
+ /**
9
+ * Operator-provided FSM session persistence.
10
+ *
11
+ * AgentHost calls load() before each tick when a lane has no in-memory state
12
+ * (e.g. after a container restart) and save() after every successful tick.
13
+ * A null return from load() means "no prior state — start fresh."
14
+ */
15
+ export interface SessionStore {
16
+ load(laneKey: string): Promise<{
17
+ ctx?: Ctx;
18
+ state?: string;
19
+ } | null | undefined>;
20
+ save(laneKey: string, session: {
21
+ ctx?: Ctx;
22
+ state?: string;
23
+ }): Promise<void>;
24
+ }
25
+ import { ToolManager } from './tools/ToolManager.js';
26
+ import type { ToolDefinition } from './tools/defineTool.js';
27
+ import { OpenAIAdapter } from './adapters/OpenAIAdapter.js';
28
+ import { WebSocketClient } from '@ziggs-ai/api-client';
29
+ /**
30
+ * The single fleet-wide default model — the one place the fallback lives.
31
+ * Change this (or set `LLM_MODEL`) to move the whole fleet; nothing hardcodes a
32
+ * model anywhere else. The id also picks the provider: a `claude-*` value routes
33
+ * to AnthropicAdapter (+ ANTHROPIC_API_KEY), anything else to OpenAIAdapter — see
34
+ * the `model?.startsWith('claude')` branch in createBackendServices below.
35
+ */
36
+ export declare const DEFAULT_MODEL = "claude-haiku-4-5";
37
+ /**
38
+ * Given a normalized event, return the sessionId for this agent. Return
39
+ * `null` to skip processing. Lets each Agent define what "session" means —
40
+ * chat-scoped agents bucket by chatId (the default), task-scoped agents
41
+ * could bucket by taskId, cron agents by schedule id, etc.
42
+ */
43
+ export type SessionResolver = (normalized: NormalizedEvent, ownAgentId: string) => string | null;
44
+ interface LlmAdapter {
45
+ chatMessages(messages: unknown[], tools?: unknown[], options?: Record<string, unknown>): Promise<unknown>;
46
+ }
47
+ interface AgentServices {
48
+ tools?: ToolDefinition[];
49
+ llm?: {
50
+ model?: string;
51
+ } | LlmAdapter;
52
+ [key: string]: unknown;
53
+ }
54
+ export interface AgentHostOptions {
55
+ openaiKey?: string;
56
+ anthropicKey?: string;
57
+ model?: string;
58
+ operatorKey?: string;
59
+ agentId?: string;
60
+ name?: string | null;
61
+ wsUrl?: string;
62
+ description?: string;
63
+ specialization?: string | null;
64
+ tools?: ToolDefinition[];
65
+ taskTools?: 'all' | 'none' | string[];
66
+ /**
67
+ * Brain selection — preferred over legacy `cognition`.
68
+ * `ziggsBrain()` for the workflow/FSM loop; `claudeBrain()` for Claude Agent SDK.
69
+ */
70
+ brain?: BrainSelection;
71
+ /**
72
+ * @deprecated Use `brain: ziggsBrain()` or `brain: claudeBrain()` instead.
73
+ * Internal mapping: `fsm` → Ziggs brain, `claude-sdk` → Claude brain.
74
+ */
75
+ cognition?: CognitionKind;
76
+ /** Max agentic turns per Claude SDK wake. Default 30. */
77
+ claudeMaxTurns?: number;
78
+ services?: AgentServices;
79
+ workflow?: Workflow;
80
+ states?: Workflow['states'];
81
+ initial?: string;
82
+ tickTimeoutMs?: number;
83
+ /** Per-agent session keying. Defaults to `(n) => n.chatId`. */
84
+ sessionResolver?: SessionResolver;
85
+ /**
86
+ * Agent-private long-term memory. Operator-provided. Default: a fresh
87
+ * `InMemoryStore` (non-durable; lost on process restart). For durability,
88
+ * pass `new FileMemoryStore(path)` or your own implementation.
89
+ */
90
+ memory?: MemoryStore;
91
+ /**
92
+ * FSM session persistence. Operator-provided. When set, AgentHost loads
93
+ * prior state before each tick (cold-start recovery) and saves after every
94
+ * successful tick. Omit to keep state in-process only (default behaviour).
95
+ */
96
+ sessionStore?: SessionStore;
97
+ /** Observability tap: called after every effect with the effect and its response. */
98
+ effectTap?: (effect: import('./types.js').Effect, response: unknown) => void;
99
+ /** Observability tap: called on every FSM state transition, no-match, depth-guard, or error-escape (ZIG-442). */
100
+ transitionTap?: (event: import('./runtime/AgentMachine.js').TransitionEvent) => void;
101
+ /**
102
+ * Usage/cost tap: called once per settled tick with the tick's authoritative
103
+ * token usage (result.metrics). This is the SINGLE source of truth for
104
+ * usage/cost across every cognition — the FSM (llm-call + streamed reply +
105
+ * tool-internal LLM) and the Claude brain (incl. cache tokens) both funnel
106
+ * their spend here (ZIG-813). effectTap / tool generations are structural
107
+ * tracing only and must NOT also carry billable usage, or cost double-counts.
108
+ */
109
+ metricsTap?: (info: {
110
+ agentId: string;
111
+ sessionId: string;
112
+ model: string;
113
+ cognition: string;
114
+ metrics: import('./agent/Agent.js').TickOutput['metrics'];
115
+ }) => void;
116
+ /** Production monitoring ingest (ZIG-360). Default on; set false to disable. */
117
+ telemetryIngest?: boolean;
118
+ /**
119
+ * Pull inbox on every WS connect/reconnect (ZIG-454). Default true.
120
+ * Recovers messages lost when backend in-memory pending queues are dropped.
121
+ */
122
+ inboxCatchUp?: boolean;
123
+ }
124
+ /**
125
+ * AgentHost — the Server. Owns a pure {@link Agent}, an {@link EffectHandler},
126
+ * a transport (Ziggs WebSocket), and the lane router (per-session FIFO queue
127
+ * + in-memory session state).
128
+ *
129
+ * transport (WS) → handleMessage → agent.tick(... , eff) → ...
130
+ */
131
+ export declare class AgentHost {
132
+ options: Required<Pick<AgentHostOptions, 'agentId' | 'operatorKey' | 'openaiKey'>> & AgentHostOptions;
133
+ toolManager: ToolManager;
134
+ llm?: OpenAIAdapter | LlmAdapter;
135
+ agent: Agent | ClaudeSdkAgent;
136
+ wsClient: WebSocketClient;
137
+ private eff;
138
+ private eventQueue;
139
+ private sessions;
140
+ private sessionResolver;
141
+ private tickTimeoutMs;
142
+ private memory;
143
+ private sessionStore;
144
+ private taskService;
145
+ private agreementService;
146
+ private messageSender;
147
+ private seenMessages;
148
+ /** Lazy inbox client for advancing the watermark on the live-push path (ZIG-832 P4). */
149
+ private _inbox?;
150
+ private stateTimers;
151
+ private catchUpInFlight;
152
+ private inboxCatchUpEnabled;
153
+ constructor(options?: AgentHostOptions);
154
+ private _validate;
155
+ private _setup;
156
+ /**
157
+ * Coalesce concurrent connect/reconnect bursts into one catch-up pass.
158
+ */
159
+ private _ensureCatchUp;
160
+ private _runInboxCatchUp;
161
+ /**
162
+ * Push notification handler — invoked when the backend sees a relevant
163
+ * resource change (artifact created, task state transition, agreement
164
+ * updated). The agent decides which session/lane to wake based on the
165
+ * event payload; it pulls the actual data via the primitive endpoints
166
+ * from inside the tick.
167
+ *
168
+ * Lightweight: defers all work to a tick by enqueueing a synthetic event
169
+ * carrying just enough context for the agent to route it.
170
+ */
171
+ handleResourceEvent(event: Record<string, unknown>): Promise<void>;
172
+ /** Wire entry. Normalize → resolve session → enqueue on the right lane. */
173
+ handleMessage(text: string, metadata?: Record<string, unknown>): Promise<void>;
174
+ /** Best-effort: advance the inbox watermark for a chat handled live (ZIG-832 P4). */
175
+ private _ackChatWatermark;
176
+ private _processEvent;
177
+ /** Arms the lane's liveness timer iff stateName is a parked state declaring timeoutMs. */
178
+ private _armIfTimedParked;
179
+ private _resolveOwnAgentId;
180
+ connectAsync(timeout?: number): Promise<this>;
181
+ private _bootstrapAssignedActiveTasks;
182
+ /** ZIG-802: replay task-assigned for an existing active task (demo recovery). */
183
+ wakeTaskAssignment(taskId: string): Promise<void>;
184
+ disconnect(): void;
185
+ /** Waits for all in-flight ticks to complete. Call before process.exit() on SIGTERM. */
186
+ drain(timeoutMs?: number): Promise<void>;
187
+ registerTool(tool: ToolDefinition): string;
188
+ isConnected(): boolean;
189
+ }
190
+ /**
191
+ * createAgent(config) → AgentHost
192
+ * createAgentPool([cfg, ...]) → ConnectionPool (lazy fleet, async-loaded)
193
+ */
194
+ export declare function createAgent(options?: AgentHostOptions | AgentConfig): AgentHost;
195
+ export declare function createAgentPool(configs: AgentHostOptions[] | AgentConfig[], opts?: {
196
+ poolOptions?: {
197
+ maxActive?: number;
198
+ idleTimeoutMs?: number;
199
+ };
200
+ }): Promise<unknown>;
201
+ export default AgentHost;