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
@@ -30,6 +30,14 @@ function jsonStringSize(text, budget) {
30
30
 
31
31
  // src/internal/json-data.ts
32
32
  function isJsonData(value, limits, snapshot) {
33
+ return jsonDataRefusal(value, limits, snapshot) === undefined;
34
+ }
35
+ function jsonDataRefusal(value, limits, snapshot) {
36
+ let refusal;
37
+ const refuse = (reason) => {
38
+ refusal ??= reason;
39
+ return false;
40
+ };
33
41
  const ancestors = new Set;
34
42
  let nodes = 0;
35
43
  let bytes = 0;
@@ -38,12 +46,14 @@ function isJsonData(value, limits, snapshot) {
38
46
  if (byteLimit === undefined)
39
47
  return true;
40
48
  bytes += amount;
41
- return bytes <= byteLimit;
49
+ return bytes <= byteLimit || refuse("bytes");
42
50
  };
43
51
  const chargeText = (text) => byteLimit === undefined || charge(jsonStringSize(text, byteLimit - bytes));
44
52
  const visit = (item, depth, target, key) => {
45
- if (++nodes > limits.maxNodes || depth > limits.maxDepth)
46
- return false;
53
+ if (++nodes > limits.maxNodes)
54
+ return refuse("nodes");
55
+ if (depth > limits.maxDepth)
56
+ return refuse("depth");
47
57
  let captured = item;
48
58
  if (item === null) {
49
59
  if (!charge(4))
@@ -55,36 +65,43 @@ function isJsonData(value, limits, snapshot) {
55
65
  if (!charge(item ? 4 : 5))
56
66
  return false;
57
67
  } else if (typeof item === "number") {
58
- if (!Number.isFinite(item) || Object.is(item, -0))
59
- return false;
68
+ if (!Number.isFinite(item))
69
+ return refuse("not-json");
70
+ if (Object.is(item, -0)) {
71
+ if (!limits.zodJson)
72
+ return refuse("negative-zero");
73
+ captured = 0;
74
+ }
60
75
  if (byteLimit !== undefined && !charge(String(item).length))
61
76
  return false;
62
77
  } else {
63
- if (typeof item !== "object" || ancestors.has(item))
64
- return false;
78
+ if (typeof item !== "object")
79
+ return refuse("not-json");
80
+ if (ancestors.has(item))
81
+ return refuse("cycle");
65
82
  const array = Array.isArray(item);
66
83
  const prototype = Object.getPrototypeOf(item);
67
84
  if (array ? prototype !== Array.prototype : prototype !== Object.prototype && prototype !== null)
68
- return false;
85
+ return refuse("not-json");
69
86
  let length = 0;
70
87
  if (array) {
71
88
  const descriptor = Object.getOwnPropertyDescriptor(item, "length");
72
89
  if (!descriptor || !("value" in descriptor))
73
- return false;
90
+ return refuse("not-json");
74
91
  const capturedLength = descriptor.value;
75
92
  if (typeof capturedLength !== "number" || !Number.isInteger(capturedLength) || capturedLength < 0 || capturedLength > 2 ** 32 - 1)
76
- return false;
93
+ return refuse("not-json");
77
94
  length = capturedLength;
78
95
  if (length > limits.maxNodes - nodes)
79
- return false;
96
+ return refuse("nodes");
80
97
  if (byteLimit !== undefined && Math.max(2, length * 2 + 1) > byteLimit - bytes)
81
- return false;
98
+ return refuse("bytes");
82
99
  }
83
100
  const keys = Reflect.ownKeys(item);
84
101
  if (keys.length > limits.maxNodes - nodes + (array ? 1 : 0))
85
- return false;
102
+ return refuse("nodes");
86
103
  if (array && keys.length !== length + 1)
87
- return false;
104
+ return refuse("not-json");
88
105
  if (!charge(2))
89
106
  return false;
90
107
  const copy = target ? array ? [] : {} : undefined;
@@ -95,16 +112,18 @@ function isJsonData(value, limits, snapshot) {
95
112
  if (array && memberKey === "length")
96
113
  continue;
97
114
  if (typeof memberKey !== "string")
98
- return false;
115
+ return refuse("not-json");
116
+ if (limits.zodJson && !array && memberKey === "__proto__")
117
+ continue;
99
118
  if (array && (!/^(0|[1-9][0-9]*)$/.test(memberKey) || Number(memberKey) >= length))
100
- return false;
119
+ return refuse("not-json");
101
120
  const descriptor = Object.getOwnPropertyDescriptor(item, memberKey);
102
121
  if (!descriptor?.enumerable || !("value" in descriptor))
103
- return false;
122
+ return refuse("not-json");
104
123
  const memberValue = descriptor.value;
105
124
  if (!array && limits.omitObjectUndefined && memberValue === undefined) {
106
125
  if (++nodes > limits.maxNodes)
107
- return false;
126
+ return refuse("nodes");
108
127
  continue;
109
128
  }
110
129
  if (members++ > 0 && !charge(1))
@@ -129,10 +148,10 @@ function isJsonData(value, limits, snapshot) {
129
148
  return true;
130
149
  };
131
150
  try {
132
- return visit(value, 0, snapshot, "value");
151
+ return visit(value, 0, snapshot, "value") ? undefined : refusal ?? "not-json";
133
152
  } catch {
134
- return false;
153
+ return "not-json";
135
154
  }
136
155
  }
137
156
 
138
- export { isJsonData };
157
+ export { isJsonData, jsonDataRefusal };
@@ -133,10 +133,8 @@ function renewEntry(state, claim, now, leaseMs) {
133
133
  }
134
134
  function forgetMissing(state, present, now) {
135
135
  const live = (claim) => claim.leaseUntil !== null && Date.parse(claim.leaseUntil) > now.getTime();
136
- return {
137
- ...state,
138
- claims: state.claims.filter((claim) => present.has(claim.key) || live(claim))
139
- };
136
+ const claims = state.claims.filter((claim) => present.has(claim.key) || live(claim));
137
+ return claims.length === state.claims.length ? state : { ...state, claims };
140
138
  }
141
139
 
142
140
  export { DirectoryInboxIdentitySchema2, DirectoryInboxAcceptResultSchema2, DirectoryInboxRejectionReasonSchema2, DirectoryInboxStateSchema2, emptyDirectoryInboxState, withRejection, claimEntry, completeEntry, releaseEntry, ownsClaim, renewEntry, forgetMissing };
@@ -2,6 +2,9 @@ import {
2
2
  createTraceContext2,
3
3
  formatTraceparent2
4
4
  } from "./index-yex7eg1v.js";
5
+ import {
6
+ ApiError2
7
+ } from "./index-kfjkb396.js";
5
8
  import {
6
9
  isRecord,
7
10
  transportResult
@@ -366,36 +369,6 @@ function responseOf(xhr) {
366
369
  }
367
370
 
368
371
  // src/browser/http.ts
369
- var API_ERROR_BRAND = Symbol.for("stitchkit.ApiError");
370
- function messageForCode(code, message) {
371
- return message !== undefined && message.length > 0 ? message : `${code} (no message supplied)`;
372
- }
373
-
374
- class ApiError2 extends Error {
375
- code;
376
- status;
377
- details;
378
- hint;
379
- traceId;
380
- retryable;
381
- constructor(code, status = 0, details, message, hint, traceId, options, retryable) {
382
- super(messageForCode(code, message), options);
383
- this.code = code;
384
- this.status = status;
385
- this.details = details;
386
- this.hint = hint;
387
- this.traceId = traceId;
388
- this.retryable = retryable;
389
- this.name = "ApiError";
390
- Object.defineProperty(this, API_ERROR_BRAND, { value: true });
391
- }
392
- static is(error) {
393
- return typeof error === "object" && error !== null && API_ERROR_BRAND in error;
394
- }
395
- }
396
- function refuseLocally(path, message) {
397
- return new ApiError2("VALIDATION_ERROR", 0, { issues: [{ path, code: "invalid_type", message }] }, message);
398
- }
399
372
  function isAbortLikeError(error) {
400
373
  if (error instanceof RequestCancellationError)
401
374
  return true;
@@ -439,7 +412,10 @@ function assertTransportChoice(config) {
439
412
  }
440
413
  function requestFailure(error, emit) {
441
414
  if (error instanceof RequestCancellationError) {
442
- return new ApiError2(error.cause === "caller" ? "REQUEST_ABORTED" : "REQUEST_TIMEOUT", 0, undefined, error.message);
415
+ return new ApiError2(error.cause === "caller" ? "REQUEST_ABORTED" : "REQUEST_TIMEOUT", {
416
+ status: 0,
417
+ message: error.message
418
+ });
443
419
  }
444
420
  if (ApiError2.is(error))
445
421
  return error;
@@ -447,7 +423,13 @@ function requestFailure(error, emit) {
447
423
  const response = isHTTPError(error) ? error.response : undefined;
448
424
  const status = response?.status ?? 0;
449
425
  const msg = error instanceof Error ? error.message : undefined;
450
- return new ApiError2("UNKNOWN_ERROR", status, msg ? { message: msg } : undefined, msg, undefined, responseTraceId(response), { cause: error });
426
+ return new ApiError2("UNKNOWN_ERROR", {
427
+ status,
428
+ details: msg ? { message: msg } : undefined,
429
+ message: msg,
430
+ traceId: responseTraceId(response),
431
+ cause: error
432
+ });
451
433
  }
452
434
  function jsonBodyOf(data) {
453
435
  return data === undefined ? null : JSON.stringify(data);
@@ -526,7 +508,14 @@ function createHttpClient2(config) {
526
508
  const parsed = body === null ? null : parseError(body);
527
509
  if (!parsed)
528
510
  return error;
529
- return new ApiError2(parsed.code, error.response.status, parsed.details, parsed.message, parsed.hint, responseTraceId(error.response), undefined, typeof parsed.retryable === "boolean" ? parsed.retryable : undefined);
511
+ return new ApiError2(parsed.code, {
512
+ status: error.response.status,
513
+ details: parsed.details,
514
+ message: parsed.message,
515
+ hint: parsed.hint,
516
+ traceId: responseTraceId(error.response),
517
+ retryable: typeof parsed.retryable === "boolean" ? parsed.retryable : undefined
518
+ });
530
519
  }
531
520
  ]
532
521
  }
@@ -581,4 +570,4 @@ function createHttpClient2(config) {
581
570
  };
582
571
  }
583
572
 
584
- export { RequestCancellationError, createRequestCancellation, resolveClientFetch, responseTraceId, uploadProgressRoute, withUploadProgress, ApiError2, refuseLocally, isAbortLikeError, parseApiErrorBody, createHttpClient2 };
573
+ export { RequestCancellationError, createRequestCancellation, resolveClientFetch, responseTraceId, uploadProgressRoute, withUploadProgress, isAbortLikeError, parseApiErrorBody, createHttpClient2 };
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  assertDrainBound,
6
6
  withinBound
7
- } from "./index-h97tqqp1.js";
7
+ } from "./index-qaet40b2.js";
8
8
  import {
9
9
  ApplicationIdSchema2
10
10
  } from "./index-w5s3xftz.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  projectToolSurface
3
- } from "./index-77nxk6ay.js";
3
+ } from "./index-r393tnfp.js";
4
4
  import {
5
5
  contractToolMountable
6
- } from "./index-2hyavjjj.js";
6
+ } from "./index-wbhdzxar.js";
7
7
  import {
8
8
  runtimeToolMountable
9
- } from "./index-cvda079a.js";
9
+ } from "./index-yvfk3y36.js";
10
10
 
