@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,167 @@
1
+ import { DESC_LIMIT } from './roster-block.js';
2
+ /**
3
+ * 内置子 Agent 注册表:宿主显式 `register`(以前靠 Nest 装饰器 + DiscoveryService 扫)。
4
+ * 名字重复、旧名冲突、说明过长、两个互斥标记同标都在注册期抛。
5
+ *
6
+ * 花名册顺序 = 注册顺序。
7
+ */
8
+ export class SubagentRegistry {
9
+ options;
10
+ byName = new Map();
11
+ /** 旧名 → 现名。 */
12
+ aliases = new Map();
13
+ labelMax;
14
+ constructor(options = {}) {
15
+ this.options = options;
16
+ this.labelMax = options.labelMax ?? 20;
17
+ }
18
+ register(meta, provider) {
19
+ const { name } = meta;
20
+ if (this.byName.has(name) || this.aliases.has(name)) {
21
+ throw new Error(`duplicate subagent name '${name}'`);
22
+ }
23
+ // 花名册每行只显示前 DESC_LIMIT 个码点。说明是我们写的,写长了就是一段没人看得见
24
+ // 的交代——逼着把「何时派、交回什么」写进前 60 字。
25
+ if (Array.from(meta.description.trim()).length > DESC_LIMIT) {
26
+ throw new Error(`subagent '${name}' description exceeds ${DESC_LIMIT} code points (the roster cuts the rest)`);
27
+ }
28
+ const labelLength = Array.from(meta.label.trim()).length;
29
+ if (labelLength === 0 || labelLength > this.labelMax) {
30
+ throw new Error(`subagent '${name}' label must be 1..${this.labelMax} code points`);
31
+ }
32
+ if (meta.permission && meta.optIn) {
33
+ throw new Error(`subagent '${name}' declares both permission and optIn`);
34
+ }
35
+ for (const former of meta.formerNames ?? []) {
36
+ if (former === name || this.byName.has(former)) {
37
+ throw new Error(`subagent former name '${former}' is also a current name`);
38
+ }
39
+ if (this.aliases.has(former)) {
40
+ throw new Error(`subagent former name '${former}' is claimed twice`);
41
+ }
42
+ }
43
+ this.options.validate?.(meta);
44
+ for (const former of meta.formerNames ?? []) {
45
+ this.aliases.set(former, name);
46
+ }
47
+ this.byName.set(name, provider ? { meta, provider } : { meta });
48
+ }
49
+ /** 现名(认旧名);没登记过返回 null。不看可用性。 */
50
+ currentName(name) {
51
+ if (this.byName.has(name))
52
+ return name;
53
+ return this.aliases.get(name) ?? null;
54
+ }
55
+ /** 这个名字(含旧名)的定义;没有或此刻不可用返回 null。 */
56
+ get(name) {
57
+ const current = this.currentName(name);
58
+ if (current === null)
59
+ return null;
60
+ const entry = this.byName.get(current);
61
+ return entry && this.available(entry) ? entry.meta : null;
62
+ }
63
+ /** 此刻可用的全部定义(注册顺序)。 */
64
+ list() {
65
+ return [...this.byName.values()]
66
+ .filter(e => this.available(e))
67
+ .map(e => e.meta);
68
+ }
69
+ /** 注册过的全部定义(含此刻不可用的),带可用性。后台页用。 */
70
+ listAll() {
71
+ return [...this.byName.values()].map(e => ({
72
+ meta: e.meta,
73
+ available: this.available(e),
74
+ }));
75
+ }
76
+ /**
77
+ * 注册过的全部现名,**不看可用性**。给「名字不许与内置子 Agent 撞」这类静态判断用:
78
+ * 按 `list()` 判的话,取数员不可用时别人就能占走它的名字,可用之后两者同名。
79
+ */
80
+ allNames() {
81
+ return [...this.byName.keys()];
82
+ }
83
+ /** 名字 → 界面默认叫法,**含旧名**;不看可用性(历史里派过的照样要叫得出来)。 */
84
+ defaultLabels() {
85
+ const out = {};
86
+ for (const { meta } of this.byName.values())
87
+ out[meta.name] = meta.label;
88
+ for (const [former, current] of this.aliases) {
89
+ const entry = this.byName.get(current);
90
+ if (entry)
91
+ out[former] = entry.meta.label;
92
+ }
93
+ return out;
94
+ }
95
+ /**
96
+ * 这个名字是不是叶子(不给 `Delegate`、花名册清空):`leaf` / `functional` /
97
+ * 宿主的 `impliesLeaf`。没登记过的名字(宿主自己的子 Agent)返回 false。
98
+ */
99
+ isLeaf(name) {
100
+ const meta = this.get(name);
101
+ if (!meta)
102
+ return false;
103
+ return (meta.leaf === true ||
104
+ meta.functional === true ||
105
+ (this.options.impliesLeaf?.(meta) ?? false));
106
+ }
107
+ /** 这个名字要的权限点;不要或没登记过返回 null。 */
108
+ requiredPermission(name) {
109
+ return this.get(name)?.permission ?? null;
110
+ }
111
+ /**
112
+ * 判据输入下这个定义派不派得出(花名册与派生同一句):要权限点的要发起人有且父允许;
113
+ * 点名挂载的要父点了名。
114
+ */
115
+ permits(meta, access) {
116
+ if (meta.permission &&
117
+ !(access.allowPermissioned && access.permissions.has(meta.permission))) {
118
+ return false;
119
+ }
120
+ if (meta.optIn && !(access.optIn ?? []).includes(meta.name))
121
+ return false;
122
+ return true;
123
+ }
124
+ /**
125
+ * 花名册:此刻可用、对这份判据输入派得出的定义。`filter` 是宿主的附加条件
126
+ * (agent-base:顶替型只在当前模型缺那项能力且父配了顶替模型时列)——**不广告一个
127
+ * 派不出来的东西**,派生那一侧(`SpawnPolicy.checkSpawn`)要用同一个判据。
128
+ */
129
+ roster(access, filter) {
130
+ return this.list()
131
+ .filter(m => this.permits(m, access) && (filter?.(m) ?? true))
132
+ .map(m => ({ name: m.name, description: m.description }));
133
+ }
134
+ /**
135
+ * 这个子 Agent 本轮要摘掉的恒上桌工具:声明了 `systemTools` 时,`alwaysOn` 那几组里
136
+ * 名单外的全部。没声明返回空数组(与父一样)。
137
+ */
138
+ excludedSystemTools(name, tools, alwaysOnCategories = ['system']) {
139
+ const allow = this.get(name)?.systemTools;
140
+ if (!allow)
141
+ return [];
142
+ return tools
143
+ .listMeta()
144
+ .filter(m => alwaysOnCategories.includes(m.category) && !allow.includes(m.name))
145
+ .map(m => m.name);
146
+ }
147
+ available(entry) {
148
+ return entry.provider?.isAvailable?.() ?? true;
149
+ }
150
+ }
151
+ /**
152
+ * 通用子 Agent 的固定人格提示词。**短得几乎没有内容,这是对的**:处境说明(看不到
153
+ * 调用方历史、产出原样回投、卡住可以交回去问)归平台,由 `buildSubagentSituationBlock`
154
+ * 对每个子会话注入;剩下这一句才是「通用款」独有的——它没有领域设定。
155
+ */
156
+ export const GENERAL_PURPOSE_PROMPT = '你没有特定的领域设定,也没有预设的工作套路。按任务描述本身的要求来做:它要什么就产出什么,需要什么手段就用什么手段。';
157
+ /**
158
+ * 内置「通用子 Agent」。**除人格外一个字段都不设,是它的全部要点**:工具、步数(以及
159
+ * 宿主的档位、推理等级)统统由派生它的那个父决定。宿主要用就 `registry.register(GENERAL_PURPOSE_SUBAGENT)`。
160
+ */
161
+ export const GENERAL_PURPOSE_SUBAGENT = {
162
+ name: 'general-purpose',
163
+ label: '通用 Agent',
164
+ description: '通用子 Agent:无特定领域设定,适合把一段自包含的任务整个交出去',
165
+ prompt: GENERAL_PURPOSE_PROMPT,
166
+ };
167
+ //# sourceMappingURL=subagent-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-registry.js","sourceRoot":"","sources":["../../src/subagent/subagent-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,213 @@
1
+ import type { MessageHub } from '../loop/message-hub.js';
2
+ import type { SubagentAwaitLease, TreeBudget, WakeChannel } from '../ports/coordination.js';
3
+ import { type LoggerFactory } from '../ports/logger.js';
4
+ import type { RunStore } from '../ports/run-store.js';
5
+ import type { SessionRecord, SessionStore } from '../ports/session-store.js';
6
+ import type { ToolAgentContext } from '../tools/agent-tool.interface.js';
7
+ /** 兜底扫描的缺省「空闲多久才算嫌疑」。 */
8
+ export declare const SUBAGENT_SWEEP_IDLE_MS = 60000;
9
+ /** 派一个新的子 Agent 的请求(`Delegate` 从 `ToolContext` 拼出来)。 */
10
+ export interface SpawnRequest {
11
+ agentName: string;
12
+ /** 一句话任务标题(模型显式给,界面展示)。 */
13
+ title: string;
14
+ prompt: string;
15
+ /** 派它的会话(父)。 */
16
+ parentSessionId: string;
17
+ rootSessionId: string;
18
+ /** 父这一轮的跑次 id——子会话的 `parentRunId`,父会话经它找到。 */
19
+ parentRunId: string;
20
+ /** 父这一轮的深度。 */
21
+ depth: number;
22
+ userId: string | null;
23
+ /** 父这一轮跑的 agent(宿主的扩展字段:跑哪个、哪一版……)与模型能力。 */
24
+ agent: ToolAgentContext;
25
+ /** 父会话的附加信息;缺省照抄给子会话。 */
26
+ sessionMetadata: Readonly<Record<string, unknown>>;
27
+ /** 发起人此刻的权限点。缺省空(fail-closed)。 */
28
+ initiatorPermissions: ReadonlySet<string>;
29
+ }
30
+ /**
31
+ * 派不派得出(宿主回答)。
32
+ *
33
+ * - `unknown`:没有这个子 Agent(或此刻不可用)。`Delegate` 的报错让模型去核对花名册。
34
+ * - `refused`:有,但这一次不行——`message` 原样给模型,要说清「谁、为什么」不够格,
35
+ * 否则模型会换个名字再试(agent-base:权限点不够、「你自己就能看图,别派识图员」)。
36
+ * - `ok`:可以。`attrs` / `metadata` 写进子会话行(缺省:attrs 空、metadata 照抄父的)。
37
+ */
38
+ export type SpawnCheck = {
39
+ ok: true;
40
+ attrs?: Readonly<Record<string, unknown>>;
41
+ metadata?: Readonly<Record<string, unknown>>;
42
+ } | {
43
+ ok: false;
44
+ reason: 'unknown';
45
+ } | {
46
+ ok: false;
47
+ reason: 'refused';
48
+ message: string;
49
+ };
50
+ /**
51
+ * 宿主的派生策略。花名册与这里**必须是同一个判据**(花名册不列只是不广告,模型凭名字
52
+ * 照样派得动)——用 `SubagentRegistry` 的话,`registrySpawnPolicy` 就是现成的一份。
53
+ */
54
+ export interface SpawnPolicy {
55
+ checkSpawn(req: SpawnRequest): Promise<SpawnCheck>;
56
+ /**
57
+ * 子会话建好、任务投递**之前**:宿主为子会话定下它要用的东西(agent-base 分身:
58
+ * 派活快照)。子会话此刻还没有任务、不会被唤醒,第一轮就能读到。抛错 = 这次派生
59
+ * 失败(名额归还,错误上抛)。
60
+ *
61
+ * `notes` 拼在回执最前面(「技能《×××》已停用,未带」);**为空就别给**,回执逐字不变。
62
+ */
63
+ onSubagentCreated?(req: SpawnRequest & {
64
+ childSessionId: string;
65
+ }): Promise<{
66
+ notes?: string[];
67
+ }>;
68
+ }
69
+ export type SpawnOutcome = {
70
+ ok: true;
71
+ childSessionId: string;
72
+ notes?: string[];
73
+ } | {
74
+ ok: false;
75
+ reason: 'unknown' | 'tree_full';
76
+ } | {
77
+ ok: false;
78
+ reason: 'refused';
79
+ message: string;
80
+ };
81
+ /**
82
+ * 追加任务的目标校验结果。`cursorBefore` 是发起追加**之前**的里程碑游标:同步等待据它
83
+ * 判「这一轮跑完了没有」,取产出也只取它之后的。首次 idle 之前追加时为 null,语义退化
84
+ * 成「等首次 settle」。
85
+ */
86
+ export type FollowUpTarget = {
87
+ ok: true;
88
+ cursorBefore: number | null;
89
+ } | {
90
+ ok: false;
91
+ reason: 'not_found' | 'not_own_child';
92
+ };
93
+ /** 子会话一轮的回执(同步返回与回投 inbox 同源)。 */
94
+ export interface SubagentResult {
95
+ body: string;
96
+ status: string;
97
+ /** 只有失败才带(正常收尾的 `stop` 写进「原因」是误导)。 */
98
+ stopReason: string | null;
99
+ }
100
+ /** loop 设置一个 tick 时要的子会话信息。 */
101
+ export interface SubagentTickInfo {
102
+ kind: SessionRecord['kind'];
103
+ /** 子会话 = 父跑次深度 + 1;根会话 0。 */
104
+ depth: number;
105
+ parentRunId: string | null;
106
+ /** 子 Agent 名(钉在会话上的那个,可能是旧名);根会话 null。 */
107
+ agentName: string | null;
108
+ title: string | null;
109
+ }
110
+ export interface SubagentSessionsDeps {
111
+ sessions: SessionStore;
112
+ /** 消息中心:投递(`post`)与读消息(`store`)。 */
113
+ hub: MessageHub;
114
+ wake: WakeChannel;
115
+ runs: RunStore;
116
+ awaitLease: SubagentAwaitLease;
117
+ treeBudget: TreeBudget;
118
+ policy: SpawnPolicy;
119
+ /** 每棵树同时存活的子 Agent 上限,缺省 `MAX_LIVE_SUBS_PER_TREE`。 */
120
+ maxLivePerTree?: number;
121
+ /** 兜底扫描的空闲门槛,缺省 `SUBAGENT_SWEEP_IDLE_MS`。 */
122
+ sweepIdleMs?: number;
123
+ logger?: LoggerFactory;
124
+ }
125
+ /**
126
+ * 子会话的生命周期:派生(受理段,**不 await 子跑完**)、追加任务、取回执、收尾回投、
127
+ * 兜底扫描。搬自 agent-base `SubagentSessionService`,会话行走 `SessionStore`、消息走
128
+ * `MessageHub`,派生判据交给宿主的 `SpawnPolicy`。
129
+ *
130
+ * 子会话此后由 loop 独立驱动(inbox + 唤醒),**同步与异步是同一条实现**:子会话都是
131
+ * 独立持久跑的,区别只在父等不等它(`Delegate`)。
132
+ *
133
+ * 宿主要接两处:`LoopHost.afterTick` 里调 `finalizeIfIdle`,启动时调一次 `sweepStale`。
134
+ */
135
+ export declare class SubagentSessions {
136
+ private readonly deps;
137
+ private readonly logger;
138
+ readonly maxLivePerTree: number;
139
+ constructor(deps: SubagentSessionsDeps);
140
+ /** 新建:问宿主 → 占名额 → 建会话 → 宿主补料 → 投任务 → 唤醒,即返 handle。 */
141
+ spawn(req: SpawnRequest): Promise<SpawnOutcome>;
142
+ /**
143
+ * 追加任务前的目标校验——**必须先于投递**,且与投递分两步:同步等待的租约要夹在
144
+ * 「校验通过」与「投递」之间(见 `Delegate` 的追加任务那段)。
145
+ *
146
+ * 归属判据是「**直接子**」(子的 `parentRunId` 所属会话 == 当前会话),不是「同一棵
147
+ * 树」:孙辈的 handle 本就不会出现在父的上下文里,能续到孙只可能是编了个 id 或从子的
148
+ * 产出正文里抄了一个。
149
+ */
150
+ resolveFollowUpTarget(input: {
151
+ childSessionId: string;
152
+ parentSessionId: string;
153
+ }): Promise<FollowUpTarget>;
154
+ /**
155
+ * 把追加任务投进子会话并唤醒它。与派生尾段**逐字相同**的通道,子那边零特判——「子
156
+ * 记得自己写过什么」不是这里做的,是会话本身没被丢弃。子此刻仍在跑就是软插话。
157
+ *
158
+ * **不占名额**:名额记的是「同时有几个**新派生**的子」,与「存活 = 游标为 null」同一个口径。
159
+ */
160
+ deliverFollowUp(input: {
161
+ childSessionId: string;
162
+ prompt: string;
163
+ userId: string | null;
164
+ }): Promise<void>;
165
+ /**
166
+ * 子已到达 idle 终态后,取它自 `since` 以来的回执。**与收尾回投 inbox 的那份同源**
167
+ * (同一个取数 + 同一套中和)——换个 `run_in_background` 值就换一份结论,是没法排查
168
+ * 的那类 bug。追加任务传发起前的游标,否则父会连同上一轮全文再收一遍。
169
+ */
170
+ buildResult(childSessionId: string, since?: number | null): Promise<SubagentResult>;
171
+ /**
172
+ * 里程碑游标是否已越过 `cursor`(=子在这次等待期间到达过一次 idle 终态)。null 即
173
+ * 「首次 settle 了没有」。**追加任务不能沿用「非 null 即完成」**——那个条件在追加发起的
174
+ * 一瞬间就成立(上一轮推进过),父会立刻拿着上一轮的结果返回。
175
+ */
176
+ hasAdvancedPast(childSessionId: string, cursor: number | null): Promise<boolean>;
177
+ /** loop 设置 tick 时要的子会话信息(深度、钉住的子 Agent 名……)。会话不存在返回 null。 */
178
+ tickInfo(sessionId: string): Promise<SubagentTickInfo | null>;
179
+ /**
180
+ * 子会话空转终态 → 把新产出中和后作为里程碑回投父 inbox 并唤醒父。
181
+ *
182
+ * loop 在每个 tick 收尾(锁已释放、re-wake 之前)对每个会话**无条件**调(`LoopHost.afterTick`),
183
+ * 这里自查:非子会话直接返回。
184
+ *
185
+ * **只还一次名额**:「存活」= 从派生到首次 idle 终态,判据是游标为 null。被追加任务
186
+ * 续跑后再次 idle 只回投新产出、不再还。
187
+ *
188
+ * **并发安全**:两次抢锁成功的唤醒可能并发进来、读到同一个旧游标。所有副作用都收在一次
189
+ * 乐观 CAS(`SessionStore.advanceMilestone`)之后:先按**旧**游标取产出,再把游标推进到
190
+ * 产出的最大 seq(无产出从序列取号);只有 CAS 成功的那一个回投 + 唤醒 + 还名额。
191
+ *
192
+ * 全程不抛:失败只记日志,兜底扫描是后备。
193
+ */
194
+ finalizeIfIdle(childSessionId: string): Promise<void>;
195
+ /**
196
+ * 兜底:子 loop 可能在回投 / 还名额之前崩掉或丢锁。对每个嫌疑重跑一次收尾(幂等),
197
+ * 再把每棵被碰过的树的名额覆盖为真值。**先收尾后校正**:收尾会把游标从 null 推成非
198
+ * null,校正读到的才是收尾之后的存活数。宿主在启动时调一次(fire-and-forget)。
199
+ */
200
+ sweepStale(): Promise<void>;
201
+ private deliver;
202
+ /**
203
+ * 子会话自 `since` 以来的 assistant 产出与终态。游标是消息 `seq`(会话内单调)——
204
+ * **不是时间戳**:挂钟会回拨,回拨之后新产出会被判成「旧的」直接跳过,父收到的回执
205
+ * 格式完好、内容缺一段。
206
+ *
207
+ * `watermark` = 取到的行里最大的 seq;没取到行时为 null(调用方从序列取号)。游标取自
208
+ * **取到的那些行**而不是独立取一个「当下」——后者可能跨到尚未取到的消息之后。
209
+ */
210
+ private collectOutput;
211
+ private resultOf;
212
+ }
213
+ //# sourceMappingURL=subagent-sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-sessions.d.ts","sourceRoot":"","sources":["../../src/subagent/subagent-sessions.ts"],"names":[],"mappings":"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"}