@animalabs/agent-framework 0.26.1 → 0.27.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.
Files changed (276) hide show
  1. package/README.md +57 -7
  2. package/dist/src/agent.d.ts +263 -22
  3. package/dist/src/agent.d.ts.map +1 -1
  4. package/dist/src/agent.js +531 -54
  5. package/dist/src/agent.js.map +1 -1
  6. package/dist/src/api/server.d.ts.map +1 -1
  7. package/dist/src/api/server.js +1 -2
  8. package/dist/src/api/server.js.map +1 -1
  9. package/dist/src/auto-continue.d.ts +33 -0
  10. package/dist/src/auto-continue.d.ts.map +1 -0
  11. package/dist/src/auto-continue.js +35 -0
  12. package/dist/src/auto-continue.js.map +1 -0
  13. package/dist/src/code-execution/isolate/scripts.d.ts +11 -0
  14. package/dist/src/code-execution/isolate/scripts.d.ts.map +1 -1
  15. package/dist/src/code-execution/isolate/scripts.js +5 -1
  16. package/dist/src/code-execution/isolate/scripts.js.map +1 -1
  17. package/dist/src/framework.d.ts +829 -156
  18. package/dist/src/framework.d.ts.map +1 -1
  19. package/dist/src/framework.js +3906 -1008
  20. package/dist/src/framework.js.map +1 -1
  21. package/dist/src/gate/event-gate.d.ts +309 -46
  22. package/dist/src/gate/event-gate.d.ts.map +1 -1
  23. package/dist/src/gate/event-gate.js +2117 -395
  24. package/dist/src/gate/event-gate.js.map +1 -1
  25. package/dist/src/gate/index.d.ts +2 -2
  26. package/dist/src/gate/index.d.ts.map +1 -1
  27. package/dist/src/gate/index.js +1 -1
  28. package/dist/src/gate/index.js.map +1 -1
  29. package/dist/src/gate/recipe-reconcile.d.ts +103 -0
  30. package/dist/src/gate/recipe-reconcile.d.ts.map +1 -0
  31. package/dist/src/gate/recipe-reconcile.js +325 -0
  32. package/dist/src/gate/recipe-reconcile.js.map +1 -0
  33. package/dist/src/gate/types.d.ts +68 -8
  34. package/dist/src/gate/types.d.ts.map +1 -1
  35. package/dist/src/index.d.ts +6 -4
  36. package/dist/src/index.d.ts.map +1 -1
  37. package/dist/src/index.js +5 -2
  38. package/dist/src/index.js.map +1 -1
  39. package/dist/src/mcpl/channel-registry.d.ts +433 -113
  40. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  41. package/dist/src/mcpl/channel-registry.js +1152 -434
  42. package/dist/src/mcpl/channel-registry.js.map +1 -1
  43. package/dist/src/mcpl/conversation-router.d.ts +16 -8
  44. package/dist/src/mcpl/conversation-router.d.ts.map +1 -1
  45. package/dist/src/mcpl/conversation-router.js +29 -15
  46. package/dist/src/mcpl/conversation-router.js.map +1 -1
  47. package/dist/src/mcpl/convert-block.d.ts.map +1 -1
  48. package/dist/src/mcpl/convert-block.js +14 -2
  49. package/dist/src/mcpl/convert-block.js.map +1 -1
  50. package/dist/src/mcpl/hook-orchestrator.d.ts +7 -1
  51. package/dist/src/mcpl/hook-orchestrator.d.ts.map +1 -1
  52. package/dist/src/mcpl/hook-orchestrator.js +32 -7
  53. package/dist/src/mcpl/hook-orchestrator.js.map +1 -1
  54. package/dist/src/mcpl/index.d.ts +5 -1
  55. package/dist/src/mcpl/index.d.ts.map +1 -1
  56. package/dist/src/mcpl/index.js +4 -0
  57. package/dist/src/mcpl/index.js.map +1 -1
  58. package/dist/src/mcpl/inference-router.d.ts +14 -2
  59. package/dist/src/mcpl/inference-router.d.ts.map +1 -1
  60. package/dist/src/mcpl/inference-router.js +73 -28
  61. package/dist/src/mcpl/inference-router.js.map +1 -1
  62. package/dist/src/mcpl/prose-grammar.d.ts +4 -0
  63. package/dist/src/mcpl/prose-grammar.d.ts.map +1 -1
  64. package/dist/src/mcpl/prose-grammar.js +6 -0
  65. package/dist/src/mcpl/prose-grammar.js.map +1 -1
  66. package/dist/src/mcpl/protocol-family.d.ts.map +1 -1
  67. package/dist/src/mcpl/protocol-family.js +3 -0
  68. package/dist/src/mcpl/protocol-family.js.map +1 -1
  69. package/dist/src/mcpl/push-coalescer.d.ts +20 -2
  70. package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
  71. package/dist/src/mcpl/push-coalescer.js +33 -11
  72. package/dist/src/mcpl/push-coalescer.js.map +1 -1
  73. package/dist/src/mcpl/reference-fetcher.d.ts +63 -42
  74. package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
  75. package/dist/src/mcpl/reference-fetcher.js +177 -145
  76. package/dist/src/mcpl/reference-fetcher.js.map +1 -1
  77. package/dist/src/mcpl/references.d.ts +380 -46
  78. package/dist/src/mcpl/references.d.ts.map +1 -1
  79. package/dist/src/mcpl/references.js +737 -78
  80. package/dist/src/mcpl/references.js.map +1 -1
  81. package/dist/src/mcpl/server-connection.d.ts +82 -3
  82. package/dist/src/mcpl/server-connection.d.ts.map +1 -1
  83. package/dist/src/mcpl/server-connection.js +132 -7
  84. package/dist/src/mcpl/server-connection.js.map +1 -1
  85. package/dist/src/mcpl/tool-lifecycle.d.ts +11 -0
  86. package/dist/src/mcpl/tool-lifecycle.d.ts.map +1 -1
  87. package/dist/src/mcpl/tool-lifecycle.js +21 -0
  88. package/dist/src/mcpl/tool-lifecycle.js.map +1 -1
  89. package/dist/src/mcpl/tool-presence.d.ts +259 -0
  90. package/dist/src/mcpl/tool-presence.d.ts.map +1 -0
  91. package/dist/src/mcpl/tool-presence.js +628 -0
  92. package/dist/src/mcpl/tool-presence.js.map +1 -0
  93. package/dist/src/mcpl/tool-result-normalize.d.ts +9 -3
  94. package/dist/src/mcpl/tool-result-normalize.d.ts.map +1 -1
  95. package/dist/src/mcpl/tool-result-normalize.js +14 -6
  96. package/dist/src/mcpl/tool-result-normalize.js.map +1 -1
  97. package/dist/src/mcpl/tool-signature.d.ts +39 -0
  98. package/dist/src/mcpl/tool-signature.d.ts.map +1 -0
  99. package/dist/src/mcpl/tool-signature.js +292 -0
  100. package/dist/src/mcpl/tool-signature.js.map +1 -0
  101. package/dist/src/mcpl/toolset-host.d.ts +200 -0
  102. package/dist/src/mcpl/toolset-host.d.ts.map +1 -0
  103. package/dist/src/mcpl/toolset-host.js +621 -0
  104. package/dist/src/mcpl/toolset-host.js.map +1 -0
  105. package/dist/src/mcpl/toolsets-module.d.ts +80 -0
  106. package/dist/src/mcpl/toolsets-module.d.ts.map +1 -0
  107. package/dist/src/mcpl/toolsets-module.js +431 -0
  108. package/dist/src/mcpl/toolsets-module.js.map +1 -0
  109. package/dist/src/mcpl/transport.d.ts +2 -2
  110. package/dist/src/mcpl/transport.d.ts.map +1 -1
  111. package/dist/src/mcpl/transport.js +3 -2
  112. package/dist/src/mcpl/transport.js.map +1 -1
  113. package/dist/src/mcpl/types.d.ts +21 -1
  114. package/dist/src/mcpl/types.d.ts.map +1 -1
  115. package/dist/src/mcpl/types.js.map +1 -1
  116. package/dist/src/mcpl/visible-content.d.ts +7 -9
  117. package/dist/src/mcpl/visible-content.d.ts.map +1 -1
  118. package/dist/src/mcpl/visible-content.js +21 -9
  119. package/dist/src/mcpl/visible-content.js.map +1 -1
  120. package/dist/src/module-registry.d.ts +23 -8
  121. package/dist/src/module-registry.d.ts.map +1 -1
  122. package/dist/src/module-registry.js +68 -15
  123. package/dist/src/module-registry.js.map +1 -1
  124. package/dist/src/modules/discord/index.js +1 -1
  125. package/dist/src/modules/discord/index.js.map +1 -1
  126. package/dist/src/modules/history/index.d.ts +2 -1
  127. package/dist/src/modules/history/index.d.ts.map +1 -1
  128. package/dist/src/modules/history/index.js +51 -17
  129. package/dist/src/modules/history/index.js.map +1 -1
  130. package/dist/src/modules/history/semantic.d.ts +108 -6
  131. package/dist/src/modules/history/semantic.d.ts.map +1 -1
  132. package/dist/src/modules/history/semantic.js +273 -57
  133. package/dist/src/modules/history/semantic.js.map +1 -1
  134. package/dist/src/modules/workspace/direct-write.d.ts +181 -0
  135. package/dist/src/modules/workspace/direct-write.d.ts.map +1 -0
  136. package/dist/src/modules/workspace/direct-write.js +384 -0
  137. package/dist/src/modules/workspace/direct-write.js.map +1 -0
  138. package/dist/src/modules/workspace/edit-text.d.ts +26 -12
  139. package/dist/src/modules/workspace/edit-text.d.ts.map +1 -1
  140. package/dist/src/modules/workspace/edit-text.js +58 -28
  141. package/dist/src/modules/workspace/edit-text.js.map +1 -1
  142. package/dist/src/modules/workspace/effects.d.ts +10 -0
  143. package/dist/src/modules/workspace/effects.d.ts.map +1 -1
  144. package/dist/src/modules/workspace/effects.js +1 -1
  145. package/dist/src/modules/workspace/effects.js.map +1 -1
  146. package/dist/src/modules/workspace/index.d.ts +246 -27
  147. package/dist/src/modules/workspace/index.d.ts.map +1 -1
  148. package/dist/src/modules/workspace/index.js +1216 -236
  149. package/dist/src/modules/workspace/index.js.map +1 -1
  150. package/dist/src/modules/workspace/read-page.d.ts +41 -0
  151. package/dist/src/modules/workspace/read-page.d.ts.map +1 -0
  152. package/dist/src/modules/workspace/read-page.js +213 -0
  153. package/dist/src/modules/workspace/read-page.js.map +1 -0
  154. package/dist/src/modules/workspace/result-text.d.ts +67 -0
  155. package/dist/src/modules/workspace/result-text.d.ts.map +1 -0
  156. package/dist/src/modules/workspace/result-text.js +94 -0
  157. package/dist/src/modules/workspace/result-text.js.map +1 -0
  158. package/dist/src/modules/workspace/text.d.ts +29 -12
  159. package/dist/src/modules/workspace/text.d.ts.map +1 -1
  160. package/dist/src/modules/workspace/text.js +35 -33
  161. package/dist/src/modules/workspace/text.js.map +1 -1
  162. package/dist/src/modules/workspace/types.d.ts +41 -17
  163. package/dist/src/modules/workspace/types.d.ts.map +1 -1
  164. package/dist/src/modules/workspace/types.js.map +1 -1
  165. package/dist/src/sent-rows.d.ts +59 -0
  166. package/dist/src/sent-rows.d.ts.map +1 -0
  167. package/dist/src/sent-rows.js +145 -0
  168. package/dist/src/sent-rows.js.map +1 -0
  169. package/dist/src/silent-heartbeat.d.ts +17 -10
  170. package/dist/src/silent-heartbeat.d.ts.map +1 -1
  171. package/dist/src/silent-heartbeat.js.map +1 -1
  172. package/dist/src/stable-hash.d.ts +3 -0
  173. package/dist/src/stable-hash.d.ts.map +1 -0
  174. package/dist/src/stable-hash.js +15 -0
  175. package/dist/src/stable-hash.js.map +1 -0
  176. package/dist/src/stored-injections.d.ts +99 -0
  177. package/dist/src/stored-injections.d.ts.map +1 -0
  178. package/dist/src/stored-injections.js +106 -0
  179. package/dist/src/stored-injections.js.map +1 -0
  180. package/dist/src/text-as-stored.d.ts +4 -3
  181. package/dist/src/text-as-stored.d.ts.map +1 -1
  182. package/dist/src/text-as-stored.js +4 -3
  183. package/dist/src/text-as-stored.js.map +1 -1
  184. package/dist/src/thinking-drops.d.ts +81 -0
  185. package/dist/src/thinking-drops.d.ts.map +1 -0
  186. package/dist/src/thinking-drops.js +103 -0
  187. package/dist/src/thinking-drops.js.map +1 -0
  188. package/dist/src/tool-image-ledger.d.ts +9 -8
  189. package/dist/src/tool-image-ledger.d.ts.map +1 -1
  190. package/dist/src/tool-image-ledger.js +9 -8
  191. package/dist/src/tool-image-ledger.js.map +1 -1
  192. package/dist/src/tool-presentation.d.ts.map +1 -1
  193. package/dist/src/tool-presentation.js +3 -1
  194. package/dist/src/tool-presentation.js.map +1 -1
  195. package/dist/src/tool-result-guard.d.ts +4 -2
  196. package/dist/src/tool-result-guard.d.ts.map +1 -1
  197. package/dist/src/tool-result-guard.js +21 -6
  198. package/dist/src/tool-result-guard.js.map +1 -1
  199. package/dist/src/tool-result-history.d.ts +186 -21
  200. package/dist/src/tool-result-history.d.ts.map +1 -1
  201. package/dist/src/tool-result-history.js +428 -89
  202. package/dist/src/tool-result-history.js.map +1 -1
  203. package/dist/src/tune-out/coordinator.d.ts +17 -9
  204. package/dist/src/tune-out/coordinator.d.ts.map +1 -1
  205. package/dist/src/tune-out/coordinator.js +84 -37
  206. package/dist/src/tune-out/coordinator.js.map +1 -1
  207. package/dist/src/types/agent.d.ts +186 -7
  208. package/dist/src/types/agent.d.ts.map +1 -1
  209. package/dist/src/types/events.d.ts +19 -2
  210. package/dist/src/types/events.d.ts.map +1 -1
  211. package/dist/src/types/framework.d.ts +24 -3
  212. package/dist/src/types/framework.d.ts.map +1 -1
  213. package/dist/src/types/module.d.ts +90 -7
  214. package/dist/src/types/module.d.ts.map +1 -1
  215. package/dist/src/types/trace.d.ts +57 -2
  216. package/dist/src/types/trace.d.ts.map +1 -1
  217. package/package.json +4 -3
  218. package/src/agent.ts +593 -60
  219. package/src/api/server.ts +1 -2
  220. package/src/auto-continue.ts +42 -0
  221. package/src/code-execution/isolate/scripts.ts +11 -3
  222. package/src/framework.ts +4004 -1026
  223. package/src/gate/event-gate.ts +2315 -389
  224. package/src/gate/index.ts +2 -1
  225. package/src/gate/recipe-reconcile.ts +355 -0
  226. package/src/gate/types.ts +70 -8
  227. package/src/index.ts +7 -4
  228. package/src/mcpl/channel-registry.ts +1220 -467
  229. package/src/mcpl/conversation-router.ts +34 -16
  230. package/src/mcpl/convert-block.ts +14 -1
  231. package/src/mcpl/hook-orchestrator.ts +33 -6
  232. package/src/mcpl/index.ts +6 -1
  233. package/src/mcpl/inference-router.ts +79 -34
  234. package/src/mcpl/prose-grammar.ts +7 -0
  235. package/src/mcpl/protocol-family.ts +2 -0
  236. package/src/mcpl/push-coalescer.ts +51 -13
  237. package/src/mcpl/reference-fetcher.ts +201 -162
  238. package/src/mcpl/references.ts +852 -78
  239. package/src/mcpl/server-connection.ts +145 -7
  240. package/src/mcpl/tool-lifecycle.ts +21 -0
  241. package/src/mcpl/tool-presence.ts +650 -0
  242. package/src/mcpl/tool-result-normalize.ts +18 -6
  243. package/src/mcpl/tool-signature.ts +285 -0
  244. package/src/mcpl/toolset-host.ts +637 -0
  245. package/src/mcpl/toolsets-module.ts +451 -0
  246. package/src/mcpl/transport.ts +3 -2
  247. package/src/mcpl/types.ts +22 -1
  248. package/src/mcpl/visible-content.ts +22 -9
  249. package/src/module-registry.ts +77 -24
  250. package/src/modules/discord/index.ts +1 -1
  251. package/src/modules/history/index.ts +48 -18
  252. package/src/modules/history/semantic.ts +308 -54
  253. package/src/modules/workspace/direct-write.ts +425 -0
  254. package/src/modules/workspace/edit-text.ts +82 -35
  255. package/src/modules/workspace/effects.ts +1 -1
  256. package/src/modules/workspace/index.ts +1274 -241
  257. package/src/modules/workspace/read-page.ts +222 -0
  258. package/src/modules/workspace/result-text.ts +119 -0
  259. package/src/modules/workspace/text.ts +58 -32
  260. package/src/modules/workspace/types.ts +41 -17
  261. package/src/sent-rows.ts +162 -0
  262. package/src/silent-heartbeat.ts +17 -10
  263. package/src/stable-hash.ts +14 -0
  264. package/src/stored-injections.ts +131 -0
  265. package/src/text-as-stored.ts +4 -3
  266. package/src/thinking-drops.ts +141 -0
  267. package/src/tool-image-ledger.ts +9 -8
  268. package/src/tool-presentation.ts +3 -1
  269. package/src/tool-result-guard.ts +19 -6
  270. package/src/tool-result-history.ts +488 -88
  271. package/src/tune-out/coordinator.ts +80 -37
  272. package/src/types/agent.ts +189 -7
  273. package/src/types/events.ts +19 -2
  274. package/src/types/framework.ts +21 -3
  275. package/src/types/module.ts +86 -7
  276. package/src/types/trace.ts +58 -2
