@oni.bot/core 1.0.1 → 1.0.3

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 (214) hide show
  1. package/CHANGELOG.md +146 -126
  2. package/SECURITY.md +2 -2
  3. package/dist/agents/context.d.ts +0 -2
  4. package/dist/agents/context.d.ts.map +1 -1
  5. package/dist/agents/context.js +1 -3
  6. package/dist/agents/context.js.map +1 -1
  7. package/dist/agents/define-agent.d.ts.map +1 -1
  8. package/dist/agents/define-agent.js +99 -41
  9. package/dist/agents/define-agent.js.map +1 -1
  10. package/dist/agents/functional-agent.d.ts.map +1 -1
  11. package/dist/agents/functional-agent.js +0 -7
  12. package/dist/agents/functional-agent.js.map +1 -1
  13. package/dist/agents/types.d.ts +0 -2
  14. package/dist/agents/types.d.ts.map +1 -1
  15. package/dist/checkpoint.d.ts.map +1 -1
  16. package/dist/checkpoint.js +7 -2
  17. package/dist/checkpoint.js.map +1 -1
  18. package/dist/checkpointers/postgres.d.ts.map +1 -1
  19. package/dist/checkpointers/postgres.js +47 -31
  20. package/dist/checkpointers/postgres.js.map +1 -1
  21. package/dist/checkpointers/sqlite.js +4 -4
  22. package/dist/checkpointers/sqlite.js.map +1 -1
  23. package/dist/circuit-breaker.d.ts +1 -0
  24. package/dist/circuit-breaker.d.ts.map +1 -1
  25. package/dist/circuit-breaker.js +13 -0
  26. package/dist/circuit-breaker.js.map +1 -1
  27. package/dist/cli/dev.d.ts.map +1 -1
  28. package/dist/cli/dev.js +0 -1
  29. package/dist/cli/dev.js.map +1 -1
  30. package/dist/cli/router.js +1 -1
  31. package/dist/cli/run.d.ts.map +1 -1
  32. package/dist/cli/run.js +0 -1
  33. package/dist/cli/run.js.map +1 -1
  34. package/dist/config/loader.d.ts +1 -1
  35. package/dist/config/loader.d.ts.map +1 -1
  36. package/dist/config/loader.js +35 -5
  37. package/dist/config/loader.js.map +1 -1
  38. package/dist/context.d.ts +20 -0
  39. package/dist/context.d.ts.map +1 -1
  40. package/dist/context.js.map +1 -1
  41. package/dist/coordination/pubsub.d.ts +1 -0
  42. package/dist/coordination/pubsub.d.ts.map +1 -1
  43. package/dist/coordination/pubsub.js +31 -16
  44. package/dist/coordination/pubsub.js.map +1 -1
  45. package/dist/coordination/request-reply.d.ts +7 -0
  46. package/dist/coordination/request-reply.d.ts.map +1 -1
  47. package/dist/coordination/request-reply.js +65 -11
  48. package/dist/coordination/request-reply.js.map +1 -1
  49. package/dist/events/bus.d.ts +1 -0
  50. package/dist/events/bus.d.ts.map +1 -1
  51. package/dist/events/bus.js +16 -10
  52. package/dist/events/bus.js.map +1 -1
  53. package/dist/functional.d.ts.map +1 -1
  54. package/dist/functional.js +3 -0
  55. package/dist/functional.js.map +1 -1
  56. package/dist/graph.d.ts.map +1 -1
  57. package/dist/graph.js +21 -3
  58. package/dist/graph.js.map +1 -1
  59. package/dist/guardrails/audit.d.ts +4 -1
  60. package/dist/guardrails/audit.d.ts.map +1 -1
  61. package/dist/guardrails/audit.js +18 -1
  62. package/dist/guardrails/audit.js.map +1 -1
  63. package/dist/harness/agent-loop.d.ts.map +1 -1
  64. package/dist/harness/agent-loop.js +471 -352
  65. package/dist/harness/agent-loop.js.map +1 -1
  66. package/dist/harness/context-compactor.d.ts +1 -0
  67. package/dist/harness/context-compactor.d.ts.map +1 -1
  68. package/dist/harness/context-compactor.js +43 -1
  69. package/dist/harness/context-compactor.js.map +1 -1
  70. package/dist/harness/harness.d.ts +6 -0
  71. package/dist/harness/harness.d.ts.map +1 -1
  72. package/dist/harness/harness.js +32 -5
  73. package/dist/harness/harness.js.map +1 -1
  74. package/dist/harness/hooks-engine.d.ts.map +1 -1
  75. package/dist/harness/hooks-engine.js +12 -10
  76. package/dist/harness/hooks-engine.js.map +1 -1
  77. package/dist/harness/index.d.ts +3 -1
  78. package/dist/harness/index.d.ts.map +1 -1
  79. package/dist/harness/index.js +2 -0
  80. package/dist/harness/index.js.map +1 -1
  81. package/dist/harness/memory-loader.d.ts +150 -0
  82. package/dist/harness/memory-loader.d.ts.map +1 -0
  83. package/dist/harness/memory-loader.js +714 -0
  84. package/dist/harness/memory-loader.js.map +1 -0
  85. package/dist/harness/safety-gate.d.ts.map +1 -1
  86. package/dist/harness/safety-gate.js +47 -26
  87. package/dist/harness/safety-gate.js.map +1 -1
  88. package/dist/harness/skill-loader.d.ts +7 -0
  89. package/dist/harness/skill-loader.d.ts.map +1 -1
  90. package/dist/harness/skill-loader.js +24 -8
  91. package/dist/harness/skill-loader.js.map +1 -1
  92. package/dist/harness/todo-module.d.ts.map +1 -1
  93. package/dist/harness/todo-module.js +13 -6
  94. package/dist/harness/todo-module.js.map +1 -1
  95. package/dist/harness/types.d.ts +7 -0
  96. package/dist/harness/types.d.ts.map +1 -1
  97. package/dist/harness/types.js.map +1 -1
  98. package/dist/harness/validate-args.js +18 -3
  99. package/dist/harness/validate-args.js.map +1 -1
  100. package/dist/hitl/interrupt.d.ts +2 -2
  101. package/dist/hitl/interrupt.d.ts.map +1 -1
  102. package/dist/hitl/interrupt.js +6 -4
  103. package/dist/hitl/interrupt.js.map +1 -1
  104. package/dist/hitl/resume.d.ts +10 -0
  105. package/dist/hitl/resume.d.ts.map +1 -1
  106. package/dist/hitl/resume.js +31 -0
  107. package/dist/hitl/resume.js.map +1 -1
  108. package/dist/index.js +1 -1
  109. package/dist/injected.d.ts.map +1 -1
  110. package/dist/injected.js.map +1 -1
  111. package/dist/inspect.d.ts.map +1 -1
  112. package/dist/inspect.js +28 -8
  113. package/dist/inspect.js.map +1 -1
  114. package/dist/lsp/client.d.ts +2 -0
  115. package/dist/lsp/client.d.ts.map +1 -1
  116. package/dist/lsp/client.js +62 -17
  117. package/dist/lsp/client.js.map +1 -1
  118. package/dist/lsp/index.d.ts.map +1 -1
  119. package/dist/lsp/index.js.map +1 -1
  120. package/dist/mcp/client.d.ts +2 -0
  121. package/dist/mcp/client.d.ts.map +1 -1
  122. package/dist/mcp/client.js +45 -14
  123. package/dist/mcp/client.js.map +1 -1
  124. package/dist/mcp/convert.js +1 -1
  125. package/dist/mcp/convert.js.map +1 -1
  126. package/dist/mcp/transport.d.ts +2 -0
  127. package/dist/mcp/transport.d.ts.map +1 -1
  128. package/dist/mcp/transport.js +33 -8
  129. package/dist/mcp/transport.js.map +1 -1
  130. package/dist/messages/index.d.ts.map +1 -1
  131. package/dist/messages/index.js +7 -1
  132. package/dist/messages/index.js.map +1 -1
  133. package/dist/models/anthropic.d.ts.map +1 -1
  134. package/dist/models/anthropic.js +25 -15
  135. package/dist/models/anthropic.js.map +1 -1
  136. package/dist/models/google.d.ts.map +1 -1
  137. package/dist/models/google.js +23 -7
  138. package/dist/models/google.js.map +1 -1
  139. package/dist/models/ollama.d.ts.map +1 -1
  140. package/dist/models/ollama.js +11 -1
  141. package/dist/models/ollama.js.map +1 -1
  142. package/dist/models/openai.d.ts.map +1 -1
  143. package/dist/models/openai.js +15 -3
  144. package/dist/models/openai.js.map +1 -1
  145. package/dist/models/openrouter.d.ts.map +1 -1
  146. package/dist/models/openrouter.js +14 -3
  147. package/dist/models/openrouter.js.map +1 -1
  148. package/dist/prebuilt/react-agent.d.ts.map +1 -1
  149. package/dist/prebuilt/react-agent.js +1 -0
  150. package/dist/prebuilt/react-agent.js.map +1 -1
  151. package/dist/pregel.d.ts +11 -6
  152. package/dist/pregel.d.ts.map +1 -1
  153. package/dist/pregel.js +473 -349
  154. package/dist/pregel.js.map +1 -1
  155. package/dist/retry.d.ts.map +1 -1
  156. package/dist/retry.js +7 -6
  157. package/dist/retry.js.map +1 -1
  158. package/dist/store/index.d.ts +1 -1
  159. package/dist/store/index.d.ts.map +1 -1
  160. package/dist/store/index.js +63 -13
  161. package/dist/store/index.js.map +1 -1
  162. package/dist/stream-events.d.ts.map +1 -1
  163. package/dist/stream-events.js +3 -9
  164. package/dist/stream-events.js.map +1 -1
  165. package/dist/streaming.d.ts +5 -2
  166. package/dist/streaming.d.ts.map +1 -1
  167. package/dist/streaming.js +9 -8
  168. package/dist/streaming.js.map +1 -1
  169. package/dist/swarm/graph.d.ts +16 -2
  170. package/dist/swarm/graph.d.ts.map +1 -1
  171. package/dist/swarm/graph.js +204 -53
  172. package/dist/swarm/graph.js.map +1 -1
  173. package/dist/swarm/index.d.ts +2 -1
  174. package/dist/swarm/index.d.ts.map +1 -1
  175. package/dist/swarm/index.js.map +1 -1
  176. package/dist/swarm/mailbox.d.ts.map +1 -1
  177. package/dist/swarm/mailbox.js +3 -1
  178. package/dist/swarm/mailbox.js.map +1 -1
  179. package/dist/swarm/mermaid.d.ts +2 -1
  180. package/dist/swarm/mermaid.d.ts.map +1 -1
  181. package/dist/swarm/mermaid.js +6 -3
  182. package/dist/swarm/mermaid.js.map +1 -1
  183. package/dist/swarm/pool.d.ts.map +1 -1
  184. package/dist/swarm/pool.js +30 -5
  185. package/dist/swarm/pool.js.map +1 -1
  186. package/dist/swarm/registry.d.ts.map +1 -1
  187. package/dist/swarm/registry.js +7 -0
  188. package/dist/swarm/registry.js.map +1 -1
  189. package/dist/swarm/scaling.d.ts +10 -1
  190. package/dist/swarm/scaling.d.ts.map +1 -1
  191. package/dist/swarm/scaling.js +85 -14
  192. package/dist/swarm/scaling.js.map +1 -1
  193. package/dist/swarm/snapshot.d.ts.map +1 -1
  194. package/dist/swarm/snapshot.js +10 -1
  195. package/dist/swarm/snapshot.js.map +1 -1
  196. package/dist/swarm/supervisor.js +20 -12
  197. package/dist/swarm/supervisor.js.map +1 -1
  198. package/dist/swarm/tracer.d.ts +3 -1
  199. package/dist/swarm/tracer.d.ts.map +1 -1
  200. package/dist/swarm/tracer.js +66 -15
  201. package/dist/swarm/tracer.js.map +1 -1
  202. package/dist/swarm/types.d.ts +1 -6
  203. package/dist/swarm/types.d.ts.map +1 -1
  204. package/dist/testing/index.d.ts +2 -2
  205. package/dist/testing/index.d.ts.map +1 -1
  206. package/dist/testing/index.js.map +1 -1
  207. package/dist/tools/define.d.ts.map +1 -1
  208. package/dist/tools/define.js +1 -0
  209. package/dist/tools/define.js.map +1 -1
  210. package/dist/tools/types.d.ts +2 -0
  211. package/dist/tools/types.d.ts.map +1 -1
  212. package/dist/types.d.ts +3 -1
  213. package/dist/types.d.ts.map +1 -1
  214. package/package.json +7 -1
