stitchkit 0.104.2 → 0.105.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/CHANGELOG.md +372 -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 +153 -64
  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-kemm0ej5.js → index-1pwwan01.js} +65 -22
  160. package/dist/{index-vgkbcnkc.js → index-299sm5tr.js} +1 -1
  161. package/dist/{index-2vnh05w4.js → index-2k91mewf.js} +31 -74
  162. package/dist/{index-269zqj8m.js → index-2rc6jd9n.js} +28 -12
  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-adhgd4pe.js → index-5p55xreg.js} +2 -2
  168. package/dist/index-5w6t91ze.js +47 -0
  169. package/dist/{index-9pw0a51a.js → index-6yxhe58g.js} +40 -7
  170. package/dist/{index-6d9xaxw1.js → index-8ks9b85e.js} +33 -5
  171. package/dist/{index-bhb950qs.js → index-916yh4e2.js} +25 -12
  172. package/dist/index-9tqbxv5p.js +44 -0
  173. package/dist/{index-5csmzesf.js → index-azx12jgv.js} +4 -3
  174. package/dist/{index-mbnnw3f2.js → index-b0kddvzw.js} +15 -5
  175. package/dist/{index-n5yqxd3d.js → index-b0w7rbpt.js} +23 -2
  176. package/dist/index-b56nnscm.js +132 -0
  177. package/dist/{index-0ndk4555.js → index-c0hffcmj.js} +2 -2
  178. package/dist/{index-pptyv13k.js → index-c17xcx4k.js} +42 -6
  179. package/dist/{index-g2j7pnak.js → index-cmzvhhtd.js} +5 -2
  180. package/dist/index-cq59agna.js +51 -0
  181. package/dist/{index-ssmd41kh.js → index-d2h99n7d.js} +1 -1
  182. package/dist/{index-z94wht4y.js → index-dky0dcmf.js} +34 -5
  183. package/dist/{index-za6j7nwy.js → index-dsnjzb62.js} +104 -51
  184. package/dist/index-eemvahkc.js +21 -0
  185. package/dist/index-ef8gdaq0.js +105 -0
  186. package/dist/{index-fa4wg312.js → index-f199nfq5.js} +10 -6
  187. package/dist/{index-ck71tbcf.js → index-fsw1ybf3.js} +11 -15
  188. package/dist/{index-f330qqyg.js → index-g2vfg7ak.js} +217 -63
  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-x928baz2.js → index-j9gxbztg.js} +18 -14
  192. package/dist/index-kfjkb396.js +37 -0
  193. package/dist/{index-6drst9sg.js → index-ksfagmyz.js} +45 -345
  194. package/dist/index-m616f0yz.js +120 -0
  195. package/dist/{index-fm1c1a08.js → index-m6w6jtda.js} +40 -21
  196. package/dist/{index-ptn0g0gj.js → index-ma963wz7.js} +21 -20
  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-szybbezc.js +455 -0
  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-hbd32c6a.js → index-wqmvtnkp.js} +38 -89
  211. package/dist/{index-hp9d77wk.js → index-x7w1z6pf.js} +15 -4
  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 +46 -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 +6 -1
  255. package/dist/process/cleanup.d.ts.map +1 -1
  256. package/dist/process/command-lifetime.d.ts +4 -0
  257. package/dist/process/command-lifetime.d.ts.map +1 -1
  258. package/dist/process/command-owner.d.ts.map +1 -1
  259. package/dist/process/command.d.ts +4 -0
  260. package/dist/process/command.d.ts.map +1 -1
  261. package/dist/process/contract.d.ts +67 -2
  262. package/dist/process/contract.d.ts.map +1 -1
  263. package/dist/process/group.d.ts +40 -3
  264. package/dist/process/group.d.ts.map +1 -1
  265. package/dist/process/launch.d.ts +12 -1
  266. package/dist/process/launch.d.ts.map +1 -1
  267. package/dist/process/terminate.d.ts +39 -0
  268. package/dist/process/terminate.d.ts.map +1 -0
  269. package/dist/react/query-client.d.ts.map +1 -1
  270. package/dist/realtime/rejection.d.ts.map +1 -1
  271. package/dist/server/contract-stream.d.ts.map +1 -1
  272. package/dist/server/handler-state.d.ts.map +1 -1
  273. package/dist/server/implement.d.ts.map +1 -1
  274. package/dist/server/request-body.d.ts +0 -1
  275. package/dist/server/request-body.d.ts.map +1 -1
  276. package/dist/server/unix-client.d.ts.map +1 -1
  277. package/dist/telegram/broadcast-delivery.d.ts.map +1 -1
  278. package/dist/telegram/broadcast-failure.d.ts +10 -2
  279. package/dist/telegram/broadcast-failure.d.ts.map +1 -1
  280. package/dist/telegram/operator-channel.d.ts.map +1 -1
  281. package/dist/telegram/screens/outcome.d.ts.map +1 -1
  282. package/dist/testing/surface-conformance.d.ts +1 -1
  283. package/dist/testing/surface-conformance.d.ts.map +1 -1
  284. package/dist/testing/surface-manifest.d.ts +0 -6
  285. package/dist/testing/surface-manifest.d.ts.map +1 -1
  286. package/dist/tools/agent.d.ts +1 -1
  287. package/dist/tools/agent.d.ts.map +1 -1
  288. package/dist/tools/cli/args.d.ts +1 -1
  289. package/dist/tools/cli/args.d.ts.map +1 -1
  290. package/dist/tools/cli/help.d.ts.map +1 -1
  291. package/dist/tools/cli/invoke.d.ts +2 -2
  292. package/dist/tools/cli/invoke.d.ts.map +1 -1
  293. package/dist/tools/cli/profile.d.ts.map +1 -1
  294. package/dist/tools/cli/publication-assets.d.ts.map +1 -1
  295. package/dist/tools/cli/publication-contract.d.ts +8 -0
  296. package/dist/tools/cli/publication-contract.d.ts.map +1 -1
  297. package/dist/tools/cli/publication-control.d.ts.map +1 -1
  298. package/dist/tools/cli/publication-storage.d.ts +23 -2
  299. package/dist/tools/cli/publication-storage.d.ts.map +1 -1
  300. package/dist/tools/cli/publication.d.ts +8 -1
  301. package/dist/tools/cli/publication.d.ts.map +1 -1
  302. package/dist/tools/connections/errors.d.ts +18 -6
  303. package/dist/tools/connections/errors.d.ts.map +1 -1
  304. package/dist/tools/connections/limits.d.ts +8 -2
  305. package/dist/tools/connections/limits.d.ts.map +1 -1
  306. package/dist/tools/connections/mcp-client.d.ts.map +1 -1
  307. package/dist/tools/connections/mcp-envelope.d.ts.map +1 -1
  308. package/dist/tools/connections/openapi.d.ts.map +1 -1
  309. package/dist/tools/connections/schema-budget.d.ts +1 -1
  310. package/dist/tools/connections/schema-budget.d.ts.map +1 -1
  311. package/dist/tools/connections/sse-session.d.ts.map +1 -1
  312. package/dist/tools/execute-args.d.ts.map +1 -1
  313. package/dist/tools/execute-result.d.ts.map +1 -1
  314. package/dist/tools/internal/surface-projector.d.ts +17 -3
  315. package/dist/tools/internal/surface-projector.d.ts.map +1 -1
  316. package/dist/tools/internal/tool-error-projection.d.ts +16 -0
  317. package/dist/tools/internal/tool-error-projection.d.ts.map +1 -0
  318. package/dist/tools/internal/tool-view.d.ts.map +1 -1
  319. package/dist/tools/invoker.d.ts.map +1 -1
  320. package/dist/tools/list-names.d.ts +3 -2
  321. package/dist/tools/list-names.d.ts.map +1 -1
  322. package/dist/tools/manifest.d.ts +3 -2
  323. package/dist/tools/manifest.d.ts.map +1 -1
  324. package/dist/tools/mcp/handler.d.ts +7 -0
  325. package/dist/tools/mcp/handler.d.ts.map +1 -1
  326. package/dist/tools/mcp/mount.d.ts +18 -2
  327. package/dist/tools/mcp/mount.d.ts.map +1 -1
  328. package/dist/tools/mcp/prepare.d.ts +3 -3
  329. package/dist/tools/mcp/prepare.d.ts.map +1 -1
  330. package/dist/tools/mcp/register.d.ts.map +1 -1
  331. package/dist/tools/mcp/runtime-tools.d.ts.map +1 -1
  332. package/dist/tools/mcp/stdio-signals.d.ts +14 -0
  333. package/dist/tools/mcp/stdio-signals.d.ts.map +1 -1
  334. package/dist/tools/mcp/stdio.d.ts +7 -0
  335. package/dist/tools/mcp/stdio.d.ts.map +1 -1
  336. package/dist/tools/operations/async-operation-runtime-tools.d.ts.map +1 -1
  337. package/dist/tools/operations/async-operation-runtime-types.d.ts +3 -3
  338. package/dist/tools/operations/async-operation-runtime-types.d.ts.map +1 -1
  339. package/dist/tools/operations/define-wait-tool.d.ts +1 -1
  340. package/dist/tools/operations/define-wait-tool.d.ts.map +1 -1
  341. package/dist/tools/operations/wait-core.d.ts +0 -6
  342. package/dist/tools/operations/wait-core.d.ts.map +1 -1
  343. package/dist/tools/registry.d.ts +1 -1
  344. package/dist/tools/registry.d.ts.map +1 -1
  345. package/dist/tools/remote.d.ts +1 -1
  346. package/dist/tools/remote.d.ts.map +1 -1
  347. package/dist/tools/{runtime-tool-execution.d.ts → runtime-tool-declaration.d.ts} +32 -9
  348. package/dist/tools/runtime-tool-declaration.d.ts.map +1 -0
  349. package/dist/tools/runtime-tool-mcp.d.ts +6 -15
  350. package/dist/tools/runtime-tool-mcp.d.ts.map +1 -1
  351. package/dist/tools/runtime-tool.d.ts +14 -12
  352. package/dist/tools/runtime-tool.d.ts.map +1 -1
  353. package/dist/tools/schema/coerce.d.ts +4 -0
  354. package/dist/tools/schema/coerce.d.ts.map +1 -1
  355. package/dist/tools/schema/flatten-join.d.ts.map +1 -1
  356. package/dist/tools/surface.d.ts +7 -11
  357. package/dist/tools/surface.d.ts.map +1 -1
  358. package/dist/tools/transfer/define-download-tool.d.ts +1 -1
  359. package/dist/tools/transfer/define-download-tool.d.ts.map +1 -1
  360. package/dist/tools/transfer/define-upload-tool.d.ts +1 -1
  361. package/dist/tools/transfer/define-upload-tool.d.ts.map +1 -1
  362. package/dist/tools/transfer/define-view-file-tool.d.ts +1 -1
  363. package/dist/tools/transfer/define-view-file-tool.d.ts.map +1 -1
  364. package/dist/tools/transfer/managed-file-error.d.ts.map +1 -1
  365. package/dist/tools/transfer/view-file-contract.d.ts.map +1 -1
  366. package/dist/tools/transfer/view-file.d.ts +1 -1
  367. package/dist/tools/transfer/view-file.d.ts.map +1 -1
  368. package/dist/tools/transports.d.ts +3 -2
  369. package/dist/tools/transports.d.ts.map +1 -1
  370. package/llms/agent-runtime-browser.txt +10 -4
  371. package/llms/agent-runtime-harness.txt +32 -31
  372. package/llms/agent-runtime-react.txt +1 -1
  373. package/llms/agent-runtime-realtime.txt +14 -5
  374. package/llms/agent-runtime-sandbox.txt +3 -11
  375. package/llms/agent-runtime.3.txt +2 -2
  376. package/llms/agent-runtime.txt +0 -9
  377. package/llms/application.2.txt +3 -12
  378. package/llms/application.3.txt +7 -4
  379. package/llms/application.txt +44 -15
  380. package/llms/cli-publish.txt +29 -0
  381. package/llms/cli.2.txt +9 -11
  382. package/llms/cli.txt +26 -14
  383. package/llms/declaration.txt +0 -9
  384. package/llms/files-packaging.txt +16 -8
  385. package/llms/files.txt +4 -2
  386. package/llms/geo.txt +0 -9
  387. package/llms/live.txt +4 -13
  388. package/llms/observability.txt +31 -5
  389. package/llms/primitives.txt +38 -20
  390. package/llms/process.txt +287 -157
  391. package/llms/react-keyboard.txt +0 -9
  392. package/llms/react.txt +0 -18
  393. package/llms/server.4.txt +1 -1
  394. package/llms/server.5.txt +1 -1
  395. package/llms/server.txt +1 -1
  396. package/llms/stitchkit.txt +6 -7
  397. package/llms/telegram-screens.txt +2 -2
  398. package/llms/testing.txt +0 -1
  399. package/llms/tools-mcp.txt +2 -3
  400. package/llms/tools.2.txt +12 -0
  401. package/llms/tools.3.txt +5 -6
  402. package/llms/tools.txt +6 -4
  403. package/llms/upgrading-0.37.0-0.50.0.txt +947 -0
  404. package/llms/{upgrading-0.44.0-0.61.0.txt → upgrading-0.53.0-0.67.0.txt} +576 -506
  405. package/llms/{upgrading-0.62.0-0.80.0.txt → upgrading-0.68.0-0.94.0.txt} +562 -576
  406. package/llms/{upgrading-0.81.0-0.104.0.txt → upgrading-0.95.0-0.105.0.txt} +452 -567
  407. package/llms/upgrading.txt +4 -4
  408. package/llms-full.txt +1029 -409
  409. package/llms.txt +24 -24
  410. package/native-assets.json +11 -3
  411. package/package.json +6 -6
  412. package/dist/agent-runtime/harness-tools.d.ts +0 -11
  413. package/dist/agent-runtime/harness-tools.d.ts.map +0 -1
  414. package/dist/entrypoints/agent-runtime/harness-tools.d.ts +0 -2
  415. package/dist/entrypoints/agent-runtime/harness-tools.d.ts.map +0 -1
  416. package/dist/entrypoints/agent-runtime/harness-tools.js +0 -32
  417. package/dist/index-1a6jtnd9.js +0 -88
  418. package/dist/index-8a9ksm91.js +0 -95
  419. package/dist/index-a3wma1hk.js +0 -48
  420. package/dist/index-jd470k6q.js +0 -109
  421. package/dist/index-n1dqr7gf.js +0 -20
  422. package/dist/index-nggfa2yn.js +0 -34
  423. package/dist/index-s4evrmp5.js +0 -98
  424. package/dist/index-ze1eph1k.js +0 -20
  425. package/dist/tools/connections/error-projection.d.ts +0 -4
  426. package/dist/tools/connections/error-projection.d.ts.map +0 -1
  427. package/dist/tools/runtime-tool-execution.d.ts.map +0 -1
  428. package/llms/agent-runtime-harness-tools.txt +0 -25
  429. package/llms/upgrading-0.37.0-0.44.0.txt +0 -444
