@qjp88995/agent-runtime 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (477) hide show
  1. package/dist/agent-extensions.d.ts +30 -0
  2. package/dist/agent-extensions.d.ts.map +1 -0
  3. package/dist/agent-extensions.js +4 -0
  4. package/dist/agent-extensions.js.map +1 -0
  5. package/dist/builtins/ask-outcome.d.ts +49 -0
  6. package/dist/builtins/ask-outcome.d.ts.map +1 -0
  7. package/dist/builtins/ask-outcome.js +128 -0
  8. package/dist/builtins/ask-outcome.js.map +1 -0
  9. package/dist/builtins/ask-schema.d.ts +110 -0
  10. package/dist/builtins/ask-schema.d.ts.map +1 -0
  11. package/dist/builtins/ask-schema.js +124 -0
  12. package/dist/builtins/ask-schema.js.map +1 -0
  13. package/dist/builtins/ask.service.d.ts +210 -0
  14. package/dist/builtins/ask.service.d.ts.map +1 -0
  15. package/dist/builtins/ask.service.js +373 -0
  16. package/dist/builtins/ask.service.js.map +1 -0
  17. package/dist/builtins/ask.tool.d.ts +49 -0
  18. package/dist/builtins/ask.tool.d.ts.map +1 -0
  19. package/dist/builtins/ask.tool.js +109 -0
  20. package/dist/builtins/ask.tool.js.map +1 -0
  21. package/dist/builtins/index.d.ts +8 -0
  22. package/dist/builtins/index.d.ts.map +1 -0
  23. package/dist/builtins/index.js +8 -0
  24. package/dist/builtins/index.js.map +1 -0
  25. package/dist/builtins/todo-schema.d.ts +90 -0
  26. package/dist/builtins/todo-schema.d.ts.map +1 -0
  27. package/dist/builtins/todo-schema.js +97 -0
  28. package/dist/builtins/todo-schema.js.map +1 -0
  29. package/dist/builtins/todo-settle.hook.d.ts +110 -0
  30. package/dist/builtins/todo-settle.hook.d.ts.map +1 -0
  31. package/dist/builtins/todo-settle.hook.js +174 -0
  32. package/dist/builtins/todo-settle.hook.js.map +1 -0
  33. package/dist/builtins/todo.tool.d.ts +59 -0
  34. package/dist/builtins/todo.tool.d.ts.map +1 -0
  35. package/dist/builtins/todo.tool.js +107 -0
  36. package/dist/builtins/todo.tool.js.map +1 -0
  37. package/dist/context/context-budget-tracker.d.ts +185 -0
  38. package/dist/context/context-budget-tracker.d.ts.map +1 -0
  39. package/dist/context/context-budget-tracker.js +400 -0
  40. package/dist/context/context-budget-tracker.js.map +1 -0
  41. package/dist/context/context-budget.d.ts +48 -0
  42. package/dist/context/context-budget.d.ts.map +1 -0
  43. package/dist/context/context-budget.js +89 -0
  44. package/dist/context/context-budget.js.map +1 -0
  45. package/dist/context/index.d.ts +3 -0
  46. package/dist/context/index.d.ts.map +1 -0
  47. package/dist/context/index.js +3 -0
  48. package/dist/context/index.js.map +1 -0
  49. package/dist/extensions/repeat-call.hook.d.ts +32 -0
  50. package/dist/extensions/repeat-call.hook.d.ts.map +1 -0
  51. package/dist/extensions/repeat-call.hook.js +54 -0
  52. package/dist/extensions/repeat-call.hook.js.map +1 -0
  53. package/dist/hooks/index.d.ts +3 -0
  54. package/dist/hooks/index.d.ts.map +1 -0
  55. package/dist/hooks/index.js +3 -0
  56. package/dist/hooks/index.js.map +1 -0
  57. package/dist/hooks/turn-hook.registry.d.ts +51 -0
  58. package/dist/hooks/turn-hook.registry.d.ts.map +1 -0
  59. package/dist/hooks/turn-hook.registry.js +233 -0
  60. package/dist/hooks/turn-hook.registry.js.map +1 -0
  61. package/dist/hooks/turn-hook.types.d.ts +179 -0
  62. package/dist/hooks/turn-hook.types.d.ts.map +1 -0
  63. package/dist/hooks/turn-hook.types.js +48 -0
  64. package/dist/hooks/turn-hook.types.js.map +1 -0
  65. package/dist/images/byte-cache.d.ts +24 -0
  66. package/dist/images/byte-cache.d.ts.map +1 -0
  67. package/dist/images/byte-cache.js +51 -0
  68. package/dist/images/byte-cache.js.map +1 -0
  69. package/dist/images/delivery.d.ts +115 -0
  70. package/dist/images/delivery.d.ts.map +1 -0
  71. package/dist/images/delivery.js +321 -0
  72. package/dist/images/delivery.js.map +1 -0
  73. package/dist/images/index.d.ts +5 -0
  74. package/dist/images/index.d.ts.map +1 -0
  75. package/dist/images/index.js +5 -0
  76. package/dist/images/index.js.map +1 -0
  77. package/dist/images/prompt.d.ts +151 -0
  78. package/dist/images/prompt.d.ts.map +1 -0
  79. package/dist/images/prompt.js +172 -0
  80. package/dist/images/prompt.js.map +1 -0
  81. package/dist/images/vendor-files.d.ts +93 -0
  82. package/dist/images/vendor-files.d.ts.map +1 -0
  83. package/dist/images/vendor-files.js +156 -0
  84. package/dist/images/vendor-files.js.map +1 -0
  85. package/dist/in-process/conversation-store.d.ts +64 -0
  86. package/dist/in-process/conversation-store.d.ts.map +1 -0
  87. package/dist/in-process/conversation-store.js +222 -0
  88. package/dist/in-process/conversation-store.js.map +1 -0
  89. package/dist/in-process/coordination.d.ts +54 -0
  90. package/dist/in-process/coordination.d.ts.map +1 -0
  91. package/dist/in-process/coordination.js +137 -0
  92. package/dist/in-process/coordination.js.map +1 -0
  93. package/dist/in-process/image-source.d.ts +15 -0
  94. package/dist/in-process/image-source.d.ts.map +1 -0
  95. package/dist/in-process/image-source.js +27 -0
  96. package/dist/in-process/image-source.js.map +1 -0
  97. package/dist/in-process/index.d.ts +36 -0
  98. package/dist/in-process/index.d.ts.map +1 -0
  99. package/dist/in-process/index.js +37 -0
  100. package/dist/in-process/index.js.map +1 -0
  101. package/dist/in-process/question-store.d.ts +28 -0
  102. package/dist/in-process/question-store.d.ts.map +1 -0
  103. package/dist/in-process/question-store.js +122 -0
  104. package/dist/in-process/question-store.js.map +1 -0
  105. package/dist/in-process/run-store.d.ts +36 -0
  106. package/dist/in-process/run-store.d.ts.map +1 -0
  107. package/dist/in-process/run-store.js +81 -0
  108. package/dist/in-process/run-store.js.map +1 -0
  109. package/dist/in-process/session-store.d.ts +33 -0
  110. package/dist/in-process/session-store.d.ts.map +1 -0
  111. package/dist/in-process/session-store.js +93 -0
  112. package/dist/in-process/session-store.js.map +1 -0
  113. package/dist/in-process/stream-bus.d.ts +52 -0
  114. package/dist/in-process/stream-bus.d.ts.map +1 -0
  115. package/dist/in-process/stream-bus.js +200 -0
  116. package/dist/in-process/stream-bus.js.map +1 -0
  117. package/dist/in-process/vendor-file-cache.d.ts +11 -0
  118. package/dist/in-process/vendor-file-cache.d.ts.map +1 -0
  119. package/dist/in-process/vendor-file-cache.js +47 -0
  120. package/dist/in-process/vendor-file-cache.js.map +1 -0
  121. package/dist/index.d.ts +21 -0
  122. package/dist/index.d.ts.map +1 -0
  123. package/dist/index.js +21 -0
  124. package/dist/index.js.map +1 -0
  125. package/dist/loop/active-tick.registry.d.ts +31 -0
  126. package/dist/loop/active-tick.registry.d.ts.map +1 -0
  127. package/dist/loop/active-tick.registry.js +45 -0
  128. package/dist/loop/active-tick.registry.js.map +1 -0
  129. package/dist/loop/index.d.ts +6 -0
  130. package/dist/loop/index.d.ts.map +1 -0
  131. package/dist/loop/index.js +6 -0
  132. package/dist/loop/index.js.map +1 -0
  133. package/dist/loop/loop-driver.d.ts +127 -0
  134. package/dist/loop/loop-driver.d.ts.map +1 -0
  135. package/dist/loop/loop-driver.js +199 -0
  136. package/dist/loop/loop-driver.js.map +1 -0
  137. package/dist/loop/message-hub.d.ts +236 -0
  138. package/dist/loop/message-hub.d.ts.map +1 -0
  139. package/dist/loop/message-hub.js +439 -0
  140. package/dist/loop/message-hub.js.map +1 -0
  141. package/dist/loop/orphan-run.sweeper.d.ts +79 -0
  142. package/dist/loop/orphan-run.sweeper.d.ts.map +1 -0
  143. package/dist/loop/orphan-run.sweeper.js +145 -0
  144. package/dist/loop/orphan-run.sweeper.js.map +1 -0
  145. package/dist/loop/root-host.d.ts +51 -0
  146. package/dist/loop/root-host.d.ts.map +1 -0
  147. package/dist/loop/root-host.js +65 -0
  148. package/dist/loop/root-host.js.map +1 -0
  149. package/dist/ports/context-store.d.ts +69 -0
  150. package/dist/ports/context-store.d.ts.map +1 -0
  151. package/dist/ports/context-store.js +2 -0
  152. package/dist/ports/context-store.js.map +1 -0
  153. package/dist/ports/conversation-store.d.ts +144 -0
  154. package/dist/ports/conversation-store.d.ts.map +1 -0
  155. package/dist/ports/conversation-store.js +2 -0
  156. package/dist/ports/conversation-store.js.map +1 -0
  157. package/dist/ports/coordination.d.ts +76 -0
  158. package/dist/ports/coordination.d.ts.map +1 -0
  159. package/dist/ports/coordination.js +12 -0
  160. package/dist/ports/coordination.js.map +1 -0
  161. package/dist/ports/image-source.d.ts +26 -0
  162. package/dist/ports/image-source.d.ts.map +1 -0
  163. package/dist/ports/image-source.js +2 -0
  164. package/dist/ports/image-source.js.map +1 -0
  165. package/dist/ports/index.d.ts +11 -0
  166. package/dist/ports/index.d.ts.map +1 -0
  167. package/dist/ports/index.js +4 -0
  168. package/dist/ports/index.js.map +1 -0
  169. package/dist/ports/logger.d.ts +14 -0
  170. package/dist/ports/logger.d.ts.map +1 -0
  171. package/dist/ports/logger.js +23 -0
  172. package/dist/ports/logger.js.map +1 -0
  173. package/dist/ports/question-store.d.ts +91 -0
  174. package/dist/ports/question-store.d.ts.map +1 -0
  175. package/dist/ports/question-store.js +8 -0
  176. package/dist/ports/question-store.js.map +1 -0
  177. package/dist/ports/run-store.d.ts +66 -0
  178. package/dist/ports/run-store.d.ts.map +1 -0
  179. package/dist/ports/run-store.js +2 -0
  180. package/dist/ports/run-store.js.map +1 -0
  181. package/dist/ports/session-store.d.ts +72 -0
  182. package/dist/ports/session-store.d.ts.map +1 -0
  183. package/dist/ports/session-store.js +9 -0
  184. package/dist/ports/session-store.js.map +1 -0
  185. package/dist/ports/stream-bus.d.ts +52 -0
  186. package/dist/ports/stream-bus.d.ts.map +1 -0
  187. package/dist/ports/stream-bus.js +2 -0
  188. package/dist/ports/stream-bus.js.map +1 -0
  189. package/dist/ports/vendor-file-cache.d.ts +46 -0
  190. package/dist/ports/vendor-file-cache.d.ts.map +1 -0
  191. package/dist/ports/vendor-file-cache.js +2 -0
  192. package/dist/ports/vendor-file-cache.js.map +1 -0
  193. package/dist/schema/agent-event.d.ts +35 -0
  194. package/dist/schema/agent-event.d.ts.map +1 -0
  195. package/dist/schema/agent-event.js +46 -0
  196. package/dist/schema/agent-event.js.map +1 -0
  197. package/dist/schema/agent-run.d.ts +23 -0
  198. package/dist/schema/agent-run.d.ts.map +1 -0
  199. package/dist/schema/agent-run.js +37 -0
  200. package/dist/schema/agent-run.js.map +1 -0
  201. package/dist/schema/index.d.ts +4 -0
  202. package/dist/schema/index.d.ts.map +1 -0
  203. package/dist/schema/index.js +4 -0
  204. package/dist/schema/index.js.map +1 -0
  205. package/dist/schema/message-part.d.ts +73 -0
  206. package/dist/schema/message-part.d.ts.map +1 -0
  207. package/dist/schema/message-part.js +90 -0
  208. package/dist/schema/message-part.js.map +1 -0
  209. package/dist/subagent/delegate.tool.d.ts +145 -0
  210. package/dist/subagent/delegate.tool.d.ts.map +1 -0
  211. package/dist/subagent/delegate.tool.js +329 -0
  212. package/dist/subagent/delegate.tool.js.map +1 -0
  213. package/dist/subagent/index.d.ts +10 -0
  214. package/dist/subagent/index.d.ts.map +1 -0
  215. package/dist/subagent/index.js +10 -0
  216. package/dist/subagent/index.js.map +1 -0
  217. package/dist/subagent/milestone-body.d.ts +82 -0
  218. package/dist/subagent/milestone-body.d.ts.map +1 -0
  219. package/dist/subagent/milestone-body.js +112 -0
  220. package/dist/subagent/milestone-body.js.map +1 -0
  221. package/dist/subagent/output-scan.d.ts +14 -0
  222. package/dist/subagent/output-scan.d.ts.map +1 -0
  223. package/dist/subagent/output-scan.js +41 -0
  224. package/dist/subagent/output-scan.js.map +1 -0
  225. package/dist/subagent/registry-spawn-policy.d.ts +32 -0
  226. package/dist/subagent/registry-spawn-policy.d.ts.map +1 -0
  227. package/dist/subagent/registry-spawn-policy.js +48 -0
  228. package/dist/subagent/registry-spawn-policy.js.map +1 -0
  229. package/dist/subagent/roster-block.d.ts +45 -0
  230. package/dist/subagent/roster-block.d.ts.map +1 -0
  231. package/dist/subagent/roster-block.js +69 -0
  232. package/dist/subagent/roster-block.js.map +1 -0
  233. package/dist/subagent/situation-block.d.ts +16 -0
  234. package/dist/subagent/situation-block.d.ts.map +1 -0
  235. package/dist/subagent/situation-block.js +71 -0
  236. package/dist/subagent/situation-block.js.map +1 -0
  237. package/dist/subagent/spawn-guards.d.ts +32 -0
  238. package/dist/subagent/spawn-guards.d.ts.map +1 -0
  239. package/dist/subagent/spawn-guards.js +39 -0
  240. package/dist/subagent/spawn-guards.js.map +1 -0
  241. package/dist/subagent/subagent-registry.d.ts +150 -0
  242. package/dist/subagent/subagent-registry.d.ts.map +1 -0
  243. package/dist/subagent/subagent-registry.js +167 -0
  244. package/dist/subagent/subagent-registry.js.map +1 -0
  245. package/dist/subagent/subagent-sessions.d.ts +213 -0
  246. package/dist/subagent/subagent-sessions.d.ts.map +1 -0
  247. package/dist/subagent/subagent-sessions.js +295 -0
  248. package/dist/subagent/subagent-sessions.js.map +1 -0
  249. package/dist/testing/contracts.d.ts +37 -0
  250. package/dist/testing/contracts.d.ts.map +1 -0
  251. package/dist/testing/contracts.js +607 -0
  252. package/dist/testing/contracts.js.map +1 -0
  253. package/dist/testing/index.d.ts +5 -0
  254. package/dist/testing/index.d.ts.map +1 -0
  255. package/dist/testing/index.js +5 -0
  256. package/dist/testing/index.js.map +1 -0
  257. package/dist/testing/stub.d.ts +28 -0
  258. package/dist/testing/stub.d.ts.map +1 -0
  259. package/dist/testing/stub.js +3 -0
  260. package/dist/testing/stub.js.map +1 -0
  261. package/dist/tools/agent-tool.base.d.ts +186 -0
  262. package/dist/tools/agent-tool.base.d.ts.map +1 -0
  263. package/dist/tools/agent-tool.base.js +243 -0
  264. package/dist/tools/agent-tool.base.js.map +1 -0
  265. package/dist/tools/agent-tool.interface.d.ts +95 -0
  266. package/dist/tools/agent-tool.interface.d.ts.map +1 -0
  267. package/dist/tools/agent-tool.interface.js +2 -0
  268. package/dist/tools/agent-tool.interface.js.map +1 -0
  269. package/dist/tools/builtin-names.d.ts +18 -0
  270. package/dist/tools/builtin-names.d.ts.map +1 -0
  271. package/dist/tools/builtin-names.js +20 -0
  272. package/dist/tools/builtin-names.js.map +1 -0
  273. package/dist/tools/index.d.ts +9 -0
  274. package/dist/tools/index.d.ts.map +1 -0
  275. package/dist/tools/index.js +6 -0
  276. package/dist/tools/index.js.map +1 -0
  277. package/dist/tools/tool-definition.d.ts +18 -0
  278. package/dist/tools/tool-definition.d.ts.map +1 -0
  279. package/dist/tools/tool-definition.js +77 -0
  280. package/dist/tools/tool-definition.js.map +1 -0
  281. package/dist/tools/tool-meta.d.ts +55 -0
  282. package/dist/tools/tool-meta.d.ts.map +1 -0
  283. package/dist/tools/tool-meta.js +2 -0
  284. package/dist/tools/tool-meta.js.map +1 -0
  285. package/dist/tools/tool-registry.d.ts +190 -0
  286. package/dist/tools/tool-registry.d.ts.map +1 -0
  287. package/dist/tools/tool-registry.js +379 -0
  288. package/dist/tools/tool-registry.js.map +1 -0
  289. package/dist/tools/tool-result.d.ts +41 -0
  290. package/dist/tools/tool-result.d.ts.map +1 -0
  291. package/dist/tools/tool-result.js +19 -0
  292. package/dist/tools/tool-result.js.map +1 -0
  293. package/dist/tools/tool-wire.d.ts +24 -0
  294. package/dist/tools/tool-wire.d.ts.map +1 -0
  295. package/dist/tools/tool-wire.js +2 -0
  296. package/dist/tools/tool-wire.js.map +1 -0
  297. package/dist/turn/agent-runtime.d.ts +31 -0
  298. package/dist/turn/agent-runtime.d.ts.map +1 -0
  299. package/dist/turn/agent-runtime.js +30 -0
  300. package/dist/turn/agent-runtime.js.map +1 -0
  301. package/dist/turn/chunk-projection.d.ts +32 -0
  302. package/dist/turn/chunk-projection.d.ts.map +1 -0
  303. package/dist/turn/chunk-projection.js +62 -0
  304. package/dist/turn/chunk-projection.js.map +1 -0
  305. package/dist/turn/compaction.d.ts +48 -0
  306. package/dist/turn/compaction.d.ts.map +1 -0
  307. package/dist/turn/compaction.js +89 -0
  308. package/dist/turn/compaction.js.map +1 -0
  309. package/dist/turn/context-overflow.d.ts +11 -0
  310. package/dist/turn/context-overflow.d.ts.map +1 -0
  311. package/dist/turn/context-overflow.js +53 -0
  312. package/dist/turn/context-overflow.js.map +1 -0
  313. package/dist/turn/context-pressure.d.ts +100 -0
  314. package/dist/turn/context-pressure.d.ts.map +1 -0
  315. package/dist/turn/context-pressure.js +21 -0
  316. package/dist/turn/context-pressure.js.map +1 -0
  317. package/dist/turn/events-to-steps.d.ts +8 -0
  318. package/dist/turn/events-to-steps.d.ts.map +1 -0
  319. package/dist/turn/events-to-steps.js +64 -0
  320. package/dist/turn/events-to-steps.js.map +1 -0
  321. package/dist/turn/index.d.ts +17 -0
  322. package/dist/turn/index.d.ts.map +1 -0
  323. package/dist/turn/index.js +16 -0
  324. package/dist/turn/index.js.map +1 -0
  325. package/dist/turn/json-preview.d.ts +22 -0
  326. package/dist/turn/json-preview.d.ts.map +1 -0
  327. package/dist/turn/json-preview.js +34 -0
  328. package/dist/turn/json-preview.js.map +1 -0
  329. package/dist/turn/json-string-field.d.ts +30 -0
  330. package/dist/turn/json-string-field.d.ts.map +1 -0
  331. package/dist/turn/json-string-field.js +125 -0
  332. package/dist/turn/json-string-field.js.map +1 -0
  333. package/dist/turn/loop-reminder.d.ts +79 -0
  334. package/dist/turn/loop-reminder.d.ts.map +1 -0
  335. package/dist/turn/loop-reminder.js +0 -0
  336. package/dist/turn/loop-reminder.js.map +1 -0
  337. package/dist/turn/nul-safe.d.ts +21 -0
  338. package/dist/turn/nul-safe.d.ts.map +1 -0
  339. package/dist/turn/nul-safe.js +23 -0
  340. package/dist/turn/nul-safe.js.map +1 -0
  341. package/dist/turn/parts-from-events.d.ts +71 -0
  342. package/dist/turn/parts-from-events.d.ts.map +1 -0
  343. package/dist/turn/parts-from-events.js +217 -0
  344. package/dist/turn/parts-from-events.js.map +1 -0
  345. package/dist/turn/parts-to-model-messages.d.ts +158 -0
  346. package/dist/turn/parts-to-model-messages.d.ts.map +1 -0
  347. package/dist/turn/parts-to-model-messages.js +334 -0
  348. package/dist/turn/parts-to-model-messages.js.map +1 -0
  349. package/dist/turn/pending-work.d.ts +10 -0
  350. package/dist/turn/pending-work.d.ts.map +1 -0
  351. package/dist/turn/pending-work.js +14 -0
  352. package/dist/turn/pending-work.js.map +1 -0
  353. package/dist/turn/provider-error.d.ts +45 -0
  354. package/dist/turn/provider-error.d.ts.map +1 -0
  355. package/dist/turn/provider-error.js +154 -0
  356. package/dist/turn/provider-error.js.map +1 -0
  357. package/dist/turn/tool-input-preview.d.ts +94 -0
  358. package/dist/turn/tool-input-preview.d.ts.map +1 -0
  359. package/dist/turn/tool-input-preview.js +143 -0
  360. package/dist/turn/tool-input-preview.js.map +1 -0
  361. package/dist/turn/tool-input-progress.d.ts +47 -0
  362. package/dist/turn/tool-input-progress.d.ts.map +1 -0
  363. package/dist/turn/tool-input-progress.js +50 -0
  364. package/dist/turn/tool-input-progress.js.map +1 -0
  365. package/dist/turn/turn-envelope.d.ts +184 -0
  366. package/dist/turn/turn-envelope.d.ts.map +1 -0
  367. package/dist/turn/turn-envelope.js +2 -0
  368. package/dist/turn/turn-envelope.js.map +1 -0
  369. package/dist/turn/turn-journal.d.ts +49 -0
  370. package/dist/turn/turn-journal.d.ts.map +1 -0
  371. package/dist/turn/turn-journal.js +51 -0
  372. package/dist/turn/turn-journal.js.map +1 -0
  373. package/dist/turn/turn-run.d.ts +487 -0
  374. package/dist/turn/turn-run.d.ts.map +1 -0
  375. package/dist/turn/turn-run.js +1167 -0
  376. package/dist/turn/turn-run.js.map +1 -0
  377. package/dist/turn/usage.d.ts +27 -0
  378. package/dist/turn/usage.d.ts.map +1 -0
  379. package/dist/turn/usage.js +51 -0
  380. package/dist/turn/usage.js.map +1 -0
  381. package/package.json +59 -3
  382. package/src/agent-extensions.ts +33 -0
  383. package/src/builtins/ask-outcome.ts +168 -0
  384. package/src/builtins/ask-schema.ts +186 -0
  385. package/src/builtins/ask.service.ts +482 -0
  386. package/src/builtins/ask.tool.ts +138 -0
  387. package/src/builtins/index.ts +25 -0
  388. package/src/builtins/todo-schema.ts +108 -0
  389. package/src/builtins/todo-settle.hook.ts +221 -0
  390. package/src/builtins/todo.tool.ts +134 -0
  391. package/src/context/context-budget-tracker.ts +519 -0
  392. package/src/context/context-budget.ts +124 -0
  393. package/src/context/index.ts +17 -0
  394. package/src/extensions/repeat-call.hook.ts +77 -0
  395. package/src/hooks/index.ts +19 -0
  396. package/src/hooks/turn-hook.registry.ts +307 -0
  397. package/src/hooks/turn-hook.types.ts +210 -0
  398. package/src/images/byte-cache.ts +61 -0
  399. package/src/images/delivery.ts +508 -0
  400. package/src/images/index.ts +35 -0
  401. package/src/images/prompt.ts +289 -0
  402. package/src/images/vendor-files.ts +235 -0
  403. package/src/in-process/conversation-store.ts +304 -0
  404. package/src/in-process/coordination.ts +177 -0
  405. package/src/in-process/image-source.ts +29 -0
  406. package/src/in-process/index.ts +52 -0
  407. package/src/in-process/question-store.ts +155 -0
  408. package/src/in-process/run-store.ts +115 -0
  409. package/src/in-process/session-store.ts +118 -0
  410. package/src/in-process/stream-bus.ts +244 -0
  411. package/src/in-process/vendor-file-cache.ts +67 -0
  412. package/src/index.ts +28 -0
  413. package/src/loop/active-tick.registry.ts +49 -0
  414. package/src/loop/index.ts +25 -0
  415. package/src/loop/loop-driver.ts +275 -0
  416. package/src/loop/message-hub.ts +532 -0
  417. package/src/loop/orphan-run.sweeper.ts +204 -0
  418. package/src/loop/root-host.ts +119 -0
  419. package/src/ports/context-store.ts +71 -0
  420. package/src/ports/conversation-store.ts +165 -0
  421. package/src/ports/coordination.ts +81 -0
  422. package/src/ports/image-source.ts +26 -0
  423. package/src/ports/index.ts +56 -0
  424. package/src/ports/logger.ts +34 -0
  425. package/src/ports/question-store.ts +117 -0
  426. package/src/ports/run-store.ts +69 -0
  427. package/src/ports/session-store.ts +80 -0
  428. package/src/ports/stream-bus.ts +59 -0
  429. package/src/ports/vendor-file-cache.ts +54 -0
  430. package/src/schema/agent-event.ts +69 -0
  431. package/src/schema/agent-run.ts +44 -0
  432. package/src/schema/index.ts +25 -0
  433. package/src/schema/message-part.ts +100 -0
  434. package/src/subagent/delegate.tool.ts +476 -0
  435. package/src/subagent/index.ts +63 -0
  436. package/src/subagent/milestone-body.ts +144 -0
  437. package/src/subagent/output-scan.ts +56 -0
  438. package/src/subagent/registry-spawn-policy.ts +85 -0
  439. package/src/subagent/roster-block.ts +103 -0
  440. package/src/subagent/situation-block.ts +83 -0
  441. package/src/subagent/spawn-guards.ts +54 -0
  442. package/src/subagent/subagent-registry.ts +283 -0
  443. package/src/subagent/subagent-sessions.ts +496 -0
  444. package/src/testing/contracts.ts +882 -0
  445. package/src/testing/index.ts +14 -0
  446. package/src/testing/stub.ts +28 -0
  447. package/src/tools/agent-tool.base.ts +361 -0
  448. package/src/tools/agent-tool.interface.ts +101 -0
  449. package/src/tools/builtin-names.ts +26 -0
  450. package/src/tools/index.ts +39 -0
  451. package/src/tools/tool-definition.ts +93 -0
  452. package/src/tools/tool-meta.ts +60 -0
  453. package/src/tools/tool-registry.ts +513 -0
  454. package/src/tools/tool-result.ts +45 -0
  455. package/src/tools/tool-wire.ts +24 -0
  456. package/src/turn/agent-runtime.ts +43 -0
  457. package/src/turn/chunk-projection.ts +81 -0
  458. package/src/turn/compaction.ts +103 -0
  459. package/src/turn/context-overflow.ts +54 -0
  460. package/src/turn/context-pressure.ts +114 -0
  461. package/src/turn/events-to-steps.ts +73 -0
  462. package/src/turn/index.ts +71 -0
  463. package/src/turn/json-preview.ts +36 -0
  464. package/src/turn/json-string-field.ts +134 -0
  465. package/src/turn/loop-reminder.ts +0 -0
  466. package/src/turn/nul-safe.ts +22 -0
  467. package/src/turn/parts-from-events.ts +248 -0
  468. package/src/turn/parts-to-model-messages.ts +428 -0
  469. package/src/turn/pending-work.ts +14 -0
  470. package/src/turn/provider-error.ts +160 -0
  471. package/src/turn/tool-input-preview.ts +223 -0
  472. package/src/turn/tool-input-progress.ts +76 -0
  473. package/src/turn/turn-envelope.ts +185 -0
  474. package/src/turn/turn-journal.ts +102 -0
  475. package/src/turn/turn-run.ts +1479 -0
  476. package/src/turn/usage.ts +56 -0
  477. package/README.md +0 -3
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ /** 跑次(一次 agent 执行,根或子)的状态。 */
3
+ export declare const AGENT_RUN_STATUSES: readonly ["running", "completed", "aborted", "rejected", "failed"];
4
+ export type AgentRunStatus = (typeof AGENT_RUN_STATUSES)[number];
5
+ /** 一轮为什么停下。 */
6
+ export declare const STOP_REASONS: readonly ["stop", "max-steps", "timeout", "aborted", "api-error", "rejected-by-hook", "blocked-by-hook", "error"];
7
+ export type StopReason = (typeof STOP_REASONS)[number];
8
+ /** 步级明细(随跑次一起存,不另开子表)。 */
9
+ export declare const AgentRunStepEntrySchema: z.ZodObject<{
10
+ index: z.ZodNumber;
11
+ text: z.ZodOptional<z.ZodString>;
12
+ toolCalls: z.ZodDefault<z.ZodArray<z.ZodObject<{
13
+ toolCallId: z.ZodString;
14
+ toolName: z.ZodString;
15
+ input: z.ZodUnknown;
16
+ output: z.ZodOptional<z.ZodUnknown>;
17
+ ok: z.ZodOptional<z.ZodBoolean>;
18
+ durationMs: z.ZodOptional<z.ZodNumber>;
19
+ }, z.core.$strip>>>;
20
+ usage: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
21
+ }, z.core.$strip>;
22
+ export type AgentRunStepEntry = z.infer<typeof AgentRunStepEntrySchema>;
23
+ //# sourceMappingURL=agent-run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-run.d.ts","sourceRoot":"","sources":["../../src/schema/agent-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8BAA8B;AAC9B,eAAO,MAAM,kBAAkB,oEAMrB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE,eAAe;AACf,eAAO,MAAM,YAAY,mHASf,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,0BAA0B;AAC1B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;iBAgBlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { z } from 'zod';
2
+ /** 跑次(一次 agent 执行,根或子)的状态。 */
3
+ export const AGENT_RUN_STATUSES = [
4
+ 'running',
5
+ 'completed',
6
+ 'aborted',
7
+ 'rejected',
8
+ 'failed',
9
+ ];
10
+ /** 一轮为什么停下。 */
11
+ export const STOP_REASONS = [
12
+ 'stop',
13
+ 'max-steps',
14
+ 'timeout',
15
+ 'aborted',
16
+ 'api-error',
17
+ 'rejected-by-hook',
18
+ 'blocked-by-hook',
19
+ 'error',
20
+ ];
21
+ /** 步级明细(随跑次一起存,不另开子表)。 */
22
+ export const AgentRunStepEntrySchema = z.object({
23
+ index: z.number().int(),
24
+ text: z.string().optional(),
25
+ toolCalls: z
26
+ .array(z.object({
27
+ toolCallId: z.string(),
28
+ toolName: z.string(),
29
+ input: z.unknown(),
30
+ output: z.unknown().optional(),
31
+ ok: z.boolean().optional(),
32
+ durationMs: z.number().optional(),
33
+ }))
34
+ .default([]),
35
+ usage: z.record(z.string(), z.number()).optional(),
36
+ });
37
+ //# sourceMappingURL=agent-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-run.js","sourceRoot":"","sources":["../../src/schema/agent-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8BAA8B;AAC9B,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,SAAS;IACT,WAAW;IACX,SAAS;IACT,UAAU;IACV,QAAQ;CACA,CAAC;AAGX,eAAe;AACf,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,MAAM;IACN,WAAW;IACX,SAAS;IACT,SAAS;IACT,WAAW;IACX,kBAAkB;IAClB,iBAAiB;IACjB,OAAO;CACC,CAAC;AAGX,0BAA0B;AAC1B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,SAAS,EAAE,CAAC;SACT,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;QAClB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAC9B,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAC1B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC,CACH;SACA,OAAO,CAAC,EAAE,CAAC;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { AGENT_EVENT_TYPES, type AgentEvent, type AgentEventType, createSeqCounter, } from './agent-event.js';
2
+ export { AGENT_RUN_STATUSES, type AgentRunStatus, type AgentRunStepEntry, AgentRunStepEntrySchema, STOP_REASONS, type StopReason, } from './agent-run.js';
3
+ export { COMPACTION_CHECKPOINT_KIND, LOOP_REMINDER_KIND, type MessagePart, MessagePartSchema, type PartProviderMetadata, PartProviderMetadataSchema, TODO_REMINDER_KIND, type ToolResultImage, ToolResultImageSchema, } from './message-part.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,uBAAuB,EACvB,YAAY,EACZ,KAAK,UAAU,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,KAAK,WAAW,EAChB,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,KAAK,eAAe,EACpB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { AGENT_EVENT_TYPES, createSeqCounter, } from './agent-event.js';
2
+ export { AGENT_RUN_STATUSES, AgentRunStepEntrySchema, STOP_REASONS, } from './agent-run.js';
3
+ export { COMPACTION_CHECKPOINT_KIND, LOOP_REMINDER_KIND, MessagePartSchema, PartProviderMetadataSchema, TODO_REMINDER_KIND, ToolResultImageSchema, } from './message-part.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAGjB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAGlB,uBAAuB,EACvB,YAAY,GAEb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAElB,iBAAiB,EAEjB,0BAA0B,EAC1B,kBAAkB,EAElB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * 落库消息的数据模型。搬自 agent-base `@ab/shared` 的 `schemas/agent.ts`(2026-11-11),
4
+ * 判据注释保留要点;改动:`ToolResultImage.src` 从 uuid 放宽为不透明字符串
5
+ * (字节存哪由宿主的 `ImageSource` 端口决定,runtime 不认识存储中心)。
6
+ *
7
+ * 刻意与 AI SDK 的 UIMessage.parts 不同:tool-call 与 tool-result 拆成两个 part
8
+ * (SDK 是合并态的 `tool-${name}`)。拆分格式厂商无关、不受 SDK 版本内部形状变化影响。
9
+ */
10
+ /**
11
+ * 一张交给模型看的图(tool-result part 的 `images[]` 元素)。
12
+ *
13
+ * 库里只有 `src`,没有字节:投影层按它发一个引用,字节在请求前由图片递送解析
14
+ * (Files API / 公网 URL / base64 三档)。「模型看得见的一切都必须能从库里重建」,
15
+ * 所以 `src` 指向的内容必须不可变(换内容就是新的 `src`)。
16
+ */
17
+ export declare const ToolResultImageSchema: z.ZodObject<{
18
+ src: z.ZodString;
19
+ mediaType: z.ZodString;
20
+ path: z.ZodOptional<z.ZodString>;
21
+ bytes: z.ZodOptional<z.ZodNumber>;
22
+ width: z.ZodOptional<z.ZodNumber>;
23
+ height: z.ZodOptional<z.ZodNumber>;
24
+ origin: z.ZodOptional<z.ZodString>;
25
+ }, z.core.$strip>;
26
+ export type ToolResultImage = z.infer<typeof ToolResultImageSchema>;
27
+ /** 落库 part 上的厂商 metadata:与 providerOptions 同形(命名空间 → JSON 对象)。 */
28
+ export declare const PartProviderMetadataSchema: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
29
+ export type PartProviderMetadata = z.infer<typeof PartProviderMetadataSchema>;
30
+ export declare const MessagePartSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
31
+ type: z.ZodLiteral<"text">;
32
+ text: z.ZodString;
33
+ }, z.core.$strip>, z.ZodObject<{
34
+ type: z.ZodLiteral<"reasoning">;
35
+ text: z.ZodString;
36
+ durationMs: z.ZodOptional<z.ZodNumber>;
37
+ }, z.core.$strip>, z.ZodObject<{
38
+ type: z.ZodLiteral<"tool-call">;
39
+ toolCallId: z.ZodString;
40
+ toolName: z.ZodString;
41
+ input: z.ZodUnknown;
42
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
43
+ }, z.core.$strip>, z.ZodObject<{
44
+ type: z.ZodLiteral<"tool-result">;
45
+ toolCallId: z.ZodString;
46
+ toolName: z.ZodString;
47
+ output: z.ZodUnknown;
48
+ isError: z.ZodOptional<z.ZodBoolean>;
49
+ systemNote: z.ZodOptional<z.ZodString>;
50
+ ref: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
51
+ images: z.ZodOptional<z.ZodArray<z.ZodObject<{
52
+ src: z.ZodString;
53
+ mediaType: z.ZodString;
54
+ path: z.ZodOptional<z.ZodString>;
55
+ bytes: z.ZodOptional<z.ZodNumber>;
56
+ width: z.ZodOptional<z.ZodNumber>;
57
+ height: z.ZodOptional<z.ZodNumber>;
58
+ origin: z.ZodOptional<z.ZodString>;
59
+ }, z.core.$strip>>>;
60
+ pinned: z.ZodOptional<z.ZodBoolean>;
61
+ }, z.core.$strip>], "type">;
62
+ export type MessagePart = z.infer<typeof MessagePartSchema>;
63
+ /**
64
+ * 宿主往会话里塞的几种 user 行的标记(写在消息行 metadata 的 `kind` 上)。
65
+ * 落库存纯正文,围栏只在投影期拼;前端按它渲成系统标记而不是用户气泡。
66
+ */
67
+ /** 上下文压缩产生的 checkpoint 行。 */
68
+ export declare const COMPACTION_CHECKPOINT_KIND = "compaction-checkpoint";
69
+ /** 旧式重复调用提醒行(新的挂在 tool-result 的 `systemNote` 上;历史行仍要认得)。 */
70
+ export declare const LOOP_REMINDER_KIND = "loop-reminder";
71
+ /** 待办结账提醒行。 */
72
+ export declare const TODO_REMINDER_KIND = "todo-reminder";
73
+ //# sourceMappingURL=message-part.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-part.d.ts","sourceRoot":"","sources":["../../src/schema/message-part.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;GAOG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;iBAchC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,kEAAkE;AAClE,eAAO,MAAM,0BAA0B,qEAGtC,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA6C5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;;GAGG;AACH,6BAA6B;AAC7B,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAClE,4DAA4D;AAC5D,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAClD,eAAe;AACf,eAAO,MAAM,kBAAkB,kBAAkB,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * 落库消息的数据模型。搬自 agent-base `@ab/shared` 的 `schemas/agent.ts`(2026-11-11),
4
+ * 判据注释保留要点;改动:`ToolResultImage.src` 从 uuid 放宽为不透明字符串
5
+ * (字节存哪由宿主的 `ImageSource` 端口决定,runtime 不认识存储中心)。
6
+ *
7
+ * 刻意与 AI SDK 的 UIMessage.parts 不同:tool-call 与 tool-result 拆成两个 part
8
+ * (SDK 是合并态的 `tool-${name}`)。拆分格式厂商无关、不受 SDK 版本内部形状变化影响。
9
+ */
10
+ /**
11
+ * 一张交给模型看的图(tool-result part 的 `images[]` 元素)。
12
+ *
13
+ * 库里只有 `src`,没有字节:投影层按它发一个引用,字节在请求前由图片递送解析
14
+ * (Files API / 公网 URL / base64 三档)。「模型看得见的一切都必须能从库里重建」,
15
+ * 所以 `src` 指向的内容必须不可变(换内容就是新的 `src`)。
16
+ */
17
+ export const ToolResultImageSchema = z.object({
18
+ /** 字节的不可变身份(内容寻址的对象 id 等),由宿主的 `ImageSource` 解析。 */
19
+ src: z.string().min(1),
20
+ /** **完整子类型**(`image/jpeg`),不是顶层段 `image`。 */
21
+ mediaType: z.string(),
22
+ /** 进入对话那一刻在工作区的路径(之后可能被移走,只作提示)。 */
23
+ path: z.string().optional(),
24
+ /** 归一化后的字节数。 */
25
+ bytes: z.number().int().nonnegative().optional(),
26
+ /** 归一化后的像素尺寸。 */
27
+ width: z.number().int().positive().optional(),
28
+ height: z.number().int().positive().optional(),
29
+ /** 原始像素尺寸 `"3000x2000"`,**只在真的缩过时写**(模型据此换算坐标)。 */
30
+ origin: z.string().optional(),
31
+ });
32
+ /** 落库 part 上的厂商 metadata:与 providerOptions 同形(命名空间 → JSON 对象)。 */
33
+ export const PartProviderMetadataSchema = z.record(z.string(), z.record(z.string(), z.json()));
34
+ export const MessagePartSchema = z.discriminatedUnion('type', [
35
+ z.object({ type: z.literal('text'), text: z.string() }),
36
+ z.object({
37
+ type: z.literal('reasoning'),
38
+ text: z.string(),
39
+ /**
40
+ * 这一段思考产出了多久(毫秒):第一个 `reasoning-delta` 到最后一个。
41
+ * 不取「请求发出」为起点(那段里有网络与排队)。可空:拿不到时间的路径没有它。
42
+ */
43
+ durationMs: z.number().int().nonnegative().optional(),
44
+ }),
45
+ z.object({
46
+ type: z.literal('tool-call'),
47
+ toolCallId: z.string(),
48
+ toolName: z.string(),
49
+ input: z.unknown(),
50
+ /**
51
+ * 厂商要求原样回传的不透明数据(Gemini 的思考签名),重放时作为这条 tool-call 的
52
+ * `providerOptions` 发回。**只存模型句柄 `replayedMetadataKeys` 声明的命名空间**:
53
+ * 别家的 metadata 原样回放会改变它们的请求形状。
54
+ */
55
+ providerMetadata: PartProviderMetadataSchema.optional(),
56
+ }),
57
+ z.object({
58
+ type: z.literal('tool-result'),
59
+ toolCallId: z.string(),
60
+ toolName: z.string(),
61
+ /** **渲染后的文本**(给人看,也是给模型看的那份),不存结构化结果。 */
62
+ output: z.unknown(),
63
+ isError: z.boolean().optional(),
64
+ /**
65
+ * 平台针对这一次调用追加的系统提示(如重复调用提醒)。与 `output` 分开存,
66
+ * 拼接只在投影期发生;不影响 `isError`。
67
+ */
68
+ systemNote: z.string().optional(),
69
+ /** 给程序认领实体用的最小结构化引用(如子 Agent 的会话 handle),由工具提供。 */
70
+ ref: z.record(z.string(), z.unknown()).optional(),
71
+ /** 这次调用交给模型看的图片(只有 `src`,见 `ToolResultImageSchema`)。 */
72
+ images: z.array(ToolResultImageSchema).optional(),
73
+ /**
74
+ * 上下文裁剪**不许**把这条结果的正文换成存根(如用户对提问的回答:短、且丢了
75
+ * 无从重得)。由工具声明,随结果落库。整行压缩不受它约束。
76
+ */
77
+ pinned: z.boolean().optional(),
78
+ }),
79
+ ]);
80
+ /**
81
+ * 宿主往会话里塞的几种 user 行的标记(写在消息行 metadata 的 `kind` 上)。
82
+ * 落库存纯正文,围栏只在投影期拼;前端按它渲成系统标记而不是用户气泡。
83
+ */
84
+ /** 上下文压缩产生的 checkpoint 行。 */
85
+ export const COMPACTION_CHECKPOINT_KIND = 'compaction-checkpoint';
86
+ /** 旧式重复调用提醒行(新的挂在 tool-result 的 `systemNote` 上;历史行仍要认得)。 */
87
+ export const LOOP_REMINDER_KIND = 'loop-reminder';
88
+ /** 待办结账提醒行。 */
89
+ export const TODO_REMINDER_KIND = 'todo-reminder';
90
+ //# sourceMappingURL=message-part.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-part.js","sourceRoot":"","sources":["../../src/schema/message-part.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ import { z } from 'zod';
2
+ import { type SubagentAwaitLease } from '../ports/coordination.js';
3
+ import { type LoggerFactory } from '../ports/logger.js';
4
+ import { AgentTool, type ToolAccepted } from '../tools/agent-tool.base.js';
5
+ import type { ToolContext } from '../tools/agent-tool.interface.js';
6
+ import type { ToolMeta } from '../tools/tool-meta.js';
7
+ import type { ToolRegistry } from '../tools/tool-registry.js';
8
+ import { type ToolOut } from '../tools/tool-result.js';
9
+ import type { SubagentSessions } from './subagent-sessions.js';
10
+ /**
11
+ * 同步等待缺省上限。**到点不算失败**:父放弃等待、拿到 handle,子照常跑完并把结论回投
12
+ * inbox。选小了的代价是「同步退化成异步」,不是丢结果——它只在子真的卡死时把父放出来
13
+ * (兜底扫描只在启动时跑,不设上限的话父就陪着泄漏的子一起挂到重启)。
14
+ */
15
+ export declare const DELEGATE_SYNC_WAIT_MS: number;
16
+ /** 轮询间隔。判据是子会话行上的游标,一次读而已。 */
17
+ export declare const DELEGATE_POLL_INTERVAL_MS = 1500;
18
+ declare const InputSchema: z.ZodObject<{
19
+ agentType: z.ZodOptional<z.ZodString>;
20
+ handle: z.ZodOptional<z.ZodString>;
21
+ title: z.ZodString;
22
+ prompt: z.ZodString;
23
+ }, z.core.$strip>;
24
+ type Input = z.infer<typeof InputSchema>;
25
+ /**
26
+ * 同步模式的返回:子 Agent 这一轮的完整产出。与回投 inbox 的那份**同源**
27
+ * (`SubagentSessions.buildResult`),包括中和处理。
28
+ */
29
+ interface Out {
30
+ handle: string;
31
+ body: string;
32
+ status: string;
33
+ stopReason: string | null;
34
+ /** 宿主在派生时给的说明(`SpawnPolicy.onSubagentCreated`),拼在回执最前面。只在有时出现。 */
35
+ notes?: string[];
36
+ }
37
+ /** 后台受理的回执也要带上派生时的说明。 */
38
+ type DelegateAccepted = ToolAccepted & {
39
+ notes?: string[];
40
+ };
41
+ /** `Delegate` 的登记信息(说明里的等待上限随入参)。 */
42
+ export declare function delegateToolMeta(syncWaitMs?: number): ToolMeta;
43
+ export interface DelegateToolDeps {
44
+ subagents: SubagentSessions;
45
+ awaitLease: SubagentAwaitLease;
46
+ /** 缺省 `DELEGATE_SYNC_WAIT_MS`。 */
47
+ syncWaitMs?: number;
48
+ /** 缺省 `DELEGATE_POLL_INTERVAL_MS`。 */
49
+ pollIntervalMs?: number;
50
+ /** 租约续租间隔,缺省 `AWAIT_RENEW_INTERVAL_MS`。 */
51
+ renewIntervalMs?: number;
52
+ /** 深度上限,缺省 `MAX_SUBAGENT_DEPTH`(与 `canDelegate` 用同一个值)。 */
53
+ maxDepth?: number;
54
+ logger?: LoggerFactory;
55
+ }
56
+ /**
57
+ * 子 Agent 的唯一入口(原 agent-base `SpawnAgent`):**派生一个新的**(给 `agentType`),
58
+ * 或**给已经派生过的追加任务**(给 `handle`)。一个工具、一个参数区分。
59
+ *
60
+ * 两种模式的分歧只在起跑段(新建:问宿主、占名额、建会话;追加:校验归属、投一条消息),
61
+ * 之后完全一样——等子跑到 idle 终态、取这一轮的产出、包围栏、等不到就降级转后台。
62
+ *
63
+ * 追加任务不是「重新派生一个」:子会话的完整历史都在,重新派生等于让一个全新的子从零读
64
+ * 一遍需求、父还得把初稿全文复述给它。
65
+ *
66
+ * 同步与异步是同一条实现:子会话都是独立持久跑的(会话行 + inbox + loop + 兜底扫描),
67
+ * 区别只在父等不等。所以这里覆盖 `runInBackground`,不用基类那个进程内 fire-and-forget
68
+ * (重启即丢)。
69
+ */
70
+ export declare class DelegateTool extends AgentTool<Input, Out> {
71
+ private readonly deps;
72
+ readonly inputSchema: z.ZodObject<{
73
+ agentType: z.ZodOptional<z.ZodString>;
74
+ handle: z.ZodOptional<z.ZodString>;
75
+ title: z.ZodString;
76
+ prompt: z.ZodString;
77
+ }, z.core.$strip>;
78
+ protected readonly supportsBackground = true;
79
+ /**
80
+ * 比同步等待上限大一档:等待器到点会走**优雅降级**(返回 handle,告诉模型转后台了),
81
+ * 基类那道 race 只会给一句没信息量的超时,还把子的结果变成孤儿。这一层赢了说明等待器
82
+ * 自己有 bug。
83
+ */
84
+ protected readonly timeoutMs: number;
85
+ private readonly logger;
86
+ private readonly syncWaitMs;
87
+ private readonly pollIntervalMs;
88
+ private readonly renewIntervalMs;
89
+ private readonly maxDepth;
90
+ constructor(deps: DelegateToolDeps);
91
+ /** 同步:让子跑起来 → 等它到达 idle 终态 → 返回这一轮的产出。 */
92
+ protected run(input: Input, ctx: ToolContext): Promise<ToolOut<Out> | ToolAccepted>;
93
+ /** 异步:让子跑起来即返 handle,回投交给收尾。 */
94
+ protected runInBackground(input: Input, ctx: ToolContext): Promise<ToolOut<Out> | ToolAccepted>;
95
+ /**
96
+ * 两种模式共用的起跑段:返回 handle 与**这一轮开始前**的游标(null = 子从未 settle 过)。
97
+ * 它同时是同步等待的判据起点与取产出的起点,故父拿到的恒是「这一轮新说的话」。
98
+ */
99
+ private start;
100
+ /**
101
+ * 新建。深度守卫:触顶时本工具已从工具集摘掉(`canDelegate`),这里再挡一次。**只挡
102
+ * 新建**——触顶的那一层从来没派生过任何子,不可能持有 handle。
103
+ */
104
+ private startSpawn;
105
+ /**
106
+ * 追加任务:校验归属 → (同步模式)拿租约 → 投递。三步的顺序都是必须的:
107
+ *
108
+ * - **校验先于租约**:给一个不属于本父的会话种下租约,会让真正在等它的父被收尾跳过
109
+ * 投递——一次静默丢失的回执。
110
+ * - **租约先于投递**:反过来的话子可能在父开始等之前就跑完,收尾拿不到租约便回投
111
+ * inbox,父随后又同步取一份——双份回执。
112
+ * - **游标读在投递之前**:投递后再读可能读到子已经推进过的新值,父会拿着上一轮的结果
113
+ * 立刻返回。
114
+ */
115
+ private startFollowUp;
116
+ /**
117
+ * 轮询到子的游标越过 `cursorBefore`。false = 没等到(超时或中止)。判据取游标而非「子有没有
118
+ * 新消息」:游标是收尾的 CAS 写的,它一推进就意味着收尾已经走过 claim——父此刻去取产物,
119
+ * 绝不会与「收尾正打算投 inbox」撞车。
120
+ */
121
+ private waitForChild;
122
+ private collect;
123
+ /**
124
+ * 产出包围栏,与异步路径(`MessageHub.take` 取出回执时包的那道)逐字同源:子的产出是
125
+ * 不可信外部输入,裸拼的话正文与它之后的平台文案在字节层面无从区分。
126
+ */
127
+ protected render(out: {
128
+ kind: 'ok';
129
+ } & Out): string;
130
+ /**
131
+ * 子会话 id 单独落进 `MessagePart.ref`——界面的子 Agent 卡靠它取状态、下钻、停止。
132
+ * **三种「子已经在跑」的形态都给**(同步跑完 / 后台受理 / 等待降级),只有真正没跑起来
133
+ * 的才没有。没有它前端只能拿正则从文本里抠 id,文案一改就静默失效。
134
+ */
135
+ protected persistRef(out: ToolOut<Out> | ToolAccepted): Record<string, unknown> | undefined;
136
+ /**
137
+ * 降级文案**必须是 accepted 不是 error**:子此刻正常在跑,结论稍后照样回投。用 error
138
+ * 表达会让界面把一个跑得好好的子 Agent 画成失败。
139
+ */
140
+ protected renderAccepted(out: DelegateAccepted): string;
141
+ }
142
+ /** 登记 `Delegate`。 */
143
+ export declare function registerDelegateTool(tools: ToolRegistry, deps: DelegateToolDeps): DelegateTool;
144
+ export {};
145
+ //# sourceMappingURL=delegate.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate.tool.d.ts","sourceRoot":"","sources":["../../src/subagent/delegate.tool.ts"],"names":[],"mappings":"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"}