package/CHANGELOG.md CHANGED
@@ -1,126 +1,146 @@
1
- # Changelog
2
-
3
- All notable changes to @oni.bot/core are documented here.
4
-
5
- Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
- This project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
-
8
- ## [1.0.0] — 2026-03-13
9
-
10
- ### Breaking Changes
11
- - `oni-code` AI coding assistant extracted to `@oni.bot/code` (separate package)
12
- - `sentinel` code analysis engine extracted to `@oni.bot/sentinel` (separate package)
13
- - `oni` and `oni-code` CLI binaries removed from this package (install `@oni.bot/code` for the CLI)
14
-
15
- ### Added
16
- - `./config` sub-module export (`@oni.bot/core/config`) JSONC config loader with env var substitution and hierarchical merge
17
- - `"sideEffects": false` enables full tree shaking in bundlers
18
-
19
- ### Framework
20
- - 5 model adapters (anthropic, openai, openrouter, google, ollama) zero runtime dependencies
21
- - 21 total exports: root + 20 named subpaths
22
-
23
- ## [0.7.0] - 2026-03-08
24
-
25
- ### Added
26
- - Structured error codes with `ONI_<CATEGORY>_<NAME>` taxonomy every error carries code, category, recoverable flag, suggestion, and context
27
- - Per-node timeouts via `addNode(name, fn, { timeout: ms })` with `NodeTimeoutError`
28
- - Global default timeout via `compile({ defaults: { nodeTimeout: ms } })`
29
- - Circuit breaker pattern: `addNode(name, fn, { circuitBreaker: { threshold, resetAfter, fallback? } })`
30
- - Dead letter queue: `compile({ deadLetterQueue: true })` captures failed node inputs for recovery
31
- - OpenTelemetry tracing adapter (`ONITracer`) zero-dep, user brings own tracer
32
- - Backpressure streaming with `BoundedBuffer` (drop-oldest and error strategies)
33
- - Testing utilities: `mockModel()`, `assertGraph()`, `createTestHarness()` via `@oni.bot/core/testing`
34
- - `oni init` CLI command for project scaffolding
35
- - 7 new error types: `NodeTimeoutError`, `CircuitBreakerOpenError`, `SwarmDeadlockError`, `ModelRateLimitError`, `ModelContextLengthError`, `CheckpointCorruptError`, `StoreKeyNotFoundError`
36
-
37
- ### Changed
38
- - `ONIError` now accepts optional `ONIErrorOptions` as second constructor parameter
39
- - All existing error classes enhanced with structured codes (backward compatible)
40
-
41
- ## [0.6.3] - 2026-03-05
42
-
43
- ### Added
44
- - `set()` alias for `put()` on `InMemoryStore` and `NamespacedStore`
45
-
46
- ## [0.6.2] - 2026-03-05
47
-
48
- ### Fixed
49
- - `createReactAgent` now accepts `ONIModel` (auto-adapts chat to invoke)
50
-
51
- ### Changed
52
- - Package renamed from `@oni-bot/core` to `@oni.bot/core`
53
-
54
- ## [0.6.1] - 2026-03-05
55
-
56
- ### Changed
57
- - Removed all external framework references from codebase and documentation
58
-
59
- ### Fixed
60
- - Resolved TypeScript strict errors in swarm template `Send` casts
61
-
62
- ## [0.6.0] - 2026-03-04
63
-
64
- ### Added
65
- - `SwarmGraph` builder for multi-agent orchestration
66
- - `SwarmGraph.hierarchical()` template — supervisor-workers pattern
67
- - `SwarmGraph.fanOut()` template — parallel agent execution with reducer
68
- - `SwarmGraph.pipeline()` template — linear chain with conditional transitions
69
- - `SwarmGraph.peerNetwork()` template decentralized agent handoffs
70
- - `SwarmGraph.mapReduce()` template — parallel map with reducer
71
- - `SwarmGraph.debate()` template — multi-round parallel debate with judge
72
- - `SwarmGraph.hierarchicalMesh()` template nested team coordination
73
- - Lazy coordination auto-wiring (broker and pubsub) on `SwarmGraph`
74
- - Handoff execution — agent `Handoff` returns converted to `Command` routing
75
- - Retry-then-fallback — agents retry on failure, fall back to supervisor
76
-
77
- ### Changed
78
- - Replaced `SwarmLLM` with `ONIModel` in supervisor routing
79
-
80
- ## [0.5.0] - 2026-03-04
81
-
82
- ### Added
83
- - `ONIModel` interface and core LLM types
84
- - Anthropic LLM adapter
85
- - OpenAI LLM adapter
86
- - Ollama LLM adapter
87
- - Google Gemini LLM adapter
88
- - Models export path and re-exports
89
- - Tool framework with `defineTool()` and `ToolContext`
90
- - `AgentContext` and agent types
91
- - `defineAgent()` declarative agent factory
92
- - `agent()` functional agent factory
93
- - `addAgent()` on `StateGraph` to wire agent nodes
94
- - Request/response and pub/sub coordination patterns
95
- - Tool permission guardrails
96
- - Budget tracking and cost control guardrails
97
- - Content filtering guardrails
98
- - Audit trail and guardrails exports
99
- - `EventBus` for structured lifecycle events
100
- - Guardrails and event bus wired into compile/execution pipeline
101
- - Integration tests for agents, tools, and guardrails
102
-
103
- ### Removed
104
- - Direct `openai` dependency (adapters are now bring-your-own-client)
105
-
106
- ## [0.4.0] - 2026-03-04
107
-
108
- ### Added
109
- - `StateGraph` builder with `addNode()`, `addEdge()`, `addConditionalEdges()`
110
- - Pregel execution engine (`ONIPregelRunner`) with parallel superstep execution
111
- - `Command` and `Send` primitives for dynamic routing
112
- - Subgraph support via `addSubgraph()`
113
- - Functional API (`entrypoint`, `task`)
114
- - `MemoryCheckpointer` and `NoopCheckpointer`
115
- - `InMemoryStore` and `NamespacedStore` for shared key-value state
116
- - Human-in-the-loop via `interrupt()` and `getUserInput()`
117
- - Token streaming with `emitToken()` and `TokenStreamWriter`
118
- - Stream modes: `values`, `updates`, `events`, `messages`, `custom`
119
- - Graph inspection via `getGraphDef()`
120
- - `createReactAgent` prebuilt for tool-calling loops
121
- - `ToolNode` prebuilt for automatic tool dispatch
122
- - Messages reducer (`messagesReducer`, `addMessages`, `removeMessages`)
123
- - Retry policies with configurable backoff
124
- - Swarm primitives: `AgentRegistry`, `AgentPool`, `Mailbox`, `Supervisor`
125
- - Ephemeral channel support
126
- - Map-reduce parallel fan-out pattern
1
+ # Changelog
2
+
3
+ All notable changes to @oni.bot/core are documented here.
4
+
5
+ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
+ This project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.2] — 2026-03-13
9
+
10
+ ### Fixed
11
+ - **Budget guardrails:** `BudgetTracker.record()` is now called from `defineAgent` after each `model.chat()` via a RunContext callback; throws `BudgetExceededError` when `maxTokensPerRun`/`maxTokensPerAgent`/`maxCostPerRun` is exceeded.
12
+ - **defineAgent ToolContext:** `store` and stream `emit` now read from the live RunContext instead of being hard-coded to `null`/noop, so tools receive the real store and can emit custom stream events.
13
+ - **parallelSafe enforcement:** `parallelSafe: false` is now preserved through `ToolDefinition` and respected by `defineAgent` when any tool in a batch has `parallelSafe: false` all calls in that step execute sequentially.
14
+ - **pathMap compile-time validation:** `StateGraph.compile()` now validates conditional edge `pathMap` targets at compile time, throwing `NodeNotFoundError` instead of failing silently at runtime.
15
+ - **spawnAgent in unsupervised swarms:** `spawnAgent()` now throws a clear error when called on a swarm without a supervisor, rather than silently adding an agent that never executes.
16
+ - **removeAgent edge cleanup:** `removeAgent()` now removes stale static edges pointing to the removed node from `_edgesBySource`, preventing `NodeNotFoundError` when Pregel tries to route to a removed agent.
17
+ - **Lifecycle events from defineAgent:** `llm.request`, `llm.response`, `tool.call`, and `tool.result` events are now emitted and audit entries written for every model call and tool execution inside `defineAgent`.
18
+ - **toolPermissions enforcement:** `checkToolPermission()` is called before each tool execution in `defineAgent`, outside the tool's try/catch, so `ToolPermissionError` propagates as a real graph failure.
19
+
20
+ ## [1.0.1]2026-03-13
21
+
22
+ ### Fixed
23
+ - **Token streaming (parallel nodes):** Replaced module-level `_tokenHandler` global with `AsyncLocalStorage` — each node in a parallel fan-out now gets its own token handler, preventing tokens from being silently dropped or misrouted to the wrong node.
24
+ - **HITL resume:** `resume()` now looks up the session by `resumeId` (not just the first pending interrupt) and calls `markResumed()` so sessions transition from `"pending"` to `"resumed"` after being handled.
25
+ - **Subgraph checkpointer restore:** The child runner's original `checkpointer` is saved before being overwritten with a `NamespacedCheckpointer` and restored after the subgraph completes, preventing the child's checkpointer from leaking across invocations.
26
+ - **Circuit breaker fallback:** The user-supplied `fallback(state, error)` is now called with the real node state and the `CircuitBreakerOpenError` instance rather than `(undefined, undefined)`.
27
+
28
+ ## [1.0.0] 2026-03-13
29
+
30
+ ### Breaking Changes
31
+ - `oni-code` AI coding assistant extracted to `@oni.bot/code` (separate package)
32
+ - `sentinel` code analysis engine extracted to `@oni.bot/sentinel` (separate package)
33
+ - `oni` and `oni-code` CLI binaries removed from this package (install `@oni.bot/code` for the CLI)
34
+
35
+ ### Added
36
+ - `./config` sub-module export (`@oni.bot/core/config`) — JSONC config loader with env var substitution and hierarchical merge
37
+ - `"sideEffects": false` — enables full tree shaking in bundlers
38
+
39
+ ### Framework
40
+ - 5 model adapters (anthropic, openai, openrouter, google, ollama) — zero runtime dependencies
41
+ - 21 total exports: root + 20 named subpaths
42
+
43
+ ## [0.7.0] - 2026-03-08
44
+
45
+ ### Added
46
+ - Structured error codes with `ONI_<CATEGORY>_<NAME>` taxonomy — every error carries code, category, recoverable flag, suggestion, and context
47
+ - Per-node timeouts via `addNode(name, fn, { timeout: ms })` with `NodeTimeoutError`
48
+ - Global default timeout via `compile({ defaults: { nodeTimeout: ms } })`
49
+ - Circuit breaker pattern: `addNode(name, fn, { circuitBreaker: { threshold, resetAfter, fallback? } })`
50
+ - Dead letter queue: `compile({ deadLetterQueue: true })` captures failed node inputs for recovery
51
+ - OpenTelemetry tracing adapter (`ONITracer`) — zero-dep, user brings own tracer
52
+ - Backpressure streaming with `BoundedBuffer` (drop-oldest and error strategies)
53
+ - Testing utilities: `mockModel()`, `assertGraph()`, `createTestHarness()` via `@oni.bot/core/testing`
54
+ - `oni init` CLI command for project scaffolding
55
+ - 7 new error types: `NodeTimeoutError`, `CircuitBreakerOpenError`, `SwarmDeadlockError`, `ModelRateLimitError`, `ModelContextLengthError`, `CheckpointCorruptError`, `StoreKeyNotFoundError`
56
+
57
+ ### Changed
58
+ - `ONIError` now accepts optional `ONIErrorOptions` as second constructor parameter
59
+ - All existing error classes enhanced with structured codes (backward compatible)
60
+
61
+ ## [0.6.3] - 2026-03-05
62
+
63
+ ### Added
64
+ - `set()` alias for `put()` on `InMemoryStore` and `NamespacedStore`
65
+
66
+ ## [0.6.2] - 2026-03-05
67
+
68
+ ### Fixed
69
+ - `createReactAgent` now accepts `ONIModel` (auto-adapts chat to invoke)
70
+
71
+ ### Changed
72
+ - Package renamed from `@oni-bot/core` to `@oni.bot/core`
73
+
74
+ ## [0.6.1] - 2026-03-05
75
+
76
+ ### Changed
77
+ - Removed all external framework references from codebase and documentation
78
+
79
+ ### Fixed
80
+ - Resolved TypeScript strict errors in swarm template `Send` casts
81
+
82
+ ## [0.6.0] - 2026-03-04
83
+
84
+ ### Added
85
+ - `SwarmGraph` builder for multi-agent orchestration
86
+ - `SwarmGraph.hierarchical()` template — supervisor-workers pattern
87
+ - `SwarmGraph.fanOut()` template parallel agent execution with reducer
88
+ - `SwarmGraph.pipeline()` template linear chain with conditional transitions
89
+ - `SwarmGraph.peerNetwork()` template — decentralized agent handoffs
90
+ - `SwarmGraph.mapReduce()` template parallel map with reducer
91
+ - `SwarmGraph.debate()` template multi-round parallel debate with judge
92
+ - `SwarmGraph.hierarchicalMesh()` template nested team coordination
93
+ - Lazy coordination auto-wiring (broker and pubsub) on `SwarmGraph`
94
+ - Handoff execution agent `Handoff` returns converted to `Command` routing
95
+ - Retry-then-fallback agents retry on failure, fall back to supervisor
96
+
97
+ ### Changed
98
+ - Replaced `SwarmLLM` with `ONIModel` in supervisor routing
99
+
100
+ ## [0.5.0] - 2026-03-04
101
+
102
+ ### Added
103
+ - `ONIModel` interface and core LLM types
104
+ - Anthropic LLM adapter
105
+ - OpenAI LLM adapter
106
+ - Ollama LLM adapter
107
+ - Google Gemini LLM adapter
108
+ - Models export path and re-exports
109
+ - Tool framework with `defineTool()` and `ToolContext`
110
+ - `AgentContext` and agent types
111
+ - `defineAgent()` declarative agent factory
112
+ - `agent()` functional agent factory
113
+ - `addAgent()` on `StateGraph` to wire agent nodes
114
+ - Request/response and pub/sub coordination patterns
115
+ - Tool permission guardrails
116
+ - Budget tracking and cost control guardrails
117
+ - Content filtering guardrails
118
+ - Audit trail and guardrails exports
119
+ - `EventBus` for structured lifecycle events
120
+ - Guardrails and event bus wired into compile/execution pipeline
121
+ - Integration tests for agents, tools, and guardrails
122
+
123
+ ### Removed
124
+ - Direct `openai` dependency (adapters are now bring-your-own-client)
125
+
126
+ ## [0.4.0] - 2026-03-04
127
+
128
+ ### Added
129
+ - `StateGraph` builder with `addNode()`, `addEdge()`, `addConditionalEdges()`
130
+ - Pregel execution engine (`ONIPregelRunner`) with parallel superstep execution
131
+ - `Command` and `Send` primitives for dynamic routing
132
+ - Subgraph support via `addSubgraph()`
133
+ - Functional API (`entrypoint`, `task`)
134
+ - `MemoryCheckpointer` and `NoopCheckpointer`
135
+ - `InMemoryStore` and `NamespacedStore` for shared key-value state
136
+ - Human-in-the-loop via `interrupt()` and `getUserInput()`
137
+ - Token streaming with `emitToken()` and `TokenStreamWriter`
138
+ - Stream modes: `values`, `updates`, `events`, `messages`, `custom`
139
+ - Graph inspection via `getGraphDef()`
140
+ - `createReactAgent` prebuilt for tool-calling loops
141
+ - `ToolNode` prebuilt for automatic tool dispatch
142
+ - Messages reducer (`messagesReducer`, `addMessages`, `removeMessages`)
143
+ - Retry policies with configurable backoff
144
+ - Swarm primitives: `AgentRegistry`, `AgentPool`, `Mailbox`, `Supervisor`
145
+ - Ephemeral channel support
146
+ - Map-reduce parallel fan-out pattern
package/SECURITY.md CHANGED
@@ -4,8 +4,8 @@
4
4
 
