stitchkit 0.104.2 → 0.105.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 (430) hide show
  1. package/CHANGELOG.md +401 -13
  2. package/darwin-native.cjs +4 -2
  3. package/dist/agent-runtime/browser-control-contract.d.ts +32 -2
  4. package/dist/agent-runtime/browser-control-contract.d.ts.map +1 -1
  5. package/dist/agent-runtime/browser-controller.d.ts +21 -3
  6. package/dist/agent-runtime/browser-controller.d.ts.map +1 -1
  7. package/dist/agent-runtime/coding-shell-process.d.ts.map +1 -1
  8. package/dist/agent-runtime/coding-tool-refusals.d.ts +1 -0
  9. package/dist/agent-runtime/coding-tool-refusals.d.ts.map +1 -1
  10. package/dist/agent-runtime/coding-tool-shell.d.ts.map +1 -1
  11. package/dist/agent-runtime/compaction.d.ts.map +1 -1
  12. package/dist/agent-runtime/contained-write.d.ts.map +1 -1
  13. package/dist/agent-runtime/control-schema.d.ts +48 -1
  14. package/dist/agent-runtime/control-schema.d.ts.map +1 -1
  15. package/dist/agent-runtime/deferred-tool-search.d.ts +3 -2
  16. package/dist/agent-runtime/deferred-tool-search.d.ts.map +1 -1
  17. package/dist/agent-runtime/harness-control.d.ts.map +1 -1
  18. package/dist/agent-runtime/harness-realtime.d.ts +34 -4
  19. package/dist/agent-runtime/harness-realtime.d.ts.map +1 -1
  20. package/dist/agent-runtime/runtime-recovery.d.ts.map +1 -1
  21. package/dist/agent-runtime/runtime-state.d.ts.map +1 -1
  22. package/dist/agent-runtime/sandbox-contract.d.ts.map +1 -1
  23. package/dist/agent-runtime/sandbox-process-owner.d.ts +9 -1
  24. package/dist/agent-runtime/sandbox-process-owner.d.ts.map +1 -1
  25. package/dist/agent-runtime/sandbox.d.ts +32 -1
  26. package/dist/agent-runtime/sandbox.d.ts.map +1 -1
  27. package/dist/agent-runtime/schedule-records.d.ts.map +1 -1
  28. package/dist/agent-runtime/schedules.d.ts.map +1 -1
  29. package/dist/agent-runtime/store-events.d.ts +9 -4
  30. package/dist/agent-runtime/store-events.d.ts.map +1 -1
  31. package/dist/agent-runtime/testing.d.ts.map +1 -1
  32. package/dist/application/diagnostic-journal-contract.d.ts +50 -0
  33. package/dist/application/diagnostic-journal-contract.d.ts.map +1 -1
  34. package/dist/application/diagnostic-journal-generations.d.ts +24 -0
  35. package/dist/application/diagnostic-journal-generations.d.ts.map +1 -0
  36. package/dist/application/diagnostic-journal-manager.d.ts.map +1 -1
  37. package/dist/application/diagnostic-journal-open.d.ts +10 -0
  38. package/dist/application/diagnostic-journal-open.d.ts.map +1 -0
  39. package/dist/application/diagnostic-journal-quarantine.d.ts +28 -0
  40. package/dist/application/diagnostic-journal-quarantine.d.ts.map +1 -0
  41. package/dist/application/diagnostic-journal-read-contract.d.ts +73 -3
  42. package/dist/application/diagnostic-journal-read-contract.d.ts.map +1 -1
  43. package/dist/application/diagnostic-journal-reader.d.ts +17 -2
  44. package/dist/application/diagnostic-journal-reader.d.ts.map +1 -1
  45. package/dist/application/diagnostic-journal-recovery.d.ts +18 -2
  46. package/dist/application/diagnostic-journal-recovery.d.ts.map +1 -1
  47. package/dist/application/diagnostic-journal-storage.d.ts +6 -2
  48. package/dist/application/diagnostic-journal-storage.d.ts.map +1 -1
  49. package/dist/application/diagnostic-journal-tail.d.ts +12 -0
  50. package/dist/application/diagnostic-journal-tail.d.ts.map +1 -0
  51. package/dist/application/diagnostic-journal.d.ts +3 -0
  52. package/dist/application/diagnostic-journal.d.ts.map +1 -1
  53. package/dist/application/directory-inbox-accept.d.ts +3 -3
  54. package/dist/application/directory-inbox-accept.d.ts.map +1 -1
  55. package/dist/application/directory-inbox-contract.d.ts +38 -10
  56. package/dist/application/directory-inbox-contract.d.ts.map +1 -1
  57. package/dist/application/directory-inbox-delivery.d.ts +3 -3
  58. package/dist/application/directory-inbox-delivery.d.ts.map +1 -1
  59. package/dist/application/directory-inbox-files.d.ts +17 -2
  60. package/dist/application/directory-inbox-files.d.ts.map +1 -1
  61. package/dist/application/directory-inbox-state.d.ts +1 -1
  62. package/dist/application/directory-inbox-state.d.ts.map +1 -1
  63. package/dist/application/directory-inbox.d.ts +1 -1
  64. package/dist/application/directory-inbox.d.ts.map +1 -1
  65. package/dist/application/file-state-store.d.ts +21 -1
  66. package/dist/application/file-state-store.d.ts.map +1 -1
  67. package/dist/application/grammy.d.ts.map +1 -1
  68. package/dist/application/kernel-contract.d.ts.map +1 -1
  69. package/dist/application/revision-signal.d.ts.map +1 -1
  70. package/dist/application/state-store.d.ts +3 -0
  71. package/dist/application/state-store.d.ts.map +1 -1
  72. package/dist/browser/api-error.d.ts +38 -0
  73. package/dist/browser/api-error.d.ts.map +1 -0
  74. package/dist/browser/chunked-upload.d.ts.map +1 -1
  75. package/dist/browser/client-executors.d.ts.map +1 -1
  76. package/dist/browser/client-url.d.ts.map +1 -1
  77. package/dist/browser/contract-stream.d.ts.map +1 -1
  78. package/dist/browser/http.d.ts +0 -25
  79. package/dist/browser/http.d.ts.map +1 -1
  80. package/dist/browser/resumable.d.ts.map +1 -1
  81. package/dist/contract/define-validation.d.ts +0 -1
  82. package/dist/contract/define-validation.d.ts.map +1 -1
  83. package/dist/contract/define.d.ts.map +1 -1
  84. package/dist/contract/errors-factory.d.ts.map +1 -1
  85. package/dist/contract/errors.d.ts +15 -18
  86. package/dist/contract/errors.d.ts.map +1 -1
  87. package/dist/contract/normalize.d.ts.map +1 -1
  88. package/dist/durability/effect.d.ts.map +1 -1
  89. package/dist/durability/scheduler.d.ts.map +1 -1
  90. package/dist/entrypoints/agent-runtime/browser.js +29 -18
  91. package/dist/entrypoints/agent-runtime/coding-tools.js +8 -7
  92. package/dist/entrypoints/agent-runtime/harness.js +15 -14
  93. package/dist/entrypoints/agent-runtime/realtime.d.ts +1 -1
  94. package/dist/entrypoints/agent-runtime/realtime.d.ts.map +1 -1
  95. package/dist/entrypoints/agent-runtime/realtime.js +119 -54
  96. package/dist/entrypoints/agent-runtime/sandbox.js +23 -17
  97. package/dist/entrypoints/agent-runtime/sqlite/bun.js +4 -3
  98. package/dist/entrypoints/agent-runtime/sqlite/node.js +4 -3
  99. package/dist/entrypoints/agent-runtime/testing.js +8 -6
  100. package/dist/entrypoints/agent-runtime.js +37 -38
  101. package/dist/entrypoints/application/diagnostic-journal.js +305 -111
  102. package/dist/entrypoints/application/directory-inbox.js +174 -77
  103. package/dist/entrypoints/application/grammy.js +5 -2
  104. package/dist/entrypoints/application/opentelemetry.js +2 -2
  105. package/dist/entrypoints/application.d.ts +2 -2
  106. package/dist/entrypoints/application.d.ts.map +1 -1
  107. package/dist/entrypoints/application.js +17 -8
  108. package/dist/entrypoints/cli/publish.d.ts +16 -0
  109. package/dist/entrypoints/cli/publish.d.ts.map +1 -0
  110. package/dist/entrypoints/cli/publish.js +527 -0
  111. package/dist/entrypoints/cli.d.ts +1 -2
  112. package/dist/entrypoints/cli.d.ts.map +1 -1
  113. package/dist/entrypoints/cli.js +59 -966
  114. package/dist/entrypoints/contract.js +3 -3
  115. package/dist/entrypoints/files/packaging.js +161 -66
  116. package/dist/entrypoints/files.d.ts +1 -0
  117. package/dist/entrypoints/files.d.ts.map +1 -1
  118. package/dist/entrypoints/files.js +17 -10
  119. package/dist/entrypoints/index.d.ts +2 -1
  120. package/dist/entrypoints/index.d.ts.map +1 -1
  121. package/dist/entrypoints/index.js +31 -60
  122. package/dist/entrypoints/node.js +8 -8
  123. package/dist/entrypoints/observability.js +3 -3
  124. package/dist/entrypoints/primitives.js +67 -83
  125. package/dist/entrypoints/process.d.ts +1 -1
  126. package/dist/entrypoints/process.d.ts.map +1 -1
  127. package/dist/entrypoints/process.js +2 -2
  128. package/dist/entrypoints/react.js +4 -2
  129. package/dist/entrypoints/remote.js +37 -13
  130. package/dist/entrypoints/server.js +18 -16
  131. package/dist/entrypoints/telegram/screens.js +5 -3
  132. package/dist/entrypoints/telegram.js +31 -46
  133. package/dist/entrypoints/testing.d.ts +1 -1
  134. package/dist/entrypoints/testing.d.ts.map +1 -1
  135. package/dist/entrypoints/testing.js +444 -448
  136. package/dist/entrypoints/tools/connections.js +268 -105
  137. package/dist/entrypoints/tools/contract.js +2 -2
  138. package/dist/entrypoints/tools/invoker.js +8 -7
  139. package/dist/entrypoints/tools/mcp.d.ts +2 -2
  140. package/dist/entrypoints/tools/mcp.d.ts.map +1 -1
  141. package/dist/entrypoints/tools/mcp.js +10 -9
  142. package/dist/entrypoints/tools.d.ts +0 -1
  143. package/dist/entrypoints/tools.d.ts.map +1 -1
  144. package/dist/entrypoints/tools.js +118 -53
  145. package/dist/entrypoints/tracking.js +2 -3
  146. package/dist/files/boundary.d.ts +2 -2
  147. package/dist/files/boundary.d.ts.map +1 -1
  148. package/dist/files/chunk-spool.d.ts.map +1 -1
  149. package/dist/files/file-io.d.ts +2 -2
  150. package/dist/files/file-io.d.ts.map +1 -1
  151. package/dist/files/native-packaging-layout.d.ts +50 -4
  152. package/dist/files/native-packaging-layout.d.ts.map +1 -1
  153. package/dist/files/native-packaging.d.ts +78 -17
  154. package/dist/files/native-packaging.d.ts.map +1 -1
  155. package/dist/{index-r5hsgkz5.js → index-0gs4ymfj.js} +6 -3
  156. package/dist/{index-zax7resm.js → index-0gxvns6s.js} +1 -13
  157. package/dist/index-0s4xebbg.js +8 -0
  158. package/dist/{index-r4r70zmh.js → index-12zsej7b.js} +5 -2
  159. package/dist/{index-269zqj8m.js → index-1ptj98e0.js} +28 -12
  160. package/dist/{index-kemm0ej5.js → index-1pwwan01.js} +65 -22
  161. package/dist/{index-vgkbcnkc.js → index-299sm5tr.js} +1 -1
  162. package/dist/{index-2vnh05w4.js → index-2k91mewf.js} +31 -74
  163. package/dist/{index-wh0ecvyk.js → index-37asdw3a.js} +1 -1
  164. package/dist/index-3h0ztg0z.js +285 -0
  165. package/dist/{index-g95fk660.js → index-4vsby8n8.js} +8 -15
  166. package/dist/index-556g5hsh.js +17 -0
  167. package/dist/{index-f330qqyg.js → index-5c26631f.js} +244 -67
  168. package/dist/{index-adhgd4pe.js → index-5p55xreg.js} +2 -2
  169. package/dist/index-5w6t91ze.js +47 -0
  170. package/dist/{index-9pw0a51a.js → index-6yxhe58g.js} +40 -7
  171. package/dist/{index-6d9xaxw1.js → index-8ks9b85e.js} +33 -5
  172. package/dist/{index-bhb950qs.js → index-916yh4e2.js} +25 -12
  173. package/dist/index-9tqbxv5p.js +44 -0
  174. package/dist/{index-5csmzesf.js → index-azx12jgv.js} +4 -3
  175. package/dist/{index-mbnnw3f2.js → index-b0kddvzw.js} +15 -5
  176. package/dist/{index-n5yqxd3d.js → index-b0w7rbpt.js} +23 -2
  177. package/dist/index-b56nnscm.js +132 -0
  178. package/dist/{index-0ndk4555.js → index-c0hffcmj.js} +2 -2
  179. package/dist/{index-pptyv13k.js → index-c17xcx4k.js} +42 -6
  180. package/dist/index-cazts87s.js +105 -0
  181. package/dist/{index-g2j7pnak.js → index-cmzvhhtd.js} +5 -2
  182. package/dist/{index-ssmd41kh.js → index-d2h99n7d.js} +1 -1
  183. package/dist/{index-z94wht4y.js → index-dky0dcmf.js} +34 -5
  184. package/dist/index-drs41arz.js +455 -0
  185. package/dist/{index-za6j7nwy.js → index-dsnjzb62.js} +104 -51
  186. package/dist/index-eemvahkc.js +21 -0
  187. package/dist/{index-fa4wg312.js → index-f199nfq5.js} +10 -6
  188. package/dist/{index-ck71tbcf.js → index-fsw1ybf3.js} +11 -15
  189. package/dist/{index-fk18k56k.js → index-gr5g3xfw.js} +11 -18
  190. package/dist/{index-jn9g8xdt.js → index-hjvje0pf.js} +6 -4
  191. package/dist/index-j4zh647a.js +59 -0
  192. package/dist/{index-x928baz2.js → index-j9gxbztg.js} +18 -14
  193. package/dist/index-kfjkb396.js +37 -0
  194. package/dist/{index-6drst9sg.js → index-ksfagmyz.js} +45 -345
  195. package/dist/index-m616f0yz.js +120 -0
  196. package/dist/{index-fm1c1a08.js → index-m6w6jtda.js} +40 -21
  197. package/dist/{index-bakgedh8.js → index-msfpyy2f.js} +2 -4
  198. package/dist/{index-ywppsaby.js → index-n1nszyk0.js} +23 -34
  199. package/dist/{index-v14qqmys.js → index-n4689krb.js} +1 -1
  200. package/dist/{index-a0zzh8ak.js → index-pz3y6b6g.js} +3 -3
  201. package/dist/{index-43p08g7t.js → index-pzb63z66.js} +12 -8
  202. package/dist/{index-h97tqqp1.js → index-qaet40b2.js} +5 -3
  203. package/dist/{index-t1sr4aks.js → index-qaqbdm7s.js} +52 -6
  204. package/dist/{index-77nxk6ay.js → index-r393tnfp.js} +16 -10
  205. package/dist/{index-kb8styz3.js → index-rpzewktb.js} +15 -5
  206. package/dist/{index-27a2pj09.js → index-sj28htvf.js} +1 -1
  207. package/dist/{index-hbd32c6a.js → index-w8etpm8j.js} +38 -89
  208. package/dist/{index-2hyavjjj.js → index-wbhdzxar.js} +3 -3
  209. package/dist/{index-4e0ah203.js → index-wdy68sh6.js} +47 -24
  210. package/dist/{index-hp9d77wk.js → index-x7w1z6pf.js} +15 -4
  211. package/dist/{index-ptn0g0gj.js → index-y7k2cdgv.js} +21 -20
  212. package/dist/{index-20yvtn9a.js → index-yt7gyg5x.js} +1 -1
  213. package/dist/{index-cvda079a.js → index-yvfk3y36.js} +12 -2
  214. package/dist/{index-5z6jn897.js → index-z23rfxhj.js} +1 -1
  215. package/dist/internal/abort-race.d.ts +8 -2
  216. package/dist/internal/abort-race.d.ts.map +1 -1
  217. package/dist/internal/atomic-file.d.ts +55 -9
  218. package/dist/internal/atomic-file.d.ts.map +1 -1
  219. package/dist/internal/atomic-publication.d.ts +39 -4
  220. package/dist/internal/atomic-publication.d.ts.map +1 -1
  221. package/dist/internal/atomic-staging.d.ts +47 -0
  222. package/dist/internal/atomic-staging.d.ts.map +1 -0
  223. package/dist/internal/bounded-file-read.d.ts +19 -11
  224. package/dist/internal/bounded-file-read.d.ts.map +1 -1
  225. package/dist/internal/bounded-lines.d.ts.map +1 -1
  226. package/dist/internal/close-after.d.ts +11 -0
  227. package/dist/internal/close-after.d.ts.map +1 -0
  228. package/dist/internal/deadline.d.ts +10 -0
  229. package/dist/internal/deadline.d.ts.map +1 -1
  230. package/dist/internal/exclusive-lock-read.d.ts +10 -12
  231. package/dist/internal/exclusive-lock-read.d.ts.map +1 -1
  232. package/dist/internal/exclusive-lock.d.ts +2 -2
  233. package/dist/internal/exclusive-lock.d.ts.map +1 -1
  234. package/dist/internal/file-observation.d.ts +14 -0
  235. package/dist/internal/file-observation.d.ts.map +1 -0
  236. package/dist/internal/json-data.d.ts +22 -5
  237. package/dist/internal/json-data.d.ts.map +1 -1
  238. package/dist/internal/positive-integer.d.ts +9 -0
  239. package/dist/internal/positive-integer.d.ts.map +1 -0
  240. package/dist/internal/process-instance.d.ts +35 -5
  241. package/dist/internal/process-instance.d.ts.map +1 -1
  242. package/dist/internal/secure-fetch.d.ts.map +1 -1
  243. package/dist/internal/timers.d.ts +11 -0
  244. package/dist/internal/timers.d.ts.map +1 -0
  245. package/dist/internal/with-exclusive-lock.d.ts +5 -4
  246. package/dist/internal/with-exclusive-lock.d.ts.map +1 -1
  247. package/dist/observability/bounded-sink.d.ts.map +1 -1
  248. package/dist/primitives/canonical-json.d.ts +23 -2
  249. package/dist/primitives/canonical-json.d.ts.map +1 -1
  250. package/dist/primitives/delivery.d.ts.map +1 -1
  251. package/dist/primitives/index.d.ts +1 -1
  252. package/dist/primitives/index.d.ts.map +1 -1
  253. package/dist/primitives/money.d.ts.map +1 -1
  254. package/dist/process/cleanup.d.ts +7 -2
  255. package/dist/process/cleanup.d.ts.map +1 -1
  256. package/dist/process/command-lifetime.d.ts +6 -1
  257. package/dist/process/command-lifetime.d.ts.map +1 -1
  258. package/dist/process/command-owner.d.ts +1 -0
  259. package/dist/process/command-owner.d.ts.map +1 -1
  260. package/dist/process/command.d.ts +4 -0
  261. package/dist/process/command.d.ts.map +1 -1
  262. package/dist/process/contract.d.ts +68 -2
  263. package/dist/process/contract.d.ts.map +1 -1
  264. package/dist/process/group.d.ts +42 -3
  265. package/dist/process/group.d.ts.map +1 -1
  266. package/dist/process/launch.d.ts +12 -1
  267. package/dist/process/launch.d.ts.map +1 -1
  268. package/dist/process/terminate.d.ts +40 -0
  269. package/dist/process/terminate.d.ts.map +1 -0
  270. package/dist/react/query-client.d.ts.map +1 -1
  271. package/dist/realtime/rejection.d.ts.map +1 -1
  272. package/dist/server/contract-stream.d.ts.map +1 -1
  273. package/dist/server/handler-state.d.ts.map +1 -1
  274. package/dist/server/implement.d.ts.map +1 -1
  275. package/dist/server/request-body.d.ts +0 -1
  276. package/dist/server/request-body.d.ts.map +1 -1
  277. package/dist/server/unix-client.d.ts.map +1 -1
  278. package/dist/telegram/broadcast-delivery.d.ts.map +1 -1
  279. package/dist/telegram/broadcast-failure.d.ts +10 -2
  280. package/dist/telegram/broadcast-failure.d.ts.map +1 -1
  281. package/dist/telegram/operator-channel.d.ts.map +1 -1
  282. package/dist/telegram/screens/outcome.d.ts.map +1 -1
  283. package/dist/testing/surface-conformance.d.ts +1 -1
  284. package/dist/testing/surface-conformance.d.ts.map +1 -1
  285. package/dist/testing/surface-manifest.d.ts +0 -6
  286. package/dist/testing/surface-manifest.d.ts.map +1 -1
  287. package/dist/tools/agent.d.ts +1 -1
  288. package/dist/tools/agent.d.ts.map +1 -1
  289. package/dist/tools/cli/args.d.ts +1 -1
  290. package/dist/tools/cli/args.d.ts.map +1 -1
  291. package/dist/tools/cli/help.d.ts.map +1 -1
  292. package/dist/tools/cli/invoke.d.ts +2 -2
  293. package/dist/tools/cli/invoke.d.ts.map +1 -1
  294. package/dist/tools/cli/profile.d.ts.map +1 -1
  295. package/dist/tools/cli/publication-assets.d.ts.map +1 -1
  296. package/dist/tools/cli/publication-contract.d.ts +8 -0
  297. package/dist/tools/cli/publication-contract.d.ts.map +1 -1
  298. package/dist/tools/cli/publication-control.d.ts.map +1 -1
  299. package/dist/tools/cli/publication-storage.d.ts +23 -2
  300. package/dist/tools/cli/publication-storage.d.ts.map +1 -1
  301. package/dist/tools/cli/publication.d.ts +8 -1
  302. package/dist/tools/cli/publication.d.ts.map +1 -1
  303. package/dist/tools/connections/errors.d.ts +18 -6
  304. package/dist/tools/connections/errors.d.ts.map +1 -1
  305. package/dist/tools/connections/limits.d.ts +8 -2
  306. package/dist/tools/connections/limits.d.ts.map +1 -1
  307. package/dist/tools/connections/mcp-client.d.ts.map +1 -1
  308. package/dist/tools/connections/mcp-envelope.d.ts.map +1 -1
  309. package/dist/tools/connections/openapi.d.ts.map +1 -1
  310. package/dist/tools/connections/schema-budget.d.ts +1 -1
  311. package/dist/tools/connections/schema-budget.d.ts.map +1 -1
  312. package/dist/tools/connections/sse-session.d.ts.map +1 -1
  313. package/dist/tools/execute-args.d.ts.map +1 -1
  314. package/dist/tools/execute-result.d.ts.map +1 -1
  315. package/dist/tools/internal/surface-projector.d.ts +17 -3
  316. package/dist/tools/internal/surface-projector.d.ts.map +1 -1
  317. package/dist/tools/internal/tool-error-projection.d.ts +16 -0
  318. package/dist/tools/internal/tool-error-projection.d.ts.map +1 -0
  319. package/dist/tools/internal/tool-view.d.ts.map +1 -1
  320. package/dist/tools/invoker.d.ts.map +1 -1
  321. package/dist/tools/list-names.d.ts +3 -2
  322. package/dist/tools/list-names.d.ts.map +1 -1
  323. package/dist/tools/manifest.d.ts +3 -2
  324. package/dist/tools/manifest.d.ts.map +1 -1
  325. package/dist/tools/mcp/handler.d.ts +7 -0
  326. package/dist/tools/mcp/handler.d.ts.map +1 -1
  327. package/dist/tools/mcp/mount.d.ts +18 -2
  328. package/dist/tools/mcp/mount.d.ts.map +1 -1
  329. package/dist/tools/mcp/prepare.d.ts +3 -3
  330. package/dist/tools/mcp/prepare.d.ts.map +1 -1
  331. package/dist/tools/mcp/register.d.ts.map +1 -1
  332. package/dist/tools/mcp/runtime-tools.d.ts.map +1 -1
  333. package/dist/tools/mcp/stdio-signals.d.ts +14 -0
  334. package/dist/tools/mcp/stdio-signals.d.ts.map +1 -1
  335. package/dist/tools/mcp/stdio.d.ts +7 -0
  336. package/dist/tools/mcp/stdio.d.ts.map +1 -1
  337. package/dist/tools/operations/async-operation-runtime-tools.d.ts.map +1 -1
  338. package/dist/tools/operations/async-operation-runtime-types.d.ts +3 -3
  339. package/dist/tools/operations/async-operation-runtime-types.d.ts.map +1 -1
  340. package/dist/tools/operations/define-wait-tool.d.ts +1 -1
  341. package/dist/tools/operations/define-wait-tool.d.ts.map +1 -1
  342. package/dist/tools/operations/wait-core.d.ts +0 -6
  343. package/dist/tools/operations/wait-core.d.ts.map +1 -1
  344. package/dist/tools/registry.d.ts +1 -1
  345. package/dist/tools/registry.d.ts.map +1 -1
  346. package/dist/tools/remote.d.ts +1 -1
  347. package/dist/tools/remote.d.ts.map +1 -1
  348. package/dist/tools/{runtime-tool-execution.d.ts → runtime-tool-declaration.d.ts} +32 -9
  349. package/dist/tools/runtime-tool-declaration.d.ts.map +1 -0
  350. package/dist/tools/runtime-tool-mcp.d.ts +6 -15
  351. package/dist/tools/runtime-tool-mcp.d.ts.map +1 -1
  352. package/dist/tools/runtime-tool.d.ts +14 -12
  353. package/dist/tools/runtime-tool.d.ts.map +1 -1
  354. package/dist/tools/schema/coerce.d.ts +4 -0
  355. package/dist/tools/schema/coerce.d.ts.map +1 -1
  356. package/dist/tools/schema/flatten-join.d.ts.map +1 -1
  357. package/dist/tools/surface.d.ts +7 -11
  358. package/dist/tools/surface.d.ts.map +1 -1
  359. package/dist/tools/transfer/define-download-tool.d.ts +1 -1
  360. package/dist/tools/transfer/define-download-tool.d.ts.map +1 -1
  361. package/dist/tools/transfer/define-upload-tool.d.ts +1 -1
  362. package/dist/tools/transfer/define-upload-tool.d.ts.map +1 -1
  363. package/dist/tools/transfer/define-view-file-tool.d.ts +1 -1
  364. package/dist/tools/transfer/define-view-file-tool.d.ts.map +1 -1
  365. package/dist/tools/transfer/managed-file-error.d.ts.map +1 -1
  366. package/dist/tools/transfer/view-file-contract.d.ts.map +1 -1
  367. package/dist/tools/transfer/view-file.d.ts +1 -1
  368. package/dist/tools/transfer/view-file.d.ts.map +1 -1
  369. package/dist/tools/transports.d.ts +3 -2
  370. package/dist/tools/transports.d.ts.map +1 -1
  371. package/llms/agent-runtime-browser.txt +10 -4
  372. package/llms/agent-runtime-harness.txt +32 -31
  373. package/llms/agent-runtime-react.txt +1 -1
  374. package/llms/agent-runtime-realtime.txt +14 -5
  375. package/llms/agent-runtime-sandbox.txt +3 -11
  376. package/llms/agent-runtime.3.txt +2 -2
  377. package/llms/agent-runtime.txt +0 -9
  378. package/llms/application.2.txt +3 -12
  379. package/llms/application.3.txt +7 -4
  380. package/llms/application.txt +44 -15
  381. package/llms/cli-publish.txt +29 -0
  382. package/llms/cli.2.txt +9 -11
  383. package/llms/cli.txt +26 -14
  384. package/llms/declaration.txt +0 -9
  385. package/llms/files-packaging.txt +18 -8
  386. package/llms/files.txt +4 -2
  387. package/llms/geo.txt +0 -9
  388. package/llms/live.txt +4 -13
  389. package/llms/observability.txt +31 -5
  390. package/llms/primitives.txt +38 -20
  391. package/llms/process.txt +324 -160
  392. package/llms/react-keyboard.txt +0 -9
  393. package/llms/react.txt +0 -18
  394. package/llms/server.4.txt +1 -1
  395. package/llms/server.5.txt +1 -1
  396. package/llms/server.txt +1 -1
  397. package/llms/stitchkit.txt +6 -7
  398. package/llms/telegram-screens.txt +2 -2
  399. package/llms/testing.txt +0 -1
  400. package/llms/tools-mcp.txt +2 -3
  401. package/llms/tools.2.txt +12 -0
  402. package/llms/tools.3.txt +5 -6
  403. package/llms/tools.txt +6 -4
  404. package/llms/upgrading-0.37.0-0.50.0.txt +947 -0
  405. package/llms/{upgrading-0.44.0-0.61.0.txt → upgrading-0.53.0-0.67.0.txt} +576 -506
  406. package/llms/{upgrading-0.62.0-0.80.0.txt → upgrading-0.68.0-0.94.0.txt} +562 -576
  407. package/llms/{upgrading-0.81.0-0.104.0.txt → upgrading-0.95.0-0.105.0.txt} +452 -567
  408. package/llms/upgrading.txt +4 -4
  409. package/llms-full.txt +1068 -412
  410. package/llms.txt +24 -24
  411. package/native-assets.json +11 -3
  412. package/package.json +6 -6
  413. package/dist/agent-runtime/harness-tools.d.ts +0 -11
  414. package/dist/agent-runtime/harness-tools.d.ts.map +0 -1
  415. package/dist/entrypoints/agent-runtime/harness-tools.d.ts +0 -2
  416. package/dist/entrypoints/agent-runtime/harness-tools.d.ts.map +0 -1
  417. package/dist/entrypoints/agent-runtime/harness-tools.js +0 -32
  418. package/dist/index-1a6jtnd9.js +0 -88
  419. package/dist/index-8a9ksm91.js +0 -95
  420. package/dist/index-a3wma1hk.js +0 -48
  421. package/dist/index-jd470k6q.js +0 -109
  422. package/dist/index-n1dqr7gf.js +0 -20
  423. package/dist/index-nggfa2yn.js +0 -34
  424. package/dist/index-s4evrmp5.js +0 -98
  425. package/dist/index-ze1eph1k.js +0 -20
  426. package/dist/tools/connections/error-projection.d.ts +0 -4
  427. package/dist/tools/connections/error-projection.d.ts.map +0 -1
  428. package/dist/tools/runtime-tool-execution.d.ts.map +0 -1
  429. package/llms/agent-runtime-harness-tools.txt +0 -25
  430. package/llms/upgrading-0.37.0-0.44.0.txt +0 -444
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AppError2,
3
3
  STITCH_ERROR_STATUS2