@@ -0,0 +1,527 @@
1
+ import"../../index-xqhede6x.js";
2
+ import"../../index-cq59agna.js";
3
+ import {
4
+ ManagedFileError2,
5
+ createManagedFileBoundary2
6
+ } from "../../index-wqmvtnkp.js";
7
+ import"../../index-dsnjzb62.js";
8
+ import"../../index-azx12jgv.js";
9
+ import"../../index-v5ee8ath.js";
10
+ import {
11
+ signCliManifest2,
12
+ verifyCliManifest2,
13
+ cliSignatureAccepted2,
14
+ CliBuildTargetSchema2,
15
+ CliBuildManifestSchema2,
16
+ assertCliPublishable2,
17
+ waitForPublication,
18
+ withPublicationDeadline,
19
+ collectCliBytes,
20
+ gzipCliAsset,
21
+ decodeCliAsset,
22
+ compareCliVersions2
23
+ } from "../../index-szybbezc.js";
24
+ import {
25
+ withExclusiveLock2
26
+ } from "../../index-4vsby8n8.js";
27
+ import {
28
+ writeFileAtomic2
29
+ } from "../../index-ef8gdaq0.js";
30
+ import {
31
+ AtomicFilePublicationError2,
32
+ assertDirectoryDurability,
33
+ syncDirectory
34
+ } from "../../index-b56nnscm.js";
35
+ import {
36
+ MAX_TIMER_MS
37
+ } from "../../index-eemvahkc.js";
38
+
39
+ // src/tools/cli/publication.ts
40
+ import { createHash } from "node:crypto";
41
+ import { lstat as lstat2, mkdtemp, rename, rm as rm2 } from "node:fs/promises";
42
+ import { join as join2 } from "node:path";
43
+ import { z as z3 } from "zod";
44
+
45
+ // src/tools/cli/publication-contract.ts
46
+ import { isAbsolute } from "node:path";
47
+ import { z } from "zod";
48
+ var positive = z.int().positive().max(Number.MAX_SAFE_INTEGER);
49
+ var timer = positive.max(MAX_TIMER_MS);
50
+ var component = z.string().regex(/^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$/);
51
+ var PublicationTargetSchema = CliBuildTargetSchema2.extend({
52
+ platform: component,
53
+ arch: component
54
+ });
55
+ var PublicationVersionSchema = z.string().max(128).regex(/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z]+(?:[.-][0-9A-Za-z]+)*)?(?:\+[0-9A-Za-z]+(?:[.-][0-9A-Za-z]+)*)?$/).refine((value) => {
56
+ const core = value.split(/[+-]/)[0];
57
+ if (!core || core.split(".").some((part) => !Number.isSafeInteger(Number(part))))
58
+ return false;
59
+ const prerelease = value.split("+")[0]?.split("-").slice(1).join("-");
60
+ return !prerelease || prerelease.split(".").every((part) => !/^\d+$/.test(part) || part === "0" || !part.startsWith("0"));
61
+ }, "version must use finite canonical semver numbers");
62
+ var limitsSchema = z.object({
63
+ maxTargets: positive.default(16),
64
+ maxManifestBytes: positive.default(256 * 1024),
65
+ maxAssetBytes: positive.default(256 * 1024 * 1024),
66
+ maxCompressedBytes: positive.default(256 * 1024 * 1024),
67
+ maxDirectoryEntries: positive.default(128),
68
+ maxStoredVersions: positive.min(3).default(16),
69
+ lockTimeoutMs: timer.default(1e4),
70
+ timeoutMs: timer.default(600000)
71
+ });
72
+ var dataSchema = CliBuildManifestSchema2.pick({
73
+ name: true,
74
+ version: true,
75
+ commit: true
76
+ }).extend({
77
+ name: component,
78
+ version: PublicationVersionSchema,
79
+ commit: z.string().min(1).max(128),
80
+ storageRoot: z.string().min(1).refine(isAbsolute, "storageRoot must be absolute"),
81
+ baseUrl: z.url().refine((raw) => {
82
+ const url = new URL(raw);
83
+ return ["http:", "https:"].includes(url.protocol) && !url.username && !url.password && !url.search && !url.hash;
84
+ }, "baseUrl must be an http(s) directory URL without credentials/query/fragment"),
85
+ targets: z.array(PublicationTargetSchema).min(1),
86
+ limits: limitsSchema.prefault({}),
87
+ retention: positive.min(2).default(2)
88
+ });
89
+ var phaseSchema = z.enum(["prepare", "build", "commit", "promote"]);
90
+ function publicationData(options) {
91
+ const data = dataSchema.parse(options);
92
+ if (data.targets.length > data.limits.maxTargets)
93
+ throw new RangeError("CLI publication target cap exceeded");
94
+ if (data.targets.length + 1 > data.limits.maxDirectoryEntries)
95
+ throw new RangeError("CLI version layout exceeds directory entry cap");
96
+ if (data.retention >= data.limits.maxStoredVersions)
97
+ throw new RangeError("retention must leave one recovery slot below maxStoredVersions");
98
+ const names = data.targets.map((target) => assetFilename(data.name, target));
99
+ if (new Set(names).size !== names.length)
100
+ throw new TypeError("CLI publication targets must be unique");
101
+ if (typeof options.admit !== "function" || typeof options.build !== "function")
102
+ throw new TypeError("CLI publication needs build and admit callbacks");
103
+ return data;
104
+ }
105
+ function assetFilename(name, target) {
106
+ return `${name}-${target.platform}-${target.arch}.gz`;
107
+ }
108
+ function assetUrl(baseUrl, version, filename) {
109
+ return new URL(`${encodeURIComponent(version)}/${encodeURIComponent(filename)}`, `${baseUrl.replace(/\/+$/, "")}/`).toString();
110
+ }
111
+
112
+ // src/tools/cli/publication-storage.ts
113
+ import { lstat, mkdir, opendir, realpath, rm } from "node:fs/promises";
114
+ import { join, resolve } from "node:path";
115
+ import { z as z2 } from "zod";
116
+ async function directoryGeneration(path) {
117
+ const info = await lstat(path);
118
+ if (!info.isDirectory() || info.isSymbolicLink())
119
+ throw new Error("CLI storage directory must not be a link or non-directory");
120
+ return { dev: info.dev, ino: info.ino };
121
+ }
122
+ async function assertDirectory(path, generation) {
123
+ const current = await directoryGeneration(path);
124
+ if (current.dev !== generation.dev || current.ino !== generation.ino)
125
+ throw new Error("CLI storage directory generation changed");
126
+ }
127
+ async function bindPublicationStorage(data, signal) {
128
+ signal.throwIfAborted();
129
+ assertDirectoryDurability();
130
+ const requested = resolve(data.storageRoot);
131
+ try {
132
+ await mkdir(requested, { mode: 448 });
133
+ } catch (error) {
134
+ if (!(error instanceof Error && ("code" in error) && error.code === "EEXIST"))
135
+ throw error;
136
+ }
137
+ await directoryGeneration(requested);
138
+ const root = await realpath(requested);
139
+ const generation = await directoryGeneration(root);
140
+ const files = await createManagedFileBoundary2({
141
+ root,
142
+ maxReadBytes: Math.max(data.limits.maxManifestBytes, data.limits.maxCompressedBytes),
143
+ maxWriteBytes: Math.max(data.limits.maxManifestBytes, data.limits.maxCompressedBytes)
144
+ });
145
+ return {
146
+ root,
147
+ files,
148
+ async assertRoot() {
149
+ await assertDirectory(requested, generation);
150
+ await assertDirectory(root, generation);
151
+ }
152
+ };
153
+ }
154
+ async function directoryNames(path, maxEntries, signal) {
155
+ const names = [];
156
+ const directory = await opendir(path);
157
+ try {
158
+ for await (const entry of directory) {
159
+ signal.throwIfAborted();
160
+ names.push(entry.name);
161
+ if (names.length > maxEntries)
162
+ throw new RangeError("CLI publication directory entry cap exceeded");
163
+ }
164
+ } finally {
165
+ await directory.close().catch(() => {
166
+ return;
167
+ });
168
+ }
169
+ return names.sort();
170
+ }
171
+ async function readPublicationManifest(storage, path, data, signal) {
172
+ try {
173
+ const read = await storage.files.read(path, {
174
+ rejectSymlinks: true,
175
+ singleLink: true,
176
+ stable: true,
177
+ maxBytes: data.limits.maxManifestBytes,
178
+ signal
179
+ });
180
+ return {
181
+ manifest: CliBuildManifestSchema2.parse(JSON.parse(new TextDecoder().decode(read.bytes))),
182
+ bytes: read.bytes
183
+ };
184
+ } catch (error) {
185
+ if (error instanceof ManagedFileError2 && error.code === "FILE_NOT_FOUND")
186
+ return;
187
+ throw error;
188
+ }
189
+ }
190
+ function assertPublicationManifest(record, data, exactTargets) {
191
+ const { manifest } = record;
192
+ PublicationVersionSchema.parse(manifest.version);
193
+ if (manifest.name !== data.name || manifest.assets.length === 0 || manifest.assets.length > data.limits.maxTargets)
194
+ throw new Error("CLI version identity or target count is invalid");
195
+ const expected = manifest.assets.map((asset) => assetFilename(data.name, asset));
196
+ if (new Set(expected).size !== expected.length || manifest.assets.some((asset) => !PublicationTargetSchema.safeParse(asset).success || asset.compression !== "gzip"))
197
+ throw new Error("CLI version targets or compression do not match publisher layout");
198
+ if (exactTargets) {
199
+ const requested = data.targets.map((target) => assetFilename(data.name, target)).sort();
200
+ if (JSON.stringify(requested) !== JSON.stringify([...expected].sort()))
201
+ throw new Error("CLI publication target set differs from existing version");
202
+ }
203
+ for (const asset of manifest.assets) {
204
+ const file = assetFilename(data.name, asset);
205
+ const url = new URL(asset.url);
206
+ const suffix = `/${encodeURIComponent(manifest.version)}/${encodeURIComponent(file)}`;
207
+ if (!["http:", "https:"].includes(url.protocol) || url.username || url.password || !url.pathname.endsWith(suffix) || url.search || url.hash || exactTargets && asset.url !== assetUrl(data.baseUrl, manifest.version, file))
208
+ throw new Error("CLI asset URL differs from owned version layout");
209
+ }
210
+ return expected;
211
+ }
212
+ async function assertStoredLayout(storage, record, expected, data, signal) {
213
+ const version = record.manifest.version;
214
+ const names = await directoryNames(join(storage.root, version), data.limits.maxDirectoryEntries, signal);
215
+ if (JSON.stringify(names) !== JSON.stringify([...expected, "manifest.json"].sort()))
216
+ throw new Error("CLI version has unknown or missing files");
217
+ const saved = await readPublicationManifest(storage, `${version}/manifest.json`, data, signal);
218
+ if (!saved || !Buffer.from(saved.bytes).equals(Buffer.from(record.bytes)))
219
+ throw new Error("CLI version manifest differs from publication");
220
+ }
221
+ async function verifyPublicationVersion(storage, record, data, signal, exactTargets) {
222
+ const { manifest } = record;
223
+ const expected = assertPublicationManifest(record, data, exactTargets);
224
+ const directory = join(storage.root, manifest.version);
225
+ const generation = await directoryGeneration(directory);
226
+ await assertStoredLayout(storage, record, expected, data, signal);
227
+ for (const asset of manifest.assets) {
228
+ const file = assetFilename(data.name, asset);
229
+ const archived = await storage.files.read(`${manifest.version}/${file}`, {
230
+ rejectSymlinks: true,
231
+ singleLink: true,
232
+ stable: true,
233
+ maxBytes: data.limits.maxCompressedBytes,
234
+ signal
235
+ });
236
+ await decodeCliAsset(archived.bytes, asset, data.limits.maxAssetBytes, signal);
237
+ }
238
+ await assertDirectory(directory, generation);
239
+ }
240
+ async function publicationHistory(storage, data, signal) {
241
+ const history = [];
242
+ for (const name of await directoryNames(storage.root, data.limits.maxDirectoryEntries, signal)) {
243
+ if (!PublicationVersionSchema.safeParse(name).success)
244
+ continue;
245
+ const path = join(storage.root, name);
246
+ const info = await lstat(path);
247
+ if (!info.isDirectory() || info.isSymbolicLink())
248
+ continue;
249
+ let record;
250
+ try {
251
+ record = await readPublicationManifest(storage, `${name}/manifest.json`, data, signal);
252
+ } catch (error) {
253
+ if (error instanceof SyntaxError || error instanceof z2.ZodError)
254
+ continue;
255
+ throw error;
256
+ }
257
+ if (!record || record.manifest.name !== data.name || record.manifest.version !== name)
258
+ continue;
259
+ await verifyPublicationVersion(storage, record, data, signal, false);
260
+ history.push({ ...record, directory: path });
261
+ if (history.length > data.limits.maxStoredVersions)
262
+ throw new RangeError("CLI publication stored version cap exceeded");
263
+ }
264
+ return history;
265
+ }
266
+ async function removePublicationVersion(storage, version, data, signal) {
267
+ await storage.assertRoot();
268
+ const generation = await directoryGeneration(version.directory);
269
+ await assertStoredLayout(storage, version, assertPublicationManifest(version, data, false), data, signal);
270
+ await assertDirectory(version.directory, generation);
271
+ await rm(version.directory, { recursive: true });
272
+ await syncDirectory(storage.root);
273
+ }
274
+ var STAGING_NAME = /^\.publish-[A-Za-z0-9]{6}$/;
275
+ async function reclaimPublicationStaging(storage, signal) {
276
+ await storage.assertRoot();
277
+ const stale = [];
278
+ const directory = await opendir(storage.root);
279
+ try {
280
+ for await (const entry of directory) {
281
+ signal.throwIfAborted();
282
+ if (STAGING_NAME.test(entry.name) && entry.isDirectory())
283
+ stale.push(entry.name);
284
+ }
285
+ } finally {
286
+ await directory.close().catch(() => {
287
+ return;
288
+ });
289
+ }
290
+ for (const name of stale) {
291
+ signal.throwIfAborted();
292
+ await rm(join(storage.root, name), { recursive: true });
293
+ }
294
+ if (stale.length > 0)
295
+ await syncDirectory(storage.root);
296
+ return stale.length;
297
+ }
298
+
299
+ // src/tools/cli/publication.ts
300
+ var resultSchema = z3.object({
301
+ outcome: z3.enum(["published", "existing"]),
302
+ manifest: CliBuildManifestSchema2
303
+ });
304
+ function trustPublication(manifest, options) {
305
+ const verdict = verifyCliManifest2(manifest, manifest.signature, options.trust);
306
+ if (!cliSignatureAccepted2(verdict))
307
+ throw new Error(`CLI publication manifest signature ${verdict}`);
308
+ if (options.signing && !manifest.signature)
309
+ throw new Error("CLI publication requires a signed manifest");
310
+ }
311
+ function sameManifest(left, right) {
312
+ return left === undefined ? right === undefined : right !== undefined && Buffer.from(left.bytes).equals(Buffer.from(right.bytes));
313
+ }
314
+ async function admission(options, data, phase, signal) {
315
+ signal.throwIfAborted();
316
+ await waitForPublication(Promise.resolve().then(() => {
317
+ signal.throwIfAborted();
318
+ return options.admit({
319
+ phase,
320
+ identity: Object.freeze({
321
+ name: data.name,
322
+ version: data.version,
323
+ commit: data.commit
324
+ }),
325
+ signal
326
+ });
327
+ }), signal);
328
+ }
329
+ async function unchanged(storage, prior, data, lock, signal) {
330
+ signal.throwIfAborted();
331
+ await lock.assertHeld();
332
+ await storage.assertRoot();
333
+ if (!sameManifest(prior, await readPublicationManifest(storage, "manifest.json", data, signal)))
334
+ throw new Error("CLI public manifest changed during publication");
335
+ }
336
+ function newest(versions) {
337
+ return [...versions].sort((a, b) => compareCliVersions2(b.manifest.version, a.manifest.version) ?? 0);
338
+ }
339
+ async function retainVersions(storage, history, keep, count, data, lock, signal) {
340
+ const retained = newest(history).filter((item) => !keep.has(item.manifest.version));
341
+ const spare = Math.max(0, count - keep.size);
342
+ const removed = new Set(retained.slice(spare));
343
+ for (const version of removed) {
344
+ await lock.assertHeld();
345
+ await removePublicationVersion(storage, version, data, signal);
346
+ }
347
+ return history.filter((item) => !removed.has(item));
348
+ }
349
+ async function promote(storage, record, prior, data, options, lock, signal) {
350
+ await admission(options, data, "promote", signal);
351
+ trustPublication(record.manifest, options);
352
+ await unchanged(storage, prior, data, lock, signal);
353
+ const names = await directoryNames(storage.root, data.limits.maxDirectoryEntries, signal);
354
+ if (names.length + 1 > data.limits.maxDirectoryEntries)
355
+ throw new RangeError("CLI publication directory entry cap leaves no pointer space");
356
+ signal.throwIfAborted();
357
+ await writeFileAtomic2(join2(storage.root, "manifest.json"), record.bytes, {
358
+ mode: 420,
359
+ durability: "directory"
360
+ });
361
+ const current = await readPublicationManifest(storage, "manifest.json", data, signal);
362
+ if (!sameManifest(record, current))
363
+ throw new Error("CLI public manifest readback differs after promotion");
364
+ }
365
+ async function buildVersion(storage, data, options, lock, prior, signal) {
366
+ const names = await directoryNames(storage.root, data.limits.maxDirectoryEntries, signal);
367
+ if (names.length + 2 > data.limits.maxDirectoryEntries)
368
+ throw new RangeError("CLI publication directory entry cap leaves no commit space");
369
+ const staged = await mkdtemp(join2(storage.root, ".publish-"));
370
+ const generation = await directoryGeneration(staged);
371
+ let committed = false;
372
+ try {
373
+ const files = await createManagedFileBoundary2({
374
+ root: staged,
375
+ maxWriteBytes: Math.max(data.limits.maxCompressedBytes, data.limits.maxManifestBytes)
376
+ });
377
+ const stamp = Object.freeze({
378
+ version: data.version,
379
+ commit: data.commit,
380
+ builtAt: new Date().toISOString()
381
+ });
382
+ const assets = [];
383
+ for (const target of data.targets) {
384
+ await admission(options, data, "build", signal);
385
+ signal.throwIfAborted();
386
+ const source = await waitForPublication(Promise.resolve().then(() => {
387
+ signal.throwIfAborted();
388
+ return options.build({ target: Object.freeze({ ...target }), stamp, signal });
389
+ }), signal);
390
+ if (!(source instanceof Uint8Array) && !(source instanceof ReadableStream))
391
+ throw new TypeError("CLI builder must return bytes or a stream");
392
+ const bytes = await collectCliBytes(source, data.limits.maxAssetBytes, signal);
393
+ if (bytes.byteLength === 0)
394
+ throw new Error("CLI asset must not be empty");
395
+ const archived = await gzipCliAsset(bytes, data.limits.maxCompressedBytes, signal);
396
+ await lock.assertHeld();
397
+ await storage.assertRoot();
398
+ await assertDirectory(staged, generation);
399
+ const file = assetFilename(data.name, target);
400
+ await files.write(file, archived, { durable: true, signal });
401
+ assets.push({
402
+ ...target,
403
+ compression: "gzip",
404
+ size: bytes.byteLength,
405
+ sha256: createHash("sha256").update(bytes).digest("hex"),
406
+ url: assetUrl(data.baseUrl, data.version, file)
407
+ });
408
+ }
409
+ const manifest = CliBuildManifestSchema2.parse({ name: data.name, ...stamp, assets });
410
+ if (options.signing)
411
+ manifest.signature = signCliManifest2(manifest, options.signing);
412
+ trustPublication(manifest, options);
413
+ const bytes = new TextEncoder().encode(`${JSON.stringify(manifest)}
414
+ `);
415
+ if (bytes.byteLength > data.limits.maxManifestBytes)
416
+ throw new RangeError("CLI publication manifest byte cap exceeded");
417
+ await assertDirectory(staged, generation);
418
+ await files.write("manifest.json", bytes, {
419
+ durable: true,
420
+ maxBytes: data.limits.maxManifestBytes,
421
+ signal
422
+ });
423
+ await admission(options, data, "commit", signal);
424
+ await unchanged(storage, prior, data, lock, signal);
425
+ await assertDirectory(staged, generation);
426
+ try {
427
+ await lstat2(join2(storage.root, data.version));
428
+ throw new Error("CLI version directory already exists");
429
+ } catch (error) {
430
+ if (!(error instanceof Error && ("code" in error) && error.code === "ENOENT"))
431
+ throw error;
432
+ }
433
+ signal.throwIfAborted();
434
+ await rename(staged, join2(storage.root, data.version));
435
+ committed = true;
436
+ await syncDirectory(storage.root);
437
+ return { manifest, bytes };
438
+ } catch (error) {
439
+ if (!committed) {
440
+ try {
441
+ await storage.assertRoot();
442
+ await assertDirectory(staged, generation);
443
+ await rm2(staged, { recursive: true });
444
+ } catch (cleanupError) {
445
+ throw new AggregateError([error, cleanupError], "CLI publication failed and safe staging cleanup was refused");
446
+ }
447
+ }
448
+ if (committed && !(error instanceof AtomicFilePublicationError2))
449
+ throw new Error("CLI version committed; publication outcome must be checked", {
450
+ cause: error
451
+ });
452
+ throw error;
453
+ }
454
+ }
455
+ async function publishLocked(storage, data, options, lock, signal) {
456
+ await lock.assertHeld();
457
+ await admission(options, data, "prepare", signal);
458
+ await reclaimPublicationStaging(storage, signal);
459
+ const prior = await readPublicationManifest(storage, "manifest.json", data, signal);
460
+ if (prior && prior.manifest.name !== data.name)
461
+ throw new Error("CLI public manifest belongs to another CLI");
462
+ const history = await publicationHistory(storage, data, signal);
463
+ const candidate = {
464
+ name: data.name,
465
+ version: data.version,
466
+ commit: data.commit,
467
+ builtAt: new Date().toISOString(),
468
+ assets: []
469
+ };
470
+ assertCliPublishable2([...prior ? [prior.manifest] : [], ...history.map((item) => item.manifest)], candidate);
471
+ if (prior) {
472
+ const pointed = history.find((item) => item.manifest.version === prior.manifest.version);
473
+ if (!pointed || !sameManifest(prior, pointed))
474
+ throw new Error("CLI public manifest differs from its stored version");
475
+ assertPublicationManifest(prior, data, prior.manifest.version === data.version);
476
+ trustPublication(prior.manifest, options);
477
+ const order = compareCliVersions2(data.version, prior.manifest.version) ?? -1;
478
+ if (order < 0 || order === 0 && data.version !== prior.manifest.version)
479
+ throw new Error("CLI publication downgrade or non-advancing version refused");
480
+ if (prior.manifest.version === data.version) {
481
+ await admission(options, data, "promote", signal);
482
+ await unchanged(storage, prior, data, lock, signal);
483
+ return { outcome: "existing", manifest: prior.manifest };
484
+ }
485
+ }
486
+ let record = history.find((item) => item.manifest.version === data.version);
487
+ let stored = history;
488
+ if (record) {
489
+ assertPublicationManifest(record, data, true);
490
+ trustPublication(record.manifest, options);
491
+ } else {
492
+ const protect = new Set(prior ? [prior.manifest.version] : []);
493
+ const previous = newest(history).find((item) => prior && (compareCliVersions2(item.manifest.version, prior.manifest.version) ?? 0) < 0);
494
+ if (previous)
495
+ protect.add(previous.manifest.version);
496
+ stored = await retainVersions(storage, history, protect, data.limits.maxStoredVersions - 1, data, lock, signal);
497
+ record = {
498
+ ...await buildVersion(storage, data, options, lock, prior, signal),
499
+ directory: join2(storage.root, data.version)
500
+ };
501
+ await verifyPublicationVersion(storage, record, data, signal, true);
502
+ stored = [...stored, record];
503
+ }
504
+ try {
505
+ await promote(storage, record, prior, data, options, lock, signal);
506
+ if (stored.length > data.limits.maxStoredVersions)
507
+ throw new RangeError("CLI publication stored version cap exceeded");
508
+ await retainVersions(storage, stored, new Set([data.version, ...prior ? [prior.manifest.version] : []]), data.retention, data, lock, signal);
509
+ } catch (error) {
510
+ if (error instanceof AtomicFilePublicationError2)
511
+ throw error;
512
+ throw new Error("CLI version committed; publication outcome must be checked", {
513
+ cause: error
514
+ });
515
+ }
516
+ return { outcome: "published", manifest: record.manifest };
517
+ }
518
+ async function publishCli(options) {
519
+ const data = publicationData(options);
520
+ return withPublicationDeadline(data.limits.timeoutMs, options.signal, async (signal) => {
521
+ const storage = await bindPublicationStorage(data, signal);
522
+ return withExclusiveLock2(join2(storage.root, ".publication.lock"), (lock) => publishLocked(storage, data, options, lock, signal), { timeoutMs: data.limits.lockTimeoutMs, signal, label: "CLI publication" });
523
+ });
524
+ }
525
+ export {
526
+ publishCli
527
+ };
@@ -28,13 +28,12 @@ export { type CliInstallerConfig, renderCliInstaller, } from '../tools/cli/insta
28
28
  export { assertCliPublishable, type CliBuildAsset, CliBuildAssetSchema, type CliBuildManifest, CliBuildManifestSchema, type CliBuildStamp, CliBuildStampSchema, type CliBuildTarget, CliBuildTargetSchema, currentCliBuildTarget, formatCliBuildStamp, selectCliBuildAsset, } from '../tools/cli/manifest.js';
