stitchkit 0.93.0 → 0.94.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 (1082) hide show
  1. package/CHANGELOG.md +198 -0
  2. package/README.md +5 -2
  3. package/dist/agent-runtime/children-control.d.ts +6 -0
  4. package/dist/agent-runtime/children-control.d.ts.map +1 -0
  5. package/dist/agent-runtime/children-spawn.d.ts +6 -0
  6. package/dist/agent-runtime/children-spawn.d.ts.map +1 -0
  7. package/dist/agent-runtime/children-state.d.ts +46 -0
  8. package/dist/agent-runtime/children-state.d.ts.map +1 -0
  9. package/dist/agent-runtime/children-usage.d.ts +8 -0
  10. package/dist/agent-runtime/children-usage.d.ts.map +1 -0
  11. package/dist/agent-runtime/children.d.ts +11 -14
  12. package/dist/agent-runtime/children.d.ts.map +1 -1
  13. package/dist/agent-runtime/coding-shell-process.d.ts.map +1 -1
  14. package/dist/agent-runtime/coding-tool-contract.d.ts +2 -1
  15. package/dist/agent-runtime/coding-tool-contract.d.ts.map +1 -1
  16. package/dist/agent-runtime/coding-tool-listing.d.ts.map +1 -1
  17. package/dist/agent-runtime/coding-tool-search-patch.d.ts.map +1 -1
  18. package/dist/agent-runtime/contained-darwin.d.ts +38 -0
  19. package/dist/agent-runtime/contained-darwin.d.ts.map +1 -0
  20. package/dist/agent-runtime/contained-files.d.ts +11 -26
  21. package/dist/agent-runtime/contained-files.d.ts.map +1 -1
  22. package/dist/agent-runtime/contained-scan.d.ts +21 -0
  23. package/dist/agent-runtime/contained-scan.d.ts.map +1 -0
  24. package/dist/agent-runtime/contained-write.d.ts +9 -0
  25. package/dist/agent-runtime/contained-write.d.ts.map +1 -0
  26. package/dist/agent-runtime/deferred-tool-types.d.ts +4 -3
  27. package/dist/agent-runtime/deferred-tool-types.d.ts.map +1 -1
  28. package/dist/agent-runtime/events.d.ts +1 -1
  29. package/dist/agent-runtime/events.d.ts.map +1 -1
  30. package/dist/agent-runtime/harness-control.d.ts +0 -1
  31. package/dist/agent-runtime/harness-control.d.ts.map +1 -1
  32. package/dist/agent-runtime/harness.d.ts +0 -5
  33. package/dist/agent-runtime/harness.d.ts.map +1 -1
  34. package/dist/agent-runtime/managed-tools.d.ts +3 -2
  35. package/dist/agent-runtime/managed-tools.d.ts.map +1 -1
  36. package/dist/agent-runtime/observability.d.ts +1 -1
  37. package/dist/agent-runtime/observability.d.ts.map +1 -1
  38. package/dist/agent-runtime/openrouter.d.ts +29 -0
  39. package/dist/agent-runtime/openrouter.d.ts.map +1 -0
  40. package/dist/agent-runtime/projections.d.ts +1 -1
  41. package/dist/agent-runtime/projections.d.ts.map +1 -1
  42. package/dist/agent-runtime/run-acquisition.d.ts +17 -0
  43. package/dist/agent-runtime/run-acquisition.d.ts.map +1 -0
  44. package/dist/agent-runtime/run-execution-state.d.ts +133 -0
  45. package/dist/agent-runtime/run-execution-state.d.ts.map +1 -0
  46. package/dist/agent-runtime/run-execution.d.ts +17 -33
  47. package/dist/agent-runtime/run-execution.d.ts.map +1 -1
  48. package/dist/agent-runtime/run-failure.d.ts +18 -0
  49. package/dist/agent-runtime/run-failure.d.ts.map +1 -0
  50. package/dist/agent-runtime/run-model-attempts.d.ts +6 -0
  51. package/dist/agent-runtime/run-model-attempts.d.ts.map +1 -0
  52. package/dist/agent-runtime/run-prompt-history.d.ts +58 -0
  53. package/dist/agent-runtime/run-prompt-history.d.ts.map +1 -0
  54. package/dist/agent-runtime/run-provider-ledger.d.ts +26 -0
  55. package/dist/agent-runtime/run-provider-ledger.d.ts.map +1 -0
  56. package/dist/agent-runtime/run-stream-parts.d.ts +17 -0
  57. package/dist/agent-runtime/run-stream-parts.d.ts.map +1 -0
  58. package/dist/agent-runtime/run-terminal.d.ts +11 -0
  59. package/dist/agent-runtime/run-terminal.d.ts.map +1 -0
  60. package/dist/agent-runtime/run-turn-preparation.d.ts +22 -0
  61. package/dist/agent-runtime/run-turn-preparation.d.ts.map +1 -0
  62. package/dist/agent-runtime/runtime-admission-gate.d.ts +29 -0
  63. package/dist/agent-runtime/runtime-admission-gate.d.ts.map +1 -0
  64. package/dist/agent-runtime/runtime-control.d.ts +9 -0
  65. package/dist/agent-runtime/runtime-control.d.ts.map +1 -0
  66. package/dist/agent-runtime/runtime-recovery.d.ts +10 -0
  67. package/dist/agent-runtime/runtime-recovery.d.ts.map +1 -0
  68. package/dist/agent-runtime/runtime-state.d.ts +36 -0
  69. package/dist/agent-runtime/runtime-state.d.ts.map +1 -0
  70. package/dist/agent-runtime/runtime-submit.d.ts +5 -0
  71. package/dist/agent-runtime/runtime-submit.d.ts.map +1 -0
  72. package/dist/agent-runtime/runtime.d.ts +10 -5
  73. package/dist/agent-runtime/runtime.d.ts.map +1 -1
  74. package/dist/agent-runtime/schedule-records.d.ts +34 -0
  75. package/dist/agent-runtime/schedule-records.d.ts.map +1 -0
  76. package/dist/agent-runtime/schedules.d.ts +34 -0
  77. package/dist/agent-runtime/schedules.d.ts.map +1 -1
  78. package/dist/agent-runtime/sqlite-bun.d.ts +12 -0
  79. package/dist/agent-runtime/sqlite-bun.d.ts.map +1 -0
  80. package/dist/agent-runtime/sqlite-events.d.ts +5 -0
  81. package/dist/agent-runtime/sqlite-events.d.ts.map +1 -0
  82. package/dist/agent-runtime/sqlite-history.d.ts +7 -0
  83. package/dist/agent-runtime/sqlite-history.d.ts.map +1 -0
  84. package/dist/agent-runtime/sqlite-ledger.d.ts +7 -0
  85. package/dist/agent-runtime/sqlite-ledger.d.ts.map +1 -0
  86. package/dist/agent-runtime/sqlite-node.d.ts +12 -0
  87. package/dist/agent-runtime/sqlite-node.d.ts.map +1 -0
  88. package/dist/agent-runtime/sqlite-reads.d.ts +14 -0
  89. package/dist/agent-runtime/sqlite-reads.d.ts.map +1 -0
  90. package/dist/agent-runtime/sqlite-rows.d.ts +178 -0
  91. package/dist/agent-runtime/sqlite-rows.d.ts.map +1 -0
  92. package/dist/agent-runtime/sqlite-schema.d.ts +7 -0
  93. package/dist/agent-runtime/sqlite-schema.d.ts.map +1 -0
  94. package/dist/agent-runtime/sqlite-transactions.d.ts +25 -0
  95. package/dist/agent-runtime/sqlite-transactions.d.ts.map +1 -0
  96. package/dist/agent-runtime/sqlite.d.ts +10 -6
  97. package/dist/agent-runtime/sqlite.d.ts.map +1 -1
  98. package/dist/agent-runtime/store-archive.d.ts +16 -0
  99. package/dist/agent-runtime/store-archive.d.ts.map +1 -0
  100. package/dist/agent-runtime/store-conformance-lifecycle.d.ts +434 -0
  101. package/dist/agent-runtime/store-conformance-lifecycle.d.ts.map +1 -0
  102. package/dist/agent-runtime/store-conformance-ordering.d.ts +18 -0
  103. package/dist/agent-runtime/store-conformance-ordering.d.ts.map +1 -0
  104. package/dist/agent-runtime/store-conformance-support.d.ts +130 -0
  105. package/dist/agent-runtime/store-conformance-support.d.ts.map +1 -0
  106. package/dist/agent-runtime/store-conformance-terminal.d.ts +12 -0
  107. package/dist/agent-runtime/store-conformance-terminal.d.ts.map +1 -0
  108. package/dist/agent-runtime/store-conformance.d.ts +40 -0
  109. package/dist/agent-runtime/store-conformance.d.ts.map +1 -0
  110. package/dist/agent-runtime/store-create.d.ts +11 -0
  111. package/dist/agent-runtime/store-create.d.ts.map +1 -0
  112. package/dist/agent-runtime/store-driver-contract.d.ts +814 -0
  113. package/dist/agent-runtime/store-driver-contract.d.ts.map +1 -0
  114. package/dist/agent-runtime/store-events.d.ts +7 -89
  115. package/dist/agent-runtime/store-events.d.ts.map +1 -1
  116. package/dist/agent-runtime/store-memory.d.ts +4 -0
  117. package/dist/agent-runtime/store-memory.d.ts.map +1 -0
  118. package/dist/agent-runtime/store-mutate.d.ts +13 -0
  119. package/dist/agent-runtime/store-mutate.d.ts.map +1 -0
  120. package/dist/agent-runtime/store-purge.d.ts +1 -1
  121. package/dist/agent-runtime/store-purge.d.ts.map +1 -1
  122. package/dist/agent-runtime/store-reads.d.ts +29 -0
  123. package/dist/agent-runtime/store-reads.d.ts.map +1 -0
  124. package/dist/agent-runtime/store-reduce-history.d.ts +10 -0
  125. package/dist/agent-runtime/store-reduce-history.d.ts.map +1 -0
  126. package/dist/agent-runtime/store-reduce-run.d.ts +14 -0
  127. package/dist/agent-runtime/store-reduce-run.d.ts.map +1 -0
  128. package/dist/agent-runtime/store-reduce-shared.d.ts +76 -0
  129. package/dist/agent-runtime/store-reduce-shared.d.ts.map +1 -0
  130. package/dist/agent-runtime/store-reduce-terminal.d.ts +6 -0
  131. package/dist/agent-runtime/store-reduce-terminal.d.ts.map +1 -0
  132. package/dist/agent-runtime/store-reducer.d.ts +24 -0
  133. package/dist/agent-runtime/store-reducer.d.ts.map +1 -0
  134. package/dist/agent-runtime/store-snapshot.d.ts +19 -0
  135. package/dist/agent-runtime/store-snapshot.d.ts.map +1 -0
  136. package/dist/agent-runtime/store.d.ts +1 -1
  137. package/dist/agent-runtime/store.d.ts.map +1 -1
  138. package/dist/application/admission-rate.d.ts +21 -0
  139. package/dist/application/admission-rate.d.ts.map +1 -0
  140. package/dist/application/admission-run.d.ts +8 -0
  141. package/dist/application/admission-run.d.ts.map +1 -0
  142. package/dist/application/admission.d.ts +1 -1
  143. package/dist/application/admission.d.ts.map +1 -1
  144. package/dist/application/diagnostic-journal-lock.d.ts +9 -34
  145. package/dist/application/diagnostic-journal-lock.d.ts.map +1 -1
  146. package/dist/application/diagnostic-journal-manager.d.ts.map +1 -1
  147. package/dist/application/diagnostic-journal-storage.d.ts.map +1 -1
  148. package/dist/application/events.d.ts +1 -1
  149. package/dist/application/events.d.ts.map +1 -1
  150. package/dist/application/file-state-store.d.ts +23 -0
  151. package/dist/application/file-state-store.d.ts.map +1 -0
  152. package/dist/application/health.d.ts +1 -1
  153. package/dist/application/health.d.ts.map +1 -1
  154. package/dist/application/kernel-admission.d.ts +8 -0
  155. package/dist/application/kernel-admission.d.ts.map +1 -0
  156. package/dist/application/kernel-contract.d.ts +142 -0
  157. package/dist/application/kernel-contract.d.ts.map +1 -0
  158. package/dist/application/kernel-resource-context.d.ts +24 -0
  159. package/dist/application/kernel-resource-context.d.ts.map +1 -0
  160. package/dist/application/kernel-restart.d.ts +5 -0
  161. package/dist/application/kernel-restart.d.ts.map +1 -0
  162. package/dist/application/kernel-rollback.d.ts +4 -0
  163. package/dist/application/kernel-rollback.d.ts.map +1 -0
  164. package/dist/application/kernel-shutdown.d.ts +6 -0
  165. package/dist/application/kernel-shutdown.d.ts.map +1 -0
  166. package/dist/application/kernel-start.d.ts +20 -0
  167. package/dist/application/kernel-start.d.ts.map +1 -0
  168. package/dist/application/kernel-state.d.ts +116 -0
  169. package/dist/application/kernel-state.d.ts.map +1 -0
  170. package/dist/application/kernel.d.ts +9 -140
  171. package/dist/application/kernel.d.ts.map +1 -1
  172. package/dist/application/latest-sink.d.ts +1 -1
  173. package/dist/application/latest-sink.d.ts.map +1 -1
  174. package/dist/application/notification-outbox.d.ts.map +1 -1
  175. package/dist/application/opentelemetry.d.ts +1 -1
  176. package/dist/application/opentelemetry.d.ts.map +1 -1
  177. package/dist/application/schedule.d.ts +0 -1
  178. package/dist/application/schedule.d.ts.map +1 -1
  179. package/dist/application/watch-hub-core.d.ts +122 -0
  180. package/dist/application/watch-hub-core.d.ts.map +1 -0
  181. package/dist/application/watch-hub.d.ts +3 -3
  182. package/dist/application/watch-hub.d.ts.map +1 -1
  183. package/dist/browser/client-executors.d.ts +14 -0
  184. package/dist/browser/client-executors.d.ts.map +1 -0
  185. package/dist/browser/client-multipart.d.ts +1 -1
  186. package/dist/browser/client-multipart.d.ts.map +1 -1
  187. package/dist/browser/client-url.d.ts +1 -1
  188. package/dist/browser/client-url.d.ts.map +1 -1
  189. package/dist/browser/client.d.ts +3 -2
  190. package/dist/browser/client.d.ts.map +1 -1
  191. package/dist/browser/contract-stream.d.ts +1 -1
  192. package/dist/browser/contract-stream.d.ts.map +1 -1
  193. package/dist/browser/http-fetch.d.ts +22 -0
  194. package/dist/browser/http-fetch.d.ts.map +1 -0
  195. package/dist/browser/http.d.ts +2 -4
  196. package/dist/browser/http.d.ts.map +1 -1
  197. package/dist/browser/live-state-core.d.ts +63 -0
  198. package/dist/browser/live-state-core.d.ts.map +1 -0
  199. package/dist/browser/live-state.d.ts.map +1 -1
  200. package/dist/browser/realtime-client.d.ts +26 -0
  201. package/dist/browser/realtime-client.d.ts.map +1 -0
  202. package/dist/browser/resumable.d.ts +1 -28
  203. package/dist/browser/resumable.d.ts.map +1 -1
  204. package/dist/browser/retained.d.ts.map +1 -0
  205. package/dist/browser/socket-io-connection.d.ts +82 -0
  206. package/dist/browser/socket-io-connection.d.ts.map +1 -0
  207. package/dist/browser/socket-io-peer.d.ts +20 -0
  208. package/dist/browser/socket-io-peer.d.ts.map +1 -0
  209. package/dist/browser/socket-io-trace.d.ts +31 -0
  210. package/dist/browser/socket-io-trace.d.ts.map +1 -0
  211. package/dist/browser/socket-io.d.ts +24 -18
  212. package/dist/browser/socket-io.d.ts.map +1 -1
  213. package/dist/browser/stream.d.ts +14 -2
  214. package/dist/browser/stream.d.ts.map +1 -1
  215. package/dist/contract/client-types.d.ts +134 -0
  216. package/dist/contract/client-types.d.ts.map +1 -0
  217. package/dist/contract/define-validation.d.ts +30 -0
  218. package/dist/contract/define-validation.d.ts.map +1 -0
  219. package/dist/contract/define.d.ts +47 -394
  220. package/dist/contract/define.d.ts.map +1 -1
  221. package/dist/contract/normalize.d.ts +56 -0
  222. package/dist/contract/normalize.d.ts.map +1 -0
  223. package/dist/contract/runtime-context.d.ts +131 -0
  224. package/dist/contract/runtime-context.d.ts.map +1 -0
  225. package/dist/contract/tool-options.d.ts +105 -0
  226. package/dist/contract/tool-options.d.ts.map +1 -0
  227. package/dist/contract/tool-view.d.ts +148 -0
  228. package/dist/contract/tool-view.d.ts.map +1 -0
  229. package/dist/declaration/declaration.d.ts.map +1 -0
  230. package/dist/durability/contract.d.ts +259 -0
  231. package/dist/durability/contract.d.ts.map +1 -0
  232. package/dist/durability/effect.d.ts +24 -0
  233. package/dist/durability/effect.d.ts.map +1 -0
  234. package/dist/durability/engine.d.ts +14 -0
  235. package/dist/durability/engine.d.ts.map +1 -0
  236. package/dist/durability/events.d.ts +103 -0
  237. package/dist/durability/events.d.ts.map +1 -0
  238. package/dist/durability/json.d.ts +3 -0
  239. package/dist/durability/json.d.ts.map +1 -0
  240. package/dist/durability/ledger.d.ts +27 -0
  241. package/dist/durability/ledger.d.ts.map +1 -0
  242. package/dist/durability/parks.d.ts +22 -0
  243. package/dist/durability/parks.d.ts.map +1 -0
  244. package/dist/durability/scheduler.d.ts +30 -0
  245. package/dist/durability/scheduler.d.ts.map +1 -0
  246. package/dist/entrypoints/agent-runtime/browser.d.ts +5 -0
  247. package/dist/entrypoints/agent-runtime/browser.d.ts.map +1 -0
  248. package/dist/entrypoints/agent-runtime/browser.js +124 -0
  249. package/dist/entrypoints/agent-runtime/coding-tools.d.ts +2 -0
  250. package/dist/entrypoints/agent-runtime/coding-tools.d.ts.map +1 -0
  251. package/dist/entrypoints/agent-runtime/coding-tools.js +22 -0
  252. package/dist/entrypoints/agent-runtime/harness.d.ts +2 -0
  253. package/dist/entrypoints/agent-runtime/harness.d.ts.map +1 -0
  254. package/dist/entrypoints/agent-runtime/harness.js +739 -0
  255. package/dist/entrypoints/agent-runtime/openrouter.d.ts +2 -0
  256. package/dist/entrypoints/agent-runtime/openrouter.d.ts.map +1 -0
  257. package/dist/entrypoints/agent-runtime/openrouter.js +270 -0
  258. package/dist/entrypoints/agent-runtime/sandbox.d.ts +5 -0
  259. package/dist/entrypoints/agent-runtime/sandbox.d.ts.map +1 -0
  260. package/dist/entrypoints/agent-runtime/sandbox.js +797 -0
  261. package/dist/entrypoints/agent-runtime/sqlite/bun.d.ts +2 -0
  262. package/dist/entrypoints/agent-runtime/sqlite/bun.d.ts.map +1 -0
  263. package/dist/entrypoints/agent-runtime/sqlite/bun.js +44 -0
  264. package/dist/entrypoints/agent-runtime/sqlite/node.d.ts +2 -0
  265. package/dist/entrypoints/agent-runtime/sqlite/node.d.ts.map +1 -0
  266. package/dist/entrypoints/agent-runtime/sqlite/node.js +46 -0
  267. package/dist/entrypoints/agent-runtime/testing.d.ts +4 -0
  268. package/dist/entrypoints/agent-runtime/testing.d.ts.map +1 -0
  269. package/dist/entrypoints/agent-runtime/testing.js +1116 -0
  270. package/dist/entrypoints/agent-runtime.d.ts +42 -0
  271. package/dist/entrypoints/agent-runtime.d.ts.map +1 -0
  272. package/dist/entrypoints/agent-runtime.js +2670 -0
  273. package/dist/entrypoints/application/diagnostic-journal.d.ts +21 -0
  274. package/dist/entrypoints/application/diagnostic-journal.d.ts.map +1 -0
  275. package/dist/entrypoints/application/diagnostic-journal.js +492 -0
  276. package/dist/entrypoints/application/grammy.d.ts +2 -0
  277. package/dist/entrypoints/application/grammy.d.ts.map +1 -0
  278. package/dist/entrypoints/application/grammy.js +169 -0
  279. package/dist/entrypoints/application/opentelemetry.d.ts +2 -0
  280. package/dist/entrypoints/application/opentelemetry.d.ts.map +1 -0
  281. package/dist/entrypoints/application/opentelemetry.js +250 -0
  282. package/dist/entrypoints/application/schemas.d.ts +15 -0
  283. package/dist/entrypoints/application/schemas.d.ts.map +1 -0
  284. package/dist/entrypoints/application/schemas.js +27 -0
  285. package/dist/entrypoints/application.d.ts +23 -0
  286. package/dist/entrypoints/application.d.ts.map +1 -0
  287. package/dist/entrypoints/application.js +2016 -0
  288. package/dist/entrypoints/bin/upgrade-cli.d.ts.map +1 -0
  289. package/dist/entrypoints/bin/upgrade-cli.js +177 -0
  290. package/dist/entrypoints/cli.d.ts +44 -0
  291. package/dist/entrypoints/cli.d.ts.map +1 -0
  292. package/dist/entrypoints/cli.js +773 -0
  293. package/dist/entrypoints/contract.d.ts +12 -0
  294. package/dist/entrypoints/contract.d.ts.map +1 -0
  295. package/dist/entrypoints/contract.js +64 -0
  296. package/dist/entrypoints/declaration.d.ts +2 -0
  297. package/dist/entrypoints/declaration.d.ts.map +1 -0
  298. package/dist/entrypoints/declaration.js +183 -0
  299. package/dist/entrypoints/files.d.ts +5 -0
  300. package/dist/entrypoints/files.d.ts.map +1 -0
  301. package/dist/entrypoints/files.js +111 -0
  302. package/dist/entrypoints/geo.d.ts +3 -0
  303. package/dist/entrypoints/geo.d.ts.map +1 -0
  304. package/dist/entrypoints/geo.js +245 -0
  305. package/dist/entrypoints/google.d.ts +2 -0
  306. package/dist/entrypoints/google.d.ts.map +1 -0
  307. package/dist/entrypoints/google.js +175 -0
  308. package/dist/entrypoints/index.d.ts +17 -0
  309. package/dist/entrypoints/index.d.ts.map +1 -0
  310. package/dist/entrypoints/index.js +764 -0
  311. package/dist/entrypoints/live.d.ts +19 -0
  312. package/dist/entrypoints/live.d.ts.map +1 -0
  313. package/dist/entrypoints/live.js +302 -0
  314. package/dist/entrypoints/node.d.ts +19 -0
  315. package/dist/entrypoints/node.d.ts.map +1 -0
  316. package/dist/entrypoints/node.js +308 -0
  317. package/dist/entrypoints/oauth.d.ts +2 -0
  318. package/dist/entrypoints/oauth.d.ts.map +1 -0
  319. package/dist/entrypoints/oauth.js +170 -0
  320. package/dist/entrypoints/observability.d.ts +19 -0
  321. package/dist/entrypoints/observability.d.ts.map +1 -0
  322. package/dist/entrypoints/observability.js +567 -0
  323. package/dist/entrypoints/primitives.d.ts +3 -0
  324. package/dist/entrypoints/primitives.d.ts.map +1 -0
  325. package/dist/entrypoints/primitives.js +749 -0
  326. package/dist/entrypoints/react.d.ts +5 -0
  327. package/dist/entrypoints/react.d.ts.map +1 -0
  328. package/dist/entrypoints/react.js +403 -0
  329. package/dist/entrypoints/release.d.ts +15 -0
  330. package/dist/entrypoints/release.d.ts.map +1 -0
  331. package/dist/entrypoints/release.js +196 -0
  332. package/dist/entrypoints/remote.d.ts +9 -0
  333. package/dist/entrypoints/remote.d.ts.map +1 -0
  334. package/dist/entrypoints/remote.js +66 -0
  335. package/dist/entrypoints/server.d.ts +39 -0
  336. package/dist/entrypoints/server.d.ts.map +1 -0
  337. package/dist/entrypoints/server.js +2009 -0
  338. package/dist/entrypoints/telegram.d.ts +3 -0
  339. package/dist/entrypoints/telegram.d.ts.map +1 -0
  340. package/dist/entrypoints/telegram.js +224 -0
  341. package/dist/entrypoints/testing.d.ts +10 -0
  342. package/dist/entrypoints/testing.d.ts.map +1 -0
  343. package/dist/entrypoints/testing.js +1377 -0
  344. package/dist/entrypoints/tools/connections.d.ts +19 -0
  345. package/dist/entrypoints/tools/connections.d.ts.map +1 -0
  346. package/dist/entrypoints/tools/connections.js +1110 -0
  347. package/dist/entrypoints/tools/contract.d.ts +29 -0
  348. package/dist/entrypoints/tools/contract.d.ts.map +1 -0
  349. package/dist/entrypoints/tools/contract.js +24 -0
  350. package/dist/entrypoints/tools/invoker.d.ts +9 -0
  351. package/dist/entrypoints/tools/invoker.d.ts.map +1 -0
  352. package/dist/entrypoints/tools/invoker.js +20 -0
  353. package/dist/entrypoints/tools.d.ts +54 -0
  354. package/dist/entrypoints/tools.d.ts.map +1 -0
  355. package/dist/entrypoints/tools.js +3009 -0
  356. package/dist/entrypoints/tracking/server.d.ts +15 -0
  357. package/dist/entrypoints/tracking/server.d.ts.map +1 -0
  358. package/dist/entrypoints/tracking.d.ts +24 -0
  359. package/dist/entrypoints/tracking.d.ts.map +1 -0
  360. package/dist/entrypoints/tracking.js +1140 -0
  361. package/dist/files/boundary.d.ts.map +1 -1
  362. package/dist/files/file-io.d.ts +14 -0
  363. package/dist/files/file-io.d.ts.map +1 -0
  364. package/dist/google/google.d.ts.map +1 -0
  365. package/dist/index-0b1ess5e.js +38 -0
  366. package/dist/index-1j8pm5t0.js +412 -0
  367. package/dist/index-1zbbzgfh.js +89 -0
  368. package/dist/index-2bxbyab0.js +47 -0
  369. package/dist/index-2gxzjvyr.js +266 -0
  370. package/dist/index-35mh5bhj.js +177 -0
  371. package/dist/index-48ffdxgk.js +6 -0
  372. package/dist/index-4gcnakhx.js +82 -0
  373. package/dist/index-55hkhm67.js +343 -0
  374. package/dist/index-79z7m7dt.js +675 -0
  375. package/dist/index-7f68ghdn.js +3618 -0
  376. package/dist/index-7p1f0vp2.js +154 -0
  377. package/dist/index-83bdg97s.js +16 -0
  378. package/dist/index-863ea9jb.js +154 -0
  379. package/dist/index-8p52kd5p.js +242 -0
  380. package/dist/index-d9pk3td4.js +326 -0
  381. package/dist/index-dce5wxcq.js +63 -0
  382. package/dist/index-e01r054k.js +105 -0
  383. package/dist/index-ensd0r74.js +595 -0
  384. package/dist/index-eqqvgdb3.js +46 -0
  385. package/dist/index-gxrt5h6v.js +341 -0
  386. package/dist/index-h6eeys1v.js +211 -0
  387. package/dist/index-ham5sz8m.js +734 -0
  388. package/dist/index-het2he5g.js +1387 -0
  389. package/dist/index-hffjpmq9.js +30 -0
  390. package/dist/index-hmp4800j.js +51 -0
  391. package/dist/index-k30h66yd.js +317 -0
  392. package/dist/index-k5hsfc3j.js +31 -0
  393. package/dist/index-khtgb21r.js +92 -0
  394. package/dist/index-m9zn6cpq.js +51 -0
  395. package/dist/index-ndddxtyx.js +324 -0
  396. package/dist/index-ngfhvfpd.js +30 -0
  397. package/dist/index-np4m8hd3.js +1205 -0
  398. package/dist/index-p3vsv1fb.js +3493 -0
  399. package/dist/index-p5r7qpdd.js +85 -0
  400. package/dist/index-p9e0w8hs.js +1084 -0
  401. package/dist/index-p9sh0xx4.js +64 -0
  402. package/dist/index-paz6sgdp.js +371 -0
  403. package/dist/index-px2gm2jp.js +448 -0
  404. package/dist/index-qwhynv6x.js +103 -0
  405. package/dist/index-s812ycat.js +65 -0
  406. package/dist/index-sp1tzwnb.js +281 -0
  407. package/dist/index-t9rhjr9f.js +2306 -0
  408. package/dist/index-v260df89.js +342 -0
  409. package/dist/index-w906953s.js +946 -0
  410. package/dist/index-wdkt63w3.js +214 -0
  411. package/dist/index-wqgjfstn.js +18 -0
  412. package/dist/index-wsm5w4ee.js +1023 -0
  413. package/dist/index-xw3s75nj.js +100 -0
  414. package/dist/index-yw4fzmdz.js +268 -0
  415. package/dist/index-zfrhfn82.js +85 -0
  416. package/dist/index-znfs20ss.js +98 -0
  417. package/dist/internal/atomic-file.d.ts +23 -2
  418. package/dist/internal/atomic-file.d.ts.map +1 -1
  419. package/dist/internal/backoff.d.ts +29 -0
  420. package/dist/internal/backoff.d.ts.map +1 -0
  421. package/dist/internal/canonical-json.d.ts +21 -11
  422. package/dist/internal/canonical-json.d.ts.map +1 -1
  423. package/dist/internal/channel.d.ts.map +1 -0
  424. package/dist/internal/exclusive-lock.d.ts +51 -0
  425. package/dist/internal/exclusive-lock.d.ts.map +1 -0
  426. package/dist/internal/logger.d.ts.map +1 -0
  427. package/dist/internal/process-identity.d.ts +47 -0
  428. package/dist/internal/process-identity.d.ts.map +1 -0
  429. package/dist/internal/request.d.ts.map +1 -0
  430. package/dist/internal/stable-digest.d.ts +0 -43
  431. package/dist/internal/stable-digest.d.ts.map +1 -1
  432. package/dist/internal/typed.d.ts +0 -8
  433. package/dist/internal/typed.d.ts.map +1 -1
  434. package/dist/internal/with-exclusive-lock.d.ts +67 -0
  435. package/dist/internal/with-exclusive-lock.d.ts.map +1 -0
  436. package/dist/internal/zod-issues.d.ts +38 -0
  437. package/dist/internal/zod-issues.d.ts.map +1 -0
  438. package/dist/json-schema/dialect.d.ts +17 -0
  439. package/dist/json-schema/dialect.d.ts.map +1 -0
  440. package/dist/json-schema/json-schema.d.ts.map +1 -0
  441. package/dist/live/watch-client.d.ts.map +1 -1
  442. package/dist/live/watch-delta.d.ts.map +1 -1
  443. package/dist/oauth/authorization-code.d.ts +57 -0
  444. package/dist/oauth/authorization-code.d.ts.map +1 -0
  445. package/dist/observability/audit.d.ts +3 -3
  446. package/dist/observability/audit.d.ts.map +1 -1
  447. package/dist/observability/bounded-logger.d.ts +1 -1
  448. package/dist/observability/bounded-logger.d.ts.map +1 -1
  449. package/dist/observability/bounded-sink.d.ts +81 -0
  450. package/dist/observability/bounded-sink.d.ts.map +1 -0
  451. package/dist/observability/context.d.ts +1 -1
  452. package/dist/observability/context.d.ts.map +1 -1
  453. package/dist/observability/event.d.ts +2 -1
  454. package/dist/observability/event.d.ts.map +1 -1
  455. package/dist/observability/work.d.ts +1 -1
  456. package/dist/observability/work.d.ts.map +1 -1
  457. package/dist/primitives/audit.d.ts +1 -1
  458. package/dist/primitives/audit.d.ts.map +1 -1
  459. package/dist/primitives/export-operation.d.ts +4 -2
  460. package/dist/primitives/export-operation.d.ts.map +1 -1
  461. package/dist/realtime/registry.d.ts +0 -5
  462. package/dist/realtime/registry.d.ts.map +1 -1
  463. package/dist/realtime/socket.d.ts +1 -1
  464. package/dist/realtime/socket.d.ts.map +1 -1
  465. package/dist/server/bun.d.ts +0 -1
  466. package/dist/server/bun.d.ts.map +1 -1
  467. package/dist/server/context-contribution.d.ts +1 -1
  468. package/dist/server/context-contribution.d.ts.map +1 -1
  469. package/dist/server/context.d.ts +2 -2
  470. package/dist/server/context.d.ts.map +1 -1
  471. package/dist/server/contract-method.d.ts +15 -0
  472. package/dist/server/contract-method.d.ts.map +1 -0
  473. package/dist/server/contract-stream.d.ts +1 -1
  474. package/dist/server/contract-stream.d.ts.map +1 -1
  475. package/dist/server/create.d.ts +8 -0
  476. package/dist/server/create.d.ts.map +1 -1
  477. package/dist/server/endpoint-dispatch.d.ts +10 -0
  478. package/dist/server/endpoint-dispatch.d.ts.map +1 -0
  479. package/dist/server/endpoint-response.d.ts +19 -0
  480. package/dist/server/endpoint-response.d.ts.map +1 -0
  481. package/dist/server/error-dispatch.d.ts +17 -1
  482. package/dist/server/error-dispatch.d.ts.map +1 -1
  483. package/dist/server/error-hook.d.ts +2 -2
  484. package/dist/server/error-hook.d.ts.map +1 -1
  485. package/dist/server/handler-state.d.ts +44 -0
  486. package/dist/server/handler-state.d.ts.map +1 -0
  487. package/dist/server/implement-registry.d.ts +54 -0
  488. package/dist/server/implement-registry.d.ts.map +1 -0
  489. package/dist/server/implement.d.ts +9 -55
  490. package/dist/server/implement.d.ts.map +1 -1
  491. package/dist/server/middleware/auth.d.ts +1 -31
  492. package/dist/server/middleware/auth.d.ts.map +1 -1
  493. package/dist/server/middleware/cors.d.ts +17 -0
  494. package/dist/server/middleware/cors.d.ts.map +1 -1
  495. package/dist/server/middleware/jwt.d.ts +31 -0
  496. package/dist/server/middleware/jwt.d.ts.map +1 -0
  497. package/dist/server/middleware/trust-fence.d.ts +1 -1
  498. package/dist/server/middleware/trust-fence.d.ts.map +1 -1
  499. package/dist/server/multipart-reader.d.ts +22 -0
  500. package/dist/server/multipart-reader.d.ts.map +1 -0
  501. package/dist/server/multipart.d.ts +1 -1
  502. package/dist/server/multipart.d.ts.map +1 -1
  503. package/dist/server/oauth/cimd.d.ts +88 -0
  504. package/dist/server/oauth/cimd.d.ts.map +1 -0
  505. package/dist/server/oauth/endpoints.d.ts +39 -0
  506. package/dist/server/oauth/endpoints.d.ts.map +1 -0
  507. package/dist/server/oauth/metadata.d.ts +28 -0
  508. package/dist/server/oauth/metadata.d.ts.map +1 -0
  509. package/dist/server/oauth/provider.d.ts +117 -0
  510. package/dist/server/oauth/provider.d.ts.map +1 -0
  511. package/dist/server/realtime.d.ts +1 -1
  512. package/dist/server/realtime.d.ts.map +1 -1
  513. package/dist/server/request-completion.d.ts +16 -0
  514. package/dist/server/request-completion.d.ts.map +1 -0
  515. package/dist/server/response-metadata.d.ts +1 -1
  516. package/dist/server/response-metadata.d.ts.map +1 -1
  517. package/dist/server/route-table.d.ts +9 -0
  518. package/dist/server/route-table.d.ts.map +1 -0
  519. package/dist/server/stream.d.ts +0 -13
  520. package/dist/server/stream.d.ts.map +1 -1
  521. package/dist/server/streaming-pump.d.ts +66 -0
  522. package/dist/server/streaming-pump.d.ts.map +1 -0
  523. package/dist/server/streaming-route.d.ts +12 -5
  524. package/dist/server/streaming-route.d.ts.map +1 -1
  525. package/dist/server/types.d.ts +10 -4
  526. package/dist/server/types.d.ts.map +1 -1
  527. package/dist/server/unix-client-bun.d.ts.map +1 -1
  528. package/dist/server/unix-client-http1.d.ts +76 -0
  529. package/dist/server/unix-client-http1.d.ts.map +1 -0
  530. package/dist/server/unix-client.d.ts.map +1 -1
  531. package/dist/testing/handler-clients.d.ts +32 -0
  532. package/dist/testing/handler-clients.d.ts.map +1 -0
  533. package/dist/testing/managed-resource-conformance-scenarios.d.ts.map +1 -1
  534. package/dist/testing/realtime-probe.d.ts +33 -0
  535. package/dist/testing/realtime-probe.d.ts.map +1 -0
  536. package/dist/testing/surface-conformance.d.ts +2 -32
  537. package/dist/testing/surface-conformance.d.ts.map +1 -1
  538. package/dist/testing/surface-manifest-digest.d.ts +44 -0
  539. package/dist/testing/surface-manifest-digest.d.ts.map +1 -0
  540. package/dist/testing/surface-manifest.d.ts +30 -4
  541. package/dist/testing/surface-manifest.d.ts.map +1 -1
  542. package/dist/tools/agent.d.ts +1 -1
  543. package/dist/tools/agent.d.ts.map +1 -1
  544. package/dist/tools/cli/args-fields.d.ts +31 -0
  545. package/dist/tools/cli/args-fields.d.ts.map +1 -0
  546. package/dist/tools/cli/args-route.d.ts +42 -0
  547. package/dist/tools/cli/args-route.d.ts.map +1 -0
  548. package/dist/tools/cli/args-view.d.ts +32 -0
  549. package/dist/tools/cli/args-view.d.ts.map +1 -0
  550. package/dist/tools/cli/args.d.ts +80 -0
  551. package/dist/tools/cli/args.d.ts.map +1 -0
  552. package/dist/tools/cli/argument-error.d.ts +5 -0
  553. package/dist/tools/cli/argument-error.d.ts.map +1 -0
  554. package/dist/tools/cli/checkpoint.d.ts +24 -0
  555. package/dist/tools/cli/checkpoint.d.ts.map +1 -0
  556. package/dist/tools/cli/command.d.ts +70 -0
  557. package/dist/tools/cli/command.d.ts.map +1 -0
  558. package/dist/tools/cli/config.d.ts +90 -0
  559. package/dist/tools/cli/config.d.ts.map +1 -0
  560. package/dist/tools/cli/create-cli.d.ts +36 -0
  561. package/dist/tools/cli/create-cli.d.ts.map +1 -0
  562. package/dist/tools/cli/download.d.ts +8 -0
  563. package/dist/tools/cli/download.d.ts.map +1 -0
  564. package/dist/tools/cli/format.d.ts +50 -0
  565. package/dist/tools/cli/format.d.ts.map +1 -0
  566. package/dist/tools/cli/help.d.ts +24 -0
  567. package/dist/tools/cli/help.d.ts.map +1 -0
  568. package/dist/tools/cli/installer.d.ts +34 -0
  569. package/dist/tools/cli/installer.d.ts.map +1 -0
  570. package/dist/tools/cli/invoke.d.ts +144 -0
  571. package/dist/tools/cli/invoke.d.ts.map +1 -0
  572. package/dist/tools/cli/io.d.ts +10 -0
  573. package/dist/tools/cli/io.d.ts.map +1 -0
  574. package/dist/tools/cli/managed-surface.d.ts +30 -0
  575. package/dist/tools/cli/managed-surface.d.ts.map +1 -0
  576. package/dist/tools/cli/manifest.d.ts +80 -0
  577. package/dist/tools/cli/manifest.d.ts.map +1 -0
  578. package/dist/tools/cli/policy.d.ts +27 -0
  579. package/dist/tools/cli/policy.d.ts.map +1 -0
  580. package/dist/tools/cli/prepare.d.ts +14 -0
  581. package/dist/tools/cli/prepare.d.ts.map +1 -0
  582. package/dist/tools/cli/profile.d.ts +40 -0
  583. package/dist/tools/cli/profile.d.ts.map +1 -0
  584. package/dist/tools/cli/run-managed.d.ts +5 -0
  585. package/dist/tools/cli/run-managed.d.ts.map +1 -0
  586. package/dist/tools/cli/run-native.d.ts +9 -0
  587. package/dist/tools/cli/run-native.d.ts.map +1 -0
  588. package/dist/tools/cli/session.d.ts +40 -0
  589. package/dist/tools/cli/session.d.ts.map +1 -0
  590. package/dist/tools/cli/signature.d.ts +81 -0
  591. package/dist/tools/cli/signature.d.ts.map +1 -0
  592. package/dist/tools/cli/stream.d.ts +93 -0
  593. package/dist/tools/cli/stream.d.ts.map +1 -0
  594. package/dist/tools/cli/update.d.ts +145 -0
  595. package/dist/tools/cli/update.d.ts.map +1 -0
  596. package/dist/tools/cli/view.d.ts +12 -0
  597. package/dist/tools/cli/view.d.ts.map +1 -0
  598. package/dist/tools/cli/wait.d.ts +54 -0
  599. package/dist/tools/cli/wait.d.ts.map +1 -0
  600. package/dist/tools/connections/runtime.d.ts +1 -1
  601. package/dist/tools/connections/runtime.d.ts.map +1 -1
  602. package/dist/tools/connections/types.d.ts +3 -3
  603. package/dist/tools/connections/types.d.ts.map +1 -1
  604. package/dist/tools/durability-context.d.ts +1 -1
  605. package/dist/tools/durability-context.d.ts.map +1 -1
  606. package/dist/tools/execute-args.d.ts +23 -0
  607. package/dist/tools/execute-args.d.ts.map +1 -0
  608. package/dist/tools/execute-hooks.d.ts +146 -0
  609. package/dist/tools/execute-hooks.d.ts.map +1 -0
  610. package/dist/tools/execute-result.d.ts +40 -0
  611. package/dist/tools/execute-result.d.ts.map +1 -0
  612. package/dist/tools/execute.d.ts +31 -193
  613. package/dist/tools/execute.d.ts.map +1 -1
  614. package/dist/tools/internal/surface-projector.d.ts +9 -6
  615. package/dist/tools/internal/surface-projector.d.ts.map +1 -1
  616. package/dist/tools/internal/tool-view.d.ts +41 -0
  617. package/dist/tools/internal/tool-view.d.ts.map +1 -0
  618. package/dist/tools/invoker.d.ts +13 -4
  619. package/dist/tools/invoker.d.ts.map +1 -1
  620. package/dist/tools/lifecycle.d.ts +1 -1
  621. package/dist/tools/lifecycle.d.ts.map +1 -1
  622. package/dist/tools/list-names.d.ts +3 -3
  623. package/dist/tools/list-names.d.ts.map +1 -1
  624. package/dist/tools/manifest.d.ts +2 -2
  625. package/dist/tools/manifest.d.ts.map +1 -1
  626. package/dist/tools/mcp/app.d.ts +62 -0
  627. package/dist/tools/mcp/app.d.ts.map +1 -0
  628. package/dist/tools/mcp/catalog.d.ts +68 -0
  629. package/dist/tools/mcp/catalog.d.ts.map +1 -0
  630. package/dist/tools/mcp/handler.d.ts +46 -0
  631. package/dist/tools/mcp/handler.d.ts.map +1 -0
  632. package/dist/tools/mcp/mount.d.ts +152 -0
  633. package/dist/tools/mcp/mount.d.ts.map +1 -0
  634. package/dist/tools/mcp/prepare.d.ts +76 -0
  635. package/dist/tools/mcp/prepare.d.ts.map +1 -0
  636. package/dist/tools/mcp/progress.d.ts +46 -0
  637. package/dist/tools/mcp/progress.d.ts.map +1 -0
  638. package/dist/tools/mcp/register.d.ts +36 -0
  639. package/dist/tools/mcp/register.d.ts.map +1 -0
  640. package/dist/tools/mcp/round-context.d.ts +38 -0
  641. package/dist/tools/mcp/round-context.d.ts.map +1 -0
  642. package/dist/tools/mcp/round-policy.d.ts +33 -0
  643. package/dist/tools/mcp/round-policy.d.ts.map +1 -0
  644. package/dist/tools/mcp/round.d.ts +53 -0
  645. package/dist/tools/mcp/round.d.ts.map +1 -0
  646. package/dist/tools/mcp/runtime-tools.d.ts +25 -0
  647. package/dist/tools/mcp/runtime-tools.d.ts.map +1 -0
  648. package/dist/tools/mcp/stdio-signals.d.ts +33 -0
  649. package/dist/tools/mcp/stdio-signals.d.ts.map +1 -0
  650. package/dist/tools/mcp/stdio.d.ts +20 -0
  651. package/dist/tools/mcp/stdio.d.ts.map +1 -0
  652. package/dist/tools/mcp/trace.d.ts +12 -0
  653. package/dist/tools/mcp/trace.d.ts.map +1 -0
  654. package/dist/tools/mount.d.ts +14 -7
  655. package/dist/tools/mount.d.ts.map +1 -1
  656. package/dist/tools/native-definition.d.ts +4 -3
  657. package/dist/tools/native-definition.d.ts.map +1 -1
  658. package/dist/tools/operations/async-operation-binding-types.d.ts +127 -0
  659. package/dist/tools/operations/async-operation-binding-types.d.ts.map +1 -0
  660. package/dist/tools/operations/async-operation-binding.d.ts +28 -0
  661. package/dist/tools/operations/async-operation-binding.d.ts.map +1 -0
  662. package/dist/tools/operations/async-operation-canonical-types.d.ts +110 -0
  663. package/dist/tools/operations/async-operation-canonical-types.d.ts.map +1 -0
  664. package/dist/tools/operations/async-operation-canonical.d.ts +7 -0
  665. package/dist/tools/operations/async-operation-canonical.d.ts.map +1 -0
  666. package/dist/tools/operations/async-operation-contract.d.ts.map +1 -0
  667. package/dist/tools/operations/async-operation-id.d.ts +23 -0
  668. package/dist/tools/operations/async-operation-id.d.ts.map +1 -0
  669. package/dist/tools/operations/async-operation-runtime-tools.d.ts +41 -0
  670. package/dist/tools/operations/async-operation-runtime-tools.d.ts.map +1 -0
  671. package/dist/tools/operations/async-operation-runtime-types.d.ts +69 -0
  672. package/dist/tools/operations/async-operation-runtime-types.d.ts.map +1 -0
  673. package/dist/tools/operations/async-operation-runtime.d.ts +5 -0
  674. package/dist/tools/operations/async-operation-runtime.d.ts.map +1 -0
  675. package/dist/tools/operations/define-wait-tool.d.ts +22 -0
  676. package/dist/tools/operations/define-wait-tool.d.ts.map +1 -0
  677. package/dist/tools/operations/mount-wait.d.ts.map +1 -0
  678. package/dist/tools/operations/wait-core.d.ts.map +1 -0
  679. package/dist/tools/remote.d.ts +1 -1
  680. package/dist/tools/remote.d.ts.map +1 -1
  681. package/dist/tools/runtime-tool.d.ts +13 -4
  682. package/dist/tools/runtime-tool.d.ts.map +1 -1
  683. package/dist/tools/schema/coerce.d.ts.map +1 -0
  684. package/dist/tools/schema/flatten-join.d.ts.map +1 -0
  685. package/dist/tools/schema/flatten.d.ts.map +1 -0
  686. package/dist/tools/schema/portable-formats.d.ts.map +1 -0
  687. package/dist/tools/schema/presentation.d.ts +24 -0
  688. package/dist/tools/schema/presentation.d.ts.map +1 -0
  689. package/dist/tools/schema/schema.d.ts.map +1 -0
  690. package/dist/tools/schema/untyped-properties.d.ts.map +1 -0
  691. package/dist/tools/surface.d.ts +2 -3
  692. package/dist/tools/surface.d.ts.map +1 -1
  693. package/dist/tools/tool-logger.d.ts +1 -1
  694. package/dist/tools/tool-logger.d.ts.map +1 -1
  695. package/dist/tools/toolkit.d.ts +4 -4
  696. package/dist/tools/toolkit.d.ts.map +1 -1
  697. package/dist/tools/transfer/define-download-tool.d.ts +18 -0
  698. package/dist/tools/transfer/define-download-tool.d.ts.map +1 -0
  699. package/dist/tools/transfer/define-upload-tool.d.ts +16 -0
  700. package/dist/tools/transfer/define-upload-tool.d.ts.map +1 -0
  701. package/dist/tools/transfer/define-view-file-tool.d.ts +10 -0
  702. package/dist/tools/transfer/define-view-file-tool.d.ts.map +1 -0
  703. package/dist/tools/transfer/download-core.d.ts +20 -0
  704. package/dist/tools/transfer/download-core.d.ts.map +1 -0
  705. package/dist/tools/transfer/managed-file-error.d.ts +6 -0
  706. package/dist/tools/transfer/managed-file-error.d.ts.map +1 -0
  707. package/dist/tools/transfer/mount-download.d.ts +41 -0
  708. package/dist/tools/transfer/mount-download.d.ts.map +1 -0
  709. package/dist/tools/transfer/mount-upload.d.ts +21 -0
  710. package/dist/tools/transfer/mount-upload.d.ts.map +1 -0
  711. package/dist/tools/transfer/native-result.d.ts.map +1 -0
  712. package/dist/tools/transfer/upload-core.d.ts +4 -0
  713. package/dist/tools/transfer/upload-core.d.ts.map +1 -0
  714. package/dist/tools/transfer/view-file-contract.d.ts.map +1 -0
  715. package/dist/tools/transfer/view-file.d.ts +62 -0
  716. package/dist/tools/transfer/view-file.d.ts.map +1 -0
  717. package/dist/tools/transports.d.ts +1 -1
  718. package/dist/tools/transports.d.ts.map +1 -1
  719. package/dist/tracking/client-listeners.d.ts +30 -0
  720. package/dist/tracking/client-listeners.d.ts.map +1 -0
  721. package/dist/tracking/client-visit.d.ts +61 -0
  722. package/dist/tracking/client-visit.d.ts.map +1 -0
  723. package/dist/tracking/client.d.ts +3 -2
  724. package/dist/tracking/client.d.ts.map +1 -1
  725. package/dist/tracking/contract.d.ts +1 -1
  726. package/dist/tracking/contract.d.ts.map +1 -1
  727. package/llms/agent-runtime-browser.txt +33 -0
  728. package/llms/agent-runtime-coding-tools.txt +58 -0
  729. package/llms/agent-runtime-harness.txt +45 -0
  730. package/llms/agent-runtime-openrouter.txt +22 -0
  731. package/llms/agent-runtime-sandbox.txt +159 -0
  732. package/llms/agent-runtime-sqlite-bun.txt +29 -0
  733. package/llms/agent-runtime-sqlite-node.txt +26 -0
  734. package/llms/agent-runtime-testing.txt +30 -0
  735. package/llms/agent-runtime.2.txt +550 -0
  736. package/llms/agent-runtime.3.txt +311 -0
  737. package/llms/agent-runtime.txt +893 -0
  738. package/llms/application-diagnostic-journal.txt +30 -0
  739. package/llms/application-grammy.txt +27 -0
  740. package/llms/application-opentelemetry.txt +27 -0
  741. package/llms/application-schemas.txt +42 -0
  742. package/llms/application.2.txt +487 -0
  743. package/llms/application.txt +886 -0
  744. package/llms/cli.2.txt +80 -0
  745. package/llms/cli.txt +948 -0
  746. package/llms/contract.txt +606 -0
  747. package/llms/declaration.txt +286 -0
  748. package/llms/files.txt +33 -0
  749. package/llms/geo.txt +114 -0
  750. package/llms/google.txt +27 -0
  751. package/llms/live.txt +471 -0
  752. package/llms/node.txt +43 -0
  753. package/llms/oauth.txt +136 -0
  754. package/llms/observability.txt +893 -0
  755. package/llms/primitives.txt +158 -0
  756. package/llms/react.txt +184 -0
  757. package/llms/release.txt +176 -0
  758. package/llms/remote.txt +25 -0
  759. package/llms/server.2.txt +361 -0
  760. package/llms/server.3.txt +1031 -0
  761. package/llms/server.4.txt +905 -0
  762. package/llms/server.5.txt +250 -0
  763. package/llms/server.txt +996 -0
  764. package/llms/stitchkit.2.txt +836 -0
  765. package/llms/stitchkit.3.txt +147 -0
  766. package/llms/stitchkit.txt +260 -0
  767. package/llms/telegram.txt +30 -0
  768. package/llms/testing.txt +676 -0
  769. package/llms/tools-connections.txt +45 -0
  770. package/llms/tools-contract.txt +9 -0
  771. package/llms/tools-invoker.txt +9 -0
  772. package/llms/tools.2.txt +647 -0
  773. package/llms/tools.3.txt +288 -0
  774. package/llms/tools.txt +966 -0
  775. package/llms/tracking-server.txt +32 -0
  776. package/llms/tracking.txt +263 -0
  777. package/llms/upgrading-0.37.0-0.50.0.txt +947 -0
  778. package/llms/upgrading-0.53.0-0.67.0.txt +1174 -0
  779. package/llms/upgrading-0.68.0-0.94.0.txt +1159 -0
  780. package/llms/upgrading.txt +215 -0
  781. package/llms-full.txt +312 -77
  782. package/llms.txt +54 -5
  783. package/package.json +84 -83
  784. package/dist/agent-runtime/durability-contract.d.ts +0 -176
  785. package/dist/agent-runtime/durability-contract.d.ts.map +0 -1
  786. package/dist/agent-runtime/durability-json.d.ts +0 -3
  787. package/dist/agent-runtime/durability-json.d.ts.map +0 -1
  788. package/dist/agent-runtime/durability-ledger.d.ts +0 -16
  789. package/dist/agent-runtime/durability-ledger.d.ts.map +0 -1
  790. package/dist/agent-runtime/durability-scheduler.d.ts +0 -29
  791. package/dist/agent-runtime/durability-scheduler.d.ts.map +0 -1
  792. package/dist/agent-runtime/durability.d.ts +0 -14
  793. package/dist/agent-runtime/durability.d.ts.map +0 -1
  794. package/dist/agent-runtime/store-driver.d.ts +0 -814
  795. package/dist/agent-runtime/store-driver.d.ts.map +0 -1
  796. package/dist/agent-runtime-browser.d.ts +0 -5
  797. package/dist/agent-runtime-browser.d.ts.map +0 -1
  798. package/dist/agent-runtime-browser.js +0 -124
  799. package/dist/agent-runtime-coding-tools.d.ts +0 -2
  800. package/dist/agent-runtime-coding-tools.d.ts.map +0 -1
  801. package/dist/agent-runtime-coding-tools.js +0 -23
  802. package/dist/agent-runtime-harness.d.ts +0 -2
  803. package/dist/agent-runtime-harness.d.ts.map +0 -1
  804. package/dist/agent-runtime-harness.js +0 -729
  805. package/dist/agent-runtime-openrouter.d.ts +0 -29
  806. package/dist/agent-runtime-openrouter.d.ts.map +0 -1
  807. package/dist/agent-runtime-openrouter.js +0 -270
  808. package/dist/agent-runtime-sandbox.d.ts +0 -5
  809. package/dist/agent-runtime-sandbox.d.ts.map +0 -1
  810. package/dist/agent-runtime-sandbox.js +0 -798
  811. package/dist/agent-runtime-sqlite-bun.d.ts +0 -11
  812. package/dist/agent-runtime-sqlite-bun.d.ts.map +0 -1
  813. package/dist/agent-runtime-sqlite-bun.js +0 -42
  814. package/dist/agent-runtime-sqlite-node.d.ts +0 -11
  815. package/dist/agent-runtime-sqlite-node.d.ts.map +0 -1
  816. package/dist/agent-runtime-sqlite-node.js +0 -44
  817. package/dist/agent-runtime-testing.d.ts +0 -3
  818. package/dist/agent-runtime-testing.d.ts.map +0 -1
  819. package/dist/agent-runtime-testing.js +0 -156
  820. package/dist/agent-runtime.d.ts +0 -38
  821. package/dist/agent-runtime.d.ts.map +0 -1
  822. package/dist/agent-runtime.js +0 -2607
  823. package/dist/application/channel.d.ts.map +0 -1
  824. package/dist/application-diagnostic-journal.d.ts +0 -21
  825. package/dist/application-diagnostic-journal.d.ts.map +0 -1
  826. package/dist/application-diagnostic-journal.js +0 -632
  827. package/dist/application-grammy.d.ts +0 -2
  828. package/dist/application-grammy.d.ts.map +0 -1
  829. package/dist/application-grammy.js +0 -169
  830. package/dist/application-opentelemetry.d.ts +0 -2
  831. package/dist/application-opentelemetry.d.ts.map +0 -1
  832. package/dist/application-opentelemetry.js +0 -250
  833. package/dist/application-schemas.d.ts +0 -15
  834. package/dist/application-schemas.d.ts.map +0 -1
  835. package/dist/application-schemas.js +0 -27
  836. package/dist/application.d.ts +0 -22
  837. package/dist/application.d.ts.map +0 -1
  838. package/dist/application.js +0 -1977
  839. package/dist/cli.d.ts +0 -41
  840. package/dist/cli.d.ts.map +0 -1
  841. package/dist/cli.js +0 -753
  842. package/dist/contract/index.d.ts +0 -8
  843. package/dist/contract/index.d.ts.map +0 -1
  844. package/dist/contract/index.js +0 -55
  845. package/dist/declaration.d.ts.map +0 -1
  846. package/dist/declaration.js +0 -183
  847. package/dist/files.d.ts +0 -3
  848. package/dist/files.d.ts.map +0 -1
  849. package/dist/files.js +0 -15
  850. package/dist/geo.d.ts +0 -3
  851. package/dist/geo.d.ts.map +0 -1
  852. package/dist/geo.js +0 -245
  853. package/dist/google.d.ts.map +0 -1
  854. package/dist/google.js +0 -175
  855. package/dist/index-0a349c33.js +0 -470
  856. package/dist/index-0j3vcp5m.js +0 -28
  857. package/dist/index-2c2bjw3s.js +0 -51
  858. package/dist/index-2na0qrfn.js +0 -214
  859. package/dist/index-2qzskm8h.js +0 -63
  860. package/dist/index-3bmnp41g.js +0 -2169
  861. package/dist/index-3xwxfj4z.js +0 -334
  862. package/dist/index-4fpa9dy2.js +0 -51
  863. package/dist/index-6kyksz9y.js +0 -268
  864. package/dist/index-77fekveh.js +0 -44
  865. package/dist/index-7gnkny4z.js +0 -326
  866. package/dist/index-7zbps32p.js +0 -89
  867. package/dist/index-9f8ztey6.js +0 -588
  868. package/dist/index-a11g2kry.js +0 -866
  869. package/dist/index-a916km3r.js +0 -45
  870. package/dist/index-actkayzn.js +0 -367
  871. package/dist/index-bn2cjajt.js +0 -524
  872. package/dist/index-bx75zwt7.js +0 -63
  873. package/dist/index-cby4ar3v.js +0 -46
  874. package/dist/index-cnyk6te3.js +0 -77
  875. package/dist/index-cxqhvq21.js +0 -413
  876. package/dist/index-e0znv5gn.js +0 -176
  877. package/dist/index-e42wzzz5.js +0 -154
  878. package/dist/index-f477k430.js +0 -324
  879. package/dist/index-f9mb610r.js +0 -177
  880. package/dist/index-fadnxwna.js +0 -1046
  881. package/dist/index-fq77yfzc.js +0 -1303
  882. package/dist/index-h9etkkyk.js +0 -1126
  883. package/dist/index-hrbajay7.js +0 -1196
  884. package/dist/index-kw9t5ayn.js +0 -507
  885. package/dist/index-mzvgxp0n.js +0 -80
  886. package/dist/index-n0f51dfn.js +0 -3170
  887. package/dist/index-p13mwz16.js +0 -16
  888. package/dist/index-s8cnx02s.js +0 -90
  889. package/dist/index-sr93cwf9.js +0 -325
  890. package/dist/index-tmwcrptx.js +0 -85
  891. package/dist/index-v5573g1k.js +0 -142
  892. package/dist/index-vjpvjqpn.js +0 -86
  893. package/dist/index-vk3kq9sb.js +0 -3344
  894. package/dist/index-wc4x00bn.js +0 -103
  895. package/dist/index-wnfk50r0.js +0 -211
  896. package/dist/index-yewwh1w4.js +0 -647
  897. package/dist/index-yn8remb1.js +0 -290
  898. package/dist/index-ywd0y6m1.js +0 -394
  899. package/dist/index-zwkgfq1s.js +0 -345
  900. package/dist/index.d.ts +0 -14
  901. package/dist/index.d.ts.map +0 -1
  902. package/dist/index.js +0 -632
  903. package/dist/internal/errors.d.ts +0 -92
  904. package/dist/internal/errors.d.ts.map +0 -1
  905. package/dist/internal/observability-sink.d.ts +0 -81
  906. package/dist/internal/observability-sink.d.ts.map +0 -1
  907. package/dist/live.d.ts +0 -19
  908. package/dist/live.d.ts.map +0 -1
  909. package/dist/live.js +0 -282
  910. package/dist/logger.d.ts.map +0 -1
  911. package/dist/node.d.ts +0 -18
  912. package/dist/node.d.ts.map +0 -1
  913. package/dist/node.js +0 -303
  914. package/dist/oauth.d.ts +0 -57
  915. package/dist/oauth.d.ts.map +0 -1
  916. package/dist/oauth.js +0 -170
  917. package/dist/observability/index.d.ts +0 -19
  918. package/dist/observability/index.d.ts.map +0 -1
  919. package/dist/observability/index.js +0 -569
  920. package/dist/primitives.d.ts +0 -3
  921. package/dist/primitives.d.ts.map +0 -1
  922. package/dist/primitives.js +0 -754
  923. package/dist/react.d.ts +0 -5
  924. package/dist/react.d.ts.map +0 -1
  925. package/dist/react.js +0 -403
  926. package/dist/release.d.ts +0 -15
  927. package/dist/release.d.ts.map +0 -1
  928. package/dist/release.js +0 -196
  929. package/dist/remote.d.ts +0 -9
  930. package/dist/remote.d.ts.map +0 -1
  931. package/dist/remote.js +0 -88
  932. package/dist/retained.d.ts.map +0 -1
  933. package/dist/server/file-state-store.d.ts +0 -23
  934. package/dist/server/file-state-store.d.ts.map +0 -1
  935. package/dist/server/index.d.ts +0 -36
  936. package/dist/server/index.d.ts.map +0 -1
  937. package/dist/server/index.js +0 -1745
  938. package/dist/server/request.d.ts.map +0 -1
  939. package/dist/telegram.d.ts +0 -3
  940. package/dist/telegram.d.ts.map +0 -1
  941. package/dist/telegram.js +0 -224
  942. package/dist/testing/agent-store-conformance.d.ts +0 -40
  943. package/dist/testing/agent-store-conformance.d.ts.map +0 -1
  944. package/dist/testing.d.ts +0 -39
  945. package/dist/testing.d.ts.map +0 -1
  946. package/dist/testing.js +0 -2209
  947. package/dist/tool-invoker.d.ts +0 -9
  948. package/dist/tool-invoker.d.ts.map +0 -1
  949. package/dist/tool-invoker.js +0 -21
  950. package/dist/tools/async-operation-contract.d.ts.map +0 -1
  951. package/dist/tools/async-operation.d.ts +0 -332
  952. package/dist/tools/async-operation.d.ts.map +0 -1
  953. package/dist/tools/cli-args.d.ts +0 -143
  954. package/dist/tools/cli-args.d.ts.map +0 -1
  955. package/dist/tools/cli-checkpoint.d.ts +0 -24
  956. package/dist/tools/cli-checkpoint.d.ts.map +0 -1
  957. package/dist/tools/cli-command.d.ts +0 -70
  958. package/dist/tools/cli-command.d.ts.map +0 -1
  959. package/dist/tools/cli-format.d.ts +0 -49
  960. package/dist/tools/cli-format.d.ts.map +0 -1
  961. package/dist/tools/cli-installer.d.ts +0 -34
  962. package/dist/tools/cli-installer.d.ts.map +0 -1
  963. package/dist/tools/cli-invoke.d.ts +0 -143
  964. package/dist/tools/cli-invoke.d.ts.map +0 -1
  965. package/dist/tools/cli-manifest.d.ts +0 -80
  966. package/dist/tools/cli-manifest.d.ts.map +0 -1
  967. package/dist/tools/cli-policy.d.ts +0 -27
  968. package/dist/tools/cli-policy.d.ts.map +0 -1
  969. package/dist/tools/cli-profile.d.ts +0 -40
  970. package/dist/tools/cli-profile.d.ts.map +0 -1
  971. package/dist/tools/cli-signature.d.ts +0 -81
  972. package/dist/tools/cli-signature.d.ts.map +0 -1
  973. package/dist/tools/cli-stream.d.ts +0 -93
  974. package/dist/tools/cli-stream.d.ts.map +0 -1
  975. package/dist/tools/cli-update.d.ts +0 -126
  976. package/dist/tools/cli-update.d.ts.map +0 -1
  977. package/dist/tools/cli-view.d.ts +0 -12
  978. package/dist/tools/cli-view.d.ts.map +0 -1
  979. package/dist/tools/cli-wait.d.ts +0 -54
  980. package/dist/tools/cli-wait.d.ts.map +0 -1
  981. package/dist/tools/cli.d.ts +0 -94
  982. package/dist/tools/cli.d.ts.map +0 -1
  983. package/dist/tools/coerce.d.ts.map +0 -1
  984. package/dist/tools/connections/index.d.ts +0 -20
  985. package/dist/tools/connections/index.d.ts.map +0 -1
  986. package/dist/tools/connections/index.js +0 -1107
  987. package/dist/tools/define-download-tool.d.ts +0 -18
  988. package/dist/tools/define-download-tool.d.ts.map +0 -1
  989. package/dist/tools/define-upload-tool.d.ts +0 -16
  990. package/dist/tools/define-upload-tool.d.ts.map +0 -1
  991. package/dist/tools/define-view-file-tool.d.ts +0 -10
  992. package/dist/tools/define-view-file-tool.d.ts.map +0 -1
  993. package/dist/tools/define-wait-tool.d.ts +0 -22
  994. package/dist/tools/define-wait-tool.d.ts.map +0 -1
  995. package/dist/tools/download-core.d.ts +0 -20
  996. package/dist/tools/download-core.d.ts.map +0 -1
  997. package/dist/tools/flatten-join.d.ts.map +0 -1
  998. package/dist/tools/flatten.d.ts.map +0 -1
  999. package/dist/tools/json-schema-dialect.d.ts +0 -17
  1000. package/dist/tools/json-schema-dialect.d.ts.map +0 -1
  1001. package/dist/tools/json-schema.d.ts.map +0 -1
  1002. package/dist/tools/managed-file-error.d.ts +0 -6
  1003. package/dist/tools/managed-file-error.d.ts.map +0 -1
  1004. package/dist/tools/mcp-app.d.ts +0 -62
  1005. package/dist/tools/mcp-app.d.ts.map +0 -1
  1006. package/dist/tools/mcp-catalog.d.ts +0 -68
  1007. package/dist/tools/mcp-catalog.d.ts.map +0 -1
  1008. package/dist/tools/mcp-handler.d.ts +0 -46
  1009. package/dist/tools/mcp-handler.d.ts.map +0 -1
  1010. package/dist/tools/mcp-prepare.d.ts +0 -75
  1011. package/dist/tools/mcp-prepare.d.ts.map +0 -1
  1012. package/dist/tools/mcp-progress.d.ts +0 -46
  1013. package/dist/tools/mcp-progress.d.ts.map +0 -1
  1014. package/dist/tools/mcp-round-policy.d.ts +0 -33
  1015. package/dist/tools/mcp-round-policy.d.ts.map +0 -1
  1016. package/dist/tools/mcp-round.d.ts +0 -61
  1017. package/dist/tools/mcp-round.d.ts.map +0 -1
  1018. package/dist/tools/mcp-stdio-signals.d.ts +0 -33
  1019. package/dist/tools/mcp-stdio-signals.d.ts.map +0 -1
  1020. package/dist/tools/mcp-stdio.d.ts +0 -20
  1021. package/dist/tools/mcp-stdio.d.ts.map +0 -1
  1022. package/dist/tools/mcp-trace.d.ts +0 -12
  1023. package/dist/tools/mcp-trace.d.ts.map +0 -1
  1024. package/dist/tools/mcp.d.ts +0 -152
  1025. package/dist/tools/mcp.d.ts.map +0 -1
  1026. package/dist/tools/mount-download.d.ts +0 -41
  1027. package/dist/tools/mount-download.d.ts.map +0 -1
  1028. package/dist/tools/mount-upload.d.ts +0 -21
  1029. package/dist/tools/mount-upload.d.ts.map +0 -1
  1030. package/dist/tools/mount-wait.d.ts.map +0 -1
  1031. package/dist/tools/native-mcp.d.ts +0 -20
  1032. package/dist/tools/native-mcp.d.ts.map +0 -1
  1033. package/dist/tools/native-result.d.ts.map +0 -1
  1034. package/dist/tools/oauth-metadata.d.ts +0 -28
  1035. package/dist/tools/oauth-metadata.d.ts.map +0 -1
  1036. package/dist/tools/oauth-provider.d.ts +0 -184
  1037. package/dist/tools/oauth-provider.d.ts.map +0 -1
  1038. package/dist/tools/portable-formats.d.ts.map +0 -1
  1039. package/dist/tools/presentation.d.ts +0 -22
  1040. package/dist/tools/presentation.d.ts.map +0 -1
  1041. package/dist/tools/schema.d.ts.map +0 -1
  1042. package/dist/tools/untyped-properties.d.ts.map +0 -1
  1043. package/dist/tools/upload-core.d.ts +0 -4
  1044. package/dist/tools/upload-core.d.ts.map +0 -1
  1045. package/dist/tools/view-file-contract.d.ts.map +0 -1
  1046. package/dist/tools/view-file.d.ts +0 -62
  1047. package/dist/tools/view-file.d.ts.map +0 -1
  1048. package/dist/tools/wait-core.d.ts.map +0 -1
  1049. package/dist/tools-contract.d.ts +0 -29
  1050. package/dist/tools-contract.d.ts.map +0 -1
  1051. package/dist/tools-contract.js +0 -24
  1052. package/dist/tools.d.ts +0 -50
  1053. package/dist/tools.d.ts.map +0 -1
  1054. package/dist/tools.js +0 -2930
  1055. package/dist/tracking-server.d.ts +0 -15
  1056. package/dist/tracking-server.d.ts.map +0 -1
  1057. package/dist/tracking.d.ts +0 -24
  1058. package/dist/tracking.d.ts.map +0 -1
  1059. package/dist/tracking.js +0 -1092
  1060. package/dist/upgrade-cli.d.ts.map +0 -1
  1061. package/dist/upgrade-cli.js +0 -177
  1062. /package/dist/{retained.d.ts → browser/retained.d.ts} +0 -0
  1063. /package/dist/{declaration.d.ts → declaration/declaration.d.ts} +0 -0
  1064. /package/dist/{upgrade-cli.d.ts → entrypoints/bin/upgrade-cli.d.ts} +0 -0
  1065. /package/dist/{tracking-server.js → entrypoints/tracking/server.js} +0 -0
  1066. /package/dist/{google.d.ts → google/google.d.ts} +0 -0
  1067. /package/dist/{index-pq95qkbf.js → index-5jm36zv1.js} +0 -0
  1068. /package/dist/{application → internal}/channel.d.ts +0 -0
  1069. /package/dist/{logger.d.ts → internal/logger.d.ts} +0 -0
  1070. /package/dist/{server → internal}/request.d.ts +0 -0
  1071. /package/dist/{tools → json-schema}/json-schema.d.ts +0 -0
  1072. /package/dist/tools/{async-operation-contract.d.ts → operations/async-operation-contract.d.ts} +0 -0
  1073. /package/dist/tools/{mount-wait.d.ts → operations/mount-wait.d.ts} +0 -0
  1074. /package/dist/tools/{wait-core.d.ts → operations/wait-core.d.ts} +0 -0
  1075. /package/dist/tools/{coerce.d.ts → schema/coerce.d.ts} +0 -0
  1076. /package/dist/tools/{flatten-join.d.ts → schema/flatten-join.d.ts} +0 -0
  1077. /package/dist/tools/{flatten.d.ts → schema/flatten.d.ts} +0 -0
  1078. /package/dist/tools/{portable-formats.d.ts → schema/portable-formats.d.ts} +0 -0
  1079. /package/dist/tools/{schema.d.ts → schema/schema.d.ts} +0 -0
  1080. /package/dist/tools/{untyped-properties.d.ts → schema/untyped-properties.d.ts} +0 -0
  1081. /package/dist/tools/{native-result.d.ts → transfer/native-result.d.ts} +0 -0
  1082. /package/dist/tools/{view-file-contract.d.ts → transfer/view-file-contract.d.ts} +0 -0