5
5
  | Version | Supported |
6
6
  | ------- | ------------------ |
7
- | 0.7.x | :white_check_mark: |
8
- | < 0.7 | :x: |
7
+ | 1.x | :white_check_mark: |
8
+ | < 1.0 | :x: |
9
9
 
10
10
  ## Reporting a Vulnerability
11
11
 
@@ -16,9 +16,7 @@ export interface BuildAgentContextOptions<S = Record<string, unknown>> {
16
16
  remainingSteps: number;
17
17
  onSend: (agent: string, payload: unknown) => void;
18
18
  getInbox: () => SwarmMessageView[];
19
- onRequest: (agent: string, payload: unknown) => Promise<unknown>;
20
19
  onReply: (msg: SwarmMessageView, payload: unknown) => void;
21
- onPublish: (topic: string, data: unknown) => void;
22
20
  }
23
21
  export declare function buildAgentContext<S = Record<string, unknown>>(opts: BuildAgentContextOptions<S>): AgentContext<S>;
24
22
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/agents/context.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,QAAQ,EAMT,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMjE,MAAM,WAAW,wBAAwB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACnE,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,CAAC,CAAC;IACT,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;IAGvB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,QAAQ,EAAE,MAAM,gBAAgB,EAAE,CAAC;IACnC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,OAAO,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3D,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD;AAMD,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAChC,YAAY,CAAC,CAAC,CAAC,CAkHjB"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/agents/context.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,QAAQ,EAMT,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMjE,MAAM,WAAW,wBAAwB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACnE,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,CAAC,CAAC;IACT,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;IAGvB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,QAAQ,EAAE,MAAM,gBAAgB,EAAE,CAAC;IACnC,OAAO,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5D;AAMD,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAChC,YAAY,CAAC,CAAC,CAAC,CA8GjB"}
@@ -8,7 +8,7 @@
8
8
  // buildAgentContext — assemble a full AgentContext