29
29
  export type { CliPresentationPolicyConfig } from '../tools/cli/policy.js';
30
30
  export { CliProfileError, type CliProfileStore, type CliProfileStoreConfig, createCliProfileStore, type ResolvedCliProfile, } from '../tools/cli/profile.js';
31
- export { type CliPublicationOptions, type CliPublicationPhase, type CliPublicationResult, publishCli, } from '../tools/cli/publication.js';
32
31
  export { type CliBuildSignature, CliBuildSignatureSchema, type CliSignatureVerdict, type CliSigningKey, type CliTrustRoot, cliManifestSigningPayload, cliSignatureAccepted, signCliManifest, verifyCliManifest, } from '../tools/cli/signature.js';
33
32
  export { type CliBatchCommandConfig, type CliStreamAnswer, type CliStreamCommandConfig, type CliStreamHooks, defineCliBatchCommand, defineCliStreamCommand, runCliStream, } from '../tools/cli/stream.js';
34
33
  export { type AppliedCliUpdate, applyCliUpdate, type CliRollbackConfig, type CliUpdateApplyConfig, type CliUpdateCheck, type CliUpdateCheckConfig, checkCliUpdate, compareCliVersions, type RolledBackCliUpdate, rollbackCliUpdate, } from '../tools/cli/update.js';
