@wirebench/engine 2.2.1 → 3.1.0-rc.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 (566) hide show
  1. package/README.md +134 -1
  2. package/dist/account/schema.d.ts +34 -0
  3. package/dist/account/schema.js +29 -0
  4. package/dist/assert/callback.d.ts +76 -0
  5. package/dist/assert/callback.js +320 -0
  6. package/dist/assert/capture-source.d.ts +50 -0
  7. package/dist/assert/capture-source.js +89 -0
  8. package/dist/assert/check.d.ts +8 -0
  9. package/dist/assert/check.js +18 -0
  10. package/dist/assert/header.d.ts +5 -0
  11. package/dist/assert/header.js +48 -0
  12. package/dist/assert/index.d.ts +2 -2
  13. package/dist/assert/index.js +12 -0
  14. package/dist/assert/match.d.ts +6 -0
  15. package/dist/assert/match.js +13 -4
  16. package/dist/assert/model.d.ts +110 -3
  17. package/dist/assert/model.js +16 -1
  18. package/dist/assert/schema.d.ts +194 -1
  19. package/dist/assert/schema.js +154 -12
  20. package/dist/assert/status-names.d.ts +9 -0
  21. package/dist/assert/status-names.js +27 -0
  22. package/dist/assert/status.d.ts +4 -1
  23. package/dist/assert/status.js +27 -3
  24. package/dist/asyncapi/browser.d.ts +7 -0
  25. package/dist/asyncapi/browser.js +6 -0
  26. package/dist/asyncapi/frame-check-worker-host.d.ts +44 -0
  27. package/dist/asyncapi/frame-check-worker-host.js +175 -0
  28. package/dist/asyncapi/frame-check-worker.d.ts +12 -0
  29. package/dist/asyncapi/frame-check-worker.js +25 -0
  30. package/dist/asyncapi/frame-check.d.ts +25 -0
  31. package/dist/asyncapi/frame-check.js +78 -0
  32. package/dist/asyncapi/import.d.ts +25 -0
  33. package/dist/asyncapi/import.js +34 -0
  34. package/dist/asyncapi/map.d.ts +40 -0
  35. package/dist/asyncapi/map.js +230 -0
  36. package/dist/asyncapi/model.d.ts +84 -0
  37. package/dist/asyncapi/model.js +7 -0
  38. package/dist/asyncapi/normalise-2.d.ts +13 -0
  39. package/dist/asyncapi/normalise-2.js +113 -0
  40. package/dist/asyncapi/normalise-3.d.ts +14 -0
  41. package/dist/asyncapi/normalise-3.js +133 -0
  42. package/dist/asyncapi/parse.d.ts +31 -0
  43. package/dist/asyncapi/parse.js +85 -0
  44. package/dist/asyncapi/read.d.ts +35 -0
  45. package/dist/asyncapi/read.js +186 -0
  46. package/dist/asyncapi/security.d.ts +14 -0
  47. package/dist/asyncapi/security.js +55 -0
  48. package/dist/asyncapi/update.d.ts +53 -0
  49. package/dist/asyncapi/update.js +220 -0
  50. package/dist/errors.d.ts +16 -0
  51. package/dist/errors.js +22 -0
  52. package/dist/grpc/events.d.ts +22 -0
  53. package/dist/grpc/events.js +1 -0
  54. package/dist/grpc/expand.d.ts +1 -1
  55. package/dist/grpc/expand.js +15 -5
  56. package/dist/grpc/files.d.ts +271 -0
  57. package/dist/grpc/files.js +62 -0
  58. package/dist/grpc/model.d.ts +11 -1
  59. package/dist/grpc/module.d.ts +2 -0
  60. package/dist/grpc/module.js +13 -0
  61. package/dist/grpc/run.d.ts +73 -0
  62. package/dist/grpc/run.js +407 -0
  63. package/dist/grpc/script-types.d.ts +8 -0
  64. package/dist/grpc/script-types.js +149 -0
  65. package/dist/grpc/scripting.d.ts +34 -0
  66. package/dist/grpc/scripting.js +147 -0
  67. package/dist/grpc/send-input.d.ts +46 -0
  68. package/dist/grpc/send-input.js +42 -0
  69. package/dist/grpc/send.d.ts +2 -2
  70. package/dist/grpc/status.d.ts +9 -2
  71. package/dist/grpc/status.js +11 -24
  72. package/dist/grpc/storage.d.ts +9 -0
  73. package/dist/grpc/storage.js +167 -0
  74. package/dist/{rest/auth.d.ts → http/auth/apply-auth.d.ts} +4 -4
  75. package/dist/{rest/auth.js → http/auth/apply-auth.js} +1 -1
  76. package/dist/http/auth/apply.d.ts +1 -1
  77. package/dist/{rest → http/auth}/oauth2.d.ts +2 -2
  78. package/dist/{rest → http/auth}/oauth2.js +1 -1
  79. package/dist/http/auth/send-auth.d.ts +57 -0
  80. package/dist/http/auth/send-auth.js +7 -0
  81. package/dist/http/client.js +150 -8
  82. package/dist/http/cookies.d.ts +79 -0
  83. package/dist/http/cookies.js +81 -0
  84. package/dist/http/curl.d.ts +4 -14
  85. package/dist/http/curl.js +4 -154
  86. package/dist/http/decompress.d.ts +7 -0
  87. package/dist/http/decompress.js +23 -1
  88. package/dist/http/document-fetch.d.ts +42 -0
  89. package/dist/http/document-fetch.js +207 -0
  90. package/dist/http/entries.d.ts +27 -0
  91. package/dist/http/entries.js +16 -0
  92. package/dist/http/escape.d.ts +18 -0
  93. package/dist/http/escape.js +30 -0
  94. package/dist/http/fetch-document.d.ts +28 -0
  95. package/dist/{wsdl/fetch.js → http/fetch-document.js} +8 -16
  96. package/dist/http/media-type.d.ts +9 -0
  97. package/dist/http/media-type.js +12 -0
  98. package/dist/http/transcript-cap.d.ts +26 -0
  99. package/dist/http/transcript-cap.js +36 -0
  100. package/dist/http/types.d.ts +59 -0
  101. package/dist/http/webhook-signature.d.ts +81 -0
  102. package/dist/http/webhook-signature.js +227 -0
  103. package/dist/import-detect.d.ts +2 -2
  104. package/dist/import-detect.js +10 -1
  105. package/dist/index.d.ts +207 -55
  106. package/dist/index.js +129 -32
  107. package/dist/json/cursor.d.ts +2 -0
  108. package/dist/json/cursor.js +1 -0
  109. package/dist/json/pointer-range.d.ts +18 -0
  110. package/dist/json/pointer-range.js +157 -0
  111. package/dist/json/schema/model.d.ts +59 -0
  112. package/dist/json/schema/model.js +8 -0
  113. package/dist/json/schema/parse-text.d.ts +16 -0
  114. package/dist/json/schema/parse-text.js +37 -0
  115. package/dist/{rest/openapi → json/schema}/refs.d.ts +2 -2
  116. package/dist/{rest/openapi → json/schema}/refs.js +3 -3
  117. package/dist/{rest/openapi → json/schema}/sample.d.ts +4 -0
  118. package/dist/{rest/openapi → json/schema}/sample.js +2 -2
  119. package/dist/json/schema/source.d.ts +21 -0
  120. package/dist/json/schema/source.js +8 -0
  121. package/dist/json/schema-validate.d.ts +49 -0
  122. package/dist/json/schema-validate.js +557 -0
  123. package/dist/{wss/keystore → keystore}/index.js +1 -1
  124. package/dist/{wss/keystore → keystore}/pem.js +1 -1
  125. package/dist/{wss/keystore → keystore}/pkcs12.js +1 -1
  126. package/dist/project/attachments-cache.d.ts +3 -1
  127. package/dist/{wsdl → project}/cache-naming.js +1 -1
  128. package/dist/project/endpoints.d.ts +18 -8
  129. package/dist/project/endpoints.js +21 -6
  130. package/dist/project/environments.d.ts +7 -5
  131. package/dist/project/history.d.ts +105 -9
  132. package/dist/project/history.js +195 -23
  133. package/dist/project/inherit.d.ts +7 -0
  134. package/dist/project/inherit.js +9 -0
  135. package/dist/project/keystores.d.ts +1 -1
  136. package/dist/project/load-helpers.d.ts +89 -0
  137. package/dist/project/load-helpers.js +177 -0
  138. package/dist/project/load.d.ts +30 -4
  139. package/dist/project/load.js +168 -545
  140. package/dist/project/managed-files.d.ts +36 -0
  141. package/dist/project/managed-files.js +97 -0
  142. package/dist/project/migrate.d.ts +2 -2
  143. package/dist/project/migrate.js +2 -2
  144. package/dist/project/model.d.ts +92 -14
  145. package/dist/project/model.js +50 -4
  146. package/dist/project/paths.d.ts +10 -1
  147. package/dist/project/paths.js +10 -1
  148. package/dist/project/preferences.d.ts +11 -2
  149. package/dist/project/preferences.js +5 -1
  150. package/dist/project/properties.d.ts +31 -17
  151. package/dist/project/properties.js +89 -70
  152. package/dist/project/request-location.d.ts +20 -0
  153. package/dist/project/request-location.js +62 -0
  154. package/dist/project/save.d.ts +12 -2
  155. package/dist/project/save.js +186 -141
  156. package/dist/project/schema-parts.d.ts +337 -0
  157. package/dist/project/schema-parts.js +248 -0
  158. package/dist/project/schema.d.ts +72 -928
  159. package/dist/project/schema.js +17 -466
  160. package/dist/project/sequence-guards.d.ts +43 -0
  161. package/dist/project/sequence-guards.js +109 -0
  162. package/dist/project/serialize-helpers.d.ts +60 -0
  163. package/dist/project/serialize-helpers.js +108 -0
  164. package/dist/project/serialize.d.ts +7 -8
  165. package/dist/project/serialize.js +34 -293
  166. package/dist/protocol/features.d.ts +51 -0
  167. package/dist/protocol/features.js +64 -0
  168. package/dist/protocol/index.d.ts +7 -0
  169. package/dist/protocol/index.js +4 -0
  170. package/dist/protocol/module.d.ts +247 -0
  171. package/dist/protocol/module.js +48 -0
  172. package/dist/protocol/registry.d.ts +42 -0
  173. package/dist/protocol/registry.js +47 -0
  174. package/dist/protocols.d.ts +77 -0
  175. package/dist/protocols.js +40 -0
  176. package/dist/redact/index.d.ts +12 -1
  177. package/dist/redact/index.js +55 -7
  178. package/dist/redact/literal.d.ts +10 -0
  179. package/dist/redact/literal.js +110 -12
  180. package/dist/rest/body.d.ts +2 -10
  181. package/dist/rest/body.js +3 -25
  182. package/dist/rest/browser.d.ts +4 -0
  183. package/dist/rest/browser.js +5 -0
  184. package/dist/rest/contract-check-worker-host.d.ts +36 -0
  185. package/dist/rest/contract-check-worker-host.js +158 -0
  186. package/dist/rest/contract-check-worker.d.ts +7 -0
  187. package/dist/rest/contract-check-worker.js +28 -0
  188. package/dist/rest/contract-check.d.ts +43 -0
  189. package/dist/rest/contract-check.js +217 -0
  190. package/dist/rest/cookie-jar.d.ts +62 -0
  191. package/dist/rest/cookie-jar.js +262 -0
  192. package/dist/rest/cookies.d.ts +6 -22
  193. package/dist/rest/cookies.js +6 -42
  194. package/dist/rest/curl.js +5 -1
  195. package/dist/rest/events.d.ts +12 -0
  196. package/dist/rest/events.js +1 -0
  197. package/dist/rest/expand.d.ts +6 -1
  198. package/dist/rest/expand.js +29 -11
  199. package/dist/rest/files.d.ts +439 -0
  200. package/dist/rest/files.js +107 -0
  201. package/dist/rest/json-form.d.ts +97 -0
  202. package/dist/rest/json-form.js +396 -0
  203. package/dist/rest/model.d.ts +35 -24
  204. package/dist/rest/model.js +6 -9
  205. package/dist/rest/module.d.ts +2 -0
  206. package/dist/rest/module.js +13 -0
  207. package/dist/rest/openapi/cache.d.ts +7 -2
  208. package/dist/rest/openapi/cache.js +2 -2
  209. package/dist/rest/openapi/import.d.ts +11 -16
  210. package/dist/rest/openapi/import.js +6 -2
  211. package/dist/rest/openapi/map.d.ts +38 -1
  212. package/dist/rest/openapi/map.js +151 -41
  213. package/dist/rest/openapi/match.d.ts +20 -0
  214. package/dist/rest/openapi/match.js +117 -0
  215. package/dist/rest/openapi/model.d.ts +33 -45
  216. package/dist/rest/openapi/parse.d.ts +3 -12
  217. package/dist/rest/openapi/parse.js +138 -67
  218. package/dist/rest/openapi/responses.d.ts +23 -0
  219. package/dist/rest/openapi/responses.js +59 -0
  220. package/dist/rest/openapi/runtime-expression.d.ts +69 -0
  221. package/dist/rest/openapi/runtime-expression.js +213 -0
  222. package/dist/rest/openapi/update.d.ts +116 -0
  223. package/dist/rest/openapi/update.js +456 -0
  224. package/dist/rest/postman/map.d.ts +1 -0
  225. package/dist/rest/postman/map.js +66 -4
  226. package/dist/rest/postman/model.d.ts +9 -0
  227. package/dist/rest/postman/parse.js +33 -10
  228. package/dist/rest/response.d.ts +2 -23
  229. package/dist/rest/response.js +3 -75
  230. package/dist/rest/run.d.ts +56 -0
  231. package/dist/rest/run.js +395 -0
  232. package/dist/rest/script-types.d.ts +7 -0
  233. package/dist/rest/script-types.js +83 -0
  234. package/dist/rest/scripting.d.ts +38 -0
  235. package/dist/rest/scripting.js +282 -0
  236. package/dist/rest/send-input.d.ts +54 -0
  237. package/dist/rest/send-input.js +73 -0
  238. package/dist/rest/send.d.ts +77 -4
  239. package/dist/rest/send.js +128 -7
  240. package/dist/rest/sse-transcript.d.ts +25 -0
  241. package/dist/rest/sse-transcript.js +95 -0
  242. package/dist/rest/sse.d.ts +43 -0
  243. package/dist/rest/sse.js +195 -0
  244. package/dist/rest/storage.d.ts +26 -0
  245. package/dist/rest/storage.js +262 -0
  246. package/dist/rest/url.d.ts +10 -4
  247. package/dist/rest/url.js +38 -5
  248. package/dist/run/baseline-update.d.ts +35 -0
  249. package/dist/run/baseline-update.js +97 -0
  250. package/dist/run/baseline.d.ts +42 -0
  251. package/dist/run/baseline.js +93 -0
  252. package/dist/run/context.d.ts +86 -0
  253. package/dist/run/context.js +31 -0
  254. package/dist/run/current-values.d.ts +32 -0
  255. package/dist/run/current-values.js +43 -0
  256. package/dist/run/event-queue.d.ts +14 -0
  257. package/dist/run/event-queue.js +46 -0
  258. package/dist/run/exchange.d.ts +62 -0
  259. package/dist/run/exchange.js +65 -0
  260. package/dist/run/host.d.ts +89 -0
  261. package/dist/run/host.js +1 -0
  262. package/dist/run/index.d.ts +20 -7
  263. package/dist/run/index.js +12 -4
  264. package/dist/run/oauth2-token.d.ts +42 -0
  265. package/dist/run/oauth2-token.js +92 -0
  266. package/dist/run/open.d.ts +12 -0
  267. package/dist/run/open.js +16 -0
  268. package/dist/run/run.d.ts +124 -4
  269. package/dist/run/run.js +293 -134
  270. package/dist/run/scope.d.ts +11 -0
  271. package/dist/run/scope.js +26 -0
  272. package/dist/run/script-support.d.ts +53 -0
  273. package/dist/run/script-support.js +68 -0
  274. package/dist/run/secret-needs.d.ts +11 -4
  275. package/dist/run/secret-needs.js +48 -96
  276. package/dist/run/select.d.ts +34 -25
  277. package/dist/run/select.js +45 -54
  278. package/dist/run/send-helpers.d.ts +93 -0
  279. package/dist/run/send-helpers.js +255 -0
  280. package/dist/run/tree.d.ts +50 -0
  281. package/dist/run/tree.js +54 -0
  282. package/dist/script/api/postman.d.ts +10 -0
  283. package/dist/script/api/postman.js +264 -0
  284. package/dist/script/api/prelude.d.ts +20 -0
  285. package/dist/script/api/prelude.js +215 -0
  286. package/dist/script/apply.d.ts +44 -0
  287. package/dist/script/apply.js +120 -0
  288. package/dist/script/check/host.d.ts +41 -0
  289. package/dist/script/check/host.js +143 -0
  290. package/dist/script/check/service.d.ts +52 -0
  291. package/dist/script/check/service.js +195 -0
  292. package/dist/script/check/worker.d.ts +1 -0
  293. package/dist/script/check/worker.js +40 -0
  294. package/dist/script/index.d.ts +16 -0
  295. package/dist/script/index.js +10 -0
  296. package/dist/script/lookup.d.ts +10 -0
  297. package/dist/script/lookup.js +23 -0
  298. package/dist/script/model.d.ts +82 -0
  299. package/dist/script/model.js +18 -0
  300. package/dist/script/props.d.ts +8 -0
  301. package/dist/script/props.js +28 -0
  302. package/dist/script/request-scripts.d.ts +83 -0
  303. package/dist/script/request-scripts.js +160 -0
  304. package/dist/script/run.d.ts +47 -0
  305. package/dist/script/run.js +146 -0
  306. package/dist/script/sandbox/execute.d.ts +26 -0
  307. package/dist/script/sandbox/execute.js +212 -0
  308. package/dist/script/sandbox/host-api.d.ts +27 -0
  309. package/dist/script/sandbox/host-api.js +101 -0
  310. package/dist/script/sandbox/host.d.ts +18 -0
  311. package/dist/script/sandbox/host.js +172 -0
  312. package/dist/script/sandbox/model.d.ts +69 -0
  313. package/dist/script/sandbox/model.js +24 -0
  314. package/dist/script/sandbox/worker.d.ts +1 -0
  315. package/dist/script/sandbox/worker.js +20 -0
  316. package/dist/script/send.d.ts +27 -0
  317. package/dist/script/send.js +76 -0
  318. package/dist/script/strip.d.ts +5 -0
  319. package/dist/script/strip.js +43 -0
  320. package/dist/script/types/api.d.ts +38 -0
  321. package/dist/script/types/api.js +113 -0
  322. package/dist/script/types/json-schema.d.ts +26 -0
  323. package/dist/script/types/json-schema.js +206 -0
  324. package/dist/secrets/env-names.d.ts +9 -1
  325. package/dist/secrets/env-names.js +17 -1
  326. package/dist/secrets/resolve.d.ts +44 -4
  327. package/dist/secrets/resolve.js +58 -1
  328. package/dist/secrets/scan/apply.d.ts +36 -0
  329. package/dist/secrets/scan/apply.js +194 -0
  330. package/dist/secrets/scan/rules.d.ts +32 -0
  331. package/dist/secrets/scan/rules.js +346 -0
  332. package/dist/secrets/scan/scan.d.ts +6 -0
  333. package/dist/secrets/scan/scan.js +57 -0
  334. package/dist/secrets/scan/walk.d.ts +70 -0
  335. package/dist/secrets/scan/walk.js +156 -0
  336. package/dist/secrets/secret-refs.d.ts +8 -0
  337. package/dist/secrets/secret-refs.js +25 -0
  338. package/dist/secrets/secret-token.d.ts +17 -0
  339. package/dist/secrets/secret-token.js +25 -0
  340. package/dist/sequence/file.d.ts +169 -0
  341. package/dist/sequence/file.js +237 -0
  342. package/dist/sequence/index.d.ts +7 -0
  343. package/dist/sequence/index.js +5 -0
  344. package/dist/sequence/load.d.ts +32 -0
  345. package/dist/sequence/load.js +56 -0
  346. package/dist/sequence/model.d.ts +115 -0
  347. package/dist/sequence/model.js +53 -0
  348. package/dist/sequence/run.d.ts +131 -0
  349. package/dist/sequence/run.js +191 -0
  350. package/dist/sequence/transfer.d.ts +24 -0
  351. package/dist/sequence/transfer.js +75 -0
  352. package/dist/server-api/audit.d.ts +455 -0
  353. package/dist/server-api/audit.js +186 -0
  354. package/dist/server-api/ci-tokens.d.ts +50 -0
  355. package/dist/server-api/ci-tokens.js +35 -0
  356. package/dist/server-api/hooks.d.ts +337 -0
  357. package/dist/server-api/hooks.js +152 -0
  358. package/dist/server-api/identity.d.ts +210 -0
  359. package/dist/server-api/identity.js +115 -0
  360. package/dist/server-api/licensing.d.ts +80 -0
  361. package/dist/server-api/licensing.js +53 -0
  362. package/dist/server-api/live.d.ts +132 -0
  363. package/dist/server-api/live.js +102 -0
  364. package/dist/server-api/meta.d.ts +31 -0
  365. package/dist/server-api/meta.js +21 -0
  366. package/dist/server-api/sync.d.ts +179 -0
  367. package/dist/server-api/sync.js +124 -0
  368. package/dist/server-api/teams.d.ts +306 -0
  369. package/dist/server-api/teams.js +113 -0
  370. package/dist/snapshot/diff.d.ts +30 -0
  371. package/dist/snapshot/diff.js +75 -0
  372. package/dist/snapshot/format.d.ts +17 -0
  373. package/dist/snapshot/format.js +40 -0
  374. package/dist/snapshot/golden-file.d.ts +45 -0
  375. package/dist/snapshot/golden-file.js +173 -0
  376. package/dist/snapshot/ignore.d.ts +14 -0
  377. package/dist/snapshot/ignore.js +79 -0
  378. package/dist/snapshot/index.d.ts +9 -0
  379. package/dist/snapshot/index.js +9 -0
  380. package/dist/snapshot/json-diff.d.ts +3 -0
  381. package/dist/snapshot/json-diff.js +93 -0
  382. package/dist/snapshot/xml-diff.d.ts +10 -0
  383. package/dist/snapshot/xml-diff.js +194 -0
  384. package/dist/soap/auth.d.ts +26 -0
  385. package/dist/soap/auth.js +54 -0
  386. package/dist/soap/curl.d.ts +20 -0
  387. package/dist/soap/curl.js +161 -0
  388. package/dist/soap/expand.d.ts +24 -0
  389. package/dist/soap/expand.js +95 -0
  390. package/dist/soap/files.d.ts +384 -0
  391. package/dist/soap/files.js +114 -0
  392. package/dist/soap/form-request.d.ts +13 -0
  393. package/dist/soap/form-request.js +2 -2
  394. package/dist/soap/generate.d.ts +12 -0
  395. package/dist/{generate.js → soap/generate.js} +4 -4
  396. package/dist/{import.d.ts → soap/import.d.ts} +4 -4
  397. package/dist/{import.js → soap/import.js} +13 -13
  398. package/dist/soap/json-operation.d.ts +35 -0
  399. package/dist/soap/json-operation.js +225 -0
  400. package/dist/soap/legacy-project/env-refs.d.ts +19 -0
  401. package/dist/soap/legacy-project/env-refs.js +105 -0
  402. package/dist/soap/legacy-project/map.d.ts +2 -2
  403. package/dist/soap/legacy-project/map.js +6 -0
  404. package/dist/soap/mime/multipart.d.ts +2 -2
  405. package/dist/soap/mime/multipart.js +2 -5
  406. package/dist/soap/mime/send-pipeline.d.ts +1 -1
  407. package/dist/soap/mime/send-pipeline.js +1 -1
  408. package/dist/soap/mime/types.d.ts +1 -3
  409. package/dist/soap/module.d.ts +2 -0
  410. package/dist/soap/module.js +13 -0
  411. package/dist/soap/namespace-scope.js +1 -1
  412. package/dist/soap/operations.d.ts +12 -0
  413. package/dist/{operations.js → soap/operations.js} +4 -4
  414. package/dist/soap/run.d.ts +70 -0
  415. package/dist/soap/run.js +549 -0
  416. package/dist/soap/script-types.d.ts +65 -0
  417. package/dist/soap/script-types.js +379 -0
  418. package/dist/soap/scripting.d.ts +45 -0
  419. package/dist/soap/scripting.js +221 -0
  420. package/dist/soap/send-input.d.ts +61 -0
  421. package/dist/{send-options.js → soap/send-input.js} +5 -109
  422. package/dist/{send.d.ts → soap/send.d.ts} +1 -1
  423. package/dist/{send.js → soap/send.js} +28 -12
  424. package/dist/soap/storage.d.ts +9 -0
  425. package/dist/soap/storage.js +237 -0
  426. package/dist/soap/transforms.d.ts +3 -12
  427. package/dist/soap/transforms.js +3 -14
  428. package/dist/{types.d.ts → soap/types.d.ts} +34 -84
  429. package/dist/sync/git-cli.d.ts +202 -0
  430. package/dist/sync/git-cli.js +684 -0
  431. package/dist/sync/three-way-merge.d.ts +41 -0
  432. package/dist/sync/three-way-merge.js +85 -0
  433. package/dist/sync/tree-paths.d.ts +34 -0
  434. package/dist/sync/tree-paths.js +131 -0
  435. package/dist/team-secrets/envelope.d.ts +10 -0
  436. package/dist/team-secrets/envelope.js +121 -0
  437. package/dist/team-secrets/errors.d.ts +26 -0
  438. package/dist/team-secrets/errors.js +27 -0
  439. package/dist/team-secrets/index.d.ts +14 -0
  440. package/dist/team-secrets/index.js +8 -0
  441. package/dist/team-secrets/keys.d.ts +52 -0
  442. package/dist/team-secrets/keys.js +158 -0
  443. package/dist/team-secrets/log.d.ts +48 -0
  444. package/dist/team-secrets/log.js +175 -0
  445. package/dist/team-secrets/resolve-conflict.d.ts +7 -0
  446. package/dist/team-secrets/resolve-conflict.js +14 -0
  447. package/dist/team-secrets/schema.d.ts +97 -0
  448. package/dist/team-secrets/schema.js +157 -0
  449. package/dist/team-secrets/sign.d.ts +24 -0
  450. package/dist/team-secrets/sign.js +71 -0
  451. package/dist/team-secrets/vault.d.ts +49 -0
  452. package/dist/team-secrets/vault.js +148 -0
  453. package/dist/validate/wsi/run-message.d.ts +2 -2
  454. package/dist/validate/wsi/run-message.js +1 -1
  455. package/dist/validate/wsi/run-wsdl.d.ts +2 -2
  456. package/dist/validate/wsi/run-wsdl.js +1 -1
  457. package/dist/validate/wsi/types.d.ts +1 -1
  458. package/dist/webhooks/model.d.ts +138 -0
  459. package/dist/webhooks/model.js +150 -0
  460. package/dist/workspace/commit-message.d.ts +1 -1
  461. package/dist/workspace/commit-message.js +6 -1
  462. package/dist/workspace/environments.d.ts +11 -4
  463. package/dist/workspace/environments.js +12 -0
  464. package/dist/workspace/index.d.ts +3 -3
  465. package/dist/workspace/index.js +2 -2
  466. package/dist/workspace/paths.d.ts +5 -2
  467. package/dist/workspace/paths.js +5 -2
  468. package/dist/workspace/schema.d.ts +7 -3
  469. package/dist/workspace/schema.js +24 -3
  470. package/dist/workspace/share.d.ts +30 -11
  471. package/dist/workspace/share.js +32 -6
  472. package/dist/ws/call.d.ts +1 -1
  473. package/dist/ws/call.js +2 -2
  474. package/dist/ws/connect.d.ts +60 -0
  475. package/dist/ws/connect.js +131 -0
  476. package/dist/ws/events.d.ts +17 -0
  477. package/dist/ws/events.js +1 -0
  478. package/dist/ws/expand.d.ts +1 -1
  479. package/dist/ws/expand.js +1 -1
  480. package/dist/ws/files.d.ts +284 -0
  481. package/dist/ws/files.js +71 -0
  482. package/dist/ws/history-entry.d.ts +44 -0
  483. package/dist/ws/history-entry.js +93 -0
  484. package/dist/ws/model.d.ts +44 -3
  485. package/dist/ws/model.js +3 -0
  486. package/dist/ws/module.d.ts +2 -0
  487. package/dist/ws/module.js +11 -0
  488. package/dist/ws/run.d.ts +63 -0
  489. package/dist/ws/run.js +470 -0
  490. package/dist/ws/session.d.ts +18 -0
  491. package/dist/ws/session.js +52 -25
  492. package/dist/ws/storage.d.ts +9 -0
  493. package/dist/ws/storage.js +176 -0
  494. package/dist/ws/transcript.d.ts +3 -4
  495. package/dist/ws/transcript.js +26 -17
  496. package/dist/ws/url.d.ts +1 -1
  497. package/dist/wsdl/cache.js +1 -1
  498. package/dist/wsdl/docs-generator.d.ts +3 -3
  499. package/dist/wsdl/docs-generator.js +1 -1
  500. package/dist/wsdl/export-definition.js +1 -1
  501. package/dist/wsdl/qname.d.ts +2 -5
  502. package/dist/wsdl/resolver.d.ts +4 -11
  503. package/dist/wsdl/resolver.js +3 -3
  504. package/dist/wsdl/update-definition.d.ts +5 -5
  505. package/dist/wsdl/update-definition.js +6 -6
  506. package/dist/wss/apply.js +1 -1
  507. package/dist/{project/wss-configs.d.ts → wss/configs.d.ts} +2 -2
  508. package/dist/{project/wss-configs.js → wss/configs.js} +2 -2
  509. package/dist/wss/incoming/decrypt.d.ts +1 -1
  510. package/dist/wss/incoming/index.js +1 -1
  511. package/dist/wss/incoming/verify.d.ts +1 -1
  512. package/dist/wss/incoming/verify.js +1 -1
  513. package/dist/wss/key-identifiers.js +1 -1
  514. package/dist/wss/model.d.ts +1 -1
  515. package/dist/wss/outgoing/encryption.d.ts +1 -1
  516. package/dist/wss/outgoing/signature.d.ts +1 -1
  517. package/dist/xml/decode.d.ts +15 -0
  518. package/dist/xml/decode.js +22 -0
  519. package/dist/xml/entitize.d.ts +17 -0
  520. package/dist/xml/entitize.js +19 -0
  521. package/dist/xml/index.d.ts +1 -1
  522. package/dist/xml/index.js +1 -1
  523. package/dist/xml/locate.d.ts +39 -0
  524. package/dist/xml/locate.js +117 -0
  525. package/dist/xml/qname.d.ts +12 -0
  526. package/dist/xml/qname.js +8 -0
  527. package/dist/xpath/evaluate-async.d.ts +19 -0
  528. package/dist/xpath/evaluate-async.js +31 -11
  529. package/dist/xpath/evaluate.d.ts +1 -1
  530. package/dist/xpath/namespaces.js +1 -1
  531. package/dist/xpath/worker.d.ts +11 -5
  532. package/dist/xpath/worker.js +24 -7
  533. package/dist/xsd/form-model.d.ts +19 -2
  534. package/dist/xsd/form-model.js +14 -2
  535. package/dist/xsd/json-bridge.d.ts +152 -0
  536. package/dist/xsd/json-bridge.js +1213 -0
  537. package/dist/xsd/locate.d.ts +2 -30
  538. package/dist/xsd/locate.js +1 -109
  539. package/dist/xsd/xml-scan.d.ts +2 -0
  540. package/dist/xsd/xml-scan.js +1 -1
  541. package/dist/xsd/xml-writer.d.ts +2 -0
  542. package/dist/xsd/xml-writer.js +4 -0
  543. package/package.json +12 -1
  544. package/dist/generate.d.ts +0 -12
  545. package/dist/operations.d.ts +0 -12
  546. package/dist/run/effective-auth.d.ts +0 -10
  547. package/dist/run/effective-auth.js +0 -19
  548. package/dist/run/prepare.d.ts +0 -43
  549. package/dist/run/prepare.js +0 -280
  550. package/dist/send-options.d.ts +0 -141
  551. package/dist/wsdl/fetch.d.ts +0 -13
  552. /package/dist/{soap → http}/charset.d.ts +0 -0
  553. /package/dist/{soap → http}/charset.js +0 -0
  554. /package/dist/{wsdl → http}/ref-policy.d.ts +0 -0
  555. /package/dist/{wsdl → http}/ref-policy.js +0 -0
  556. /package/dist/{wss/keystore → keystore}/certificate.d.ts +0 -0
  557. /package/dist/{wss/keystore → keystore}/certificate.js +0 -0
  558. /package/dist/{wss/keystore → keystore}/index.d.ts +0 -0
  559. /package/dist/{wss/keystore → keystore}/model.d.ts +0 -0
  560. /package/dist/{wss/keystore → keystore}/model.js +0 -0
  561. /package/dist/{wss/keystore → keystore}/pem.d.ts +0 -0
  562. /package/dist/{wss/keystore → keystore}/pkcs12.d.ts +0 -0
  563. /package/dist/{wsdl → project}/cache-naming.d.ts +0 -0
  564. /package/dist/{types.js → soap/types.js} +0 -0
  565. /package/dist/{soap → xml}/prefixes.d.ts +0 -0
  566. /package/dist/{soap → xml}/prefixes.js +0 -0
