stitchkit 0.94.0 → 0.94.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/dist/agent-runtime/coding-shell-process.d.ts.map +1 -1
  3. package/dist/agent-runtime/coding-tool-listing.d.ts.map +1 -1
  4. package/dist/agent-runtime/coding-tool-search-patch.d.ts.map +1 -1
  5. package/dist/agent-runtime/contained-darwin.d.ts +38 -0
  6. package/dist/agent-runtime/contained-darwin.d.ts.map +1 -0
  7. package/dist/agent-runtime/contained-files.d.ts +11 -26
  8. package/dist/agent-runtime/contained-files.d.ts.map +1 -1
  9. package/dist/agent-runtime/contained-scan.d.ts +21 -0
  10. package/dist/agent-runtime/contained-scan.d.ts.map +1 -0
  11. package/dist/agent-runtime/contained-write.d.ts +9 -0
  12. package/dist/agent-runtime/contained-write.d.ts.map +1 -0
  13. package/dist/agent-runtime/deferred-tool-types.d.ts +3 -2
  14. package/dist/agent-runtime/deferred-tool-types.d.ts.map +1 -1
  15. package/dist/agent-runtime/harness-control.d.ts +0 -1
  16. package/dist/agent-runtime/harness-control.d.ts.map +1 -1
  17. package/dist/agent-runtime/harness.d.ts +0 -5
  18. package/dist/agent-runtime/harness.d.ts.map +1 -1
  19. package/dist/agent-runtime/managed-tools.d.ts +3 -2
  20. package/dist/agent-runtime/managed-tools.d.ts.map +1 -1
  21. package/dist/agent-runtime/runtime.d.ts +1 -1
  22. package/dist/agent-runtime/runtime.d.ts.map +1 -1
  23. package/dist/agent-runtime/schedule-records.d.ts +34 -0
  24. package/dist/agent-runtime/schedule-records.d.ts.map +1 -0
  25. package/dist/agent-runtime/schedules.d.ts +34 -0
  26. package/dist/agent-runtime/schedules.d.ts.map +1 -1
  27. package/dist/agent-runtime/store-conformance-lifecycle.d.ts +434 -0
  28. package/dist/agent-runtime/store-conformance-lifecycle.d.ts.map +1 -0
  29. package/dist/agent-runtime/store-conformance-ordering.d.ts +18 -0
  30. package/dist/agent-runtime/store-conformance-ordering.d.ts.map +1 -0
  31. package/dist/agent-runtime/store-conformance-support.d.ts +130 -0
  32. package/dist/agent-runtime/store-conformance-support.d.ts.map +1 -0
  33. package/dist/agent-runtime/store-conformance-terminal.d.ts +12 -0
  34. package/dist/agent-runtime/store-conformance-terminal.d.ts.map +1 -0
  35. package/dist/agent-runtime/store-conformance.d.ts.map +1 -1
  36. package/dist/application/admission-rate.d.ts +21 -0
  37. package/dist/application/admission-rate.d.ts.map +1 -0
  38. package/dist/application/admission-run.d.ts +8 -0
  39. package/dist/application/admission-run.d.ts.map +1 -0
  40. package/dist/application/admission.d.ts.map +1 -1
  41. package/dist/application/diagnostic-journal-lock.d.ts +9 -34
  42. package/dist/application/diagnostic-journal-lock.d.ts.map +1 -1
  43. package/dist/application/diagnostic-journal-manager.d.ts.map +1 -1
  44. package/dist/application/diagnostic-journal-storage.d.ts.map +1 -1
  45. package/dist/application/kernel-resource-context.d.ts.map +1 -1
  46. package/dist/application/notification-outbox.d.ts.map +1 -1
  47. package/dist/application/schedule.d.ts +0 -1
  48. package/dist/application/schedule.d.ts.map +1 -1
  49. package/dist/application/watch-hub-core.d.ts +122 -0
  50. package/dist/application/watch-hub-core.d.ts.map +1 -0
  51. package/dist/application/watch-hub.d.ts +2 -2
  52. package/dist/application/watch-hub.d.ts.map +1 -1
  53. package/dist/browser/client-executors.d.ts +14 -0
  54. package/dist/browser/client-executors.d.ts.map +1 -0
  55. package/dist/browser/client-multipart.d.ts +1 -1
  56. package/dist/browser/client-multipart.d.ts.map +1 -1
  57. package/dist/browser/client.d.ts +3 -2
  58. package/dist/browser/client.d.ts.map +1 -1
  59. package/dist/browser/http-fetch.d.ts +22 -0
  60. package/dist/browser/http-fetch.d.ts.map +1 -0
  61. package/dist/browser/http.d.ts +1 -3
  62. package/dist/browser/http.d.ts.map +1 -1
  63. package/dist/browser/live-state-core.d.ts +63 -0
  64. package/dist/browser/live-state-core.d.ts.map +1 -0
  65. package/dist/browser/live-state.d.ts.map +1 -1
  66. package/dist/browser/realtime-client.d.ts +26 -0
  67. package/dist/browser/realtime-client.d.ts.map +1 -0
  68. package/dist/browser/socket-io-connection.d.ts +82 -0
  69. package/dist/browser/socket-io-connection.d.ts.map +1 -0
  70. package/dist/browser/socket-io-peer.d.ts +20 -0
  71. package/dist/browser/socket-io-peer.d.ts.map +1 -0
  72. package/dist/browser/socket-io-trace.d.ts +31 -0
  73. package/dist/browser/socket-io-trace.d.ts.map +1 -0
  74. package/dist/browser/socket-io.d.ts +2 -18
  75. package/dist/browser/socket-io.d.ts.map +1 -1
  76. package/dist/contract/client-types.d.ts +134 -0
  77. package/dist/contract/client-types.d.ts.map +1 -0
  78. package/dist/contract/define-validation.d.ts +30 -0
  79. package/dist/contract/define-validation.d.ts.map +1 -0
  80. package/dist/contract/define.d.ts +3 -357
  81. package/dist/contract/define.d.ts.map +1 -1
  82. package/dist/contract/runtime-context.d.ts +131 -0
  83. package/dist/contract/runtime-context.d.ts.map +1 -0
  84. package/dist/contract/tool-options.d.ts +105 -0
  85. package/dist/contract/tool-options.d.ts.map +1 -0
  86. package/dist/contract/tool-view.d.ts +15 -2
  87. package/dist/contract/tool-view.d.ts.map +1 -1
  88. package/dist/durability/contract.d.ts +83 -0
  89. package/dist/durability/contract.d.ts.map +1 -1
  90. package/dist/durability/effect.d.ts +24 -0
  91. package/dist/durability/effect.d.ts.map +1 -0
  92. package/dist/durability/engine.d.ts +2 -2
  93. package/dist/durability/engine.d.ts.map +1 -1
  94. package/dist/durability/events.d.ts +2 -0
  95. package/dist/durability/events.d.ts.map +1 -1
  96. package/dist/durability/ledger.d.ts +11 -0
  97. package/dist/durability/ledger.d.ts.map +1 -1
  98. package/dist/durability/parks.d.ts +22 -0
  99. package/dist/durability/parks.d.ts.map +1 -0
  100. package/dist/durability/scheduler.d.ts +1 -0
  101. package/dist/durability/scheduler.d.ts.map +1 -1
  102. package/dist/entrypoints/agent-runtime/coding-tools.js +4 -4
  103. package/dist/entrypoints/agent-runtime/harness.js +127 -116
  104. package/dist/entrypoints/agent-runtime/sandbox.js +4 -4
  105. package/dist/entrypoints/agent-runtime/sqlite/bun.js +3 -3
  106. package/dist/entrypoints/agent-runtime/sqlite/node.js +3 -3
  107. package/dist/entrypoints/agent-runtime/testing.js +246 -214
  108. package/dist/entrypoints/agent-runtime.js +224 -203
  109. package/dist/entrypoints/application/diagnostic-journal.js +63 -203
  110. package/dist/entrypoints/application/opentelemetry.js +1 -1
  111. package/dist/entrypoints/application.js +361 -324
  112. package/dist/entrypoints/cli.d.ts +4 -1
  113. package/dist/entrypoints/cli.d.ts.map +1 -1
  114. package/dist/entrypoints/cli.js +57 -35
  115. package/dist/entrypoints/contract.d.ts +5 -2
  116. package/dist/entrypoints/contract.d.ts.map +1 -1
  117. package/dist/entrypoints/contract.js +3 -2
  118. package/dist/entrypoints/files.d.ts +2 -0
  119. package/dist/entrypoints/files.d.ts.map +1 -1
  120. package/dist/entrypoints/files.js +98 -2
  121. package/dist/entrypoints/index.d.ts +4 -2
  122. package/dist/entrypoints/index.d.ts.map +1 -1
  123. package/dist/entrypoints/index.js +348 -282
  124. package/dist/entrypoints/live.js +89 -71
  125. package/dist/entrypoints/node.d.ts +2 -1
  126. package/dist/entrypoints/node.d.ts.map +1 -1
  127. package/dist/entrypoints/node.js +13 -12
  128. package/dist/entrypoints/react.js +1 -1
  129. package/dist/entrypoints/remote.js +4 -4
  130. package/dist/entrypoints/server.d.ts +4 -2
  131. package/dist/entrypoints/server.d.ts.map +1 -1
  132. package/dist/entrypoints/server.js +293 -79
  133. package/dist/entrypoints/testing.d.ts +2 -1
  134. package/dist/entrypoints/testing.d.ts.map +1 -1
  135. package/dist/entrypoints/testing.js +288 -281
  136. package/dist/entrypoints/tools/connections.js +2 -2
  137. package/dist/entrypoints/tools/invoker.js +4 -4
  138. package/dist/entrypoints/tools.d.ts +6 -3
  139. package/dist/entrypoints/tools.d.ts.map +1 -1
  140. package/dist/entrypoints/tools.js +245 -202
  141. package/dist/entrypoints/tracking.js +325 -274
  142. package/dist/files/boundary.d.ts.map +1 -1
  143. package/dist/files/file-io.d.ts +14 -0
  144. package/dist/files/file-io.d.ts.map +1 -0
  145. package/dist/index-1j8pm5t0.js +412 -0
  146. package/dist/{index-kvj7f4hq.js → index-2bxbyab0.js} +10 -2
  147. package/dist/{index-xnj9bgxe.js → index-2gxzjvyr.js} +2 -162
  148. package/dist/index-4gcnakhx.js +82 -0
  149. package/dist/{index-j05z5gn4.js → index-55hkhm67.js} +136 -119
  150. package/dist/{index-cq4qfycf.js → index-79z7m7dt.js} +227 -59
  151. package/dist/{index-97ac4gph.js → index-7f68ghdn.js} +3 -3
  152. package/dist/{index-r7nmqpsg.js → index-7p1f0vp2.js} +1 -1
  153. package/dist/{index-dcpdvjsc.js → index-863ea9jb.js} +4 -4
  154. package/dist/index-8p52kd5p.js +242 -0
  155. package/dist/{index-2qzskm8h.js → index-dce5wxcq.js} +1 -1
  156. package/dist/index-e01r054k.js +105 -0
  157. package/dist/{index-sees8yf8.js → index-ensd0r74.js} +118 -111
  158. package/dist/{index-1nd48tm9.js → index-gxrt5h6v.js} +2 -1
  159. package/dist/{index-e87kakm4.js → index-ham5sz8m.js} +112 -110
  160. package/dist/{index-kj2wbeta.js → index-het2he5g.js} +280 -196
  161. package/dist/{index-vcvkq30w.js → index-hmp4800j.js} +3 -3
  162. package/dist/{index-gyr48nzg.js → index-k30h66yd.js} +71 -151
  163. package/dist/{index-2cr1cqhn.js → index-khtgb21r.js} +2 -2
  164. package/dist/{index-x4799c19.js → index-ndddxtyx.js} +11 -11
  165. package/dist/{index-dydjcp8z.js → index-np4m8hd3.js} +38 -36
  166. package/dist/{index-p81267c2.js → index-p3vsv1fb.js} +621 -357
  167. package/dist/{index-mp5sn43f.js → index-p9e0w8hs.js} +2 -2
  168. package/dist/{index-rewkc2hj.js → index-p9sh0xx4.js} +3 -3
  169. package/dist/{index-70yj2ebz.js → index-paz6sgdp.js} +107 -103
  170. package/dist/{index-bn2cjajt.js → index-px2gm2jp.js} +26 -102
  171. package/dist/index-s812ycat.js +65 -0
  172. package/dist/{index-xsqjkha9.js → index-sp1tzwnb.js} +2 -2
  173. package/dist/{index-n6hxg8as.js → index-t9rhjr9f.js} +615 -566
  174. package/dist/{index-zeemqhqx.js → index-v260df89.js} +88 -80
  175. package/dist/{index-fdp6hdxn.js → index-w906953s.js} +5 -1
  176. package/dist/{index-mdzh02yc.js → index-wdkt63w3.js} +1 -1
  177. package/dist/{index-58k4fp34.js → index-wsm5w4ee.js} +1 -1
  178. package/dist/{index-v38qyerb.js → index-xw3s75nj.js} +1 -1
  179. package/dist/internal/atomic-file.d.ts +23 -2
  180. package/dist/internal/atomic-file.d.ts.map +1 -1
  181. package/dist/internal/exclusive-lock.d.ts +51 -0
  182. package/dist/internal/exclusive-lock.d.ts.map +1 -0
  183. package/dist/internal/process-identity.d.ts +47 -0
  184. package/dist/internal/process-identity.d.ts.map +1 -0
  185. package/dist/internal/with-exclusive-lock.d.ts +67 -0
  186. package/dist/internal/with-exclusive-lock.d.ts.map +1 -0
  187. package/dist/live/watch-client.d.ts.map +1 -1
  188. package/dist/observability/audit.d.ts +2 -2
  189. package/dist/observability/audit.d.ts.map +1 -1
  190. package/dist/observability/event.d.ts +2 -1
  191. package/dist/observability/event.d.ts.map +1 -1
  192. package/dist/primitives/export-operation.d.ts +1 -1
  193. package/dist/primitives/export-operation.d.ts.map +1 -1
  194. package/dist/realtime/registry.d.ts +0 -5
  195. package/dist/realtime/registry.d.ts.map +1 -1
  196. package/dist/server/bun.d.ts +0 -1
  197. package/dist/server/bun.d.ts.map +1 -1
  198. package/dist/server/context-contribution.d.ts +1 -1
  199. package/dist/server/context-contribution.d.ts.map +1 -1
  200. package/dist/server/context.d.ts +1 -1
  201. package/dist/server/context.d.ts.map +1 -1
  202. package/dist/server/endpoint-response.d.ts +2 -1
  203. package/dist/server/endpoint-response.d.ts.map +1 -1
  204. package/dist/server/error-dispatch.d.ts +1 -1
  205. package/dist/server/error-dispatch.d.ts.map +1 -1
  206. package/dist/server/error-hook.d.ts +1 -1
  207. package/dist/server/error-hook.d.ts.map +1 -1
  208. package/dist/server/handler-state.d.ts +1 -1
  209. package/dist/server/handler-state.d.ts.map +1 -1
  210. package/dist/server/implement-registry.d.ts +54 -0
  211. package/dist/server/implement-registry.d.ts.map +1 -0
  212. package/dist/server/implement.d.ts +9 -55
  213. package/dist/server/implement.d.ts.map +1 -1
  214. package/dist/server/middleware/auth.d.ts +1 -31
  215. package/dist/server/middleware/auth.d.ts.map +1 -1
  216. package/dist/server/middleware/jwt.d.ts +31 -0
  217. package/dist/server/middleware/jwt.d.ts.map +1 -0
  218. package/dist/server/multipart-reader.d.ts +22 -0
  219. package/dist/server/multipart-reader.d.ts.map +1 -0
  220. package/dist/server/multipart.d.ts +1 -1
  221. package/dist/server/multipart.d.ts.map +1 -1
  222. package/dist/server/oauth/cimd.d.ts +88 -0
  223. package/dist/server/oauth/cimd.d.ts.map +1 -0
  224. package/dist/server/oauth/endpoints.d.ts +39 -0
  225. package/dist/server/oauth/endpoints.d.ts.map +1 -0
  226. package/dist/server/oauth/provider.d.ts +1 -68
  227. package/dist/server/oauth/provider.d.ts.map +1 -1
  228. package/dist/server/streaming-pump.d.ts +66 -0
  229. package/dist/server/streaming-pump.d.ts.map +1 -0
  230. package/dist/server/streaming-route.d.ts +12 -5
  231. package/dist/server/streaming-route.d.ts.map +1 -1
  232. package/dist/server/types.d.ts +4 -1
  233. package/dist/server/types.d.ts.map +1 -1
  234. package/dist/server/unix-client-bun.d.ts.map +1 -1
  235. package/dist/server/unix-client-http1.d.ts +76 -0
  236. package/dist/server/unix-client-http1.d.ts.map +1 -0
  237. package/dist/server/unix-client.d.ts.map +1 -1
  238. package/dist/testing/handler-clients.d.ts +2 -1
  239. package/dist/testing/handler-clients.d.ts.map +1 -1
  240. package/dist/testing/realtime-probe.d.ts +33 -0
  241. package/dist/testing/realtime-probe.d.ts.map +1 -0
  242. package/dist/testing/surface-conformance.d.ts +0 -31
  243. package/dist/testing/surface-conformance.d.ts.map +1 -1
  244. package/dist/testing/surface-manifest-digest.d.ts +44 -0
  245. package/dist/testing/surface-manifest-digest.d.ts.map +1 -0
  246. package/dist/testing/surface-manifest.d.ts.map +1 -1
  247. package/dist/tools/agent.d.ts +1 -1
  248. package/dist/tools/agent.d.ts.map +1 -1
  249. package/dist/tools/cli/args-fields.d.ts +31 -0
  250. package/dist/tools/cli/args-fields.d.ts.map +1 -0
  251. package/dist/tools/cli/args-route.d.ts +42 -0
  252. package/dist/tools/cli/args-route.d.ts.map +1 -0
  253. package/dist/tools/cli/args-view.d.ts +32 -0
  254. package/dist/tools/cli/args-view.d.ts.map +1 -0
  255. package/dist/tools/cli/args.d.ts +2 -65
  256. package/dist/tools/cli/args.d.ts.map +1 -1
  257. package/dist/tools/cli/argument-error.d.ts +5 -0
  258. package/dist/tools/cli/argument-error.d.ts.map +1 -0
  259. package/dist/tools/cli/checkpoint.d.ts.map +1 -1
  260. package/dist/tools/cli/command.d.ts +1 -1
  261. package/dist/tools/cli/command.d.ts.map +1 -1
  262. package/dist/tools/cli/config.d.ts +1 -1
  263. package/dist/tools/cli/config.d.ts.map +1 -1
  264. package/dist/tools/cli/format.d.ts +2 -1
  265. package/dist/tools/cli/format.d.ts.map +1 -1
  266. package/dist/tools/cli/invoke.d.ts +2 -1
  267. package/dist/tools/cli/invoke.d.ts.map +1 -1
  268. package/dist/tools/cli/managed-surface.d.ts +1 -1
  269. package/dist/tools/cli/managed-surface.d.ts.map +1 -1
  270. package/dist/tools/cli/policy.d.ts +1 -1
  271. package/dist/tools/cli/policy.d.ts.map +1 -1
  272. package/dist/tools/cli/prepare.d.ts.map +1 -1
  273. package/dist/tools/cli/run-managed.d.ts.map +1 -1
  274. package/dist/tools/cli/session.d.ts +1 -1
  275. package/dist/tools/cli/session.d.ts.map +1 -1
  276. package/dist/tools/cli/update.d.ts +19 -0
  277. package/dist/tools/cli/update.d.ts.map +1 -1
  278. package/dist/tools/cli/view.d.ts +1 -1
  279. package/dist/tools/cli/view.d.ts.map +1 -1
  280. package/dist/tools/cli/wait.d.ts +1 -1
  281. package/dist/tools/cli/wait.d.ts.map +1 -1
  282. package/dist/tools/connections/runtime.d.ts +1 -1
  283. package/dist/tools/connections/runtime.d.ts.map +1 -1
  284. package/dist/tools/execute-args.d.ts +23 -0
  285. package/dist/tools/execute-args.d.ts.map +1 -0
  286. package/dist/tools/execute-hooks.d.ts +146 -0
  287. package/dist/tools/execute-hooks.d.ts.map +1 -0
  288. package/dist/tools/execute-result.d.ts +40 -0
  289. package/dist/tools/execute-result.d.ts.map +1 -0
  290. package/dist/tools/execute.d.ts +4 -193
  291. package/dist/tools/execute.d.ts.map +1 -1
  292. package/dist/tools/internal/surface-projector.d.ts +2 -1
  293. package/dist/tools/internal/surface-projector.d.ts.map +1 -1
  294. package/dist/tools/invoker.d.ts +2 -1
  295. package/dist/tools/invoker.d.ts.map +1 -1
  296. package/dist/tools/lifecycle.d.ts +1 -1
  297. package/dist/tools/lifecycle.d.ts.map +1 -1
  298. package/dist/tools/mcp/mount.d.ts +1 -1
  299. package/dist/tools/mcp/mount.d.ts.map +1 -1
  300. package/dist/tools/mcp/prepare.d.ts +2 -1
  301. package/dist/tools/mcp/prepare.d.ts.map +1 -1
  302. package/dist/tools/mcp/progress.d.ts +1 -1
  303. package/dist/tools/mcp/progress.d.ts.map +1 -1
  304. package/dist/tools/mcp/register.d.ts +3 -2
  305. package/dist/tools/mcp/register.d.ts.map +1 -1
  306. package/dist/tools/mcp/round-context.d.ts +38 -0
  307. package/dist/tools/mcp/round-context.d.ts.map +1 -0
  308. package/dist/tools/mcp/round-policy.d.ts +1 -1
  309. package/dist/tools/mcp/round-policy.d.ts.map +1 -1
  310. package/dist/tools/mcp/round.d.ts +3 -11
  311. package/dist/tools/mcp/round.d.ts.map +1 -1
  312. package/dist/tools/mcp/runtime-tools.d.ts +2 -1
  313. package/dist/tools/mcp/runtime-tools.d.ts.map +1 -1
  314. package/dist/tools/mount.d.ts +3 -1
  315. package/dist/tools/mount.d.ts.map +1 -1
  316. package/dist/tools/native-definition.d.ts +2 -1
  317. package/dist/tools/native-definition.d.ts.map +1 -1
  318. package/dist/tools/operations/async-operation-runtime-tools.d.ts +2 -1
  319. package/dist/tools/operations/async-operation-runtime-tools.d.ts.map +1 -1
  320. package/dist/tools/operations/async-operation-runtime-types.d.ts +2 -1
  321. package/dist/tools/operations/async-operation-runtime-types.d.ts.map +1 -1
  322. package/dist/tools/remote.d.ts.map +1 -1
  323. package/dist/tools/runtime-tool.d.ts +3 -1
  324. package/dist/tools/runtime-tool.d.ts.map +1 -1
  325. package/dist/tools/tool-logger.d.ts +1 -1
  326. package/dist/tools/tool-logger.d.ts.map +1 -1
  327. package/dist/tracking/client-listeners.d.ts +30 -0
  328. package/dist/tracking/client-listeners.d.ts.map +1 -0
  329. package/dist/tracking/client-visit.d.ts +61 -0
  330. package/dist/tracking/client-visit.d.ts.map +1 -0
  331. package/dist/tracking/client.d.ts +3 -2
  332. package/dist/tracking/client.d.ts.map +1 -1
  333. package/llms/application.2.txt +266 -2
  334. package/llms/application.txt +8 -266
  335. package/llms/cli.2.txt +80 -0
  336. package/llms/cli.txt +45 -74
  337. package/llms/contract.txt +3 -3
  338. package/llms/files.txt +3 -0
  339. package/llms/tools.2.txt +88 -279
  340. package/llms/tools.3.txt +288 -0
  341. package/llms/tools.txt +27 -65
  342. package/llms-full.txt +108 -12
  343. package/llms.txt +5 -5
  344. package/package.json +1 -1
  345. package/dist/index-e2z3ahw9.js +0 -325
  346. package/dist/index-mkm15s49.js +0 -394