package/README.md CHANGED
@@ -118,11 +118,11 @@ interface Module {
118
118
 
119
119
  // Optional
120
120
  onAgentSpeech?(agentName: string, content: ContentBlock[], context: SpeechContext): Promise<void>;
121
- gatherContext?(agentName: string): Promise<ContextInjection[]>;
121
+ gatherContext?(agentName: string): Promise<ModuleContextInjection[]>;
122
122
  }
123
123
  ```
124
124
 
125
- An `EventResponse` can add/edit/remove messages, request inference, signal tool changes, and atomically update module state:
125
+ An `EventResponse` can add/edit/remove messages, update module state, request inference, and signal tool changes. The framework applies its message changes, then its state update, then its inference request; when one of these throws, what came before it stays applied, that step may have taken effect in part, and the rest of that response isn't:
126
126
 
127
127
  ```typescript
128
128
  return {
@@ -150,7 +150,7 @@ Each agent has a `ContextManager` (from `@connectome/context-manager`) that main
150
150
  - **PassthroughStrategy** - No compression, raw message replay up to budget
151
151
  - **AutobiographicalStrategy** - Chunks old messages and summarizes them into diary entries, preserving recent context uncompressed
152
152
 
153
- Before inference, modules and MCPL hooks can inject additional context via `gatherContext()`.
153
+ Before inference, modules and MCPL hooks can inject additional context via `gatherContext()`. An `afterUser` injection is stored in the agent's window, as the message `compile()` would have placed after the last user message, so it stays where the agent saw it: the replies after it keep their thinking, and the cache keeps the turns before it. A source's unchanged content isn't stored again while the copy the agent will read as current has it whole: the one its last request held, or a newer one a start stored whose compile then didn't record (it threw, or the start failed before it); once a fold has summarized it or the strategy's window has passed it, it's stored again, as one more row. Where a changed one lands right after the agent's own latest message, with no one else's message between, `[Continue]` still ends the request, after it. A stored row is history to the strategy, capped, sharded, budgeted and folded like any message. Its metadata carries `system: true`, `kind: 'context-injection'` and `contextInjection: { agent, namespace, contentHash, part, parts }`, which `storedInjectionMarkOf` reads, and every other agent's view leaves it out. A module's injection can set `placedEachCompile: true` to be placed by `compile()` at each start instead, near the end, at the cost of the thinking of every reply after its old place.
154
154
 
155
155
  ### Persistence
156
156
 
@@ -347,8 +347,9 @@ three ways:
347
347
  configuration error: `allowHostCommands: true`, an `enabledCapabilities`
348
348
  pattern that matches a capability denied by default, `channelSubscription:
349
349
  'auto'` or a non-empty list, a scope's non-empty `whitelist`, a
350
- `toolLifecycle` `observe` or `inputs` block, and a
351
- `toolLifecycle.maxInputBytes` or an `autofetch` bound above its default.
350
+ `toolLifecycle` `observe` or `inputs` block, a
351
+ `toolLifecycle.maxInputBytes` or an `autofetch` bound above its default,
352
+ and `toolHints: true`.
352
353
  A setting
353
354
  that only takes something away, or repeats a default, is already
354
355
  satisfied, so it is accepted: `enabledFeatureSets` and the rest of
@@ -429,6 +430,55 @@ backlog is simply its unread backlog. Receipts and subject history are kept in
429
430
  the `mcpl/coalescing` state (retry window 1 h); audit lines are
430
431
  `mcpl:coalescing` trace events.
431
432
 
433
+ #### Tool presence and toolsets (RFC-014)
434
+
435
+ A server configured with `toolHints: true` (default false) is offered
436
+ `experimental.mcpl.toolHints`, and its hints count only if it advertised
437
+ `toolHints` too. Without it nothing changes: every tool is listed as before,
438
+ and the host advertises and reads nothing new.
439
+
440
+ With it, the server's static tools stay in the tool list as before, and its
441
+ dynamic tools (those in a toolset, or hinted `mcpl/presence: "dynamic"`) never
442
+ enter it, since every change to the list rebuilds the prompt cache. The
443
+ framework registers a `toolsets` module with four constant tools:
444
+
445
+ - `toolsets--open {server?, toolset?, instance?, options?}` opens a toolset (or
446
+ a named instance of one), and answers with what the server shows on opening
447
+ and the tools usable now;
448
+ - `toolsets--act {server?, tool, instance?, args?}` calls a dynamic tool down
449
+ the same path as a direct call of it (the agent's `allowedTools`, the
450
+ server's tool policy, the state exchange, the reading of its result, RFC-007
451
+ observers, who see the server's tool), with only the instance added, in
452
+ `_meta["mcpl/instance"]`. It first checks `args` against the definition in
453
+ force for that instance; that check is bounded, and leaves `pattern` and
454
+ anything nested or branching too far to the server, which checks every
455
+ call itself;
456
+ - `toolsets--look {server?, toolset?, instance?, tool?}` restates what is open
457
+ and what can be opened, or one tool's whole definition;
458
+ - `toolsets--close {server?, toolset?, instance?}` closes it.
459
+
460
+ `server` can be left out when only one server has the name. Hint changes apply
461
+ as their message is read, in `rev` order, whatever becomes of the message (a
462
+ refused push, a result that came after its timeout). A skipped rev re-reads
463
+ `tools/list` and then `toolsets/list`, which the host also reads after every
464
+ (re)connect, adopting what the server kept open and never re-opening anything.
465
+ What changed is told where it happened: after a call's own result, after the
466
+ push that explains it, or as a notice (`kind: 'mcpl-toolsets'`, which wakes
467
+ nothing) for a standalone `tools/hints`, a late result, an adoption, a
468
+ recovery, or a call whose result doesn't go to the agent (one the framework or
469
+ a module makes itself). Notices need the server's `pushEvents` grant, like any delivery. A
470
+ new tool's first sentence is told the first time its definition appears.
471
+ Suggestions are shown, never acted on. Each `ended` id is told once. When an
472
+ open toolset's announcements have left an agent's context (compressed or out
473
+ of the window), the module's `gatherContext` restates what is open, as a
474
+ stored `afterUser` injection (namespace `mcpl-toolsets`), at that agent's next
475
+ start.
476
+
477
+ A dynamic tool called by its prefixed name is refused, pointing at
478
+ `toolsets--act`. Calls to an undeclared toolset's tools are refused while the
479
+ host has that group closed (RFC-014 §5.4). Projection and surface mode are not
480
+ implemented: a `surface` server's static tools are listed like any server's.
481
+
432
482
  #### Per-channel conversation routing (deprecated)
433
483
 
434
484
  > **Deprecated: `FrameworkConfig.conversations` (`ConversationRouter`).** Per-channel conversation routing sends each channel's traffic to its own fork agent, spawned from a template agent and closed after an idle TTL. It is being retired ([#235](https://github.com/anima-research/agent-framework/issues/235)). Its `'mention'` bind/trigger rule, the default for channels, reads `metadata.mentioned`, which discord-mcpl does not set, so on Discord channels an @-mention never binds a fork or triggers a bound one. Don't adopt it in new hosts. Existing configurations still route exactly as before, and the framework logs one `[deprecated]` line when it is created with `conversations` set. Removal is a follow-up.
@@ -439,7 +489,7 @@ the `mcpl/coalescing` state (retry window 1 h); audit lines are
439
489
  2. **Drive**: Framework iterates stream events (tokens, tool-calls, complete, error)
440
490
  3. **Tool yield**: Stream yields tool calls → framework dispatches concurrently → collects results
441
491
  4. **Resume**: All results in → stream resumes with tool results
442
- 5. **Budget restart**: If input tokens exceed `maxStreamTokens`, the stream is cancelled, context is recompressed, and a fresh stream starts
492
+ 5. **Budget restart**: If input tokens exceed `maxStreamTokens`, the stream is cancelled, context is recompressed, and a fresh stream starts. An agent whose model binds its thinking (`thinkingBinding.binds`) with `physicalWindowTokens` set skips this, and the window projection restarts it instead before a request the window can't hold
443
493
  6. **Complete**: Final response saved to context, agent returns to idle
444
494
 
445
495
  ### Abort / Cancellation
@@ -453,7 +503,7 @@ The non-streaming path uses `AbortSignal` forwarded to `membrane.stream()`, whic
453
503
 
454
504
  A turn whose stream is cancelled this way, or by `agent.cancelStream()`, ends as a stop, whether the stream reports the cancel as `aborted`, as an `error`, or by just closing: one `inference:aborted` carrying the caller's reason (`user` when none was given), a `[turn-interrupted]` note in the agent's context, and never `inference:exhausted`, which is for failed inferences. A stream that membrane aborts on its own, at a deadline or on an error (reason `timeout` or `error`), is a failed inference. `stop()` and an operator's quiesce abandon end a turn as a stop too, with their own reasons, `shutdown` and `quiesce_abandoned`, and write no note. A stopped stream still writes its inference-log row, with `success: false`.
455
505
 
456
- A caller's stop and an operator's quiesce abandon also reach a turn that has no live stream: one running its modules' `gatherContext`, its MCPL hooks or its compile, one waiting to retry a failed inference or compile (`abortInference()` and an operator's abandon end the wait, and a stop through `Agent.cancelStream()` waits for it to run out), and one whose tool-result guard is waiting to retry after a refusal, which holds only the round's finished stream. The turn ends at its next check, before it sends anything more, as a stop on a live stream ends it, and a turn whose compile fails after the stop ends at the failure, before a provider hold, the error policy's retry or `inference:exhausted`. A caller's stop leaves the note saying the turn was stopped before it sent anything or before it finished, and an operator's abandon leaves none. `abortInference()` returns `true` for such a turn. In the guard's wait, `stop()` ends the turn as a stop with reason `shutdown`, and an operator's abandon ends it as the abandon, even when a caller's stop came first; with both, it ends as `stop()`'s. `stop()` drops a turn in its hooks, its compile or a wait to retry before it sends anything, as before, and drops one whose compile fails while it runs, once a caller's stop has reached it, rather than ending it as that stop. While the failure of a turn's stream is reported (`inference:failed`), the agent no longer holds that stream, so `abortInference()` from a listener reports `false`. A failure to build a turn's request is reported while the turn's check is still ahead, so there `abortInference()` reports `true`, and the turn ends at that check. A caller's stop made where no check of a turn is ahead stops nothing, and doesn't end the agent's next turn: while the agent is idle, while a turn finishes its last delivery, while a budget restart or a non-streaming turn's tool results wait to start the turn's next call, and while a provider-capacity hold or a provider's stated wait has parked a turn until the hold ends. An operator's quiesce abandon and `stop()` do end a turn whose continuation (a budget restart's, or a tool-result guard's retry) waits to start: the continuation is dropped, and the turn ends with `quiesce_abandoned` or `shutdown`.
506
+ A caller's stop and an operator's quiesce abandon also reach a turn that has no live stream: one running its modules' `gatherContext`, its MCPL hooks or its compile, one waiting to retry a failed inference or compile (`abortInference()` and an operator's abandon end the wait, and a stop through `Agent.cancelStream()` waits for it to run out), and one whose tool-result guard is waiting to retry after a refusal, which holds only the round's finished stream. The turn ends at its next check, before it sends anything more, as a stop on a live stream ends it, and a turn whose compile fails after the stop ends at the failure, before a provider hold, the error policy's retry or `inference:exhausted`. A caller's stop leaves the note saying the turn was stopped before it sent anything or before it finished, and an operator's abandon leaves none. `abortInference()` returns `true` for such a turn. In the guard's wait, `stop()` ends the turn as a stop with reason `shutdown`, and an operator's abandon ends it as the abandon, even when a caller's stop came first; with both, it ends as `stop()`'s. `stop()` drops a turn in its hooks, its compile or a wait to retry before it sends anything, as before, and drops one whose compile fails while it runs, once a caller's stop has reached it, rather than ending it as that stop. While the failure of a turn's stream is reported (`inference:failed`), the agent no longer holds that stream, so `abortInference()` from a listener reports `false`. A failure to build a turn's request is reported while the turn's check is still ahead, so there `abortInference()` reports `true`, and the turn ends at that check. A caller's stop made where no check of a turn is ahead stops nothing, and doesn't end the agent's next turn: while the agent is idle, while a turn finishes its last delivery, and while a non-streaming turn's tool results wait to start the turn's next call. A turn whose continuation (a budget restart's, or a tool-result guard's retry) waits to start, or whose failed call a provider-capacity hold or a provider's stated wait keeps for its retry, is ended by `abortInference()`, by an operator's quiesce abandon and by `stop()`: the continuation or retry is dropped, and the turn ends with the caller's reason, `quiesce_abandoned` or `shutdown`. After `abortInference()` or an abandon, wakes that arrived meanwhile still run (after the abandon, once the host resumes): those a hold keeps beside the retry, and those the scheduler merged into the retry's or the continuation's start before that start began, which the stop or the abandon puts back in the queue. A stop through `Agent.cancelStream()` stops nothing there.
457
507
 