@@ -0,0 +1,50 @@
1
+ /**
2
+ * The CI tokens' wire shapes (callback-assertion spec §3). A CI token reads captures in one server
3
+ * workspace and nothing else; the server keeps only its hash. The server's routes validate with these
4
+ * and the desktop's main process and the CLI parse answers with them. Plain zod only (ADR-0009).
5
+ *
6
+ * The token itself appears in exactly one answer, the create, and is never listed again.
7
+ */
8
+ import { z } from 'zod';
9
+ export declare const CI_TOKEN_NAME_MAX_LENGTH = 64;
10
+ /**
11
+ * `POST …/ci-tokens`. The server validates with its own route schema, which trims the name before it
12
+ * bounds it by `CI_TOKEN_NAME_MAX_LENGTH` and refuses a blank one.
13
+ */
14
+ export interface CiTokenCreateRequest {
15
+ readonly name: string;
16
+ }
17
+ /** The one answer that holds the token: the desktop shows it once, with *Copy*. */
18
+ export declare const ciTokenCreatedSchema: z.ZodObject<{
19
+ id: z.ZodString;
20
+ name: z.ZodString;
21
+ token: z.ZodString;
22
+ }, z.core.$strip>;
23
+ export type CiTokenCreated = z.infer<typeof ciTokenCreatedSchema>;
24
+ export declare const ciTokenSummarySchema: z.ZodObject<{
25
+ id: z.ZodString;
26
+ name: z.ZodString;
27
+ createdBy: z.ZodNullable<z.ZodString>;
28
+ createdAt: z.ZodString;
29
+ lastUsedAt: z.ZodNullable<z.ZodString>;
30
+ }, z.core.$strip>;
31
+ export type CiTokenSummary = z.infer<typeof ciTokenSummarySchema>;
32
+ /** Unrevoked tokens, by name. */
33
+ export declare const ciTokensResponseSchema: z.ZodArray<z.ZodObject<{
34
+ id: z.ZodString;
35
+ name: z.ZodString;
36
+ createdBy: z.ZodNullable<z.ZodString>;
37
+ createdAt: z.ZodString;
38
+ lastUsedAt: z.ZodNullable<z.ZodString>;
39
+ }, z.core.$strip>>;
40
+ export declare const ciTokenParamsSchema: z.ZodObject<{
41
+ workspaceId: z.ZodString;
42
+ tokenId: z.ZodString;
43
+ }, z.core.$strip>;
44
+ /** `GET /api/v1/ci/whoami`: which workspace a CI token reads. */
45
+ export declare const ciWhoamiResponseSchema: z.ZodObject<{
46
+ workspaceId: z.ZodString;
47
+ workspaceName: z.ZodString;
48
+ tokenName: z.ZodString;
49
+ }, z.core.$strip>;
50
+ export type CiWhoamiResponse = z.infer<typeof ciWhoamiResponseSchema>;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The CI tokens' wire shapes (callback-assertion spec §3). A CI token reads captures in one server
3
+ * workspace and nothing else; the server keeps only its hash. The server's routes validate with these
4
+ * and the desktop's main process and the CLI parse answers with them. Plain zod only (ADR-0009).
5
+ *
6
+ * The token itself appears in exactly one answer, the create, and is never listed again.
7
+ */
8
+ import { z } from 'zod';
9
+ import { DEVICE_TOKEN_PATTERN } from './identity.js';
10
+ import { teamsIdSchema } from './teams.js';
11
+ export const CI_TOKEN_NAME_MAX_LENGTH = 64;
12
+ /** The one answer that holds the token: the desktop shows it once, with *Copy*. */
13
+ export const ciTokenCreatedSchema = z.object({
14
+ id: teamsIdSchema,
15
+ name: z.string(),
16
+ token: z.string().regex(DEVICE_TOKEN_PATTERN),
17
+ });
18
+ export const ciTokenSummarySchema = z.object({
19
+ id: teamsIdSchema,
20
+ name: z.string(),
21
+ /** The creator's display name; `null` once that account is gone. */
22
+ createdBy: z.string().nullable(),
23
+ createdAt: z.string(),
24
+ /** Written at most once a minute; `null` until first used. */
25
+ lastUsedAt: z.string().nullable(),
26
+ });
27
+ /** Unrevoked tokens, by name. */
28
+ export const ciTokensResponseSchema = z.array(ciTokenSummarySchema);
29
+ export const ciTokenParamsSchema = z.object({ workspaceId: teamsIdSchema, tokenId: teamsIdSchema });
30
+ /** `GET /api/v1/ci/whoami`: which workspace a CI token reads. */
31
+ export const ciWhoamiResponseSchema = z.object({
32
+ workspaceId: teamsIdSchema,
33
+ workspaceName: z.string(),
34
+ tokenName: z.string(),
35
+ });
@@ -0,0 +1,337 @@
1
+ /**
2
+ * The webhook-capture module's wire shapes (webhook-capture spec §3.5, §3.7). The server's routes
3
+ * validate with them through `jsonSchema()` and the desktop's main process parses answers with them,
4
+ * so a drift between the two fails typecheck. Plain zod only (ADR-0009).
5
+ *
6
+ * A catch URL is owned by a workspace. Its secret is the only credential on the public route, so it
7
+ * appears only inside `url`, which only workspace viewers and up can read (§5). The renderer never
8
+ * imports a value from here: main parses, and the renderer takes the inferred types.
9
+ *
10
+ * JSON Schema cannot count UTF-8 bytes or trim, so two checks stay in the handler: a name is trimmed
11
+ * and re-checked, and a response body is measured in bytes (`HOOKS_LIMITS.maxResponseBodyBytes`). The
12
+ * `max` on `body` here is in characters, which is only a cheap first bound.
13
+ */
14
+ import { z } from 'zod';
15
+ /** §3.5's validation limits and page sizes, shared so the desktop never sends what the server refuses. */
16
+ export declare const HOOKS_LIMITS: {
17
+ /** A catch URL's name, after trimming. */
18
+ readonly maxNameLength: 100;
19
+ readonly maxContentTypeLength: 255;
20
+ /** A configured response body, in UTF-8 bytes. */
21
+ readonly maxResponseBodyBytes: 65536;
22
+ /** The configured delay before the answer; no database connection is held meanwhile (§5). */
23
+ readonly maxDelayMs: 30000;
24
+ readonly defaultPageSize: 50;
25
+ readonly maxPageSize: 200;
26
+ };
27
+ /** The public route's prefix on the server's origin: `<publicUrl>/hooks/<secret>[/<subpath>]`. */
28
+ export declare const CATCH_URL_PATH_PREFIX = "/hooks/";
29
+ /**
30
+ * 128 random bits in Crockford base32: 26 upper-case characters. A minted secret starts 0–7; the
31
+ * pattern does not insist, since Crockford base32 also allows 8–9 as a leading digit for the last two
32
+ * bits of a full 130-bit range and this pattern only bounds the character set and length.
33
+ */
34
+ export declare const CATCH_SECRET_PATTERN: RegExp;
35
+ /**
36
+ * A configured `Content-Type`: printable ASCII only. A CR or LF would let a stored value split the
37
+ * public route's response header, and Node would throw at send time rather than answer.
38
+ */
39
+ export declare const CATCH_CONTENT_TYPE_PATTERN: RegExp;
40
+ /** What `/meta` reports (§3.7): whether the Webhooks node shows, and the limits that explain truncation and retention. */
41
+ export declare const hooksMetaSchema: z.ZodObject<{
42
+ enabled: z.ZodBoolean;
43
+ bodyLimitBytes: z.ZodNumber;
44
+ keep: z.ZodNumber;
45
+ maxAgeDays: z.ZodNumber;
46
+ }, z.core.$strip>;
47
+ export type HooksMeta = z.infer<typeof hooksMetaSchema>;
48
+ /** The one fixed answer a catch URL gives every sender (§3.3 step 6). */
49
+ export declare const catchUrlResponseSchema: z.ZodObject<{
50
+ status: z.ZodNumber;
51
+ contentType: z.ZodNullable<z.ZodString>;
52
+ body: z.ZodNullable<z.ZodString>;
53
+ delayMs: z.ZodNumber;
54
+ }, z.core.$strip>;
55
+ export type CatchUrlResponse = z.infer<typeof catchUrlResponseSchema>;
56
+ /** What a new catch URL answers until an editor changes it: the database's column defaults. */
57
+ export declare const CATCH_URL_DEFAULT_RESPONSE: CatchUrlResponse;
58
+ /** A catch URL's signature secret, in characters (webhook-signatures §3.4). */
59
+ export declare const SIGNATURE_SECRET_MAX_LENGTH = 512;
60
+ /** What a read shows of a catch URL's signature: the scheme, and only that a secret is set (§3.4). */
61
+ export declare const catchUrlSignatureSchema: z.ZodObject<{
62
+ scheme: z.ZodDiscriminatedUnion<[z.ZodObject<{
63
+ kind: z.ZodLiteral<"hmac">;
64
+ algorithm: z.ZodEnum<{
65
+ sha256: "sha256";
66
+ sha1: "sha1";
67
+ sha512: "sha512";
68
+ }>;
69
+ encoding: z.ZodEnum<{
70
+ base64: "base64";
71
+ hex: "hex";
72
+ }>;
73
+ header: z.ZodString;
74
+ prefix: z.ZodOptional<z.ZodString>;
75
+ }, z.core.$strip>, z.ZodObject<{
76
+ kind: z.ZodLiteral<"timestamped">;
77
+ header: z.ZodString;
78
+ toleranceSec: z.ZodDefault<z.ZodNumber>;
79
+ }, z.core.$strip>, z.ZodObject<{
80
+ kind: z.ZodLiteral<"standard">;
81
+ toleranceSec: z.ZodDefault<z.ZodNumber>;
82
+ }, z.core.$strip>], "kind">;
83
+ secret: z.ZodObject<{
84
+ set: z.ZodLiteral<true>;
85
+ hint: z.ZodNullable<z.ZodString>;
86
+ }, z.core.$strip>;
87
+ }, z.core.$strip>;
88
+ export type CatchUrlSignature = z.infer<typeof catchUrlSignatureSchema>;
89
+ /** A capture's verdict, fixed on receipt (§3.3); `null` on the capture means not checked. */
90
+ export declare const captureSignatureSchema: z.ZodObject<{
91
+ verdict: z.ZodEnum<{
92
+ verified: "verified";
93
+ failed: "failed";
94
+ }>;
95
+ reason: z.ZodOptional<z.ZodEnum<{
96
+ "missing-header": "missing-header";
97
+ "malformed-header": "malformed-header";
98
+ mismatch: "mismatch";
99
+ "stale-timestamp": "stale-timestamp";
100
+ "key-error": "key-error";
101
+ }>>;
102
+ }, z.core.$strip>;
103
+ export type CaptureSignature = z.infer<typeof captureSignatureSchema>;
104
+ export declare const catchUrlSchema: z.ZodObject<{
105
+ id: z.ZodString;
106
+ workspaceId: z.ZodString;
107
+ name: z.ZodString;
108
+ url: z.ZodString;
109
+ enabled: z.ZodBoolean;
110
+ response: z.ZodObject<{
111
+ status: z.ZodNumber;
112
+ contentType: z.ZodNullable<z.ZodString>;
113
+ body: z.ZodNullable<z.ZodString>;
114
+ delayMs: z.ZodNumber;
115
+ }, z.core.$strip>;
116
+ captureCount: z.ZodNumber;
117
+ newestCaptureId: z.ZodNullable<z.ZodString>;
118
+ createdAt: z.ZodString;
119
+ signature: z.ZodOptional<z.ZodNullable<z.ZodObject<{
120
+ scheme: z.ZodDiscriminatedUnion<[z.ZodObject<{
121
+ kind: z.ZodLiteral<"hmac">;
122
+ algorithm: z.ZodEnum<{
123
+ sha256: "sha256";
124
+ sha1: "sha1";
125
+ sha512: "sha512";
126
+ }>;
127
+ encoding: z.ZodEnum<{
128
+ base64: "base64";
129
+ hex: "hex";
130
+ }>;
131
+ header: z.ZodString;
132
+ prefix: z.ZodOptional<z.ZodString>;
133
+ }, z.core.$strip>, z.ZodObject<{
134
+ kind: z.ZodLiteral<"timestamped">;
135
+ header: z.ZodString;
136
+ toleranceSec: z.ZodDefault<z.ZodNumber>;
137
+ }, z.core.$strip>, z.ZodObject<{
138
+ kind: z.ZodLiteral<"standard">;
139
+ toleranceSec: z.ZodDefault<z.ZodNumber>;
140
+ }, z.core.$strip>], "kind">;
141
+ secret: z.ZodObject<{
142
+ set: z.ZodLiteral<true>;
143
+ hint: z.ZodNullable<z.ZodString>;
144
+ }, z.core.$strip>;
145
+ }, z.core.$strip>>>;
146
+ rejectUnverified: z.ZodOptional<z.ZodBoolean>;
147
+ signatureAvailable: z.ZodOptional<z.ZodBoolean>;
148
+ }, z.core.$strip>;
149
+ export type CatchUrl = z.infer<typeof catchUrlSchema>;
150
+ export declare const catchUrlsResponseSchema: z.ZodArray<z.ZodObject<{
151
+ id: z.ZodString;
152
+ workspaceId: z.ZodString;
153
+ name: z.ZodString;
154
+ url: z.ZodString;
155
+ enabled: z.ZodBoolean;
156
+ response: z.ZodObject<{
157
+ status: z.ZodNumber;
158
+ contentType: z.ZodNullable<z.ZodString>;
159
+ body: z.ZodNullable<z.ZodString>;
160
+ delayMs: z.ZodNumber;
161
+ }, z.core.$strip>;
162
+ captureCount: z.ZodNumber;
163
+ newestCaptureId: z.ZodNullable<z.ZodString>;
164
+ createdAt: z.ZodString;
165
+ signature: z.ZodOptional<z.ZodNullable<z.ZodObject<{
166
+ scheme: z.ZodDiscriminatedUnion<[z.ZodObject<{
167
+ kind: z.ZodLiteral<"hmac">;
168
+ algorithm: z.ZodEnum<{
169
+ sha256: "sha256";
170
+ sha1: "sha1";
171
+ sha512: "sha512";
172
+ }>;
173
+ encoding: z.ZodEnum<{
174
+ base64: "base64";
175
+ hex: "hex";
176
+ }>;
177
+ header: z.ZodString;
178
+ prefix: z.ZodOptional<z.ZodString>;
179
+ }, z.core.$strip>, z.ZodObject<{
180
+ kind: z.ZodLiteral<"timestamped">;
181
+ header: z.ZodString;
182
+ toleranceSec: z.ZodDefault<z.ZodNumber>;
183
+ }, z.core.$strip>, z.ZodObject<{
184
+ kind: z.ZodLiteral<"standard">;
185
+ toleranceSec: z.ZodDefault<z.ZodNumber>;
186
+ }, z.core.$strip>], "kind">;
187
+ secret: z.ZodObject<{
188
+ set: z.ZodLiteral<true>;
189
+ hint: z.ZodNullable<z.ZodString>;
190
+ }, z.core.$strip>;
191
+ }, z.core.$strip>>>;
192
+ rejectUnverified: z.ZodOptional<z.ZodBoolean>;
193
+ signatureAvailable: z.ZodOptional<z.ZodBoolean>;
194
+ }, z.core.$strip>>;
195
+ export declare const catchUrlCreateRequestSchema: z.ZodObject<{
196
+ name: z.ZodString;
197
+ enabled: z.ZodOptional<z.ZodBoolean>;
198
+ response: z.ZodOptional<z.ZodObject<{
199
+ status: z.ZodOptional<z.ZodNumber>;
200
+ contentType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
201
+ body: z.ZodOptional<z.ZodNullable<z.ZodString>>;
202
+ delayMs: z.ZodOptional<z.ZodNumber>;
203
+ }, z.core.$strip>>;
204
+ }, z.core.$strip>;
205
+ export type CatchUrlCreateRequest = z.infer<typeof catchUrlCreateRequestSchema>;
206
+ /** Every field optional; `response.contentType` or `response.body` set to `null` clears it. */
207
+ export declare const catchUrlUpdateRequestSchema: z.ZodObject<{
208
+ name: z.ZodOptional<z.ZodString>;
209
+ enabled: z.ZodOptional<z.ZodBoolean>;
210
+ response: z.ZodOptional<z.ZodObject<{
211
+ status: z.ZodOptional<z.ZodNumber>;
212
+ contentType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
213
+ body: z.ZodOptional<z.ZodNullable<z.ZodString>>;
214
+ delayMs: z.ZodOptional<z.ZodNumber>;
215
+ }, z.core.$strip>>;
216
+ signature: z.ZodOptional<z.ZodNullable<z.ZodObject<{
217
+ scheme: z.ZodDiscriminatedUnion<[z.ZodObject<{
218
+ kind: z.ZodLiteral<"hmac">;
219
+ algorithm: z.ZodEnum<{
220
+ sha256: "sha256";
221
+ sha1: "sha1";
222
+ sha512: "sha512";
223
+ }>;
224
+ encoding: z.ZodEnum<{
225
+ base64: "base64";
226
+ hex: "hex";
227
+ }>;
228
+ header: z.ZodString;
229
+ prefix: z.ZodOptional<z.ZodString>;
230
+ }, z.core.$strip>, z.ZodObject<{
231
+ kind: z.ZodLiteral<"timestamped">;
232
+ header: z.ZodString;
233
+ toleranceSec: z.ZodDefault<z.ZodNumber>;
234
+ }, z.core.$strip>, z.ZodObject<{
235
+ kind: z.ZodLiteral<"standard">;
236
+ toleranceSec: z.ZodDefault<z.ZodNumber>;
237
+ }, z.core.$strip>], "kind">;
238
+ secret: z.ZodOptional<z.ZodString>;
239
+ }, z.core.$strip>>>;
240
+ rejectUnverified: z.ZodOptional<z.ZodBoolean>;
241
+ }, z.core.$strip>;
242
+ export type CatchUrlUpdateRequest = z.infer<typeof catchUrlUpdateRequestSchema>;
243
+ export declare const catchUrlParamsSchema: z.ZodObject<{
244
+ workspaceId: z.ZodString;
245
+ hookId: z.ZodString;
246
+ }, z.core.$strip>;
247
+ export declare const captureParamsSchema: z.ZodObject<{
248
+ workspaceId: z.ZodString;
249
+ hookId: z.ZodString;
250
+ captureId: z.ZodString;
251
+ }, z.core.$strip>;
252
+ /**
253
+ * `GET …/captures?before=&after=&limit=`. Fastify's Ajv coerces the querystring, so the handler reads a
254
+ * number. `before` pages back from an id; `after` returns the `limit` captures right after an id (the
255
+ * gap fill, §4.1). Both at once is refused by the handler (`hooks-cursor-conflict`).
256
+ */
257
+ export declare const capturesQuerySchema: z.ZodObject<{
258
+ before: z.ZodOptional<z.ZodString>;
259
+ after: z.ZodOptional<z.ZodString>;
260
+ limit: z.ZodOptional<z.ZodNumber>;
261
+ }, z.core.$strip>;
262
+ export type CapturesQuery = z.infer<typeof capturesQuerySchema>;
263
+ export declare const captureSummarySchema: z.ZodObject<{
264
+ id: z.ZodString;
265
+ receivedAt: z.ZodString;
266
+ method: z.ZodString;
267
+ subpath: z.ZodString;
268
+ bodySize: z.ZodNumber;
269
+ truncated: z.ZodBoolean;
270
+ sourceIp: z.ZodString;
271
+ signature: z.ZodOptional<z.ZodNullable<z.ZodObject<{
272
+ verdict: z.ZodEnum<{
273
+ verified: "verified";
274
+ failed: "failed";
275
+ }>;
276
+ reason: z.ZodOptional<z.ZodEnum<{
277
+ "missing-header": "missing-header";
278
+ "malformed-header": "malformed-header";
279
+ mismatch: "mismatch";
280
+ "stale-timestamp": "stale-timestamp";
281
+ "key-error": "key-error";
282
+ }>>;
283
+ }, z.core.$strip>>>;
284
+ rejected: z.ZodOptional<z.ZodBoolean>;
285
+ }, z.core.$strip>;
286
+ export type CaptureSummary = z.infer<typeof captureSummarySchema>;
287
+ /** Newest first. */
288
+ export declare const capturesResponseSchema: z.ZodArray<z.ZodObject<{
289
+ id: z.ZodString;
290
+ receivedAt: z.ZodString;
291
+ method: z.ZodString;
292
+ subpath: z.ZodString;
293
+ bodySize: z.ZodNumber;
294
+ truncated: z.ZodBoolean;
295
+ sourceIp: z.ZodString;
296
+ signature: z.ZodOptional<z.ZodNullable<z.ZodObject<{
297
+ verdict: z.ZodEnum<{
298
+ verified: "verified";
299
+ failed: "failed";
300
+ }>;
301
+ reason: z.ZodOptional<z.ZodEnum<{
302
+ "missing-header": "missing-header";
303
+ "malformed-header": "malformed-header";
304
+ mismatch: "mismatch";
305
+ "stale-timestamp": "stale-timestamp";
306
+ "key-error": "key-error";
307
+ }>>;
308
+ }, z.core.$strip>>>;
309
+ rejected: z.ZodOptional<z.ZodBoolean>;
310
+ }, z.core.$strip>>;
311
+ export declare const captureSchema: z.ZodObject<{
312
+ id: z.ZodString;
313
+ receivedAt: z.ZodString;
314
+ method: z.ZodString;
315
+ subpath: z.ZodString;
316
+ bodySize: z.ZodNumber;
317
+ truncated: z.ZodBoolean;
318
+ sourceIp: z.ZodString;
319
+ signature: z.ZodOptional<z.ZodNullable<z.ZodObject<{
320
+ verdict: z.ZodEnum<{
321
+ verified: "verified";
322
+ failed: "failed";
323
+ }>;
324
+ reason: z.ZodOptional<z.ZodEnum<{
325
+ "missing-header": "missing-header";
326
+ "malformed-header": "malformed-header";
327
+ mismatch: "mismatch";
328
+ "stale-timestamp": "stale-timestamp";
329
+ "key-error": "key-error";
330
+ }>>;
331
+ }, z.core.$strip>>>;
332
+ rejected: z.ZodOptional<z.ZodBoolean>;
333
+ query: z.ZodString;
334
+ headers: z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodString], null>>;
335
+ body: z.ZodString;
336
+ }, z.core.$strip>;
337
+ export type Capture = z.infer<typeof captureSchema>;
@@ -0,0 +1,152 @@
1
+ /**
2
+ * The webhook-capture module's wire shapes (webhook-capture spec §3.5, §3.7). The server's routes
3
+ * validate with them through `jsonSchema()` and the desktop's main process parses answers with them,
4
+ * so a drift between the two fails typecheck. Plain zod only (ADR-0009).
5
+ *
6
+ * A catch URL is owned by a workspace. Its secret is the only credential on the public route, so it
7
+ * appears only inside `url`, which only workspace viewers and up can read (§5). The renderer never
8
+ * imports a value from here: main parses, and the renderer takes the inferred types.
9
+ *
10
+ * JSON Schema cannot count UTF-8 bytes or trim, so two checks stay in the handler: a name is trimmed
11
+ * and re-checked, and a response body is measured in bytes (`HOOKS_LIMITS.maxResponseBodyBytes`). The
12
+ * `max` on `body` here is in characters, which is only a cheap first bound.
13
+ */
14
+ import { z } from 'zod';
15
+ import { SIGNATURE_FAILURES, signatureSchemeSchema } from '../http/webhook-signature.js';
16
+ import { teamsIdSchema } from './teams.js';
17
+ /** §3.5's validation limits and page sizes, shared so the desktop never sends what the server refuses. */
18
+ export const HOOKS_LIMITS = {
19
+ /** A catch URL's name, after trimming. */
20
+ maxNameLength: 100,
21
+ maxContentTypeLength: 255,
22
+ /** A configured response body, in UTF-8 bytes. */
23
+ maxResponseBodyBytes: 65_536,
24
+ /** The configured delay before the answer; no database connection is held meanwhile (§5). */
25
+ maxDelayMs: 30_000,
26
+ defaultPageSize: 50,
27
+ maxPageSize: 200,
28
+ };
29
+ /** The public route's prefix on the server's origin: `<publicUrl>/hooks/<secret>[/<subpath>]`. */
30
+ export const CATCH_URL_PATH_PREFIX = '/hooks/';
31
+ /**
32
+ * 128 random bits in Crockford base32: 26 upper-case characters. A minted secret starts 0–7; the
33
+ * pattern does not insist, since Crockford base32 also allows 8–9 as a leading digit for the last two
34
+ * bits of a full 130-bit range and this pattern only bounds the character set and length.
35
+ */
36
+ export const CATCH_SECRET_PATTERN = /^[0-9A-HJKMNP-TV-Z]{26}$/;
37
+ /**
38
+ * A configured `Content-Type`: printable ASCII only. A CR or LF would let a stored value split the
39
+ * public route's response header, and Node would throw at send time rather than answer.
40
+ */
41
+ export const CATCH_CONTENT_TYPE_PATTERN = /^[\x20-\x7e]+$/;
42
+ /** What `/meta` reports (§3.7): whether the Webhooks node shows, and the limits that explain truncation and retention. */
43
+ export const hooksMetaSchema = z.object({
44
+ enabled: z.boolean(),
45
+ bodyLimitBytes: z.number().int().positive(),
46
+ keep: z.number().int().positive(),
47
+ maxAgeDays: z.number().int().positive(),
48
+ });
49
+ /** The one fixed answer a catch URL gives every sender (§3.3 step 6). */
50
+ export const catchUrlResponseSchema = z.object({
51
+ status: z.number().int().min(200).max(599),
52
+ contentType: z.string().max(HOOKS_LIMITS.maxContentTypeLength).regex(CATCH_CONTENT_TYPE_PATTERN).nullable(),
53
+ body: z.string().max(HOOKS_LIMITS.maxResponseBodyBytes).nullable(),
54
+ delayMs: z.number().int().min(0).max(HOOKS_LIMITS.maxDelayMs),
55
+ });
56
+ /** What a new catch URL answers until an editor changes it: the database's column defaults. */
57
+ export const CATCH_URL_DEFAULT_RESPONSE = Object.freeze({
58
+ status: 200,
59
+ contentType: null,
60
+ body: null,
61
+ delayMs: 0,
62
+ });
63
+ /** A catch URL's signature secret, in characters (webhook-signatures §3.4). */
64
+ export const SIGNATURE_SECRET_MAX_LENGTH = 512;
65
+ /** What a read shows of a catch URL's signature: the scheme, and only that a secret is set (§3.4). */
66
+ export const catchUrlSignatureSchema = z.object({
67
+ scheme: signatureSchemeSchema,
68
+ /** Write-only: never the secret, only that one is set and, to editors, its last four characters. */
69
+ secret: z.object({ set: z.literal(true), hint: z.string().nullable() }),
70
+ });
71
+ /** A capture's verdict, fixed on receipt (§3.3); `null` on the capture means not checked. */
72
+ export const captureSignatureSchema = z.object({
73
+ verdict: z.enum(['verified', 'failed']),
74
+ reason: z.enum(SIGNATURE_FAILURES).optional(),
75
+ });
76
+ const nameSchema = z.string().min(1).max(HOOKS_LIMITS.maxNameLength);
77
+ export const catchUrlSchema = z.object({
78
+ id: teamsIdSchema,
79
+ workspaceId: teamsIdSchema,
80
+ name: z.string(),
81
+ /** `publicUrl` + `/hooks/` + the secret. Rotating replaces it. */
82
+ url: z.string(),
83
+ enabled: z.boolean(),
84
+ response: catchUrlResponseSchema,
85
+ captureCount: z.number().int().min(0),
86
+ /** The newest capture's id, `null` with none: the desktop's unseen badge compares it with the last one seen. */
87
+ newestCaptureId: teamsIdSchema.nullable(),
88
+ createdAt: z.string(),
89
+ /** webhook-signatures §3.4; absent from an older server. */
90
+ signature: catchUrlSignatureSchema.nullable().optional(),
91
+ rejectUnverified: z.boolean().optional(),
92
+ /** `false` while `WIREBENCH_SERVER_HOOKS_SECRET_KEY` is unset, so the desktop can explain why. */
93
+ signatureAvailable: z.boolean().optional(),
94
+ });
95
+ export const catchUrlsResponseSchema = z.array(catchUrlSchema);
96
+ export const catchUrlCreateRequestSchema = z.object({
97
+ name: nameSchema,
98
+ enabled: z.boolean().optional(),
99
+ response: catchUrlResponseSchema.partial().optional(),
100
+ });
101
+ /** Every field optional; `response.contentType` or `response.body` set to `null` clears it. */
102
+ export const catchUrlUpdateRequestSchema = z.object({
103
+ name: nameSchema.optional(),
104
+ enabled: z.boolean().optional(),
105
+ response: catchUrlResponseSchema.partial().optional(),
106
+ /** `null` clears; a scheme without `secret` keeps the stored one (§3.4). */
107
+ signature: z
108
+ .object({ scheme: signatureSchemeSchema, secret: z.string().min(1).max(SIGNATURE_SECRET_MAX_LENGTH).optional() })
109
+ .nullable()
110
+ .optional(),
111
+ rejectUnverified: z.boolean().optional(),
112
+ });
113
+ export const catchUrlParamsSchema = z.object({ workspaceId: teamsIdSchema, hookId: teamsIdSchema });
114
+ export const captureParamsSchema = z.object({
115
+ workspaceId: teamsIdSchema,
116
+ hookId: teamsIdSchema,
117
+ captureId: teamsIdSchema,
118
+ });
119
+ /**
120
+ * `GET …/captures?before=&after=&limit=`. Fastify's Ajv coerces the querystring, so the handler reads a
121
+ * number. `before` pages back from an id; `after` returns the `limit` captures right after an id (the
122
+ * gap fill, §4.1). Both at once is refused by the handler (`hooks-cursor-conflict`).
123
+ */
124
+ export const capturesQuerySchema = z.object({
125
+ before: teamsIdSchema.optional(),
126
+ after: teamsIdSchema.optional(),
127
+ limit: z.number().int().min(1).max(HOOKS_LIMITS.maxPageSize).optional(),
128
+ });
129
+ export const captureSummarySchema = z.object({
130
+ /** A ULID: captures sort by arrival. */
131
+ id: teamsIdSchema,
132
+ receivedAt: z.string(),
133
+ method: z.string(),
134
+ /** What followed `/hooks/<secret>`: `''` or `/…`, still percent-encoded as it arrived. */
135
+ subpath: z.string(),
136
+ /** The size that arrived, before truncation. */
137
+ bodySize: z.number().int().min(0),
138
+ truncated: z.boolean(),
139
+ sourceIp: z.string(),
140
+ signature: captureSignatureSchema.nullable().optional(),
141
+ rejected: z.boolean().optional(),
142
+ });
143
+ /** Newest first. */
144
+ export const capturesResponseSchema = z.array(captureSummarySchema);
145
+ export const captureSchema = captureSummarySchema.extend({
146
+ /** The raw query string, without `?`. */
147
+ query: z.string(),
148
+ /** `[name, value]` pairs in arrival order, repeats kept, names as the sender spelled them. */
149
+ headers: z.array(z.tuple([z.string(), z.string()])),
150
+ /** The stored bytes (at most the server's body limit), base64. */
151
+ body: z.string(),
152
+ });