@wirebench/engine 2.2.0 → 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
@@ -3,24 +3,25 @@
3
3
  * and sending a SOAP request. These are the shapes the desktop app (Task 13)
4
4
  * consumes directly.
5
5
  */
6
- import type { FetchDocument } from './wsdl/resolver.js';
7
- import type { QName } from './wsdl/qname.js';
8
- import type { DefinitionBundle } from './wsdl/resolver.js';
9
- import type { MimePartInfo, WsdlDefinition } from './wsdl/model.js';
10
- import type { SchemaSet } from './xsd/schema-set.js';
11
- import type { HttpExchange, ProxyOptions, TlsOptions } from './http/types.js';
12
- import type { SoapEnvelopeVersion } from './soap/envelope.js';
13
- import type { SoapFault } from './soap/fault.js';
14
- import type { UnresolvedRef } from './project/properties.js';
15
- import type { Attachment } from './project/model.js';
16
- import type { AttachmentResolver, ResponseAttachment } from './soap/mime/types.js';
17
- import type { WssContext, WssIncomingConfig, WssOutgoingConfig } from './wss/model.js';
18
- import type { WssResult } from './wss/incoming/index.js';
19
- import type { WssRequestProperties } from './wss/apply.js';
20
- import type { WsaConfig } from './wsa/model.js';
21
- import type { WsaSummary } from './wsa/policy-detect.js';
6
+ import type { FetchDocument } from '../wsdl/resolver.js';
7
+ import type { QName } from '../wsdl/qname.js';
8
+ import type { DefinitionBundle } from '../wsdl/resolver.js';
9
+ import type { MimePartInfo, WsdlDefinition } from '../wsdl/model.js';
10
+ import type { SchemaSet } from '../xsd/schema-set.js';
11
+ import type { AuthSummary, SendAuth } from '../http/auth/send-auth.js';
12
+ import type { HttpExchange, ProxyOptions, TlsOptions } from '../http/types.js';
13
+ import type { SoapEnvelopeVersion } from './envelope.js';
14
+ import type { SoapFault } from './fault.js';
15
+ import type { UnresolvedRef } from '../project/properties.js';
16
+ import type { Attachment } from '../project/model.js';
17
+ import type { AttachmentResolver, ResponseAttachment } from './mime/types.js';
18
+ import type { WssContext, WssIncomingConfig, WssOutgoingConfig } from '../wss/model.js';
19
+ import type { WssResult } from '../wss/incoming/index.js';
20
+ import type { WssRequestProperties } from '../wss/apply.js';
21
+ import type { WsaConfig } from '../wsa/model.js';
22
+ import type { WsaSummary } from '../wsa/policy-detect.js';
22
23
  /** Where a WSDL definition comes from. */
