@qjp88995/agent-runtime 0.0.0-stage → 0.1.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 (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 +55 -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,283 @@
1
+ import type { ToolRegistry } from '../tools/tool-registry.js';
2
+ import { DESC_LIMIT, type SubagentIndexEntry } from './roster-block.js';
3
+
4
+ /**
5
+ * 一个内置子 Agent 的登记信息。搬自 agent-base `BuiltinSubagentMeta`,只留与运行时机制
6
+ * 有关的字段;模型从哪来(档位、顶替能力的模型、媒体服务商)是宿主的配置语义,宿主
7
+ * 扩展这个接口自己加(`SubagentRegistry<MyMeta>`),在 `SpawnPolicy` 与 tick 设置里读。
8
+ *
9
+ * **optional 字段留空 = 由父决定**:通用子 Agent 正是靠全部留空,把工具 / 步数交还给
10
+ * 派生它的那个父(宿主合成子定义时 `meta.tools ?? parent.enabledTools`)。
11
+ */
12
+ export interface SubagentMeta {
13
+ /** 模型看到、派生时填的名字。全局唯一。 */
14
+ name: string;
15
+ /**
16
+ * 界面上的默认叫法(「识图员」):派它那一行、过程弹窗、回执标题都写它。**只管显示,
17
+ * 模型看到的永远是 `name`**。1..`labelMax` 个码点,注册期校验。
18
+ */
19
+ label: string;
20
+ /** 花名册那一行。超过 `DESC_LIMIT` 个码点注册期拒绝(花名册会截掉,模型看不见)。 */
21
+ description: string;
22
+ /** 子会话的人格提示词。 */
23
+ prompt: string;
24
+ /** 工具白名单;不给 = 用父的。 */
25
+ tools?: readonly string[];
26
+ /** 步数上限;不给 = 用父的。 */
27
+ maxSteps?: number;
28
+ /** **叶子**:不给 `Delegate`、花名册清空(它只做一件事,再分包只会绕回来)。 */
29
+ leaf?: boolean;
30
+ /**
31
+ * **功能型**:做一件具体的事、自带一套工具;谁派都按它自己的定义跑,且**必须是叶子**
32
+ * (隐含 `leaf`)。标不标是一次显式决定,别因为收窄了 `tools` 就顺手标上。
33
+ */
34
+ functional?: true;
35
+ /**
36
+ * **要权限点才派得出**:本轮发起人有这个点,**且**父允许派这类子 Agent
37
+ * (`SubagentAccess.allowPermissioned`)时才进花名册、才派得出。填它自带工具要的那个点,
38
+ * 花名册与工具门禁认同一件事。**这不是工具的门**:它用到的工具自己仍要现查权限。
39
+ */
40
+ permission?: string;
41
+ /**
42
+ * **点名挂载**:默认不进任何花名册、谁都派不出,只有点名要它的父
43
+ * (`SubagentAccess.optIn`)才列、才派得出。与 `permission` 不能同标(注册期拒绝)。
44
+ */
45
+ optIn?: true;
46
+ /**
47
+ * 系统类工具(`ToolRegistry` 里 `alwaysOnCategories` 那几组)的白名单。不给 = 不限。
48
+ * `tools` 管不到恒上桌的工具,要让它只做一件事就得在这里点名;名单外的由
49
+ * `excludedSystemTools` 算出、宿主放进本轮摘除清单。
50
+ */
51
+ systemTools?: readonly string[];
52
+ /**
53
+ * 改名前用过的名字。旧子会话钉着旧名(`SessionRecord.subagentName`),追问它时每个 tick
54
+ * 都按它查定义——查不到就再也续不上。`get` 认它,花名册只出现名。
55
+ */
56
+ formerNames?: readonly string[];
57
+ }
58
+
59
+ /** 注册时可附的运行期问答。 */
60
+ export interface SubagentProvider {
61
+ /**
62
+ * 此刻能不能用(服务端没配取数账号时取数员不可用)。不可用时 `get` / `list` 都当它
63
+ * 不存在。**每次调用现问**,不在注册时快照。
64
+ */
65
+ isAvailable?(): boolean;
66
+ }
67
+
68
+ /** 花名册 / 派生对「要权限点」与「点名挂载」的判据输入。缺省即 fail-closed。 */
69
+ export interface SubagentAccess {
70
+ /** 本轮发起人此刻的权限点(`Initiator.permissions`;没有发起人 = 空)。 */
71
+ permissions: ReadonlySet<string>;
72
+ /** 父允许派要权限点的子 Agent(agent-base:系统管理分身)。缺省 false。 */
73
+ allowPermissioned?: boolean;
74
+ /** 这个父点名要的「点名挂载」子 Agent。缺省空。 */
75
+ optIn?: readonly string[];
76
+ }
77
+
78
+ export interface SubagentRegistryOptions<M extends SubagentMeta> {
79
+ /** `label` 的码点上限,缺省 20。 */
80
+ labelMax?: number;
81
+ /** 宿主字段的注册期校验(抛错即拒绝)。 */
82
+ validate?(meta: M): void;
83
+ /** 宿主字段隐含的叶子(agent-base:按能力顶替的子 Agent)。 */
84
+ impliesLeaf?(meta: M): boolean;
85
+ }
86
+
87
+ interface Entry<M> {
88
+ meta: M;
89
+ provider?: SubagentProvider;
90
+ }
91
+
92
+ /**
93
+ * 内置子 Agent 注册表:宿主显式 `register`(以前靠 Nest 装饰器 + DiscoveryService 扫)。
94
+ * 名字重复、旧名冲突、说明过长、两个互斥标记同标都在注册期抛。
95
+ *
96
+ * 花名册顺序 = 注册顺序。
97
+ */
98
+ export class SubagentRegistry<M extends SubagentMeta = SubagentMeta> {
99
+ private readonly byName = new Map<string, Entry<M>>();
100
+ /** 旧名 → 现名。 */
101
+ private readonly aliases = new Map<string, string>();
102
+ private readonly labelMax: number;
103
+
104
+ constructor(private readonly options: SubagentRegistryOptions<M> = {}) {
105
+ this.labelMax = options.labelMax ?? 20;
106
+ }
107
+
108
+ register(meta: M, provider?: SubagentProvider): void {
109
+ const { name } = meta;
110
+ if (this.byName.has(name) || this.aliases.has(name)) {
111
+ throw new Error(`duplicate subagent name '${name}'`);
112
+ }
113
+ // 花名册每行只显示前 DESC_LIMIT 个码点。说明是我们写的,写长了就是一段没人看得见
114
+ // 的交代——逼着把「何时派、交回什么」写进前 60 字。
115
+ if (Array.from(meta.description.trim()).length > DESC_LIMIT) {
116
+ throw new Error(
117
+ `subagent '${name}' description exceeds ${DESC_LIMIT} code points (the roster cuts the rest)`
118
+ );
119
+ }
120
+ const labelLength = Array.from(meta.label.trim()).length;
121
+ if (labelLength === 0 || labelLength > this.labelMax) {
122
+ throw new Error(
123
+ `subagent '${name}' label must be 1..${this.labelMax} code points`
124
+ );
125
+ }
126
+ if (meta.permission && meta.optIn) {
127
+ throw new Error(`subagent '${name}' declares both permission and optIn`);
128
+ }
129
+ for (const former of meta.formerNames ?? []) {
130
+ if (former === name || this.byName.has(former)) {
131
+ throw new Error(
132
+ `subagent former name '${former}' is also a current name`
133
+ );
134
+ }
135
+ if (this.aliases.has(former)) {
136
+ throw new Error(`subagent former name '${former}' is claimed twice`);
137
+ }
138
+ }
139
+ this.options.validate?.(meta);
140
+ for (const former of meta.formerNames ?? []) {
141
+ this.aliases.set(former, name);
142
+ }
143
+ this.byName.set(name, provider ? { meta, provider } : { meta });
144
+ }
145
+
146
+ /** 现名(认旧名);没登记过返回 null。不看可用性。 */
147
+ currentName(name: string): string | null {
148
+ if (this.byName.has(name)) return name;
149
+ return this.aliases.get(name) ?? null;
150
+ }
151
+
152
+ /** 这个名字(含旧名)的定义;没有或此刻不可用返回 null。 */
153
+ get(name: string): M | null {
154
+ const current = this.currentName(name);
155
+ if (current === null) return null;
156
+ const entry = this.byName.get(current);
157
+ return entry && this.available(entry) ? entry.meta : null;
158
+ }
159
+
160
+ /** 此刻可用的全部定义(注册顺序)。 */
161
+ list(): M[] {
162
+ return [...this.byName.values()]
163
+ .filter(e => this.available(e))
164
+ .map(e => e.meta);
165
+ }
166
+
167
+ /** 注册过的全部定义(含此刻不可用的),带可用性。后台页用。 */
168
+ listAll(): { meta: M; available: boolean }[] {
169
+ return [...this.byName.values()].map(e => ({
170
+ meta: e.meta,
171
+ available: this.available(e),
172
+ }));
173
+ }
174
+
175
+ /**
176
+ * 注册过的全部现名,**不看可用性**。给「名字不许与内置子 Agent 撞」这类静态判断用:
177
+ * 按 `list()` 判的话,取数员不可用时别人就能占走它的名字,可用之后两者同名。
178
+ */
179
+ allNames(): string[] {
180
+ return [...this.byName.keys()];
181
+ }
182
+
183
+ /** 名字 → 界面默认叫法,**含旧名**;不看可用性(历史里派过的照样要叫得出来)。 */
184
+ defaultLabels(): Record<string, string> {
185
+ const out: Record<string, string> = {};
186
+ for (const { meta } of this.byName.values()) out[meta.name] = meta.label;
187
+ for (const [former, current] of this.aliases) {
188
+ const entry = this.byName.get(current);
189
+ if (entry) out[former] = entry.meta.label;
190
+ }
191
+ return out;
192
+ }
193
+
194
+ /**
195
+ * 这个名字是不是叶子(不给 `Delegate`、花名册清空):`leaf` / `functional` /
196
+ * 宿主的 `impliesLeaf`。没登记过的名字(宿主自己的子 Agent)返回 false。
197
+ */
198
+ isLeaf(name: string): boolean {
199
+ const meta = this.get(name);
200
+ if (!meta) return false;
201
+ return (
202
+ meta.leaf === true ||
203
+ meta.functional === true ||
204
+ (this.options.impliesLeaf?.(meta) ?? false)
205
+ );
206
+ }
207
+
208
+ /** 这个名字要的权限点;不要或没登记过返回 null。 */
209
+ requiredPermission(name: string): string | null {
210
+ return this.get(name)?.permission ?? null;
211
+ }
212
+
213
+ /**
214
+ * 判据输入下这个定义派不派得出(花名册与派生同一句):要权限点的要发起人有且父允许;
215
+ * 点名挂载的要父点了名。
216
+ */
217
+ permits(meta: M, access: SubagentAccess): boolean {
218
+ if (
219
+ meta.permission &&
220
+ !(access.allowPermissioned && access.permissions.has(meta.permission))
221
+ ) {
222
+ return false;
223
+ }
224
+ if (meta.optIn && !(access.optIn ?? []).includes(meta.name)) return false;
225
+ return true;
226
+ }
227
+
228
+ /**
229
+ * 花名册:此刻可用、对这份判据输入派得出的定义。`filter` 是宿主的附加条件
230
+ * (agent-base:顶替型只在当前模型缺那项能力且父配了顶替模型时列)——**不广告一个
231
+ * 派不出来的东西**,派生那一侧(`SpawnPolicy.checkSpawn`)要用同一个判据。
232
+ */
233
+ roster(
234
+ access: SubagentAccess,
235
+ filter?: (meta: M) => boolean
236
+ ): SubagentIndexEntry[] {
237
+ return this.list()
238
+ .filter(m => this.permits(m, access) && (filter?.(m) ?? true))
239
+ .map(m => ({ name: m.name, description: m.description }));
240
+ }
241
+
242
+ /**
243
+ * 这个子 Agent 本轮要摘掉的恒上桌工具:声明了 `systemTools` 时,`alwaysOn` 那几组里
244
+ * 名单外的全部。没声明返回空数组(与父一样)。
245
+ */
246
+ excludedSystemTools(
247
+ name: string,
248
+ tools: ToolRegistry,
249
+ alwaysOnCategories: readonly string[] = ['system']
250
+ ): string[] {
251
+ const allow = this.get(name)?.systemTools;
252
+ if (!allow) return [];
253
+ return tools
254
+ .listMeta()
255
+ .filter(
256
+ m => alwaysOnCategories.includes(m.category) && !allow.includes(m.name)
257
+ )
258
+ .map(m => m.name);
259
+ }
260
+
261
+ private available(entry: Entry<M>): boolean {
262
+ return entry.provider?.isAvailable?.() ?? true;
263
+ }
264
+ }
265
+
266
+ /**
267
+ * 通用子 Agent 的固定人格提示词。**短得几乎没有内容,这是对的**:处境说明(看不到
268
+ * 调用方历史、产出原样回投、卡住可以交回去问)归平台,由 `buildSubagentSituationBlock`
269
+ * 对每个子会话注入;剩下这一句才是「通用款」独有的——它没有领域设定。
270
+ */
271
+ export const GENERAL_PURPOSE_PROMPT =
272
+ '你没有特定的领域设定,也没有预设的工作套路。按任务描述本身的要求来做:它要什么就产出什么,需要什么手段就用什么手段。';
273
+
274
+ /**
275
+ * 内置「通用子 Agent」。**除人格外一个字段都不设,是它的全部要点**:工具、步数(以及
276
+ * 宿主的档位、推理等级)统统由派生它的那个父决定。宿主要用就 `registry.register(GENERAL_PURPOSE_SUBAGENT)`。
277
+ */
278
+ export const GENERAL_PURPOSE_SUBAGENT: SubagentMeta = {
279
+ name: 'general-purpose',
280
+ label: '通用 Agent',
281
+ description: '通用子 Agent:无特定领域设定,适合把一段自包含的任务整个交出去',
282
+ prompt: GENERAL_PURPOSE_PROMPT,
283
+ };