@@ -0,0 +1,82 @@
1
+ import {
2
+ isUnsafeKey
3
+ } from "./index-kzfs85xp.js";
4
+
5
+ // src/internal/route-pattern.ts
6
+ import { z } from "zod";
7
+ var PARAM_IDENTIFIER = /^[A-Za-z_][A-Za-z0-9_]*$/;
8
+ function joinRoutePath(...parts) {
9
+ const joined = parts.filter((part) => Boolean(part)).map((part) => part.replace(/^\/+|\/+$/g, "")).filter(Boolean).join("/");
10
+ return `/${joined}`;
11
+ }
12
+ function parseRoutePattern(path) {
13
+ const segments = path.split("/").filter(Boolean);
14
+ const parameters = [];
15
+ const names = new Set;
16
+ for (const [segmentIndex, segment] of segments.entries()) {
17
+ const marker = segment.at(0);
18
+ if (marker !== ":" && marker !== "*") {
19
+ if (segment.includes("*")) {
20
+ throw new Error(`Wildcard must occupy its own segment in path "${path}"`);
21
+ }
22
+ continue;
23
+ }
24
+ const name = segment.slice(1);
25
+ if (marker === "*" && name === "") {
26
+ throw new Error(`Trailing wildcard in path "${path}" must be named, for example "/*filePath"`);
27
+ }
28
+ if (!PARAM_IDENTIFIER.test(name) || isUnsafeKey(name)) {
29
+ const label = marker === "*" ? "wildcard" : "route parameter";
30
+ throw new Error(`Invalid ${label} name "${name}" in path "${path}"`);
31
+ }
32
+ if (names.has(name)) {
33
+ throw new Error(`Duplicate route parameter name "${name}" in path "${path}"`);
34
+ }
35
+ if (marker === "*" && segmentIndex !== segments.length - 1) {
36
+ throw new Error(`Wildcard "*${name}" must be the final segment in path "${path}"`);
37
+ }
38
+ names.add(name);
39
+ parameters.push({
40
+ name,
41
+ kind: marker === "*" ? "wildcard" : "segment",
42
+ segmentIndex
43
+ });
44
+ }
45
+ return parameters;
46
+ }
47
+ function resolveRouteParamsSchema(path, schema) {
48
+ const parameters = parseRoutePattern(path);
49
+ if (parameters.length === 0)
50
+ return schema;
51
+ if (!schema) {
52
+ const shape = {};
53
+ for (const parameter of parameters)
54
+ shape[parameter.name] = z.string();
55
+ return z.object(shape);
56
+ }
57
+ const jsonSchema = z.toJSONSchema(schema, { io: "input", unrepresentable: "any" });
58
+ const properties = jsonSchema.properties;
59
+ if (!properties) {
60
+ throw new Error(`Route params schema for path "${path}" must be an object schema with a property per path field`);
61
+ }
62
+ for (const parameter of parameters) {
63
+ if (!(parameter.name in properties)) {
64
+ const kind = parameter.kind === "wildcard" ? "wildcard" : "path";
65
+ throw new Error(`Route params schema for path "${path}" is missing ${kind} field "${parameter.name}"`);
66
+ }
67
+ }
68
+ const names = new Set(parameters.map((parameter) => parameter.name));
69
+ const required = Array.isArray(jsonSchema.required) ? jsonSchema.required : [];
70
+ for (const field of required) {
71
+ if (typeof field === "string" && !names.has(field)) {
72
+ throw new Error(`Route params schema for path "${path}" requires field "${field}" that the path does not carry`);
73
+ }
74
+ }
75
+ return schema;
76
+ }
77
+ function parseTrailingWildcard(path) {
78
+ const wildcard = parseRoutePattern(path).find((parameter) => parameter.kind === "wildcard");
79
+ return wildcard ? { name: wildcard.name, segmentIndex: wildcard.segmentIndex } : null;
80
+ }
81
+
82
+ export { joinRoutePath, resolveRouteParamsSchema, parseTrailingWildcard };
@@ -9,7 +9,7 @@ import {
9
9
  applyToolViewDefaults,
10
10
  objectShapeKeys,
11
11
  projectToolView
12
- } from "./index-dydjcp8z.js";
12
+ } from "./index-np4m8hd3.js";
13
13
  import {
14
14
  normalizeError,
15
15
  validateDeclaredOutput
@@ -30,25 +30,7 @@ import {
30
30
  isRecord
31
31
  } from "./index-hffjpmq9.js";
32
32
 
33
- // src/tools/execute.ts
34
- class ToolExecutionControlError extends Error {
35
- reason;
36
- constructor(reason) {
37
- super(`Agent tool execution stopped: ${reason}`);
38
- this.name = "ToolExecutionControlError";
39
- this.reason = reason;
40
- }
41
- }
42
- function isPlainObject(value) {
43
- if (!isRecord(value))
44
- return false;
45
- const proto = Object.getPrototypeOf(value);
46
- return proto === Object.prototype || proto === null;
47
- }
48
- function isToolExecutionControlError(value) {
49
- return value instanceof ToolExecutionControlError;
50
- }
51
- var normalizedToolErrors = new WeakMap;
33
+ // src/tools/execute-args.ts
52
34
  function parseToolCallArguments(method, callArgs, {
53
35
  coerceJson = false,
54
36
  toolSurface = false
@@ -98,9 +80,9 @@ function parseToolCallArguments(method, callArgs, {
98
80
  }
99
81
  return { ok: true, params, input };
100
82
  }
101
- var noProgress = async () => {
102
- return;
103
- };
83
+
84
+ // src/tools/execute-result.ts
85
+ var normalizedToolErrors = new WeakMap;
104
86
  function toolResultFromError(err) {
105
87
  const appErr = normalizeError(err);
106
88
  const result = {
@@ -125,6 +107,28 @@ function toolErrorFromResult(result) {
125
107
  function toolCauseFromResult(result) {
126
108
  return normalizedToolErrors.get(result)?.cause;
127
109
  }
110
+
111
+ // src/tools/execute.ts
112
+ class ToolExecutionControlError extends Error {
113
+ reason;
114
+ constructor(reason) {
115
+ super(`Agent tool execution stopped: ${reason}`);
116
+ this.name = "ToolExecutionControlError";
117
+ this.reason = reason;
118
+ }
119
+ }
120
+ function isPlainObject(value) {
121
+ if (!isRecord(value))
122
+ return false;
123
+ const proto = Object.getPrototypeOf(value);
124
+ return proto === Object.prototype || proto === null;
125
+ }
126
+ function isToolExecutionControlError(value) {
127
+ return value instanceof ToolExecutionControlError;
128
+ }
129
+ var noProgress = async () => {
130
+ return;
131
+ };
128
132
  async function executeToolMethod(method, call, options = {}) {
129
133
  const { toolName, context } = call;
130
134
  return inToolCallContext({ source: context.source, toolName, method }, () => runToolMethod(method, call, options));
@@ -145,6 +149,88 @@ function inToolCallContext(call, body) {
145
149
  action: call.method.key
146
150
  }, body);
147
151
  }
152
+ async function invokeToolHandler(method, ctx, input, source, {
153
+ lifecycle,
154
+ onOutputStrip,
155
+ finalizeOutput,
156
+ toolSurface
157
+ }) {
158
+ if (lifecycle?.beforeHandle) {
159
+ await lifecycle.beforeHandle(ctx, method);
160
+ }
161
+ let data = await method.handler(ctx);
162
+ if (lifecycle?.afterHandle) {
163
+ const transformed = await lifecycle.afterHandle(ctx, data, method);
164
+ if (transformed !== undefined)
165
+ data = transformed;
166
+ }
167
+ const checked = validateDeclaredOutput(method.outputSchema, data, onOutputStrip);
168
+ if (!checked.ok) {
169
+ return {
170
+ ok: false,
171
+ code: "INTERNAL_SERVER_ERROR",
172
+ details: { message: checked.message }
173
+ };
174
+ }
175
+ data = checked.data;
176
+ if (toolSurface && method.toolView && method.outputSchema) {
177
+ const viewed = projectToolView({
178
+ view: method.toolView,
179
+ fullSchema: method.outputSchema,
180
+ full: data,
181
+ call: { input, source },
182
+ operation: `${method.serviceName}.${method.key}`,
183
+ onStripped: onOutputStrip
184
+ });
185
+ if (!viewed.ok) {
186
+ return {
187
+ ok: false,
188
+ code: "INTERNAL_SERVER_ERROR",
189
+ details: { message: viewed.message }
190
+ };
191
+ }
192
+ data = viewed.data;
193
+ }
194
+ if (finalizeOutput)
195
+ data = await finalizeOutput(data);
196
+ const output = (data === undefined || data === null) && !method.outputSchema ? { status: "ok" } : data;
197
+ return { ok: true, data: output };
198
+ }
199
+ async function resolveToolExtension(extension, keys, rawArgs, context) {
200
+ const extensionArgs = Object.fromEntries(Object.entries(rawArgs).filter(([key]) => keys.has(key)));
201
+ let parsed;
202
+ try {
203
+ parsed = extension.schema.safeParse(extensionArgs);
204
+ } catch (err) {
205
+ return { thrown: err };
206
+ }
207
+ if (!parsed.success)
208
+ return { invalid: formatZodError(parsed.error) };
209
+ try {
210
+ const resolved = await extension.resolve({ ...rawArgs, ...parsed.data });
211
+ return {
212
+ context: {
213
+ ...context,
214
+ ...resolved,
215
+ source: context.source,
216
+ ...context.mcp !== undefined && { mcp: context.mcp },
217
+ ...context.toolCallId !== undefined && { toolCallId: context.toolCallId }
218
+ },
219
+ args: Object.fromEntries(Object.entries(rawArgs).filter(([key]) => !keys.has(key)))
220
+ };
221
+ } catch (err) {
222
+ return { thrown: err };
223
+ }
224
+ }
225
+ async function observed(hook, call) {
226
+ try {
227
+ await call();
228
+ } catch (hookError) {
229
+ try {
230
+ console.error(`[stitchkit] ${hook} hook failed:`, hookError);
231
+ } catch {}
232
+ }
233
+ }
148
234
  async function runToolMethod(method, { toolName, rawArgs, context }, {
149
235
  hooks,
150
236
  lifecycle,
@@ -157,22 +243,16 @@ async function runToolMethod(method, { toolName, rawArgs, context }, {
157
243
  const startedAt = Date.now();
158
244
  let hookContext = context;
159
245
  const finish = async (result, thrown) => {
160
- try {
161
- await hooks?.afterToolCall?.({
162
- toolName,
163
- args: rawArgs,
164
- result,
165
- durationMs: Date.now() - startedAt,
166
- context: hookContext,
167
- endpoint: method,
168
- ...thrown !== undefined && { error: thrown },
169
- ...rewrittenArgsApplied && rewrittenArgs !== undefined && { effectiveArgs: rewrittenArgs }
170
- });
171
- } catch (hookError) {
172
- try {
173
- console.error("[stitchkit] afterToolCall hook failed:", hookError);
174
- } catch {}
175
- }
246
+ await observed("afterToolCall", () => hooks?.afterToolCall?.({
247
+ toolName,
248
+ args: rawArgs,
249
+ result,
250
+ durationMs: Date.now() - startedAt,
251
+ context: hookContext,
252
+ endpoint: method,
253
+ ...thrown !== undefined && { error: thrown },
254
+ ...rewrittenArgsApplied && rewrittenArgs !== undefined && { effectiveArgs: rewrittenArgs }
255
+ }));
176
256
  return result;
177
257
  };
178
258
  let beforeRan = false;
@@ -202,59 +282,30 @@ async function runToolMethod(method, { toolName, rawArgs, context }, {
202
282
  const before2 = await runBefore();
203
283
  if (before2?.kind === "failure")
204
284
  return before2.result;
205
- if (hooks?.onToolError) {
206
- try {
207
- await hooks.onToolError({
208
- toolName,
209
- error: err,
210
- context: hookContext,
211
- endpoint: method
212
- });
213
- } catch (hookErr) {
214
- try {
215
- console.error("[stitchkit] onToolError hook failed:", hookErr);
216
- } catch {}
217
- }
218
- }
285
+ await observed("onToolError", () => hooks?.onToolError?.({ toolName, error: err, context: hookContext, endpoint: method }));
219
286
  return finish(toolResultFromError(err), err);
220
287
  };
221
288
  let callArgs = rawArgs;
222
289
  let callContext = context;
223
290
  let extensionKeys;
224
291
  if (extension) {
225
- const keys = new Set(Object.keys(extension.schema.shape));
226
- extensionKeys = keys;
227
- const extensionArgs = Object.fromEntries(Object.entries(rawArgs).filter(([key]) => keys.has(key)));
228
- let parsed2;
229
- try {
230
- parsed2 = extension.schema.safeParse(extensionArgs);
231
- } catch (err) {
232
- return finishThrown(err);
233
- }
234
- if (!parsed2.success) {
292
+ extensionKeys = new Set(Object.keys(extension.schema.shape));
293
+ const resolved = await resolveToolExtension(extension, extensionKeys, rawArgs, context);
294
+ if ("thrown" in resolved)
295
+ return finishThrown(resolved.thrown);
296
+ if ("invalid" in resolved) {
235
297
  const before2 = await runBefore();
236
298
  if (before2?.kind === "failure")
237
299
  return before2.result;
238
300
  return finish({
239
301
  ok: false,
240
302
  code: "VALIDATION_ERROR",
241
- details: { message: `Invalid tool extension: ${formatZodError(parsed2.error)}` }
303
+ details: { message: `Invalid tool extension: ${resolved.invalid}` }
242
304
  });
243
305
  }
244
- try {
245
- const resolved = await extension.resolve({ ...rawArgs, ...parsed2.data });
246
- callContext = {
247
- ...context,
248
- ...resolved,
249
- source: context.source,
250
- ...context.mcp !== undefined && { mcp: context.mcp },
251
- ...context.toolCallId !== undefined && { toolCallId: context.toolCallId }
252
- };
253
- hookContext = callContext;
254
- callArgs = Object.fromEntries(Object.entries(rawArgs).filter(([key]) => !keys.has(key)));
255
- } catch (err) {
256
- return finishThrown(err);
257
- }
306
+ callContext = resolved.context;
307
+ hookContext = callContext;
308
+ callArgs = resolved.args;
258
309
  }
259
310
  const before = await runBefore();
260
311
  if (before?.kind === "failure")
@@ -276,46 +327,12 @@ async function runToolMethod(method, { toolName, rawArgs, context }, {
276
327
  input,
277
328
  source: context.source
278
329
  };
279
- if (lifecycle?.beforeHandle) {
280
- await lifecycle.beforeHandle(ctx, method);
281
- }
282
- let data = await method.handler(ctx);
283
- if (lifecycle?.afterHandle) {
284
- const transformed = await lifecycle.afterHandle(ctx, data, method);
285
- if (transformed !== undefined)
286
- data = transformed;
287
- }
288
- const checked = validateDeclaredOutput(method.outputSchema, data, onOutputStrip);
289
- if (!checked.ok) {
290
- return finish({
291
- ok: false,
292
- code: "INTERNAL_SERVER_ERROR",
293
- details: { message: checked.message }
294
- });
295
- }
296
- data = checked.data;
297
- if (toolSurface && method.toolView && method.outputSchema) {
298
- const viewed = projectToolView({
299
- view: method.toolView,
300
- fullSchema: method.outputSchema,
301
- full: data,
302
- call: { input, source: context.source },
303
- operation: `${method.serviceName}.${method.key}`,
304
- onStripped: onOutputStrip
305
- });
306
- if (!viewed.ok) {
307
- return finish({
308
- ok: false,
309
- code: "INTERNAL_SERVER_ERROR",
310
- details: { message: viewed.message }
311
- });
312
- }
313
- data = viewed.data;
314
- }
315
- if (finalizeOutput)
316
- data = await finalizeOutput(data);
317
- const output = (data === undefined || data === null) && !method.outputSchema ? { status: "ok" } : data;
318
- return finish({ ok: true, data: output });
330
+ return finish(await invokeToolHandler(method, ctx, input, context.source, {
331
+ lifecycle,
332
+ onOutputStrip,
333
+ finalizeOutput,
334
+ toolSurface
335
+ }));
319
336
  } catch (err) {
320
337
  if (isToolExecutionControlError(err))
321
338
  throw err;
@@ -323,4 +340,4 @@ async function runToolMethod(method, { toolName, rawArgs, context }, {
323
340
  }
324
341
  }
325
342
 
326
- export { ToolExecutionControlError, isToolExecutionControlError, parseToolCallArguments, toolResultFromError, toolErrorFromResult, toolCauseFromResult, executeToolMethod };
343
+ export { parseToolCallArguments, toolResultFromError, toolErrorFromResult, toolCauseFromResult, ToolExecutionControlError, isToolExecutionControlError, executeToolMethod };