458
508
  ## API Server
459
509
 
@@ -1,6 +1,8 @@
1
- import type { Membrane, NormalizedRequest, ContentBlock, YieldingStream } from '@animalabs/membrane';
1
+ import type { Membrane, NormalizedMessage, NormalizedRequest, ContentBlock, ThinkingBindingEntry, YieldingStream } from '@animalabs/membrane';
2
2
  import type { CacheWireReceipt } from './kv-unified-wire.js';
3
3
  import { ToolResultGuard } from './tool-result-guard.js';
4
+ import { type PlacedDrop } from './thinking-drops.js';
5
+ import { type SentRow } from './sent-rows.js';
4
6
  import { type RequestOnlyPrompt, type SilentHeartbeatTick } from './silent-heartbeat.js';
5
7
  import { type ResolvedClockConfig } from './clock-rows.js';
6
8
  export interface ActivationRequestOptions {
@@ -9,13 +11,46 @@ export interface ActivationRequestOptions {
9
11
  /** A request that will never be sent (a preview): compile it as a dry
10
12
  * run (see `compileWithInjections` for what that leaves alone). */
11
13
  dryRun?: boolean;
14
+ /** Messages added to the compile's: a preview's stand-in for the context
15
+ * injections a start would store before its compile
16
+ * (stored-injections.ts), put where that compile would render them, as
17
+ * the window's newest rows. A preview stores nothing, so the compile
18
+ * doesn't weigh them against the budget or shape them as it would the
19
+ * stored rows. */
20
+ appendedMessages?: NormalizedMessage[];
21
+ /** `false`: the caller retries this stream's failures itself, so membrane
22
+ * sends a failed round once and hands the error up. The framework's turns
23
+ * pass it (its errorPolicy is their retry layer); a direct caller of
24
+ * startStream keeps membrane's retries. */
25
+ membraneRetries?: boolean;
26
+ }
27
+ /** A compile's render stats, as context-manager's `getRenderStats()` types
28
+ * them; each compile carries its own, where the strategy records them, in
29
+ * `CompileResult.renderStats`. */
30
+ export type RenderStats = NonNullable<ReturnType<ContextManager['getRenderStats']>>;
31
+ /** The render stats of the dry compile that built `request`, or null: see
32
+ * `AgentFramework.getRequestCompileStats`. */
33
+ export declare function dryCompileStatsOf(request: object): RenderStats | null;
34
+ /**
35
+ * What a compile is told when the agent's model binds its thinking: `compile()`'s options for a context manager
36
+ * that keeps a thinking-binding record, as agent-framework holds the binding (with the participant whose messages
37
+ * are the agent's own replies) and as digests of the request's head (bindingCompileOptions).
38
+ */
39
+ export interface BindingCompileOptions {
40
+ thinkingBinding?: {
41
+ binds: boolean;
42
+ dropBlock: boolean;
43
+ participant: string;
44
+ };
45
+ identity?: RequestIdentity;
12
46
  }
13
47
  export interface StartStreamResult {
14
48
  stream: YieldingStream;
15
49
  request: NormalizedRequest;
16
50
  /** The request-only `[Continue]` prompt this request's reply follows, if
17
51
  * any, read from the request: a new one when it ends on `[Continue]`;
18
- * else, when it ends on tool results, the prompt of the reply that called
52
+ * else, when it ends on tool results, or on tool results and then
53
+ * stored context injections alone, the prompt of the reply that called
19
54
  * those tools (`toolLoopPrompt`); else none. The framework stamps the
20
55
  * reply's rows with it (`metadata.promptedBy`), for later compiles to
21
56
  * render it before them. */
@@ -25,21 +60,45 @@ export interface StartStreamResult {
25
60
  wireReceipt: CacheWireReceipt;
26
61
  } | undefined;
27
62
  drainKvSubmissionIds?: () => string[];
63
+ /** Where each block a call of this stream reports the provider dropped came from: a stored reply this
64
+ * request's compile rendered, a round the stream appended, or neither (placeThinkingDrops). Optional, so a
65
+ * stand-in for the stream start needn't supply it; without it, no drop can be placed. */
66
+ placeDrops?: (entries: readonly ThinkingBindingEntry[]) => PlacedDrop[];
67
+ /** The compile's `thinkingRecordedAfter`, when it gave one: a reply stored at or below it predates the branch's
68
+ * thinking-binding record, so the provider may drop its thinking with no strip having missed. */
69
+ thinkingRecordedAfter?: number;
70
+ /** Tells the context manager what the stream's later rounds carried after the compiled messages, every round so
71
+ * far in sent order, with this request's head (context-manager's `noteRequestSent`). Present only where the
72
+ * model binds its thinking and the context manager keeps a record it can be told of. */
73
+ noteRequestSent?: (rows: readonly SentRow[]) => boolean;
28
74
  }
29
- import type { ContextManager, TokenBudget, ContextInjection, CompileResult, MessageMetadata } from '@animalabs/context-manager';
75
+ import type { ContextManager, TokenBudget, ContextInjection, CompileResult, MessageId, MessageMetadata, RequestIdentity } from '@animalabs/context-manager';
30
76
  import type { AgentConfig, AgentState, SameRoundThinkTextPolicy, SameRoundThinkTextPolicySource, ToolCallId, ToolCall, ToolResult, ToolDefinition, AgentInfo, InferenceResult, InferenceOptions, AgentRuntimeSettingsPatch, AgentRuntimeSettingsSnapshot, AgentRuntimeSettingsOverrides } from './types/index.js';
31
77
  /**
32
78
  * Refuse an agent config whose `promptCaching`, `toolResultGuard`,
33
- * `toolWrapperProseGuard`, `thinking.enabled` or `refusalHandling.autoRewind`
34
- * holds anything but true or false (assertBooleanSetting), or whose `thinking`
35
- * or `refusalHandling` is anything but an object, null or false
36
- * (holdsSettings). The constructor runs it first, so the rule holds wherever
37
- * an Agent is built. `create()` also runs it for each of its agents before
38
- * anything opens, and `createEphemeralAgent` before it reserves the name, so a
39
- * refusal there leaves nothing behind. Membrane reads `thinking.enabled`, and
40
- * the refusal is here because the setting is AgentConfig's.
79
+ * `toolWrapperProseGuard`, `thinking.enabled`, `thinkingBinding.dropBlock`,
80
+ * `thinkingBinding.binds` or `refusalHandling.autoRewind` holds anything but true or false
81
+ * (assertBooleanSetting, where null counts as left out), or whose `thinking`, `thinkingBinding` or
82
+ * `refusalHandling` is anything but an object, null or false (holdsSettings),
83
+ * or whose `autoContinue` resolveAutoContinue refuses. The constructor runs it
84
+ * first, so the rule holds wherever an Agent is built. `create()` also runs it
85
+ * for each of its agents before anything opens, and `createEphemeralAgent`
86
+ * before it reserves the name, so a refusal there leaves nothing behind.
87
+ * Membrane reads `thinking.enabled`, and the refusal is here because the
88
+ * setting is AgentConfig's.
41
89
  */
42
90
  export declare function assertAgentSwitches(config: AgentConfig): void;
91
+ /** `AutoContinueConfig.maxConsecutive` when left out. */
92
+ export declare const DEFAULT_AUTO_CONTINUE_MAX = 3;
93
+ /**
94
+ * `AgentConfig.autoContinue` resolved: undefined when off (left out, null or
95
+ * false), else its cap. `true` takes the default cap; an object takes
96
+ * `maxConsecutive`, a whole number from 1 to 20 (the default when left out).
97
+ * Any other value is refused.
98
+ */
99
+ export declare function resolveAutoContinue(config: AgentConfig): {
100
+ maxConsecutive: number;
101
+ } | undefined;
43
102
  /**
44
103
  * An agent wraps a context manager and manages inference state.
45
104
  */
@@ -63,6 +122,12 @@ export declare class Agent {
63
122
  * blocks are preserved through Chronicle.
64
123
  */
65
124
  readonly thinking: AgentConfig['thinking'];
125
+ /** Whether requests ask the provider to drop signed thinking whose earlier
126
+ * conversation changed (see AgentConfig.thinkingBinding.dropBlock). */
127
+ private readonly thinkingDropBlock;
128
+ /** Whether the model binds its signed thinking to the conversation before
129
+ * it (see AgentConfig.thinkingBinding.binds). */
130
+ private readonly thinkingBinds;
66
131
  /** Refusal auto-rewind policy (see AgentConfig.refusalHandling). */
67
132
  readonly refusalHandling: AgentConfig['refusalHandling'];
68
133
  readonly toolResultGuard: ToolResultGuard;
@@ -70,6 +135,11 @@ export declare class Agent {
70
135
  readonly proseRouting: 'locus' | 'explicit' | 'hybrid' | 'disabled';
71
136
  /** Exact whole-response known-tool wrapper containment (default off). */
72
137
  readonly toolWrapperProseGuard: boolean;
138
+ /** Continuation after a turn the model ends itself (see
139
+ * AgentConfig.autoContinue); undefined when off. */
140
+ readonly autoContinue: {
141
+ maxConsecutive: number;
142
+ } | undefined;
73
143
  /** Clock rows' interval and precision (see AgentConfig.clock); undefined
74
144
  * when the agent writes none of its own (a resident still reads those
75
145
  * another resident writes into the shared slot). */
@@ -402,6 +472,48 @@ export declare class Agent {
402
472
  branch: string;
403
473
  sequence: number;
404
474
  } | null;
475
+ /**
476
+ * The newest consumed watermark a request carried that was answered: its
477
+ * round's tool calls, or its completion, came back. A message a boundary
478
+ * injected counts as heard only once a request carrying it is answered;
479
+ * the consumed watermark moves when the stream is handed it, before its
480
+ * request runs, so a request that fails, ending its stream with an error,
481
+ * leaves this as it was.
482
+ */
483
+ private answeredWatermark;
484
+ getAnsweredWatermark(): {
485
+ branch: string;
486
+ sequence: number;
487
+ } | null;
488
+ /** A request that carried `watermark` was answered. Requests are answered
489
+ * in the order they're sent, and the consumed watermark only advances
490
+ * within a branch, so the latest is the newest. */
491
+ markAnswered(watermark: {
492
+ branch: string;
493
+ sequence: number;
494
+ } | null): void;
495
+ /**
496
+ * Per destination (a server's channel, by its key), the newest consumed
497
+ * watermark the agent had read when it published there by a route the
498
+ * framework sees (its prose, a sleep's announcement, a channel_publish, a
499
+ * draft resend, or a send tool whose channel the framework records), on
500
+ * the branch it was taken on. A wake that carries a channel, unless it's
501
+ * marked ambient (InferenceRequest.ambient), keeps its turn unless the
502
+ * agent spoke there after reading the write the wake is for. It
503
+ * lives as long as this Agent: an agent made again starts it empty, and
504
+ * such a wake then stays.
505
+ */
506
+ private publishedThrough;
507
+ /** Note a publish into `destination` (its key), made having read through
508
+ * `readThrough`: the consumed watermark when its words were written, or
509
+ * its call made. */
510
+ notePublished(destination: string, readThrough: {
511
+ branch: string;
512
+ sequence: number;
513
+ } | null): void;
514
+ /** Whether the agent published into `destination` (its key) having read
515
+ * the row stored at `sequence` on `branch`. */
516
+ publishedAfterReading(destination: string, branch: string, sequence: number): boolean;
405
517
  /** Mark everything currently stored as consumed (the agent's creation, at
406
518
  * boot or later, and a tool boundary that injected messages into a live
407
519
  * stream declaring it carries them; see consumedWatermark). */
@@ -438,8 +550,92 @@ export declare class Agent {
438
550
  * manager commits what it commits for one, the consumed watermark moves,
439
551
  * and a prepared budget change settles. To inspect what the agent would
440
552
  * see, use the framework's `previewActivation`, which compiles as a dry
441
- * run. */
553
+ * run. It isn't told the agent's thinking binding (`thinkingBinding.binds`),
554
+ * so a context manager that keeps a thinking-binding record neither reads
555
+ * nor writes the record here, and what it returns keeps thinking whose
556
+ * earlier conversation changed. */
442
557
  compileContext(budget?: TokenBudget): Promise<CompileResult>;
558
+ /**
559
+ * The stored context injections of this agent's that the last compile it
560
+ * built to send rendered (stored-injections.ts), the framework's activation
561
+ * request's or the direct API's: for each namespace and content, the parts
562
+ * the compile held, and the branch it read. A compile built to send whose
563
+ * request then isn't sent (a stop, a failure) still records: its rows stay
564
+ * in the window all the same. Undefined before the first, as after a
565
+ * restart. The framework's same-content skip reads it (renderedInjection).
566
+ */
567
+ private renderedInjections?;
568
+ /**
569
+ * Per branch (by id and created), the point a stored injection on it has
570
+ * to come after to have been in no request yet (unsentInjection): the
571
+ * newest row of this agent's window on that branch when the first plan
572
+ * there since its last compile built to send (a start's, or a preview's,
573
+ * which stores nothing) asked about a unit, before that plan's start
574
+ * stored anything. Each compile built to send that records what it
575
+ * held unsets its branch's, a restart unsets them all, and a plan asks
576
+ * here before it stores a unit, so every one of this agent's stored
577
+ * injections on a branch after its point was stored since that compile.
578
+ * Kept per branch, so a start or preview on another branch doesn't move
579
+ * this one's past a copy no request has had.
580
+ */
581
+ private readonly unsentSince;
582
+ /**
583
+ * A host's hook, called with the messages of each compile built to send
584
+ * (never a dry run), as the compile is recorded: what the request carries,
585
+ * after compression and the window have done their work. The framework
586
+ * uses it to tell when an MCPL toolset's announcement has left the context
587
+ * (RFC-014 §8.3 reminders). It must not change the messages; one that
588
+ * throws is logged, and the start goes on.
589
+ */
590
+ onCompiledToSend?: (messages: readonly unknown[]) => void;
591
+ /**
592
+ * The newest content of `namespace` among this agent's rows stored since
593
+ * its last compile built to send (unsentSince), and whether every part of
594
+ * it is among them: rows a start stored whose compile then didn't record
595
+ * (it threw, or the start failed before it), which no request has had
596
+ * yet, and which are newer than anything renderedInjection knows. Undefined when there are none, as at every
597
+ * start whose last compile was built and recorded. A fold between that
598
+ * start and the next (a host's own committing compile, or the compression
599
+ * an over-budget retry waits for) can summarize them all the same: the
600
+ * next request then has the summary's word for them, and the start after
601
+ * it stores them again, as after any fold. The window is read back 64
602
+ * rows at a time from the newest, stopping at that point.
603
+ */
604
+ unsentInjection(namespace: string): {
605
+ contentHash: string;
606
+ whole: boolean;
607
+ } | undefined;
608
+ /** Record which of this agent's stored injections a compile built to send
609
+ * rendered. Another agent's stored rows never reach this agent's compile,
610
+ * since every compile of a shared store leaves them out by its view
611
+ * filter (isAnotherAgentsInjection): a compile of a shared store without
612
+ * that filter would mix them in here. */
613
+ private noteRenderedInjections;
614
+ /**
615
+ * The newest content of `namespace` among this agent's stored injections
616
+ * that the last compile built to send rendered, by its newest copy: its
617
+ * content hash, and whether every part of that content was there in some
618
+ * copy, every shard, however the strategy shaped it. Undefined when none
619
+ * was, when this agent hasn't built a request since it started, or when
620
+ * the window's branch has changed since.
621
+ */
622
+ renderedInjection(namespace: string): {
623
+ contentHash: string;
624
+ whole: boolean;
625
+ } | undefined;
626
+ /**
627
+ * Whether compiled message `i` of `result` is a row of this agent's stored
628
+ * context injections (stored-injections.ts): rendered as an injection's
629
+ * participant, and each of its stored rows, by the compile's provenance,
630
+ * carrying this agent's mark. A speaker merely named like an injection's
631
+ * participant isn't one. Only such a message's rows are read, so a start
632
+ * reads the store for those alone.
633
+ */
634
+ private isStoredInjectionRow;
635
+ /** A stored row's injection mark, or undefined for any other row, and for
636
+ * one the store can't read just now, which is logged: a start doesn't fail
637
+ * on it (the row then counts as no stored injection). */
638
+ private storedMarkOf;
443
639
  /**
444
640
  * Compile the context with injections (e.g. from MCPL servers), which the
445
641
  * context manager merges into the compiled messages. Without
@@ -451,15 +647,23 @@ export declare class Agent {
451
647
  compileWithInjections(budget?: TokenBudget, injections?: ContextInjection[], opts?: {
452
648
  kvUnifiedImmutablePrefixHash?: string;
453
649
  dryRun?: boolean;
454
- }): Promise<CompileResult>;
650
+ } & BindingCompileOptions): Promise<CompileResult>;
455
651
  /**
456
652
  * Run inference and return result with tool calls and speech content.
457
- * Updates agent state during execution.
653
+ * Updates agent state during execution. Its compile commits. With
654
+ * `thinkingBinding.binds` it also writes the context manager's
655
+ * thinking-binding record, so then call it only while none of this agent's
656
+ * requests is streaming: a stream open meanwhile then has its later notes
657
+ * write nothing, and its replies go without their thinking at the next
658
+ * compile. Its own reply is never noted, so with `binds` its thinking is
659
+ * left out at the compile after it's stored.
458
660
  */
459
661
  runInference(availableTools: ToolDefinition[], budget?: TokenBudget, options?: InferenceOptions): Promise<InferenceResult>;
460
662
  /**
461
663
  * Run inference with context injections.
462
- * Same as runInference but passes injections through to compile.
664
+ * Same as runInference but passes injections through to compile. Its
665
+ * compile commits, and with `thinkingBinding.binds` writes the
666
+ * thinking-binding record, as runInference's does (see there).
463
667
  */
464
668
  runInferenceWithInjections(availableTools: ToolDefinition[], injections?: ContextInjection[], budget?: TokenBudget, options?: InferenceOptions): Promise<InferenceResult>;
465
669
  /**
@@ -486,7 +690,10 @@ export declare class Agent {
486
690
  * watermark); a preview passes `options.dryRun`, so its compile commits
487
691
  * none of that (see `compileWithInjections` for what a dry run still
488
692
  * leaves). Either way the context manager is handed the compression tool
489
- * definitions. Safe to call regardless of the agent's current status.
693
+ * definitions. Safe to call regardless of the agent's current status,
694
+ * except that with `thinkingBinding.binds` a compile that isn't a dry run
695
+ * writes the context manager's binding record, so while one of the
696
+ * agent's requests streams, a call to look passes `options.dryRun`.
490
697
  * It doesn't wait for the tool-result guard's annotations, so a preview
491
698
  * never waits on a workspace write (rollback, undo and redo report one), and
492
699
  * may show a withheld stub before its place is added; the activation waits
@@ -495,13 +702,47 @@ export declare class Agent {
495
702
  private assembleActivationRequest;
496
703
  /**
497
704
  * The request fields that come from this agent's own settings: its model
498
- * config, prompt caching and cache TTL, prefill message, provider
499
- * parameters and participant name. Every request the agent sends takes
500
- * them from here, a framework turn's (assembleActivationRequest) and the
501
- * direct API's (runInferenceWithInjections), so a setting reaches both or
502
- * neither.
705
+ * config, thinking binding, prompt caching and cache TTL, prefill message,
706
+ * provider parameters and participant name. Every request the agent sends
707
+ * takes them from here, a framework turn's (assembleActivationRequest) and
708
+ * the direct API's (runInferenceWithInjections), so a setting reaches both
709
+ * or neither.
503
710
  */
504
711
  private requestSettings;
712
+ /**
713
+ * The thinking config a request carries: the agent's own, with the binding
714
+ * control added when `thinkingBinding.dropBlock` asks for it. A model whose
715
+ * thinking is always on takes the control whatever `enabled` says, so an
716
+ * agent with no thinking config of its own still sends one, holding only
717
+ * the control and `enabled: false`. Membrane sends nothing from it to any
718
+ * other model, since thinking is off there.
719
+ */
720
+ private requestThinking;
721
+ /** The stream's way to tell the context manager what its later rounds sent, with the head its compile was given:
722
+ * where the agent's model binds its thinking (context-manager's `noteRequestSent`). */
723
+ private requestNotes;
724
+ /**
725
+ * The binding a compile of this agent is told of (bindingCompileOptions), and a preview of its context too: the
726
+ * participant whose messages are its replies is its own name. Undefined where the model doesn't bind.
727
+ * @internal For the framework's preview and its budget rule; not a host API.
728
+ */
729
+ thinkingBindingOption(): {
730
+ binds: true;
731
+ dropBlock: boolean;
732
+ participant: string;
733
+ } | undefined;
734
+ /**
735
+ * What a compile the agent sends tells the context manager when the model binds its thinking
736
+ * (`thinkingBinding.binds`): the binding as set, with the agent's own name as the participant whose messages
737
+ * are its replies (an agent stores its replies under its name), and a digest of each part of the request ahead of
738
+ * its messages, so a changed one can stand for a first difference where the context manager keeps a
739
+ * thinking-binding record. The system text is the one the request will carry, built from the system-position
740
+ * injections given to the compile as the kv-unified prefix hash builds it; the tools are the ones it will carry, in
741
+ * their order; `request` covers the thinking config, `maxTokens` and `providerParams`, where a host puts its own
742
+ * thinking config and `tool_choice`, and `prefillUserMessage`, which membrane sends as a leading user turn ahead
743
+ * of a conversation that would begin with the assistant. Nothing without `binds`: the compile is as it was.
744
+ */
745
+ private bindingCompileOptions;
505
746
  /** The request `assembleActivationRequest` builds (see there), for preview
506
747
  * and debug tooling: what this agent's next activation would send. */
507
748
  buildActivationRequest(availableTools: ToolDefinition[], injections?: ContextInjection[], budget?: TokenBudget, compressionTools?: ToolDefinition[], options?: ActivationRequestOptions): Promise<NormalizedRequest>;
@@ -530,7 +771,7 @@ export declare class Agent {
530
771
  * Add an assistant response to context.
531
772
  * Called by framework when stream completes.
532
773
  */
533
- addAssistantResponse(content: ContentBlock[], metadata?: MessageMetadata): void;
774
+ addAssistantResponse(content: ContentBlock[], metadata?: MessageMetadata): MessageId | undefined;
534
775
  /**
535
776
  * Transition back to streaming state after tool results are provided.
536
777
  */
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"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"}