11
11
  // src/tools/surface.ts
12
12
  function collectToolSurface({
@@ -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
  RealtimeRequestInvalidAcknowledgementError2,
6
6
  RealtimeRequestRejectedError2
@@ -60,13 +60,17 @@ import { z } from "zod";
60
60
  function realtimeContractViolation(options) {
61
61
  const issues = options.cause instanceof z.ZodError ? zodIssues2(options.cause) : undefined;
62
62
  const reason = options.reason.replaceAll("-", " ");
63
- const error = new AppError2("REALTIME_CONTRACT_VIOLATION", `Realtime event "${options.event}" (${options.direction}, ${options.phase}): ${reason}`, 500, {
64
- event: options.event,
65
- direction: options.direction,
66
- phase: options.phase,
67
- reason: options.reason,
68
- fault: options.fault,
69
- ...issues !== undefined && { issues }
63
+ const error = new AppError2("REALTIME_CONTRACT_VIOLATION", {
64
+ message: `Realtime event "${options.event}" (${options.direction}, ${options.phase}): ${reason}`,
65
+ status: 500,
66
+ details: {
67
+ event: options.event,
68
+ direction: options.direction,
69
+ phase: options.phase,
70
+ reason: options.reason,
71
+ fault: options.fault,
72
+ ...issues !== undefined && { issues }
73
+ }
70
74
  });
71
75
  if (options.cause !== undefined)
72
76
  error.cause = options.cause;
@@ -1,3 +1,7 @@
1
+ import {
2
+ assertPositiveSafeInteger
3
+ } from "./index-0s4xebbg.js";
4
+
1
5
  // src/observability/status.ts
2
6
  import { z } from "zod";
3
7
  var NonNegativeIntegerSchema = z.number().int().nonnegative();
@@ -100,9 +104,7 @@ function invokeIsolated(callback) {
100
104
  }
101
105
  function createBoundedSinkManager(config) {
102
106
  const maxPending = config.maxPending ?? DEFAULT_MAX_PENDING;
103
- if (!Number.isSafeInteger(maxPending) || maxPending <= 0) {
104
- throw new TypeError("Observability maxPending must be a positive safe integer");
105
- }
107
+ assertPositiveSafeInteger("Observability maxPending", maxPending);
106
108
  let sequence = 0;
107
109
  let closed = false;
108
110
  let received = 0;
@@ -1,19 +1,22 @@
1
1
  import {
2
2
  AgentToolError2,
3
3
  resolveToolDurability
4
- } from "./index-nggfa2yn.js";
4
+ } from "./index-c17xcx4k.js";
5
5
  import {
6
6
  toolResultFromError,
7
7
  toolCauseFromResult,
8
8
  isToolExecutionControlError2
9
- } from "./index-2vnh05w4.js";
9
+ } from "./index-2k91mewf.js";
10
10
  import {
11
11
  createToolRunner,
12
12
  formatToolError
13
- } from "./index-2hyavjjj.js";
13
+ } from "./index-wbhdzxar.js";
14
14
  import {
15
15
  collectToolSurface
16
- } from "./index-a0zzh8ak.js";
16
+ } from "./index-pz3y6b6g.js";
17
+ import {
18
+ agentPresenterOf
19
+ } from "./index-yvfk3y36.js";
17
20
  import {
18
21
  isRecord
19
22
  } from "./index-9jfdm5tg.js";
@@ -75,7 +78,7 @@ function mountAgent2(services, config = {}) {
75
78
  return result.data;
76
79
  throw new AgentToolError2(formatToolError(result, mountable.name, config.errorHint), toolCauseFromResult(result));
77
80
  };
78
- const presenter = entry.kind === "runtime" ? entry.definition.present?.agent : undefined;
81
+ const presenter = entry.kind === "runtime" ? agentPresenterOf(entry.definition) : undefined;
79
82
  if (entry.kind === "runtime" && presenter) {
80
83
  const { definition } = entry;
81
84
  const output = definition.output;
@@ -108,4 +111,47 @@ function mountAgent2(services, config = {}) {
108
111
  return tools;
109
112
  }
110
113
 
111
- export { mountAgent2 };
114
+ // src/tools/manifest.ts
115
+ function utf8Length(value) {
116
+ return new TextEncoder().encode(JSON.stringify(value)).byteLength;
117
+ }
118
+ function describeToolCatalog2(config) {
119
+ const deferred = new Set(config.deferredNames ?? []);
120
+ const entries = collectToolSurface({
121
+ surface: config,
122
+ transport: config.transport,
123
+ extend: config.extend,
124
+ flattenUnionInput: config.flattenUnionInput
125
+ }).map(({ kind, service, action, mountable }) => {
126
+ const schemaBytes = utf8Length(mountable.presentationSchema);
127
+ return {
128
+ name: mountable.name,
129
+ description: mountable.method.desc,
130
+ inputSchema: mountable.presentationSchema,
131
+ source: { kind, service, action },
132
+ schemaBytes,
133
+ deferred: deferred.has(mountable.name)
134
+ };
135
+ });
136
+ if (config.maxSchemaBytes !== undefined) {
137
+ const total = entries.reduce((sum, entry) => sum + entry.schemaBytes, 0);
138
+ if (total > config.maxSchemaBytes) {
139
+ throw new TypeError(`Tool catalog schemas use ${total} bytes, exceeding maxSchemaBytes ${config.maxSchemaBytes}`);
140
+ }
141
+ }
142
+ return entries;
143
+ }
144
+ function buildToolManifest2(config) {
145
+ return collectToolSurface({
146
+ surface: config,
147
+ transport: config.transport,
148
+ extend: config.extend,
149
+ flattenUnionInput: config.flattenUnionInput
150
+ }).map(({ mountable }) => ({
151
+ name: mountable.name,
152
+ description: mountable.method.desc,
153
+ inputSchema: mountable.presentationSchema
154
+ }));
155
+ }
156
+
157
+ export { mountAgent2, describeToolCatalog2, buildToolManifest2 };
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  AppError2
3
- } from "./index-x928baz2.js";
3
+ } from "./index-j9gxbztg.js";
4
4
  import {
5
5
  validateDeclaredOutput
6
- } from "./index-kb8styz3.js";
6
+ } from "./index-rpzewktb.js";
7
7
  import {
8
8
  toJsonSchema
9
9
  } from "./index-ct75c3at.js";