@@ -1,2607 +0,0 @@
1
- import {
2
- AgentContextOverflowError,
3
- AgentProviderStreamCutError,
4
- AgentRuntimeConflictError,
5
- AgentTokenCountSchema,
6
- agentGoalStateSlot,
7
- agentTodoStateSlot,
8
- classifyProviderFailure,
9
- composeAgentPrompt,
10
- createAgentRuntime,
11
- createAgentRuntimeEventSink,
12
- createAgentSessionCoordinator,
13
- createAgentStateSlotStore,
14
- createAgentToolFenceLifecycle,
15
- deferredToolCatalog,
16
- defineStateSlot,
17
- isToolResultFailure,
18
- normalizeSdkUsage,
19
- projectAgentHistory,
20
- projectAgentHistoryDetailed,
21
- recordAgentRetryDecision,
22
- registerDeferredToolCatalog,
23
- registerDeferredToolRepair,
24
- renderAgentStateSlots,
25
- repairedSearchCall,
26
- selectAgentHistory
27
- } from "./index-vk3kq9sb.js";
28
- import"./index-p13mwz16.js";
29
- import {
30
- AgentAdmissionEventSchema,
31
- AgentAttemptResetEventSchema,
32
- AgentCheckpointEventSchema,
33
- AgentReasoningDeltaEventSchema,
34
- AgentReasoningEndEventSchema,
35
- AgentReasoningStartEventSchema,
36
- AgentRunOperationEventSchema,
37
- AgentRunStateEventSchema,
38
- AgentRuntimeEventCursorSchema,
39
- AgentRuntimeEventSchema,
40
- AgentTerminalEventSchema,
41
- AgentToolStatusEventSchema,
42
- AgentTransientDeltaEventSchema,
43
- advanceAgentRuntimeEventCursor,
44
- agentDurableEventId
45
- } from "./index-y64k3s0h.js";
46
- import {
47
- AgentModelCapabilitySchema,
48
- AgentModelCatalogEntrySchema,
49
- AgentModelCatalogSchema,
50
- AgentModelDescriptorSchema,
51
- AgentModelMetricSchema,
52
- AgentModelPopularitySchema,
53
- AgentModelPriceSchema,
54
- AgentModelRegistrySnapshotSchema,
55
- AgentModelSearchInputSchema,
56
- AgentModelSearchResultSchema,
57
- AgentModelSelectionSchema,
58
- createMemoryAgentModelSelectionStore,
59
- defineModelRegistry,
60
- searchAgentModelCatalog,
61
- validateAgentModelSnapshot
62
- } from "./index-mqv3b5rh.js";
63
- import {
64
- AgentConversationMessagePageSchema,
65
- AgentConversationPageSchema,
66
- AgentConversationSummarySchema
67
- } from "./index-crykmqkr.js";
68
- import {
69
- ACTIVE_AGENT_RUN_STATES,
70
- AgentAdmissionReceiptSchema,
71
- AgentConversationPurgeInputSchema,
72
- AgentConversationPurgeResultSchema,
73
- AgentConversationPurgedError,
74
- AgentHistoryMutationSchema,
75
- AgentRuntimeHeadSchema,
76
- AgentSeedReceiptSchema,
77
- AgentStoredRunSchema,
78
- createAgentRuntimeStore,
79
- createMemoryAgentRuntimeStore,
80
- purgeAgentConversation
81
- } from "./index-hrbajay7.js";
82
- import {
83
- AcceptInputAndAssignRunSchema,
84
- AcquireAgentRunSchema,
85
- AgentConversationArchiveSchema,
86
- AgentRecoverableDescriptorSchema,
87
- AgentRecoverablePageSchema,
88
- AgentRunViewSchema,
89
- AgentStoreAppliedSchema,
90
- AgentStoreConflictSchema,
91
- AgentStoreDuplicateSchema,
92
- AgentStoreEventEnvelopeSchema,
93
- AgentStoreEventKindSchema,
94
- AgentStoreEventPageSchema,
95
- AgentStoreMutationResultSchema,
96
- AgentStoreNotFoundSchema,
97
- AgentStoreTransitionSchema,
98
- AppendAgentStoreEventSchema,
99
- CheckpointRunAssistantSchema,
100
- CommitRunTerminalSchema,
101
- ReadAgentStoreEventsSchema,
102
- RecordRunOperationSchema,
103
- RecoverAgentRunSchema,
104
- ReplaceCompactedRangeSchema,
105
- RequestRunInterruptSchema,
106
- SeedConversationInputSchema,
107
- canonicalAgentJson,
108
- decodeAgentConversationArchive,
109
- decodeAgentStoreEvent,
110
- encodeAgentConversationArchive,
111
- isAssistantHistoryEvidence,
112
- isCompleteAgentHistoryTurn
113
- } from "./index-zwkgfq1s.js";
114
- import {
115
- AgentAssistantPlaceholderSchema,
116
- AgentControlPartSchema,
117
- AgentCostValueSchema,
118
- AgentFilePartSchema,
119
- AgentJsonObjectSchema,
120
- AgentMessagePartSchema,
121
- AgentMessageRoleSchema,
122
- AgentMessageSchema,
123
- AgentMessageStatusSchema,
124
- AgentOpaquePartSchema,
125
- AgentProvenanceSchema,
126
- AgentProviderEnvelopeSchema,
127
- AgentProviderResponseSchema,
128
- AgentReasoningPartSchema,
129
- AgentRecordIdSchema,
130
- AgentRecordVersionSchema,
131
- AgentRunMetricsSchema,
132
- AgentRunOperationKindSchema,
133
- AgentRunOperationPhaseSchema,
134
- AgentRunOperationSchema,
135
- AgentRunQueuePrioritySchema,
136
- AgentRunSchema,
137
- AgentRunStateSchema,
138
- AgentSnapshotSchema,
139
- AgentSourcePartSchema,
140
- AgentTerminalReasonSchema,
141
- AgentTextPartSchema,
142
- AgentTimestampSchema,
143
- AgentToolApprovalRequestPartSchema,
144
- AgentToolApprovalResponsePartSchema,
145
- AgentToolCallPartSchema,
146
- AgentToolResultPartSchema,
147
- AgentUsageSchema,
148
- AgentUsageValueSchema,
149
- runStateForTerminalReason
150
- } from "./index-gtj3zc53.js";
151
- import {
152
- createBoundedSinkManager
153
- } from "./index-wnfk50r0.js";
154
- import {
155
- AgentSandboxGradeSchema,
156
- AgentSandboxRestrictionSchema,
157
- missingSandboxRestrictions,
158
- probeAgentProcessSandbox,
159
- recordAgentSandboxProbe,
160
- refuseUnknownSpillReference
161
- } from "./index-qmy6zq75.js";
162
- import {
163
- buildToolManifest,
164
- mountAgent
165
- } from "./index-e42wzzz5.js";
166
- import {
167
- DURABILITY_STEP_EVENT_KIND,
168
- ParkAbortedError,
169
- ParkRecordDecodeError,
170
- StepAbortedError,
171
- StepResultDecodeError,
172
- StepResultNotSerializableError,
173
- createLocalStepDurability
174
- } from "./index-kw9t5ayn.js";
175
- import"./index-2c2bjw3s.js";
176
- import"./index-mzvgxp0n.js";
177
- import"./index-yn8remb1.js";
178
- import"./index-tmwcrptx.js";
179
- import"./index-f9mb610r.js";
180
- import"./index-e0znv5gn.js";
181
- import"./index-0a349c33.js";
182
- import"./index-rxfy4cq7.js";
183
- import"./index-6k1937bx.js";
184
- import {
185
- childSpan,
186
- createTraceContext
187
- } from "./index-zcgf3gqf.js";
188
- import"./index-7zbps32p.js";
189
- import {
190
- defineRuntimeTool
191
- } from "./index-vjpvjqpn.js";
192
- import"./index-h9etkkyk.js";
193
- import"./index-cby4ar3v.js";
194
- import"./index-2vtcmrj9.js";
195
- import"./index-kzfs85xp.js";
196
- import {
197
- executableAgentRuntimeTools
198
- } from "./index-77fekveh.js";
199
-
200
- // src/agent-runtime/child-tools.ts
201
- import { z as z2 } from "zod";
202
-
203
- // src/agent-runtime/agent-tool.ts
204
- function defineAgentTool(definition) {
205
- return {
206
- ...definition,
207
- handler: (context) => definition.handler(context)
208
- };
209
- }
210
-
211
- // src/agent-runtime/children.ts
212
- import { randomUUID } from "node:crypto";
213
-
214
- // src/agent-runtime/children-contract.ts
215
- import { z } from "zod";
216
- var AgentChildBudgetSchema = z.object({
217
- usd: z.number().positive().optional(),
218
- tokens: z.int().positive().optional(),
219
- milliseconds: z.int().positive().optional()
220
- }).strict();
221
- var AgentChildStateSchema = z.enum([
222
- "spawned",
223
- "running",
224
- "finished",
225
- "stopped",
226
- "lost"
227
- ]);
228
- var AgentChildRecordSchema = z.object({
229
- parentConversationId: z.string().min(1),
230
- childConversationId: z.string().min(1),
231
- seedUptoSeq: z.int().nonnegative(),
232
- state: AgentChildStateSchema,
233
- budget: AgentChildBudgetSchema,
234
- usage: z.object({
235
- tokens: z.int().nonnegative(),
236
- usd: z.number().nonnegative(),
237
- milliseconds: z.int().nonnegative()
238
- }).strict(),
239
- resultReference: z.string().optional(),
240
- createdAt: z.string(),
241
- updatedAt: z.string()
242
- }).strict();
243
- var AgentChildBlockingKindSchema = z.enum(["approval", "input"]);
244
- var AgentChildBlockingSourceSchema = z.object({
245
- approvalId: z.string().min(1),
246
- callId: z.string().min(1),
247
- toolName: z.string().min(1),
248
- input: z.json(),
249
- kind: AgentChildBlockingKindSchema.default("approval"),
250
- batchId: z.string().min(1).optional()
251
- }).strict();
252
- var AgentChildBlockingEventSchema = z.object({
253
- parentConversationId: z.string().min(1),
254
- childConversationId: z.string().min(1),
255
- kind: AgentChildBlockingKindSchema,
256
- approvalId: z.string().min(1),
257
- childApprovalId: z.string().min(1),
258
- callId: z.string().min(1),
259
- toolName: z.string().min(1),
260
- input: z.json(),
261
- batchId: z.string().min(1),
262
- presentedAt: z.string()
263
- }).strict();
264
- var ChildBlockingDecisionSchema = z.union([
265
- z.object({
266
- approvalId: z.string().min(1),
267
- approved: z.boolean(),
268
- reason: z.string().optional()
269
- }).strict(),
270
- z.object({ approvalId: z.string().min(1), value: z.json() }).strict()
271
- ]);
272
- var ChildRowSchema = z.object({
273
- parent_conversation_id: z.string(),
274
- child_conversation_id: z.string(),
275
- seed_upto_seq: z.int().nonnegative(),
276
- state: AgentChildStateSchema,
277
- budget_payload: z.string(),
278
- usage_payload: z.string(),
279
- result_reference: z.string().nullable(),
280
- created_at: z.string(),
281
- updated_at: z.string()
282
- });
283
- function parseChild(raw) {
284
- const row = ChildRowSchema.parse(raw);
285
- return AgentChildRecordSchema.parse({
286
- parentConversationId: row.parent_conversation_id,
287
- childConversationId: row.child_conversation_id,
288
- seedUptoSeq: row.seed_upto_seq,
289
- state: row.state,
290
- budget: JSON.parse(row.budget_payload),
291
- usage: JSON.parse(row.usage_payload),
292
- ...row.result_reference && { resultReference: row.result_reference },
293
- createdAt: row.created_at,
294
- updatedAt: row.updated_at
295
- });
296
- }
297
- function usageNumbers(usage) {
298
- const inputTokens = usage.inputTokens.value;
299
- const outputTokens = usage.outputTokens.value;
300
- return {
301
- ...inputTokens !== undefined && outputTokens !== undefined ? { tokens: inputTokens + outputTokens } : {},
302
- ...usage.cost?.currency === "USD" && usage.cost.value !== undefined ? { usd: usage.cost.value } : {}
303
- };
304
- }
305
-
306
- // src/agent-runtime/child-blocking.ts
307
- function createChildBlockingRelay(input) {
308
- const { store, now, handles, listChildren, activeChild, bounded } = input;
309
- const presentedBlocking = new Map;
310
- const retiredBlocking = new Set;
311
- let blockingQueue = Promise.resolve();
312
- const serializeBlocking = (work) => {
313
- const run = blockingQueue.then(work, work);
314
- blockingQueue = run.then(() => {
315
- return;
316
- }, () => {
317
- return;
318
- });
319
- return run;
320
- };
321
- const childScopedBlockingId = (childConversationId, childApprovalId) => `${encodeURIComponent(childConversationId)}:${encodeURIComponent(childApprovalId)}`;
322
- const retireChildBlocking = (childConversationId) => {
323
- for (const [id, entry] of presentedBlocking) {
324
- if (entry.event.childConversationId === childConversationId) {
325
- presentedBlocking.delete(id);
326
- retiredBlocking.add(id);
327
- }
328
- }
329
- };
330
- const listChildBlockingInner = async (parentConversationId) => {
331
- const live = listChildren(parentConversationId).filter((record) => record.state === "spawned" || record.state === "running");
332
- for (const record of live) {
333
- const handle = handles.get(record.childConversationId);
334
- if (!handle?.blockingEvents)
335
- continue;
336
- const reported = await bounded(Promise.resolve(handle.blockingEvents()), []);
337
- const fresh = reported.map((source) => AgentChildBlockingSourceSchema.parse(source)).filter((source) => {
338
- const id = childScopedBlockingId(record.childConversationId, source.approvalId);
339
- return !presentedBlocking.has(id) && !retiredBlocking.has(id);
340
- });
341
- if (fresh.length === 0)
342
- continue;
343
- const presentedAt = now().toISOString();
344
- for (const source of fresh) {
345
- const approvalId = childScopedBlockingId(record.childConversationId, source.approvalId);
346
- const batchId = source.batchId ? `${record.childConversationId}:${source.batchId}` : approvalId;
347
- const event = AgentChildBlockingEventSchema.parse({
348
- parentConversationId,
349
- childConversationId: record.childConversationId,
350
- kind: source.kind,
351
- approvalId,
352
- childApprovalId: source.approvalId,
353
- callId: source.callId,
354
- toolName: source.toolName,
355
- input: source.input,
356
- batchId,
357
- presentedAt
358
- });
359
- await store.appendEvent({
360
- conversationId: parentConversationId,
361
- kind: "child/state",
362
- occurredAt: presentedAt,
363
- payload: {
364
- action: "blocking-presented",
365
- childConversationId: event.childConversationId,
366
- approvalId: event.approvalId,
367
- childApprovalId: event.childApprovalId,
368
- kind: event.kind,
369
- callId: event.callId,
370
- toolName: event.toolName,
371
- input: event.input,
372
- batchId: event.batchId,
373
- presentedAt
374
- }
375
- });
376
- presentedBlocking.set(approvalId, { event, batchId });
377
- }
378
- }
379
- return [...presentedBlocking.values()].map((entry) => entry.event).filter((event) => event.parentConversationId === parentConversationId);
380
- };
381
- const listChildBlocking = (parentConversationId) => serializeBlocking(() => listChildBlockingInner(parentConversationId));
382
- const respondToChildBlockingInner = async (parentConversationId, decision) => {
383
- const entry = presentedBlocking.get(decision.approvalId);
384
- if (!entry || entry.event.parentConversationId !== parentConversationId) {
385
- throw new TypeError("Child blocking request is missing, stale or already answered");
386
- }
387
- const { handle } = activeChild(parentConversationId, entry.event.childConversationId);
388
- if (!handle.respondToBlocking) {
389
- throw new TypeError("Child host cannot answer blocking requests");
390
- }
391
- const parsed = ChildBlockingDecisionSchema.parse(decision);
392
- if (entry.event.kind === "input" !== "value" in parsed)
393
- throw new TypeError("Child response kind does not match the pending request");
394
- await handle.respondToBlocking({ ...parsed, approvalId: entry.event.childApprovalId });
395
- presentedBlocking.delete(decision.approvalId);
396
- retiredBlocking.add(decision.approvalId);
397
- await store.appendEvent({
398
- conversationId: parentConversationId,
399
- kind: "child/state",
400
- payload: {
401
- action: "blocking-resolved",
402
- childConversationId: entry.event.childConversationId,
403
- approvalId: entry.event.approvalId,
404
- batchId: entry.batchId,
405
- ..."approved" in parsed ? { approved: parsed.approved } : { kind: "input" }
406
- }
407
- });
408
- };
409
- const respondToChildBlocking = (parentConversationId, decision) => serializeBlocking(() => respondToChildBlockingInner(parentConversationId, decision));
410
- return { retireChildBlocking, listChildBlocking, respondToChildBlocking };
411
- }
412
- // src/agent-runtime/child-budget-policy.ts
413
- function agentChildBudgetStopPolicy(input) {
414
- let stepsSeen = 0;
415
- let lastBoundary = performance.now();
416
- return {
417
- name: "child-budget",
418
- when: async ({ steps }) => {
419
- const step = steps.at(-1);
420
- if (!step || steps.length <= stepsSeen)
421
- return false;
422
- stepsSeen = steps.length;
423
- const elapsedMs = Math.max(0, performance.now() - lastBoundary);
424
- lastBoundary = performance.now();
425
- const usage = normalizeSdkUsage(step.usage);
426
- const cost = input.cost?.({ usage: step.usage });
427
- const boundary = await input.manager.recordStepUsage({
428
- childConversationId: input.childConversationId,
429
- usage: { ...usage, ...cost && { cost } },
430
- elapsedMs
431
- });
432
- return boundary.stop;
433
- }
434
- };
435
- }
436
-
437
- // src/agent-runtime/children.ts
438
- function createSqliteAgentChildManager(input) {
439
- const now = input.now ?? (() => new Date);
440
- const database = input.sqlite.database;
441
- const store = input.sqlite.store;
442
- const handles = new Map;
443
- const settlements = new Map;
444
- const currentState = (childConversationId) => {
445
- const raw = database.prepare("SELECT state FROM stitchkit_agent_runtime_children WHERE child_conversation_id = ?").get(childConversationId);
446
- return raw === null || raw === undefined ? undefined : AgentChildStateSchema.parse(raw.state);
447
- };
448
- const isLive = (childConversationId) => {
449
- const state = currentState(childConversationId);
450
- return state === "spawned" || state === "running";
451
- };
452
- const settleable = (childConversationId) => {
453
- const state = currentState(childConversationId);
454
- return state === undefined || state === "spawned" || state === "running";
455
- };
456
- const STOP_BOUND_MS = 1e4;
457
- const bounded = async (work, fallback) => {
458
- let timer;
459
- try {
460
- return await Promise.race([
461
- Promise.resolve(work),
462
- new Promise((resolve) => {
463
- timer = setTimeout(() => resolve(fallback), STOP_BOUND_MS);
464
- })
465
- ]);
466
- } finally {
467
- if (timer)
468
- clearTimeout(timer);
469
- }
470
- };
471
- const listChildren = (parentConversationId) => database.prepare(`
472
- SELECT parent_conversation_id, child_conversation_id, seed_upto_seq, state,
473
- budget_payload, usage_payload, result_reference, created_at, updated_at
474
- FROM stitchkit_agent_runtime_children
475
- WHERE parent_conversation_id = ? ORDER BY created_at, child_conversation_id
476
- `).all(parentConversationId).map(parseChild);
477
- const updateState = async (record, state, resultReference, details = {}) => {
478
- const updatedAt = now().toISOString();
479
- const payload = {
480
- childConversationId: record.childConversationId,
481
- state,
482
- ...resultReference && { resultReference },
483
- ...details
484
- };
485
- const childPayload = {
486
- parentConversationId: record.parentConversationId,
487
- state,
488
- ...resultReference && { resultReference },
489
- ...details
490
- };
491
- const write = (audience) => input.sqlite.transaction(async (scope) => {
492
- scope.database.prepare(`
493
- UPDATE stitchkit_agent_runtime_children
494
- SET state = ?, result_reference = ?, updated_at = ? WHERE child_conversation_id = ?
495
- `).run(state, resultReference ?? null, updatedAt, record.childConversationId);
496
- if (audience === "both") {
497
- await scope.appendEvent({
498
- conversationId: record.parentConversationId,
499
- kind: "child/state",
500
- occurredAt: updatedAt,
501
- payload
502
- });
503
- }
504
- if (audience !== "row") {
505
- await scope.appendEvent({
506
- conversationId: record.childConversationId,
507
- kind: "child/state",
508
- occurredAt: updatedAt,
509
- payload: childPayload
510
- });
511
- }
512
- });
513
- try {
514
- await write("both");
515
- } catch (error) {
516
- if (!(error instanceof AgentConversationPurgedError))
517
- throw error;
518
- try {
519
- await write("child");
520
- } catch (inner) {
521
- if (!(inner instanceof AgentConversationPurgedError))
522
- throw inner;
523
- await write("row");
524
- }
525
- }
526
- };
527
- const spawnChild = async (request) => {
528
- const requestedBudget = AgentChildBudgetSchema.parse(request.budget);
529
- const remaining = input.remainingBudget ? AgentChildBudgetSchema.parse(await input.remainingBudget(request.parentConversationId)) : undefined;
530
- const bounded2 = (requested, available) => {
531
- if (requested === undefined)
532
- return available;
533
- if (available === undefined)
534
- return requested;
535
- return Math.min(requested, available);
536
- };
537
- const usd = bounded2(requestedBudget.usd, remaining?.usd);
538
- const tokens = bounded2(requestedBudget.tokens, remaining?.tokens);
539
- const milliseconds = bounded2(requestedBudget.milliseconds, remaining?.milliseconds);
540
- const budget = AgentChildBudgetSchema.parse({
541
- ...usd !== undefined && { usd },
542
- ...tokens !== undefined && { tokens },
543
- ...milliseconds !== undefined && { milliseconds }
544
- });
545
- const events = [];
546
- let cursor = 1;
547
- for (;; ) {
548
- const page = await store.readEvents({
549
- conversationId: request.parentConversationId,
550
- fromSeq: cursor,
551
- ...request.seedUptoSeq !== undefined && { toSeq: request.seedUptoSeq },
552
- limit: 1000
553
- });
554
- events.push(...page.items);
555
- if (page.nextSeq === undefined)
556
- break;
557
- cursor = page.nextSeq;
558
- }
559
- const seedUptoSeq = events.at(-1)?.seq ?? 0;
560
- const childConversationId = request.childConversationId ?? randomUUID();
561
- const createdAt = now().toISOString();
562
- const record = AgentChildRecordSchema.parse({
563
- parentConversationId: request.parentConversationId,
564
- childConversationId,
565
- seedUptoSeq,
566
- state: "spawned",
567
- budget,
568
- usage: { tokens: 0, usd: 0, milliseconds: 0 },
569
- createdAt,
570
- updatedAt: createdAt
571
- });
572
- const seedArchive = encodeAgentConversationArchive({
573
- format: "stitchkit.agent-conversation",
574
- formatVersion: 1,
575
- conversationId: request.parentConversationId,
576
- events,
577
- projections: [],
578
- spills: []
579
- });
580
- const handle = await input.spawn({
581
- parentConversationId: record.parentConversationId,
582
- childConversationId,
583
- seedArchive,
584
- childInput: request.childInput,
585
- budget
586
- });
587
- handle.result.catch(() => {
588
- return;
589
- });
590
- try {
591
- await input.sqlite.transaction(async (scope) => {
592
- scope.database.prepare(`
593
- INSERT INTO stitchkit_agent_runtime_children (
594
- parent_conversation_id, child_conversation_id, seed_upto_seq, state,
595
- budget_payload, usage_payload, result_reference, created_at, updated_at
596
- ) VALUES (?, ?, ?, ?, ?, ?, NULL, ?, ?)
597
- `).run(record.parentConversationId, record.childConversationId, record.seedUptoSeq, record.state, JSON.stringify(record.budget), JSON.stringify(record.usage), createdAt, createdAt);
598
- await scope.appendEvent({
599
- conversationId: record.parentConversationId,
600
- kind: "child/spawned",
601
- occurredAt: createdAt,
602
- payload: { childConversationId, seedUptoSeq, budget }
603
- });
604
- });
605
- await updateState(record, "running");
606
- } catch (cause) {
607
- try {
608
- await handle.stopPolicy("spawn-persistence-failed");
609
- } catch (cleanup) {
610
- throw new AggregateError([cause, cleanup], "Child persistence and stop both failed");
611
- }
612
- try {
613
- if (isLive(childConversationId))
614
- await updateState(record, "lost", undefined, { reason: "spawn-persistence-failed" });
615
- } catch (cleanup) {
616
- throw new AggregateError([cause, cleanup], "Child stopped but persistence reconciliation failed");
617
- }
618
- throw cause;
619
- }
620
- handles.set(childConversationId, handle);
621
- const settlement = handle.result.then(async (result) => {
622
- handles.delete(childConversationId);
623
- retireChildBlocking(childConversationId);
624
- if (settleable(childConversationId)) {
625
- await updateState(record, "finished", result.resultReference);
626
- }
627
- }, async () => {
628
- handles.delete(childConversationId);
629
- retireChildBlocking(childConversationId);
630
- if (settleable(childConversationId))
631
- await updateState(record, "stopped");
632
- });
633
- settlements.set(childConversationId, settlement);
634
- settlement.catch(() => {
635
- return;
636
- });
637
- return { ...record, state: "running", updatedAt: now().toISOString() };
638
- };
639
- const recordStepUsage = async (request) => {
640
- const raw = database.prepare(`
641
- SELECT parent_conversation_id, child_conversation_id, seed_upto_seq, state,
642
- budget_payload, usage_payload, result_reference, created_at, updated_at
643
- FROM stitchkit_agent_runtime_children WHERE child_conversation_id = ?
644
- `).get(request.childConversationId);
645
- if (raw === null || raw === undefined)
646
- throw new TypeError("Unknown child conversation");
647
- const record = parseChild(raw);
648
- const measured = usageNumbers(request.usage);
649
- if (record.budget.tokens !== undefined && measured.tokens === undefined) {
650
- throw new TypeError("Cannot enforce child token budget without measured token usage");
651
- }
652
- if (record.budget.usd !== undefined && measured.usd === undefined) {
653
- throw new TypeError("Cannot enforce child USD budget without USD usage");
654
- }
655
- const usage = {
656
- tokens: record.usage.tokens + (measured.tokens ?? 0),
657
- usd: record.usage.usd + (measured.usd ?? 0),
658
- milliseconds: record.usage.milliseconds + request.elapsedMs
659
- };
660
- const updatedAt = now().toISOString();
661
- const overrun = {
662
- tokens: Math.max(0, usage.tokens - (record.budget.tokens ?? Number.POSITIVE_INFINITY)),
663
- usd: Math.max(0, usage.usd - (record.budget.usd ?? Number.POSITIVE_INFINITY)),
664
- milliseconds: Math.max(0, usage.milliseconds - (record.budget.milliseconds ?? Number.POSITIVE_INFINITY))
665
- };
666
- const stop = record.budget.tokens !== undefined && usage.tokens >= record.budget.tokens || record.budget.usd !== undefined && usage.usd >= record.budget.usd || record.budget.milliseconds !== undefined && usage.milliseconds >= record.budget.milliseconds;
667
- const handle = handles.get(request.childConversationId);
668
- let enforced = false;
669
- if (stop && handle) {
670
- enforced = await bounded(Promise.resolve().then(() => handle.stopPolicy("child-budget")).then(() => true, () => false), false);
671
- }
672
- const payload = {
673
- childConversationId: record.childConversationId,
674
- state: "running",
675
- usage,
676
- overrun,
677
- ...stop && { policyName: "child-budget", enforced }
678
- };
679
- await input.sqlite.transaction(async (scope) => {
680
- scope.database.prepare("UPDATE stitchkit_agent_runtime_children SET usage_payload = ?, updated_at = ? WHERE child_conversation_id = ?").run(JSON.stringify(usage), updatedAt, request.childConversationId);
681
- await scope.appendEvent({
682
- conversationId: record.parentConversationId,
683
- kind: "child/state",
684
- occurredAt: updatedAt,
685
- payload
686
- });
687
- await scope.appendEvent({
688
- conversationId: record.childConversationId,
689
- kind: "child/state",
690
- occurredAt: updatedAt,
691
- payload: { parentConversationId: record.parentConversationId, ...payload }
692
- });
693
- });
694
- return { stop, enforced, ...stop && { policyName: "child-budget" }, overrun };
695
- };
696
- const stopChildren = async (parentConversationId) => {
697
- const records = listChildren(parentConversationId).filter((record) => record.state === "spawned" || record.state === "running");
698
- await Promise.all(records.map(async (record) => {
699
- const startedAt = performance.now();
700
- const handle = handles.get(record.childConversationId);
701
- const reachable = handle ? handle.reachable ? await bounded(handle.reachable(), false) : true : false;
702
- if (!reachable) {
703
- if (isLive(record.childConversationId)) {
704
- await updateState(record, "lost", undefined, {
705
- stopDurationMs: Math.max(0, performance.now() - startedAt)
706
- });
707
- }
708
- retireChildBlocking(record.childConversationId);
709
- return;
710
- }
711
- await bounded(Promise.resolve(handle?.stopPolicy("parent-stopped")).then(() => true), false);
712
- if (!isLive(record.childConversationId))
713
- return;
714
- await updateState(record, "stopped", undefined, {
715
- stopDurationMs: Math.max(0, performance.now() - startedAt)
716
- });
717
- retireChildBlocking(record.childConversationId);
718
- }));
719
- };
720
- const activeChild = (parentConversationId, childConversationId) => {
721
- const child = listChildren(parentConversationId).find((record) => record.childConversationId === childConversationId);
722
- if (!child)
723
- throw new TypeError("Unknown child conversation for this parent");
724
- if (child.state !== "running" && child.state !== "spawned") {
725
- throw new TypeError("Child conversation is not active");
726
- }
727
- const handle = handles.get(childConversationId);
728
- if (!handle)
729
- throw new TypeError("Child host handle is unavailable");
730
- return { child, handle };
731
- };
732
- const { retireChildBlocking, listChildBlocking, respondToChildBlocking } = createChildBlockingRelay({ store, now, handles, listChildren, activeChild, bounded });
733
- const sendMessage = async (parentConversationId, childConversationId, message) => {
734
- const { handle } = activeChild(parentConversationId, childConversationId);
735
- if (!handle.sendMessage)
736
- throw new TypeError("Child host does not support messages");
737
- await handle.sendMessage(message);
738
- await store.appendEvent({
739
- conversationId: parentConversationId,
740
- kind: "child/state",
741
- payload: { childConversationId, action: "message-sent" }
742
- });
743
- };
744
- const interruptChild = async (parentConversationId, childConversationId) => {
745
- const { child, handle } = activeChild(parentConversationId, childConversationId);
746
- const startedAt = performance.now();
747
- await handle.stopPolicy("parent-interrupt");
748
- await updateState(child, "stopped", undefined, {
749
- policyName: "parent-interrupt",
750
- stopDurationMs: Math.max(0, performance.now() - startedAt)
751
- });
752
- retireChildBlocking(childConversationId);
753
- };
754
- const waitChild = async (childConversationId) => {
755
- await settlements.get(childConversationId);
756
- };
757
- return {
758
- spawnChild,
759
- listChildren,
760
- recordStepUsage,
761
- stopChildren,
762
- sendMessage,
763
- interruptChild,
764
- waitChild,
765
- listChildBlocking,
766
- respondToChildBlocking
767
- };
768
- }
769
-
770
- // src/agent-runtime/child-tools.ts
771
- function childTool(manager, fork) {
772
- return defineAgentTool({
773
- name: fork ? "subagent_fork" : "subagent",
774
- description: fork ? "Run a child conversation seeded from the parent through one exact event sequence." : "Run a child conversation seeded from the current durable parent history.",
775
- identity: {
776
- serviceName: "agent-children",
777
- action: fork ? "fork" : "spawn",
778
- method: "POST"
779
- },
780
- input: z2.object({
781
- parentConversationId: z2.string().min(1),
782
- childInput: z2.json(),
783
- budget: AgentChildBudgetSchema,
784
- seedUptoSeq: z2.int().positive().optional()
785
- }).strict(),
786
- output: z2.object({
787
- childConversationId: z2.string(),
788
- state: z2.string(),
789
- resultReference: z2.string().optional()
790
- }),
791
- transports: ["AGENT"],
792
- handler: async ({ input }) => {
793
- if (fork && input.seedUptoSeq === undefined) {
794
- throw new TypeError("subagent_fork requires seedUptoSeq");
795
- }
796
- const child = await manager.spawnChild({
797
- parentConversationId: input.parentConversationId,
798
- childInput: input.childInput,
799
- budget: input.budget,
800
- ...input.seedUptoSeq !== undefined && { seedUptoSeq: input.seedUptoSeq }
801
- });
802
- await manager.waitChild(child.childConversationId);
803
- const finished = manager.listChildren(input.parentConversationId).find((record) => record.childConversationId === child.childConversationId);
804
- if (!finished)
805
- throw new Error("Child record disappeared after settlement");
806
- return {
807
- childConversationId: finished.childConversationId,
808
- state: finished.state,
809
- ...finished.resultReference && { resultReference: finished.resultReference }
810
- };
811
- }
812
- });
813
- }
814
- function createAgentChildTools(manager) {
815
- return [
816
- childTool(manager, false),
817
- childTool(manager, true),
818
- defineAgentTool({
819
- name: "list_agents",
820
- description: "List the durable child graph for one parent conversation.",
821
- identity: { serviceName: "agent-children", action: "list", method: "GET" },
822
- input: z2.object({ parentConversationId: z2.string().min(1) }).strict(),
823
- output: z2.object({ children: z2.array(AgentChildRecordSchema) }),
824
- transports: ["AGENT"],
825
- handler: ({ input }) => ({
826
- children: [...manager.listChildren(input.parentConversationId)]
827
- })
828
- }),
829
- defineAgentTool({
830
- name: "send_message",
831
- description: "Send one follow-up input to an active child conversation.",
832
- identity: { serviceName: "agent-children", action: "message", method: "POST" },
833
- input: z2.object({
834
- parentConversationId: z2.string().min(1),
835
- childConversationId: z2.string().min(1),
836
- input: z2.json()
837
- }).strict(),
838
- output: z2.object({ sent: z2.literal(true) }),
839
- transports: ["AGENT"],
840
- handler: async ({ input }) => {
841
- await manager.sendMessage(input.parentConversationId, input.childConversationId, input.input);
842
- return { sent: true };
843
- }
844
- }),
845
- defineAgentTool({
846
- name: "interrupt_agent",
847
- description: "Stop one active child conversation at a durable policy boundary.",
848
- identity: { serviceName: "agent-children", action: "interrupt", method: "POST" },
849
- input: z2.object({
850
- parentConversationId: z2.string().min(1),
851
- childConversationId: z2.string().min(1)
852
- }).strict(),
853
- output: z2.object({ interrupted: z2.literal(true) }),
854
- transports: ["AGENT"],
855
- handler: async ({ input }) => {
856
- await manager.interruptChild(input.parentConversationId, input.childConversationId);
857
- return { interrupted: true };
858
- }
859
- })
860
- ];
861
- }
862
- // src/agent-runtime/compaction.ts
863
- function groupProviderTurns(messages, evidencePolicy) {
864
- const turns = [];
865
- let current = [];
866
- for (const message of messages) {
867
- if (message.role === "user" && current.length > 0) {
868
- turns.push({
869
- messages: current,
870
- complete: isCompleteAgentHistoryTurn(current, evidencePolicy)
871
- });
872
- current = [];
873
- }
874
- current.push(message);
875
- }
876
- if (current.length > 0) {
877
- turns.push({
878
- messages: current,
879
- complete: isCompleteAgentHistoryTurn(current, evidencePolicy)
880
- });
881
- }
882
- return turns;
883
- }
884
- function selectCompactableHistory(options) {
885
- if (!Number.isSafeInteger(options.keepRecentTurns) || options.keepRecentTurns < 0) {
886
- throw new TypeError("keepRecentTurns must be a non-negative safe integer");
887
- }
888
- const leadingSummary = options.messages[0]?.role === "summary" ? options.messages[0] : undefined;
889
- const rest = leadingSummary ? options.messages.slice(1) : options.messages;
890
- const turns = groupProviderTurns(rest, options.evidencePolicy);
891
- const firstIncomplete = turns.findIndex((turn) => !turn.complete);
892
- const completeTurns = firstIncomplete === -1 ? turns : turns.slice(0, firstIncomplete);
893
- const eligibleCount = Math.max(0, completeTurns.length - options.keepRecentTurns);
894
- const compactable = completeTurns.slice(0, eligibleCount).flatMap((turn) => turn.messages);
895
- return {
896
- ...leadingSummary !== undefined && { leadingSummary },
897
- compactable,
898
- retained: rest.slice(compactable.length)
899
- };
900
- }
901
- function mutationSnapshot(result, fallback, attempts) {
902
- if (result.outcome === "applied" || result.outcome === "duplicate") {
903
- return { outcome: "applied", snapshot: result.snapshot, attempts };
904
- }
905
- return { outcome: result.outcome, snapshot: fallback, attempts };
906
- }
907
- function structuredCompaction(config) {
908
- if (!Number.isSafeInteger(config.keepRecentTurns) || config.keepRecentTurns < 1) {
909
- throw new TypeError("keepRecentTurns must be a positive safe integer");
910
- }
911
- const maxAttempts = config.maxAttempts ?? 1;
912
- if (!Number.isSafeInteger(maxAttempts) || maxAttempts < 1) {
913
- throw new TypeError("maxAttempts must be a positive safe integer");
914
- }
915
- return async (input) => {
916
- let lastSnapshot = await input.store.loadSnapshot(input.conversationId);
917
- for (let attempt = 1;attempt <= maxAttempts; attempt += 1) {
918
- const snapshot = attempt === 1 ? lastSnapshot : await input.store.loadSnapshot(input.conversationId);
919
- lastSnapshot = snapshot;
920
- if (!await config.threshold(snapshot)) {
921
- return { outcome: "not_needed", snapshot, attempts: attempt };
922
- }
923
- const { leadingSummary, compactable: eligibleMessages } = selectCompactableHistory({
924
- messages: snapshot.messages,
925
- keepRecentTurns: config.keepRecentTurns,
926
- ...config.evidencePolicy !== undefined && { evidencePolicy: config.evidencePolicy }
927
- });
928
- if (eligibleMessages.length === 0) {
929
- return { outcome: "nothing_eligible", snapshot, attempts: attempt };
930
- }
931
- const previousSummary = leadingSummary && config.readPreviousSummary ? config.schema.parse(config.readPreviousSummary(leadingSummary)) : attempt === 1 ? input.previousSummary : undefined;
932
- const rawSummary = await config.summarize({
933
- conversationId: input.conversationId,
934
- snapshot,
935
- eligibleMessages,
936
- ...previousSummary !== undefined && { previousSummary },
937
- signal: input.signal
938
- });
939
- const summary = config.schema.parse(rawSummary);
940
- if (input.signal.aborted)
941
- throw input.signal.reason;
942
- const summaryMessage = config.createSummaryMessage({
943
- conversationId: input.conversationId,
944
- summary,
945
- compactedMessages: eligibleMessages
946
- });
947
- if (summaryMessage.role !== "summary" || summaryMessage.status !== "committed") {
948
- throw new TypeError("Compaction summary must be one committed summary message");
949
- }
950
- const applied = await input.store.replaceCompactedRange({
951
- conversationId: input.conversationId,
952
- expectedVersion: snapshot.version,
953
- replacedMessageIds: [
954
- ...leadingSummary ? [leadingSummary.id] : [],
955
- ...eligibleMessages.map((message) => message.id)
956
- ],
957
- summary: summaryMessage
958
- });
959
- if (applied.outcome !== "conflict" || attempt === maxAttempts) {
960
- return mutationSnapshot(applied, snapshot, attempt);
961
- }
962
- }
963
- return { outcome: "conflict", snapshot: lastSnapshot, attempts: maxAttempts };
964
- };
965
- }
966
- // src/agent-runtime/deferred-tool-types.ts
967
- import { z as z3 } from "zod";
968
- var DeferredAgentToolSearchInputSchema = z3.object({
969
- query: z3.string().min(1).describe("An exact tool name, or words describing the tool. Matched as one phrase first, then word by word."),
970
- reason: z3.enum(["inactive_call"]).optional()
971
- });
972
- var DeferredAgentToolMatchSchema = z3.object({
973
- name: z3.string(),
974
- description: z3.string()
975
- });
976
- var DeferredAgentToolReceiptSchema = z3.object({
977
- schemaVersion: z3.literal(1),
978
- kind: z3.literal("stitchkit.deferred-tool-selection"),
979
- status: z3.enum(["SELECTED", "SEARCH_REQUIRED", "NO_MATCH", "SELECTION_REFUSED"]),
980
- runId: z3.string(),
981
- surfaceKey: z3.string(),
982
- selected: z3.array(z3.string()),
983
- matches: z3.array(DeferredAgentToolMatchSchema),
984
- truncated: z3.boolean()
985
- }).superRefine((receipt, context) => {
986
- const selected = receipt.status === "SELECTED" || receipt.status === "SEARCH_REQUIRED";
987
- if (selected !== receipt.selected.length > 0) {
988
- context.addIssue({
989
- code: "custom",
990
- path: ["selected"],
991
- message: `${receipt.status} receipt has inconsistent selected tools`
992
- });
993
- }
994
- });
995
-
996
- // src/agent-runtime/deferred-tool-selection.ts
997
- var encoder = new TextEncoder;
998
- function utf8Bytes(value) {
999
- return encoder.encode(typeof value === "string" ? value : JSON.stringify(value)).byteLength;
1000
- }
1001
- function positive(name, value) {
1002
- if (!Number.isInteger(value) || value <= 0)
1003
- throw new Error(`${name} must be a positive integer`);
1004
- }
1005
- function uniqueKnown(names, surface) {
1006
- const seen = new Set;
1007
- let rejected = 0;
1008
- for (const name of names) {
1009
- if (seen.has(name) || !surface.byName.has(name)) {
1010
- rejected += 1;
1011
- continue;
1012
- }
1013
- seen.add(name);
1014
- }
1015
- return { names: [...seen], rejected };
1016
- }
1017
- function schemaBytes(names, surface) {
1018
- let bytes = 0;
1019
- for (const name of names) {
1020
- const entry = name === surface.searchEntry.name ? surface.searchEntry : surface.byName.get(name);
1021
- if (entry)
1022
- bytes += utf8Bytes(entry);
1023
- }
1024
- return bytes;
1025
- }
1026
- function ranked(query, manifest) {
1027
- const phrase = rankedByPhrase(query, manifest);
1028
- return phrase.length > 0 ? phrase : rankedByWords(query, manifest);
1029
- }
1030
- function rankedByWords(query, manifest) {
1031
- const words = [
1032
- ...new Set(query.trim().toLocaleLowerCase().split(/\s+/u).filter((word) => word.length > 0))
1033
- ];
1034
- if (words.length < 2)
1035
- return [];
1036
- return manifest.map((entry, order) => {
1037
- const haystack = `${entry.name} ${entry.description}`.toLocaleLowerCase();
1038
- const hits = words.filter((word) => haystack.includes(word)).length;
1039
- return { name: entry.name, order, hits };
1040
- }).filter((entry) => entry.hits > 0).sort((left, right) => right.hits - left.hits || left.order - right.order).map((entry) => entry.name);
1041
- }
1042
- function rankedByPhrase(query, manifest) {
1043
- const needle = query.trim().toLocaleLowerCase();
1044
- return manifest.map((entry, order) => {
1045
- const name = entry.name.toLocaleLowerCase();
1046
- const description = entry.description.toLocaleLowerCase();
1047
- const score = name === needle ? 0 : name.startsWith(needle) ? 1 : name.split(/[_-]/u).some((token) => token.startsWith(needle)) ? 2 : name.includes(needle) ? 3 : description.includes(needle) ? 4 : 5;
1048
- return { name: entry.name, order, score };
1049
- }).filter((entry) => entry.score < 5).sort((left, right) => left.score - right.score || left.order - right.order).map((entry) => entry.name);
1050
- }
1051
- function latestSelection(messages, searchName, runId, surface, maxSelectedTools) {
1052
- let selected = [];
1053
- let found = false;
1054
- for (const message of messages) {
1055
- if (message.role !== "tool" || typeof message.content === "string")
1056
- continue;
1057
- const replacement = [];
1058
- let validReceipts = 0;
1059
- for (const part of message.content) {
1060
- if (part.type !== "tool-result" || part.toolName !== searchName)
1061
- continue;
1062
- if (part.output.type !== "json")
1063
- continue;
1064
- const parsed = DeferredAgentToolReceiptSchema.safeParse(part.output.value);
1065
- if (!parsed.success || parsed.data.runId !== runId || parsed.data.surfaceKey !== surface.key)
1066
- continue;
1067
- const known = uniqueKnown(parsed.data.selected, surface);
1068
- if (known.rejected > 0 || known.names.length !== parsed.data.selected.length)
1069
- continue;
1070
- replacement.push(...known.names);
1071
- validReceipts += 1;
1072
- }
1073
- if (validReceipts > 0) {
1074
- const merged = uniqueKnown(replacement, surface).names;
1075
- if (merged.length > maxSelectedTools)
1076
- continue;
1077
- selected = merged;
1078
- found = true;
1079
- }
1080
- }
1081
- return { selected, source: found ? "durable" : "catalog" };
1082
- }
1083
-
1084
- // src/agent-runtime/deferred-tool-search.ts
1085
- var description = "Search the available tool catalog and select exact tools for the next step. " + "The query is matched as one phrase against tool names and descriptions; " + "if nothing matches the phrase, its individual words are matched and the " + "tools matching the most words rank first. An exact tool name always wins, " + "so prefer one when you know it.";
1086
- function placeholderDeferredSearch(name) {
1087
- return defineRuntimeTool({
1088
- name,
1089
- description,
1090
- identity: { serviceName: "agent-runtime", action: "deferred-tool-search", method: "POST" },
1091
- input: DeferredAgentToolSearchInputSchema,
1092
- output: DeferredAgentToolReceiptSchema,
1093
- transports: ["AGENT"],
1094
- handler: () => ({
1095
- schemaVersion: 1,
1096
- kind: "stitchkit.deferred-tool-selection",
1097
- status: "NO_MATCH",
1098
- runId: "construction",
1099
- surfaceKey: "construction",
1100
- selected: [],
1101
- matches: [],
1102
- truncated: false
1103
- })
1104
- });
1105
- }
1106
- function createDeferredSearchTool(config, runContext, surface) {
1107
- return defineRuntimeTool({
1108
- name: config.search.name,
1109
- description,
1110
- identity: { serviceName: "agent-runtime", action: "deferred-tool-search", method: "POST" },
1111
- input: DeferredAgentToolSearchInputSchema,
1112
- output: DeferredAgentToolReceiptSchema,
1113
- transports: ["AGENT"],
1114
- handler: async ({ input }) => {
1115
- const queryOversized = utf8Bytes(input.query) > config.search.maxQueryBytes;
1116
- const proposed = queryOversized ? [] : input.reason === "inactive_call" ? [input.query] : config.search.select ? await config.search.select({
1117
- query: input.query,
1118
- manifest: surface.manifest,
1119
- context: runContext.context,
1120
- runId: runContext.run.id,
1121
- surfaceKey: surface.key
1122
- }) : ranked(input.query, surface.manifest);
1123
- const known = uniqueKnown(proposed, surface);
1124
- const selected = known.names.slice(0, config.search.maxResults);
1125
- const candidateActive = [config.search.name, ...surface.alwaysOn, ...selected];
1126
- const refused = queryOversized || selected.length > config.activation.maxSelectedTools || candidateActive.length > config.activation.maxActiveTools || schemaBytes(candidateActive, surface) > config.activation.maxSchemaBytes;
1127
- const admitted = refused ? [] : selected;
1128
- const matches = [];
1129
- let truncated = known.names.length > selected.length;
1130
- for (const name of selected) {
1131
- const entry = surface.byName.get(name);
1132
- if (!entry)
1133
- continue;
1134
- const next = [...matches, { name, description: entry.description }];
1135
- if (utf8Bytes({
1136
- schemaVersion: 1,
1137
- kind: "stitchkit.deferred-tool-selection",
1138
- status: "SELECTED",
1139
- runId: runContext.run.id,
1140
- surfaceKey: surface.key,
1141
- selected: admitted,
1142
- matches: next,
1143
- truncated
1144
- }) > config.search.maxResultBytes) {
1145
- truncated = true;
1146
- break;
1147
- }
1148
- matches.push({ name, description: entry.description });
1149
- }
1150
- const status = refused ? "SELECTION_REFUSED" : input.reason === "inactive_call" && admitted.length > 0 ? "SEARCH_REQUIRED" : admitted.length > 0 ? "SELECTED" : "NO_MATCH";
1151
- let receipt = {
1152
- schemaVersion: 1,
1153
- kind: "stitchkit.deferred-tool-selection",
1154
- status,
1155
- runId: runContext.run.id,
1156
- surfaceKey: surface.key,
1157
- selected: admitted,
1158
- matches,
1159
- truncated
1160
- };
1161
- if (utf8Bytes(receipt) > config.search.maxResultBytes) {
1162
- receipt = {
1163
- schemaVersion: 1,
1164
- kind: "stitchkit.deferred-tool-selection",
1165
- status: "SELECTION_REFUSED",
1166
- runId: runContext.run.id,
1167
- surfaceKey: surface.key,
1168
- selected: [],
1169
- matches: [],
1170
- truncated: true
1171
- };
1172
- }
1173
- if (utf8Bytes(receipt) > config.search.maxResultBytes) {
1174
- throw new AgentContextOverflowError("Deferred Agent search receipt exceeds its byte ceiling");
1175
- }
1176
- config.observe?.({
1177
- schemaVersion: 1,
1178
- type: "search",
1179
- runId: runContext.run.id,
1180
- surfaceKey: surface.key,
1181
- catalogTools: surface.manifest.length,
1182
- baseTools: surface.alwaysOn.length + 1,
1183
- pinnedTools: 0,
1184
- selectedTools: receipt.selected.length,
1185
- activeTools: surface.alwaysOn.length + receipt.selected.length + 1,
1186
- activeSchemaBytes: schemaBytes([config.search.name, ...surface.alwaysOn, ...receipt.selected], surface),
1187
- rejectedNames: known.rejected,
1188
- replacementTools: receipt.selected.length,
1189
- source: "current"
1190
- });
1191
- return receipt;
1192
- }
1193
- });
1194
- }
1195
-
1196
- // src/agent-runtime/deferred-tools.ts
1197
- function configuredSurfaces(config) {
1198
- return "surfaces" in config ? config.surfaces : { default: config };
1199
- }
1200
- function resolveSurface(config, surfaces, runContext) {
1201
- const key = "surfaces" in config ? config.selectSurface(runContext) : "default";
1202
- const surface = surfaces.get(key);
1203
- if (!surface)
1204
- throw new Error(`Unknown deferred Agent tool surface "${key}"`);
1205
- return surface;
1206
- }
1207
- function resolveAllSurfaces(config) {
1208
- const placeholderSearch = placeholderDeferredSearch(config.search.name);
1209
- const surfaces = new Map;
1210
- for (const [key, definition] of Object.entries(configuredSurfaces(config))) {
1211
- const runtimeTools = executableAgentRuntimeTools(definition.runtimeTools ?? []);
1212
- const fullManifest = buildToolManifest({
1213
- ...definition,
1214
- runtimeTools: [...runtimeTools, placeholderSearch],
1215
- transport: "AGENT"
1216
- });
1217
- const searchEntry = fullManifest.find((entry) => entry.name === config.search.name);
1218
- if (!searchEntry)
1219
- throw new Error(`Search tool "${config.search.name}" is not Agent-exposed`);
1220
- const manifest = fullManifest.filter((entry) => entry.name !== config.search.name);
1221
- const byName = new Map(manifest.map((entry) => [entry.name, entry]));
1222
- const provisional = {
1223
- key,
1224
- definition,
1225
- manifest,
1226
- byName,
1227
- searchEntry,
1228
- alwaysOn: []
1229
- };
1230
- const alwaysOn = uniqueKnown(definition.alwaysOn ?? [], provisional);
1231
- if (alwaysOn.rejected > 0)
1232
- throw new Error(`Surface "${key}" has an unknown or duplicate alwaysOn tool`);
1233
- surfaces.set(key, { ...provisional, alwaysOn: alwaysOn.names });
1234
- }
1235
- if (surfaces.size === 0)
1236
- throw new Error("Deferred Agent tool surface registry must not be empty");
1237
- return surfaces;
1238
- }
1239
- function assertConstructionBudgets(config, surfaces) {
1240
- for (const surface of surfaces.values()) {
1241
- const base = [...surface.alwaysOn, config.search.name];
1242
- if (base.length > config.activation.maxActiveTools) {
1243
- throw new Error(`Surface "${surface.key}" base tools exceed maxActiveTools`);
1244
- }
1245
- if (schemaBytes(base, surface) > config.activation.maxSchemaBytes) {
1246
- throw new Error(`Surface "${surface.key}" base tools exceed maxSchemaBytes`);
1247
- }
1248
- }
1249
- const minimumReceipt = {
1250
- schemaVersion: 1,
1251
- kind: "stitchkit.deferred-tool-selection",
1252
- status: "NO_MATCH",
1253
- runId: "run",
1254
- surfaceKey: "surface",
1255
- selected: [],
1256
- matches: [],
1257
- truncated: false
1258
- };
1259
- if (config.search.maxResultBytes < utf8Bytes(minimumReceipt)) {
1260
- throw new Error("search.maxResultBytes cannot contain the minimum search receipt");
1261
- }
1262
- }
1263
- function assertActiveBudget(config, names, surface) {
1264
- if (names.length > config.activation.maxActiveTools) {
1265
- throw new AgentContextOverflowError("Deferred Agent active-tool ceiling exceeded");
1266
- }
1267
- const bytes = schemaBytes(names, surface);
1268
- if (bytes > config.activation.maxSchemaBytes) {
1269
- throw new AgentContextOverflowError("Deferred Agent schema-byte ceiling exceeded");
1270
- }
1271
- return bytes;
1272
- }
1273
- function createDeferredAgentToolSurface(config) {
1274
- positive("search.maxQueryBytes", config.search.maxQueryBytes);
1275
- positive("search.maxResults", config.search.maxResults);
1276
- positive("search.maxResultBytes", config.search.maxResultBytes);
1277
- positive("activation.maxSelectedTools", config.activation.maxSelectedTools);
1278
- positive("activation.maxActiveTools", config.activation.maxActiveTools);
1279
- positive("activation.maxSchemaBytes", config.activation.maxSchemaBytes);
1280
- const surfaces = resolveAllSurfaces(config);
1281
- assertConstructionBudgets(config, surfaces);
1282
- return {
1283
- mount(runContext, mountConfig = {}) {
1284
- const surface = resolveSurface(config, surfaces, runContext);
1285
- const runtimeTools = [
1286
- ...executableAgentRuntimeTools(surface.definition.runtimeTools ?? []),
1287
- createDeferredSearchTool(config, runContext, surface)
1288
- ];
1289
- const tools = mountAgent([...surface.definition.services ?? []], {
1290
- ...mountConfig,
1291
- runtimeTools
1292
- });
1293
- registerDeferredToolCatalog(tools, config.search.name, new Set(surface.byName.keys()));
1294
- return tools;
1295
- },
1296
- prepareStep(applicationPrepareStep) {
1297
- const prepared = async (input) => {
1298
- const application = await applicationPrepareStep?.(input);
1299
- const surface = resolveSurface(config, surfaces, input);
1300
- const selection = latestSelection(input.messages, config.search.name, input.run.id, surface, config.activation.maxSelectedTools);
1301
- const currentSelection = latestSelection(input.responseMessages, config.search.name, input.run.id, surface, config.activation.maxSelectedTools);
1302
- const pins = uniqueKnown(config.pins?.(input) ?? [], surface);
1303
- if (pins.rejected > 0) {
1304
- throw new AgentContextOverflowError("Deferred Agent pins contain unknown or duplicate tools");
1305
- }
1306
- const selected = uniqueKnown(selection.selected, surface);
1307
- const names = uniqueKnown([config.search.name, ...surface.alwaysOn, ...pins.names, ...selected.names], surface).names;
1308
- if (!names.includes(config.search.name))
1309
- names.unshift(config.search.name);
1310
- const bytes = assertActiveBudget(config, names, surface);
1311
- config.observe?.({
1312
- schemaVersion: 1,
1313
- type: "step",
1314
- runId: input.run.id,
1315
- surfaceKey: surface.key,
1316
- catalogTools: surface.manifest.length,
1317
- baseTools: surface.alwaysOn.length + 1,
1318
- pinnedTools: pins.names.length,
1319
- selectedTools: selected.names.length,
1320
- activeTools: names.length,
1321
- activeSchemaBytes: bytes,
1322
- rejectedNames: selected.rejected,
1323
- replacementTools: selected.names.length,
1324
- source: currentSelection.source === "durable" ? "current" : selection.source
1325
- });
1326
- return { ...application, activeTools: names };
1327
- };
1328
- const repair = async ({ toolCall, tools, error }) => {
1329
- const catalog = deferredToolCatalog(tools, config.search.name);
1330
- if (!("toolName" in error) || !catalog?.has(toolCall.toolName) || toolCall.toolName in tools) {
1331
- return null;
1332
- }
1333
- return repairedSearchCall(toolCall, config.search.name);
1334
- };
1335
- registerDeferredToolRepair(prepared, repair);
1336
- return prepared;
1337
- }
1338
- };
1339
- }
1340
- // src/agent-runtime/event-search.ts
1341
- import { z as z4 } from "zod";
1342
- var AgentEventSearchResultSchema = z4.object({
1343
- conversationId: z4.string().min(1),
1344
- seq: z4.int().positive(),
1345
- occurredAt: z4.string(),
1346
- snippet: z4.string()
1347
- }).strict();
1348
- var SearchRowSchema = z4.object({
1349
- conversation_id: z4.string(),
1350
- event_seq: z4.int().positive(),
1351
- occurred_at: z4.string(),
1352
- snippet: z4.string()
1353
- });
1354
- function literalFtsQuery(query) {
1355
- const terms = query.split(/\s+/u).filter((term) => /[\p{L}\p{N}]/u.test(term));
1356
- if (terms.length === 0)
1357
- throw new TypeError("Event search query must contain searchable terms");
1358
- return terms.map((term) => `"${term.replaceAll('"', '""')}"`).join(" AND ");
1359
- }
1360
- function createSqliteAgentEventSearch(input) {
1361
- return async (request) => {
1362
- if (request.query.trim().length === 0)
1363
- throw new TypeError("Event search query must not be empty");
1364
- const limit = Math.min(request.limit ?? 20, 200);
1365
- const target = request.conversationId ?? (input.authorizeConversation ? undefined : request.requestingConversationId);
1366
- const values = [literalFtsQuery(request.query)];
1367
- const targetClause = target ? "AND f.conversation_id = ?" : "";
1368
- if (target)
1369
- values.push(target);
1370
- const sinceClause = request.since ? "AND f.occurred_at >= ?" : "";
1371
- if (request.since)
1372
- values.push(z4.iso.datetime({ offset: true }).parse(request.since));
1373
- const page = limit * 4;
1374
- const candidatesFrom = (offset2) => input.database.prepare(`
1375
- SELECT f.conversation_id, f.event_seq, f.occurred_at,
1376
- snippet(stitchkit_agent_runtime_events_fts, 3, '[', ']', ' … ', 24) AS snippet
1377
- FROM stitchkit_agent_runtime_events_fts AS f
1378
- WHERE stitchkit_agent_runtime_events_fts MATCH ? ${targetClause} ${sinceClause}
1379
- ORDER BY bm25(stitchkit_agent_runtime_events_fts), f.occurred_at DESC, f.rowid
1380
- LIMIT ? OFFSET ?
1381
- `).all(...values, page, offset2).map((row) => SearchRowSchema.parse(row));
1382
- const authorization = new Map;
1383
- const results = [];
1384
- let offset = 0;
1385
- let candidates = candidatesFrom(offset);
1386
- while (candidates.length > 0 && results.length < limit) {
1387
- for (const row of candidates) {
1388
- if (row.conversation_id !== request.requestingConversationId) {
1389
- let allowed = authorization.get(row.conversation_id);
1390
- if (allowed === undefined) {
1391
- allowed = input.authorizeConversation ? await input.authorizeConversation({
1392
- requestingConversationId: request.requestingConversationId,
1393
- targetConversationId: row.conversation_id
1394
- }) : false;
1395
- authorization.set(row.conversation_id, allowed);
1396
- }
1397
- if (!allowed)
1398
- continue;
1399
- }
1400
- results.push(AgentEventSearchResultSchema.parse({
1401
- conversationId: row.conversation_id,
1402
- seq: row.event_seq,
1403
- occurredAt: row.occurred_at,
1404
- snippet: row.snippet
1405
- }));
1406
- if (results.length === limit)
1407
- break;
1408
- }
1409
- offset += page;
1410
- candidates = results.length < limit ? candidatesFrom(offset) : [];
1411
- }
1412
- return results;
1413
- };
1414
- }
1415
- // src/agent-runtime/event-search-tools.ts
1416
- import { z as z5 } from "zod";
1417
- function createAgentEventSearchTools(input) {
1418
- const EventAddressSchema = z5.object({ conversationId: z5.string(), seq: z5.int().positive() }).strict();
1419
- const EventOutputSchema = z5.object({
1420
- conversationId: z5.string(),
1421
- seq: z5.int().positive(),
1422
- kind: z5.string(),
1423
- occurredAt: z5.string(),
1424
- payload: z5.json()
1425
- }).strict();
1426
- const readExact = async (address) => {
1427
- if (address.conversationId !== input.conversationId) {
1428
- const allowed = await input.authorizeConversation?.({
1429
- requestingConversationId: input.conversationId,
1430
- targetConversationId: address.conversationId
1431
- });
1432
- if (!allowed)
1433
- throw new TypeError("Event address is outside the authorized conversation");
1434
- }
1435
- const page = await input.store.readEvents({
1436
- conversationId: address.conversationId,
1437
- fromSeq: address.seq,
1438
- toSeq: address.seq,
1439
- limit: 1
1440
- });
1441
- const event = page.items[0];
1442
- if (!event || event.seq !== address.seq)
1443
- throw new TypeError("Unknown event address");
1444
- return {
1445
- conversationId: event.conversationId,
1446
- seq: event.seq,
1447
- kind: event.kind,
1448
- occurredAt: event.occurredAt,
1449
- payload: event.payload
1450
- };
1451
- };
1452
- return [
1453
- defineAgentTool({
1454
- name: "session_search",
1455
- description: "Search authorized durable conversation events and return exact addresses.",
1456
- identity: { serviceName: "agent-events", action: "search", method: "POST" },
1457
- input: z5.object({
1458
- query: z5.string().min(1),
1459
- conversationId: z5.string().min(1).optional(),
1460
- since: z5.iso.datetime({ offset: true }).optional(),
1461
- limit: z5.int().positive().max(200).optional()
1462
- }).strict(),
1463
- output: z5.object({ results: z5.array(AgentEventSearchResultSchema) }).strict(),
1464
- transports: ["AGENT"],
1465
- handler: async ({ input: request }) => ({
1466
- results: [
1467
- ...await input.search({
1468
- requestingConversationId: input.conversationId,
1469
- ...request
1470
- })
1471
- ]
1472
- })
1473
- }),
1474
- defineAgentTool({
1475
- name: "session_trace",
1476
- description: "Read a bounded contiguous slice of this conversation event trace.",
1477
- identity: { serviceName: "agent-events", action: "trace", method: "GET" },
1478
- input: z5.object({
1479
- fromSeq: z5.int().positive().optional(),
1480
- toSeq: z5.int().positive().optional(),
1481
- limit: z5.int().positive().max(1000).default(100)
1482
- }).strict(),
1483
- output: z5.object({ events: z5.array(EventOutputSchema), nextSeq: z5.number().optional() }),
1484
- transports: ["AGENT"],
1485
- handler: async ({ input: request }) => {
1486
- const page = await input.store.readEvents({
1487
- conversationId: input.conversationId,
1488
- ...request
1489
- });
1490
- return {
1491
- events: page.items.map((event) => ({
1492
- conversationId: event.conversationId,
1493
- seq: event.seq,
1494
- kind: event.kind,
1495
- occurredAt: event.occurredAt,
1496
- payload: event.payload
1497
- })),
1498
- ...page.nextSeq !== undefined && { nextSeq: page.nextSeq }
1499
- };
1500
- }
1501
- }),
1502
- defineAgentTool({
1503
- name: "session_event",
1504
- description: "Read one durable event by exact conversation and sequence address.",
1505
- identity: { serviceName: "agent-events", action: "read", method: "GET" },
1506
- input: EventAddressSchema,
1507
- output: EventOutputSchema,
1508
- transports: ["AGENT"],
1509
- handler: ({ input: request }) => readExact(request)
1510
- })
1511
- ];
1512
- }
1513
- // src/agent-runtime/observability.ts
1514
- import { z as z6 } from "zod";
1515
- var AgentRunEventBaseSchema = z6.object({
1516
- schemaVersion: z6.literal(1),
1517
- eventId: AgentRecordIdSchema,
1518
- conversationId: AgentRecordIdSchema,
1519
- runId: AgentRecordIdSchema,
1520
- traceId: z6.string().min(1),
1521
- spanId: z6.string().min(1),
1522
- parentSpanId: z6.string().min(1).optional(),
1523
- state: AgentRunStateSchema,
1524
- modelId: z6.string().min(1).optional(),
1525
- durationMs: z6.number().nonnegative().optional(),
1526
- emittedAt: AgentTimestampSchema
1527
- });
1528
- var AgentRunStartedEventSchema = AgentRunEventBaseSchema.extend({
1529
- type: z6.literal("run-started"),
1530
- queueWaitMs: z6.number().nonnegative().optional()
1531
- });
1532
- var AgentStepFinishedEventSchema = AgentRunEventBaseSchema.extend({
1533
- type: z6.literal("step-finished"),
1534
- step: z6.int().nonnegative(),
1535
- ttftMs: z6.number().nonnegative().optional(),
1536
- usage: AgentUsageSchema,
1537
- response: AgentProviderResponseSchema
1538
- });
1539
- var AgentRunTerminalEventSchema = AgentRunEventBaseSchema.extend({
1540
- type: z6.literal("run-terminal"),
1541
- terminalReason: AgentTerminalReasonSchema,
1542
- ttftMs: z6.number().nonnegative().optional(),
1543
- internalCause: z6.unknown().optional(),
1544
- usage: AgentUsageSchema
1545
- });
1546
- var AgentRunEventSchema = z6.discriminatedUnion("type", [
1547
- AgentRunStartedEventSchema,
1548
- AgentStepFinishedEventSchema,
1549
- AgentRunTerminalEventSchema
1550
- ]);
1551
- function createAgentObservability(config) {
1552
- const manager = createBoundedSinkManager({
1553
- write: config.write,
1554
- ...config.filter && { filter: config.filter },
1555
- ...config.maxPending !== undefined && { maxPending: config.maxPending },
1556
- ...config.onSinkError && { onSinkError: config.onSinkError },
1557
- ...config.onDrop && { onDrop: config.onDrop }
1558
- });
1559
- const DEDUPLICATION_WINDOW = 1e4;
1560
- const emitted = new Set;
1561
- const ring = new Array(DEDUPLICATION_WINDOW).fill(undefined);
1562
- let cursor = 0;
1563
- const remember = (eventId) => {
1564
- emitted.add(eventId);
1565
- const evicted = ring[cursor];
1566
- ring[cursor] = eventId;
1567
- cursor = (cursor + 1) % DEDUPLICATION_WINDOW;
1568
- if (evicted !== undefined)
1569
- emitted.delete(evicted);
1570
- };
1571
- return {
1572
- rootTrace(parent) {
1573
- const trace = parent ? childSpan(parent) : createTraceContext();
1574
- return trace;
1575
- },
1576
- emit(rawEvent) {
1577
- const parsed = AgentRunEventSchema.parse(rawEvent);
1578
- if ((config.deduplicate ?? true) && emitted.has(parsed.eventId))
1579
- return;
1580
- remember(parsed.eventId);
1581
- manager.submit(() => {
1582
- if (config.includeInternalCause)
1583
- return parsed;
1584
- if (parsed.type !== "run-terminal")
1585
- return parsed;
1586
- return AgentRunTerminalEventSchema.omit({ internalCause: true }).parse(parsed);
1587
- });
1588
- },
1589
- flush: (bound) => manager.flush(bound),
1590
- getStatus: () => manager.getStatus(),
1591
- close: (bound) => manager.close(bound)
1592
- };
1593
- }
1594
- // src/agent-runtime/projections.ts
1595
- import { z as z7 } from "zod";
1596
- function defineAgentProjection(definition) {
1597
- if (definition.name.length === 0)
1598
- throw new TypeError("Projection name must not be empty");
1599
- if (!Number.isInteger(definition.version) || definition.version < 1) {
1600
- throw new TypeError("Projection version must be a positive integer");
1601
- }
1602
- definition.schema.parse(definition.initial());
1603
- return definition;
1604
- }
1605
- function createAgentProjectionRegistry(definitions) {
1606
- const registry = new Map;
1607
- for (const definition of definitions) {
1608
- const previous = registry.get(definition.name);
1609
- if (previous)
1610
- throw new TypeError(`Duplicate agent projection: ${definition.name}`);
1611
- registry.set(definition.name, definition);
1612
- }
1613
- return registry;
1614
- }
1615
- var ProjectionRowSchema = z7.object({
1616
- conversation_id: z7.string().optional(),
1617
- version: z7.int().positive(),
1618
- upto_seq: z7.int().nonnegative(),
1619
- payload: z7.string(),
1620
- updated_at: z7.string()
1621
- });
1622
- function projectionPayload(value) {
1623
- return JSON.parse(value);
1624
- }
1625
- function createSqliteAgentProjectionStore(input) {
1626
- const database = input.sqlite.database;
1627
- const store = input.sqlite.store;
1628
- const load = (conversationId, definition) => {
1629
- const raw = database.prepare(`
1630
- SELECT version, upto_seq, payload, updated_at
1631
- FROM stitchkit_agent_runtime_projections
1632
- WHERE conversation_id = ? AND name = ?
1633
- `).get(conversationId, definition.name);
1634
- if (raw === null || raw === undefined)
1635
- return;
1636
- const row = ProjectionRowSchema.parse(raw);
1637
- if (row.version !== definition.version)
1638
- return;
1639
- return {
1640
- name: definition.name,
1641
- version: row.version,
1642
- uptoSeq: row.upto_seq,
1643
- updatedAt: row.updated_at,
1644
- value: definition.schema.parse(projectionPayload(row.payload))
1645
- };
1646
- };
1647
- const advance = async (conversationId, definition) => {
1648
- const current = load(conversationId, definition);
1649
- let value = current?.value ?? definition.initial();
1650
- let uptoSeq = current?.uptoSeq ?? 0;
1651
- let cursor = uptoSeq + 1;
1652
- let updatedAt = current?.updatedAt ?? new Date(0).toISOString();
1653
- for (;; ) {
1654
- const page = await store.readEvents({
1655
- conversationId,
1656
- fromSeq: cursor,
1657
- limit: 1000
1658
- });
1659
- for (const event of page.items) {
1660
- value = definition.schema.parse(definition.fold(value, event));
1661
- uptoSeq = event.seq;
1662
- updatedAt = event.occurredAt;
1663
- }
1664
- if (page.nextSeq === undefined)
1665
- break;
1666
- cursor = page.nextSeq;
1667
- }
1668
- await input.sqlite.transaction(async (scope) => {
1669
- scope.database.prepare(`
1670
- INSERT INTO stitchkit_agent_runtime_projections
1671
- (conversation_id, name, version, upto_seq, payload, updated_at)
1672
- VALUES (?, ?, ?, ?, ?, ?)
1673
- ON CONFLICT (conversation_id, name) DO UPDATE SET
1674
- version = excluded.version,
1675
- upto_seq = excluded.upto_seq,
1676
- payload = excluded.payload,
1677
- updated_at = excluded.updated_at
1678
- `).run(conversationId, definition.name, definition.version, uptoSeq, JSON.stringify(value), updatedAt);
1679
- });
1680
- return { name: definition.name, version: definition.version, uptoSeq, updatedAt, value };
1681
- };
1682
- const list = (definition) => database.prepare(`
1683
- SELECT conversation_id, version, upto_seq, payload, updated_at
1684
- FROM stitchkit_agent_runtime_projections
1685
- WHERE name = ? AND version = ? ORDER BY updated_at DESC, conversation_id
1686
- `).all(definition.name, definition.version).map((raw) => {
1687
- const row = ProjectionRowSchema.parse(raw);
1688
- if (!row.conversation_id)
1689
- throw new TypeError("Projection list row has no conversation id");
1690
- return {
1691
- conversationId: row.conversation_id,
1692
- projection: {
1693
- name: definition.name,
1694
- version: row.version,
1695
- uptoSeq: row.upto_seq,
1696
- updatedAt: row.updated_at,
1697
- value: definition.schema.parse(projectionPayload(row.payload))
1698
- }
1699
- };
1700
- });
1701
- return { load, advance, list };
1702
- }
1703
- var ConversationCardSchema = z7.object({
1704
- eventCount: z7.int().nonnegative(),
1705
- lastKind: z7.string().optional(),
1706
- lastOccurredAt: z7.string().optional()
1707
- });
1708
- var agentConversationCardProjection = defineAgentProjection({
1709
- name: "conversation-card",
1710
- version: 1,
1711
- schema: ConversationCardSchema,
1712
- initial: () => ({ eventCount: 0 }),
1713
- fold: (state, event) => ({
1714
- eventCount: state.eventCount + 1,
1715
- lastKind: event.kind,
1716
- lastOccurredAt: event.occurredAt
1717
- })
1718
- });
1719
- var StateSlotsProjectionSchema = z7.record(z7.string(), z7.json());
1720
- var agentStateSlotsProjection = defineAgentProjection({
1721
- name: "state-slots",
1722
- version: 1,
1723
- schema: StateSlotsProjectionSchema,
1724
- initial: () => ({}),
1725
- fold: (state, event) => {
1726
- if (event.kind !== "state/set")
1727
- return state;
1728
- const payload = z7.object({ name: z7.string().min(1), value: z7.json() }).passthrough().parse(event.payload);
1729
- return { ...state, [payload.name]: payload.value };
1730
- }
1731
- });
1732
- var ScheduleSummarySchema = z7.object({
1733
- scheduled: z7.int().nonnegative(),
1734
- fired: z7.int().nonnegative(),
1735
- cancelled: z7.int().nonnegative(),
1736
- late: z7.int().nonnegative()
1737
- });
1738
- var agentScheduleSummaryProjection = defineAgentProjection({
1739
- name: "schedule-summary",
1740
- version: 1,
1741
- schema: ScheduleSummarySchema,
1742
- initial: () => ({ scheduled: 0, fired: 0, cancelled: 0, late: 0 }),
1743
- fold: (state, event) => {
1744
- if (event.kind === "schedule/set")
1745
- return { ...state, scheduled: state.scheduled + 1 };
1746
- if (event.kind === "schedule/fired")
1747
- return { ...state, fired: state.fired + 1 };
1748
- if (event.kind === "schedule/cancelled")
1749
- return { ...state, cancelled: state.cancelled + 1 };
1750
- if (event.kind === "schedule/late")
1751
- return { ...state, late: state.late + 1 };
1752
- return state;
1753
- }
1754
- });
1755
- var RuntimeSummarySchema = z7.object({
1756
- eventCount: z7.int().nonnegative(),
1757
- lastSeq: z7.int().nonnegative(),
1758
- lastKind: z7.string().optional(),
1759
- lastOccurredAt: z7.string().optional(),
1760
- lastModelId: z7.string().optional()
1761
- }).strict();
1762
- var agentSummaryProjection = defineAgentProjection({
1763
- name: "summary",
1764
- version: 1,
1765
- schema: RuntimeSummarySchema,
1766
- initial: () => ({ eventCount: 0, lastSeq: 0 }),
1767
- fold: (state, event) => {
1768
- const request = event.kind === "provider/request" ? z7.object({ modelId: z7.string().optional() }).passthrough().safeParse(event.payload) : undefined;
1769
- return {
1770
- eventCount: state.eventCount + 1,
1771
- lastSeq: event.seq,
1772
- lastKind: event.kind,
1773
- lastOccurredAt: event.occurredAt,
1774
- ...request?.success && request.data.modelId ? { lastModelId: request.data.modelId } : state.lastModelId ? { lastModelId: state.lastModelId } : {}
1775
- };
1776
- }
1777
- });
1778
- var RuntimeUsageSchema = z7.object({
1779
- inputTokens: z7.number().nonnegative(),
1780
- outputTokens: z7.number().nonnegative(),
1781
- cost: z7.number().nonnegative(),
1782
- sources: z7.array(z7.string())
1783
- }).strict();
1784
- var agentUsageProjection = defineAgentProjection({
1785
- name: "usage",
1786
- version: 1,
1787
- schema: RuntimeUsageSchema,
1788
- initial: () => ({ inputTokens: 0, outputTokens: 0, cost: 0, sources: [] }),
1789
- fold: (state, event) => {
1790
- const parsed = z7.object({
1791
- inputTokens: z7.number().nonnegative().optional(),
1792
- outputTokens: z7.number().nonnegative().optional(),
1793
- cost: z7.number().nonnegative().optional(),
1794
- source: z7.string().min(1).optional()
1795
- }).passthrough().safeParse(event.payload);
1796
- if (!parsed.success)
1797
- return state;
1798
- const source = parsed.data.source;
1799
- return {
1800
- inputTokens: state.inputTokens + (parsed.data.inputTokens ?? 0),
1801
- outputTokens: state.outputTokens + (parsed.data.outputTokens ?? 0),
1802
- cost: state.cost + (parsed.data.cost ?? 0),
1803
- sources: source && !state.sources.includes(source) ? [...state.sources, source] : state.sources
1804
- };
1805
- }
1806
- });
1807
- var RuntimeOutlineSchema = z7.object({
1808
- requests: z7.array(z7.object({
1809
- seq: z7.int().positive(),
1810
- occurredAt: z7.string(),
1811
- runId: z7.string().optional()
1812
- }).strict())
1813
- }).strict();
1814
- var agentOutlineProjection = defineAgentProjection({
1815
- name: "outline",
1816
- version: 1,
1817
- schema: RuntimeOutlineSchema,
1818
- initial: () => ({ requests: [] }),
1819
- fold: (state, event) => {
1820
- if (event.kind !== "provider/request")
1821
- return state;
1822
- const payload = z7.object({ runId: z7.string().optional() }).passthrough().parse(event.payload);
1823
- return {
1824
- requests: [
1825
- ...state.requests,
1826
- {
1827
- seq: event.seq,
1828
- occurredAt: event.occurredAt,
1829
- ...payload.runId && { runId: payload.runId }
1830
- }
1831
- ]
1832
- };
1833
- }
1834
- });
1835
- // src/agent-runtime/protocol.ts
1836
- function hasAgentTerminalOutput(input) {
1837
- for (const part of input.message.parts) {
1838
- if (part.type === "text" && part.text.trim().length > 0)
1839
- return true;
1840
- if (part.type === "file" || part.type === "provider")
1841
- return true;
1842
- if (input.reason === "policy_stop" && (part.type === "tool-call" || part.type === "tool-result")) {
1843
- return true;
1844
- }
1845
- }
1846
- return false;
1847
- }
1848
- function defineAgentProtocol(config) {
1849
- const acceptance = config.terminalAcceptance;
1850
- return {
1851
- contextSchema: config.context,
1852
- inputMetadataSchema: config.inputMetadata,
1853
- parseContext: (input) => config.context.parse(input),
1854
- parseInputMetadata: (input) => AgentJsonObjectSchema.parse(config.inputMetadata.parse(input)),
1855
- parseMessage: (input) => AgentMessageSchema.parse(input),
1856
- parsePart: (input) => AgentMessageSchema.shape.parts.element.parse(input),
1857
- ...acceptance !== undefined && acceptance !== "allow-empty" && {
1858
- acceptTerminal: acceptance === "require-output" ? hasAgentTerminalOutput : acceptance
1859
- }
1860
- };
1861
- }
1862
- // src/agent-runtime/schedule-tools.ts
1863
- import { z as z8 } from "zod";
1864
- var ScheduledOutputSchema = z8.object({ scheduleId: z8.string(), nextAt: z8.string() }).strict();
1865
- var ConversationInputSchema = z8.object({ conversationId: z8.string().min(1) }).strict();
1866
- function createAgentScheduleTools(service) {
1867
- const schedule = async (request) => {
1868
- const result = await service.scheduleInput(request);
1869
- return { scheduleId: result.id, nextAt: result.nextAt };
1870
- };
1871
- return [
1872
- defineAgentTool({
1873
- name: "schedule_after",
1874
- description: "Schedule durable input after a relative delay.",
1875
- identity: { serviceName: "agent-schedules", action: "after", method: "POST" },
1876
- input: z8.object({
1877
- conversationId: z8.string().min(1),
1878
- input: z8.json(),
1879
- afterMs: z8.int().positive()
1880
- }).strict(),
1881
- output: ScheduledOutputSchema,
1882
- transports: ["AGENT"],
1883
- handler: ({ input }) => schedule(input)
1884
- }),
1885
- defineAgentTool({
1886
- name: "schedule_at",
1887
- description: "Schedule durable input at an absolute timestamp with an explicit offset.",
1888
- identity: { serviceName: "agent-schedules", action: "at", method: "POST" },
1889
- input: z8.object({ conversationId: z8.string().min(1), input: z8.json(), at: z8.string().min(1) }).strict(),
1890
- output: ScheduledOutputSchema,
1891
- transports: ["AGENT"],
1892
- handler: ({ input }) => schedule(input)
1893
- }),
1894
- defineAgentTool({
1895
- name: "schedule_every",
1896
- description: "Schedule recurring durable input in an explicit conversation timezone.",
1897
- identity: { serviceName: "agent-schedules", action: "every", method: "POST" },
1898
- input: z8.object({
1899
- conversationId: z8.string().min(1),
1900
- input: z8.json(),
1901
- everyMs: z8.int().positive(),
1902
- timeZone: z8.string().min(1)
1903
- }).strict(),
1904
- output: ScheduledOutputSchema,
1905
- transports: ["AGENT"],
1906
- handler: ({ input }) => schedule(input)
1907
- }),
1908
- defineAgentTool({
1909
- name: "schedule_list",
1910
- description: "List durable schedules for one conversation.",
1911
- identity: { serviceName: "agent-schedules", action: "list", method: "GET" },
1912
- input: ConversationInputSchema,
1913
- output: z8.object({ schedules: z8.array(z8.json()) }).strict(),
1914
- transports: ["AGENT"],
1915
- handler: ({ input }) => ({
1916
- schedules: [...service.listSchedules(input.conversationId)]
1917
- })
1918
- }),
1919
- defineAgentTool({
1920
- name: "schedule_cancel",
1921
- description: "Cancel one durable deferred-input schedule.",
1922
- identity: { serviceName: "agent-schedules", action: "cancel", method: "POST" },
1923
- input: z8.object({ conversationId: z8.string().min(1), scheduleId: z8.string().min(1) }).strict(),
1924
- output: z8.object({ cancelled: z8.boolean() }).strict(),
1925
- transports: ["AGENT"],
1926
- handler: async ({ input }) => ({
1927
- cancelled: await service.cancelSchedule(input.conversationId, input.scheduleId)
1928
- })
1929
- })
1930
- ];
1931
- }
1932
- // src/agent-runtime/schedules.ts
1933
- import { randomUUID as randomUUID2 } from "node:crypto";
1934
- import { z as z9 } from "zod";
1935
- var AgentScheduleSchema = z9.object({
1936
- id: z9.string().min(1),
1937
- conversationId: z9.string().min(1),
1938
- kind: z9.enum(["at", "after", "every"]),
1939
- nextAt: z9.iso.datetime({ offset: true }),
1940
- intervalMs: z9.int().positive().optional(),
1941
- timeZone: z9.string().min(1).optional(),
1942
- input: z9.json(),
1943
- state: z9.enum(["scheduled", "cancelled", "completed"]),
1944
- occurrence: z9.int().nonnegative(),
1945
- createdAt: z9.iso.datetime({ offset: true }),
1946
- updatedAt: z9.iso.datetime({ offset: true })
1947
- }).strict();
1948
- var ScheduleRowSchema = z9.object({
1949
- id: z9.string(),
1950
- conversation_id: z9.string(),
1951
- kind: z9.enum(["at", "after", "every"]),
1952
- next_at: z9.string(),
1953
- interval_ms: z9.number().int().positive().nullable(),
1954
- time_zone: z9.string().nullable(),
1955
- input_payload: z9.string(),
1956
- state: z9.enum(["scheduled", "cancelled", "completed"]),
1957
- occurrence: z9.int().nonnegative(),
1958
- created_at: z9.string(),
1959
- updated_at: z9.string()
1960
- });
1961
- var ClaimRowSchema = z9.object({
1962
- state: z9.enum(["scheduled", "cancelled", "completed"]),
1963
- claim_until: z9.string().nullable()
1964
- });
1965
- var FinalizeRowSchema = z9.object({
1966
- state: z9.enum(["scheduled", "cancelled", "completed"]),
1967
- claim_owner: z9.string().nullable()
1968
- });
1969
- var StateRowSchema = z9.object({
1970
- state: z9.enum(["scheduled", "cancelled", "completed"])
1971
- });
1972
- function parseSchedule(raw) {
1973
- const row = ScheduleRowSchema.parse(raw);
1974
- return AgentScheduleSchema.parse({
1975
- id: row.id,
1976
- conversationId: row.conversation_id,
1977
- kind: row.kind,
1978
- nextAt: row.next_at,
1979
- ...row.interval_ms !== null && { intervalMs: row.interval_ms },
1980
- ...row.time_zone !== null && { timeZone: row.time_zone },
1981
- input: JSON.parse(row.input_payload),
1982
- state: row.state,
1983
- occurrence: row.occurrence,
1984
- createdAt: row.created_at,
1985
- updatedAt: row.updated_at
1986
- });
1987
- }
1988
- function createAgentScheduleService(input) {
1989
- const onError = input.onError ?? ((error) => {
1990
- console.error("[stitchkit] agent schedule tick failed", error);
1991
- });
1992
- const now = input.now ?? (() => new Date);
1993
- const database = input.sqlite.database;
1994
- const setTimer = input.setTimer ?? ((callback, delay) => setTimeout(callback, delay));
1995
- const clearTimer = input.clearTimer ?? clearTimeout;
1996
- let timer;
1997
- let closed = false;
1998
- const listSchedules = (conversationId) => database.prepare(`
1999
- SELECT id, conversation_id, kind, next_at, interval_ms, time_zone,
2000
- input_payload, state, occurrence, created_at, updated_at
2001
- FROM stitchkit_agent_runtime_schedules
2002
- WHERE conversation_id = ? ORDER BY created_at, id
2003
- `).all(conversationId).map(parseSchedule);
2004
- const arm = () => {
2005
- if (timer)
2006
- clearTimer(timer);
2007
- if (closed)
2008
- return;
2009
- try {
2010
- armNext();
2011
- } catch (error) {
2012
- onError(error);
2013
- }
2014
- };
2015
- const armNext = () => {
2016
- const raw = database.prepare(`
2017
- SELECT MAX(next_at, COALESCE(claim_until, next_at)) AS due_at
2018
- FROM stitchkit_agent_runtime_schedules
2019
- WHERE state = 'scheduled' ORDER BY due_at, id LIMIT 1
2020
- `).get();
2021
- if (raw === null || raw === undefined || typeof raw.due_at !== "string")
2022
- return;
2023
- const delay = Math.max(0, new Date(raw.due_at).getTime() - now().getTime());
2024
- timer = setTimer(() => void tick(), Math.min(delay, 2147483647));
2025
- };
2026
- const owner = randomUUID2();
2027
- const CLAIM_MS = 60000;
2028
- let ticking;
2029
- const claim = (id, until, at) => input.sqlite.transaction(async (scope) => {
2030
- const raw = scope.database.prepare(`
2031
- SELECT state, claim_until FROM stitchkit_agent_runtime_schedules WHERE id = ?
2032
- `).get(id);
2033
- if (raw === null || raw === undefined)
2034
- return false;
2035
- const row = ClaimRowSchema.parse(raw);
2036
- if (row.state !== "scheduled")
2037
- return false;
2038
- if (row.claim_until !== null && row.claim_until >= at)
2039
- return false;
2040
- scope.database.prepare(`
2041
- UPDATE stitchkit_agent_runtime_schedules
2042
- SET claim_owner = ?, claim_until = ?, updated_at = ?
2043
- WHERE id = ?
2044
- `).run(owner, until, at, id);
2045
- return true;
2046
- });
2047
- const runTick = async () => {
2048
- if (closed)
2049
- return;
2050
- const observedAt = now();
2051
- const due = database.prepare(`
2052
- SELECT id, conversation_id, kind, next_at, interval_ms, time_zone,
2053
- input_payload, state, occurrence, created_at, updated_at
2054
- FROM stitchkit_agent_runtime_schedules
2055
- WHERE state = 'scheduled' AND next_at <= ? ORDER BY next_at, id
2056
- `).all(observedAt.toISOString()).map(parseSchedule);
2057
- for (const schedule of due) {
2058
- const at = observedAt.toISOString();
2059
- if (!await claim(schedule.id, new Date(observedAt.getTime() + CLAIM_MS).toISOString(), at)) {
2060
- continue;
2061
- }
2062
- const occurrence = schedule.occurrence + 1;
2063
- const lateByMs = Math.max(0, observedAt.getTime() - new Date(schedule.nextAt).getTime());
2064
- try {
2065
- await input.dispatch({
2066
- conversationId: schedule.conversationId,
2067
- idempotencyKey: `schedule:${schedule.id}:${occurrence}`,
2068
- input: schedule.input,
2069
- schedule: { id: schedule.id, occurrence, lateByMs }
2070
- });
2071
- } catch (error) {
2072
- await input.sqlite.transaction(async (scope) => {
2073
- scope.database.prepare(`
2074
- UPDATE stitchkit_agent_runtime_schedules
2075
- SET claim_owner = NULL, claim_until = NULL, updated_at = ?
2076
- WHERE id = ? AND claim_owner = ?
2077
- `).run(at, schedule.id, owner);
2078
- await scope.appendEvent({
2079
- conversationId: schedule.conversationId,
2080
- kind: "schedule/failed",
2081
- occurredAt: at,
2082
- payload: {
2083
- id: schedule.id,
2084
- occurrence,
2085
- message: error instanceof Error ? error.message : String(error)
2086
- }
2087
- });
2088
- });
2089
- continue;
2090
- }
2091
- let nextAt = schedule.nextAt;
2092
- if (schedule.kind === "every" && schedule.intervalMs) {
2093
- let next = new Date(schedule.nextAt).getTime() + schedule.intervalMs;
2094
- while (next <= observedAt.getTime())
2095
- next += schedule.intervalMs;
2096
- nextAt = new Date(next).toISOString();
2097
- }
2098
- const state = schedule.kind === "every" ? "scheduled" : "completed";
2099
- await input.sqlite.transaction(async (scope) => {
2100
- const held = scope.database.prepare(`
2101
- SELECT state, claim_owner FROM stitchkit_agent_runtime_schedules WHERE id = ?
2102
- `).get(schedule.id);
2103
- const settled = held !== null && held !== undefined && (() => {
2104
- const row = FinalizeRowSchema.parse(held);
2105
- return row.state === "scheduled" && row.claim_owner === owner;
2106
- })();
2107
- if (settled) {
2108
- scope.database.prepare(`
2109
- UPDATE stitchkit_agent_runtime_schedules
2110
- SET state = ?, occurrence = ?, next_at = ?, updated_at = ?,
2111
- claim_owner = NULL, claim_until = NULL
2112
- WHERE id = ?
2113
- `).run(state, occurrence, nextAt, at, schedule.id);
2114
- }
2115
- if (lateByMs > 0) {
2116
- await scope.appendEvent({
2117
- conversationId: schedule.conversationId,
2118
- kind: "schedule/late",
2119
- occurredAt: at,
2120
- payload: { id: schedule.id, occurrence, lateByMs }
2121
- });
2122
- }
2123
- await scope.appendEvent({
2124
- conversationId: schedule.conversationId,
2125
- kind: "schedule/fired",
2126
- occurredAt: at,
2127
- payload: {
2128
- id: schedule.id,
2129
- occurrence,
2130
- lateByMs,
2131
- nextAt,
2132
- state: settled ? state : "cancelled"
2133
- }
2134
- });
2135
- });
2136
- }
2137
- };
2138
- const tick = () => {
2139
- if (ticking)
2140
- return ticking;
2141
- ticking = runTick().catch(onError).finally(() => {
2142
- ticking = undefined;
2143
- arm();
2144
- });
2145
- return ticking;
2146
- };
2147
- const scheduleInput = async (request) => {
2148
- const modes = [
2149
- request.at !== undefined,
2150
- request.afterMs !== undefined,
2151
- request.everyMs !== undefined
2152
- ];
2153
- if (modes.filter(Boolean).length !== 1)
2154
- throw new TypeError("Declare exactly one schedule mode");
2155
- if (request.everyMs !== undefined && !request.timeZone) {
2156
- throw new TypeError("Repeating schedules require an explicit timeZone");
2157
- }
2158
- if (request.timeZone) {
2159
- try {
2160
- new Intl.DateTimeFormat("en", { timeZone: request.timeZone }).format(new Date(0));
2161
- } catch {
2162
- throw new TypeError(`Unknown schedule timeZone: ${request.timeZone}`);
2163
- }
2164
- }
2165
- const observedAt = now();
2166
- const kind = request.at !== undefined ? "at" : request.afterMs !== undefined ? "after" : "every";
2167
- const intervalMs = request.everyMs;
2168
- const delay = request.afterMs ?? request.everyMs;
2169
- if (delay !== undefined && (!Number.isSafeInteger(delay) || delay < 1)) {
2170
- throw new TypeError("Schedule delay must be a positive safe integer");
2171
- }
2172
- const nextAt = request.at ? new Date(z9.iso.datetime({ offset: true }).parse(request.at)).toISOString() : new Date(observedAt.getTime() + (delay ?? 0)).toISOString();
2173
- const schedule = AgentScheduleSchema.parse({
2174
- id: randomUUID2(),
2175
- conversationId: request.conversationId,
2176
- kind,
2177
- nextAt,
2178
- ...intervalMs !== undefined && { intervalMs },
2179
- ...request.timeZone && { timeZone: request.timeZone },
2180
- input: z9.json().parse(request.input),
2181
- state: "scheduled",
2182
- occurrence: 0,
2183
- createdAt: observedAt.toISOString(),
2184
- updatedAt: observedAt.toISOString()
2185
- });
2186
- await input.sqlite.transaction(async (scope) => {
2187
- scope.database.prepare(`
2188
- INSERT INTO stitchkit_agent_runtime_schedules (
2189
- id, conversation_id, kind, next_at, interval_ms, time_zone,
2190
- input_payload, state, occurrence, created_at, updated_at
2191
- ) VALUES (?, ?, ?, ?, ?, ?, ?, 'scheduled', 0, ?, ?)
2192
- `).run(schedule.id, schedule.conversationId, schedule.kind, schedule.nextAt, schedule.intervalMs ?? null, schedule.timeZone ?? null, JSON.stringify(schedule.input), schedule.createdAt, schedule.updatedAt);
2193
- await scope.appendEvent({
2194
- conversationId: schedule.conversationId,
2195
- kind: "schedule/set",
2196
- occurredAt: schedule.createdAt,
2197
- payload: { id: schedule.id, kind: schedule.kind, nextAt: schedule.nextAt }
2198
- });
2199
- });
2200
- arm();
2201
- return schedule;
2202
- };
2203
- const cancelSchedule = async (conversationId, id) => {
2204
- const observedAt = now().toISOString();
2205
- const changed = await input.sqlite.transaction(async (scope) => {
2206
- const raw = scope.database.prepare(`
2207
- SELECT state FROM stitchkit_agent_runtime_schedules
2208
- WHERE id = ? AND conversation_id = ?
2209
- `).get(id, conversationId);
2210
- if (raw === null || raw === undefined)
2211
- return false;
2212
- if (StateRowSchema.parse(raw).state !== "scheduled")
2213
- return false;
2214
- scope.database.prepare(`
2215
- UPDATE stitchkit_agent_runtime_schedules SET state = 'cancelled', updated_at = ?
2216
- WHERE id = ? AND conversation_id = ?
2217
- `).run(observedAt, id, conversationId);
2218
- await scope.appendEvent({
2219
- conversationId,
2220
- kind: "schedule/cancelled",
2221
- occurredAt: observedAt,
2222
- payload: { id }
2223
- });
2224
- return true;
2225
- });
2226
- if (changed)
2227
- arm();
2228
- return changed;
2229
- };
2230
- return {
2231
- scheduleInput,
2232
- cancelSchedule,
2233
- listSchedules,
2234
- tick,
2235
- start: arm,
2236
- close() {
2237
- closed = true;
2238
- if (timer)
2239
- clearTimer(timer);
2240
- }
2241
- };
2242
- }
2243
- // src/agent-runtime/spill.ts
2244
- import { createHash, randomUUID as randomUUID3 } from "node:crypto";
2245
- import { z as z10 } from "zod";
2246
- var SpillRowSchema = z10.object({
2247
- payload: z10.instanceof(Uint8Array),
2248
- bytes: z10.int().nonnegative(),
2249
- authorization_payload: z10.string().nullable()
2250
- });
2251
- var SpillMetadataRowSchema = z10.object({
2252
- reference_id: z10.string(),
2253
- bytes: z10.int().nonnegative(),
2254
- created_at: z10.string()
2255
- });
2256
- function decodeAuthorization(value) {
2257
- if (value === null)
2258
- return;
2259
- return JSON.parse(value);
2260
- }
2261
- function createSqliteAgentSpillStore(input) {
2262
- const now = input.now ?? (() => new Date);
2263
- const database = input.sqlite.database;
2264
- const rowFor = (reference) => {
2265
- const raw = database.prepare(`
2266
- SELECT payload, bytes, authorization_payload
2267
- FROM stitchkit_agent_runtime_spills
2268
- WHERE reference_id = ? AND conversation_id = ?
2269
- `).get(reference, input.conversationId);
2270
- if (raw === null || raw === undefined)
2271
- refuseUnknownSpillReference(reference);
2272
- return SpillRowSchema.parse(raw);
2273
- };
2274
- const authorization = (reference) => decodeAuthorization(rowFor(reference).authorization_payload);
2275
- const write = async (request) => {
2276
- const reference = randomUUID3();
2277
- const createdAt = now();
2278
- const expiresAt = input.retentionMs ? new Date(createdAt.getTime() + input.retentionMs).toISOString() : null;
2279
- const sha256 = createHash("sha256").update(request.data).digest("hex");
2280
- await input.sqlite.transaction(async (scope) => {
2281
- scope.database.prepare(`
2282
- INSERT INTO stitchkit_agent_runtime_spills (
2283
- reference_id, conversation_id, run_id, tool_call_id, media_type,
2284
- bytes, sha256, created_at, expires_at, payload, authorization_payload
2285
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2286
- `).run(reference, input.conversationId, input.runId ?? null, input.toolCallId ?? null, request.mediaType, request.data.byteLength, sha256, createdAt.toISOString(), expiresAt, request.data, request.authorization ? JSON.stringify(request.authorization) : null);
2287
- await scope.appendEvent({
2288
- conversationId: input.conversationId,
2289
- kind: "spill/created",
2290
- occurredAt: createdAt.toISOString(),
2291
- payload: { reference, bytes: request.data.byteLength, sha256 }
2292
- });
2293
- });
2294
- return { reference };
2295
- };
2296
- const read = async (request) => {
2297
- const row = rowFor(request.reference);
2298
- return {
2299
- data: row.payload.slice(request.offset, request.offset + request.maxBytes),
2300
- totalBytes: row.bytes,
2301
- ...decodeAuthorization(row.authorization_payload) && {
2302
- authorization: decodeAuthorization(row.authorization_payload)
2303
- }
2304
- };
2305
- };
2306
- const search = (request) => {
2307
- const row = rowFor(request.reference);
2308
- const matches = [];
2309
- new TextDecoder("utf-8", { fatal: true }).decode(row.payload).split(`
2310
- `).forEach((text, index) => {
2311
- if (matches.length < request.maxMatches && text.includes(request.query)) {
2312
- matches.push({ line: index + 1, text });
2313
- }
2314
- });
2315
- return matches;
2316
- };
2317
- const cleanup = async () => {
2318
- const expired = database.prepare(`
2319
- SELECT reference_id, bytes, created_at
2320
- FROM stitchkit_agent_runtime_spills
2321
- WHERE conversation_id = ? AND expires_at IS NOT NULL AND expires_at <= ?
2322
- ORDER BY created_at, reference_id
2323
- `).all(input.conversationId, now().toISOString()).map((row) => SpillMetadataRowSchema.parse(row));
2324
- let bytes = 0;
2325
- for (const spill of expired) {
2326
- await input.sqlite.transaction(async (scope) => {
2327
- scope.database.prepare("DELETE FROM stitchkit_agent_runtime_spills WHERE reference_id = ?").run(spill.reference_id);
2328
- await scope.appendEvent({
2329
- conversationId: input.conversationId,
2330
- kind: "spill/deleted",
2331
- payload: { reference: spill.reference_id, bytes: spill.bytes }
2332
- });
2333
- });
2334
- bytes += spill.bytes;
2335
- }
2336
- return { deleted: expired.length, bytes };
2337
- };
2338
- return { authorization, write, read, search, cleanup };
2339
- }
2340
- // src/agent-runtime/state-tools.ts
2341
- import { z as z11 } from "zod";
2342
- var GoalSchema = z11.object({
2343
- objective: z11.string().min(1),
2344
- status: z11.enum(["active", "complete", "blocked"])
2345
- }).strict();
2346
- var TodoItemSchema = z11.object({
2347
- step: z11.string().min(1),
2348
- status: z11.enum(["pending", "in_progress", "completed"])
2349
- }).strict();
2350
- function createAgentStateTools(input) {
2351
- const writeGoal = async (value) => {
2352
- const stored = await input.state.set({
2353
- conversationId: input.conversationId,
2354
- name: "goal",
2355
- value,
2356
- actor: "agent"
2357
- });
2358
- return GoalSchema.parse(stored.value);
2359
- };
2360
- return [
2361
- defineAgentTool({
2362
- name: "create_goal",
2363
- description: "Create the durable objective for this conversation.",
2364
- identity: { serviceName: "agent-state", action: "create-goal", method: "POST" },
2365
- input: z11.object({ objective: z11.string().min(1) }).strict(),
2366
- output: GoalSchema,
2367
- transports: ["AGENT"],
2368
- handler: async ({ input: request }) => {
2369
- if (await input.state.get(input.conversationId, "goal")) {
2370
- throw new TypeError("A durable goal already exists for this conversation");
2371
- }
2372
- return writeGoal({ objective: request.objective, status: "active" });
2373
- }
2374
- }),
2375
- defineAgentTool({
2376
- name: "update_goal",
2377
- description: "Update the durable objective or lifecycle status.",
2378
- identity: { serviceName: "agent-state", action: "update-goal", method: "POST" },
2379
- input: z11.object({
2380
- objective: z11.string().min(1).optional(),
2381
- status: z11.enum(["active", "complete", "blocked"]).optional()
2382
- }).strict().refine((request) => request.objective !== undefined || request.status !== undefined, {
2383
- message: "At least one goal field must be supplied"
2384
- }),
2385
- output: GoalSchema,
2386
- transports: ["AGENT"],
2387
- handler: async ({ input: request }) => {
2388
- const current = await input.state.get(input.conversationId, "goal");
2389
- if (!current)
2390
- throw new TypeError("No durable goal exists for this conversation");
2391
- const goal = GoalSchema.parse(current.value);
2392
- return writeGoal({ ...goal, ...request });
2393
- }
2394
- }),
2395
- defineAgentTool({
2396
- name: "get_goal",
2397
- description: "Read the durable objective for this conversation.",
2398
- identity: { serviceName: "agent-state", action: "get-goal", method: "GET" },
2399
- input: z11.object({}).strict(),
2400
- output: z11.object({ goal: GoalSchema.optional() }).strict(),
2401
- transports: ["AGENT"],
2402
- handler: async () => {
2403
- const current = await input.state.get(input.conversationId, "goal");
2404
- return { ...current && { goal: GoalSchema.parse(current.value) } };
2405
- }
2406
- }),
2407
- defineAgentTool({
2408
- name: "todo_write",
2409
- description: "Replace the durable ordered work plan for this conversation.",
2410
- identity: { serviceName: "agent-state", action: "write-todo", method: "POST" },
2411
- input: z11.object({ items: z11.array(TodoItemSchema) }).strict(),
2412
- output: z11.object({ items: z11.array(TodoItemSchema) }).strict(),
2413
- transports: ["AGENT"],
2414
- handler: async ({ input: request }) => {
2415
- const stored = await input.state.set({
2416
- conversationId: input.conversationId,
2417
- name: "todo",
2418
- value: request,
2419
- actor: "agent"
2420
- });
2421
- return z11.object({ items: z11.array(TodoItemSchema) }).strict().parse(stored.value);
2422
- }
2423
- })
2424
- ];
2425
- }
2426
- export {
2427
- validateAgentModelSnapshot,
2428
- structuredCompaction,
2429
- selectCompactableHistory,
2430
- selectAgentHistory,
2431
- searchAgentModelCatalog,
2432
- runStateForTerminalReason,
2433
- renderAgentStateSlots,
2434
- recordAgentSandboxProbe,
2435
- recordAgentRetryDecision,
2436
- purgeAgentConversation,
2437
- projectAgentHistoryDetailed,
2438
- projectAgentHistory,
2439
- probeAgentProcessSandbox,
2440
- missingSandboxRestrictions,
2441
- isToolResultFailure,
2442
- isAssistantHistoryEvidence,
2443
- hasAgentTerminalOutput,
2444
- encodeAgentConversationArchive,
2445
- defineStateSlot,
2446
- defineModelRegistry,
2447
- defineAgentProtocol,
2448
- defineAgentProjection,
2449
- decodeAgentStoreEvent,
2450
- decodeAgentConversationArchive,
2451
- createSqliteAgentSpillStore,
2452
- createSqliteAgentProjectionStore,
2453
- createSqliteAgentEventSearch,
2454
- createSqliteAgentChildManager,
2455
- createMemoryAgentRuntimeStore,
2456
- createMemoryAgentModelSelectionStore,
2457
- createLocalStepDurability,
2458
- createDeferredAgentToolSurface,
2459
- createAgentToolFenceLifecycle,
2460
- createAgentStateTools,
2461
- createAgentStateSlotStore,
2462
- createAgentSessionCoordinator,
2463
- createAgentScheduleTools,
2464
- createAgentScheduleService,
2465
- createAgentRuntimeStore,
2466
- createAgentRuntimeEventSink,
2467
- createAgentRuntime,
2468
- createAgentProjectionRegistry,
2469
- createAgentObservability,
2470
- createAgentEventSearchTools,
2471
- createAgentChildTools,
2472
- composeAgentPrompt,
2473
- classifyProviderFailure,
2474
- canonicalAgentJson,
2475
- agentUsageProjection,
2476
- agentTodoStateSlot,
2477
- agentSummaryProjection,
2478
- agentStateSlotsProjection,
2479
- agentScheduleSummaryProjection,
2480
- agentOutlineProjection,
2481
- agentGoalStateSlot,
2482
- agentDurableEventId,
2483
- agentConversationCardProjection,
2484
- agentChildBudgetStopPolicy,
2485
- advanceAgentRuntimeEventCursor,
2486
- StepResultNotSerializableError,
2487
- StepResultDecodeError,
2488
- StepAbortedError,
2489
- SeedConversationInputSchema,
2490
- RequestRunInterruptSchema,
2491
- ReplaceCompactedRangeSchema,
2492
- RecoverAgentRunSchema,
2493
- RecordRunOperationSchema,
2494
- ReadAgentStoreEventsSchema,
2495
- ParkRecordDecodeError,
2496
- ParkAbortedError,
2497
- DeferredAgentToolSearchInputSchema,
2498
- DeferredAgentToolReceiptSchema,
2499
- DeferredAgentToolMatchSchema,
2500
- DURABILITY_STEP_EVENT_KIND,
2501
- CommitRunTerminalSchema,
2502
- CheckpointRunAssistantSchema,
2503
- AppendAgentStoreEventSchema,
2504
- AgentUsageValueSchema,
2505
- AgentUsageSchema,
2506
- AgentTransientDeltaEventSchema,
2507
- AgentToolStatusEventSchema,
2508
- AgentToolResultPartSchema,
2509
- AgentToolCallPartSchema,
2510
- AgentToolApprovalResponsePartSchema,
2511
- AgentToolApprovalRequestPartSchema,
2512
- AgentTokenCountSchema,
2513
- AgentTimestampSchema,
2514
- AgentTextPartSchema,
2515
- AgentTerminalReasonSchema,
2516
- AgentTerminalEventSchema,
2517
- AgentStoredRunSchema,
2518
- AgentStoreTransitionSchema,
2519
- AgentStoreNotFoundSchema,
2520
- AgentStoreMutationResultSchema,
2521
- AgentStoreEventPageSchema,
2522
- AgentStoreEventKindSchema,
2523
- AgentStoreEventEnvelopeSchema,
2524
- AgentStoreDuplicateSchema,
2525
- AgentStoreConflictSchema,
2526
- AgentStoreAppliedSchema,
2527
- AgentStepFinishedEventSchema,
2528
- AgentSourcePartSchema,
2529
- AgentSnapshotSchema,
2530
- AgentSeedReceiptSchema,
2531
- AgentScheduleSchema,
2532
- AgentSandboxRestrictionSchema,
2533
- AgentSandboxGradeSchema,
2534
- AgentRuntimeHeadSchema,
2535
- AgentRuntimeEventSchema,
2536
- AgentRuntimeEventCursorSchema,
2537
- AgentRuntimeConflictError,
2538
- AgentRunViewSchema,
2539
- AgentRunTerminalEventSchema,
2540
- AgentRunStateSchema,
2541
- AgentRunStateEventSchema,
2542
- AgentRunStartedEventSchema,
2543
- AgentRunSchema,
2544
- AgentRunQueuePrioritySchema,
2545
- AgentRunOperationSchema,
2546
- AgentRunOperationPhaseSchema,
2547
- AgentRunOperationKindSchema,
2548
- AgentRunOperationEventSchema,
2549
- AgentRunMetricsSchema,
2550
- AgentRunEventSchema,
2551
- AgentRecoverablePageSchema,
2552
- AgentRecoverableDescriptorSchema,
2553
- AgentRecordVersionSchema,
2554
- AgentRecordIdSchema,
2555
- AgentReasoningStartEventSchema,
2556
- AgentReasoningPartSchema,
2557
- AgentReasoningEndEventSchema,
2558
- AgentReasoningDeltaEventSchema,
2559
- AgentProviderStreamCutError,
2560
- AgentProviderResponseSchema,
2561
- AgentProviderEnvelopeSchema,
2562
- AgentProvenanceSchema,
2563
- AgentOpaquePartSchema,
2564
- AgentModelSelectionSchema,
2565
- AgentModelSearchResultSchema,
2566
- AgentModelSearchInputSchema,
2567
- AgentModelRegistrySnapshotSchema,
2568
- AgentModelPriceSchema,
2569
- AgentModelPopularitySchema,
2570
- AgentModelMetricSchema,
2571
- AgentModelDescriptorSchema,
2572
- AgentModelCatalogSchema,
2573
- AgentModelCatalogEntrySchema,
2574
- AgentModelCapabilitySchema,
2575
- AgentMessageStatusSchema,
2576
- AgentMessageSchema,
2577
- AgentMessageRoleSchema,
2578
- AgentMessagePartSchema,
2579
- AgentJsonObjectSchema,
2580
- AgentHistoryMutationSchema,
2581
- AgentFilePartSchema,
2582
- AgentEventSearchResultSchema,
2583
- AgentCostValueSchema,
2584
- AgentConversationSummarySchema,
2585
- AgentConversationPurgedError,
2586
- AgentConversationPurgeResultSchema,
2587
- AgentConversationPurgeInputSchema,
2588
- AgentConversationPageSchema,
2589
- AgentConversationMessagePageSchema,
2590
- AgentConversationArchiveSchema,
2591
- AgentControlPartSchema,
2592
- AgentContextOverflowError,
2593
- AgentChildStateSchema,
2594
- AgentChildRecordSchema,
2595
- AgentChildBudgetSchema,
2596
- AgentChildBlockingSourceSchema,
2597
- AgentChildBlockingKindSchema,
2598
- AgentChildBlockingEventSchema,
2599
- AgentCheckpointEventSchema,
2600
- AgentAttemptResetEventSchema,
2601
- AgentAssistantPlaceholderSchema,
2602
- AgentAdmissionReceiptSchema,
2603
- AgentAdmissionEventSchema,
2604
- AcquireAgentRunSchema,
2605
- AcceptInputAndAssignRunSchema,
2606
- ACTIVE_AGENT_RUN_STATES
2607
- };