stitchkit 0.93.0 → 0.94.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1082) hide show
  1. package/CHANGELOG.md +198 -0
  2. package/README.md +5 -2
  3. package/dist/agent-runtime/children-control.d.ts +6 -0
  4. package/dist/agent-runtime/children-control.d.ts.map +1 -0
  5. package/dist/agent-runtime/children-spawn.d.ts +6 -0
  6. package/dist/agent-runtime/children-spawn.d.ts.map +1 -0
  7. package/dist/agent-runtime/children-state.d.ts +46 -0
  8. package/dist/agent-runtime/children-state.d.ts.map +1 -0
  9. package/dist/agent-runtime/children-usage.d.ts +8 -0
  10. package/dist/agent-runtime/children-usage.d.ts.map +1 -0
  11. package/dist/agent-runtime/children.d.ts +11 -14
  12. package/dist/agent-runtime/children.d.ts.map +1 -1
  13. package/dist/agent-runtime/coding-shell-process.d.ts.map +1 -1
  14. package/dist/agent-runtime/coding-tool-contract.d.ts +2 -1
  15. package/dist/agent-runtime/coding-tool-contract.d.ts.map +1 -1
  16. package/dist/agent-runtime/coding-tool-listing.d.ts.map +1 -1
  17. package/dist/agent-runtime/coding-tool-search-patch.d.ts.map +1 -1
  18. package/dist/agent-runtime/contained-darwin.d.ts +38 -0
  19. package/dist/agent-runtime/contained-darwin.d.ts.map +1 -0
  20. package/dist/agent-runtime/contained-files.d.ts +11 -26
  21. package/dist/agent-runtime/contained-files.d.ts.map +1 -1
  22. package/dist/agent-runtime/contained-scan.d.ts +21 -0
  23. package/dist/agent-runtime/contained-scan.d.ts.map +1 -0
  24. package/dist/agent-runtime/contained-write.d.ts +9 -0
  25. package/dist/agent-runtime/contained-write.d.ts.map +1 -0
  26. package/dist/agent-runtime/deferred-tool-types.d.ts +4 -3
  27. package/dist/agent-runtime/deferred-tool-types.d.ts.map +1 -1
  28. package/dist/agent-runtime/events.d.ts +1 -1
  29. package/dist/agent-runtime/events.d.ts.map +1 -1
  30. package/dist/agent-runtime/harness-control.d.ts +0 -1
  31. package/dist/agent-runtime/harness-control.d.ts.map +1 -1
  32. package/dist/agent-runtime/harness.d.ts +0 -5
  33. package/dist/agent-runtime/harness.d.ts.map +1 -1
  34. package/dist/agent-runtime/managed-tools.d.ts +3 -2
  35. package/dist/agent-runtime/managed-tools.d.ts.map +1 -1
  36. package/dist/agent-runtime/observability.d.ts +1 -1
  37. package/dist/agent-runtime/observability.d.ts.map +1 -1
  38. package/dist/agent-runtime/openrouter.d.ts +29 -0
  39. package/dist/agent-runtime/openrouter.d.ts.map +1 -0
  40. package/dist/agent-runtime/projections.d.ts +1 -1
  41. package/dist/agent-runtime/projections.d.ts.map +1 -1
  42. package/dist/agent-runtime/run-acquisition.d.ts +17 -0
  43. package/dist/agent-runtime/run-acquisition.d.ts.map +1 -0
  44. package/dist/agent-runtime/run-execution-state.d.ts +133 -0
  45. package/dist/agent-runtime/run-execution-state.d.ts.map +1 -0
  46. package/dist/agent-runtime/run-execution.d.ts +17 -33
  47. package/dist/agent-runtime/run-execution.d.ts.map +1 -1
  48. package/dist/agent-runtime/run-failure.d.ts +18 -0
  49. package/dist/agent-runtime/run-failure.d.ts.map +1 -0
  50. package/dist/agent-runtime/run-model-attempts.d.ts +6 -0
  51. package/dist/agent-runtime/run-model-attempts.d.ts.map +1 -0
  52. package/dist/agent-runtime/run-prompt-history.d.ts +58 -0
  53. package/dist/agent-runtime/run-prompt-history.d.ts.map +1 -0
  54. package/dist/agent-runtime/run-provider-ledger.d.ts +26 -0
  55. package/dist/agent-runtime/run-provider-ledger.d.ts.map +1 -0
  56. package/dist/agent-runtime/run-stream-parts.d.ts +17 -0
  57. package/dist/agent-runtime/run-stream-parts.d.ts.map +1 -0
  58. package/dist/agent-runtime/run-terminal.d.ts +11 -0
  59. package/dist/agent-runtime/run-terminal.d.ts.map +1 -0
  60. package/dist/agent-runtime/run-turn-preparation.d.ts +22 -0
  61. package/dist/agent-runtime/run-turn-preparation.d.ts.map +1 -0
  62. package/dist/agent-runtime/runtime-admission-gate.d.ts +29 -0
  63. package/dist/agent-runtime/runtime-admission-gate.d.ts.map +1 -0
  64. package/dist/agent-runtime/runtime-control.d.ts +9 -0
  65. package/dist/agent-runtime/runtime-control.d.ts.map +1 -0
  66. package/dist/agent-runtime/runtime-recovery.d.ts +10 -0
  67. package/dist/agent-runtime/runtime-recovery.d.ts.map +1 -0
  68. package/dist/agent-runtime/runtime-state.d.ts +36 -0
  69. package/dist/agent-runtime/runtime-state.d.ts.map +1 -0
  70. package/dist/agent-runtime/runtime-submit.d.ts +5 -0
  71. package/dist/agent-runtime/runtime-submit.d.ts.map +1 -0
  72. package/dist/agent-runtime/runtime.d.ts +10 -5
  73. package/dist/agent-runtime/runtime.d.ts.map +1 -1
  74. package/dist/agent-runtime/schedule-records.d.ts +34 -0
  75. package/dist/agent-runtime/schedule-records.d.ts.map +1 -0
  76. package/dist/agent-runtime/schedules.d.ts +34 -0
  77. package/dist/agent-runtime/schedules.d.ts.map +1 -1
  78. package/dist/agent-runtime/sqlite-bun.d.ts +12 -0
  79. package/dist/agent-runtime/sqlite-bun.d.ts.map +1 -0
  80. package/dist/agent-runtime/sqlite-events.d.ts +5 -0
  81. package/dist/agent-runtime/sqlite-events.d.ts.map +1 -0
  82. package/dist/agent-runtime/sqlite-history.d.ts +7 -0
  83. package/dist/agent-runtime/sqlite-history.d.ts.map +1 -0
  84. package/dist/agent-runtime/sqlite-ledger.d.ts +7 -0
  85. package/dist/agent-runtime/sqlite-ledger.d.ts.map +1 -0
  86. package/dist/agent-runtime/sqlite-node.d.ts +12 -0
  87. package/dist/agent-runtime/sqlite-node.d.ts.map +1 -0
  88. package/dist/agent-runtime/sqlite-reads.d.ts +14 -0
  89. package/dist/agent-runtime/sqlite-reads.d.ts.map +1 -0
  90. package/dist/agent-runtime/sqlite-rows.d.ts +178 -0
  91. package/dist/agent-runtime/sqlite-rows.d.ts.map +1 -0
  92. package/dist/agent-runtime/sqlite-schema.d.ts +7 -0
  93. package/dist/agent-runtime/sqlite-schema.d.ts.map +1 -0
  94. package/dist/agent-runtime/sqlite-transactions.d.ts +25 -0
  95. package/dist/agent-runtime/sqlite-transactions.d.ts.map +1 -0
  96. package/dist/agent-runtime/sqlite.d.ts +10 -6
  97. package/dist/agent-runtime/sqlite.d.ts.map +1 -1
  98. package/dist/agent-runtime/store-archive.d.ts +16 -0
  99. package/dist/agent-runtime/store-archive.d.ts.map +1 -0
  100. package/dist/agent-runtime/store-conformance-lifecycle.d.ts +434 -0
  101. package/dist/agent-runtime/store-conformance-lifecycle.d.ts.map +1 -0
  102. package/dist/agent-runtime/store-conformance-ordering.d.ts +18 -0
  103. package/dist/agent-runtime/store-conformance-ordering.d.ts.map +1 -0
  104. package/dist/agent-runtime/store-conformance-support.d.ts +130 -0
  105. package/dist/agent-runtime/store-conformance-support.d.ts.map +1 -0
  106. package/dist/agent-runtime/store-conformance-terminal.d.ts +12 -0
  107. package/dist/agent-runtime/store-conformance-terminal.d.ts.map +1 -0
  108. package/dist/agent-runtime/store-conformance.d.ts +40 -0
  109. package/dist/agent-runtime/store-conformance.d.ts.map +1 -0
  110. package/dist/agent-runtime/store-create.d.ts +11 -0
  111. package/dist/agent-runtime/store-create.d.ts.map +1 -0
  112. package/dist/agent-runtime/store-driver-contract.d.ts +814 -0
  113. package/dist/agent-runtime/store-driver-contract.d.ts.map +1 -0
  114. package/dist/agent-runtime/store-events.d.ts +7 -89
  115. package/dist/agent-runtime/store-events.d.ts.map +1 -1
  116. package/dist/agent-runtime/store-memory.d.ts +4 -0
  117. package/dist/agent-runtime/store-memory.d.ts.map +1 -0
  118. package/dist/agent-runtime/store-mutate.d.ts +13 -0
  119. package/dist/agent-runtime/store-mutate.d.ts.map +1 -0
  120. package/dist/agent-runtime/store-purge.d.ts +1 -1
  121. package/dist/agent-runtime/store-purge.d.ts.map +1 -1
  122. package/dist/agent-runtime/store-reads.d.ts +29 -0
  123. package/dist/agent-runtime/store-reads.d.ts.map +1 -0
  124. package/dist/agent-runtime/store-reduce-history.d.ts +10 -0
  125. package/dist/agent-runtime/store-reduce-history.d.ts.map +1 -0
  126. package/dist/agent-runtime/store-reduce-run.d.ts +14 -0
  127. package/dist/agent-runtime/store-reduce-run.d.ts.map +1 -0
  128. package/dist/agent-runtime/store-reduce-shared.d.ts +76 -0
  129. package/dist/agent-runtime/store-reduce-shared.d.ts.map +1 -0
  130. package/dist/agent-runtime/store-reduce-terminal.d.ts +6 -0
  131. package/dist/agent-runtime/store-reduce-terminal.d.ts.map +1 -0
  132. package/dist/agent-runtime/store-reducer.d.ts +24 -0
  133. package/dist/agent-runtime/store-reducer.d.ts.map +1 -0
  134. package/dist/agent-runtime/store-snapshot.d.ts +19 -0
  135. package/dist/agent-runtime/store-snapshot.d.ts.map +1 -0
  136. package/dist/agent-runtime/store.d.ts +1 -1
  137. package/dist/agent-runtime/store.d.ts.map +1 -1
  138. package/dist/application/admission-rate.d.ts +21 -0
  139. package/dist/application/admission-rate.d.ts.map +1 -0
  140. package/dist/application/admission-run.d.ts +8 -0
  141. package/dist/application/admission-run.d.ts.map +1 -0
  142. package/dist/application/admission.d.ts +1 -1
  143. package/dist/application/admission.d.ts.map +1 -1
  144. package/dist/application/diagnostic-journal-lock.d.ts +9 -34
  145. package/dist/application/diagnostic-journal-lock.d.ts.map +1 -1
  146. package/dist/application/diagnostic-journal-manager.d.ts.map +1 -1
  147. package/dist/application/diagnostic-journal-storage.d.ts.map +1 -1
  148. package/dist/application/events.d.ts +1 -1
  149. package/dist/application/events.d.ts.map +1 -1
  150. package/dist/application/file-state-store.d.ts +23 -0
  151. package/dist/application/file-state-store.d.ts.map +1 -0
  152. package/dist/application/health.d.ts +1 -1
  153. package/dist/application/health.d.ts.map +1 -1
  154. package/dist/application/kernel-admission.d.ts +8 -0
  155. package/dist/application/kernel-admission.d.ts.map +1 -0
  156. package/dist/application/kernel-contract.d.ts +142 -0
  157. package/dist/application/kernel-contract.d.ts.map +1 -0
  158. package/dist/application/kernel-resource-context.d.ts +24 -0
  159. package/dist/application/kernel-resource-context.d.ts.map +1 -0
  160. package/dist/application/kernel-restart.d.ts +5 -0
  161. package/dist/application/kernel-restart.d.ts.map +1 -0
  162. package/dist/application/kernel-rollback.d.ts +4 -0
  163. package/dist/application/kernel-rollback.d.ts.map +1 -0
  164. package/dist/application/kernel-shutdown.d.ts +6 -0
  165. package/dist/application/kernel-shutdown.d.ts.map +1 -0
  166. package/dist/application/kernel-start.d.ts +20 -0
  167. package/dist/application/kernel-start.d.ts.map +1 -0
  168. package/dist/application/kernel-state.d.ts +116 -0
  169. package/dist/application/kernel-state.d.ts.map +1 -0
  170. package/dist/application/kernel.d.ts +9 -140
  171. package/dist/application/kernel.d.ts.map +1 -1
  172. package/dist/application/latest-sink.d.ts +1 -1
  173. package/dist/application/latest-sink.d.ts.map +1 -1
  174. package/dist/application/notification-outbox.d.ts.map +1 -1
  175. package/dist/application/opentelemetry.d.ts +1 -1
  176. package/dist/application/opentelemetry.d.ts.map +1 -1
  177. package/dist/application/schedule.d.ts +0 -1
  178. package/dist/application/schedule.d.ts.map +1 -1
  179. package/dist/application/watch-hub-core.d.ts +122 -0
  180. package/dist/application/watch-hub-core.d.ts.map +1 -0
  181. package/dist/application/watch-hub.d.ts +3 -3
  182. package/dist/application/watch-hub.d.ts.map +1 -1
  183. package/dist/browser/client-executors.d.ts +14 -0
  184. package/dist/browser/client-executors.d.ts.map +1 -0
  185. package/dist/browser/client-multipart.d.ts +1 -1
  186. package/dist/browser/client-multipart.d.ts.map +1 -1
  187. package/dist/browser/client-url.d.ts +1 -1
  188. package/dist/browser/client-url.d.ts.map +1 -1
  189. package/dist/browser/client.d.ts +3 -2
  190. package/dist/browser/client.d.ts.map +1 -1
  191. package/dist/browser/contract-stream.d.ts +1 -1
  192. package/dist/browser/contract-stream.d.ts.map +1 -1
  193. package/dist/browser/http-fetch.d.ts +22 -0
  194. package/dist/browser/http-fetch.d.ts.map +1 -0
  195. package/dist/browser/http.d.ts +2 -4
  196. package/dist/browser/http.d.ts.map +1 -1
  197. package/dist/browser/live-state-core.d.ts +63 -0
  198. package/dist/browser/live-state-core.d.ts.map +1 -0
  199. package/dist/browser/live-state.d.ts.map +1 -1
  200. package/dist/browser/realtime-client.d.ts +26 -0
  201. package/dist/browser/realtime-client.d.ts.map +1 -0
  202. package/dist/browser/resumable.d.ts +1 -28
  203. package/dist/browser/resumable.d.ts.map +1 -1
  204. package/dist/browser/retained.d.ts.map +1 -0
  205. package/dist/browser/socket-io-connection.d.ts +82 -0
  206. package/dist/browser/socket-io-connection.d.ts.map +1 -0
  207. package/dist/browser/socket-io-peer.d.ts +20 -0
  208. package/dist/browser/socket-io-peer.d.ts.map +1 -0
  209. package/dist/browser/socket-io-trace.d.ts +31 -0
  210. package/dist/browser/socket-io-trace.d.ts.map +1 -0
  211. package/dist/browser/socket-io.d.ts +24 -18
  212. package/dist/browser/socket-io.d.ts.map +1 -1
  213. package/dist/browser/stream.d.ts +14 -2
  214. package/dist/browser/stream.d.ts.map +1 -1
  215. package/dist/contract/client-types.d.ts +134 -0
  216. package/dist/contract/client-types.d.ts.map +1 -0
  217. package/dist/contract/define-validation.d.ts +30 -0
  218. package/dist/contract/define-validation.d.ts.map +1 -0
  219. package/dist/contract/define.d.ts +47 -394
  220. package/dist/contract/define.d.ts.map +1 -1
  221. package/dist/contract/normalize.d.ts +56 -0
  222. package/dist/contract/normalize.d.ts.map +1 -0
  223. package/dist/contract/runtime-context.d.ts +131 -0
  224. package/dist/contract/runtime-context.d.ts.map +1 -0
  225. package/dist/contract/tool-options.d.ts +105 -0
  226. package/dist/contract/tool-options.d.ts.map +1 -0
  227. package/dist/contract/tool-view.d.ts +148 -0
  228. package/dist/contract/tool-view.d.ts.map +1 -0
  229. package/dist/declaration/declaration.d.ts.map +1 -0
  230. package/dist/durability/contract.d.ts +259 -0
  231. package/dist/durability/contract.d.ts.map +1 -0
  232. package/dist/durability/effect.d.ts +24 -0
  233. package/dist/durability/effect.d.ts.map +1 -0
  234. package/dist/durability/engine.d.ts +14 -0
  235. package/dist/durability/engine.d.ts.map +1 -0
  236. package/dist/durability/events.d.ts +103 -0
  237. package/dist/durability/events.d.ts.map +1 -0
  238. package/dist/durability/json.d.ts +3 -0
  239. package/dist/durability/json.d.ts.map +1 -0
  240. package/dist/durability/ledger.d.ts +27 -0
  241. package/dist/durability/ledger.d.ts.map +1 -0
  242. package/dist/durability/parks.d.ts +22 -0
  243. package/dist/durability/parks.d.ts.map +1 -0
  244. package/dist/durability/scheduler.d.ts +30 -0
  245. package/dist/durability/scheduler.d.ts.map +1 -0
  246. package/dist/entrypoints/agent-runtime/browser.d.ts +5 -0
  247. package/dist/entrypoints/agent-runtime/browser.d.ts.map +1 -0
  248. package/dist/entrypoints/agent-runtime/browser.js +124 -0
  249. package/dist/entrypoints/agent-runtime/coding-tools.d.ts +2 -0
  250. package/dist/entrypoints/agent-runtime/coding-tools.d.ts.map +1 -0
  251. package/dist/entrypoints/agent-runtime/coding-tools.js +22 -0
  252. package/dist/entrypoints/agent-runtime/harness.d.ts +2 -0
  253. package/dist/entrypoints/agent-runtime/harness.d.ts.map +1 -0
  254. package/dist/entrypoints/agent-runtime/harness.js +739 -0
  255. package/dist/entrypoints/agent-runtime/openrouter.d.ts +2 -0
  256. package/dist/entrypoints/agent-runtime/openrouter.d.ts.map +1 -0
  257. package/dist/entrypoints/agent-runtime/openrouter.js +270 -0
  258. package/dist/entrypoints/agent-runtime/sandbox.d.ts +5 -0
  259. package/dist/entrypoints/agent-runtime/sandbox.d.ts.map +1 -0
  260. package/dist/entrypoints/agent-runtime/sandbox.js +797 -0
  261. package/dist/entrypoints/agent-runtime/sqlite/bun.d.ts +2 -0
  262. package/dist/entrypoints/agent-runtime/sqlite/bun.d.ts.map +1 -0
  263. package/dist/entrypoints/agent-runtime/sqlite/bun.js +44 -0
  264. package/dist/entrypoints/agent-runtime/sqlite/node.d.ts +2 -0
  265. package/dist/entrypoints/agent-runtime/sqlite/node.d.ts.map +1 -0
  266. package/dist/entrypoints/agent-runtime/sqlite/node.js +46 -0
  267. package/dist/entrypoints/agent-runtime/testing.d.ts +4 -0
  268. package/dist/entrypoints/agent-runtime/testing.d.ts.map +1 -0
  269. package/dist/entrypoints/agent-runtime/testing.js +1116 -0
  270. package/dist/entrypoints/agent-runtime.d.ts +42 -0
  271. package/dist/entrypoints/agent-runtime.d.ts.map +1 -0
  272. package/dist/entrypoints/agent-runtime.js +2670 -0
  273. package/dist/entrypoints/application/diagnostic-journal.d.ts +21 -0
  274. package/dist/entrypoints/application/diagnostic-journal.d.ts.map +1 -0
  275. package/dist/entrypoints/application/diagnostic-journal.js +492 -0
  276. package/dist/entrypoints/application/grammy.d.ts +2 -0
  277. package/dist/entrypoints/application/grammy.d.ts.map +1 -0
  278. package/dist/entrypoints/application/grammy.js +169 -0
  279. package/dist/entrypoints/application/opentelemetry.d.ts +2 -0
  280. package/dist/entrypoints/application/opentelemetry.d.ts.map +1 -0
  281. package/dist/entrypoints/application/opentelemetry.js +250 -0
  282. package/dist/entrypoints/application/schemas.d.ts +15 -0
  283. package/dist/entrypoints/application/schemas.d.ts.map +1 -0
  284. package/dist/entrypoints/application/schemas.js +27 -0
  285. package/dist/entrypoints/application.d.ts +23 -0
  286. package/dist/entrypoints/application.d.ts.map +1 -0
  287. package/dist/entrypoints/application.js +2016 -0
  288. package/dist/entrypoints/bin/upgrade-cli.d.ts.map +1 -0
  289. package/dist/entrypoints/bin/upgrade-cli.js +177 -0
  290. package/dist/entrypoints/cli.d.ts +44 -0
  291. package/dist/entrypoints/cli.d.ts.map +1 -0
  292. package/dist/entrypoints/cli.js +773 -0
  293. package/dist/entrypoints/contract.d.ts +12 -0
  294. package/dist/entrypoints/contract.d.ts.map +1 -0
  295. package/dist/entrypoints/contract.js +64 -0
  296. package/dist/entrypoints/declaration.d.ts +2 -0
  297. package/dist/entrypoints/declaration.d.ts.map +1 -0
  298. package/dist/entrypoints/declaration.js +183 -0
  299. package/dist/entrypoints/files.d.ts +5 -0
  300. package/dist/entrypoints/files.d.ts.map +1 -0
  301. package/dist/entrypoints/files.js +111 -0
  302. package/dist/entrypoints/geo.d.ts +3 -0
  303. package/dist/entrypoints/geo.d.ts.map +1 -0
  304. package/dist/entrypoints/geo.js +245 -0
  305. package/dist/entrypoints/google.d.ts +2 -0
  306. package/dist/entrypoints/google.d.ts.map +1 -0
  307. package/dist/entrypoints/google.js +175 -0
  308. package/dist/entrypoints/index.d.ts +17 -0
  309. package/dist/entrypoints/index.d.ts.map +1 -0
  310. package/dist/entrypoints/index.js +764 -0
  311. package/dist/entrypoints/live.d.ts +19 -0
  312. package/dist/entrypoints/live.d.ts.map +1 -0
  313. package/dist/entrypoints/live.js +302 -0
  314. package/dist/entrypoints/node.d.ts +19 -0
  315. package/dist/entrypoints/node.d.ts.map +1 -0
  316. package/dist/entrypoints/node.js +308 -0
  317. package/dist/entrypoints/oauth.d.ts +2 -0
  318. package/dist/entrypoints/oauth.d.ts.map +1 -0
  319. package/dist/entrypoints/oauth.js +170 -0
  320. package/dist/entrypoints/observability.d.ts +19 -0
  321. package/dist/entrypoints/observability.d.ts.map +1 -0
  322. package/dist/entrypoints/observability.js +567 -0
  323. package/dist/entrypoints/primitives.d.ts +3 -0
  324. package/dist/entrypoints/primitives.d.ts.map +1 -0
  325. package/dist/entrypoints/primitives.js +749 -0
  326. package/dist/entrypoints/react.d.ts +5 -0
  327. package/dist/entrypoints/react.d.ts.map +1 -0
  328. package/dist/entrypoints/react.js +403 -0
  329. package/dist/entrypoints/release.d.ts +15 -0
  330. package/dist/entrypoints/release.d.ts.map +1 -0
  331. package/dist/entrypoints/release.js +196 -0
  332. package/dist/entrypoints/remote.d.ts +9 -0
  333. package/dist/entrypoints/remote.d.ts.map +1 -0
  334. package/dist/entrypoints/remote.js +66 -0
  335. package/dist/entrypoints/server.d.ts +39 -0
  336. package/dist/entrypoints/server.d.ts.map +1 -0
  337. package/dist/entrypoints/server.js +2009 -0
  338. package/dist/entrypoints/telegram.d.ts +3 -0
  339. package/dist/entrypoints/telegram.d.ts.map +1 -0
  340. package/dist/entrypoints/telegram.js +224 -0
  341. package/dist/entrypoints/testing.d.ts +10 -0
  342. package/dist/entrypoints/testing.d.ts.map +1 -0
  343. package/dist/entrypoints/testing.js +1377 -0
  344. package/dist/entrypoints/tools/connections.d.ts +19 -0
  345. package/dist/entrypoints/tools/connections.d.ts.map +1 -0
  346. package/dist/entrypoints/tools/connections.js +1110 -0
  347. package/dist/entrypoints/tools/contract.d.ts +29 -0
  348. package/dist/entrypoints/tools/contract.d.ts.map +1 -0
  349. package/dist/entrypoints/tools/contract.js +24 -0
  350. package/dist/entrypoints/tools/invoker.d.ts +9 -0
  351. package/dist/entrypoints/tools/invoker.d.ts.map +1 -0
  352. package/dist/entrypoints/tools/invoker.js +20 -0
  353. package/dist/entrypoints/tools.d.ts +54 -0
  354. package/dist/entrypoints/tools.d.ts.map +1 -0
  355. package/dist/entrypoints/tools.js +3009 -0
  356. package/dist/entrypoints/tracking/server.d.ts +15 -0
  357. package/dist/entrypoints/tracking/server.d.ts.map +1 -0
  358. package/dist/entrypoints/tracking.d.ts +24 -0
  359. package/dist/entrypoints/tracking.d.ts.map +1 -0
  360. package/dist/entrypoints/tracking.js +1140 -0
  361. package/dist/files/boundary.d.ts.map +1 -1
  362. package/dist/files/file-io.d.ts +14 -0
  363. package/dist/files/file-io.d.ts.map +1 -0
  364. package/dist/google/google.d.ts.map +1 -0
  365. package/dist/index-0b1ess5e.js +38 -0
  366. package/dist/index-1j8pm5t0.js +412 -0
  367. package/dist/index-1zbbzgfh.js +89 -0
  368. package/dist/index-2bxbyab0.js +47 -0
  369. package/dist/index-2gxzjvyr.js +266 -0
  370. package/dist/index-35mh5bhj.js +177 -0
  371. package/dist/index-48ffdxgk.js +6 -0
  372. package/dist/index-4gcnakhx.js +82 -0
  373. package/dist/index-55hkhm67.js +343 -0
  374. package/dist/index-79z7m7dt.js +675 -0
  375. package/dist/index-7f68ghdn.js +3618 -0
  376. package/dist/index-7p1f0vp2.js +154 -0
  377. package/dist/index-83bdg97s.js +16 -0
  378. package/dist/index-863ea9jb.js +154 -0
  379. package/dist/index-8p52kd5p.js +242 -0
  380. package/dist/index-d9pk3td4.js +326 -0
  381. package/dist/index-dce5wxcq.js +63 -0
  382. package/dist/index-e01r054k.js +105 -0
  383. package/dist/index-ensd0r74.js +595 -0
  384. package/dist/index-eqqvgdb3.js +46 -0
  385. package/dist/index-gxrt5h6v.js +341 -0
  386. package/dist/index-h6eeys1v.js +211 -0
  387. package/dist/index-ham5sz8m.js +734 -0
  388. package/dist/index-het2he5g.js +1387 -0
  389. package/dist/index-hffjpmq9.js +30 -0
  390. package/dist/index-hmp4800j.js +51 -0
  391. package/dist/index-k30h66yd.js +317 -0
  392. package/dist/index-k5hsfc3j.js +31 -0
  393. package/dist/index-khtgb21r.js +92 -0
  394. package/dist/index-m9zn6cpq.js +51 -0
  395. package/dist/index-ndddxtyx.js +324 -0
  396. package/dist/index-ngfhvfpd.js +30 -0
  397. package/dist/index-np4m8hd3.js +1205 -0
  398. package/dist/index-p3vsv1fb.js +3493 -0
  399. package/dist/index-p5r7qpdd.js +85 -0
  400. package/dist/index-p9e0w8hs.js +1084 -0
  401. package/dist/index-p9sh0xx4.js +64 -0
  402. package/dist/index-paz6sgdp.js +371 -0
  403. package/dist/index-px2gm2jp.js +448 -0
  404. package/dist/index-qwhynv6x.js +103 -0
  405. package/dist/index-s812ycat.js +65 -0
  406. package/dist/index-sp1tzwnb.js +281 -0
  407. package/dist/index-t9rhjr9f.js +2306 -0
  408. package/dist/index-v260df89.js +342 -0
  409. package/dist/index-w906953s.js +946 -0
  410. package/dist/index-wdkt63w3.js +214 -0
  411. package/dist/index-wqgjfstn.js +18 -0
  412. package/dist/index-wsm5w4ee.js +1023 -0
  413. package/dist/index-xw3s75nj.js +100 -0
  414. package/dist/index-yw4fzmdz.js +268 -0
  415. package/dist/index-zfrhfn82.js +85 -0
  416. package/dist/index-znfs20ss.js +98 -0
  417. package/dist/internal/atomic-file.d.ts +23 -2
  418. package/dist/internal/atomic-file.d.ts.map +1 -1
  419. package/dist/internal/backoff.d.ts +29 -0
  420. package/dist/internal/backoff.d.ts.map +1 -0
  421. package/dist/internal/canonical-json.d.ts +21 -11
  422. package/dist/internal/canonical-json.d.ts.map +1 -1
  423. package/dist/internal/channel.d.ts.map +1 -0
  424. package/dist/internal/exclusive-lock.d.ts +51 -0
  425. package/dist/internal/exclusive-lock.d.ts.map +1 -0
  426. package/dist/internal/logger.d.ts.map +1 -0
  427. package/dist/internal/process-identity.d.ts +47 -0
  428. package/dist/internal/process-identity.d.ts.map +1 -0
  429. package/dist/internal/request.d.ts.map +1 -0
  430. package/dist/internal/stable-digest.d.ts +0 -43
  431. package/dist/internal/stable-digest.d.ts.map +1 -1
  432. package/dist/internal/typed.d.ts +0 -8
  433. package/dist/internal/typed.d.ts.map +1 -1
  434. package/dist/internal/with-exclusive-lock.d.ts +67 -0
  435. package/dist/internal/with-exclusive-lock.d.ts.map +1 -0
  436. package/dist/internal/zod-issues.d.ts +38 -0
  437. package/dist/internal/zod-issues.d.ts.map +1 -0
  438. package/dist/json-schema/dialect.d.ts +17 -0
  439. package/dist/json-schema/dialect.d.ts.map +1 -0
  440. package/dist/json-schema/json-schema.d.ts.map +1 -0
  441. package/dist/live/watch-client.d.ts.map +1 -1
  442. package/dist/live/watch-delta.d.ts.map +1 -1
  443. package/dist/oauth/authorization-code.d.ts +57 -0
  444. package/dist/oauth/authorization-code.d.ts.map +1 -0
  445. package/dist/observability/audit.d.ts +3 -3
  446. package/dist/observability/audit.d.ts.map +1 -1
  447. package/dist/observability/bounded-logger.d.ts +1 -1
  448. package/dist/observability/bounded-logger.d.ts.map +1 -1
  449. package/dist/observability/bounded-sink.d.ts +81 -0
  450. package/dist/observability/bounded-sink.d.ts.map +1 -0
  451. package/dist/observability/context.d.ts +1 -1
  452. package/dist/observability/context.d.ts.map +1 -1
  453. package/dist/observability/event.d.ts +2 -1
  454. package/dist/observability/event.d.ts.map +1 -1
  455. package/dist/observability/work.d.ts +1 -1
  456. package/dist/observability/work.d.ts.map +1 -1
  457. package/dist/primitives/audit.d.ts +1 -1
  458. package/dist/primitives/audit.d.ts.map +1 -1
  459. package/dist/primitives/export-operation.d.ts +4 -2
  460. package/dist/primitives/export-operation.d.ts.map +1 -1
  461. package/dist/realtime/registry.d.ts +0 -5
  462. package/dist/realtime/registry.d.ts.map +1 -1
  463. package/dist/realtime/socket.d.ts +1 -1
  464. package/dist/realtime/socket.d.ts.map +1 -1
  465. package/dist/server/bun.d.ts +0 -1
  466. package/dist/server/bun.d.ts.map +1 -1
  467. package/dist/server/context-contribution.d.ts +1 -1
  468. package/dist/server/context-contribution.d.ts.map +1 -1
  469. package/dist/server/context.d.ts +2 -2
  470. package/dist/server/context.d.ts.map +1 -1
  471. package/dist/server/contract-method.d.ts +15 -0
  472. package/dist/server/contract-method.d.ts.map +1 -0
  473. package/dist/server/contract-stream.d.ts +1 -1
  474. package/dist/server/contract-stream.d.ts.map +1 -1
  475. package/dist/server/create.d.ts +8 -0
  476. package/dist/server/create.d.ts.map +1 -1
  477. package/dist/server/endpoint-dispatch.d.ts +10 -0
  478. package/dist/server/endpoint-dispatch.d.ts.map +1 -0
  479. package/dist/server/endpoint-response.d.ts +19 -0
  480. package/dist/server/endpoint-response.d.ts.map +1 -0
  481. package/dist/server/error-dispatch.d.ts +17 -1
  482. package/dist/server/error-dispatch.d.ts.map +1 -1
  483. package/dist/server/error-hook.d.ts +2 -2
  484. package/dist/server/error-hook.d.ts.map +1 -1
  485. package/dist/server/handler-state.d.ts +44 -0
  486. package/dist/server/handler-state.d.ts.map +1 -0
  487. package/dist/server/implement-registry.d.ts +54 -0
  488. package/dist/server/implement-registry.d.ts.map +1 -0
  489. package/dist/server/implement.d.ts +9 -55
  490. package/dist/server/implement.d.ts.map +1 -1
  491. package/dist/server/middleware/auth.d.ts +1 -31
  492. package/dist/server/middleware/auth.d.ts.map +1 -1
  493. package/dist/server/middleware/cors.d.ts +17 -0
  494. package/dist/server/middleware/cors.d.ts.map +1 -1
  495. package/dist/server/middleware/jwt.d.ts +31 -0
  496. package/dist/server/middleware/jwt.d.ts.map +1 -0
  497. package/dist/server/middleware/trust-fence.d.ts +1 -1
  498. package/dist/server/middleware/trust-fence.d.ts.map +1 -1
  499. package/dist/server/multipart-reader.d.ts +22 -0
  500. package/dist/server/multipart-reader.d.ts.map +1 -0
  501. package/dist/server/multipart.d.ts +1 -1
  502. package/dist/server/multipart.d.ts.map +1 -1
  503. package/dist/server/oauth/cimd.d.ts +88 -0
  504. package/dist/server/oauth/cimd.d.ts.map +1 -0
  505. package/dist/server/oauth/endpoints.d.ts +39 -0
  506. package/dist/server/oauth/endpoints.d.ts.map +1 -0
  507. package/dist/server/oauth/metadata.d.ts +28 -0
  508. package/dist/server/oauth/metadata.d.ts.map +1 -0
  509. package/dist/server/oauth/provider.d.ts +117 -0
  510. package/dist/server/oauth/provider.d.ts.map +1 -0
  511. package/dist/server/realtime.d.ts +1 -1
  512. package/dist/server/realtime.d.ts.map +1 -1
  513. package/dist/server/request-completion.d.ts +16 -0
  514. package/dist/server/request-completion.d.ts.map +1 -0
  515. package/dist/server/response-metadata.d.ts +1 -1
  516. package/dist/server/response-metadata.d.ts.map +1 -1
  517. package/dist/server/route-table.d.ts +9 -0
  518. package/dist/server/route-table.d.ts.map +1 -0
  519. package/dist/server/stream.d.ts +0 -13
  520. package/dist/server/stream.d.ts.map +1 -1
  521. package/dist/server/streaming-pump.d.ts +66 -0
  522. package/dist/server/streaming-pump.d.ts.map +1 -0
  523. package/dist/server/streaming-route.d.ts +12 -5
  524. package/dist/server/streaming-route.d.ts.map +1 -1
  525. package/dist/server/types.d.ts +10 -4
  526. package/dist/server/types.d.ts.map +1 -1
  527. package/dist/server/unix-client-bun.d.ts.map +1 -1
  528. package/dist/server/unix-client-http1.d.ts +76 -0
  529. package/dist/server/unix-client-http1.d.ts.map +1 -0
  530. package/dist/server/unix-client.d.ts.map +1 -1
  531. package/dist/testing/handler-clients.d.ts +32 -0
  532. package/dist/testing/handler-clients.d.ts.map +1 -0
  533. package/dist/testing/managed-resource-conformance-scenarios.d.ts.map +1 -1
  534. package/dist/testing/realtime-probe.d.ts +33 -0
  535. package/dist/testing/realtime-probe.d.ts.map +1 -0
  536. package/dist/testing/surface-conformance.d.ts +2 -32
  537. package/dist/testing/surface-conformance.d.ts.map +1 -1
  538. package/dist/testing/surface-manifest-digest.d.ts +44 -0
  539. package/dist/testing/surface-manifest-digest.d.ts.map +1 -0
  540. package/dist/testing/surface-manifest.d.ts +30 -4
  541. package/dist/testing/surface-manifest.d.ts.map +1 -1
  542. package/dist/tools/agent.d.ts +1 -1
  543. package/dist/tools/agent.d.ts.map +1 -1
  544. package/dist/tools/cli/args-fields.d.ts +31 -0
  545. package/dist/tools/cli/args-fields.d.ts.map +1 -0
  546. package/dist/tools/cli/args-route.d.ts +42 -0
  547. package/dist/tools/cli/args-route.d.ts.map +1 -0
  548. package/dist/tools/cli/args-view.d.ts +32 -0
  549. package/dist/tools/cli/args-view.d.ts.map +1 -0
  550. package/dist/tools/cli/args.d.ts +80 -0
  551. package/dist/tools/cli/args.d.ts.map +1 -0
  552. package/dist/tools/cli/argument-error.d.ts +5 -0
  553. package/dist/tools/cli/argument-error.d.ts.map +1 -0
  554. package/dist/tools/cli/checkpoint.d.ts +24 -0
  555. package/dist/tools/cli/checkpoint.d.ts.map +1 -0
  556. package/dist/tools/cli/command.d.ts +70 -0
  557. package/dist/tools/cli/command.d.ts.map +1 -0
  558. package/dist/tools/cli/config.d.ts +90 -0
  559. package/dist/tools/cli/config.d.ts.map +1 -0
  560. package/dist/tools/cli/create-cli.d.ts +36 -0
  561. package/dist/tools/cli/create-cli.d.ts.map +1 -0
  562. package/dist/tools/cli/download.d.ts +8 -0
  563. package/dist/tools/cli/download.d.ts.map +1 -0
  564. package/dist/tools/cli/format.d.ts +50 -0
  565. package/dist/tools/cli/format.d.ts.map +1 -0
  566. package/dist/tools/cli/help.d.ts +24 -0
  567. package/dist/tools/cli/help.d.ts.map +1 -0
  568. package/dist/tools/cli/installer.d.ts +34 -0
  569. package/dist/tools/cli/installer.d.ts.map +1 -0
  570. package/dist/tools/cli/invoke.d.ts +144 -0
  571. package/dist/tools/cli/invoke.d.ts.map +1 -0
  572. package/dist/tools/cli/io.d.ts +10 -0
  573. package/dist/tools/cli/io.d.ts.map +1 -0
  574. package/dist/tools/cli/managed-surface.d.ts +30 -0
  575. package/dist/tools/cli/managed-surface.d.ts.map +1 -0
  576. package/dist/tools/cli/manifest.d.ts +80 -0
  577. package/dist/tools/cli/manifest.d.ts.map +1 -0
  578. package/dist/tools/cli/policy.d.ts +27 -0
  579. package/dist/tools/cli/policy.d.ts.map +1 -0
  580. package/dist/tools/cli/prepare.d.ts +14 -0
  581. package/dist/tools/cli/prepare.d.ts.map +1 -0
  582. package/dist/tools/cli/profile.d.ts +40 -0
  583. package/dist/tools/cli/profile.d.ts.map +1 -0
  584. package/dist/tools/cli/run-managed.d.ts +5 -0
  585. package/dist/tools/cli/run-managed.d.ts.map +1 -0
  586. package/dist/tools/cli/run-native.d.ts +9 -0
  587. package/dist/tools/cli/run-native.d.ts.map +1 -0
  588. package/dist/tools/cli/session.d.ts +40 -0
  589. package/dist/tools/cli/session.d.ts.map +1 -0
  590. package/dist/tools/cli/signature.d.ts +81 -0
  591. package/dist/tools/cli/signature.d.ts.map +1 -0
  592. package/dist/tools/cli/stream.d.ts +93 -0
  593. package/dist/tools/cli/stream.d.ts.map +1 -0
  594. package/dist/tools/cli/update.d.ts +145 -0
  595. package/dist/tools/cli/update.d.ts.map +1 -0
  596. package/dist/tools/cli/view.d.ts +12 -0
  597. package/dist/tools/cli/view.d.ts.map +1 -0
  598. package/dist/tools/cli/wait.d.ts +54 -0
  599. package/dist/tools/cli/wait.d.ts.map +1 -0
  600. package/dist/tools/connections/runtime.d.ts +1 -1
  601. package/dist/tools/connections/runtime.d.ts.map +1 -1
  602. package/dist/tools/connections/types.d.ts +3 -3
  603. package/dist/tools/connections/types.d.ts.map +1 -1
  604. package/dist/tools/durability-context.d.ts +1 -1
  605. package/dist/tools/durability-context.d.ts.map +1 -1
  606. package/dist/tools/execute-args.d.ts +23 -0
  607. package/dist/tools/execute-args.d.ts.map +1 -0
  608. package/dist/tools/execute-hooks.d.ts +146 -0
  609. package/dist/tools/execute-hooks.d.ts.map +1 -0
  610. package/dist/tools/execute-result.d.ts +40 -0
  611. package/dist/tools/execute-result.d.ts.map +1 -0
  612. package/dist/tools/execute.d.ts +31 -193
  613. package/dist/tools/execute.d.ts.map +1 -1
  614. package/dist/tools/internal/surface-projector.d.ts +9 -6
  615. package/dist/tools/internal/surface-projector.d.ts.map +1 -1
  616. package/dist/tools/internal/tool-view.d.ts +41 -0
  617. package/dist/tools/internal/tool-view.d.ts.map +1 -0
  618. package/dist/tools/invoker.d.ts +13 -4
  619. package/dist/tools/invoker.d.ts.map +1 -1
  620. package/dist/tools/lifecycle.d.ts +1 -1
  621. package/dist/tools/lifecycle.d.ts.map +1 -1
  622. package/dist/tools/list-names.d.ts +3 -3
  623. package/dist/tools/list-names.d.ts.map +1 -1
  624. package/dist/tools/manifest.d.ts +2 -2
  625. package/dist/tools/manifest.d.ts.map +1 -1
  626. package/dist/tools/mcp/app.d.ts +62 -0
  627. package/dist/tools/mcp/app.d.ts.map +1 -0
  628. package/dist/tools/mcp/catalog.d.ts +68 -0
  629. package/dist/tools/mcp/catalog.d.ts.map +1 -0
  630. package/dist/tools/mcp/handler.d.ts +46 -0
  631. package/dist/tools/mcp/handler.d.ts.map +1 -0
  632. package/dist/tools/mcp/mount.d.ts +152 -0
  633. package/dist/tools/mcp/mount.d.ts.map +1 -0
  634. package/dist/tools/mcp/prepare.d.ts +76 -0
  635. package/dist/tools/mcp/prepare.d.ts.map +1 -0
  636. package/dist/tools/mcp/progress.d.ts +46 -0
  637. package/dist/tools/mcp/progress.d.ts.map +1 -0
  638. package/dist/tools/mcp/register.d.ts +36 -0
  639. package/dist/tools/mcp/register.d.ts.map +1 -0
  640. package/dist/tools/mcp/round-context.d.ts +38 -0
  641. package/dist/tools/mcp/round-context.d.ts.map +1 -0
  642. package/dist/tools/mcp/round-policy.d.ts +33 -0
  643. package/dist/tools/mcp/round-policy.d.ts.map +1 -0
  644. package/dist/tools/mcp/round.d.ts +53 -0
  645. package/dist/tools/mcp/round.d.ts.map +1 -0
  646. package/dist/tools/mcp/runtime-tools.d.ts +25 -0
  647. package/dist/tools/mcp/runtime-tools.d.ts.map +1 -0
  648. package/dist/tools/mcp/stdio-signals.d.ts +33 -0
  649. package/dist/tools/mcp/stdio-signals.d.ts.map +1 -0
  650. package/dist/tools/mcp/stdio.d.ts +20 -0
  651. package/dist/tools/mcp/stdio.d.ts.map +1 -0
  652. package/dist/tools/mcp/trace.d.ts +12 -0
  653. package/dist/tools/mcp/trace.d.ts.map +1 -0
  654. package/dist/tools/mount.d.ts +14 -7
  655. package/dist/tools/mount.d.ts.map +1 -1
  656. package/dist/tools/native-definition.d.ts +4 -3
  657. package/dist/tools/native-definition.d.ts.map +1 -1
  658. package/dist/tools/operations/async-operation-binding-types.d.ts +127 -0
  659. package/dist/tools/operations/async-operation-binding-types.d.ts.map +1 -0
  660. package/dist/tools/operations/async-operation-binding.d.ts +28 -0
  661. package/dist/tools/operations/async-operation-binding.d.ts.map +1 -0
  662. package/dist/tools/operations/async-operation-canonical-types.d.ts +110 -0
  663. package/dist/tools/operations/async-operation-canonical-types.d.ts.map +1 -0
  664. package/dist/tools/operations/async-operation-canonical.d.ts +7 -0
  665. package/dist/tools/operations/async-operation-canonical.d.ts.map +1 -0
  666. package/dist/tools/operations/async-operation-contract.d.ts.map +1 -0
  667. package/dist/tools/operations/async-operation-id.d.ts +23 -0
  668. package/dist/tools/operations/async-operation-id.d.ts.map +1 -0
  669. package/dist/tools/operations/async-operation-runtime-tools.d.ts +41 -0
  670. package/dist/tools/operations/async-operation-runtime-tools.d.ts.map +1 -0
  671. package/dist/tools/operations/async-operation-runtime-types.d.ts +69 -0
  672. package/dist/tools/operations/async-operation-runtime-types.d.ts.map +1 -0
  673. package/dist/tools/operations/async-operation-runtime.d.ts +5 -0
  674. package/dist/tools/operations/async-operation-runtime.d.ts.map +1 -0
  675. package/dist/tools/operations/define-wait-tool.d.ts +22 -0
  676. package/dist/tools/operations/define-wait-tool.d.ts.map +1 -0
  677. package/dist/tools/operations/mount-wait.d.ts.map +1 -0
  678. package/dist/tools/operations/wait-core.d.ts.map +1 -0
  679. package/dist/tools/remote.d.ts +1 -1
  680. package/dist/tools/remote.d.ts.map +1 -1
  681. package/dist/tools/runtime-tool.d.ts +13 -4
  682. package/dist/tools/runtime-tool.d.ts.map +1 -1
  683. package/dist/tools/schema/coerce.d.ts.map +1 -0
  684. package/dist/tools/schema/flatten-join.d.ts.map +1 -0
  685. package/dist/tools/schema/flatten.d.ts.map +1 -0
  686. package/dist/tools/schema/portable-formats.d.ts.map +1 -0
  687. package/dist/tools/schema/presentation.d.ts +24 -0
  688. package/dist/tools/schema/presentation.d.ts.map +1 -0
  689. package/dist/tools/schema/schema.d.ts.map +1 -0
  690. package/dist/tools/schema/untyped-properties.d.ts.map +1 -0
  691. package/dist/tools/surface.d.ts +2 -3
  692. package/dist/tools/surface.d.ts.map +1 -1
  693. package/dist/tools/tool-logger.d.ts +1 -1
  694. package/dist/tools/tool-logger.d.ts.map +1 -1
  695. package/dist/tools/toolkit.d.ts +4 -4
  696. package/dist/tools/toolkit.d.ts.map +1 -1
  697. package/dist/tools/transfer/define-download-tool.d.ts +18 -0
  698. package/dist/tools/transfer/define-download-tool.d.ts.map +1 -0
  699. package/dist/tools/transfer/define-upload-tool.d.ts +16 -0
  700. package/dist/tools/transfer/define-upload-tool.d.ts.map +1 -0
  701. package/dist/tools/transfer/define-view-file-tool.d.ts +10 -0
  702. package/dist/tools/transfer/define-view-file-tool.d.ts.map +1 -0
  703. package/dist/tools/transfer/download-core.d.ts +20 -0
  704. package/dist/tools/transfer/download-core.d.ts.map +1 -0
  705. package/dist/tools/transfer/managed-file-error.d.ts +6 -0
  706. package/dist/tools/transfer/managed-file-error.d.ts.map +1 -0
  707. package/dist/tools/transfer/mount-download.d.ts +41 -0
  708. package/dist/tools/transfer/mount-download.d.ts.map +1 -0
  709. package/dist/tools/transfer/mount-upload.d.ts +21 -0
  710. package/dist/tools/transfer/mount-upload.d.ts.map +1 -0
  711. package/dist/tools/transfer/native-result.d.ts.map +1 -0
  712. package/dist/tools/transfer/upload-core.d.ts +4 -0
  713. package/dist/tools/transfer/upload-core.d.ts.map +1 -0
  714. package/dist/tools/transfer/view-file-contract.d.ts.map +1 -0
  715. package/dist/tools/transfer/view-file.d.ts +62 -0
  716. package/dist/tools/transfer/view-file.d.ts.map +1 -0
  717. package/dist/tools/transports.d.ts +1 -1
  718. package/dist/tools/transports.d.ts.map +1 -1
  719. package/dist/tracking/client-listeners.d.ts +30 -0
  720. package/dist/tracking/client-listeners.d.ts.map +1 -0
  721. package/dist/tracking/client-visit.d.ts +61 -0
  722. package/dist/tracking/client-visit.d.ts.map +1 -0
  723. package/dist/tracking/client.d.ts +3 -2
  724. package/dist/tracking/client.d.ts.map +1 -1
  725. package/dist/tracking/contract.d.ts +1 -1
  726. package/dist/tracking/contract.d.ts.map +1 -1
  727. package/llms/agent-runtime-browser.txt +33 -0
  728. package/llms/agent-runtime-coding-tools.txt +58 -0
  729. package/llms/agent-runtime-harness.txt +45 -0
  730. package/llms/agent-runtime-openrouter.txt +22 -0
  731. package/llms/agent-runtime-sandbox.txt +159 -0
  732. package/llms/agent-runtime-sqlite-bun.txt +29 -0
  733. package/llms/agent-runtime-sqlite-node.txt +26 -0
  734. package/llms/agent-runtime-testing.txt +30 -0
  735. package/llms/agent-runtime.2.txt +550 -0
  736. package/llms/agent-runtime.3.txt +311 -0
  737. package/llms/agent-runtime.txt +893 -0
  738. package/llms/application-diagnostic-journal.txt +30 -0
  739. package/llms/application-grammy.txt +27 -0
  740. package/llms/application-opentelemetry.txt +27 -0
  741. package/llms/application-schemas.txt +42 -0
  742. package/llms/application.2.txt +487 -0
  743. package/llms/application.txt +886 -0
  744. package/llms/cli.2.txt +80 -0
  745. package/llms/cli.txt +948 -0
  746. package/llms/contract.txt +606 -0
  747. package/llms/declaration.txt +286 -0
  748. package/llms/files.txt +33 -0
  749. package/llms/geo.txt +114 -0
  750. package/llms/google.txt +27 -0
  751. package/llms/live.txt +471 -0
  752. package/llms/node.txt +43 -0
  753. package/llms/oauth.txt +136 -0
  754. package/llms/observability.txt +893 -0
  755. package/llms/primitives.txt +158 -0
  756. package/llms/react.txt +184 -0
  757. package/llms/release.txt +176 -0
  758. package/llms/remote.txt +25 -0
  759. package/llms/server.2.txt +361 -0
  760. package/llms/server.3.txt +1031 -0
  761. package/llms/server.4.txt +905 -0
  762. package/llms/server.5.txt +250 -0
  763. package/llms/server.txt +996 -0
  764. package/llms/stitchkit.2.txt +836 -0
  765. package/llms/stitchkit.3.txt +147 -0
  766. package/llms/stitchkit.txt +260 -0
  767. package/llms/telegram.txt +30 -0
  768. package/llms/testing.txt +676 -0
  769. package/llms/tools-connections.txt +45 -0
  770. package/llms/tools-contract.txt +9 -0
  771. package/llms/tools-invoker.txt +9 -0
  772. package/llms/tools.2.txt +647 -0
  773. package/llms/tools.3.txt +288 -0
  774. package/llms/tools.txt +966 -0
  775. package/llms/tracking-server.txt +32 -0
  776. package/llms/tracking.txt +263 -0
  777. package/llms/upgrading-0.37.0-0.50.0.txt +947 -0
  778. package/llms/upgrading-0.53.0-0.67.0.txt +1174 -0
  779. package/llms/upgrading-0.68.0-0.94.0.txt +1159 -0
  780. package/llms/upgrading.txt +215 -0
  781. package/llms-full.txt +312 -77
  782. package/llms.txt +54 -5
  783. package/package.json +84 -83
  784. package/dist/agent-runtime/durability-contract.d.ts +0 -176
  785. package/dist/agent-runtime/durability-contract.d.ts.map +0 -1
  786. package/dist/agent-runtime/durability-json.d.ts +0 -3
  787. package/dist/agent-runtime/durability-json.d.ts.map +0 -1
  788. package/dist/agent-runtime/durability-ledger.d.ts +0 -16
  789. package/dist/agent-runtime/durability-ledger.d.ts.map +0 -1
  790. package/dist/agent-runtime/durability-scheduler.d.ts +0 -29
  791. package/dist/agent-runtime/durability-scheduler.d.ts.map +0 -1
  792. package/dist/agent-runtime/durability.d.ts +0 -14
  793. package/dist/agent-runtime/durability.d.ts.map +0 -1
  794. package/dist/agent-runtime/store-driver.d.ts +0 -814
  795. package/dist/agent-runtime/store-driver.d.ts.map +0 -1
  796. package/dist/agent-runtime-browser.d.ts +0 -5
  797. package/dist/agent-runtime-browser.d.ts.map +0 -1
  798. package/dist/agent-runtime-browser.js +0 -124
  799. package/dist/agent-runtime-coding-tools.d.ts +0 -2
  800. package/dist/agent-runtime-coding-tools.d.ts.map +0 -1
  801. package/dist/agent-runtime-coding-tools.js +0 -23
  802. package/dist/agent-runtime-harness.d.ts +0 -2
  803. package/dist/agent-runtime-harness.d.ts.map +0 -1
  804. package/dist/agent-runtime-harness.js +0 -729
  805. package/dist/agent-runtime-openrouter.d.ts +0 -29
  806. package/dist/agent-runtime-openrouter.d.ts.map +0 -1
  807. package/dist/agent-runtime-openrouter.js +0 -270
  808. package/dist/agent-runtime-sandbox.d.ts +0 -5
  809. package/dist/agent-runtime-sandbox.d.ts.map +0 -1
  810. package/dist/agent-runtime-sandbox.js +0 -798
  811. package/dist/agent-runtime-sqlite-bun.d.ts +0 -11
  812. package/dist/agent-runtime-sqlite-bun.d.ts.map +0 -1
  813. package/dist/agent-runtime-sqlite-bun.js +0 -42
  814. package/dist/agent-runtime-sqlite-node.d.ts +0 -11
  815. package/dist/agent-runtime-sqlite-node.d.ts.map +0 -1
  816. package/dist/agent-runtime-sqlite-node.js +0 -44
  817. package/dist/agent-runtime-testing.d.ts +0 -3
  818. package/dist/agent-runtime-testing.d.ts.map +0 -1
  819. package/dist/agent-runtime-testing.js +0 -156
  820. package/dist/agent-runtime.d.ts +0 -38
  821. package/dist/agent-runtime.d.ts.map +0 -1
  822. package/dist/agent-runtime.js +0 -2607
  823. package/dist/application/channel.d.ts.map +0 -1
  824. package/dist/application-diagnostic-journal.d.ts +0 -21
  825. package/dist/application-diagnostic-journal.d.ts.map +0 -1
  826. package/dist/application-diagnostic-journal.js +0 -632
  827. package/dist/application-grammy.d.ts +0 -2
  828. package/dist/application-grammy.d.ts.map +0 -1
  829. package/dist/application-grammy.js +0 -169
  830. package/dist/application-opentelemetry.d.ts +0 -2
  831. package/dist/application-opentelemetry.d.ts.map +0 -1
  832. package/dist/application-opentelemetry.js +0 -250
  833. package/dist/application-schemas.d.ts +0 -15
  834. package/dist/application-schemas.d.ts.map +0 -1
  835. package/dist/application-schemas.js +0 -27
  836. package/dist/application.d.ts +0 -22
  837. package/dist/application.d.ts.map +0 -1
  838. package/dist/application.js +0 -1977
  839. package/dist/cli.d.ts +0 -41
  840. package/dist/cli.d.ts.map +0 -1
  841. package/dist/cli.js +0 -753
  842. package/dist/contract/index.d.ts +0 -8
  843. package/dist/contract/index.d.ts.map +0 -1
  844. package/dist/contract/index.js +0 -55
  845. package/dist/declaration.d.ts.map +0 -1
  846. package/dist/declaration.js +0 -183
  847. package/dist/files.d.ts +0 -3
  848. package/dist/files.d.ts.map +0 -1
  849. package/dist/files.js +0 -15
  850. package/dist/geo.d.ts +0 -3
  851. package/dist/geo.d.ts.map +0 -1
  852. package/dist/geo.js +0 -245
  853. package/dist/google.d.ts.map +0 -1
  854. package/dist/google.js +0 -175
  855. package/dist/index-0a349c33.js +0 -470
  856. package/dist/index-0j3vcp5m.js +0 -28
  857. package/dist/index-2c2bjw3s.js +0 -51
  858. package/dist/index-2na0qrfn.js +0 -214
  859. package/dist/index-2qzskm8h.js +0 -63
  860. package/dist/index-3bmnp41g.js +0 -2169
  861. package/dist/index-3xwxfj4z.js +0 -334
  862. package/dist/index-4fpa9dy2.js +0 -51
  863. package/dist/index-6kyksz9y.js +0 -268
  864. package/dist/index-77fekveh.js +0 -44
  865. package/dist/index-7gnkny4z.js +0 -326
  866. package/dist/index-7zbps32p.js +0 -89
  867. package/dist/index-9f8ztey6.js +0 -588
  868. package/dist/index-a11g2kry.js +0 -866
  869. package/dist/index-a916km3r.js +0 -45
  870. package/dist/index-actkayzn.js +0 -367
  871. package/dist/index-bn2cjajt.js +0 -524
  872. package/dist/index-bx75zwt7.js +0 -63
  873. package/dist/index-cby4ar3v.js +0 -46
  874. package/dist/index-cnyk6te3.js +0 -77
  875. package/dist/index-cxqhvq21.js +0 -413
  876. package/dist/index-e0znv5gn.js +0 -176
  877. package/dist/index-e42wzzz5.js +0 -154
  878. package/dist/index-f477k430.js +0 -324
  879. package/dist/index-f9mb610r.js +0 -177
  880. package/dist/index-fadnxwna.js +0 -1046
  881. package/dist/index-fq77yfzc.js +0 -1303
  882. package/dist/index-h9etkkyk.js +0 -1126
  883. package/dist/index-hrbajay7.js +0 -1196
  884. package/dist/index-kw9t5ayn.js +0 -507
  885. package/dist/index-mzvgxp0n.js +0 -80
  886. package/dist/index-n0f51dfn.js +0 -3170
  887. package/dist/index-p13mwz16.js +0 -16
  888. package/dist/index-s8cnx02s.js +0 -90
  889. package/dist/index-sr93cwf9.js +0 -325
  890. package/dist/index-tmwcrptx.js +0 -85
  891. package/dist/index-v5573g1k.js +0 -142
  892. package/dist/index-vjpvjqpn.js +0 -86
  893. package/dist/index-vk3kq9sb.js +0 -3344
  894. package/dist/index-wc4x00bn.js +0 -103
  895. package/dist/index-wnfk50r0.js +0 -211
  896. package/dist/index-yewwh1w4.js +0 -647
  897. package/dist/index-yn8remb1.js +0 -290
  898. package/dist/index-ywd0y6m1.js +0 -394
  899. package/dist/index-zwkgfq1s.js +0 -345
  900. package/dist/index.d.ts +0 -14
  901. package/dist/index.d.ts.map +0 -1
  902. package/dist/index.js +0 -632
  903. package/dist/internal/errors.d.ts +0 -92
  904. package/dist/internal/errors.d.ts.map +0 -1
  905. package/dist/internal/observability-sink.d.ts +0 -81
  906. package/dist/internal/observability-sink.d.ts.map +0 -1
  907. package/dist/live.d.ts +0 -19
  908. package/dist/live.d.ts.map +0 -1
  909. package/dist/live.js +0 -282
  910. package/dist/logger.d.ts.map +0 -1
  911. package/dist/node.d.ts +0 -18
  912. package/dist/node.d.ts.map +0 -1
  913. package/dist/node.js +0 -303
  914. package/dist/oauth.d.ts +0 -57
  915. package/dist/oauth.d.ts.map +0 -1
  916. package/dist/oauth.js +0 -170
  917. package/dist/observability/index.d.ts +0 -19
  918. package/dist/observability/index.d.ts.map +0 -1
  919. package/dist/observability/index.js +0 -569
  920. package/dist/primitives.d.ts +0 -3
  921. package/dist/primitives.d.ts.map +0 -1
  922. package/dist/primitives.js +0 -754
  923. package/dist/react.d.ts +0 -5
  924. package/dist/react.d.ts.map +0 -1
  925. package/dist/react.js +0 -403
  926. package/dist/release.d.ts +0 -15
  927. package/dist/release.d.ts.map +0 -1
  928. package/dist/release.js +0 -196
  929. package/dist/remote.d.ts +0 -9
  930. package/dist/remote.d.ts.map +0 -1
  931. package/dist/remote.js +0 -88
  932. package/dist/retained.d.ts.map +0 -1
  933. package/dist/server/file-state-store.d.ts +0 -23
  934. package/dist/server/file-state-store.d.ts.map +0 -1
  935. package/dist/server/index.d.ts +0 -36
  936. package/dist/server/index.d.ts.map +0 -1
  937. package/dist/server/index.js +0 -1745
  938. package/dist/server/request.d.ts.map +0 -1
  939. package/dist/telegram.d.ts +0 -3
  940. package/dist/telegram.d.ts.map +0 -1
  941. package/dist/telegram.js +0 -224
  942. package/dist/testing/agent-store-conformance.d.ts +0 -40
  943. package/dist/testing/agent-store-conformance.d.ts.map +0 -1
  944. package/dist/testing.d.ts +0 -39
  945. package/dist/testing.d.ts.map +0 -1
  946. package/dist/testing.js +0 -2209
  947. package/dist/tool-invoker.d.ts +0 -9
  948. package/dist/tool-invoker.d.ts.map +0 -1
  949. package/dist/tool-invoker.js +0 -21
  950. package/dist/tools/async-operation-contract.d.ts.map +0 -1
  951. package/dist/tools/async-operation.d.ts +0 -332
  952. package/dist/tools/async-operation.d.ts.map +0 -1
  953. package/dist/tools/cli-args.d.ts +0 -143
  954. package/dist/tools/cli-args.d.ts.map +0 -1
  955. package/dist/tools/cli-checkpoint.d.ts +0 -24
  956. package/dist/tools/cli-checkpoint.d.ts.map +0 -1
  957. package/dist/tools/cli-command.d.ts +0 -70
  958. package/dist/tools/cli-command.d.ts.map +0 -1
  959. package/dist/tools/cli-format.d.ts +0 -49
  960. package/dist/tools/cli-format.d.ts.map +0 -1
  961. package/dist/tools/cli-installer.d.ts +0 -34
  962. package/dist/tools/cli-installer.d.ts.map +0 -1
  963. package/dist/tools/cli-invoke.d.ts +0 -143
  964. package/dist/tools/cli-invoke.d.ts.map +0 -1
  965. package/dist/tools/cli-manifest.d.ts +0 -80
  966. package/dist/tools/cli-manifest.d.ts.map +0 -1
  967. package/dist/tools/cli-policy.d.ts +0 -27
  968. package/dist/tools/cli-policy.d.ts.map +0 -1
  969. package/dist/tools/cli-profile.d.ts +0 -40
  970. package/dist/tools/cli-profile.d.ts.map +0 -1
  971. package/dist/tools/cli-signature.d.ts +0 -81
  972. package/dist/tools/cli-signature.d.ts.map +0 -1
  973. package/dist/tools/cli-stream.d.ts +0 -93
  974. package/dist/tools/cli-stream.d.ts.map +0 -1
  975. package/dist/tools/cli-update.d.ts +0 -126
  976. package/dist/tools/cli-update.d.ts.map +0 -1
  977. package/dist/tools/cli-view.d.ts +0 -12
  978. package/dist/tools/cli-view.d.ts.map +0 -1
  979. package/dist/tools/cli-wait.d.ts +0 -54
  980. package/dist/tools/cli-wait.d.ts.map +0 -1
  981. package/dist/tools/cli.d.ts +0 -94
  982. package/dist/tools/cli.d.ts.map +0 -1
  983. package/dist/tools/coerce.d.ts.map +0 -1
  984. package/dist/tools/connections/index.d.ts +0 -20
  985. package/dist/tools/connections/index.d.ts.map +0 -1
  986. package/dist/tools/connections/index.js +0 -1107
  987. package/dist/tools/define-download-tool.d.ts +0 -18
  988. package/dist/tools/define-download-tool.d.ts.map +0 -1
  989. package/dist/tools/define-upload-tool.d.ts +0 -16
  990. package/dist/tools/define-upload-tool.d.ts.map +0 -1
  991. package/dist/tools/define-view-file-tool.d.ts +0 -10
  992. package/dist/tools/define-view-file-tool.d.ts.map +0 -1
  993. package/dist/tools/define-wait-tool.d.ts +0 -22
  994. package/dist/tools/define-wait-tool.d.ts.map +0 -1
  995. package/dist/tools/download-core.d.ts +0 -20
  996. package/dist/tools/download-core.d.ts.map +0 -1
  997. package/dist/tools/flatten-join.d.ts.map +0 -1
  998. package/dist/tools/flatten.d.ts.map +0 -1
  999. package/dist/tools/json-schema-dialect.d.ts +0 -17
  1000. package/dist/tools/json-schema-dialect.d.ts.map +0 -1
  1001. package/dist/tools/json-schema.d.ts.map +0 -1
  1002. package/dist/tools/managed-file-error.d.ts +0 -6
  1003. package/dist/tools/managed-file-error.d.ts.map +0 -1
  1004. package/dist/tools/mcp-app.d.ts +0 -62
  1005. package/dist/tools/mcp-app.d.ts.map +0 -1
  1006. package/dist/tools/mcp-catalog.d.ts +0 -68
  1007. package/dist/tools/mcp-catalog.d.ts.map +0 -1
  1008. package/dist/tools/mcp-handler.d.ts +0 -46
  1009. package/dist/tools/mcp-handler.d.ts.map +0 -1
  1010. package/dist/tools/mcp-prepare.d.ts +0 -75
  1011. package/dist/tools/mcp-prepare.d.ts.map +0 -1
  1012. package/dist/tools/mcp-progress.d.ts +0 -46
  1013. package/dist/tools/mcp-progress.d.ts.map +0 -1
  1014. package/dist/tools/mcp-round-policy.d.ts +0 -33
  1015. package/dist/tools/mcp-round-policy.d.ts.map +0 -1
  1016. package/dist/tools/mcp-round.d.ts +0 -61
  1017. package/dist/tools/mcp-round.d.ts.map +0 -1
  1018. package/dist/tools/mcp-stdio-signals.d.ts +0 -33
  1019. package/dist/tools/mcp-stdio-signals.d.ts.map +0 -1
  1020. package/dist/tools/mcp-stdio.d.ts +0 -20
  1021. package/dist/tools/mcp-stdio.d.ts.map +0 -1
  1022. package/dist/tools/mcp-trace.d.ts +0 -12
  1023. package/dist/tools/mcp-trace.d.ts.map +0 -1
  1024. package/dist/tools/mcp.d.ts +0 -152
  1025. package/dist/tools/mcp.d.ts.map +0 -1
  1026. package/dist/tools/mount-download.d.ts +0 -41
  1027. package/dist/tools/mount-download.d.ts.map +0 -1
  1028. package/dist/tools/mount-upload.d.ts +0 -21
  1029. package/dist/tools/mount-upload.d.ts.map +0 -1
  1030. package/dist/tools/mount-wait.d.ts.map +0 -1
  1031. package/dist/tools/native-mcp.d.ts +0 -20
  1032. package/dist/tools/native-mcp.d.ts.map +0 -1
  1033. package/dist/tools/native-result.d.ts.map +0 -1
  1034. package/dist/tools/oauth-metadata.d.ts +0 -28
  1035. package/dist/tools/oauth-metadata.d.ts.map +0 -1
  1036. package/dist/tools/oauth-provider.d.ts +0 -184
  1037. package/dist/tools/oauth-provider.d.ts.map +0 -1
  1038. package/dist/tools/portable-formats.d.ts.map +0 -1
  1039. package/dist/tools/presentation.d.ts +0 -22
  1040. package/dist/tools/presentation.d.ts.map +0 -1
  1041. package/dist/tools/schema.d.ts.map +0 -1
  1042. package/dist/tools/untyped-properties.d.ts.map +0 -1
  1043. package/dist/tools/upload-core.d.ts +0 -4
  1044. package/dist/tools/upload-core.d.ts.map +0 -1
  1045. package/dist/tools/view-file-contract.d.ts.map +0 -1
  1046. package/dist/tools/view-file.d.ts +0 -62
  1047. package/dist/tools/view-file.d.ts.map +0 -1
  1048. package/dist/tools/wait-core.d.ts.map +0 -1
  1049. package/dist/tools-contract.d.ts +0 -29
  1050. package/dist/tools-contract.d.ts.map +0 -1
  1051. package/dist/tools-contract.js +0 -24
  1052. package/dist/tools.d.ts +0 -50
  1053. package/dist/tools.d.ts.map +0 -1
  1054. package/dist/tools.js +0 -2930
  1055. package/dist/tracking-server.d.ts +0 -15
  1056. package/dist/tracking-server.d.ts.map +0 -1
  1057. package/dist/tracking.d.ts +0 -24
  1058. package/dist/tracking.d.ts.map +0 -1
  1059. package/dist/tracking.js +0 -1092
  1060. package/dist/upgrade-cli.d.ts.map +0 -1
  1061. package/dist/upgrade-cli.js +0 -177
  1062. /package/dist/{retained.d.ts → browser/retained.d.ts} +0 -0
  1063. /package/dist/{declaration.d.ts → declaration/declaration.d.ts} +0 -0
  1064. /package/dist/{upgrade-cli.d.ts → entrypoints/bin/upgrade-cli.d.ts} +0 -0
  1065. /package/dist/{tracking-server.js → entrypoints/tracking/server.js} +0 -0
  1066. /package/dist/{google.d.ts → google/google.d.ts} +0 -0
  1067. /package/dist/{index-pq95qkbf.js → index-5jm36zv1.js} +0 -0
  1068. /package/dist/{application → internal}/channel.d.ts +0 -0
  1069. /package/dist/{logger.d.ts → internal/logger.d.ts} +0 -0
  1070. /package/dist/{server → internal}/request.d.ts +0 -0
  1071. /package/dist/{tools → json-schema}/json-schema.d.ts +0 -0
  1072. /package/dist/tools/{async-operation-contract.d.ts → operations/async-operation-contract.d.ts} +0 -0
  1073. /package/dist/tools/{mount-wait.d.ts → operations/mount-wait.d.ts} +0 -0
  1074. /package/dist/tools/{wait-core.d.ts → operations/wait-core.d.ts} +0 -0
  1075. /package/dist/tools/{coerce.d.ts → schema/coerce.d.ts} +0 -0
  1076. /package/dist/tools/{flatten-join.d.ts → schema/flatten-join.d.ts} +0 -0
  1077. /package/dist/tools/{flatten.d.ts → schema/flatten.d.ts} +0 -0
  1078. /package/dist/tools/{portable-formats.d.ts → schema/portable-formats.d.ts} +0 -0
  1079. /package/dist/tools/{schema.d.ts → schema/schema.d.ts} +0 -0
  1080. /package/dist/tools/{untyped-properties.d.ts → schema/untyped-properties.d.ts} +0 -0
  1081. /package/dist/tools/{native-result.d.ts → transfer/native-result.d.ts} +0 -0
  1082. /package/dist/tools/{view-file-contract.d.ts → transfer/view-file-contract.d.ts} +0 -0