@@ -324,8 +324,8 @@ function describeVariants(properties, discriminator) {
324
324
  }
325
325
  return [...groups].map(([description, labels]) => ({
326
326
  description,
327
- labels: [...new Set(labels)].sort().join(" | ")
328
- })).sort((left, right) => left.labels < right.labels ? -1 : left.labels > right.labels ? 1 : 0).map(({ description, labels }) => `When ${discriminator} = ${labels}: ${description}`).join(" ");
327
+ labels: [...new Set(labels)].join(" | ")
328
+ })).map(({ description, labels }) => `When ${discriminator} = ${labels}: ${description}`).join(" ");
329
329
  }
330
330
  function mergePropertySchemas(properties, discriminator) {
331
331
  const schemas = properties.map((property) => nullableProjection(property.schema));
@@ -337,7 +337,7 @@ function mergePropertySchemas(properties, discriminator) {
337
337
  } else {
338
338
  const values = schemas.map(stringValues);
339
339
  const allStrings = values.every((value) => value !== null);
340
- merged = allStrings ? { type: "string", enum: [...new Set(values.flatMap((value) => value ?? []))].sort() } : commonBaseType(structural);
340
+ merged = allStrings ? { type: "string", enum: [...new Set(values.flatMap((value) => value ?? []))] } : commonBaseType(structural);
341
341
  }
342
342
  const description = describeVariants(properties.map((property, index) => ({
343
343
  ...property,
@@ -457,7 +457,7 @@ function flattenNode(node) {
457
457
  [discriminator.key]: mergePropertySchemas(discriminatorProperties, discriminator.key)
458
458
  };
459
459
  const required = [discriminator.key];
460
- for (const [key, entries] of [...perKey].sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0)) {
460
+ for (const [key, entries] of perKey) {
461
461
  let merged = mergePropertySchemas(entries, discriminator.key);
462
462
  const requiredEverywhere = entries.length === variants.length && entries.every((entry) => entry.required);
463
463
  if (requiredEverywhere) {
@@ -465,9 +465,9 @@ function flattenNode(node) {
465
465
  } else {
466
466
  const requiredLabels = entries.filter((entry) => entry.required).flatMap((entry) => entry.labels);
467
467
  const presentLabels = entries.flatMap((entry) => entry.labels);
468
- merged = appendHint(merged, `Available if ${discriminator.key} = ${[...new Set(presentLabels)].sort().join(" | ")}.`);
468
+ merged = appendHint(merged, `Available if ${discriminator.key} = ${[...new Set(presentLabels)].join(" | ")}.`);
469
469
  if (requiredLabels.length > 0) {
470
- merged = appendHint(merged, `Required if ${discriminator.key} = ${[...new Set(requiredLabels)].sort().join(" | ")}`);
470
+ merged = appendHint(merged, `Required if ${discriminator.key} = ${[...new Set(requiredLabels)].join(" | ")}`);
471
471
  }
472
472
  }
473
473
  properties[key] = merged;
@@ -597,7 +597,10 @@ function projectToolView(options) {
597
597
  try {
598
598
  projected = Reflect.apply(view.project, undefined, [options.full, options.call]);
599
599
  } catch (error) {
600
- const failure = new AppError2("INTERNAL_SERVER_ERROR", `${options.operation} toolView.project threw`, 500);
600
+ const failure = new AppError2("INTERNAL_SERVER_ERROR", {
601
+ message: `${options.operation} toolView.project threw`,
602
+ status: 500
603
+ });
601
604
  failure.cause = error;
602
605
  throw failure;
603
606
  }
@@ -605,7 +608,10 @@ function projectToolView(options) {
605
608
  Promise.resolve(projected).catch(() => {
606
609
  return;
607
610
  });
608
- throw new AppError2("INTERNAL_SERVER_ERROR", `${options.operation} toolView.project returned a Promise — it must be synchronous`, 500);
611
+ throw new AppError2("INTERNAL_SERVER_ERROR", {
612
+ message: `${options.operation} toolView.project returned a Promise — it must be synchronous`,
613
+ status: 500
614
+ });
609
615
  }
610
616
  if (projected === undefined) {
611
617
  return {
@@ -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
  zodIssues2,
6
6
  formatZodError2
@@ -31,18 +31,28 @@ function recordedErrorMessage(code, envelopeMessage, thrown) {
31
31
  function normalizeError2(err, options = {}) {
32
32
  if (AppError2.is(err)) {
33
33
  if (err.code === "REALTIME_CONTRACT_VIOLATION") {
34
- return new AppError2("REALTIME_CONTRACT_VIOLATION", "Realtime contract violation", 500);
34
+ return new AppError2("REALTIME_CONTRACT_VIOLATION", {
35
+ message: "Realtime contract violation",
36
+ status: 500
37
+ });
35
38
  }
36
39
  return err;
37
40
  }
38
41
  if (err instanceof z.ZodError) {
39
- return new AppError2("VALIDATION_ERROR", formatZodError2(err), 400, {
40
- issues: zodIssues2(err).slice(0, MAX_DETAIL_ISSUES)
42
+ return new AppError2("VALIDATION_ERROR", {
43
+ message: formatZodError2(err),
44
+ status: 400,
45
+ details: {
46
+ issues: zodIssues2(err).slice(0, MAX_DETAIL_ISSUES)
47
+ }
41
48
  });
42
49
  }
43
50
  if (options.logUnexpected !== false)
44
51
  console.error("[stitchkit] unhandled error:", err);
45
- return new AppError2("INTERNAL_SERVER_ERROR", "Internal server error", 500);
52
+ return new AppError2("INTERNAL_SERVER_ERROR", {
53
+ message: "Internal server error",
54
+ status: 500
55
+ });
46
56
  }
47
57
  function strippedPaths(before, after, prefix) {
48
58
  if (Array.isArray(before)) {
@@ -2,7 +2,7 @@ import {
2
2
  parseRealtimeRequestArguments,
3
3
  parseRealtimeRequestAcknowledgement,
4
4
  createValidatedRealtimeSocket
5
- } from "./index-43p08g7t.js";
5
+ } from "./index-pzb63z66.js";
6
6
  import {
7
7
  randomHex
8
8
  } from "./index-c9d05kvt.js";