@ziggs-ai/agent-sdk 0.1.11 → 0.2.0
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.
- package/CHANGELOG.md +14 -0
- package/README.md +41 -2
- package/dist/AgentHost.d.ts +201 -0
- package/dist/AgentHost.js +652 -0
- package/dist/adapters/AnthropicAdapter.d.ts +39 -0
- package/dist/adapters/AnthropicAdapter.js +200 -0
- package/dist/adapters/McpAdapter.d.ts +199 -0
- package/dist/adapters/McpAdapter.js +468 -0
- package/dist/adapters/OpenAIAdapter.d.ts +26 -0
- package/dist/adapters/OpenAIAdapter.js +158 -0
- package/dist/adapters/index.js +2 -0
- package/dist/agent/Agent.d.ts +78 -0
- package/dist/agent/Agent.js +58 -0
- package/dist/agent/ClaudeSdkAgent.d.ts +38 -0
- package/dist/agent/ClaudeSdkAgent.js +322 -0
- package/dist/agent/claudeCognition.d.ts +67 -0
- package/dist/agent/claudeCognition.js +103 -0
- package/dist/agent/claudeSdkProtocol.d.ts +11 -0
- package/dist/agent/claudeSdkProtocol.js +27 -0
- package/dist/agent/claudeSdkTools.d.ts +19 -0
- package/dist/agent/claudeSdkTools.js +57 -0
- package/dist/agent/hostedAgentConnection.d.ts +15 -0
- package/dist/agent/hostedAgentConnection.js +29 -0
- package/dist/agent/toolManagerToSdkMcp.d.ts +12 -0
- package/dist/agent/toolManagerToSdkMcp.js +123 -0
- package/dist/brain/index.d.ts +50 -0
- package/dist/brain/index.js +45 -0
- package/dist/cognition/validateContext.d.ts +11 -0
- package/dist/cognition/validateContext.js +117 -0
- package/dist/context/applyEffects.d.ts +2 -0
- package/dist/context/applyEffects.js +89 -0
- package/dist/context/batch.d.ts +2 -0
- package/dist/context/batch.js +18 -0
- package/dist/context/classifyEnvelope.d.ts +1 -0
- package/dist/context/classifyEnvelope.js +58 -0
- package/dist/context/routingLabels.d.ts +4 -0
- package/dist/context/routingLabels.js +48 -0
- package/dist/defineAgent.d.ts +14 -0
- package/dist/defineAgent.js +68 -0
- package/dist/formatters/AgreementFormatter.d.ts +18 -0
- package/dist/formatters/AgreementFormatter.js +130 -0
- package/dist/formatters/HistoryFormatter.d.ts +26 -0
- package/dist/formatters/HistoryFormatter.js +173 -0
- package/dist/formatters/index.js +2 -0
- package/{src/index.ts → dist/index.d.ts} +13 -53
- package/dist/index.js +66 -0
- package/dist/ingress/normalizeIncoming.d.ts +65 -0
- package/dist/ingress/normalizeIncoming.js +88 -0
- package/dist/memory/MemoryStore.d.ts +55 -0
- package/dist/memory/MemoryStore.js +78 -0
- package/dist/pricing/fleetDefaults.d.ts +46 -0
- package/dist/pricing/fleetDefaults.js +168 -0
- package/dist/pricing/fleetEvalFree.d.ts +7 -0
- package/dist/pricing/fleetEvalFree.js +24 -0
- package/dist/pricing/fleetFreeTierA.gen.d.ts +6 -0
- package/{src/pricing/fleetFreeTierA.gen.ts → dist/pricing/fleetFreeTierA.gen.js} +5 -6
- package/dist/pricing/fleetTierByAgentId.gen.d.ts +7 -0
- package/dist/pricing/fleetTierByAgentId.gen.js +768 -0
- package/dist/runtime/AgentMachine.d.ts +143 -0
- package/dist/runtime/AgentMachine.js +400 -0
- package/dist/runtime/PromptBuilder.d.ts +96 -0
- package/dist/runtime/PromptBuilder.js +439 -0
- package/dist/runtime/bootstrapCtx.d.ts +18 -0
- package/dist/runtime/bootstrapCtx.js +37 -0
- package/dist/runtime/buildOutcome.d.ts +68 -0
- package/dist/runtime/buildOutcome.js +464 -0
- package/dist/runtime/defaults.d.ts +54 -0
- package/dist/runtime/defaults.js +47 -0
- package/dist/runtime/deriveRespondsToProposals.d.ts +9 -0
- package/dist/runtime/deriveRespondsToProposals.js +38 -0
- package/dist/runtime/kickoff.d.ts +15 -0
- package/dist/runtime/kickoff.js +112 -0
- package/dist/runtime/runMechanical.d.ts +25 -0
- package/dist/runtime/runMechanical.js +74 -0
- package/dist/runtime/runTurn.d.ts +63 -0
- package/dist/runtime/runTurn.js +800 -0
- package/dist/runtime/validateWorkflow.d.ts +17 -0
- package/dist/runtime/validateWorkflow.js +209 -0
- package/dist/server/ConnectionPool.d.ts +68 -0
- package/dist/server/ConnectionPool.js +166 -0
- package/dist/server/EventQueue.d.ts +33 -0
- package/dist/server/EventQueue.js +98 -0
- package/dist/server/InboxCatchUp.d.ts +24 -0
- package/dist/server/InboxCatchUp.js +213 -0
- package/dist/server/OutboxBuffer.d.ts +33 -0
- package/dist/server/OutboxBuffer.js +68 -0
- package/dist/server/SeenMessages.d.ts +13 -0
- package/dist/server/SeenMessages.js +31 -0
- package/dist/server/StateTimers.d.ts +34 -0
- package/dist/server/StateTimers.js +70 -0
- package/dist/server/ZiggsEffectHandler.d.ts +79 -0
- package/dist/server/ZiggsEffectHandler.js +319 -0
- package/dist/server/agreements/AgreementService.d.ts +50 -0
- package/dist/server/agreements/AgreementService.js +85 -0
- package/dist/server/createHealthServer.d.ts +7 -0
- package/dist/server/createHealthServer.js +75 -0
- package/dist/server/proactive/ProactiveTrigger.d.ts +33 -0
- package/dist/server/proactive/ProactiveTrigger.js +71 -0
- package/dist/server/runLauncher.d.ts +28 -0
- package/dist/server/runLauncher.js +93 -0
- package/dist/server/tasks/TaskService.d.ts +25 -0
- package/dist/server/tasks/TaskService.js +103 -0
- package/dist/server/tasks/index.js +1 -0
- package/dist/server/telemetryIngest.d.ts +24 -0
- package/dist/server/telemetryIngest.js +62 -0
- package/dist/server/tools/index.d.ts +24 -0
- package/{src/server/tools/index.ts → dist/server/tools/index.js} +4 -24
- package/dist/server/tools/tier1/protocolRunner.d.ts +39 -0
- package/dist/server/tools/tier1/protocolRunner.js +288 -0
- package/dist/server/tools/tier1/protocolTools.d.ts +12 -0
- package/dist/server/tools/tier1/protocolTools.js +37 -0
- package/dist/server/tools/tier2/connectionTools.d.ts +4 -0
- package/dist/server/tools/tier2/connectionTools.js +63 -0
- package/dist/server/tools/tier2/contextTools.d.ts +4 -0
- package/dist/server/tools/tier2/contextTools.js +46 -0
- package/dist/server/tools/tier2/discoveryTools.d.ts +4 -0
- package/dist/server/tools/tier2/discoveryTools.js +25 -0
- package/dist/server/tools/tier2/marketplaceTools.d.ts +3 -0
- package/dist/server/tools/tier2/marketplaceTools.js +22 -0
- package/dist/server/tools/tier2/paymentTools.d.ts +12 -0
- package/dist/server/tools/tier2/paymentTools.js +165 -0
- package/dist/server/ziggsconnect/ZiggsConnectClient.d.ts +35 -0
- package/dist/server/ziggsconnect/ZiggsConnectClient.js +95 -0
- package/dist/server/ziggscontext/ZiggsContextClient.d.ts +48 -0
- package/dist/server/ziggscontext/ZiggsContextClient.js +90 -0
- package/dist/server/ziggspay/ZiggsPayClient.d.ts +82 -0
- package/dist/server/ziggspay/ZiggsPayClient.js +188 -0
- package/dist/shared/ids.d.ts +1 -0
- package/dist/shared/ids.js +3 -0
- package/dist/shared/runtimeLog.d.ts +18 -0
- package/dist/shared/runtimeLog.js +68 -0
- package/dist/shared/types.d.ts +22 -0
- package/dist/shared/types.js +23 -0
- package/dist/tasks/protocolRegistry.d.ts +16 -0
- package/dist/tasks/protocolRegistry.js +20 -0
- package/dist/tools/ToolManager.d.ts +12 -0
- package/dist/tools/ToolManager.js +74 -0
- package/dist/tools/ToolProvider.d.ts +6 -0
- package/dist/tools/ToolProvider.js +21 -0
- package/dist/tools/defineTool.d.ts +27 -0
- package/dist/tools/defineTool.js +62 -0
- package/{src/tools/index.ts → dist/tools/index.d.ts} +0 -1
- package/dist/tools/index.js +6 -0
- package/dist/tools/recordReport.d.ts +41 -0
- package/dist/tools/recordReport.js +30 -0
- package/dist/types.d.ts +466 -0
- package/dist/types.js +7 -0
- package/dist/utils/jsonExtractor.d.ts +2 -0
- package/dist/utils/jsonExtractor.js +111 -0
- package/package.json +17 -7
- package/src/AgentHost.ts +0 -545
- package/src/adapters/AnthropicAdapter.ts +0 -206
- package/src/adapters/McpAdapter.ts +0 -348
- package/src/adapters/OpenAIAdapter.ts +0 -187
- package/src/agent/Agent.ts +0 -104
- package/src/cognition/validateContext.ts +0 -95
- package/src/context/applyEffects.ts +0 -80
- package/src/context/batch.ts +0 -19
- package/src/context/classifyEnvelope.ts +0 -38
- package/src/context/routingLabels.ts +0 -46
- package/src/defineAgent.ts +0 -70
- package/src/formatters/AgreementFormatter.ts +0 -111
- package/src/formatters/HistoryFormatter.ts +0 -172
- package/src/ingress/normalizeIncoming.ts +0 -162
- package/src/memory/MemoryStore.ts +0 -104
- package/src/pricing/fleetDefaults.ts +0 -225
- package/src/pricing/fleetEvalFree.ts +0 -24
- package/src/pricing/fleetTierByAgentId.gen.ts +0 -775
- package/src/runtime/AgentMachine.ts +0 -402
- package/src/runtime/PromptBuilder.ts +0 -485
- package/src/runtime/buildOutcome.ts +0 -563
- package/src/runtime/defaults.ts +0 -75
- package/src/runtime/kickoff.ts +0 -117
- package/src/runtime/runTurn.ts +0 -813
- package/src/runtime/validateWorkflow.ts +0 -202
- package/src/server/ConnectionPool.ts +0 -206
- package/src/server/EventQueue.ts +0 -133
- package/src/server/InboxCatchUp.ts +0 -254
- package/src/server/OutboxBuffer.ts +0 -90
- package/src/server/SeenMessages.ts +0 -27
- package/src/server/StateTimers.ts +0 -85
- package/src/server/ZiggsEffectHandler.ts +0 -418
- package/src/server/agreements/AgreementService.ts +0 -118
- package/src/server/createHealthServer.ts +0 -85
- package/src/server/proactive/ProactiveTrigger.ts +0 -83
- package/src/server/runLauncher.ts +0 -146
- package/src/server/tasks/TaskService.ts +0 -110
- package/src/server/telemetryIngest.ts +0 -91
- package/src/server/tools/tier1/protocolRunner.ts +0 -144
- package/src/server/tools/tier1/protocolTools.ts +0 -99
- package/src/server/tools/tier2/connectionTools.ts +0 -75
- package/src/server/tools/tier2/contextTools.ts +0 -63
- package/src/server/tools/tier2/discoveryTools.ts +0 -34
- package/src/server/tools/tier2/marketplaceTools.ts +0 -27
- package/src/server/tools/tier2/paymentTools.ts +0 -170
- package/src/server/ziggsconnect/ZiggsConnectClient.ts +0 -126
- package/src/server/ziggscontext/ZiggsContextClient.ts +0 -129
- package/src/server/ziggspay/ZiggsPayClient.ts +0 -193
- package/src/shared/ids.ts +0 -3
- package/src/shared/runtimeLog.ts +0 -72
- package/src/shared/types.ts +0 -29
- package/src/tasks/protocolRegistry.ts +0 -25
- package/src/tools/ToolManager.ts +0 -95
- package/src/tools/ToolProvider.ts +0 -19
- package/src/tools/defineTool.ts +0 -90
- package/src/tools/recordReport.ts +0 -82
- package/src/types.ts +0 -456
- package/src/utils/jsonExtractor.ts +0 -100
- /package/{src/adapters/index.ts → dist/adapters/index.d.ts} +0 -0
- /package/{src/formatters/index.ts → dist/formatters/index.d.ts} +0 -0
- /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: `"."` → `
|
|
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`**
|
|
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;
|