@@ -1,1745 +0,0 @@
1
- import {
2
- DEFAULT_STREAM_HEARTBEAT_MS,
3
- UnixClientTransportError,
4
- bindProcessSignals,
5
- bindRealtimeServer,
6
- composeWebSocketHandlers,
7
- createHandler,
8
- createSocketIOServer,
9
- createUnixClientTransport,
10
- ndjsonRoute,
11
- parseMultipart,
12
- socketIoLane,
13
- sseRoute,
14
- streamingRoute,
15
- webSocketLane
16
- } from "../index-n0f51dfn.js";
17
- import"../index-y91ry9h2.js";
18
- import {
19
- withDeadline
20
- } from "../index-b9aefrqd.js";
21
- import {
22
- ShutdownOptionsSchema,
23
- ShutdownResultSchema,
24
- ShutdownStateSchema,
25
- ShutdownStatusSchema,
26
- createServerLifecycle
27
- } from "../index-3z73fh2c.js";
28
- import"../index-f477k430.js";
29
- import"../index-2qzskm8h.js";
30
- import {
31
- inputIsQuery,
32
- parseSSE,
33
- streamSSE
34
- } from "../index-v5573g1k.js";
35
- import {
36
- composeAuthHooks,
37
- createAuthHook,
38
- createBearerResolver,
39
- defineCookie,
40
- extractToken,
41
- parseCookieHeader,
42
- parseCookies,
43
- serializeCookie,
44
- signJwt,
45
- verifyJwt,
46
- verifyPkce
47
- } from "../index-sr93cwf9.js";
48
- import {
49
- deriveCodeChallenge
50
- } from "../index-hr4tzbwq.js";
51
- import {
52
- DEFAULT_CORS_ALLOW_HEADERS,
53
- DEFAULT_CORS_EXPOSE_HEADERS,
54
- corsHeaders,
55
- corsPreflightResponse,
56
- createImplement,
57
- createImplementRegistry,
58
- createMultipartStream,
59
- createScopedImplement,
60
- createScopedImplementRegistry,
61
- defineMultipartStream,
62
- implement,
63
- implementRegistry
64
- } from "../index-cxqhvq21.js";
65
- import {
66
- isWithinDir,
67
- realPathWithinDir
68
- } from "../index-sbdmyz75.js";
69
- import {
70
- getTraceId
71
- } from "../index-tmwcrptx.js";
72
- import {
73
- extractIp,
74
- generateTraceId,
75
- getClientInfo,
76
- isPublicIp,
77
- resolveSocketIp,
78
- resolveTraceId
79
- } from "../index-f9mb610r.js";
80
- import {
81
- errorCode,
82
- formatZodError,
83
- normalizeError,
84
- zodIssues
85
- } from "../index-e0znv5gn.js";
86
- import {
87
- DEFAULT_CONTRACT_STREAM_FRAME_BYTES,
88
- joinRoutePath,
89
- parseTrailingWildcard
90
- } from "../index-0a349c33.js";
91
- import"../index-rxfy4cq7.js";
92
- import"../index-6k1937bx.js";
93
- import"../index-zcgf3gqf.js";
94
- import {
95
- jsonSchemaFields,
96
- toJsonSchema
97
- } from "../index-cby4ar3v.js";
98
- import {
99
- AppError,
100
- STITCH_ERROR_STATUS,
101
- appError,
102
- badRequest,
103
- conflict,
104
- forbidden,
105
- isStitchErrorCode,
106
- notFound,
107
- rateLimited,
108
- unauthorized
109
- } from "../index-2vtcmrj9.js";
110
- import"../index-kzfs85xp.js";
111
- import {
112
- isRecord
113
- } from "../index-77fekveh.js";
114
- // src/realtime/registry.ts
115
- var authorizedRoom = Symbol("stitchkit.authorized-room");
116
- function freezeRoom(name) {
117
- return Object.freeze({ name, [authorizedRoom]: true });
118
- }
119
- function bindSocketRegistry(server, options) {
120
- const members = new Map;
121
- const minted = new WeakSet;
122
- let revision = 0;
123
- let closed = false;
124
- const setups = new Set;
125
- const maxBufferedFrames = Math.max(1, options.maxBufferedFrames ?? 1000);
126
- const token = (name) => {
127
- const created = freezeRoom(name);
128
- minted.add(created);
129
- return created;
130
- };
131
- const assertToken = (room) => {
132
- if (!minted.has(room))
133
- throw new Error("Room was not authorized by this registry");
134
- return room.name;
135
- };
136
- const leaveQuietly = async (member, room) => {
137
- try {
138
- await member.connection.raw.leave(room);
139
- } catch {}
140
- };
141
- const remove = async (member) => {
142
- if (member.disconnected)
143
- return;
144
- member.disconnected = true;
145
- member.connection.raw.off?.("disconnect", member.disconnect);
146
- members.delete(member.connection.raw.id);
147
- for (const room of member.joined)
148
- await leaveQuietly(member, room);
149
- member.joined.clear();
150
- member.buffer = null;
151
- revision += 1;
152
- };
153
- const replayMember = async (member) => {
154
- if (!options.replay || member.disconnected || closed)
155
- return !member.disconnected && !closed;
156
- const attempts = Math.max(1, options.replayAttempts ?? 3);
157
- for (let attempt = 0;attempt < attempts && !member.disconnected && !closed; attempt += 1) {
158
- member.buffer = [];
159
- member.overflow = false;
160
- const before = await options.revision?.();
161
- if (member.disconnected || closed)
162
- break;
163
- const frames = await options.replay({
164
- identity: member.identity,
165
- rooms: Object.freeze([...member.joined].map(token)),
166
- revision: before
167
- });
168
- const after = await options.revision?.();
169
- if (member.disconnected || closed)
170
- break;
171
- if (options.revision && !Object.is(before, after))
172
- continue;
173
- if (member.overflow)
174
- continue;
175
- for (const frame of frames)
176
- member.connection.events.emit(frame.event, ...frame.args);
177
- const buffered = member.buffer;
178
- member.buffer = null;
179
- for (const deferred of buffered ?? [])
180
- deferred();
181
- return !member.disconnected && !closed;
182
- }
183
- member.buffer = null;
184
- member.overflow = false;
185
- if (!member.disconnected)
186
- await options.onResyncRequired?.(member.connection.raw.id, member.identity);
187
- return false;
188
- };
189
- const resyncMember = (member) => {
190
- if (member.replayPromise)
191
- return member.replayPromise;
192
- const active = replayMember(member).finally(() => {
193
- if (member.replayPromise === active)
194
- member.replayPromise = undefined;
195
- });
196
- member.replayPromise = active;
197
- return active;
198
- };
199
- const setupConnection = async (connection) => {
200
- if (closed)
201
- return;
202
- const member = {
203
- connection,
204
- identity: connection.raw.data,
205
- authorized: new Set,
206
- joined: new Set,
207
- buffer: null,
208
- overflow: false,
209
- disconnected: false,
210
- disconnect: () => {
211
- return;
212
- }
213
- };
214
- member.disconnect = () => void remove(member);
215
- connection.raw.on("disconnect", member.disconnect);
216
- members.set(connection.raw.id, member);
217
- try {
218
- const authorized = new Set(await options.rooms(connection.raw.data));
219
- if (member.disconnected || closed) {
220
- await remove(member);
221
- return;
222
- }
223
- member.authorized = authorized;
224
- for (const name of authorized) {
225
- await connection.raw.join(name);
226
- if (member.disconnected || closed) {
227
- await leaveQuietly(member, name);
228
- await remove(member);
229
- return;
230
- }
231
- member.joined.add(name);
232
- }
233
- if (closed) {
234
- await remove(member);
235
- return;
236
- }
237
- revision += 1;
238
- await resyncMember(member);
239
- } catch {
240
- await remove(member);
241
- }
242
- };
243
- const stopListening = server.onConnection((connection) => {
244
- let setup;
245
- setup = setupConnection(connection).finally(() => setups.delete(setup));
246
- setups.add(setup);
247
- return setup;
248
- });
249
- return {
250
- room: token,
251
- async join(socketId, room) {
252
- const name = assertToken(room);
253
- const member = members.get(socketId);
254
- if (!member)
255
- throw new Error(`Unknown socket: ${socketId}`);
256
- if (!member.authorized.has(name))
257
- throw new Error(`Socket is not authorized for room: ${name}`);
258
- if (member.joined.has(name))
259
- return;
260
- await member.connection.raw.join(name);
261
- if (!member.disconnected)
262
- member.joined.add(name);
263
- revision += 1;
264
- },
265
- async leave(socketId, room) {
266
- const name = assertToken(room);
267
- const member = members.get(socketId);
268
- if (!member?.joined.has(name))
269
- return;
270
- await member.connection.raw.leave(name);
271
- member.joined.delete(name);
272
- revision += 1;
273
- },
274
- emitTo(room, event, ...args) {
275
- const name = assertToken(room);
276
- let recipients = 0;
277
- for (const member of members.values()) {
278
- if (!member.joined.has(name) || member.disconnected)
279
- continue;
280
- recipients += 1;
281
- if (!member.buffer) {
282
- member.connection.events.emit(event, ...args);
283
- } else if (member.buffer.length >= maxBufferedFrames) {
284
- member.overflow = true;
285
- } else {
286
- member.buffer.push(() => member.connection.events.emit(event, ...args));
287
- }
288
- }
289
- return recipients;
290
- },
291
- resync: async (socketId) => {
292
- const member = members.get(socketId);
293
- return member ? resyncMember(member) : false;
294
- },
295
- snapshot() {
296
- const connections = [...members.values()].map((member) => Object.freeze({
297
- socketId: member.connection.raw.id,
298
- identity: member.identity,
299
- rooms: Object.freeze([...member.joined].sort()),
300
- replaying: member.buffer !== null
301
- }));
302
- const roomMap = {};
303
- for (const entry of connections) {
304
- for (const name of entry.rooms) {
305
- roomMap[name] = Object.freeze([...roomMap[name] ?? [], entry.socketId]);
306
- }
307
- }
308
- return Object.freeze({
309
- revision,
310
- connections: Object.freeze(connections),
311
- rooms: Object.freeze(roomMap)
312
- });
313
- },
314
- async unbind() {
315
- if (closed)
316
- return;
317
- closed = true;
318
- stopListening();
319
- await Promise.allSettled([...setups]);
320
- const active = [...members.values()];
321
- for (const member of active)
322
- await remove(member);
323
- }
324
- };
325
- }
326
- // src/server/bun.ts
327
- import { chmodSync, statSync, unlinkSync } from "node:fs";
328
- function reclaimStaleUnixSocket(path) {
329
- const stats = statSync(path, { throwIfNoEntry: false });
330
- if (stats === undefined)
331
- return;
332
- if (!stats.isSocket()) {
333
- throw new Error(`[stitchkit] createServer: "${path}" exists and is not a socket — refusing to remove it; remove it manually if it is debris`);
334
- }
335
- if (typeof process.getuid === "function" && stats.uid !== process.getuid()) {
336
- throw new Error(`[stitchkit] createServer: unix socket "${path}" is owned by another user — refusing to reclaim it`);
337
- }
338
- const standalone = Bun.main.startsWith("/$bunfs/");
339
- const interpreter = standalone ? Bun.which("bun") : process.execPath;
340
- if (!interpreter) {
341
- throw new Error(`[stitchkit] createServer: unix socket "${path}" already exists and no \`bun\` binary is on PATH to probe it from this compiled executable — remove the file manually if the previous process is dead`);
342
- }
343
- const probe = Bun.spawnSync({
344
- cmd: [
345
- interpreter,
346
- "-e",
347
- 'try { const socket = await Bun.connect({ unix: Bun.env.STITCHKIT_UNIX_PROBE ?? "", socket: { data() { return undefined; } } }); socket.end(); process.exit(0); } catch (error) { process.exit(error && typeof error === "object" && "code" in error && error.code === "EACCES" ? 2 : 1); }'
348
- ],
349
- env: { ...process.env, STITCHKIT_UNIX_PROBE: path },
350
- timeout: 2000
351
- });
352
- if (probe.exitedDueToTimeout) {
353
- throw new Error(`[stitchkit] createServer: liveness probe for unix socket "${path}" timed out — refusing to reclaim; remove the file manually if the previous process is dead`);
354
- }
355
- if (probe.exitCode === 0 || probe.exitCode === 2) {
356
- throw new Error(`[stitchkit] createServer: unix socket "${path}" is already in use${probe.exitCode === 2 ? " (connect permission denied)" : " by a live listener"}`);
357
- }
358
- unlinkSync(path);
359
- }
360
- function createServer(config) {
361
- const {
362
- websocket: configuredWebSocket,
363
- socket,
364
- development,
365
- bun: bunExtra,
366
- port = 3000,
367
- hostname
368
- } = config;
369
- const unixPath = typeof config.unix === "string" ? config.unix : config.unix?.path;
370
- const unixMode = typeof config.unix === "string" ? undefined : config.unix?.mode;
371
- if (unixPath !== undefined) {
372
- if (unixPath.length === 0) {
373
- throw new Error("[stitchkit] createServer: `unix` must be a non-empty socket path");
374
- }
375
- if (config.port !== undefined || config.hostname !== undefined) {
376
- throw new Error("[stitchkit] createServer: `unix` is mutually exclusive with `port`/`hostname`");
377
- }
378
- if (socket) {
379
- throw new Error("[stitchkit] createServer: the Socket.IO lifecycle cannot listen on a unix socket — socket.io clients dial TCP only");
380
- }
381
- }
382
- const socketRoutePrefix = socket?.route.path.replace(/\*socketPath$/, "");
383
- const websocket = configuredWebSocket ?? socket?.websocket;
384
- const openSockets = new Set;
385
- const socketDrainWaiters = new Set;
386
- let hadWebSockets = false;
387
- const resolveSocketDrain = () => {
388
- if (openSockets.size !== 0)
389
- return;
390
- for (const resolve of socketDrainWaiters)
391
- resolve();
392
- socketDrainWaiters.clear();
393
- };
394
- const waitForSocketDrain = () => {
395
- if (openSockets.size === 0)
396
- return Promise.resolve();
397
- return new Promise((resolve) => socketDrainWaiters.add(resolve));
398
- };
399
- const waitForRequestDrain = async (server2) => {
400
- while (server2.pendingRequests > 0) {
401
- await new Promise((resolve) => setTimeout(resolve, 5));
402
- }
403
- };
404
- const trackedWebSocket = websocket ? {
405
- ...websocket,
406
- open(ws) {
407
- hadWebSockets = true;
408
- openSockets.add(ws);
409
- websocket.open?.(ws);
410
- },
411
- close(ws, code, reason) {
412
- openSockets.delete(ws);
413
- resolveSocketDrain();
414
- websocket.close?.(ws, code, reason);
415
- }
416
- } : undefined;
417
- let runtime;
418
- const requireRuntime = () => {
419
- if (!runtime)
420
- throw new Error("[stitchkit] Bun server lifecycle started before Bun.serve");
421
- return runtime;
422
- };
423
- const adapter = {
424
- beginShutdown: () => socket?.beginShutdown(),
425
- pendingRequests: () => runtime?.pendingRequests ?? 0,
426
- pendingWebSockets: () => openSockets.size,
427
- async closeRealtime() {
428
- const logicalClose = socket?.close();
429
- for (const ws of openSockets)
430
- ws.close(1001, "Server shutting down");
431
- await Promise.all([logicalClose, waitForSocketDrain()]);
432
- },
433
- async terminateRealtime() {
434
- const count = openSockets.size;
435
- const physicalClose = waitForSocketDrain();
436
- for (const ws of [...openSockets])
437
- ws.terminate();
438
- await physicalClose;
439
- return count;
440
- },
441
- async stopGracefully() {
442
- await new Promise((resolve) => setTimeout(resolve, 0));
443
- const server2 = requireRuntime();
444
- if (server2.pendingRequests === 0 && openSockets.size === 0) {
445
- const stopping2 = server2.stop(true);
446
- if (!hadWebSockets)
447
- await stopping2;
448
- else
449
- stopping2.catch(() => {
450
- return;
451
- });
452
- return;
453
- }
454
- const stopping = server2.stop(false);
455
- if (!hadWebSockets) {
456
- await stopping;
457
- return;
458
- }
459
- stopping.catch(() => {
460
- return;
461
- });
462
- await waitForRequestDrain(server2);
463
- },
464
- async forceStop() {
465
- const logicalClose = socket?.close();
466
- const physicalClose = waitForSocketDrain();
467
- for (const ws of [...openSockets])
468
- ws.terminate();
469
- const stopping = requireRuntime().stop(true);
470
- if (!hadWebSockets)
471
- await stopping;
472
- else
473
- stopping.catch(() => {
474
- return;
475
- });
476
- await Promise.all([logicalClose, physicalClose]);
477
- }
478
- };
479
- const lifecycle = createServerLifecycle(() => adapter);
480
- const handler = createHandler(config);
481
- const consumerFetch = config.wrapFetch ? config.wrapFetch(handler) : handler;
482
- const admittedFetch = lifecycle.wrapFetch(consumerFetch);
483
- const fetch = async (request, server2) => {
484
- if (socket && socketRoutePrefix) {
485
- const pathname = new URL(request.url).pathname;
486
- if (pathname.startsWith(socketRoutePrefix)) {
487
- return await socket.route.handler(request, {
488
- params: { socketPath: pathname.slice(socketRoutePrefix.length) },
489
- server: server2
490
- });
491
- }
492
- }
493
- return admittedFetch(request, server2);
494
- };
495
- if (unixPath !== undefined) {
496
- reclaimStaleUnixSocket(unixPath);
497
- const { reusePort, ipv6Only, http3, http2, http1, idleTimeout, ...unixExtra } = bunExtra ?? {};
498
- runtime = trackedWebSocket ? Bun.serve({
499
- ...unixExtra,
500
- ...development && { development },
501
- unix: unixPath,
502
- websocket: trackedWebSocket,
503
- fetch
504
- }) : Bun.serve({
505
- ...unixExtra,
506
- ...development && { development },
507
- unix: unixPath,
508
- fetch
509
- });
510
- if (unixMode !== undefined)
511
- chmodSync(unixPath, unixMode);
512
- } else {
513
- runtime = trackedWebSocket ? Bun.serve({
514
- ...bunExtra,
515
- ...development && { development },
516
- port,
517
- hostname,
518
- websocket: trackedWebSocket,
519
- fetch
520
- }) : Bun.serve({
521
- ...bunExtra,
522
- ...development && { development },
523
- port,
524
- hostname,
525
- fetch
526
- });
527
- }
528
- const server = runtime;
529
- return {
530
- url: server.url.toString().replace(/\/$/, ""),
531
- port: server.port ?? (unixPath !== undefined ? 0 : port),
532
- runtime: server,
533
- get status() {
534
- return lifecycle.status;
535
- },
536
- shutdown: lifecycle.shutdown
537
- };
538
- }
539
- // src/server/swept-map.ts
540
- function createSweptMap(options) {
541
- const store = new Map;
542
- const timer = setInterval(() => {
543
- const now = Date.now();
544
- for (const [key, value] of store) {
545
- if (options.isExpired(value, now))
546
- store.delete(key);
547
- }
548
- }, options.intervalMs);
549
- timer.unref();
550
- return {
551
- store,
552
- destroy() {
553
- clearInterval(timer);
554
- store.clear();
555
- }
556
- };
557
- }
558
-
559
- // src/server/cache.ts
560
- function createCache(options = {}) {
561
- const maxEntries = options.maxEntries ?? 1000;
562
- if (!Number.isInteger(maxEntries) || maxEntries < 1) {
563
- throw new Error("cache.maxEntries must be a positive integer");
564
- }
565
- const { store, destroy } = createSweptMap({
566
- intervalMs: 30000,
567
- isExpired: (entry, now) => entry.expiresAt < now
568
- });
569
- return {
570
- destroy,
571
- get(key) {
572
- const entry = store.get(key);
573
- if (!entry)
574
- return null;
575
- if (entry.expiresAt < Date.now()) {
576
- store.delete(key);
577
- return null;
578
- }
579
- return entry.data;
580
- },
581
- set(key, data, maxAgeSeconds) {
582
- if (!Number.isFinite(maxAgeSeconds) || maxAgeSeconds < 0) {
583
- throw new Error("cache maxAgeSeconds must be a non-negative finite number");
584
- }
585
- store.delete(key);
586
- store.set(key, { data, expiresAt: Date.now() + maxAgeSeconds * 1000 });
587
- while (store.size > maxEntries) {
588
- const oldest = store.keys().next().value;
589
- if (oldest === undefined)
590
- break;
591
- store.delete(oldest);
592
- }
593
- },
594
- invalidate(prefix) {
595
- for (const key of store.keys()) {
596
- if (key.startsWith(prefix))
597
- store.delete(key);
598
- }
599
- },
600
- clear() {
601
- store.clear();
602
- }
603
- };
604
- }
605
- function cacheHeaders(maxAge, scope = "public") {
606
- return {
607
- "Cache-Control": `${scope}, max-age=${maxAge}`
608
- };
609
- }
610
- // src/server/error-hook.ts
611
- function createErrorHook(config) {
612
- if (config.vocabulary && (config.codeMap !== undefined || config.unmappedCode !== undefined)) {
613
- throw new Error("[stitchkit] createErrorHook: `vocabulary` carries the wire map — it cannot be combined with `codeMap` or `unmappedCode`");
614
- }
615
- return async (ctx, error, endpoint) => {
616
- const appErr = normalizeError(error);
617
- const stitchCode = isStitchErrorCode(appErr.code) ? appErr.code : undefined;
618
- const vocabularyMap = config.vocabulary?.codeMap;
619
- const configuredMap = vocabularyMap ?? config.codeMap;
620
- const mapped = stitchCode === undefined ? undefined : configuredMap?.[stitchCode];
621
- const fallback = mapped === undefined && stitchCode !== undefined ? typeof config.unmappedCode === "function" ? config.unmappedCode(stitchCode) : config.unmappedCode : undefined;
622
- const code = mapped ?? fallback ?? appErr.code;
623
- const info = {
624
- code,
625
- status: appErr.status,
626
- message: appErr.message,
627
- details: appErr.details,
628
- hint: appErr.hint
629
- };
630
- await config.onError?.(error, info, ctx, endpoint);
631
- const body = await config.render(info, ctx, endpoint);
632
- return new Response(JSON.stringify(body), {
633
- status: info.status,
634
- headers: { "content-type": "application/json" }
635
- });
636
- };
637
- }
638
- // src/server/event-bus.ts
639
- function isDecision(value) {
640
- if (typeof value !== "object" || value === null)
641
- return false;
642
- const outcome = Reflect.get(value, "outcome");
643
- if (outcome === "allow" || outcome === "defer")
644
- return true;
645
- return outcome === "deny" && typeof Reflect.get(value, "reason") === "string";
646
- }
647
- function createEventBus(options = {}) {
648
- const subscriptions = new Map;
649
- const declared = options.topics;
650
- function add(event, fn, once) {
651
- let set = subscriptions.get(event);
652
- if (!set) {
653
- set = new Set;
654
- subscriptions.set(event, set);
655
- }
656
- const sub = { fn, once };
657
- set.add(sub);
658
- return () => {
659
- set.delete(sub);
660
- };
661
- }
662
- function declarationFor(event, verb) {
663
- if (declared === undefined) {
664
- if (verb === "emit")
665
- return;
666
- throw new Error(`[stitchkit] event bus: ${verb}("${event}") needs declared topics — pass \`topics\` from defineEvents. Its delivery deadline and undecided outcome come from the declaration, and neither has a default.`);
667
- }
668
- const topic = Reflect.get(declared, event);
669
- if (topic === undefined) {
670
- throw new Error(`[stitchkit] event bus: "${event}" is not a declared topic. Declared: ${Object.keys(declared).join(", ") || "(none)"}.`);
671
- }
672
- const expected = { emit: "emit", serial: "emitSerial", decision: "decide" };
673
- if (expected[topic.mode] !== verb) {
674
- throw new Error(`[stitchkit] event bus: "${event}" is declared with mode '${topic.mode}', so it is delivered with ${expected[topic.mode]}(), not ${verb}().`);
675
- }
676
- return topic;
677
- }
678
- function planned(event) {
679
- const set = subscriptions.get(event) ?? new Set;
680
- return { set, subs: [...set] };
681
- }
682
- function report(error, event) {
683
- options.onListenerError?.(error, event);
684
- }
685
- return {
686
- emit(event, data) {
687
- declarationFor(event, "emit");
688
- const { set, subs } = planned(event);
689
- for (const sub of subs) {
690
- if (!set.has(sub))
691
- continue;
692
- if (sub.once)
693
- set.delete(sub);
694
- try {
695
- const result = sub.fn(data);
696
- if (result instanceof Promise)
697
- result.catch((err) => report(err, event));
698
- } catch (err) {
699
- report(err, event);
700
- }
701
- }
702
- },
703
- async emitSerial(event, data) {
704
- const topic = declarationFor(event, "emitSerial");
705
- const timeoutMs = topic?.listenerTimeoutMs ?? 0;
706
- const { set, subs } = planned(event);
707
- for (const sub of subs) {
708
- if (!set.has(sub))
709
- continue;
710
- if (sub.once)
711
- set.delete(sub);
712
- try {
713
- const outcome = await withDeadline(sub.fn(data), timeoutMs);
714
- if (!outcome.settled) {
715
- report(new Error(`listener did not settle within ${timeoutMs}ms`), event);
716
- }
717
- } catch (err) {
718
- report(err, event);
719
- }
720
- }
721
- },
722
- async decide(event, data) {
723
- const topic = declarationFor(event, "decide");
724
- const timeoutMs = topic?.listenerTimeoutMs ?? 0;
725
- const undecided = topic?.whenAllDefer ?? "deny";
726
- const { set, subs } = planned(event);
727
- let allowed = false;
728
- for (const sub of subs) {
729
- if (!set.has(sub))
730
- continue;
731
- if (sub.once)
732
- set.delete(sub);
733
- let vote;
734
- try {
735
- const outcome = await withDeadline(sub.fn(data), timeoutMs);
736
- if (!outcome.settled) {
737
- vote = { outcome: "deny", reason: `listener did not vote within ${timeoutMs}ms` };
738
- } else if (isDecision(outcome.value)) {
739
- vote = outcome.value;
740
- } else {
741
- vote = {
742
- outcome: "deny",
743
- reason: 'listener returned no decision — a decision listener returns { outcome: "allow" | "deny" | "defer" }'
744
- };
745
- }
746
- } catch (err) {
747
- vote = {
748
- outcome: "deny",
749
- reason: err instanceof Error ? `listener threw: ${err.message}` : "listener threw"
750
- };
751
- }
752
- if (vote.outcome === "deny") {
753
- report(new Error(vote.reason), event);
754
- return vote;
755
- }
756
- if (vote.outcome === "allow")
757
- allowed = true;
758
- }
759
- if (allowed)
760
- return { outcome: "allow" };
761
- return undecided === "allow" ? { outcome: "allow" } : { outcome: "deny", reason: "no listener claimed this event" };
762
- },
763
- on(event, handler) {
764
- return add(event, handler, false);
765
- },
766
- once(event, handler) {
767
- return add(event, handler, true);
768
- },
769
- off(event, handler) {
770
- const set = subscriptions.get(event);
771
- if (!set)
772
- return;
773
- for (const sub of set) {
774
- if (sub.fn === handler)
775
- set.delete(sub);
776
- }
777
- },
778
- clear() {
779
- subscriptions.clear();
780
- }
781
- };
782
- }
783
- // src/server/file.ts
784
- import { readFile, stat } from "node:fs/promises";
785
- import { resolve } from "node:path";
786
-
787
- // src/server/mime.ts
788
- import { extname } from "node:path";
789
- var MIME_BY_EXT = {
790
- ".html": "text/html; charset=utf-8",
791
- ".css": "text/css; charset=utf-8",
792
- ".js": "text/javascript; charset=utf-8",
793
- ".mjs": "text/javascript; charset=utf-8",
794
- ".json": "application/json; charset=utf-8",
795
- ".svg": "image/svg+xml",
796
- ".png": "image/png",
797
- ".jpg": "image/jpeg",
798
- ".jpeg": "image/jpeg",
799
- ".gif": "image/gif",
800
- ".webp": "image/webp",
801
- ".avif": "image/avif",
802
- ".ico": "image/x-icon",
803
- ".woff2": "font/woff2",
804
- ".txt": "text/plain; charset=utf-8",
805
- ".wasm": "application/wasm",
806
- ".mp4": "video/mp4",
807
- ".webm": "video/webm",
808
- ".mov": "video/quicktime",
809
- ".ogv": "video/ogg",
810
- ".mp3": "audio/mpeg",
811
- ".m4a": "audio/mp4",
812
- ".wav": "audio/wav",
813
- ".flac": "audio/flac",
814
- ".oga": "audio/ogg",
815
- ".ogg": "audio/ogg",
816
- ".pdf": "application/pdf",
817
- ".zip": "application/zip"
818
- };
819
- function mimeForPath(path) {
820
- return MIME_BY_EXT[extname(path).toLowerCase()] ?? "application/octet-stream";
821
- }
822
-
823
- // src/server/file.ts
824
- function staticRoute(prefix, dir) {
825
- const cleanPrefix = prefix.replace(/\/+$/, "");
826
- const root = resolve(dir.replace(/\/+$/, ""));
827
- return {
828
- method: "GET",
829
- path: `${cleanPrefix}/*filePath`,
830
- handler: async (req) => {
831
- const pathname = new URL(req.url).pathname;
832
- let rel;
833
- try {
834
- rel = decodeURIComponent(pathname.slice(cleanPrefix.length)).replace(/^\/+/, "");
835
- } catch {
836
- return new Response("Bad request", { status: 400 });
837
- }
838
- const target = resolve(root, rel);
839
- if (!isWithinDir(root, target))
840
- return new Response("Forbidden", { status: 403 });
841
- const realTarget = await realPathWithinDir(root, target);
842
- if (realTarget === null)
843
- return new Response("Not found", { status: 404 });
844
- const info = await stat(realTarget).catch(() => null);
845
- if (!info?.isFile())
846
- return new Response("Not found", { status: 404 });
847
- return new Response(await readFile(realTarget), {
848
- headers: {
849
- "Content-Type": mimeForPath(realTarget),
850
- "X-Content-Type-Options": "nosniff"
851
- }
852
- });
853
- }
854
- };
855
- }
856
- function parseByteRange(header, size) {
857
- if (!header)
858
- return null;
859
- const match = /^bytes=(.+)$/.exec(header.trim());
860
- const rawSpec = match?.[1];
861
- if (rawSpec === undefined)
862
- return null;
863
- const spec = rawSpec.trim();
864
- if (spec.includes(","))
865
- return null;
866
- const dash = spec.indexOf("-");
867
- if (dash === -1)
868
- return null;
869
- const startStr = spec.slice(0, dash).trim();
870
- const endStr = spec.slice(dash + 1).trim();
871
- if (startStr === "") {
872
- if (!/^\d+$/.test(endStr))
873
- return null;
874
- const suffix = Number(endStr);
875
- if (suffix === 0 || size === 0)
876
- return "unsatisfiable";
877
- return { start: Math.max(0, size - suffix), end: size - 1 };
878
- }
879
- if (!/^\d+$/.test(startStr))
880
- return null;
881
- const start = Number(startStr);
882
- if (size === 0 || start >= size)
883
- return "unsatisfiable";
884
- if (endStr === "")
885
- return { start, end: size - 1 };
886
- if (!/^\d+$/.test(endStr))
887
- return null;
888
- const end = Number(endStr);
889
- if (end < start)
890
- return null;
891
- return { start, end: end >= size ? size - 1 : end };
892
- }
893
- function weakETag(size, mtimeMs) {
894
- return `W/"${size.toString(16)}-${Math.floor(mtimeMs).toString(16)}"`;
895
- }
896
- function leSeconds(aMs, bMs) {
897
- return Math.floor(aMs / 1000) <= Math.floor(bMs / 1000);
898
- }
899
- function isNotModified(req, v) {
900
- const inm = req.headers.get("if-none-match");
901
- if (inm !== null) {
902
- const value = inm.trim();
903
- if (value === "*")
904
- return true;
905
- if (v.etag === undefined)
906
- return false;
907
- return value.split(",").map((t) => t.trim()).includes(v.etag);
908
- }
909
- const ims = req.headers.get("if-modified-since");
910
- if (ims !== null) {
911
- if (v.lastModifiedMs === undefined)
912
- return false;
913
- const since = Date.parse(ims);
914
- if (Number.isNaN(since))
915
- return false;
916
- return leSeconds(v.lastModifiedMs, since);
917
- }
918
- return false;
919
- }
920
- function ifRangeMatches(req, v) {
921
- const ir = req.headers.get("if-range");
922
- if (ir === null)
923
- return true;
924
- const value = ir.trim();
925
- if (v.etag !== undefined && value === v.etag)
926
- return true;
927
- if (v.lastModifiedMs !== undefined) {
928
- const asDate = Date.parse(value);
929
- if (!Number.isNaN(asDate))
930
- return leSeconds(v.lastModifiedMs, asDate);
931
- }
932
- return false;
933
- }
934
- function asciiFilename(filename) {
935
- let out = "";
936
- for (let i = 0;i < filename.length; i++) {
937
- const code = filename.charCodeAt(i);
938
- out += code >= 32 && code < 127 && code !== 34 && code !== 92 ? filename.charAt(i) : "_";
939
- }
940
- return out;
941
- }
942
- function contentDisposition(disposition, filename) {
943
- return `${disposition}; filename="${asciiFilename(filename)}"; filename*=UTF-8''${encodeURIComponent(filename)}`;
944
- }
945
- async function serveFile(req, opts) {
946
- if (req.method !== "GET" && req.method !== "HEAD") {
947
- return new Response("Method not allowed", {
948
- status: 405,
949
- headers: { Allow: "GET, HEAD" }
950
- });
951
- }
952
- const file = Bun.file(opts.path);
953
- if (!await file.exists()) {
954
- return new Response("Not found", { status: 404 });
955
- }
956
- const size = file.size;
957
- const mtimeMs = file.lastModified;
958
- const contentType = opts.contentType ?? mimeForPath(opts.path);
959
- const useEtag = opts.etag !== false;
960
- const useLastModified = opts.lastModified !== false;
961
- const etag = useEtag ? weakETag(size, mtimeMs) : undefined;
962
- const validators = {
963
- etag,
964
- lastModifiedMs: useLastModified ? mtimeMs : undefined
965
- };
966
- const isHead = req.method === "HEAD";
967
- const base = new Headers;
968
- base.set("Accept-Ranges", "bytes");
969
- base.set("X-Content-Type-Options", "nosniff");
970
- if (etag)
971
- base.set("ETag", etag);
972
- if (useLastModified)
973
- base.set("Last-Modified", new Date(mtimeMs).toUTCString());
974
- if (opts.cacheControl)
975
- base.set("Cache-Control", opts.cacheControl);
976
- if (opts.filename) {
977
- base.set("Content-Disposition", contentDisposition(opts.disposition ?? "inline", opts.filename));
978
- } else if (opts.disposition) {
979
- base.set("Content-Disposition", opts.disposition);
980
- }
981
- if ((useEtag || useLastModified) && isNotModified(req, validators)) {
982
- return new Response(null, { status: 304, headers: base });
983
- }
984
- const rangeHeader = req.headers.get("range");
985
- const range = rangeHeader !== null && ifRangeMatches(req, validators) ? parseByteRange(rangeHeader, size) : null;
986
- if (range === "unsatisfiable") {
987
- base.set("Content-Range", `bytes */${size}`);
988
- base.set("Content-Type", contentType);
989
- return new Response(null, { status: 416, headers: base });
990
- }
991
- if (range) {
992
- const length = range.end - range.start + 1;
993
- base.set("Content-Type", contentType);
994
- base.set("Content-Range", `bytes ${range.start}-${range.end}/${size}`);
995
- base.set("Content-Length", String(length));
996
- const body = isHead ? null : file.slice(range.start, range.end + 1);
997
- return new Response(body, { status: 206, headers: base });
998
- }
999
- base.set("Content-Type", contentType);
1000
- base.set("Content-Length", String(size));
1001
- return new Response(isHead ? null : file, { status: 200, headers: base });
1002
- }
1003
- // src/server/file-state-store.ts
1004
- import { mkdir, open, readdir, readFile as readFile2, rename, stat as stat2, unlink } from "node:fs/promises";
1005
- import { basename, dirname, join } from "node:path";
1006
- var ABANDONED_LOCK_MULTIPLIER = 10;
1007
- var ABANDONED_HEARTBEATS = 30;
1008
- var MIN_HEARTBEAT_MS = 10;
1009
- var delay = (milliseconds) => new Promise((resolve2) => setTimeout(resolve2, milliseconds));
1010
- async function missing(error) {
1011
- return error instanceof Error && "code" in error && error.code === "ENOENT";
1012
- }
1013
- function existing(error) {
1014
- return error instanceof Error && "code" in error && error.code === "EEXIST";
1015
- }
1016
- async function ownerState(lockPath) {
1017
- let owner;
1018
- try {
1019
- owner = JSON.parse(await readFile2(lockPath, "utf8"));
1020
- } catch {
1021
- return "unknown";
1022
- }
1023
- if (typeof owner !== "object" || owner === null || !("pid" in owner) || typeof owner.pid !== "number" || !Number.isSafeInteger(owner.pid) || owner.pid <= 0) {
1024
- return "unknown";
1025
- }
1026
- try {
1027
- process.kill(owner.pid, 0);
1028
- return "alive";
1029
- } catch (error) {
1030
- return error instanceof Error && "code" in error && error.code === "ESRCH" ? "gone" : "unknown";
1031
- }
1032
- }
1033
- async function sweepTemporaries(path, staleLockMs) {
1034
- const prefix = `${basename(path)}.tmp.`;
1035
- const directory = dirname(path);
1036
- let entries;
1037
- try {
1038
- entries = await readdir(directory);
1039
- } catch {
1040
- return;
1041
- }
1042
- for (const entry of entries) {
1043
- if (!entry.startsWith(prefix))
1044
- continue;
1045
- const candidate = join(directory, entry);
1046
- const info = await stat2(candidate).catch(() => null);
1047
- if (info && Date.now() - info.mtimeMs > staleLockMs) {
1048
- await unlink(candidate).catch(() => {
1049
- return;
1050
- });
1051
- }
1052
- }
1053
- }
1054
- async function reclaim(lockPath, observed, staleLockMs, abandonedAfterMs) {
1055
- const guardPath = `${lockPath}.reclaim`;
1056
- let guard;
1057
- try {
1058
- guard = await open(guardPath, "wx");
1059
- } catch (error) {
1060
- if (!existing(error))
1061
- throw error;
1062
- const orphan = await stat2(guardPath).catch(() => null);
1063
- if (orphan && Date.now() - orphan.mtimeMs > staleLockMs) {
1064
- await unlink(guardPath).catch(() => {
1065
- return;
1066
- });
1067
- }
1068
- return false;
1069
- }
1070
- try {
1071
- const current = await stat2(lockPath).catch(() => null);
1072
- if (!current || current.dev !== observed.dev || current.ino !== observed.ino || current.mtimeMs !== observed.mtimeMs) {
1073
- return false;
1074
- }
1075
- const owner = await ownerState(lockPath);
1076
- const age = Date.now() - current.mtimeMs;
1077
- if (owner !== "gone" && age < abandonedAfterMs)
1078
- return false;
1079
- await unlink(lockPath);
1080
- return true;
1081
- } finally {
1082
- await guard.close().catch(() => {
1083
- return;
1084
- });
1085
- await unlink(guardPath).catch(() => {
1086
- return;
1087
- });
1088
- }
1089
- }
1090
- function createFileStateStore(path, options) {
1091
- const lockPath = `${path}.lock`;
1092
- const lockTimeoutMs = options.lockTimeoutMs ?? 1e4;
1093
- const staleLockMs = options.staleLockMs ?? 3000;
1094
- const retryMs = options.retryMs ?? 10;
1095
- const heartbeatMs = Math.max(MIN_HEARTBEAT_MS, Math.floor(staleLockMs / 3));
1096
- const abandonedAfterMs = Math.max(staleLockMs * ABANDONED_LOCK_MULTIPLIER, heartbeatMs * ABANDONED_HEARTBEATS);
1097
- if (staleLockMs >= lockTimeoutMs) {
1098
- throw new Error(`[stitchkit] createFileStateStore: staleLockMs (${staleLockMs}) must be below lockTimeoutMs (${lockTimeoutMs}), or a crashed holder blocks every update until the timeout`);
1099
- }
1100
- let sweptTemporaries = false;
1101
- const parseFile = async () => {
1102
- let source;
1103
- try {
1104
- source = await readFile2(path, "utf8");
1105
- } catch (error) {
1106
- if (await missing(error))
1107
- return null;
1108
- throw error;
1109
- }
1110
- try {
1111
- return options.schema.parse(JSON.parse(source));
1112
- } catch (error) {
1113
- await options.onCorrupt?.({ path, error });
1114
- if ((options.corrupt ?? "throw") === "empty")
1115
- return null;
1116
- throw error;
1117
- }
1118
- };
1119
- const acquire = async () => {
1120
- await mkdir(dirname(path), { recursive: true });
1121
- if (!sweptTemporaries) {
1122
- sweptTemporaries = true;
1123
- await sweepTemporaries(path, staleLockMs);
1124
- }
1125
- const deadline = Date.now() + lockTimeoutMs;
1126
- while (true) {
1127
- try {
1128
- const handle = await open(lockPath, "wx");
1129
- const token = crypto.randomUUID();
1130
- try {
1131
- await handle.writeFile(JSON.stringify({ token, pid: process.pid, acquiredAt: Date.now() }));
1132
- await handle.sync();
1133
- } catch (error) {
1134
- await handle.close().catch(() => {
1135
- return;
1136
- });
1137
- await unlink(lockPath).catch(() => {
1138
- return;
1139
- });
1140
- throw error;
1141
- }
1142
- return {
1143
- refresh: async () => {
1144
- const now = new Date;
1145
- await handle.utimes(now, now);
1146
- },
1147
- release: async () => {
1148
- await handle.close();
1149
- try {
1150
- const owner = JSON.parse(await readFile2(lockPath, "utf8"));
1151
- if (isRecord(owner) && owner.token === token)
1152
- await unlink(lockPath);
1153
- } catch (error) {
1154
- if (!await missing(error))
1155
- throw error;
1156
- }
1157
- }
1158
- };
1159
- } catch (error) {
1160
- if (!existing(error))
1161
- throw error;
1162
- try {
1163
- const lock = await stat2(lockPath);
1164
- if (Date.now() - lock.mtimeMs > staleLockMs) {
1165
- if (await reclaim(lockPath, lock, staleLockMs, abandonedAfterMs))
1166
- continue;
1167
- }
1168
- } catch (statError) {
1169
- if (await missing(statError))
1170
- continue;
1171
- throw statError;
1172
- }
1173
- if (Date.now() >= deadline) {
1174
- throw new Error(`[stitchkit] timed out acquiring state lock for ${path}`);
1175
- }
1176
- await delay(retryMs);
1177
- }
1178
- }
1179
- };
1180
- const write = async (state) => {
1181
- const validated = options.schema.parse(state);
1182
- const temporary = `${path}.tmp.${process.pid}.${crypto.randomUUID()}`;
1183
- const handle = await open(temporary, "wx");
1184
- try {
1185
- try {
1186
- await handle.writeFile(`${JSON.stringify(validated)}
1187
- `);
1188
- await handle.sync();
1189
- } finally {
1190
- await handle.close();
1191
- }
1192
- await rename(temporary, path);
1193
- } catch (error) {
1194
- await unlink(temporary).catch(() => {
1195
- return;
1196
- });
1197
- throw error;
1198
- }
1199
- };
1200
- return {
1201
- read: parseFile,
1202
- async update(transition) {
1203
- const lock = await acquire();
1204
- const heartbeat = setInterval(() => void lock.refresh().catch(() => {
1205
- return;
1206
- }), heartbeatMs);
1207
- try {
1208
- const next = await transition(await parseFile());
1209
- await write(next.state);
1210
- return next.result;
1211
- } finally {
1212
- clearInterval(heartbeat);
1213
- await lock.release();
1214
- }
1215
- }
1216
- };
1217
- }
1218
- // src/server/lifecycle.ts
1219
- function composeLifecycleHooks(...hooks) {
1220
- return {
1221
- onRequest: async (request) => {
1222
- for (const hook of hooks) {
1223
- const response = await hook?.onRequest?.(request);
1224
- if (response instanceof Response)
1225
- return response;
1226
- }
1227
- return;
1228
- },
1229
- authorize: async (ctx, endpoint) => {
1230
- for (const hook of hooks)
1231
- await hook?.authorize?.(ctx, endpoint);
1232
- },
1233
- beforeHandle: async (ctx, endpoint) => {
1234
- for (const hook of hooks)
1235
- await hook?.beforeHandle?.(ctx, endpoint);
1236
- },
1237
- afterHandle: async (ctx, result, endpoint) => {
1238
- let current = result;
1239
- for (const hook of hooks) {
1240
- const transformed = await hook?.afterHandle?.(ctx, current, endpoint);
1241
- if (transformed !== undefined)
1242
- current = transformed;
1243
- }
1244
- return current;
1245
- },
1246
- onError: async (ctx, error, endpoint) => {
1247
- for (const hook of hooks) {
1248
- const response = await hook?.onError?.(ctx, error, endpoint);
1249
- if (response instanceof Response)
1250
- return response;
1251
- }
1252
- return;
1253
- }
1254
- };
1255
- }
1256
- // src/server/middleware/trust-fence.ts
1257
- var DEFAULT_PORTS = new Set(["80", "443"]);
1258
- function readAuthority(value) {
1259
- if (value.includes("*"))
1260
- return;
1261
- const match = /^(\[[^\]]+\]|[^:[\]]+)(?::(\d{1,5}))?$/.exec(value.trim());
1262
- if (!match?.[1])
1263
- return;
1264
- const port = match[2] ?? null;
1265
- if (port !== null) {
1266
- const numeric = Number(port);
1267
- if (numeric < 1 || numeric > 65535)
1268
- return;
1269
- }
1270
- let url;
1271
- try {
1272
- url = new URL(`http://${match[1]}`);
1273
- } catch {
1274
- return;
1275
- }
1276
- if (url.pathname !== "/" || url.search !== "" || url.username !== "" || url.hostname === "") {
1277
- return;
1278
- }
1279
- return { hostname: url.hostname, port };
1280
- }
1281
- function comparablePort(port) {
1282
- return port === null || DEFAULT_PORTS.has(port) ? null : port;
1283
- }
1284
- function isLoopbackAddress(address) {
1285
- if (address === "")
1286
- return false;
1287
- const bare = address.replace(/^\[|\]$/g, "").replace(/^::ffff:/i, "");
1288
- if (bare === "::1")
1289
- return true;
1290
- const octets = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(bare);
1291
- return octets?.[1] === "127";
1292
- }
1293
- function createTrustFence(config) {
1294
- if (config.trustedHosts.length === 0) {
1295
- throw new Error("[stitchkit] trust fence: `trustedHosts` cannot be empty — a fence that trusts nothing refuses every request, which is never what a running server wants. List the authorities this server answers on.");
1296
- }
1297
- const trusted = [];
1298
- for (const entry of config.trustedHosts) {
1299
- const authority = readAuthority(entry);
1300
- if (!authority) {
1301
- throw new Error(`[stitchkit] trust fence: "${entry}" is not an authority. An entry is \`host\` or \`host:port\` — no scheme, no path, no credentials, no wildcard. An entry that cannot be read back as a canonical authority is refused here rather than quietly matching nothing.`);
1302
- }
1303
- trusted.push(authority);
1304
- }
1305
- const trustedOrigins = [];
1306
- for (const entry of config.trustedOrigins ?? []) {
1307
- const authority = readAuthority(entry);
1308
- if (!authority) {
1309
- throw new Error(`[stitchkit] trust fence: trustedOrigins entry "${entry}" is not an authority. An entry is \`host\` or \`host:port\` — no scheme, no path, no wildcard, the same form as trustedHosts.`);
1310
- }
1311
- trustedOrigins.push(authority);
1312
- }
1313
- function refuse(refusal) {
1314
- config.onRefused?.(refusal);
1315
- config.logger?.warn?.("[stitchkit] trust fence refused a request", {
1316
- reason: refusal.reason,
1317
- lane: refusal.lane,
1318
- host: refusal.host,
1319
- origin: refusal.origin
1320
- });
1321
- return refusal;
1322
- }
1323
- function check(request, lane) {
1324
- const host = request.headers.get("host");
1325
- const origin = request.headers.get("origin");
1326
- const site = request.headers.get("sec-fetch-site");
1327
- if (host === null) {
1328
- return refuse({ reason: "missing-host", lane, host, origin, site });
1329
- }
1330
- const requested = readAuthority(host);
1331
- if (!requested) {
1332
- return refuse({ reason: "untrusted-host", lane, host, origin, site });
1333
- }
1334
- const matched = trusted.some((entry) => entry.hostname === requested.hostname && (entry.port === null || entry.port === requested.port));
1335
- if (!matched) {
1336
- return refuse({ reason: "untrusted-host", lane, host, origin, site });
1337
- }
1338
- if (site === "cross-site") {
1339
- return refuse({ reason: "cross-site", lane, host, origin, site });
1340
- }
1341
- if (origin !== null && origin !== "null") {
1342
- let originAuthority;
1343
- try {
1344
- const parsed = new URL(origin);
1345
- originAuthority = { hostname: parsed.hostname, port: parsed.port || null };
1346
- } catch {
1347
- originAuthority = undefined;
1348
- }
1349
- const sameAuthority = originAuthority !== undefined && originAuthority.hostname === requested.hostname && comparablePort(originAuthority.port) === comparablePort(requested.port);
1350
- const declared = originAuthority !== undefined && trustedOrigins.some((entry) => entry.hostname === originAuthority.hostname && (entry.port === null || entry.port === originAuthority.port));
1351
- const agrees = sameAuthority || declared;
1352
- if (!agrees) {
1353
- return refuse({ reason: "origin-mismatch", lane, host, origin, site });
1354
- }
1355
- }
1356
- return;
1357
- }
1358
- return {
1359
- hooks: {
1360
- onRequest: (request) => check(request, "http") === undefined ? undefined : new Response(null, { status: 403 })
1361
- },
1362
- allowRequest: (request) => check(request, "socket") === undefined,
1363
- check
1364
- };
1365
- }
1366
- // src/server/openapi.ts
1367
- var ERROR_ENVELOPE_SCHEMA = {
1368
- type: "object",
1369
- properties: {
1370
- error: {
1371
- type: "object",
1372
- properties: {
1373
- code: { type: "string" },
1374
- message: { type: "string" },
1375
- details: {},
1376
- hint: { type: "string" }
1377
- },
1378
- required: ["code"]
1379
- }
1380
- },
1381
- required: ["error"]
1382
- };
1383
- function toOpenApiPath(path) {
1384
- return path.replace(/:([^/]+)/g, "{$1}");
1385
- }
1386
- function safeJson(schema, io) {
1387
- if (!schema)
1388
- return {};
1389
- try {
1390
- return toJsonSchema(schema, io, "any");
1391
- } catch {
1392
- return {};
1393
- }
1394
- }
1395
- function errorResponse(description) {
1396
- return {
1397
- description,
1398
- content: { "application/json": { schema: ERROR_ENVELOPE_SCHEMA } }
1399
- };
1400
- }
1401
- function errorResponses(scope) {
1402
- const responses = {
1403
- "400": errorResponse("Validation error"),
1404
- "500": errorResponse("Server error")
1405
- };
1406
- if (scope && scope !== "public") {
1407
- responses["401"] = errorResponse("Unauthorized");
1408
- responses["403"] = errorResponse("Forbidden");
1409
- }
1410
- return responses;
1411
- }
1412
- function generateOpenApiDocument(config) {
1413
- const groups = [
1414
- ...(config.services ?? []).map((service) => ({ pathPrefix: undefined, service })),
1415
- ...(config.groups ?? []).flatMap((group) => group.services.map((service) => ({ pathPrefix: group.pathPrefix, service })))
1416
- ];
1417
- const paths = {};
1418
- for (const { pathPrefix, service } of groups) {
1419
- for (const [key, method] of Object.entries(service.methods)) {
1420
- if (method.expose && !method.expose.includes("HTTP"))
1421
- continue;
1422
- if (config.includeMethod && !config.includeMethod(method))
1423
- continue;
1424
- const servicePath = joinRoutePath("/", service.prefix, method.path === "/" ? "" : method.path);
1425
- const fullPath = toOpenApiPath(pathPrefix ? joinRoutePath(pathPrefix, servicePath) : servicePath);
1426
- const parameters = [];
1427
- const trailingWildcard = parseTrailingWildcard(fullPath);
1428
- let wildcardSchema = { type: "string" };
1429
- for (const field of jsonSchemaFields(safeJson(method.paramsSchema, "input"))) {
1430
- if (trailingWildcard && field.name === trailingWildcard.name) {
1431
- wildcardSchema = field.schema;
1432
- continue;
1433
- }
1434
- parameters.push({
1435
- name: field.name,
1436
- in: "path",
1437
- required: true,
1438
- schema: field.schema,
1439
- ...field.description && { description: field.description }
1440
- });
1441
- }
1442
- const inputInQuery = inputIsQuery(method.method);
1443
- if (inputInQuery && method.inputSchema) {
1444
- for (const field of jsonSchemaFields(safeJson(method.inputSchema, "input"))) {
1445
- parameters.push({
1446
- name: field.name,
1447
- in: "query",
1448
- required: field.required,
1449
- schema: field.schema,
1450
- ...field.description && { description: field.description }
1451
- });
1452
- }
1453
- }
1454
- const responses = { ...errorResponses(method.scope) };
1455
- if (method.rawResponse) {
1456
- responses["200"] = method.method === "HEAD" ? { description: "Headers only" } : {
1457
- description: "Success",
1458
- content: {
1459
- [method.contentType ?? "application/octet-stream"]: {
1460
- schema: { type: "string", format: "binary" }
1461
- }
1462
- }
1463
- };
1464
- } else if (method.stream) {
1465
- const mediaType = method.stream.format === "sse" ? "text/event-stream" : "application/x-ndjson";
1466
- responses["200"] = {
1467
- description: "Validated streaming response",
1468
- content: {
1469
- [mediaType]: {
1470
- schema: { type: "string" },
1471
- "x-stitchkit-item-schema": safeJson(method.stream.item, "output"),
1472
- "x-stitchkit-max-frame-bytes": method.stream.maxFrameBytes ?? DEFAULT_CONTRACT_STREAM_FRAME_BYTES,
1473
- "x-stitchkit-terminal-required": Boolean(method.stream.terminal),
1474
- "x-stitchkit-stream-framing": method.stream.framing ?? "envelope",
1475
- "x-stitchkit-stream-completion": method.stream.completion ?? "stream-end",
1476
- "x-stitchkit-final-line": method.stream.finalLine ?? "allow"
1477
- }
1478
- }
1479
- };
1480
- } else if (method.outputSchema) {
1481
- responses[String(method.responseMeta?.status ?? 200)] = {
1482
- description: "Success",
1483
- content: { "application/json": { schema: safeJson(method.outputSchema, "output") } }
1484
- };
1485
- } else {
1486
- responses[String(method.responseMeta?.status ?? 204)] = { description: "No content" };
1487
- }
1488
- const operation = {
1489
- summary: method.desc,
1490
- operationId: `${service.name}_${key}`,
1491
- "x-stitchkit-scope": method.scope,
1492
- "x-stitchkit-has-input": Boolean(method.inputSchema),
1493
- "x-stitchkit-has-output": Boolean(method.outputSchema || method.stream),
1494
- ...method.stream && { "x-stitchkit-stream": true },
1495
- ...parameters.length > 0 && { parameters },
1496
- responses
1497
- };
1498
- if (trailingWildcard) {
1499
- operation["x-stitchkit-trailing-wildcard"] = {
1500
- parameter: trailingWildcard.name,
1501
- required: true,
1502
- schema: wildcardSchema,
1503
- description: `Matches zero or more trailing path segments and exposes their '/'-joined remainder as params.${trailingWildcard.name}.`
1504
- };
1505
- }
1506
- if (!inputInQuery && (method.inputSchema || method.multipart)) {
1507
- if (method.multipart) {
1508
- const inputJson = safeJson(method.inputSchema, "input");
1509
- const baseProps = isRecord(inputJson.properties) ? inputJson.properties : {};
1510
- const baseRequired = Array.isArray(inputJson.required) ? inputJson.required : [];
1511
- const fileProperties = {};
1512
- const requiredFiles = [];
1513
- for (const [field, policy] of Object.entries(method.multipart.files)) {
1514
- const binary = {
1515
- type: "string",
1516
- format: "binary",
1517
- ...policy.maxBytes !== undefined && { maxLength: policy.maxBytes },
1518
- ...policy.contentTypes !== undefined && {
1519
- "x-accepted-content-types": policy.contentTypes
1520
- }
1521
- };
1522
- fileProperties[field] = policy.multiple === true ? {
1523
- type: "array",
1524
- items: binary,
1525
- minItems: policy.required === false ? 0 : 1,
1526
- ...policy.maxFiles !== undefined && { maxItems: policy.maxFiles }
1527
- } : binary;
1528
- if (policy.required !== false)
1529
- requiredFiles.push(field);
1530
- }
1531
- operation.requestBody = {
1532
- required: baseRequired.length > 0 || requiredFiles.length > 0,
1533
- content: {
1534
- "multipart/form-data": {
1535
- schema: {
1536
- type: "object",
1537
- properties: {
1538
- ...baseProps,
1539
- ...fileProperties
1540
- },
1541
- required: [...baseRequired, ...requiredFiles]
1542
- }
1543
- }
1544
- }
1545
- };
1546
- } else if (method.inputSchema) {
1547
- const required = jsonSchemaFields(safeJson(method.inputSchema, "input")).some((f) => f.required);
1548
- const schema = safeJson(method.inputSchema, "input");
1549
- operation.requestBody = {
1550
- required,
1551
- content: method.safelistedBody ? { "application/json": { schema }, "text/plain": { schema } } : { "application/json": { schema } }
1552
- };
1553
- }
1554
- }
1555
- const pathItem = paths[fullPath] ?? {};
1556
- pathItem[method.method.toLowerCase()] = operation;
1557
- paths[fullPath] = pathItem;
1558
- }
1559
- }
1560
- return {
1561
- openapi: "3.1.0",
1562
- info: config.info,
1563
- ...config.servers && { servers: config.servers },
1564
- paths
1565
- };
1566
- }
1567
- function openApiRoute(path, document) {
1568
- return {
1569
- method: "GET",
1570
- path,
1571
- handler: () => Response.json(document)
1572
- };
1573
- }
1574
- // src/server/rate-limit.ts
1575
- function refillBucket(entry, config, now) {
1576
- const elapsed = (now - entry.lastRefill) / 1000;
1577
- entry.tokens = Math.min(config.max, entry.tokens + elapsed / config.window * config.max);
1578
- entry.lastRefill = now;
1579
- }
1580
- var MAX_BUCKETS = 1e5;
1581
- function createRateLimiter() {
1582
- const { store: buckets, destroy } = createSweptMap({
1583
- intervalMs: 60000,
1584
- isExpired: (entry, now) => now - entry.lastRefill > 300000
1585
- });
1586
- return {
1587
- destroy,
1588
- check(key, config) {
1589
- const now = Date.now();
1590
- const entry = buckets.get(key);
1591
- if (entry) {
1592
- buckets.delete(key);
1593
- buckets.set(key, entry);
1594
- refillBucket(entry, config, now);
1595
- if (entry.tokens < 1)
1596
- return false;
1597
- entry.tokens -= 1;
1598
- return true;
1599
- }
1600
- if (buckets.size >= MAX_BUCKETS) {
1601
- const lru = buckets.keys().next().value;
1602
- if (lru !== undefined)
1603
- buckets.delete(lru);
1604
- }
1605
- const fresh = { tokens: config.max, lastRefill: now };
1606
- buckets.set(key, fresh);
1607
- if (fresh.tokens < 1)
1608
- return false;
1609
- fresh.tokens -= 1;
1610
- return true;
1611
- },
1612
- remaining(key, config) {
1613
- const entry = buckets.get(key);
1614
- if (!entry)
1615
- return config.max;
1616
- refillBucket(entry, config, Date.now());
1617
- return Math.floor(entry.tokens);
1618
- }
1619
- };
1620
- }
1621
- // src/server/raw.ts
1622
- function respondJson(data) {
1623
- if (data === null || data === undefined)
1624
- return new Response(null, { status: 204 });
1625
- return Response.json(data);
1626
- }
1627
- function errorResponse2(error) {
1628
- const appErr = normalizeError(error);
1629
- const res = Response.json(appErr.toJSON(), { status: appErr.status });
1630
- const traceId = getTraceId();
1631
- if (traceId)
1632
- res.headers.set("x-request-id", traceId);
1633
- return res;
1634
- }
1635
- async function parseBody(req, schema) {
1636
- const raw = await req.json().catch(() => null);
1637
- if (raw === null)
1638
- return null;
1639
- const parsed = schema.safeParse(raw);
1640
- return parsed.success ? parsed.data : null;
1641
- }
1642
- // src/server/release-signal.ts
1643
- function bindReleaseRefreshSignal(marker, options = {}) {
1644
- const signal = options.signal ?? "SIGUSR2";
1645
- const source = options.source ?? process;
1646
- const handler = () => {
1647
- try {
1648
- options.onRefresh?.(marker.refresh());
1649
- } catch (error) {
1650
- try {
1651
- options.onError?.(error);
1652
- } catch {}
1653
- }
1654
- };
1655
- source.on(signal, handler);
1656
- return () => source.off(signal, handler);
1657
- }
1658
- export {
1659
- zodIssues,
1660
- webSocketLane,
1661
- weakETag,
1662
- verifyPkce,
1663
- verifyJwt,
1664
- unauthorized,
1665
- streamingRoute,
1666
- streamSSE,
1667
- staticRoute,
1668
- sseRoute,
1669
- socketIoLane,
1670
- signJwt,
1671
- serveFile,
1672
- serializeCookie,
1673
- respondJson,
1674
- resolveTraceId,
1675
- resolveSocketIp,
1676
- rateLimited,
1677
- parseSSE,
1678
- parseMultipart,
1679
- parseCookies,
1680
- parseCookieHeader,
1681
- parseByteRange,
1682
- parseBody,
1683
- openApiRoute,
1684
- notFound,
1685
- normalizeError,
1686
- ndjsonRoute,
1687
- isWithinDir,
1688
- isStitchErrorCode,
1689
- isPublicIp,
1690
- isLoopbackAddress,
1691
- implementRegistry,
1692
- implement,
1693
- getClientInfo,
1694
- generateTraceId,
1695
- generateOpenApiDocument,
1696
- formatZodError,
1697
- forbidden,
1698
- extractToken,
1699
- extractIp,
1700
- errorResponse2 as errorResponse,
1701
- errorCode,
1702
- deriveCodeChallenge,
1703
- defineMultipartStream,
1704
- defineCookie,
1705
- createUnixClientTransport,
1706
- createTrustFence,
1707
- createSocketIOServer,
1708
- createServer,
1709
- createScopedImplementRegistry,
1710
- createScopedImplement,
1711
- createRateLimiter,
1712
- createMultipartStream,
1713
- createImplementRegistry,
1714
- createImplement,
1715
- createHandler,
1716
- createFileStateStore,
1717
- createEventBus,
1718
- createErrorHook,
1719
- createCache,
1720
- createBearerResolver,
1721
- createAuthHook,
1722
- corsPreflightResponse,
1723
- corsHeaders,
1724
- conflict,
1725
- composeWebSocketHandlers,
1726
- composeLifecycleHooks,
1727
- composeAuthHooks,
1728
- cacheHeaders,
1729
- bindSocketRegistry,
1730
- bindReleaseRefreshSignal,
1731
- bindRealtimeServer,
1732
- bindProcessSignals,
1733
- badRequest,
1734
- appError,
1735
- UnixClientTransportError,
1736
- ShutdownStatusSchema,
1737
- ShutdownStateSchema,
1738
- ShutdownResultSchema,
1739
- ShutdownOptionsSchema,
1740
- STITCH_ERROR_STATUS,
1741
- DEFAULT_STREAM_HEARTBEAT_MS,
1742
- DEFAULT_CORS_EXPOSE_HEADERS,
1743
- DEFAULT_CORS_ALLOW_HEADERS,
1744
- AppError
1745
- };