35
34
  export { type CliViewOutput, renderCliView } from '../tools/cli/view.js';
36
35
  export { type CliWaitConfig, type PollParams, pollUntilDone } from '../tools/cli/wait.js';
37
- export type { RuntimeToolDefinitionWithoutOutput, RuntimeToolExecution, RuntimeToolExecutionWithOutput, } from '../tools/runtime-tool-execution.js';
36
+ export type { RuntimeToolDefinition, RuntimeToolDefinitionWithOutput, RuntimeToolDefinitionWithoutOutput, } from '../tools/runtime-tool-declaration.js';
38
37
  /**
39
38
  * The second half of `parseCliArgs`. The parser leaves array and object values
40
39
  * as strings on purpose, because `executeToolMethod` runs this pass next; a
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/entrypoints/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,uBAAuB,EACvB,KAAK,aAAa,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACnC,KAAK,iCAAiC,EACtC,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,mBAAmB,EACnB,SAAS,EACT,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,KAAK,UAAU,EACf,WAAW,EACX,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,kBAAkB,EACvB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,oBAAoB,EACpB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,cAAc,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,qBAAqB,EACrB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,UAAU,GACX,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,iBAAiB,EACtB,uBAAuB,EACvB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,yBAAyB,EACzB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,gBAAgB,EACrB,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,cAAc,EACd,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvF,YAAY,EACV,kCAAkC,EAClC,oBAAoB,EACpB,8BAA8B,GAC/B,MAAM,iCAAiC,CAAC;AACzC;;;;;;GAMG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/entrypoints/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,uBAAuB,EACvB,KAAK,aAAa,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACnC,KAAK,iCAAiC,EACtC,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,mBAAmB,EACnB,SAAS,EACT,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,KAAK,UAAU,EACf,WAAW,EACX,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,kBAAkB,EACvB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,oBAAoB,EACpB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,cAAc,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,qBAAqB,EACrB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,iBAAiB,EACtB,uBAAuB,EACvB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,yBAAyB,EACzB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,gBAAgB,EACrB,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,cAAc,EACd,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvF,YAAY,EACV,qBAAqB,EACrB,+BAA+B,EAC/B,kCAAkC,GACnC,MAAM,mCAAmC,CAAC;AAC3C;;;;;;GAMG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}