4
- } from "./index-x928baz2.js";
4
+ } from "./index-j9gxbztg.js";
5
5
 
6
6
  // src/agent-runtime/sandbox.ts
7
7
  import { z } from "zod";
@@ -21,16 +21,38 @@ var AgentSandboxGradeSchema2 = z.discriminatedUnion("grade", [
21
21
  z.object({ grade: z.literal("unavailable"), reason: z.string().min(1) }).strict()
22
22
  ]);
23
23
  var probes = new WeakMap;
24
- function probeAgentProcessSandbox2(sandbox, options = {}) {
24
+ var PROBE_FAILED = "sandbox probe failed";
25
+ var PROBE_INVALID = "sandbox probe returned no valid grade";
26
+ async function runProbe(sandbox) {
27
+ let value;
28
+ try {
29
+ value = await sandbox.probe();
30
+ } catch (cause) {
31
+ return { grade: { grade: "unavailable", reason: PROBE_FAILED }, cause };
32
+ }
33
+ const parsed = AgentSandboxGradeSchema2.safeParse(value);
34
+ if (parsed.success)
35
+ return { grade: parsed.data };
36
+ return { grade: { grade: "unavailable", reason: PROBE_INVALID }, cause: parsed.error };
37
+ }
38
+ function probeAgentProcessSandboxOutcome(sandbox, options = {}) {
25
39
  if (options.refresh)
26
40
  probes.delete(sandbox);
27
41
  const present = probes.get(sandbox);
28
42
  if (present)
29
43
  return present;
30
- const pending = Promise.resolve(sandbox.probe()).then((grade) => AgentSandboxGradeSchema2.parse(grade));
44
+ const pending = runProbe(sandbox);
31
45
  probes.set(sandbox, pending);
32
46
  return pending;
33
47
  }
48
+ async function probeAgentProcessSandbox2(sandbox, options = {}) {
49
+ const fresh = options.refresh === true || !probes.has(sandbox);
50
+ const outcome = await probeAgentProcessSandboxOutcome(sandbox, options);
51
+ if (fresh && outcome.cause !== undefined) {
52
+ process.emitWarning(new Error("Sandbox probe failed", { cause: outcome.cause }));
53
+ }
54
+ return outcome.grade;
55
+ }
34
56
  function missingSandboxRestrictions2(grade, required) {
35
57
  if (grade.grade === "unavailable")
36
58
  return required;
@@ -54,7 +76,13 @@ async function recordAgentSandboxProbe2(input) {
54
76
 
55
77
  // src/agent-runtime/coding-tool-refusals.ts
56
78
  function codingRefusal(code, message, options = {}) {
57
- throw new AppError2(code, message, STITCH_ERROR_STATUS2[code], { message, ...options.details }, options.hint);
79
+ throw new AppError2(code, {
80
+ message,
81
+ status: STITCH_ERROR_STATUS2[code],
82
+ details: { message, ...options.details },
83
+ hint: options.hint,
84
+ ..."cause" in options && { cause: options.cause }
85
+ });
58
86
  }
59
87
  function codingPathRefusal(code, message, path, options = {}) {
60
88
  codingRefusal(code, message, {
@@ -98,4 +126,4 @@ function refuseUnknownSpillReference(reference) {
98
126
  });
99
127
  }
100
128
 
101
- export { AgentSandboxRestrictionSchema2, AgentSandboxGradeSchema2, probeAgentProcessSandbox2, missingSandboxRestrictions2, recordAgentSandboxProbe2, codingRefusal, codingPathRefusal, refuseMissingCodingPath, refuseUnknownSpillReference };
129
+ export { AgentSandboxRestrictionSchema2, AgentSandboxGradeSchema2, probeAgentProcessSandboxOutcome, probeAgentProcessSandbox2, missingSandboxRestrictions2, recordAgentSandboxProbe2, codingRefusal, codingPathRefusal, refuseMissingCodingPath, refuseUnknownSpillReference };
@@ -3,7 +3,7 @@ import {
3
3
  } from "./index-ct75c3at.js";
4
4
  import {
5
5
  AppError2
6
- } from "./index-x928baz2.js";
6
+ } from "./index-j9gxbztg.js";
7
7
  import {
8
8
  resolvePropagationContext2
9
9
  } from "./index-yex7eg1v.js";
@@ -14,20 +14,23 @@ import {
14
14
  validateResolvedInputRounds,
15
15
  presentationMetadata,
16
16
  prepareProjectedMcpTools
17
- } from "./index-77nxk6ay.js";
17
+ } from "./index-r393tnfp.js";
18
18
  import {
19
19
  parseToolCallArguments,
20
20
  toolResultFromError,
21
21
  observed
22
- } from "./index-2vnh05w4.js";
22
+ } from "./index-2k91mewf.js";
23
23
  import {
24
24
  collectTools2,
25
25
  createToolRunner,
26
26
  formatToolError
27
- } from "./index-2hyavjjj.js";
27
+ } from "./index-wbhdzxar.js";
28
28
  import {
29
29
  redact2
30
30
  } from "./index-e6c2spsd.js";