9
9
  // ----------------------------------------------------------------
10
10
  export function buildAgentContext(opts) {
11
- const { model, tools = [], agentName, systemPrompt, config, store, state, streamWriter, remainingSteps, onSend, getInbox, onRequest, onReply, onPublish, } = opts;
11
+ const { model, tools = [], agentName, systemPrompt, config, store, state, streamWriter, remainingSteps, onSend, getInbox, onReply, } = opts;
12
12
  // Convert ToolDefinition[] to LLMToolDef[] for model.chat/stream
13
13
  const llmTools = tools.map((t) => ({
14
14
  name: t.name,
@@ -78,9 +78,7 @@ export function buildAgentContext(opts) {
78
78
  // ---- Coordination ----
79
79
  send: onSend,
80
80
  inbox: getInbox,
81
- request: onRequest,
82
81
  reply: onReply,
83
- publish: onPublish,
84
82
  // ---- Runtime context ----
85
83
  config,
86
84
  store,
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/agents/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/agents/context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"define-agent.d.ts","sourceRoot":"","sources":["../../src/agents/define-agent.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEhE;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrF,IAAI,EAAE,kBAAkB,GACvB,SAAS,CAAC,CAAC,CAAC,CAuHd"}
1
+ {"version":3,"file":"define-agent.d.ts","sourceRoot":"","sources":["../../src/agents/define-agent.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIhE;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrF,IAAI,EAAE,kBAAkB,GACvB,SAAS,CAAC,CAAC,CAAC,CAuLd"}
@@ -4,14 +4,17 @@
4
4
  // Creates an AgentNode that runs a ReAct loop automatically:
5
5
  // 1. Seed messages from state.messages
6
6
  // 2. Loop up to maxSteps:
7
- // a. Call model.chat with messages + systemPrompt + tools
8
- // b. Track token usage, break if maxTokens exceeded
9
- // c. Push assistant message
7
+ // a. Emit llm.request event, call model.chat
8
+ // b. Emit llm.response + audit, record budget usage
9
+ // c. Track token usage; push assistant message
10
10
  // d. If no toolCalls -> break (done)
11
- // e. Execute tools with manual ToolContext
11
+ // e. Execute tools (sequentially if any is parallelSafe: false)
12
+ // - emit tool.call / tool.result events and audit entries
12
13
  // f. Push tool result messages
13
14
  // 3. Return { messages }
14
15
  // ============================================================
16
+ import { _getRunContext } from "../context.js";
17
+ import { checkToolPermission } from "../guardrails/permissions.js";
15
18
  /**
16
19
  * defineAgent — create a declarative ReAct agent
17
20
  *
@@ -28,23 +31,93 @@ export function defineAgent(opts) {
28
31
  parameters: t.schema,
29
32
  }));
30
33
  const _nodeFn = async (state, config) => {
34
+ const runCtx = _getRunContext();
31
35
  // 1. Seed messages from state
32
36
  const existingMessages = (Array.isArray(state.messages)
33
37
  ? state.messages
34
38
  : []);
35
39
  const messages = [...existingMessages];
36
40
  let totalTokens = 0;
41
+ const toolMap = new Map(tools.map((t) => [t.name, t]));
42
+ // Helper: execute a single tool call with events + audit + permission check
43
+ const executeOneCall = async (call) => {
44
+ const tool = toolMap.get(call.name);
45
+ if (!tool) {
46
+ return { toolCallId: call.id, name: call.name, result: `Tool "${call.name}" not found`, isError: true };
47
+ }
48
+ // Permission check — outside try/catch so ToolPermissionError propagates as a real failure
49
+ if (runCtx?.toolPermissions) {
50
+ checkToolPermission(runCtx.toolPermissions, name, call.name);
51
+ }
52
+ runCtx?._emitEvent?.({
53
+ type: "tool.call",
54
+ agent: name,
55
+ tool: call.name,
56
+ timestamp: Date.now(),
57
+ input: call.args,
58
+ });
59
+ const toolStart = Date.now();
60
+ try {
61
+ const toolCtx = {
62
+ config: config ?? {},
63
+ store: runCtx?.store ?? null,
64
+ state: state,
65
+ emit: (event, data) => runCtx?.writer?.emit(event, data),
66
+ };
67
+ const result = await tool.execute(call.args, toolCtx);
68
+ const duration = Date.now() - toolStart;
69
+ runCtx?._emitEvent?.({ type: "tool.result", agent: name, tool: call.name, timestamp: Date.now(), duration, status: "success", output: result });
70
+ runCtx?._auditRecord?.({ timestamp: Date.now(), agent: name, action: "tool.result", data: { tool: call.name, status: "success" } });
71
+ return { toolCallId: call.id, name: call.name, result };
72
+ }
73
+ catch (err) {
74
+ const duration = Date.now() - toolStart;
75
+ runCtx?._emitEvent?.({ type: "tool.result", agent: name, tool: call.name, timestamp: Date.now(), duration, status: "error", error: String(err) });
76
+ runCtx?._auditRecord?.({ timestamp: Date.now(), agent: name, action: "tool.result", data: { tool: call.name, status: "error", error: String(err) } });
77
+ return { toolCallId: call.id, name: call.name, result: String(err), isError: true };
78
+ }
79
+ };
37
80
  // 2. ReAct loop
38
81
  for (let step = 0; step < maxSteps; step++) {
39
- // a. Call model.chat
82
+ // a. Emit llm.request then call model.chat
83
+ runCtx?._emitEvent?.({
84
+ type: "llm.request",
85
+ agent: name,
86
+ model: model.modelId,
87
+ timestamp: Date.now(),
88
+ messageCount: messages.length,
89
+ hasTools: llmTools.length > 0,
90
+ });
91
+ const llmStart = Date.now();
40
92
  const response = await model.chat({
41
93
  messages,
42
94
  tools: llmTools.length > 0 ? llmTools : undefined,
43
95
  systemPrompt,
96
+ signal: config?.signal,
97
+ });
98
+ const llmDuration = Date.now() - llmStart;
99
+ // b. Emit llm.response + audit + budget
100
+ runCtx?._emitEvent?.({
101
+ type: "llm.response",
102
+ agent: name,
103
+ model: model.modelId,
104
+ timestamp: Date.now(),
105
+ duration: llmDuration,
106
+ usage: response.usage,
107
+ stopReason: response.stopReason,
108
+ hasToolCalls: (response.toolCalls?.length ?? 0) > 0,
44
109
  });
45
- // b. Track token usage
110
+ runCtx?._auditRecord?.({
111
+ timestamp: Date.now(),
112
+ agent: name,
113
+ action: "llm.response",
114
+ data: { model: model.modelId, inputTokens: response.usage.inputTokens, outputTokens: response.usage.outputTokens },
115
+ });
116
+ // Record usage — throws BudgetExceededError if over budget
117
+ runCtx?._recordUsage?.(name, model.modelId, response.usage);
118
+ // c. Track token usage
46
119
  totalTokens += response.usage.inputTokens + response.usage.outputTokens;
47
- // c. Push assistant message
120
+ // d. Push assistant message
48
121
  const assistantMsg = {
49
122
  role: "assistant",
50
123
  content: response.content,
@@ -52,47 +125,32 @@ export function defineAgent(opts) {
52
125
  if (response.toolCalls && response.toolCalls.length > 0) {
53
126
  assistantMsg.toolCalls = response.toolCalls;
54
127
  }
55
- messages.push(assistantMsg);
56
- // Check maxTokens budget
128
+ // Check maxTokens budget before pushing — if over budget with pending tool calls,
129
+ // push the assistant message with toolCalls stripped. An assistant+toolCalls message
130
+ // with no following tool results is rejected by Anthropic and OpenAI APIs, but the
131
+ // text content is still valid and worth preserving for conversation history continuity.
57
132
  if (maxTokens !== undefined && totalTokens >= maxTokens) {
133
+ messages.push({ role: "assistant", content: assistantMsg.content });
58
134
  break;
59
135
  }
60
- // d. If no tool calls -> done
136
+ messages.push(assistantMsg);
137
+ // e. If no tool calls -> done
61
138
  if (!response.toolCalls || response.toolCalls.length === 0) {
62
139
  break;
63
140
  }
64
- // e. Execute tools with manual ToolContext
65
- const toolMap = new Map(tools.map((t) => [t.name, t]));
66
- const toolResults = await Promise.all(response.toolCalls.map(async (call) => {
67
- const tool = toolMap.get(call.name);
68
- if (!tool) {
69
- return {
70
- toolCallId: call.id,
71
- name: call.name,
72
- result: `Tool "${call.name}" not found`,
73
- isError: true,
74
- };
75
- }
76
- try {
77
- const toolCtx = {
78
- config: config ?? {},
79
- store: null,
80
- state: state,
81
- emit: () => { },
82
- };
83
- const result = await tool.execute(call.args, toolCtx);
84
- return { toolCallId: call.id, name: call.name, result };
141
+ // f. Execute tools sequentially if any has parallelSafe: false, otherwise in parallel
142
+ const hasSafetyConstraint = response.toolCalls.some((call) => toolMap.get(call.name)?.parallelSafe === false);
143
+ let toolResults;
144
+ if (hasSafetyConstraint) {
145
+ toolResults = [];
146
+ for (const call of response.toolCalls) {
147
+ toolResults.push(await executeOneCall(call));
85
148
  }
86
- catch (err) {
87
- return {
88
- toolCallId: call.id,
89
- name: call.name,
90
- result: String(err),
91
- isError: true,
92
- };
93
- }
94
- }));
95
- // f. Push tool result messages
149
+ }
150
+ else {
151
+ toolResults = await Promise.all(response.toolCalls.map((call) => executeOneCall(call)));
152
+ }
153
+ // g. Push tool result messages
96
154
  for (const tr of toolResults) {
97
155
  messages.push({
98
156
  role: "tool",
@@ -1 +1 @@
1
- {"version":3,"file":"define-agent.js","sourceRoot":"","sources":["../../src/agents/define-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define-agent.js","sourceRoot":"","sources":["../../src/agents/define-agent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"functional-agent.d.ts","sourceRoot":"","sources":["../../src/agents/functional-agent.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,sBAAsB,EAAoB,MAAM,YAAY,CAAC;AAQpG,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAElF;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/E,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,sBAAsB,EAClD,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GACnB,SAAS,CAAC,CAAC,CAAC,CAkHd"}
1
+ {"version":3,"file":"functional-agent.d.ts","sourceRoot":"","sources":["../../src/agents/functional-agent.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,sBAAsB,EAAoB,MAAM,YAAY,CAAC;AAQpG,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAElF;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/E,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,sBAAsB,EAClD,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GACnB,SAAS,CAAC,CAAC,CAAC,CAyGd"}
@@ -69,18 +69,11 @@ export function agent(name, fnOrOpts, fn) {
69
69
  return [];
70
70
  return msgs.filter((m) => m !== null && typeof m === "object");
71
71
  },
72
- onRequest: async (_agent, _payload) => {
73
- // Request/response coordination will be fully wired in Task 12
74
- throw new Error("request() is not yet wired — see Task 12 (enhanced coordination).");
75
- },
76
72
  onReply: (msg, payload) => {
77
73
  if (msg._replyChannel) {
78
74
  msg._replyChannel(payload);
79
75
  }
80
76
  },
81
- onPublish: (_topic, _data) => {
82
- // Pub/sub coordination will be fully wired in Task 12
83
- },
84
77
  });
85
78
  // Execute the user handler
86
79
  const result = await handler(ctx);
@@ -1 +1 @@
1
- {"version":3,"file":"functional-agent.js","sourceRoot":"","sources":["../../src/agents/functional-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"functional-agent.js","sourceRoot":"","sources":["../../src/agents/functional-agent.ts"],"names":[],"mappings":"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"}