23
- export type ImportSource = {
24
+ export type WsdlImportSource = {
24
25
  readonly kind: 'url';
25
26
  readonly url: string;
26
27
  } | {
@@ -32,8 +33,8 @@ export type ImportSource = {
32
33
  /** Base location for resolving relative imports; defaults to `inline:wsdl`. */
33
34
  readonly location?: string;
34
35
  };
35
- /** One phase of an in-progress {@link ImportSource} import. */
36
- export type ImportProgress = {
36
+ /** One phase of an in-progress {@link WsdlImportSource} import. */
37
+ export type WsdlImportProgress = {
37
38
  readonly phase: 'fetch';
38
39
  readonly location: string;
39
40
  } | {
@@ -44,19 +45,19 @@ export type ImportProgress = {
44
45
  readonly phase: 'done';
45
46
  };
46
47
  /**
47
- * Definition-cache behaviour for `importDefinition`: `'prefer-cache'` resolves
48
+ * Definition-cache behaviour for `importWsdl`: `'prefer-cache'` resolves
48
49
  * entirely from a valid cache with no network access (falling back to the
49
50
  * network, with a problem reported, if the cache is missing or corrupt);
50
51
  * `'refresh'` always resolves from the network and then (re)writes the
51
52
  * cache; `'none'` ignores the cache entirely.
52
53
  */
53
- export interface ImportCacheOptions {
54
+ export interface WsdlImportCacheOptions {
54
55
  /** Absolute path of the interface's `definition/` directory (see `definitionCacheDir`). */
55
56
  readonly dir: string;
56
57
  readonly mode: 'prefer-cache' | 'refresh' | 'none';
57
58
  }
58
- /** Options accepted by `importDefinition`. */
59
- export interface ImportOptions {
59
+ /** Options accepted by `importWsdl`. */
60
+ export interface WsdlImportOptions {
60
61
  /** Overrides the default `file://`/`http(s)://` fetcher, e.g. for tests. */
61
62
  readonly fetchDocument?: FetchDocument;
62
63
  /** Basic auth credentials added to every `http(s)://` fetch made while importing. */
@@ -65,12 +66,12 @@ export interface ImportOptions {
65
66
  readonly password: string;
66
67
  };
67
68
  readonly signal?: AbortSignal;
68
- readonly onProgress?: (event: ImportProgress) => void;
69
- /** Definition-cache behaviour; see {@link ImportCacheOptions}. Omitted/absent means no caching. */
70
- readonly cache?: ImportCacheOptions;
69
+ readonly onProgress?: (event: WsdlImportProgress) => void;
70
+ /** Definition-cache behaviour; see {@link WsdlImportCacheOptions}. Omitted/absent means no caching. */
71
+ readonly cache?: WsdlImportCacheOptions;
71
72
  }
72
73
  /** A non-fatal problem encountered while importing a definition, tagged by the stage that raised it. */
73
- export interface ImportProblem {
74
+ export interface WsdlImportProblem {
74
75
  readonly source: 'resolve' | 'wsdl' | 'schema';
75
76
  readonly code: string;
76
77
  readonly message: string;
@@ -79,7 +80,7 @@ export interface ImportProblem {
79
80
  readonly column?: number;
80
81
  }
81
82
  /** One binding operation's port bindings, as summarized for a picker UI. */
82
- export interface OperationSummary {
83
+ export interface SoapOperationSummary {
83
84
  readonly bindingName: QName;
84
85
  readonly operationName: string;
85
86
  readonly soapVersion: '1.1' | '1.2' | 'none';
@@ -98,68 +99,17 @@ export interface OperationSummary {
98
99
  readonly inputMimeParts: readonly MimePartInfo[];
99
100
  }
100
101
  /** The full result of importing a WSDL definition: parsed model, schema set, problems and an operation picker list. */
101
- export interface ImportResult {
102
+ export interface WsdlImportResult {
102
103
  readonly definition: WsdlDefinition;
103
104
  readonly bundle: DefinitionBundle;
104
105
  readonly schemaSet: SchemaSet;
105
- readonly problems: readonly ImportProblem[];
106
- readonly operations: readonly OperationSummary[];
106
+ readonly problems: readonly WsdlImportProblem[];
107
+ readonly operations: readonly SoapOperationSummary[];
107
108
  /** What the definition itself says about WS-Addressing; see `summarizeWsa`. */
108
109
  readonly wsa: WsaSummary;
109
110
  /** True when this result was resolved entirely from the definition cache, with no network access. */
110
111
  readonly fromCache?: boolean;
111
112
  }
112
- /**
113
- * Credentials for one send, already resolved to plaintext: the desktop app looks a
114
- * `passwordRef` up in its secret store before calling the engine, so the engine never
115
- * sees a secret reference (and never persists or logs the password).
116
- */
117
- export type SendAuth = {
118
- readonly type: 'basic';
119
- readonly username: string;
120
- readonly password: string;
121
- /** Send the `Authorization` header on the first attempt instead of waiting for a 401. */
122
- readonly preemptive: boolean;
123
- } | {
124
- readonly type: 'ntlm';
125
- readonly username: string;
126
- readonly password: string;
127
- readonly domain?: string;
128
- readonly workstation?: string;
129
- }
130
- /** A token in an `Authorization` header. `scheme` defaults to `Bearer`. */
131
- | {
132
- readonly type: 'bearer';
133
- readonly token: string;
134
- readonly scheme?: string;
135
- }
136
- /** A key in one header or one query parameter. */
137
- | {
138
- readonly type: 'api-key';
139
- readonly name: string;
140
- readonly value: string;
141
- readonly in: 'header' | 'query';
142
- }
143
- /**
144
- * An OAuth2 access token the host already obtained. The engine never runs a grant during a send:
145
- * the token is fetched (and cached, and refreshed) by the host, so a send is one exchange and
146
- * the browser is never opened behind it. On the wire it is a Bearer token.
147
- */
148
- | {
149
- readonly type: 'oauth2';
150
- readonly accessToken: string;
151
- };
152
- /** What authentication actually did during one send, for the UI to explain the exchange. */
153
- export interface AuthSummary {
154
- readonly scheme: SendAuth['type'];
155
- /** True when the server answered the first attempt with a 401 challenge. */
156
- readonly challenged: boolean;
157
- /**
158
- * How many HTTP attempts the send made: 1 preemptive/unchallenged, 2 after a Basic
159
- * challenge, 3 for a full NTLM handshake (bare, Type 1, Type 3).
160
- */
161
- readonly attempts: 1 | 2 | 3;
162
- }
163
113
  /** Input to `sendSoapRequest`: an already-built envelope plus transport knobs. */
164
114
  export interface SoapSendInput {
165
115
  readonly endpoint: string;
@@ -195,7 +145,7 @@ export interface SoapSendInput {
195
145
  /** Attachments to send; only acted on when {@link attachmentOptions} says how. */
196
146
  readonly attachments?: readonly Attachment[];
197
147
  /** MTOM/SwA/inline-file behaviour plus the resolvers that turn references into bytes. */
198
- readonly attachmentOptions?: SendAttachmentOptions;
148
+ readonly attachmentOptions?: SoapAttachmentOptions;
199
149
  /**
200
150
  * WS-Security applied to the envelope after property expansion and inline-file substitution
201
151
  * and before attachment packaging, so the header is part of the envelope that actually goes
@@ -236,7 +186,7 @@ export interface SoapSendWss {
236
186
  * referenced part's base64, the second keeps those parts listed as attachments even
237
187
  * once they have been expanded into the envelope.
238
188
  */
239
- export interface SendAttachmentOptions {
189
+ export interface SoapAttachmentOptions {
240
190
  /** Rewrite `cid:` references as `xop:Include` and send an MTOM package. */
241
191
  readonly enableMtom: boolean;
242
192
  /** Send an MTOM package even when nothing was optimised. */
@@ -0,0 +1,202 @@
1
+ /**
2
+ * A small, Electron-free wrapper around the system `git` executable: discovery ({@link findGit}),
3
+ * a hardened {@link GitCli.run}, error mapping and remote URL validation ({@link assertRemoteUrl}).
4
+ *
5
+ * This file must never import `electron` — `SyncService` and Wirebench Server's commit store run it
6
+ * in plain Node, and `ipc/git.ts` is the only place that bridges it to Electron.
7
+ *
8
+ * Git is never bundled: it is found on the machine it runs on, or the user is asked to locate
9
+ * it (`git.locate`). Every invocation goes through {@link GitCli.run}, which never opens a
10
+ * shell, never prompts, never runs a hook, and refuses any subcommand outside
11
+ * {@link GIT_SUBCOMMANDS} before a process is even spawned. A `GitCli` the server builds with
12
+ * `{ plumbing: true }` also accepts {@link GIT_PLUMBING_SUBCOMMANDS}; the desktop never does.
13
+ */
14
+ /**
15
+ * The only git subcommands `GitCli.run` will spawn. A `-`-prefixed first argument, or any
16
+ * subcommand not on this list, is refused before a process is spawned — see `run`.
17
+ */
18
+ export declare const GIT_SUBCOMMANDS: readonly ["--version", "init", "clone", "add", "commit", "fetch", "merge", "push", "status", "diff", "show", "rev-list", "rev-parse", "log", "checkout", "remote", "config", "symbolic-ref", "var", "rm"];
19
+ /** One of the subcommands {@link GIT_SUBCOMMANDS} allows. */
20
+ export type GitSubcommand = (typeof GIT_SUBCOMMANDS)[number];
21
+ /**
22
+ * Git plumbing, for Wirebench Server's commit store only (server-sync spec §3.3, R1): it builds
23
+ * commits in a bare repository, with no working tree. This is a second list rather than a longer
24
+ * {@link GIT_SUBCOMMANDS}, so the desktop's allow-list does not grow. Only a `GitCli` constructed
25
+ * with `{ plumbing: true }`, or returned by {@link GitCli.withPlumbing}, accepts these.
26
+ */
27
+ export declare const GIT_PLUMBING_SUBCOMMANDS: readonly ["ls-tree", "cat-file", "merge-base", "diff-tree", "read-tree", "hash-object", "update-index", "write-tree", "commit-tree", "update-ref"];
28
+ /** One of the subcommands {@link GIT_PLUMBING_SUBCOMMANDS} allows. */
29
+ export type GitPlumbingSubcommand = (typeof GIT_PLUMBING_SUBCOMMANDS)[number];
30
+ /**
31
+ * The only variables a caller may set per call ({@link GitRunOptions.env}): the commit store's
32
+ * private index file, and the author and committer of the commit it writes. Anything else
33
+ * (`GIT_DIR`, `GIT_CONFIG_*`, `GIT_SSH_COMMAND`, `GIT_EXEC_PATH`, `PATH`) could point git somewhere
34
+ * else or make it run a program, so it is refused.
35
+ */
36
+ export declare const GIT_CALL_ENV: readonly ["GIT_INDEX_FILE", "GIT_AUTHOR_NAME", "GIT_AUTHOR_EMAIL", "GIT_AUTHOR_DATE", "GIT_COMMITTER_NAME", "GIT_COMMITTER_EMAIL", "GIT_COMMITTER_DATE"];
37
+ /** One of the variables {@link GIT_CALL_ENV} allows. */
38
+ export type GitCallEnv = (typeof GIT_CALL_ENV)[number];
39
+ /** Per-call options of {@link GitCli.run}. */
40
+ export interface GitRunOptions {
41
+ /** Kills git after this long; 60 s when absent. */
42
+ readonly timeoutMs?: number;
43
+ /** Written to the child's stdin, then stdin is closed. */
44
+ readonly input?: string | Uint8Array;
45
+ /** Refused (git-failed, before spawning) when a key is not in GIT_CALL_ENV. */
46
+ readonly env?: Partial<Record<GitCallEnv, string>>;
47
+ /** Buffered-output ceiling for this call; defaults to today's 16 MiB. */
48
+ readonly maxBuffer?: number;
49
+ }
50
+ /**
51
+ * How a git process is actually spawned. It resolves, never rejects, on a non-zero exit. It rejects
52
+ * only when git was never run or was killed:
53
+ * - The executable could not be spawned (`ENOENT`/`EACCES`). {@link findGit} treats that as "this
54
+ * candidate is not usable", and {@link GitCli.run} maps it to `git-not-found`.
55
+ * - The timeout killed git.
56
+ * - git's output passed `maxBuffer` (`ERR_CHILD_PROCESS_STDIO_MAXBUFFER`).
57
+ *
58
+ * When `input` is present, it is written to stdin and stdin is closed. `encoding: 'buffer'` asks
59
+ * for stdout as raw bytes, because a blob need not be UTF-8. stderr is always text, because the
60
+ * error mapping reads it. A fake runner may answer stdout in either shape; `GitCli.run` converts it.
61
+ */
62
+ export type Runner = (file: string, args: readonly string[], options: {
63
+ cwd?: string;
64
+ env: NodeJS.ProcessEnv;
65
+ timeoutMs: number;
66
+ input?: string | Uint8Array;
67
+ encoding: 'utf8' | 'buffer';
68
+ maxBuffer: number;
69
+ }) => Promise<{
70
+ stdout: string | Buffer;
71
+ stderr: string;
72
+ exitCode: number;
73
+ }>;
74
+ /** A located, usable git executable. */
75
+ export interface GitLocation {
76
+ readonly path: string;
77
+ readonly version: string;
78
+ }
79
+ /** Parses `git version 2.39.2 (Apple Git-143)` (or `... 2.42.0.windows.1`) → the version string. */
80
+ export declare function parseGitVersion(stdout: string): string | undefined;
81
+ /**
82
+ * Finds a usable system git: the configured path first, then every `PATH` entry, then a
83
+ * platform default. The first candidate whose `--version` probe exits 0 with a parsable,
84
+ * sufficiently recent version wins; every other outcome (spawn failure, non-zero exit, unparsable
85
+ * output, too old) just skips to the next candidate.
86
+ */
87
+ export declare function findGit(options: {
88
+ configuredPath?: string;
89
+ env?: NodeJS.ProcessEnv;
90
+ platform?: NodeJS.Platform;
91
+ exists?: (path: string) => boolean;
92
+ run?: Runner;
93
+ }): Promise<GitLocation | undefined>;
94
+ /**
95
+ * Refuses anything that is not a literal `https://`, `ssh://` or `file://` URL (scheme
96
+ * case-insensitive) or a `user@host:path` remote, trims and returns the accepted value
97
+ * otherwise. In particular refuses: an empty string; whitespace or control characters anywhere
98
+ * in the trimmed value; a value starting with `-` (which `git` — or a shell a transport helper
99
+ * invokes — would parse as a flag); `ext::…` (git's "run an arbitrary command" transport); a
100
+ * scheme-only form with no `//` (`https:x`, `file:/etc/r`, `ssh:-oProxyCommand=…`); and —
101
+ * crucially — a *user or host* starting with `-` once fully parsed out of the authority
102
+ * (`user@host[:port]`, `[bracketed-IPv6-host]`, `%`-decoded) and off the scp-like form's
103
+ * `user@host:`, closing bypasses a leading-`-` check on the whole string alone would miss:
104
+ * `ssh://git@-oProxyCommand=x/y`, `ssh://[-oProxyCommand=x]/y`, `ssh://%2doProxyCommand=x/y`
105
+ * (git percent-decodes the host), `https://user@-host/y`. A malformed `%` sequence in the user
106
+ * or host is refused outright rather than passed through undecoded.
107
+ *
108
+ * The error `details` carry only the scheme (or `'scp-like'`) — never the URL, which may embed
109
+ * credentials — and the message stays generic for the same reason.
110
+ */
111
+ export declare function assertRemoteUrl(url: string): string;
112
+ /**
113
+ * Refuses a branch name that could be read as a flag by `git` (a leading `-`) or that git itself
114
+ * would refuse as a ref name, and returns it otherwise. In particular refuses: empty; a leading
115
+ * `-`; whitespace or control characters; `~^:?*[` or a backslash anywhere; `..` or `@{` anywhere
116
+ * (git's own ref-name restrictions); a leading, trailing, or doubled `/`; a trailing `.lock` or
117
+ * `.`; any `/`-separated component starting with `.`; and the bare name `@`.
118
+ *
119
+ * Every `GitBackend` method that builds a git argument or ref expression from a (renderer-
120
+ * settable) branch name calls this first — see git-backend.ts.
121
+ */
122
+ export declare function assertBranchName(name: string): string;
123
+ /**
124
+ * Runs the system git found by {@link findGit}, with every hardening constraint the plan
125
+ * requires: no shell, no prompt, no hooks, a fixed subcommand allow-list, and error `details`
126
+ * that never carry the environment or a credential-bearing URL.
127
+ */
128
+ export declare class GitCli {
129
+ readonly version: string;
130
+ private readonly path;
131
+ private readonly hooksDir;
132
+ private readonly runner;
133
+ private readonly extraEnv;
134
+ /** Whether {@link GIT_PLUMBING_SUBCOMMANDS} are allowed as well: only for the server's commit store. */
135
+ private readonly plumbing;
136
+ /**
137
+ * Memoised `git config --get core.sshCommand` lookups, one per distinct `cwd` a caller has
138
+ * `run()` with (the `cwd`-less key included) — a repository-local `core.sshCommand` only
139
+ * applies inside that repository, and a cwd-less run must never pick up a *different*
140
+ * repository's local config. `undefined` (the resolved value) covers "unset" too.
141
+ */
142
+ private readonly sshCommandConfigByCwd;
143
+ constructor(location: GitLocation, options: {
144
+ hooksDir: string;
145
+ run?: Runner;
146
+ env?: NodeJS.ProcessEnv;
147
+ plumbing?: boolean;
148
+ });
149
+ /**
150
+ * A copy with the same location, hooks dir, runner and env that also accepts
151
+ * {@link GIT_PLUMBING_SUBCOMMANDS}. The server's commit store calls this on `ctx.git`. The desktop
152
+ * never does, because it never runs git for a server share (server-sync spec §3.3, §6). The copy
153
+ * shares nothing mutable with the original, only the `core.sshCommand` lookups it repeats.
154
+ */
155
+ withPlumbing(): GitCli;
156
+ /** Whether `subcommand` is on this instance's allow-list(s). */
157
+ private allows;
158
+ /**
159
+ * Reads `core.sshCommand` for `cwd` once (cached per `cwd`, including a cached "unset"), via
160
+ * the same runner every other invocation uses. Exit code 1 (and any other failure) means
161
+ * unset.
162
+ */
163
+ private queryCoreSshCommand;
164
+ /**
165
+ * Runs `git <args>` in `cwd` behind the fixed `-c` prefix (with `core.hooksPath` pointing at an empty
166
+ * directory, so no hook ever runs) and the hardened environment.
167
+ *
168
+ * `options.stdout: 'buffer'` returns stdout as raw bytes. Otherwise it is decoded as UTF-8.
169
+ *
170
+ * @throws WirebenchError
171
+ * - `git-failed`, which covers:
172
+ * - an off-list subcommand, or an `env` key outside {@link GIT_CALL_ENV}, both refused before
173
+ * anything spawns;
174
+ * - a non-zero exit;
175
+ * - a timeout (`details.timedOut`);
176
+ * - output over `maxBuffer` (`details.outputTooLarge`).
177
+ * - `git-auth-failed` and `git-offline`, read from stderr.
178
+ * - `git-not-found`.
179
+ */
180
+ run(cwd: string | undefined, args: readonly string[], options: GitRunOptions & {
181
+ readonly stdout: 'buffer';
182
+ }): Promise<{
183
+ stdout: Buffer;
184
+ stderr: string;
185
+ }>;
186
+ run(cwd: string | undefined, args: readonly string[], options?: GitRunOptions & {
187
+ readonly stdout?: 'utf8';
188
+ }): Promise<{
189
+ stdout: string;
190
+ stderr: string;
191
+ }>;
192
+ }
193
+ /** The keys of `names` (git config key names) off the local-config allow-list, compared case-insensitively. */
194
+ export declare function refusedLocalConfigKeys(names: readonly string[]): string[];
195
+ /**
196
+ * Refuses a repository whose `.git/config` sets any key off the allow-list (see
197
+ * {@link refusedLocalConfigKeys}), or a `remote.*.url` value {@link assertRemoteUrl} refuses, with
198
+ * `git-config-refused` and `details.keys` naming the keys (never a URL). A folder that is not a
199
+ * repository is `git-not-a-repository`. Run before any other git command in a repository the app
200
+ * did not `clone` or `init` itself.
201
+ */
202
+ export declare function assertSafeLocalConfig(git: GitCli, cwd: string): Promise<void>;