31
+ import {
32
+ collectToolSurface
33
+ } from "./index-pz3y6b6g.js";
31
34
  import {
32
35
  DEFAULT_CORS_ALLOW_HEADERS2,
33
36
  DEFAULT_PROCESS_SIGNALS,
@@ -35,9 +38,6 @@ import {
35
38
  reportSignalError,
36
39
  guardSignalCallback
37
40
  } from "./index-yk4g8805.js";
38
- import {
39
- collectToolSurface
40
- } from "./index-a0zzh8ak.js";
41
41
  import {
42
42
  argumentsDigest
43
43
  } from "./index-r7a7r7ha.js";
@@ -374,7 +374,7 @@ async function runRoundFailure(tool, rawArgs, runTool, context, code, message) {
374
374
  ...tool.method,
375
375
  outputSchema: undefined,
376
376
  handler: () => {
377
- throw new AppError2(code, message, 400);
377
+ throw new AppError2(code, { message, status: 400 });
378
378
  }
379
379
  }
380
380
  }, rawArgs, context);
@@ -653,15 +653,24 @@ function registerMcpTool(server, presentation, descriptor, config) {
653
653
  finalizeOutput: async (data) => {
654
654
  const presented = await present(data);
655
655
  if (!isRecord(presented)) {
656
- throw new AppError2("INTERNAL_SERVER_ERROR", "Runtime MCP presenter did not return a result", 500);
656
+ throw new AppError2("INTERNAL_SERVER_ERROR", {
657
+ message: "Runtime MCP presenter did not return a result",
658
+ status: 500
659
+ });
657
660
  }
658
661
  if ("structuredContent" in presented || "isError" in presented) {
659
- throw new AppError2("INTERNAL_SERVER_ERROR", "Runtime MCP presenter cannot set framework-owned structuredContent or isError", 500);
662
+ throw new AppError2("INTERNAL_SERVER_ERROR", {
663
+ message: "Runtime MCP presenter cannot set framework-owned structuredContent or isError",
664
+ status: 500
665
+ });
660
666
  }
661
667
  const structured = format({ ok: true, data }, descriptor.outputMode, name).structuredContent;
662
668
  const response = structured === undefined ? presented : { ...presented, structuredContent: structured };
663
669
  if (!isCallToolResult(response)) {
664
- throw new AppError2("INTERNAL_SERVER_ERROR", "Runtime MCP presenter returned an invalid CallToolResult", 500);
670
+ throw new AppError2("INTERNAL_SERVER_ERROR", {
671
+ message: "Runtime MCP presenter returned an invalid CallToolResult",
672
+ status: 500
673
+ });
665
674
  }
666
675
  return response;
667
676
  }
@@ -700,6 +709,9 @@ function registerMcpTool(server, presentation, descriptor, config) {
700
709
  }
701
710
 
702
711
  // src/tools/mcp/runtime-tools.ts
712
+ function isMcpPresenter(value) {
713
+ return typeof value === "function";
714
+ }
703
715
  function mountPreparedRuntimeMcp(server, tools, config) {
704
716
  const runTool = createToolRunner({
705
717
  source: "mcp",
@@ -711,7 +723,8 @@ function mountPreparedRuntimeMcp(server, tools, config) {
711
723
  onOutputStrip: config.onOutputStrip
712
724
  });
713
725
  for (const { definition, descriptor } of tools) {
714
- const present = definition.present?.mcp;
726
+ const { present: presenters } = definition;
727
+ const present = isRecord(presenters) && isMcpPresenter(presenters.mcp) ? presenters.mcp : undefined;
715
728
  registerMcpTool(server, {
716
729
  name: definition.name,
717
730
  description: definition.description,
@@ -0,0 +1,44 @@
1
+ import {
2
+ MAX_TIMER_MS
3
+ } from "./index-eemvahkc.js";
4
+ import {
5
+ assertPositiveSafeInteger
6
+ } from "./index-0s4xebbg.js";
7
+
8
+ // src/internal/deadline.ts
9
+ async function withDeadline(value, timeoutMs) {
10
+ if (!(value instanceof Promise))
11
+ return { settled: true, value };
12
+ let timer;
13
+ const expiry = new Promise((resolve) => {
14
+ timer = setTimeout(() => resolve({ settled: false }), timeoutMs);
15
+ });
16
+ try {
17
+ return await Promise.race([
18
+ value.then((settledValue) => ({
19
+ settled: true,
20
+ value: settledValue
21
+ })),
22
+ expiry
23
+ ]);
24
+ } finally {
25
+ if (timer !== undefined)
26
+ clearTimeout(timer);
27
+ }
28
+ }
29
+ async function withSignalDeadline(timeoutMs, caller, makeReason, body) {
30
+ assertPositiveSafeInteger("Deadline timeoutMs", timeoutMs, RangeError);
31
+ if (timeoutMs > MAX_TIMER_MS)
32
+ throw new RangeError("Deadline timeoutMs exceeds the timer range");
33
+ caller?.throwIfAborted();
34
+ const deadline = new AbortController;
35
+ const timer = setTimeout(() => deadline.abort(makeReason()), timeoutMs);
36
+ const signal = caller ? AbortSignal.any([caller, deadline.signal]) : deadline.signal;
37
+ try {
38
+ return await body(signal);
39
+ } finally {
40
+ clearTimeout(timer);
41
+ }
42
+ }
43
+
44
+ export { withDeadline, withSignalDeadline };
@@ -87,8 +87,9 @@ var ProcessInstanceObservationSchema = z.discriminatedUnion("state", [
87
87
  z.object({ state: z.literal("observed"), instance: ProcessInstanceSchema2 }),
88
88
  z.object({ state: z.literal("unavailable"), cause: z.unknown() })
89
89
  ]);
90
+ var MAX_PID = 2 ** 31 - 1;
90
91
  async function observeProcessInstance2(pid) {
91
- z.number().int().positive().max(2147483647).parse(pid);
92
+ z.number().int().positive().max(MAX_PID).parse(pid);
92
93
  return observeProcessInstanceAt(pid, "/proc");
93
94
  }
94
95
  function linuxProcessStart(stat, pid) {
@@ -158,7 +159,7 @@ var ProcessOwnerEvidenceSchema = z.object({
158
159
  cause: z.unknown().optional()
159
160
  });
160
161
  async function probeProcessOwner2(pid, recorded) {
161
- z.number().int().positive().max(2147483647).parse(pid);
162
+ z.number().int().positive().max(MAX_PID).parse(pid);
162
163
  if (recorded != null)
163
164
  ProcessInstanceSchema2.parse(recorded);
164
165
  return probeProcessOwnerWith(pid, recorded, {
@@ -203,7 +204,7 @@ async function probeProcessOwnerWith(pid, recorded, probes = { read: readProcess
203
204
  if (observation.state === "unavailable")
204
205
  return unavailable(observation.cause);
205
206
  const observed = observation.instance;
206
- if (!observed || observed.bootId !== current.bootId || observed.namespace !== current.namespace)
207
+ if (observed.bootId !== current.bootId || observed.namespace !== current.namespace)
207
208
  return unavailable(new Error("Observed boot or namespace changed during probe"));
208
209
  if (recorded.startId !== observed.startId)
209
210
  return { liveness: "gone", identity: "reused-pid" };
@@ -1,23 +1,33 @@
1
1
  // src/internal/abort-race.ts
2
- function raceAbort(operation, signal) {
2
+ function raceAbort(operation, signal, disposeLate) {
3
+ const dispose = (value) => {
4
+ try {
5
+ disposeLate?.(value);
6
+ } catch {}
7
+ };
3
8
  if (signal.aborted) {
4
- operation.catch(() => {
9
+ operation.then(dispose, () => {
5
10
  return;
6
11
  });
7
12
  return Promise.reject(signal.reason);
8
13
  }
9
14
  return new Promise((resolve, reject) => {
15
+ let released = false;
10
16
  const abort = () => {
11
- signal.removeEventListener("abort", abort);
17
+ released = true;
12
18
  reject(signal.reason);
13
19
  };
14
20
  signal.addEventListener("abort", abort, { once: true });
15
21
  operation.then((value) => {
16
22
  signal.removeEventListener("abort", abort);
17
- resolve(value);
23
+ if (released)
24
+ dispose(value);
25
+ else
26
+ resolve(value);
18
27
  }, (error) => {
19
28
  signal.removeEventListener("abort", abort);
20
- reject(error);
29
+ if (!released)
30
+ reject(error);
21
31
  });
22
32
  });
23
33
  }
@@ -46,6 +46,22 @@ var AgentControlRequestSchema2 = z.discriminatedUnion("operation", [
46
46
  metadata: z.unknown().optional()
47
47
  })
48
48
  ]);
49
+ var AgentControlErrorCodeSchema2 = z.enum([
50
+ "ATTACH_CANCELLED",
51
+ "ATTACH_IN_PROGRESS",
52
+ "ATTACHMENT_CAPACITY",
53
+ "CONNECTION_CLOSED",
54
+ "CONTROL_REQUEST_FAILED",
55
+ "EVENT_OVERFLOW",
56
+ "FORBIDDEN",
57
+ "LEASE_CONFLICT",
58
+ "LEASE_REQUIRED",
59
+ "NOT_ATTACHED",
60
+ "REQUEST_CANCELLED",
61
+ "REQUEST_CAPACITY",
62
+ "REQUEST_REJECTED",
63
+ "RESYNC_EXHAUSTED"
64
+ ]);
49
65
  var AgentControlResponseIdentitySchema = z.object({
50
66
  schemaVersion: z.literal(1),
51
67
  requestId: z.string().min(1)
@@ -58,7 +74,7 @@ var AgentControlResponseSchema2 = z.discriminatedUnion("outcome", [
58
74
  }).strict(),
59
75
  AgentControlResponseIdentitySchema.extend({
60
76
  outcome: z.literal("error"),
61
- error: z.object({ code: z.string().min(1), message: z.string().min(1) }).strict()
77
+ error: z.object({ code: AgentControlErrorCodeSchema2, message: z.string().min(1) }).strict()
62
78
  }).strict()
63
79
  ]);
64
80
  var AgentControlDeliverySchema2 = z.discriminatedUnion("type", [
@@ -72,6 +88,11 @@ var AgentControlDeliverySchema2 = z.discriminatedUnion("type", [
72
88
  type: z.literal("resync-required"),
73
89
  conversationId: z.string().min(1),
74
90
  reason: z.literal("overflow")
91
+ }).strict(),
92
+ z.object({
93
+ schemaVersion: z.literal(1),
94
+ type: z.literal("access-denied"),
95
+ conversationId: z.string().min(1)
75
96
  }).strict()
76
97
  ]);
77
98
  var AgentMultiSessionCursorSchema2 = z.object({
@@ -195,4 +216,4 @@ function reduceAgentControlEvent2(view, rawEvent) {
195
216
  };
196
217
  }
197
218
 
198
- export { AgentControlRequestSchema2, AgentControlResponseSchema2, AgentControlDeliverySchema2, AgentMultiSessionCursorSchema2, advanceAgentMultiSessionCursor2, createAgentControlView2, reduceAgentControlSnapshot2, reduceAgentControlEvent2 };
219
+ export { AgentControlRequestSchema2, AgentControlErrorCodeSchema2, AgentControlResponseSchema2, AgentControlDeliverySchema2, AgentMultiSessionCursorSchema2, advanceAgentMultiSessionCursor2, createAgentControlView2, reduceAgentControlSnapshot2, reduceAgentControlEvent2 };
@@ -0,0 +1,132 @@
1
+ // src/internal/atomic-publication.ts
2
+ import { closeSync, fsyncSync, linkSync, openSync, renameSync, unlinkSync } from "node:fs";
3
+ import { link, open, rename, unlink } from "node:fs/promises";
4
+ import { dirname } from "node:path";
5
+
6
+ // src/internal/close-after.ts
7
+ async function closeAfter(handle, run) {
8
+ let result;
9
+ try {
10
+ result = await run();
11
+ } catch (error) {
12
+ await handle.close().catch(() => {
13
+ return;
14
+ });
15
+ throw error;
16
+ }
17
+ await handle.close();
18
+ return result;
19
+ }
20
+ function closeAfterSync(close, run) {
21
+ let result;
22
+ try {
23
+ result = run();
24
+ } catch (error) {
25
+ try {
26
+ close();
27
+ } catch {}
28
+ throw error;
29
+ }
30
+ close();
31
+ return result;
32
+ }
33
+
34
+ // src/internal/atomic-publication.ts
35
+ class AtomicFilePublicationError2 extends Error {
36
+ phase;
37
+ published = true;
38
+ constructor(phase, cause) {
39
+ super(`File published but ${phase} failed`, { cause });
40
+ this.phase = phase;
41
+ this.name = "AtomicFilePublicationError";
42
+ }
43
+ }
44
+ var native = { rename, link, unlink, open };
45
+ var nativeSync = {
46
+ rename: renameSync,
47
+ link: linkSync,
48
+ unlink: unlinkSync,
49
+ open(path, flags) {
50
+ const descriptor = openSync(path, flags);
51
+ return { sync: () => fsyncSync(descriptor), close: () => closeSync(descriptor) };
52
+ }
53
+ };
54
+ function assertDirectoryDurability() {
55
+ if (process.platform === "win32")
56
+ throw new Error("Directory durability is unsupported on Windows");
57
+ }
58
+ async function syncDirectory(path, io = native) {
59
+ assertDirectoryDurability();
60
+ const directory = await io.open(path, "r");
61
+ await closeAfter(directory, () => directory.sync());
62
+ }
63
+ async function publishAtomicFile(staged, target, { replace, durability }, io = native) {
64
+ const directorySync = durability === "directory";
65
+ if (directorySync)
66
+ assertDirectoryDurability();
67
+ const directory = directorySync ? await io.open(dirname(target), "r") : undefined;
68
+ const publish = async () => {
69
+ if (replace)
70
+ await io.rename(staged, target);
71
+ else {
72
+ await io.link(staged, target);
73
+ try {
74
+ await io.unlink(staged);
75
+ } catch (error) {
76
+ throw new AtomicFilePublicationError2("cleanup", error);
77
+ }
78
+ }
79
+ try {
80
+ await directory?.sync();
81
+ } catch (error) {
82
+ throw new AtomicFilePublicationError2("directory-sync", error);
83
+ }
84
+ };
85
+ if (directory === undefined)
86
+ return publish();
87
+ await closeAfter({
88
+ close: async () => {
89
+ try {
90
+ await directory.close();
91
+ } catch (error) {
92
+ throw new AtomicFilePublicationError2("directory-close", error);
93
+ }
94
+ }
95
+ }, publish);
96
+ }
97
+ function publishAtomicFileSync(staged, target, { replace, durability }, io = nativeSync) {
98
+ const directorySync = durability === "directory";
99
+ if (directorySync)
100
+ assertDirectoryDurability();
101
+ const directory = directorySync ? io.open(dirname(target), "r") : undefined;
102
+ const publish = () => {
103
+ if (replace)
104
+ io.rename(staged, target);
105
+ else {
106
+ io.link(staged, target);
107
+ try {
108
+ io.unlink(staged);
109
+ } catch (error) {
110
+ throw new AtomicFilePublicationError2("cleanup", error);
111
+ }
112
+ }
113
+ try {
114
+ directory?.sync();
115
+ } catch (error) {
116
+ throw new AtomicFilePublicationError2("directory-sync", error);
117
+ }
118
+ };
119
+ if (directory === undefined) {
120
+ publish();
121
+ return;
122
+ }
123
+ closeAfterSync(() => {
124
+ try {
125
+ directory.close();
126
+ } catch (error) {
127
+ throw new AtomicFilePublicationError2("directory-close", error);
128
+ }
129
+ }, publish);
130
+ }
131
+
132
+ export { closeAfter, closeAfterSync, AtomicFilePublicationError2, assertDirectoryDurability, syncDirectory, publishAtomicFile, publishAtomicFileSync };
@@ -5,7 +5,7 @@ import {
5
5
  AgentRecoverableDescriptorSchema2,
6
6
  AgentRecoverablePageSchema2,
7
7
  canonicalAgentJson2
8
- } from "./index-r5hsgkz5.js";
8
+ } from "./index-0gs4ymfj.js";
9
9
  import {
10
10
  AgentMessageSchema2,
11
11
  AgentRunSchema2
@@ -18,7 +18,7 @@ import {
18
18
  AgentHistoryMutationSchema2,
19
19
  appendEventIn,
20
20
  createAgentRuntimeStore2
21
- } from "./index-ssmd41kh.js";
21
+ } from "./index-d2h99n7d.js";
22
22
  import {
23
23
  AgentConversationPageSchema2,
24
24
  AgentConversationMessagePageSchema2
@@ -1,9 +1,12 @@
1
1
  import {
2
2
  raceAbort
3
- } from "./index-mbnnw3f2.js";
3
+ } from "./index-b0kddvzw.js";
4
4
  import {
5
5
  isJsonData
6
- } from "./index-fm1c1a08.js";
6
+ } from "./index-m6w6jtda.js";
7
+ import {
8
+ MAX_TIMER_MS
9
+ } from "./index-eemvahkc.js";
7
10
 
8
11
  // src/durability/contract.ts
9
12
  import { z } from "zod";
@@ -296,8 +299,8 @@ async function reconcile(context, name, handlers, timeoutMs, outerSignal) {
296
299
  }
297
300
  async function executeEffect(context, name, handlers, options) {
298
301
  const timeoutMs = options?.reconcileTimeoutMs ?? DEFAULT_RECONCILE_TIMEOUT_MS;
299
- if (!Number.isFinite(timeoutMs) || timeoutMs <= 0 || timeoutMs > 2147483647) {
300
- throw new TypeError(`reconcileTimeoutMs must be a positive finite number at most 2147483647, got ${timeoutMs}`);
302
+ if (!Number.isFinite(timeoutMs) || timeoutMs <= 0 || timeoutMs > MAX_TIMER_MS) {
303
+ throw new TypeError(`reconcileTimeoutMs must be a positive finite number at most ${MAX_TIMER_MS}, got ${timeoutMs}`);
301
304
  }
302
305
  const key = effectKey(context.conversationId, context.runId, name);
303
306
  const recorded = (await context.readLedger()).effects.get(key);
@@ -326,7 +329,7 @@ async function executeEffect(context, name, handlers, options) {
326
329
  var systemClock = {
327
330
  now: () => Date.now(),
328
331
  schedule(callback, delayMs) {
329
- const timer = setTimeout(callback, Math.min(delayMs, 2147483647));
332
+ const timer = setTimeout(callback, Math.min(delayMs, MAX_TIMER_MS));
330
333
  timer.unref();
331
334
  return { cancel: () => clearTimeout(timer) };
332
335
  }
@@ -617,4 +620,37 @@ function createLocalStepDurability2(options) {
617
620
  };
618
621
  }
619
622
 
620
- export { DURABILITY_STEP_EVENT_KIND2, StepResultDecodeError2, StepResultNotSerializableError2, StepAbortedError2, EffectUnresolvedError2, ParkRecordDecodeError2, ParkAbortedError2, createLocalStepDurability2 };
623
+ // src/tools/agent-tool-error.ts
624
+ var AGENT_TOOL_ERROR_BRAND = Symbol.for("stitchkit.AgentToolError");
625
+
626
+ class AgentToolError2 extends Error {
627
+ output;
628
+ constructor(output, cause) {
629
+ let message = "Tool execution failed";
630
+ try {
631
+ message = JSON.stringify(output);
632
+ } catch {}
633
+ super(message, cause === undefined ? undefined : { cause });
634
+ this.name = "AgentToolError";
635
+ this.output = output;
636
+ Object.defineProperty(this, AGENT_TOOL_ERROR_BRAND, { value: true });
637
+ }
638
+ }
639
+ function isAgentToolError2(value) {
640
+ return typeof value === "object" && value !== null && AGENT_TOOL_ERROR_BRAND in value;
641
+ }
642
+
643
+ // src/tools/durability-context.ts
644
+ var contexts = new WeakMap;
645
+ function createToolDurabilityContext(factory) {
646
+ const context = {};
647
+ contexts.set(context, factory);
648
+ return context;
649
+ }
650
+ function resolveToolDurability(context, callId, signal) {
651
+ if (typeof context !== "object" || context === null)
652
+ return;
653
+ return contexts.get(context)?.(callId, signal);
654
+ }
655
+
656
+ export { DURABILITY_STEP_EVENT_KIND2, StepResultDecodeError2, StepResultNotSerializableError2, StepAbortedError2, EffectUnresolvedError2, ParkRecordDecodeError2, ParkAbortedError2, createLocalStepDurability2, AgentToolError2, isAgentToolError2, createToolDurabilityContext, resolveToolDurability };
@@ -0,0 +1,105 @@
1
+ import {
2
+ stagingPath
3
+ } from "./index-j4zh647a.js";
4
+ import {
5
+ closeAfter,
6
+ closeAfterSync,
7
+ publishAtomicFile,
8
+ publishAtomicFileSync
9
+ } from "./index-b56nnscm.js";
10
+
11
+ // src/internal/atomic-file.ts
12
+ import { closeSync, fchmodSync, fsyncSync, openSync, unlinkSync, writeSync } from "node:fs";
13
+ import { open, unlink } from "node:fs/promises";
14
+ var DEFAULT_MODE = 384;
15
+ function bytesOf(data) {
16
+ return typeof data === "string" ? new TextEncoder().encode(data) : data;
17
+ }
18
+ async function writeAllBytes(file, bytes) {
19
+ for (let offset = 0;offset < bytes.byteLength; ) {
20
+ const { bytesWritten } = await file.write(bytes, offset, bytes.byteLength - offset);
21
+ if (bytesWritten === 0)
22
+ throw new Error("zero-byte atomic-file write");
23
+ offset += bytesWritten;
24
+ }
25
+ }
26
+ async function writeFileAtomic2(target, data, options = {}) {
27
+ return writeAtomicFileData(target, data, options);
28
+ }
29
+ function isMissing(error) {
30
+ return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
31
+ }
32
+ async function writeAtomicFileStaged(target, stage, options, io = { open, unlink, publish: publishAtomicFile }) {
33
+ const mode = options.mode ?? DEFAULT_MODE;
34
+ const staged = stagingPath(target);
35
+ const file = await io.open(staged, "wx", mode);
36
+ try {
37
+ const value = await closeAfter(file, async () => {
38
+ const filled = await stage.fill(file);
39
+ await file.chmod(mode);
40
+ if (options.durability !== "none")
41
+ await file.sync();
42
+ return filled;
43
+ });
44
+ await io.publish(staged, target, {
45
+ replace: options.replace ?? true,
46
+ durability: options.durability ?? "file"
47
+ });
48
+ return value;
49
+ } catch (error) {
50
+ await io.unlink(staged).catch((cleanup) => {
51
+ if (!isMissing(cleanup))
52
+ stage.onCleanupError?.(cleanup);
53
+ });
54
+ throw error;
55
+ }
56
+ }
57
+ async function writeAtomicFileData(target, data, options, io) {
58
+ await writeAtomicFileStaged(target, { fill: (file) => writeAllBytes(file, bytesOf(data)) }, options, io);
59
+ }
60
+ var nativeSync = {
61
+ open(path, flags, mode) {
62
+ const descriptor = openSync(path, flags, mode);
63
+ return {
64
+ write: (bytes, offset, length) => writeSync(descriptor, bytes, offset, length),
65
+ chmod: (bits) => fchmodSync(descriptor, bits),
66
+ sync: () => fsyncSync(descriptor),
67
+ close: () => closeSync(descriptor)
68
+ };
69
+ },
70
+ unlink: unlinkSync,
71
+ publish: publishAtomicFileSync
72
+ };
73
+ function writeAtomicFileDataSync(target, data, options, io = nativeSync) {
74
+ const mode = options.mode ?? DEFAULT_MODE;
75
+ const bytes = bytesOf(data);
76
+ const staged = stagingPath(target);
77
+ const file = io.open(staged, "wx", mode);
78
+ try {
79
+ closeAfterSync(() => file.close(), () => {
80
+ for (let offset = 0;offset < bytes.byteLength; ) {
81
+ const written = file.write(bytes, offset, bytes.byteLength - offset);
82
+ if (written === 0)
83
+ throw new Error("zero-byte atomic-file write");
84
+ offset += written;
85
+ }
86
+ file.chmod(mode);
87
+ if (options.durability !== "none")
88
+ file.sync();
89
+ });
90
+ io.publish(staged, target, {
91
+ replace: options.replace ?? true,
92
+ durability: options.durability ?? "file"
93
+ });
94
+ } catch (error) {
95
+ try {
96
+ io.unlink(staged);
97
+ } catch {}
98
+ throw error;
99
+ }
100
+ }
101
+ function writeFileAtomicSync2(target, data, options = {}) {
102
+ writeAtomicFileDataSync(target, data, options);
103
+ }
104
+
105
+ export { writeAllBytes, writeFileAtomic2, writeAtomicFileStaged, writeAtomicFileData, writeFileAtomicSync2 };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AppError2
3
- } from "./index-x928baz2.js";
3
+ } from "./index-j9gxbztg.js";
4
4
  import {
5
5
  contractMethodFields
6
6
  } from "./index-1bx1xv1k.js";
@@ -68,7 +68,10 @@ function contractOnlyService(contract) {
68
68
  }
69
69
  function stubHandler(label) {
70
70
  return () => {
71
- throw new AppError2("NOT_IMPLEMENTED", `[stitchkit] ${label} is declared by its contract and has no handler`, 501);
71
+ throw new AppError2("NOT_IMPLEMENTED", {
72
+ message: `[stitchkit] ${label} is declared by its contract and has no handler`,
73
+ status: 501
74
+ });
72
75
  };
73
76
  }
74
77
  function bindContract(contract, handlers, options) {