@gfdelarue/testkit 0.3.0

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 (1548) hide show
  1. package/LICENSE +68 -0
  2. package/README.md +1125 -0
  3. package/bin/testkit-windows-owner-arm64.exe +0 -0
  4. package/bin/testkit-windows-owner-x64.exe +0 -0
  5. package/bin/testkit.mjs +60 -0
  6. package/dist/app/cleanup/index.d.ts +52 -0
  7. package/dist/app/cleanup/index.js +1 -0
  8. package/dist/app/cloud/campaigns.d.ts +6 -0
  9. package/dist/app/cloud/campaigns.js +1 -0
  10. package/dist/app/cloud/control-actions.d.ts +12 -0
  11. package/dist/app/cloud/control-actions.js +2 -0
  12. package/dist/app/cloud/control-links.d.ts +5 -0
  13. package/dist/app/cloud/control-links.js +1 -0
  14. package/dist/app/cloud/control-read.d.ts +24 -0
  15. package/dist/app/cloud/control-read.js +1 -0
  16. package/dist/app/cloud/control-resources.d.ts +3 -0
  17. package/dist/app/cloud/control-resources.js +1 -0
  18. package/dist/app/cloud/control.d.ts +34 -0
  19. package/dist/app/cloud/control.js +5 -0
  20. package/dist/app/cloud/credentials.d.ts +11 -0
  21. package/dist/app/cloud/credentials.js +2 -0
  22. package/dist/app/cloud/index.d.ts +22 -0
  23. package/dist/app/cloud/index.js +2 -0
  24. package/dist/app/cloud/login.d.ts +63 -0
  25. package/dist/app/cloud/login.js +2 -0
  26. package/dist/app/cloud/migration/archive.d.ts +13 -0
  27. package/dist/app/cloud/migration/archive.js +1 -0
  28. package/dist/app/cloud/migration/commands.d.ts +8 -0
  29. package/dist/app/cloud/migration/commands.js +1 -0
  30. package/dist/app/cloud/migration/evidence.d.ts +13 -0
  31. package/dist/app/cloud/migration/evidence.js +2 -0
  32. package/dist/app/cloud/migration/files.d.ts +16 -0
  33. package/dist/app/cloud/migration/files.js +2 -0
  34. package/dist/app/cloud/migration/index.d.ts +6 -0
  35. package/dist/app/cloud/migration/index.js +1 -0
  36. package/dist/app/cloud/migration/journal.d.ts +64 -0
  37. package/dist/app/cloud/migration/journal.js +1 -0
  38. package/dist/app/cloud/migration/mapping-dispositions.d.ts +3 -0
  39. package/dist/app/cloud/migration/mapping-dispositions.js +1 -0
  40. package/dist/app/cloud/migration/mapping.d.ts +11 -0
  41. package/dist/app/cloud/migration/mapping.js +2 -0
  42. package/dist/app/cloud/migration/model.d.ts +175 -0
  43. package/dist/app/cloud/migration/model.js +1 -0
  44. package/dist/app/cloud/migration/plan.d.ts +7 -0
  45. package/dist/app/cloud/migration/plan.js +1 -0
  46. package/dist/app/cloud/migration/progress.d.ts +19 -0
  47. package/dist/app/cloud/migration/progress.js +1 -0
  48. package/dist/app/cloud/migration/reconcile.d.ts +22 -0
  49. package/dist/app/cloud/migration/reconcile.js +1 -0
  50. package/dist/app/cloud/migration/reconciliation-spool.d.ts +4 -0
  51. package/dist/app/cloud/migration/reconciliation-spool.js +1 -0
  52. package/dist/app/cloud/migration/state.d.ts +15 -0
  53. package/dist/app/cloud/migration/state.js +1 -0
  54. package/dist/app/cloud/migration/transfer.d.ts +6 -0
  55. package/dist/app/cloud/migration/transfer.js +1 -0
  56. package/dist/app/db-schema/prepare.d.ts +11 -0
  57. package/dist/app/db-schema/prepare.js +1 -0
  58. package/dist/app/db-schema/refresh.d.ts +17 -0
  59. package/dist/app/db-schema/refresh.js +1 -0
  60. package/dist/app/db-schema/verify.d.ts +11 -0
  61. package/dist/app/db-schema/verify.js +1 -0
  62. package/dist/app/destroy/index.d.ts +16 -0
  63. package/dist/app/destroy/index.js +1 -0
  64. package/dist/app/discover/index.d.ts +8 -0
  65. package/dist/app/discover/index.js +2 -0
  66. package/dist/app/doctor/index.d.ts +17 -0
  67. package/dist/app/doctor/index.js +1 -0
  68. package/dist/app/file-selection.d.ts +1 -0
  69. package/dist/app/file-selection.js +1 -0
  70. package/dist/app/inspect/artifacts.d.ts +29 -0
  71. package/dist/app/inspect/artifacts.js +1 -0
  72. package/dist/app/inspect/index.d.ts +112 -0
  73. package/dist/app/inspect/index.js +1 -0
  74. package/dist/app/lint/index.d.ts +28 -0
  75. package/dist/app/lint/index.js +2 -0
  76. package/dist/app/lint/native.d.ts +10 -0
  77. package/dist/app/lint/native.js +1 -0
  78. package/dist/app/lint/options.d.ts +67 -0
  79. package/dist/app/lint/options.js +1 -0
  80. package/dist/app/lint/policy.d.ts +21 -0
  81. package/dist/app/lint/policy.js +1 -0
  82. package/dist/app/lint/rules/data.d.ts +3 -0
  83. package/dist/app/lint/rules/data.js +1 -0
  84. package/dist/app/lint/rules/engine-imports.d.ts +3 -0
  85. package/dist/app/lint/rules/engine-imports.js +1 -0
  86. package/dist/app/lint/rules/syntax.d.ts +4 -0
  87. package/dist/app/lint/rules/syntax.js +1 -0
  88. package/dist/app/lint/rules/unit.d.ts +3 -0
  89. package/dist/app/lint/rules/unit.js +1 -0
  90. package/dist/app/lint/shared.d.ts +36 -0
  91. package/dist/app/lint/shared.js +1 -0
  92. package/dist/app/package-inspection.d.ts +20 -0
  93. package/dist/app/package-inspection.js +1 -0
  94. package/dist/app/run/endpoint-readiness.d.ts +43 -0
  95. package/dist/app/run/endpoint-readiness.js +1 -0
  96. package/dist/app/run/engine-evidence-persistence.d.ts +39 -0
  97. package/dist/app/run/engine-evidence-persistence.js +1 -0
  98. package/dist/app/run/engine-execution-cleanup.d.ts +8 -0
  99. package/dist/app/run/engine-execution-cleanup.js +1 -0
  100. package/dist/app/run/engine-execution-failures.d.ts +41 -0
  101. package/dist/app/run/engine-execution-failures.js +1 -0
  102. package/dist/app/run/engine-execution-observer.d.ts +21 -0
  103. package/dist/app/run/engine-execution-observer.js +1 -0
  104. package/dist/app/run/engine-execution-reporting.d.ts +17 -0
  105. package/dist/app/run/engine-execution-reporting.js +1 -0
  106. package/dist/app/run/engine-execution.d.ts +60 -0
  107. package/dist/app/run/engine-execution.js +1 -0
  108. package/dist/app/run/engine-orchestration.d.ts +49 -0
  109. package/dist/app/run/engine-orchestration.js +1 -0
  110. package/dist/app/run/failure-details.d.ts +36 -0
  111. package/dist/app/run/failure-details.js +1 -0
  112. package/dist/app/run/live-run.d.ts +27 -0
  113. package/dist/app/run/live-run.js +1 -0
  114. package/dist/app/run/operation-progress.d.ts +13 -0
  115. package/dist/app/run/operation-progress.js +1 -0
  116. package/dist/app/run/orchestrator.d.ts +68 -0
  117. package/dist/app/run/orchestrator.js +1 -0
  118. package/dist/app/run/planning-types.d.ts +68 -0
  119. package/dist/app/run/planning-types.js +1 -0
  120. package/dist/app/run/planning.d.ts +15 -0
  121. package/dist/app/run/planning.js +1 -0
  122. package/dist/app/run/playwright-configuration.d.ts +2 -0
  123. package/dist/app/run/playwright-configuration.js +1 -0
  124. package/dist/app/run/request.d.ts +30 -0
  125. package/dist/app/run/request.js +1 -0
  126. package/dist/app/run/results.d.ts +161 -0
  127. package/dist/app/run/results.js +1 -0
  128. package/dist/app/run/run-events.d.ts +144 -0
  129. package/dist/app/run/run-events.js +1 -0
  130. package/dist/app/run/run-finalization.d.ts +52 -0
  131. package/dist/app/run/run-finalization.js +1 -0
  132. package/dist/app/run/run-guards.d.ts +3 -0
  133. package/dist/app/run/run-guards.js +3 -0
  134. package/dist/app/run/runtime-failures.d.ts +18 -0
  135. package/dist/app/run/runtime-failures.js +1 -0
  136. package/dist/app/run/runtime-fixtures.d.ts +2 -0
  137. package/dist/app/run/runtime-fixtures.js +1 -0
  138. package/dist/app/run/runtime-task-types.d.ts +20 -0
  139. package/dist/app/run/runtime-task-types.js +1 -0
  140. package/dist/app/run/scheduler/estimates.d.ts +32 -0
  141. package/dist/app/run/scheduler/estimates.js +1 -0
  142. package/dist/app/run/scheduler/identity.d.ts +9 -0
  143. package/dist/app/run/scheduler/identity.js +1 -0
  144. package/dist/app/run/scheduler/index.d.ts +124 -0
  145. package/dist/app/run/scheduler/index.js +1 -0
  146. package/dist/app/run/scheduler/observations.d.ts +20 -0
  147. package/dist/app/run/scheduler/observations.js +1 -0
  148. package/dist/app/run/selection.d.ts +10 -0
  149. package/dist/app/run/selection.js +1 -0
  150. package/dist/app/run/setup/runtime-node-setup-errors.d.ts +13 -0
  151. package/dist/app/run/setup/runtime-node-setup-errors.js +1 -0
  152. package/dist/app/run/setup/runtime-node-setup-protocol.d.ts +85 -0
  153. package/dist/app/run/setup/runtime-node-setup-protocol.js +1 -0
  154. package/dist/app/run/setup/runtime-node-setup-worker.d.ts +1 -0
  155. package/dist/app/run/setup/runtime-node-setup-worker.js +1 -0
  156. package/dist/app/run/setup/runtime-node-setup.d.ts +48 -0
  157. package/dist/app/run/setup/runtime-node-setup.js +3 -0
  158. package/dist/app/run/task-batches.d.ts +23 -0
  159. package/dist/app/run/task-batches.js +1 -0
  160. package/dist/app/run/worker-loop.d.ts +57 -0
  161. package/dist/app/run/worker-loop.js +1 -0
  162. package/dist/app/setup/playwright.d.ts +22 -0
  163. package/dist/app/setup/playwright.js +1 -0
  164. package/dist/app/status/index.d.ts +7 -0
  165. package/dist/app/status/index.js +1 -0
  166. package/dist/app/status/model.d.ts +29 -0
  167. package/dist/app/status/model.js +1 -0
  168. package/dist/app/status/runs.d.ts +99 -0
  169. package/dist/app/status/runs.js +1 -0
  170. package/dist/app/stop/index.d.ts +14 -0
  171. package/dist/app/stop/index.js +1 -0
  172. package/dist/app/typecheck/index.d.ts +61 -0
  173. package/dist/app/typecheck/index.js +4 -0
  174. package/dist/app/typecheck/unavailable.d.ts +1 -0
  175. package/dist/app/typecheck/unavailable.js +1 -0
  176. package/dist/cli/cloud-apply-help.d.ts +1 -0
  177. package/dist/cli/cloud-apply-help.js +56 -0
  178. package/dist/cli/cloud-selection.d.ts +2 -0
  179. package/dist/cli/cloud-selection.js +3 -0
  180. package/dist/cli/command-catalog.d.ts +238 -0
  181. package/dist/cli/command-catalog.js +1 -0
  182. package/dist/cli/command-flags.d.ts +19 -0
  183. package/dist/cli/command-flags.js +1 -0
  184. package/dist/cli/command-registry.d.ts +2 -0
  185. package/dist/cli/command-registry.js +1 -0
  186. package/dist/cli/commands/artifacts.d.ts +48 -0
  187. package/dist/cli/commands/artifacts.js +3 -0
  188. package/dist/cli/commands/cleanup.d.ts +13 -0
  189. package/dist/cli/commands/cleanup.js +1 -0
  190. package/dist/cli/commands/cloud/apply.d.ts +5 -0
  191. package/dist/cli/commands/cloud/apply.js +1 -0
  192. package/dist/cli/commands/cloud/campaign/create.d.ts +5 -0
  193. package/dist/cli/commands/cloud/campaign/create.js +1 -0
  194. package/dist/cli/commands/cloud/download.d.ts +5 -0
  195. package/dist/cli/commands/cloud/download.js +1 -0
  196. package/dist/cli/commands/cloud/list.d.ts +5 -0
  197. package/dist/cli/commands/cloud/list.js +1 -0
  198. package/dist/cli/commands/cloud/login.d.ts +13 -0
  199. package/dist/cli/commands/cloud/login.js +2 -0
  200. package/dist/cli/commands/cloud/logout.d.ts +7 -0
  201. package/dist/cli/commands/cloud/logout.js +1 -0
  202. package/dist/cli/commands/cloud/migrate/apply.d.ts +2 -0
  203. package/dist/cli/commands/cloud/migrate/apply.js +1 -0
  204. package/dist/cli/commands/cloud/migrate/plan.d.ts +7 -0
  205. package/dist/cli/commands/cloud/migrate/plan.js +1 -0
  206. package/dist/cli/commands/cloud/migrate/progress.d.ts +2 -0
  207. package/dist/cli/commands/cloud/migrate/progress.js +2 -0
  208. package/dist/cli/commands/cloud/migrate/reconcile.d.ts +2 -0
  209. package/dist/cli/commands/cloud/migrate/reconcile.js +1 -0
  210. package/dist/cli/commands/cloud/policy/preview.d.ts +5 -0
  211. package/dist/cli/commands/cloud/policy/preview.js +1 -0
  212. package/dist/cli/commands/cloud/project/create.d.ts +5 -0
  213. package/dist/cli/commands/cloud/project/create.js +1 -0
  214. package/dist/cli/commands/cloud/publish.d.ts +7 -0
  215. package/dist/cli/commands/cloud/publish.js +1 -0
  216. package/dist/cli/commands/cloud/session/revoke.d.ts +8 -0
  217. package/dist/cli/commands/cloud/session/revoke.js +1 -0
  218. package/dist/cli/commands/cloud/show.d.ts +5 -0
  219. package/dist/cli/commands/cloud/show.js +1 -0
  220. package/dist/cli/commands/cloud/snapshot.d.ts +5 -0
  221. package/dist/cli/commands/cloud/snapshot.js +1 -0
  222. package/dist/cli/commands/cloud/status.d.ts +33 -0
  223. package/dist/cli/commands/cloud/status.js +1 -0
  224. package/dist/cli/commands/db/schema/refresh.d.ts +2 -0
  225. package/dist/cli/commands/db/schema/refresh.js +1 -0
  226. package/dist/cli/commands/db/schema/verify.d.ts +2 -0
  227. package/dist/cli/commands/db/schema/verify.js +1 -0
  228. package/dist/cli/commands/destroy.d.ts +9 -0
  229. package/dist/cli/commands/destroy.js +1 -0
  230. package/dist/cli/commands/discover.d.ts +2 -0
  231. package/dist/cli/commands/discover.js +1 -0
  232. package/dist/cli/commands/doctor.d.ts +2 -0
  233. package/dist/cli/commands/doctor.js +1 -0
  234. package/dist/cli/commands/guard/unsafe-entrypoint.d.ts +2 -0
  235. package/dist/cli/commands/guard/unsafe-entrypoint.js +2 -0
  236. package/dist/cli/commands/lint.d.ts +2 -0
  237. package/dist/cli/commands/lint.js +1 -0
  238. package/dist/cli/commands/run/status.d.ts +5 -0
  239. package/dist/cli/commands/run/status.js +1 -0
  240. package/dist/cli/commands/run/stop.d.ts +7 -0
  241. package/dist/cli/commands/run/stop.js +1 -0
  242. package/dist/cli/commands/run.d.ts +9 -0
  243. package/dist/cli/commands/run.js +1 -0
  244. package/dist/cli/commands/setup/playwright.d.ts +2 -0
  245. package/dist/cli/commands/setup/playwright.js +1 -0
  246. package/dist/cli/commands/status.d.ts +5 -0
  247. package/dist/cli/commands/status.js +1 -0
  248. package/dist/cli/commands/stop.d.ts +12 -0
  249. package/dist/cli/commands/stop.js +1 -0
  250. package/dist/cli/commands/typecheck.d.ts +2 -0
  251. package/dist/cli/commands/typecheck.js +1 -0
  252. package/dist/cli/commands/workspace.d.ts +2 -0
  253. package/dist/cli/commands/workspace.js +1 -0
  254. package/dist/cli/entrypoint.d.ts +1 -0
  255. package/dist/cli/entrypoint.js +1 -0
  256. package/dist/cli/framework/command.d.ts +21 -0
  257. package/dist/cli/framework/command.js +1 -0
  258. package/dist/cli/framework/definitions.d.ts +100 -0
  259. package/dist/cli/framework/definitions.js +1 -0
  260. package/dist/cli/framework/errors.d.ts +6 -0
  261. package/dist/cli/framework/errors.js +1 -0
  262. package/dist/cli/framework/execute.d.ts +13 -0
  263. package/dist/cli/framework/execute.js +6 -0
  264. package/dist/cli/framework/help.d.ts +11 -0
  265. package/dist/cli/framework/help.js +8 -0
  266. package/dist/cli/framework/index.d.ts +3 -0
  267. package/dist/cli/framework/index.js +1 -0
  268. package/dist/cli/framework/parser.d.ts +6 -0
  269. package/dist/cli/framework/parser.js +1 -0
  270. package/dist/cli/index.d.ts +4 -0
  271. package/dist/cli/index.js +1 -0
  272. package/dist/cli/json-errors.d.ts +3 -0
  273. package/dist/cli/json-errors.js +1 -0
  274. package/dist/cli/operations/db/schema/refresh/operation.d.ts +6 -0
  275. package/dist/cli/operations/db/schema/refresh/operation.js +1 -0
  276. package/dist/cli/operations/db/schema/verify/operation.d.ts +6 -0
  277. package/dist/cli/operations/db/schema/verify/operation.js +1 -0
  278. package/dist/cli/operations/run/operation.d.ts +24 -0
  279. package/dist/cli/operations/run/operation.js +2 -0
  280. package/dist/cli/process-signal.d.ts +1 -0
  281. package/dist/cli/process-signal.js +1 -0
  282. package/dist/cli/renderers/artifact-preview.d.ts +4 -0
  283. package/dist/cli/renderers/artifact-preview.js +1 -0
  284. package/dist/cli/renderers/cleanup/format.d.ts +14 -0
  285. package/dist/cli/renderers/cleanup/format.js +1 -0
  286. package/dist/cli/renderers/db-schema/text.d.ts +4 -0
  287. package/dist/cli/renderers/db-schema/text.js +1 -0
  288. package/dist/cli/renderers/destroy/text.d.ts +4 -0
  289. package/dist/cli/renderers/destroy/text.js +1 -0
  290. package/dist/cli/renderers/discover/report.d.ts +7 -0
  291. package/dist/cli/renderers/discover/report.js +1 -0
  292. package/dist/cli/renderers/discover/text.d.ts +3 -0
  293. package/dist/cli/renderers/discover/text.js +1 -0
  294. package/dist/cli/renderers/doctor/text.d.ts +2 -0
  295. package/dist/cli/renderers/doctor/text.js +1 -0
  296. package/dist/cli/renderers/lint/text.d.ts +2 -0
  297. package/dist/cli/renderers/lint/text.js +1 -0
  298. package/dist/cli/renderers/run/events.d.ts +8 -0
  299. package/dist/cli/renderers/run/events.js +2 -0
  300. package/dist/cli/renderers/run/failure.d.ts +8 -0
  301. package/dist/cli/renderers/run/failure.js +1 -0
  302. package/dist/cli/renderers/run/formatting.d.ts +79 -0
  303. package/dist/cli/renderers/run/formatting.js +1 -0
  304. package/dist/cli/renderers/run/status.d.ts +6 -0
  305. package/dist/cli/renderers/run/status.js +1 -0
  306. package/dist/cli/renderers/run/text-reporter.d.ts +19 -0
  307. package/dist/cli/renderers/run/text-reporter.js +23 -0
  308. package/dist/cli/renderers/status/text.d.ts +2 -0
  309. package/dist/cli/renderers/status/text.js +1 -0
  310. package/dist/cli/renderers/stop/text.d.ts +7 -0
  311. package/dist/cli/renderers/stop/text.js +1 -0
  312. package/dist/cli/renderers/typecheck/text.d.ts +2 -0
  313. package/dist/cli/renderers/typecheck/text.js +1 -0
  314. package/dist/cli/terminal/colors.d.ts +10 -0
  315. package/dist/cli/terminal/colors.js +1 -0
  316. package/dist/cli/terminal/layout.d.ts +11 -0
  317. package/dist/cli/terminal/layout.js +2 -0
  318. package/dist/cli/version-drift.d.ts +25 -0
  319. package/dist/cli/version-drift.js +7 -0
  320. package/dist/cloud/account.d.ts +34 -0
  321. package/dist/cloud/account.js +1 -0
  322. package/dist/cloud/archive-contract.d.ts +1 -0
  323. package/dist/cloud/archive-contract.js +1 -0
  324. package/dist/cloud/archive.d.ts +12 -0
  325. package/dist/cloud/archive.js +1 -0
  326. package/dist/cloud/campaigns.d.ts +200 -0
  327. package/dist/cloud/campaigns.js +2 -0
  328. package/dist/cloud/client.d.ts +68 -0
  329. package/dist/cloud/client.js +4 -0
  330. package/dist/cloud/download.d.ts +5 -0
  331. package/dist/cloud/download.js +1 -0
  332. package/dist/cloud/historical-contract.d.ts +224 -0
  333. package/dist/cloud/historical-contract.js +1 -0
  334. package/dist/cloud/historical-json.d.ts +16 -0
  335. package/dist/cloud/historical-json.js +1 -0
  336. package/dist/cloud/historical.d.ts +69 -0
  337. package/dist/cloud/historical.js +1 -0
  338. package/dist/cloud/pagination.d.ts +5 -0
  339. package/dist/cloud/pagination.js +1 -0
  340. package/dist/cloud/transport.d.ts +18 -0
  341. package/dist/cloud/transport.js +1 -0
  342. package/dist/config/authoring/build-config-contract.d.ts +27 -0
  343. package/dist/config/authoring/build-config-contract.js +1 -0
  344. package/dist/config/authoring/configured-step-contract.d.ts +18 -0
  345. package/dist/config/authoring/configured-step-contract.js +1 -0
  346. package/dist/config/authoring/http-execution-contract.d.ts +70 -0
  347. package/dist/config/authoring/http-execution-contract.js +1 -0
  348. package/dist/config/authoring/http-methods.d.ts +18 -0
  349. package/dist/config/authoring/http-methods.js +1 -0
  350. package/dist/config/authoring/index.d.ts +376 -0
  351. package/dist/config/authoring/index.js +1 -0
  352. package/dist/config/authoring/preset-env.d.ts +19 -0
  353. package/dist/config/authoring/preset-env.js +1 -0
  354. package/dist/config/authoring/runtime.d.ts +64 -0
  355. package/dist/config/authoring/runtime.js +1 -0
  356. package/dist/config/loader/cloud.d.ts +2 -0
  357. package/dist/config/loader/cloud.js +1 -0
  358. package/dist/config/loader/config-loader.d.ts +9 -0
  359. package/dist/config/loader/config-loader.js +1 -0
  360. package/dist/config/loader/database-materialization.d.ts +19 -0
  361. package/dist/config/loader/database-materialization.js +1 -0
  362. package/dist/config/loader/database-roles.d.ts +2 -0
  363. package/dist/config/loader/database-roles.js +1 -0
  364. package/dist/config/loader/database.d.ts +55 -0
  365. package/dist/config/loader/database.js +1 -0
  366. package/dist/config/loader/decode-discovery.d.ts +5 -0
  367. package/dist/config/loader/decode-discovery.js +1 -0
  368. package/dist/config/loader/decode-execution.d.ts +9 -0
  369. package/dist/config/loader/decode-execution.js +1 -0
  370. package/dist/config/loader/dependencies.d.ts +7 -0
  371. package/dist/config/loader/dependencies.js +1 -0
  372. package/dist/config/loader/discover-tests.d.ts +101 -0
  373. package/dist/config/loader/discover-tests.js +1 -0
  374. package/dist/config/loader/discovery-summary.d.ts +29 -0
  375. package/dist/config/loader/discovery-summary.js +1 -0
  376. package/dist/config/loader/discovery.d.ts +54 -0
  377. package/dist/config/loader/discovery.js +2 -0
  378. package/dist/config/loader/env.d.ts +4 -0
  379. package/dist/config/loader/env.js +1 -0
  380. package/dist/config/loader/execution-model.d.ts +16 -0
  381. package/dist/config/loader/execution-model.js +1 -0
  382. package/dist/config/loader/file-metadata.d.ts +19 -0
  383. package/dist/config/loader/file-metadata.js +1 -0
  384. package/dist/config/loader/index.d.ts +10 -0
  385. package/dist/config/loader/index.js +1 -0
  386. package/dist/config/loader/load.d.ts +89 -0
  387. package/dist/config/loader/load.js +1 -0
  388. package/dist/config/loader/managed-configs.d.ts +21 -0
  389. package/dist/config/loader/managed-configs.js +1 -0
  390. package/dist/config/loader/path-policy.d.ts +9 -0
  391. package/dist/config/loader/path-policy.js +1 -0
  392. package/dist/config/loader/paths.d.ts +5 -0
  393. package/dist/config/loader/paths.js +1 -0
  394. package/dist/config/loader/runtime-isolation.d.ts +44 -0
  395. package/dist/config/loader/runtime-isolation.js +1 -0
  396. package/dist/config/loader/runtime.d.ts +25 -0
  397. package/dist/config/loader/runtime.js +1 -0
  398. package/dist/config/loader/skip-config.d.ts +44 -0
  399. package/dist/config/loader/skip-config.js +1 -0
  400. package/dist/config/loader/validation.d.ts +16 -0
  401. package/dist/config/loader/validation.js +1 -0
  402. package/dist/config/loader/values.d.ts +4 -0
  403. package/dist/config/loader/values.js +1 -0
  404. package/dist/config/runtime/build-assets.d.ts +6 -0
  405. package/dist/config/runtime/build-assets.js +1 -0
  406. package/dist/config/runtime/env/index.d.ts +35 -0
  407. package/dist/config/runtime/env/index.js +1 -0
  408. package/dist/config/runtime/next-runtime-tsconfig.d.ts +6 -0
  409. package/dist/config/runtime/next-runtime-tsconfig.js +2 -0
  410. package/dist/database/activity-gate.d.ts +22 -0
  411. package/dist/database/activity-gate.js +1 -0
  412. package/dist/database/admin.d.ts +31 -0
  413. package/dist/database/admin.js +2 -0
  414. package/dist/database/cleanup.d.ts +36 -0
  415. package/dist/database/cleanup.js +1 -0
  416. package/dist/database/configured-steps.d.ts +27 -0
  417. package/dist/database/configured-steps.js +1 -0
  418. package/dist/database/constants.d.ts +11 -0
  419. package/dist/database/constants.js +1 -0
  420. package/dist/database/docker.d.ts +65 -0
  421. package/dist/database/docker.js +5 -0
  422. package/dist/database/drizzle/index.d.ts +13 -0
  423. package/dist/database/drizzle/index.js +1 -0
  424. package/dist/database/fingerprint.d.ts +12 -0
  425. package/dist/database/fingerprint.js +1 -0
  426. package/dist/database/index.d.ts +41 -0
  427. package/dist/database/index.js +1 -0
  428. package/dist/database/local-postgres.d.ts +71 -0
  429. package/dist/database/local-postgres.js +2 -0
  430. package/dist/database/naming.d.ts +17 -0
  431. package/dist/database/naming.js +1 -0
  432. package/dist/database/postgres/index.d.ts +71 -0
  433. package/dist/database/postgres/index.js +2 -0
  434. package/dist/database/progress.d.ts +6 -0
  435. package/dist/database/progress.js +1 -0
  436. package/dist/database/roles.d.ts +19 -0
  437. package/dist/database/roles.js +41 -0
  438. package/dist/database/runtime-config.d.ts +16 -0
  439. package/dist/database/runtime-config.js +1 -0
  440. package/dist/database/runtime-reservations.d.ts +19 -0
  441. package/dist/database/runtime-reservations.js +1 -0
  442. package/dist/database/schema-operations.d.ts +18 -0
  443. package/dist/database/schema-operations.js +1 -0
  444. package/dist/database/schema-source.d.ts +93 -0
  445. package/dist/database/schema-source.js +3 -0
  446. package/dist/database/source-refresh-lock.d.ts +8 -0
  447. package/dist/database/source-refresh-lock.js +1 -0
  448. package/dist/database/source-url.d.ts +22 -0
  449. package/dist/database/source-url.js +2 -0
  450. package/dist/database/state-files.d.ts +13 -0
  451. package/dist/database/state-files.js +1 -0
  452. package/dist/database/state.d.ts +26 -0
  453. package/dist/database/state.js +1 -0
  454. package/dist/database/steps.d.ts +16 -0
  455. package/dist/database/steps.js +4 -0
  456. package/dist/database/template-steps.d.ts +35 -0
  457. package/dist/database/template-steps.js +4 -0
  458. package/dist/domain/file-timeout.d.ts +28 -0
  459. package/dist/domain/file-timeout.js +1 -0
  460. package/dist/domain/identifiers.d.ts +9 -0
  461. package/dist/domain/identifiers.js +1 -0
  462. package/dist/domain/operation-display.d.ts +10 -0
  463. package/dist/domain/operation-display.js +1 -0
  464. package/dist/domain/operation-reason.d.ts +5 -0
  465. package/dist/domain/operation-reason.js +1 -0
  466. package/dist/domain/postgres-route.d.ts +4 -0
  467. package/dist/domain/postgres-route.js +1 -0
  468. package/dist/domain/runtime-identity.d.ts +1 -0
  469. package/dist/domain/runtime-identity.js +1 -0
  470. package/dist/domain/runtime-isolation-contract.d.ts +5 -0
  471. package/dist/domain/runtime-isolation-contract.js +1 -0
  472. package/dist/domain/service-name.d.ts +2 -0
  473. package/dist/domain/service-name.js +1 -0
  474. package/dist/domain/suite-selection.d.ts +20 -0
  475. package/dist/domain/suite-selection.js +1 -0
  476. package/dist/domain/test-outcomes.d.ts +3 -0
  477. package/dist/domain/test-outcomes.js +1 -0
  478. package/dist/domain/test-types.d.ts +16 -0
  479. package/dist/domain/test-types.js +1 -0
  480. package/dist/engines/adapters/evidence-files.d.ts +32 -0
  481. package/dist/engines/adapters/evidence-files.js +1 -0
  482. package/dist/engines/adapters/evidence-identity.d.ts +12 -0
  483. package/dist/engines/adapters/evidence-identity.js +1 -0
  484. package/dist/engines/adapters/execution.d.ts +38 -0
  485. package/dist/engines/adapters/execution.js +1 -0
  486. package/dist/engines/adapters/native-report.d.ts +25 -0
  487. package/dist/engines/adapters/native-report.js +1 -0
  488. package/dist/engines/adapters/workspace.d.ts +4 -0
  489. package/dist/engines/adapters/workspace.js +1 -0
  490. package/dist/engines/api/capabilities.d.ts +31 -0
  491. package/dist/engines/api/capabilities.js +1 -0
  492. package/dist/engines/api/evidence.d.ts +38 -0
  493. package/dist/engines/api/evidence.js +1 -0
  494. package/dist/engines/api/execution-observer.d.ts +8 -0
  495. package/dist/engines/api/execution-observer.js +1 -0
  496. package/dist/engines/api/execution-scope.d.ts +17 -0
  497. package/dist/engines/api/execution-scope.js +1 -0
  498. package/dist/engines/api/execution.d.ts +99 -0
  499. package/dist/engines/api/execution.js +1 -0
  500. package/dist/engines/api/index.d.ts +5 -0
  501. package/dist/engines/api/index.js +1 -0
  502. package/dist/engines/api/k6-runtime-input.d.ts +26 -0
  503. package/dist/engines/api/k6-runtime-input.js +1 -0
  504. package/dist/engines/api/runtime-artifact.d.ts +19 -0
  505. package/dist/engines/api/runtime-artifact.js +1 -0
  506. package/dist/engines/bundle-cache.d.ts +32 -0
  507. package/dist/engines/bundle-cache.js +1 -0
  508. package/dist/engines/catalog.d.ts +32 -0
  509. package/dist/engines/catalog.js +1 -0
  510. package/dist/engines/contracts/fixture-manifest.d.ts +34 -0
  511. package/dist/engines/contracts/fixture-manifest.js +1 -0
  512. package/dist/engines/contracts/json-bounds.d.ts +36 -0
  513. package/dist/engines/contracts/json-bounds.js +2 -0
  514. package/dist/engines/contracts/k6-repository-configuration.d.ts +12 -0
  515. package/dist/engines/contracts/k6-repository-configuration.js +1 -0
  516. package/dist/engines/contracts/test-context.d.ts +15 -0
  517. package/dist/engines/contracts/test-context.js +1 -0
  518. package/dist/engines/definitions.d.ts +15 -0
  519. package/dist/engines/definitions.js +1 -0
  520. package/dist/engines/factory.d.ts +6 -0
  521. package/dist/engines/factory.js +1 -0
  522. package/dist/engines/installation-catalog.d.ts +27 -0
  523. package/dist/engines/installation-catalog.js +1 -0
  524. package/dist/engines/installations/k6.d.ts +98 -0
  525. package/dist/engines/installations/k6.js +1 -0
  526. package/dist/engines/installations/node-vitest.d.ts +47 -0
  527. package/dist/engines/installations/node-vitest.js +1 -0
  528. package/dist/engines/installations/package-resolution.d.ts +51 -0
  529. package/dist/engines/installations/package-resolution.js +1 -0
  530. package/dist/engines/installations/playwright-resolution-child.d.ts +1 -0
  531. package/dist/engines/installations/playwright-resolution-child.js +2 -0
  532. package/dist/engines/installations/playwright.d.ts +85 -0
  533. package/dist/engines/installations/playwright.js +1 -0
  534. package/dist/engines/installations/types.d.ts +10 -0
  535. package/dist/engines/installations/types.js +1 -0
  536. package/dist/engines/k6/adapter/bundle.d.ts +25 -0
  537. package/dist/engines/k6/adapter/bundle.js +112 -0
  538. package/dist/engines/k6/adapter/evidence.d.ts +15 -0
  539. package/dist/engines/k6/adapter/evidence.js +4 -0
  540. package/dist/engines/k6/adapter/executor.d.ts +13 -0
  541. package/dist/engines/k6/adapter/executor.js +1 -0
  542. package/dist/engines/k6/adapter/index.d.ts +1 -0
  543. package/dist/engines/k6/adapter/index.js +1 -0
  544. package/dist/engines/k6/adapter/input.d.ts +21 -0
  545. package/dist/engines/k6/adapter/input.js +1 -0
  546. package/dist/engines/k6/adapter/native-summary.d.ts +11 -0
  547. package/dist/engines/k6/adapter/native-summary.js +1 -0
  548. package/dist/engines/k6/adapter/repository-configuration.d.ts +2 -0
  549. package/dist/engines/k6/adapter/repository-configuration.js +1 -0
  550. package/dist/engines/k6/authoring-type-paths.d.ts +3 -0
  551. package/dist/engines/k6/authoring-type-paths.js +1 -0
  552. package/dist/engines/k6/runtime/ambient-types/bundle-manifest.json +146 -0
  553. package/dist/engines/k6/runtime/ambient-types/k6/LICENSE +21 -0
  554. package/dist/engines/k6/runtime/ambient-types/k6/browser/index.d.ts +6332 -0
  555. package/dist/engines/k6/runtime/ambient-types/k6/crypto/index.d.ts +218 -0
  556. package/dist/engines/k6/runtime/ambient-types/k6/data/index.d.ts +16 -0
  557. package/dist/engines/k6/runtime/ambient-types/k6/encoding/index.d.ts +46 -0
  558. package/dist/engines/k6/runtime/ambient-types/k6/execution/index.d.ts +127 -0
  559. package/dist/engines/k6/runtime/ambient-types/k6/experimental/csv/index.d.ts +96 -0
  560. package/dist/engines/k6/runtime/ambient-types/k6/experimental/fs/index.d.ts +104 -0
  561. package/dist/engines/k6/runtime/ambient-types/k6/experimental/redis/index.d.ts +821 -0
  562. package/dist/engines/k6/runtime/ambient-types/k6/experimental/streams/index.d.ts +198 -0
  563. package/dist/engines/k6/runtime/ambient-types/k6/global.d.ts +83 -0
  564. package/dist/engines/k6/runtime/ambient-types/k6/html/index.d.ts +1325 -0
  565. package/dist/engines/k6/runtime/ambient-types/k6/http/index.d.ts +806 -0
  566. package/dist/engines/k6/runtime/ambient-types/k6/index.d.ts +126 -0
  567. package/dist/engines/k6/runtime/ambient-types/k6/metrics/index.d.ts +66 -0
  568. package/dist/engines/k6/runtime/ambient-types/k6/net/grpc/index.d.ts +247 -0
  569. package/dist/engines/k6/runtime/ambient-types/k6/options/index.d.ts +459 -0
  570. package/dist/engines/k6/runtime/ambient-types/k6/package.json +79 -0
  571. package/dist/engines/k6/runtime/ambient-types/k6/secrets/index.d.ts +36 -0
  572. package/dist/engines/k6/runtime/ambient-types/k6/timers/index.d.ts +47 -0
  573. package/dist/engines/k6/runtime/ambient-types/k6/websockets/index.d.ts +324 -0
  574. package/dist/engines/k6/runtime/ambient-types/k6/ws/index.d.ts +283 -0
  575. package/dist/engines/k6/runtime/ambient-types/xk6-sql/LICENSE +201 -0
  576. package/dist/engines/k6/runtime/ambient-types/xk6-sql/index.d.ts +397 -0
  577. package/dist/engines/k6/runtime/ambient-types/xk6-sql/package.json +15 -0
  578. package/dist/engines/k6/runtime/artifacts.d.ts +2 -0
  579. package/dist/engines/k6/runtime/artifacts.js +1 -0
  580. package/dist/engines/k6/runtime/checks.d.ts +17 -0
  581. package/dist/engines/k6/runtime/checks.js +1 -0
  582. package/dist/engines/k6/runtime/dal-fixtures.d.ts +24 -0
  583. package/dist/engines/k6/runtime/dal-fixtures.js +1 -0
  584. package/dist/engines/k6/runtime/dal-suite.d.ts +24 -0
  585. package/dist/engines/k6/runtime/dal-suite.js +1 -0
  586. package/dist/engines/k6/runtime/dal.d.ts +10 -0
  587. package/dist/engines/k6/runtime/dal.js +1 -0
  588. package/dist/engines/k6/runtime/fixtures.d.ts +3 -0
  589. package/dist/engines/k6/runtime/fixtures.js +1 -0
  590. package/dist/engines/k6/runtime/http-assertions.d.ts +19 -0
  591. package/dist/engines/k6/runtime/http-assertions.js +1 -0
  592. package/dist/engines/k6/runtime/http-checks.d.ts +19 -0
  593. package/dist/engines/k6/runtime/http-checks.js +1 -0
  594. package/dist/engines/k6/runtime/http-suite-runtime.d.ts +103 -0
  595. package/dist/engines/k6/runtime/http-suite-runtime.js +1 -0
  596. package/dist/engines/k6/runtime/http.d.ts +15 -0
  597. package/dist/engines/k6/runtime/http.js +1 -0
  598. package/dist/engines/k6/runtime/index.d.ts +11 -0
  599. package/dist/engines/k6/runtime/index.js +1 -0
  600. package/dist/engines/k6/runtime/input.d.ts +3 -0
  601. package/dist/engines/k6/runtime/input.js +1 -0
  602. package/dist/engines/k6/runtime/k6-repository-configuration.d.ts +9 -0
  603. package/dist/engines/k6/runtime/k6-repository-configuration.js +1 -0
  604. package/dist/engines/k6/runtime/node-setup.d.ts +13 -0
  605. package/dist/engines/k6/runtime/node-setup.js +1 -0
  606. package/dist/engines/k6/runtime/runtime-globals.d.ts +10 -0
  607. package/dist/engines/k6/runtime/runtime-globals.js +1 -0
  608. package/dist/engines/k6/runtime/runtime.d.ts +54 -0
  609. package/dist/engines/k6/runtime/runtime.js +1 -0
  610. package/dist/engines/k6/runtime/shared/assertion-details.d.ts +19 -0
  611. package/dist/engines/k6/runtime/shared/assertion-details.js +2 -0
  612. package/dist/engines/k6/runtime/shared/db-normalization.d.ts +19 -0
  613. package/dist/engines/k6/runtime/shared/db-normalization.js +1 -0
  614. package/dist/engines/k6/runtime/shared/error-body.d.ts +3 -0
  615. package/dist/engines/k6/runtime/shared/error-body.js +1 -0
  616. package/dist/engines/k6/runtime/shared/file-data.d.ts +1 -0
  617. package/dist/engines/k6/runtime/shared/file-data.js +1 -0
  618. package/dist/engines/k6/runtime/shared/fixture-engine.d.ts +8 -0
  619. package/dist/engines/k6/runtime/shared/fixture-engine.js +2 -0
  620. package/dist/engines/k6/runtime/shared/http-check-plan.d.ts +29 -0
  621. package/dist/engines/k6/runtime/shared/http-check-plan.js +1 -0
  622. package/dist/engines/k6/runtime/shared/http-parsing.d.ts +10 -0
  623. package/dist/engines/k6/runtime/shared/http-parsing.js +3 -0
  624. package/dist/engines/k6/runtime/shared/ordering.d.ts +2 -0
  625. package/dist/engines/k6/runtime/shared/ordering.js +1 -0
  626. package/dist/engines/k6/runtime/shared/properties.d.ts +1 -0
  627. package/dist/engines/k6/runtime/shared/properties.js +1 -0
  628. package/dist/engines/k6/runtime/suite.d.ts +4 -0
  629. package/dist/engines/k6/runtime/suite.js +1 -0
  630. package/dist/engines/k6/runtime/types.d.ts +242 -0
  631. package/dist/engines/k6/runtime/types.js +1 -0
  632. package/dist/engines/k6/runtime/xk6-sql-driver-postgres.d.ts +7 -0
  633. package/dist/engines/k6/runtime/xk6-sql-driver-postgres.js +1 -0
  634. package/dist/engines/managed-module-resolution-policy-input.d.ts +9 -0
  635. package/dist/engines/managed-module-resolution-policy-input.js +1 -0
  636. package/dist/engines/managed-module-resolution-policy.d.ts +25 -0
  637. package/dist/engines/managed-module-resolution-policy.js +1 -0
  638. package/dist/engines/managed-module-resolution.d.ts +13 -0
  639. package/dist/engines/managed-module-resolution.js +697 -0
  640. package/dist/engines/manager.d.ts +24 -0
  641. package/dist/engines/manager.js +1 -0
  642. package/dist/engines/node-vitest/adapter/adapter.d.ts +16 -0
  643. package/dist/engines/node-vitest/adapter/adapter.js +1 -0
  644. package/dist/engines/node-vitest/adapter/consumer-typescript-paths.d.ts +17 -0
  645. package/dist/engines/node-vitest/adapter/consumer-typescript-paths.js +3 -0
  646. package/dist/engines/node-vitest/adapter/evidence.d.ts +33 -0
  647. package/dist/engines/node-vitest/adapter/evidence.js +2 -0
  648. package/dist/engines/node-vitest/adapter/failure-details.d.ts +2 -0
  649. package/dist/engines/node-vitest/adapter/failure-details.js +2 -0
  650. package/dist/engines/node-vitest/adapter/index.d.ts +1 -0
  651. package/dist/engines/node-vitest/adapter/index.js +1 -0
  652. package/dist/engines/node-vitest/adapter/reporter.d.ts +7 -0
  653. package/dist/engines/node-vitest/adapter/reporter.js +1 -0
  654. package/dist/engines/node-vitest/adapter/resolution.d.ts +12 -0
  655. package/dist/engines/node-vitest/adapter/resolution.js +1 -0
  656. package/dist/engines/node-vitest/adapter/workspace.d.ts +19 -0
  657. package/dist/engines/node-vitest/adapter/workspace.js +177 -0
  658. package/dist/engines/node-vitest/runtime/contract/index.d.ts +64 -0
  659. package/dist/engines/node-vitest/runtime/contract/index.js +1 -0
  660. package/dist/engines/node-vitest/runtime/data/http.d.ts +4 -0
  661. package/dist/engines/node-vitest/runtime/data/http.js +1 -0
  662. package/dist/engines/node-vitest/runtime/data/index.d.ts +8 -0
  663. package/dist/engines/node-vitest/runtime/data/index.js +1 -0
  664. package/dist/engines/node-vitest/runtime/data/primitives.d.ts +1 -0
  665. package/dist/engines/node-vitest/runtime/data/primitives.js +1 -0
  666. package/dist/engines/node-vitest/runtime/data/report.d.ts +3 -0
  667. package/dist/engines/node-vitest/runtime/data/report.js +6 -0
  668. package/dist/engines/node-vitest/runtime/data/runner.d.ts +4 -0
  669. package/dist/engines/node-vitest/runtime/data/runner.js +1 -0
  670. package/dist/engines/node-vitest/runtime/data/scenario.d.ts +12 -0
  671. package/dist/engines/node-vitest/runtime/data/scenario.js +2 -0
  672. package/dist/engines/node-vitest/runtime/data/types.d.ts +412 -0
  673. package/dist/engines/node-vitest/runtime/data/types.js +1 -0
  674. package/dist/engines/node-vitest/runtime/runtime-input.d.ts +63 -0
  675. package/dist/engines/node-vitest/runtime/runtime-input.js +1 -0
  676. package/dist/engines/playwright/adapter/adapter.d.ts +18 -0
  677. package/dist/engines/playwright/adapter/adapter.js +1 -0
  678. package/dist/engines/playwright/adapter/attachments.d.ts +25 -0
  679. package/dist/engines/playwright/adapter/attachments.js +1 -0
  680. package/dist/engines/playwright/adapter/config.d.ts +45 -0
  681. package/dist/engines/playwright/adapter/config.js +167 -0
  682. package/dist/engines/playwright/adapter/evidence-validation.d.ts +12 -0
  683. package/dist/engines/playwright/adapter/evidence-validation.js +1 -0
  684. package/dist/engines/playwright/adapter/evidence.d.ts +32 -0
  685. package/dist/engines/playwright/adapter/evidence.js +1 -0
  686. package/dist/engines/playwright/adapter/failure-details.d.ts +2 -0
  687. package/dist/engines/playwright/adapter/failure-details.js +2 -0
  688. package/dist/engines/playwright/adapter/index.d.ts +3 -0
  689. package/dist/engines/playwright/adapter/index.js +1 -0
  690. package/dist/engines/playwright/adapter/reporter.d.ts +12 -0
  691. package/dist/engines/playwright/adapter/reporter.js +1 -0
  692. package/dist/engines/playwright/runtime/config-file.d.ts +2 -0
  693. package/dist/engines/playwright/runtime/config-file.js +1 -0
  694. package/dist/engines/playwright/runtime/config.d.ts +24 -0
  695. package/dist/engines/playwright/runtime/config.js +1 -0
  696. package/dist/engines/playwright/runtime/index.d.ts +4 -0
  697. package/dist/engines/playwright/runtime/index.js +1 -0
  698. package/dist/engines/playwright/runtime/runtime-input.d.ts +36 -0
  699. package/dist/engines/playwright/runtime/runtime-input.js +151 -0
  700. package/dist/engines/playwright/runtime/sandbox.d.ts +84 -0
  701. package/dist/engines/playwright/runtime/sandbox.js +1 -0
  702. package/dist/engines/runtime-input-file.d.ts +25 -0
  703. package/dist/engines/runtime-input-file.js +1 -0
  704. package/dist/environment/lifecycle-artifacts.d.ts +7 -0
  705. package/dist/environment/lifecycle-artifacts.js +1 -0
  706. package/dist/environment/lifecycle-controller.d.ts +71 -0
  707. package/dist/environment/lifecycle-controller.js +1 -0
  708. package/dist/environment/lifecycle.d.ts +29 -0
  709. package/dist/environment/lifecycle.js +1 -0
  710. package/dist/environment/maintenance.d.ts +68 -0
  711. package/dist/environment/maintenance.js +1 -0
  712. package/dist/environment/planning-types.d.ts +35 -0
  713. package/dist/environment/planning-types.js +1 -0
  714. package/dist/environment/readiness.d.ts +12 -0
  715. package/dist/environment/readiness.js +1 -0
  716. package/dist/environment/ready-environment.d.ts +17 -0
  717. package/dist/environment/ready-environment.js +1 -0
  718. package/dist/environment/run-environment.d.ts +38 -0
  719. package/dist/environment/run-environment.js +1 -0
  720. package/dist/environment/run-stopping.d.ts +13 -0
  721. package/dist/environment/run-stopping.js +1 -0
  722. package/dist/environment/runtime-contexts.d.ts +32 -0
  723. package/dist/environment/runtime-contexts.js +1 -0
  724. package/dist/environment/runtime-manager.d.ts +95 -0
  725. package/dist/environment/runtime-manager.js +1 -0
  726. package/dist/environment/runtime-planning.d.ts +16 -0
  727. package/dist/environment/runtime-planning.js +1 -0
  728. package/dist/environment/runtime-preparation.d.ts +30 -0
  729. package/dist/environment/runtime-preparation.js +1 -0
  730. package/dist/environment/runtime-service.d.ts +18 -0
  731. package/dist/environment/runtime-service.js +1 -0
  732. package/dist/environment/services.d.ts +48 -0
  733. package/dist/environment/services.js +1 -0
  734. package/dist/environment/state.d.ts +18 -0
  735. package/dist/environment/state.js +1 -0
  736. package/dist/environment/status-runtime.d.ts +53 -0
  737. package/dist/environment/status-runtime.js +1 -0
  738. package/dist/environment/template.d.ts +180 -0
  739. package/dist/environment/template.js +1 -0
  740. package/dist/evidence/artifact-config.d.ts +14 -0
  741. package/dist/evidence/artifact-config.js +1 -0
  742. package/dist/evidence/artifact-validation.d.ts +5 -0
  743. package/dist/evidence/artifact-validation.js +1 -0
  744. package/dist/evidence/artifacts.d.ts +75 -0
  745. package/dist/evidence/artifacts.js +2 -0
  746. package/dist/evidence/bundles.d.ts +28 -0
  747. package/dist/evidence/bundles.js +1 -0
  748. package/dist/evidence/ci-provenance.d.ts +9 -0
  749. package/dist/evidence/ci-provenance.js +1 -0
  750. package/dist/evidence/contracts.d.ts +162 -0
  751. package/dist/evidence/contracts.js +1 -0
  752. package/dist/evidence/file-evidence.d.ts +23 -0
  753. package/dist/evidence/file-evidence.js +1 -0
  754. package/dist/evidence/finalization.d.ts +9 -0
  755. package/dist/evidence/finalization.js +1 -0
  756. package/dist/evidence/index.d.ts +8 -0
  757. package/dist/evidence/index.js +1 -0
  758. package/dist/evidence/logs.d.ts +31 -0
  759. package/dist/evidence/logs.js +2 -0
  760. package/dist/evidence/operation-timings.d.ts +60 -0
  761. package/dist/evidence/operation-timings.js +1 -0
  762. package/dist/evidence/read-bundle.d.ts +4 -0
  763. package/dist/evidence/read-bundle.js +1 -0
  764. package/dist/evidence/read-fields.d.ts +22 -0
  765. package/dist/evidence/read-fields.js +1 -0
  766. package/dist/evidence/read-provenance.d.ts +2 -0
  767. package/dist/evidence/read-provenance.js +1 -0
  768. package/dist/evidence/read-redaction.d.ts +2 -0
  769. package/dist/evidence/read-redaction.js +1 -0
  770. package/dist/evidence/read-retention.d.ts +2 -0
  771. package/dist/evidence/read-retention.js +1 -0
  772. package/dist/evidence/read-run.d.ts +2 -0
  773. package/dist/evidence/read-run.js +1 -0
  774. package/dist/evidence/reading.d.ts +28 -0
  775. package/dist/evidence/reading.js +1 -0
  776. package/dist/evidence/reporting-types.d.ts +330 -0
  777. package/dist/evidence/reporting-types.js +1 -0
  778. package/dist/evidence/reporting.d.ts +3 -0
  779. package/dist/evidence/reporting.js +1 -0
  780. package/dist/evidence/secure-file-copy.d.ts +24 -0
  781. package/dist/evidence/secure-file-copy.js +1 -0
  782. package/dist/evidence/setup-progress.d.ts +63 -0
  783. package/dist/evidence/setup-progress.js +1 -0
  784. package/dist/evidence/step-output.d.ts +16 -0
  785. package/dist/evidence/step-output.js +6 -0
  786. package/dist/evidence/storage-inventory.d.ts +27 -0
  787. package/dist/evidence/storage-inventory.js +1 -0
  788. package/dist/evidence/storage.d.ts +27 -0
  789. package/dist/evidence/storage.js +2 -0
  790. package/dist/evidence/timing.d.ts +23 -0
  791. package/dist/evidence/timing.js +1 -0
  792. package/dist/file.d.ts +11 -0
  793. package/dist/file.js +1 -0
  794. package/dist/index.d.ts +4 -0
  795. package/dist/index.js +1 -0
  796. package/dist/kernel/error-serialization.d.ts +38 -0
  797. package/dist/kernel/error-serialization.js +1 -0
  798. package/dist/kernel/redaction.d.ts +1 -0
  799. package/dist/kernel/redaction.js +1 -0
  800. package/dist/kernel/unknown-values.d.ts +6 -0
  801. package/dist/kernel/unknown-values.js +1 -0
  802. package/dist/process/capture-output.d.ts +7 -0
  803. package/dist/process/capture-output.js +1 -0
  804. package/dist/process/command-shell.d.ts +1 -0
  805. package/dist/process/command-shell.js +1 -0
  806. package/dist/process/environment-overlay.d.ts +17 -0
  807. package/dist/process/environment-overlay.js +1 -0
  808. package/dist/process/environment.d.ts +33 -0
  809. package/dist/process/environment.js +1 -0
  810. package/dist/process/files/contained-path.d.ts +8 -0
  811. package/dist/process/files/contained-path.js +1 -0
  812. package/dist/process/files/directory-status.d.ts +14 -0
  813. package/dist/process/files/directory-status.js +1 -0
  814. package/dist/process/files/dotenv.d.ts +2 -0
  815. package/dist/process/files/dotenv.js +1 -0
  816. package/dist/process/files/file-snapshot.d.ts +34 -0
  817. package/dist/process/files/file-snapshot.js +1 -0
  818. package/dist/process/files/json-file.d.ts +11 -0
  819. package/dist/process/files/json-file.js +1 -0
  820. package/dist/process/files/paths.d.ts +1 -0
  821. package/dist/process/files/paths.js +1 -0
  822. package/dist/process/files/temp-dir.d.ts +11 -0
  823. package/dist/process/files/temp-dir.js +1 -0
  824. package/dist/process/host/metadata.d.ts +6 -0
  825. package/dist/process/host/metadata.js +1 -0
  826. package/dist/process/host/platform.d.ts +57 -0
  827. package/dist/process/host/platform.js +1 -0
  828. package/dist/process/host-command.d.ts +4 -0
  829. package/dist/process/host-command.js +3 -0
  830. package/dist/process/host-inspection-command.d.ts +13 -0
  831. package/dist/process/host-inspection-command.js +1 -0
  832. package/dist/process/host-process.d.ts +14 -0
  833. package/dist/process/host-process.js +1 -0
  834. package/dist/process/index.d.ts +9 -0
  835. package/dist/process/index.js +1 -0
  836. package/dist/process/lifecycle-fence.d.ts +11 -0
  837. package/dist/process/lifecycle-fence.js +1 -0
  838. package/dist/process/locks.d.ts +28 -0
  839. package/dist/process/locks.js +4 -0
  840. package/dist/process/process-contracts.d.ts +70 -0
  841. package/dist/process/process-contracts.js +1 -0
  842. package/dist/process/process-group.d.ts +12 -0
  843. package/dist/process/process-group.js +1 -0
  844. package/dist/process/process-identity.d.ts +27 -0
  845. package/dist/process/process-identity.js +1 -0
  846. package/dist/process/process-limits.d.ts +6 -0
  847. package/dist/process/process-limits.js +1 -0
  848. package/dist/process/process.d.ts +11 -0
  849. package/dist/process/process.js +1 -0
  850. package/dist/process/readiness.d.ts +37 -0
  851. package/dist/process/readiness.js +1 -0
  852. package/dist/process/recovery.d.ts +3 -0
  853. package/dist/process/recovery.js +1 -0
  854. package/dist/process/runs/manifest.d.ts +85 -0
  855. package/dist/process/runs/manifest.js +1 -0
  856. package/dist/process/runs/ownership.d.ts +11 -0
  857. package/dist/process/runs/ownership.js +1 -0
  858. package/dist/process/runs/product-state.d.ts +2 -0
  859. package/dist/process/runs/product-state.js +1 -0
  860. package/dist/process/runs/schema.d.ts +3 -0
  861. package/dist/process/runs/schema.js +1 -0
  862. package/dist/process/runs/stop.d.ts +19 -0
  863. package/dist/process/runs/stop.js +1 -0
  864. package/dist/process/runtime-socket.d.ts +4 -0
  865. package/dist/process/runtime-socket.js +1 -0
  866. package/dist/process/service-processes.d.ts +13 -0
  867. package/dist/process/service-processes.js +1 -0
  868. package/dist/process/shutdown.d.ts +10 -0
  869. package/dist/process/shutdown.js +1 -0
  870. package/dist/process/windows-cli-owner.d.ts +2 -0
  871. package/dist/process/windows-cli-owner.js +3 -0
  872. package/dist/process/windows-native.d.ts +6 -0
  873. package/dist/process/windows-native.js +1 -0
  874. package/dist/process/windows-process-identity.d.ts +4 -0
  875. package/dist/process/windows-process-identity.js +1 -0
  876. package/dist/repo/ci-environment.d.ts +7 -0
  877. package/dist/repo/ci-environment.js +1 -0
  878. package/dist/repo/fingerprint-policy.d.ts +15 -0
  879. package/dist/repo/fingerprint-policy.js +1 -0
  880. package/dist/repo/git-path.d.ts +2 -0
  881. package/dist/repo/git-path.js +1 -0
  882. package/dist/repo/managed-git.d.ts +10 -0
  883. package/dist/repo/managed-git.js +1 -0
  884. package/dist/repo/metadata.d.ts +3 -0
  885. package/dist/repo/metadata.js +1 -0
  886. package/dist/repo/physical-tree.d.ts +37 -0
  887. package/dist/repo/physical-tree.js +1 -0
  888. package/dist/repo/remote.d.ts +6 -0
  889. package/dist/repo/remote.js +1 -0
  890. package/dist/repo/state.d.ts +25 -0
  891. package/dist/repo/state.js +5 -0
  892. package/dist/steps/build-config.d.ts +35 -0
  893. package/dist/steps/build-config.js +1 -0
  894. package/dist/steps/configured-step-testkit-modules.d.ts +19 -0
  895. package/dist/steps/configured-step-testkit-modules.js +1 -0
  896. package/dist/steps/configured-steps.d.ts +51 -0
  897. package/dist/steps/configured-steps.js +1 -0
  898. package/dist/steps/environment.d.ts +78 -0
  899. package/dist/steps/environment.js +1 -0
  900. package/dist/steps/index.d.ts +2 -0
  901. package/dist/steps/index.js +1 -0
  902. package/dist/steps/module-runner.d.ts +1 -0
  903. package/dist/steps/module-runner.js +1 -0
  904. package/dist/steps/run.d.ts +36 -0
  905. package/dist/steps/run.js +3 -0
  906. package/dist/toolchains/archive.d.ts +53 -0
  907. package/dist/toolchains/archive.js +1 -0
  908. package/dist/toolchains/esbuild.d.ts +9 -0
  909. package/dist/toolchains/esbuild.js +1 -0
  910. package/dist/toolchains/host-node-support.d.ts +3 -0
  911. package/dist/toolchains/host-node-support.js +1 -0
  912. package/dist/toolchains/index.d.ts +114 -0
  913. package/dist/toolchains/index.js +4 -0
  914. package/dist/toolchains/managed-node-releases.d.ts +28 -0
  915. package/dist/toolchains/managed-node-releases.js +1 -0
  916. package/dist/toolchains/node-cache.d.ts +20 -0
  917. package/dist/toolchains/node-cache.js +1 -0
  918. package/dist/toolchains/node-integrity.d.ts +16 -0
  919. package/dist/toolchains/node-integrity.js +1 -0
  920. package/dist/toolchains/node-provisioning.d.ts +29 -0
  921. package/dist/toolchains/node-provisioning.js +2 -0
  922. package/dist/toolchains/semver.d.ts +13 -0
  923. package/dist/toolchains/semver.js +1 -0
  924. package/dist/toolchains/shared-operation.d.ts +11 -0
  925. package/dist/toolchains/shared-operation.js +1 -0
  926. package/dist/toolchains/timeouts.d.ts +1 -0
  927. package/dist/toolchains/timeouts.js +1 -0
  928. package/dist/toolchains/vitest/index.d.ts +13 -0
  929. package/dist/toolchains/vitest/index.js +1 -0
  930. package/docs/cloud-control.md +105 -0
  931. package/docs/engine-architecture.md +631 -0
  932. package/docs/test-types.md +120 -0
  933. package/docs/testkit-cloud-boundary.md +640 -0
  934. package/node_modules/@isaacs/fs-minipass/LICENSE +15 -0
  935. package/node_modules/@isaacs/fs-minipass/README.md +71 -0
  936. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts +118 -0
  937. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts.map +1 -0
  938. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js +430 -0
  939. package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js.map +1 -0
  940. package/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json +3 -0
  941. package/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts +118 -0
  942. package/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts.map +1 -0
  943. package/node_modules/@isaacs/fs-minipass/dist/esm/index.js +420 -0
  944. package/node_modules/@isaacs/fs-minipass/dist/esm/index.js.map +1 -0
  945. package/node_modules/@isaacs/fs-minipass/dist/esm/package.json +3 -0
  946. package/node_modules/@isaacs/fs-minipass/package.json +72 -0
  947. package/node_modules/buffer-crc32/LICENSE +19 -0
  948. package/node_modules/buffer-crc32/README.md +55 -0
  949. package/node_modules/buffer-crc32/dist/index.cjs +306 -0
  950. package/node_modules/buffer-crc32/dist/index.d.cts +35 -0
  951. package/node_modules/buffer-crc32/dist/index.d.mts +35 -0
  952. package/node_modules/buffer-crc32/dist/index.mjs +304 -0
  953. package/node_modules/buffer-crc32/index.d.ts +35 -0
  954. package/node_modules/buffer-crc32/package.json +54 -0
  955. package/node_modules/chownr/LICENSE.md +63 -0
  956. package/node_modules/chownr/README.md +3 -0
  957. package/node_modules/chownr/dist/commonjs/index.d.ts +3 -0
  958. package/node_modules/chownr/dist/commonjs/index.d.ts.map +1 -0
  959. package/node_modules/chownr/dist/commonjs/index.js +93 -0
  960. package/node_modules/chownr/dist/commonjs/index.js.map +1 -0
  961. package/node_modules/chownr/dist/commonjs/package.json +3 -0
  962. package/node_modules/chownr/dist/esm/index.d.ts +3 -0
  963. package/node_modules/chownr/dist/esm/index.d.ts.map +1 -0
  964. package/node_modules/chownr/dist/esm/index.js +85 -0
  965. package/node_modules/chownr/dist/esm/index.js.map +1 -0
  966. package/node_modules/chownr/dist/esm/package.json +3 -0
  967. package/node_modules/chownr/package.json +69 -0
  968. package/node_modules/diff/CONTRIBUTING.md +28 -0
  969. package/node_modules/diff/LICENSE +29 -0
  970. package/node_modules/diff/README.md +468 -0
  971. package/node_modules/diff/dist/diff.js +2313 -0
  972. package/node_modules/diff/dist/diff.min.js +1 -0
  973. package/node_modules/diff/eslint.config.mjs +182 -0
  974. package/node_modules/diff/libcjs/convert/dmp.d.ts +8 -0
  975. package/node_modules/diff/libcjs/convert/dmp.d.ts.map +1 -0
  976. package/node_modules/diff/libcjs/convert/dmp.js +24 -0
  977. package/node_modules/diff/libcjs/convert/xml.d.ts +6 -0
  978. package/node_modules/diff/libcjs/convert/xml.d.ts.map +1 -0
  979. package/node_modules/diff/libcjs/convert/xml.js +34 -0
  980. package/node_modules/diff/libcjs/diff/array.d.ts +19 -0
  981. package/node_modules/diff/libcjs/diff/array.d.ts.map +1 -0
  982. package/node_modules/diff/libcjs/diff/array.js +23 -0
  983. package/node_modules/diff/libcjs/diff/base.d.ts +20 -0
  984. package/node_modules/diff/libcjs/diff/base.d.ts.map +1 -0
  985. package/node_modules/diff/libcjs/diff/base.js +256 -0
  986. package/node_modules/diff/libcjs/diff/character.d.ts +19 -0
  987. package/node_modules/diff/libcjs/diff/character.d.ts.map +1 -0
  988. package/node_modules/diff/libcjs/diff/character.js +14 -0
  989. package/node_modules/diff/libcjs/diff/css.d.ts +18 -0
  990. package/node_modules/diff/libcjs/diff/css.d.ts.map +1 -0
  991. package/node_modules/diff/libcjs/diff/css.js +17 -0
  992. package/node_modules/diff/libcjs/diff/json.d.ts +24 -0
  993. package/node_modules/diff/libcjs/diff/json.d.ts.map +1 -0
  994. package/node_modules/diff/libcjs/diff/json.js +86 -0
  995. package/node_modules/diff/libcjs/diff/line.d.ts +24 -0
  996. package/node_modules/diff/libcjs/diff/line.d.ts.map +1 -0
  997. package/node_modules/diff/libcjs/diff/line.js +74 -0
  998. package/node_modules/diff/libcjs/diff/sentence.d.ts +21 -0
  999. package/node_modules/diff/libcjs/diff/sentence.d.ts.map +1 -0
  1000. package/node_modules/diff/libcjs/diff/sentence.js +50 -0
  1001. package/node_modules/diff/libcjs/diff/word.d.ts +35 -0
  1002. package/node_modules/diff/libcjs/diff/word.d.ts.map +1 -0
  1003. package/node_modules/diff/libcjs/diff/word.js +289 -0
  1004. package/node_modules/diff/libcjs/index.d.ts +20 -0
  1005. package/node_modules/diff/libcjs/index.d.ts.map +1 -0
  1006. package/node_modules/diff/libcjs/index.js +67 -0
  1007. package/node_modules/diff/libcjs/package.json +1 -0
  1008. package/node_modules/diff/libcjs/patch/apply.d.ts +62 -0
  1009. package/node_modules/diff/libcjs/patch/apply.d.ts.map +1 -0
  1010. package/node_modules/diff/libcjs/patch/apply.js +264 -0
  1011. package/node_modules/diff/libcjs/patch/create.d.ts +131 -0
  1012. package/node_modules/diff/libcjs/patch/create.d.ts.map +1 -0
  1013. package/node_modules/diff/libcjs/patch/create.js +364 -0
  1014. package/node_modules/diff/libcjs/patch/line-endings.d.ts +17 -0
  1015. package/node_modules/diff/libcjs/patch/line-endings.d.ts.map +1 -0
  1016. package/node_modules/diff/libcjs/patch/line-endings.js +50 -0
  1017. package/node_modules/diff/libcjs/patch/parse.d.ts +16 -0
  1018. package/node_modules/diff/libcjs/patch/parse.d.ts.map +1 -0
  1019. package/node_modules/diff/libcjs/patch/parse.js +515 -0
  1020. package/node_modules/diff/libcjs/patch/reverse.d.ts +22 -0
  1021. package/node_modules/diff/libcjs/patch/reverse.d.ts.map +1 -0
  1022. package/node_modules/diff/libcjs/patch/reverse.js +63 -0
  1023. package/node_modules/diff/libcjs/types.d.ts +260 -0
  1024. package/node_modules/diff/libcjs/types.d.ts.map +1 -0
  1025. package/node_modules/diff/libcjs/types.js +2 -0
  1026. package/node_modules/diff/libcjs/util/array.d.ts +3 -0
  1027. package/node_modules/diff/libcjs/util/array.d.ts.map +1 -0
  1028. package/node_modules/diff/libcjs/util/array.js +21 -0
  1029. package/node_modules/diff/libcjs/util/distance-iterator.d.ts +2 -0
  1030. package/node_modules/diff/libcjs/util/distance-iterator.d.ts.map +1 -0
  1031. package/node_modules/diff/libcjs/util/distance-iterator.js +40 -0
  1032. package/node_modules/diff/libcjs/util/params.d.ts +4 -0
  1033. package/node_modules/diff/libcjs/util/params.d.ts.map +1 -0
  1034. package/node_modules/diff/libcjs/util/params.js +17 -0
  1035. package/node_modules/diff/libcjs/util/string.d.ts +30 -0
  1036. package/node_modules/diff/libcjs/util/string.d.ts.map +1 -0
  1037. package/node_modules/diff/libcjs/util/string.js +199 -0
  1038. package/node_modules/diff/libesm/convert/dmp.d.ts +8 -0
  1039. package/node_modules/diff/libesm/convert/dmp.d.ts.map +1 -0
  1040. package/node_modules/diff/libesm/convert/dmp.js +21 -0
  1041. package/node_modules/diff/libesm/convert/xml.d.ts +6 -0
  1042. package/node_modules/diff/libesm/convert/xml.d.ts.map +1 -0
  1043. package/node_modules/diff/libesm/convert/xml.js +31 -0
  1044. package/node_modules/diff/libesm/diff/array.d.ts +19 -0
  1045. package/node_modules/diff/libesm/diff/array.d.ts.map +1 -0
  1046. package/node_modules/diff/libesm/diff/array.js +16 -0
  1047. package/node_modules/diff/libesm/diff/base.d.ts +20 -0
  1048. package/node_modules/diff/libesm/diff/base.d.ts.map +1 -0
  1049. package/node_modules/diff/libesm/diff/base.js +253 -0
  1050. package/node_modules/diff/libesm/diff/character.d.ts +19 -0
  1051. package/node_modules/diff/libesm/diff/character.d.ts.map +1 -0
  1052. package/node_modules/diff/libesm/diff/character.js +7 -0
  1053. package/node_modules/diff/libesm/diff/css.d.ts +18 -0
  1054. package/node_modules/diff/libesm/diff/css.d.ts.map +1 -0
  1055. package/node_modules/diff/libesm/diff/css.js +10 -0
  1056. package/node_modules/diff/libesm/diff/json.d.ts +24 -0
  1057. package/node_modules/diff/libesm/diff/json.d.ts.map +1 -0
  1058. package/node_modules/diff/libesm/diff/json.js +78 -0
  1059. package/node_modules/diff/libesm/diff/line.d.ts +24 -0
  1060. package/node_modules/diff/libesm/diff/line.d.ts.map +1 -0
  1061. package/node_modules/diff/libesm/diff/line.js +65 -0
  1062. package/node_modules/diff/libesm/diff/sentence.d.ts +21 -0
  1063. package/node_modules/diff/libesm/diff/sentence.d.ts.map +1 -0
  1064. package/node_modules/diff/libesm/diff/sentence.js +43 -0
  1065. package/node_modules/diff/libesm/diff/word.d.ts +35 -0
  1066. package/node_modules/diff/libesm/diff/word.d.ts.map +1 -0
  1067. package/node_modules/diff/libesm/diff/word.js +281 -0
  1068. package/node_modules/diff/libesm/index.d.ts +20 -0
  1069. package/node_modules/diff/libesm/index.d.ts.map +1 -0
  1070. package/node_modules/diff/libesm/index.js +30 -0
  1071. package/node_modules/diff/libesm/package.json +1 -0
  1072. package/node_modules/diff/libesm/patch/apply.d.ts +62 -0
  1073. package/node_modules/diff/libesm/patch/apply.d.ts.map +1 -0
  1074. package/node_modules/diff/libesm/patch/apply.js +257 -0
  1075. package/node_modules/diff/libesm/patch/create.d.ts +131 -0
  1076. package/node_modules/diff/libesm/patch/create.d.ts.map +1 -0
  1077. package/node_modules/diff/libesm/patch/create.js +357 -0
  1078. package/node_modules/diff/libesm/patch/line-endings.d.ts +17 -0
  1079. package/node_modules/diff/libesm/patch/line-endings.d.ts.map +1 -0
  1080. package/node_modules/diff/libesm/patch/line-endings.js +44 -0
  1081. package/node_modules/diff/libesm/patch/parse.d.ts +16 -0
  1082. package/node_modules/diff/libesm/patch/parse.d.ts.map +1 -0
  1083. package/node_modules/diff/libesm/patch/parse.js +512 -0
  1084. package/node_modules/diff/libesm/patch/reverse.d.ts +22 -0
  1085. package/node_modules/diff/libesm/patch/reverse.d.ts.map +1 -0
  1086. package/node_modules/diff/libesm/patch/reverse.js +60 -0
  1087. package/node_modules/diff/libesm/types.d.ts +260 -0
  1088. package/node_modules/diff/libesm/types.d.ts.map +1 -0
  1089. package/node_modules/diff/libesm/types.js +1 -0
  1090. package/node_modules/diff/libesm/util/array.d.ts +3 -0
  1091. package/node_modules/diff/libesm/util/array.d.ts.map +1 -0
  1092. package/node_modules/diff/libesm/util/array.js +17 -0
  1093. package/node_modules/diff/libesm/util/distance-iterator.d.ts +2 -0
  1094. package/node_modules/diff/libesm/util/distance-iterator.d.ts.map +1 -0
  1095. package/node_modules/diff/libesm/util/distance-iterator.js +37 -0
  1096. package/node_modules/diff/libesm/util/params.d.ts +4 -0
  1097. package/node_modules/diff/libesm/util/params.d.ts.map +1 -0
  1098. package/node_modules/diff/libesm/util/params.js +14 -0
  1099. package/node_modules/diff/libesm/util/string.d.ts +30 -0
  1100. package/node_modules/diff/libesm/util/string.d.ts.map +1 -0
  1101. package/node_modules/diff/libesm/util/string.js +184 -0
  1102. package/node_modules/diff/package.json +130 -0
  1103. package/node_modules/diff/release-notes.md +474 -0
  1104. package/node_modules/minipass/LICENSE.md +55 -0
  1105. package/node_modules/minipass/README.md +825 -0
  1106. package/node_modules/minipass/dist/commonjs/index.d.ts +545 -0
  1107. package/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -0
  1108. package/node_modules/minipass/dist/commonjs/index.js +1038 -0
  1109. package/node_modules/minipass/dist/commonjs/index.js.map +1 -0
  1110. package/node_modules/minipass/dist/commonjs/package.json +3 -0
  1111. package/node_modules/minipass/dist/esm/index.d.ts +545 -0
  1112. package/node_modules/minipass/dist/esm/index.d.ts.map +1 -0
  1113. package/node_modules/minipass/dist/esm/index.js +1020 -0
  1114. package/node_modules/minipass/dist/esm/index.js.map +1 -0
  1115. package/node_modules/minipass/dist/esm/package.json +3 -0
  1116. package/node_modules/minipass/package.json +77 -0
  1117. package/node_modules/minizlib/LICENSE +26 -0
  1118. package/node_modules/minizlib/README.md +64 -0
  1119. package/node_modules/minizlib/dist/commonjs/constants.d.ts +2 -0
  1120. package/node_modules/minizlib/dist/commonjs/constants.d.ts.map +1 -0
  1121. package/node_modules/minizlib/dist/commonjs/constants.js +123 -0
  1122. package/node_modules/minizlib/dist/commonjs/constants.js.map +1 -0
  1123. package/node_modules/minizlib/dist/commonjs/index.d.ts +99 -0
  1124. package/node_modules/minizlib/dist/commonjs/index.d.ts.map +1 -0
  1125. package/node_modules/minizlib/dist/commonjs/index.js +416 -0
  1126. package/node_modules/minizlib/dist/commonjs/index.js.map +1 -0
  1127. package/node_modules/minizlib/dist/commonjs/package.json +3 -0
  1128. package/node_modules/minizlib/dist/esm/constants.d.ts +2 -0
  1129. package/node_modules/minizlib/dist/esm/constants.d.ts.map +1 -0
  1130. package/node_modules/minizlib/dist/esm/constants.js +117 -0
  1131. package/node_modules/minizlib/dist/esm/constants.js.map +1 -0
  1132. package/node_modules/minizlib/dist/esm/index.d.ts +99 -0
  1133. package/node_modules/minizlib/dist/esm/index.d.ts.map +1 -0
  1134. package/node_modules/minizlib/dist/esm/index.js +363 -0
  1135. package/node_modules/minizlib/dist/esm/index.js.map +1 -0
  1136. package/node_modules/minizlib/dist/esm/package.json +3 -0
  1137. package/node_modules/minizlib/package.json +80 -0
  1138. package/node_modules/pend/LICENSE +23 -0
  1139. package/node_modules/pend/README.md +41 -0
  1140. package/node_modules/pend/index.js +55 -0
  1141. package/node_modules/pend/package.json +18 -0
  1142. package/node_modules/pend/test.js +137 -0
  1143. package/node_modules/tar/LICENSE.md +55 -0
  1144. package/node_modules/tar/README.md +1233 -0
  1145. package/node_modules/tar/dist/commonjs/create.d.ts +3 -0
  1146. package/node_modules/tar/dist/commonjs/create.d.ts.map +1 -0
  1147. package/node_modules/tar/dist/commonjs/create.js +82 -0
  1148. package/node_modules/tar/dist/commonjs/create.js.map +1 -0
  1149. package/node_modules/tar/dist/commonjs/cwd-error.d.ts +8 -0
  1150. package/node_modules/tar/dist/commonjs/cwd-error.d.ts.map +1 -0
  1151. package/node_modules/tar/dist/commonjs/cwd-error.js +18 -0
  1152. package/node_modules/tar/dist/commonjs/cwd-error.js.map +1 -0
  1153. package/node_modules/tar/dist/commonjs/extract.d.ts +3 -0
  1154. package/node_modules/tar/dist/commonjs/extract.d.ts.map +1 -0
  1155. package/node_modules/tar/dist/commonjs/extract.js +88 -0
  1156. package/node_modules/tar/dist/commonjs/extract.js.map +1 -0
  1157. package/node_modules/tar/dist/commonjs/get-write-flag.d.ts +2 -0
  1158. package/node_modules/tar/dist/commonjs/get-write-flag.d.ts.map +1 -0
  1159. package/node_modules/tar/dist/commonjs/get-write-flag.js +32 -0
  1160. package/node_modules/tar/dist/commonjs/get-write-flag.js.map +1 -0
  1161. package/node_modules/tar/dist/commonjs/header.d.ts +53 -0
  1162. package/node_modules/tar/dist/commonjs/header.d.ts.map +1 -0
  1163. package/node_modules/tar/dist/commonjs/header.js +348 -0
  1164. package/node_modules/tar/dist/commonjs/header.js.map +1 -0
  1165. package/node_modules/tar/dist/commonjs/index.d.ts +20 -0
  1166. package/node_modules/tar/dist/commonjs/index.d.ts.map +1 -0
  1167. package/node_modules/tar/dist/commonjs/index.js +64 -0
  1168. package/node_modules/tar/dist/commonjs/index.js.map +1 -0
  1169. package/node_modules/tar/dist/commonjs/index.min.js +4 -0
  1170. package/node_modules/tar/dist/commonjs/index.min.js.map +7 -0
  1171. package/node_modules/tar/dist/commonjs/large-numbers.d.ts +3 -0
  1172. package/node_modules/tar/dist/commonjs/large-numbers.d.ts.map +1 -0
  1173. package/node_modules/tar/dist/commonjs/large-numbers.js +99 -0
  1174. package/node_modules/tar/dist/commonjs/large-numbers.js.map +1 -0
  1175. package/node_modules/tar/dist/commonjs/list.d.ts +7 -0
  1176. package/node_modules/tar/dist/commonjs/list.d.ts.map +1 -0
  1177. package/node_modules/tar/dist/commonjs/list.js +153 -0
  1178. package/node_modules/tar/dist/commonjs/list.js.map +1 -0
  1179. package/node_modules/tar/dist/commonjs/make-command.d.ts +49 -0
  1180. package/node_modules/tar/dist/commonjs/make-command.d.ts.map +1 -0
  1181. package/node_modules/tar/dist/commonjs/make-command.js +52 -0
  1182. package/node_modules/tar/dist/commonjs/make-command.js.map +1 -0
  1183. package/node_modules/tar/dist/commonjs/mkdir.d.ts +25 -0
  1184. package/node_modules/tar/dist/commonjs/mkdir.d.ts.map +1 -0
  1185. package/node_modules/tar/dist/commonjs/mkdir.js +187 -0
  1186. package/node_modules/tar/dist/commonjs/mkdir.js.map +1 -0
  1187. package/node_modules/tar/dist/commonjs/mode-fix.d.ts +2 -0
  1188. package/node_modules/tar/dist/commonjs/mode-fix.d.ts.map +1 -0
  1189. package/node_modules/tar/dist/commonjs/mode-fix.js +29 -0
  1190. package/node_modules/tar/dist/commonjs/mode-fix.js.map +1 -0
  1191. package/node_modules/tar/dist/commonjs/normalize-unicode.d.ts +2 -0
  1192. package/node_modules/tar/dist/commonjs/normalize-unicode.d.ts.map +1 -0
  1193. package/node_modules/tar/dist/commonjs/normalize-unicode.js +38 -0
  1194. package/node_modules/tar/dist/commonjs/normalize-unicode.js.map +1 -0
  1195. package/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts +2 -0
  1196. package/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts.map +1 -0
  1197. package/node_modules/tar/dist/commonjs/normalize-windows-path.js +12 -0
  1198. package/node_modules/tar/dist/commonjs/normalize-windows-path.js.map +1 -0
  1199. package/node_modules/tar/dist/commonjs/options.d.ts +604 -0
  1200. package/node_modules/tar/dist/commonjs/options.d.ts.map +1 -0
  1201. package/node_modules/tar/dist/commonjs/options.js +66 -0
  1202. package/node_modules/tar/dist/commonjs/options.js.map +1 -0
  1203. package/node_modules/tar/dist/commonjs/pack.d.ts +105 -0
  1204. package/node_modules/tar/dist/commonjs/pack.d.ts.map +1 -0
  1205. package/node_modules/tar/dist/commonjs/pack.js +544 -0
  1206. package/node_modules/tar/dist/commonjs/pack.js.map +1 -0
  1207. package/node_modules/tar/dist/commonjs/package.json +3 -0
  1208. package/node_modules/tar/dist/commonjs/parse.d.ts +92 -0
  1209. package/node_modules/tar/dist/commonjs/parse.d.ts.map +1 -0
  1210. package/node_modules/tar/dist/commonjs/parse.js +655 -0
  1211. package/node_modules/tar/dist/commonjs/parse.js.map +1 -0
  1212. package/node_modules/tar/dist/commonjs/path-reservations.d.ts +11 -0
  1213. package/node_modules/tar/dist/commonjs/path-reservations.d.ts.map +1 -0
  1214. package/node_modules/tar/dist/commonjs/path-reservations.js +170 -0
  1215. package/node_modules/tar/dist/commonjs/path-reservations.js.map +1 -0
  1216. package/node_modules/tar/dist/commonjs/pax.d.ts +26 -0
  1217. package/node_modules/tar/dist/commonjs/pax.d.ts.map +1 -0
  1218. package/node_modules/tar/dist/commonjs/pax.js +182 -0
  1219. package/node_modules/tar/dist/commonjs/pax.js.map +1 -0
  1220. package/node_modules/tar/dist/commonjs/process-umask.d.ts +2 -0
  1221. package/node_modules/tar/dist/commonjs/process-umask.d.ts.map +1 -0
  1222. package/node_modules/tar/dist/commonjs/process-umask.js +7 -0
  1223. package/node_modules/tar/dist/commonjs/process-umask.js.map +1 -0
  1224. package/node_modules/tar/dist/commonjs/read-entry.d.ts +36 -0
  1225. package/node_modules/tar/dist/commonjs/read-entry.d.ts.map +1 -0
  1226. package/node_modules/tar/dist/commonjs/read-entry.js +136 -0
  1227. package/node_modules/tar/dist/commonjs/read-entry.js.map +1 -0
  1228. package/node_modules/tar/dist/commonjs/replace.d.ts +2 -0
  1229. package/node_modules/tar/dist/commonjs/replace.d.ts.map +1 -0
  1230. package/node_modules/tar/dist/commonjs/replace.js +227 -0
  1231. package/node_modules/tar/dist/commonjs/replace.js.map +1 -0
  1232. package/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts +2 -0
  1233. package/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts.map +1 -0
  1234. package/node_modules/tar/dist/commonjs/strip-absolute-path.js +29 -0
  1235. package/node_modules/tar/dist/commonjs/strip-absolute-path.js.map +1 -0
  1236. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts +2 -0
  1237. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts.map +1 -0
  1238. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.js +18 -0
  1239. package/node_modules/tar/dist/commonjs/strip-trailing-slashes.js.map +1 -0
  1240. package/node_modules/tar/dist/commonjs/symlink-error.d.ts +9 -0
  1241. package/node_modules/tar/dist/commonjs/symlink-error.d.ts.map +1 -0
  1242. package/node_modules/tar/dist/commonjs/symlink-error.js +19 -0
  1243. package/node_modules/tar/dist/commonjs/symlink-error.js.map +1 -0
  1244. package/node_modules/tar/dist/commonjs/types.d.ts +16 -0
  1245. package/node_modules/tar/dist/commonjs/types.d.ts.map +1 -0
  1246. package/node_modules/tar/dist/commonjs/types.js +70 -0
  1247. package/node_modules/tar/dist/commonjs/types.js.map +1 -0
  1248. package/node_modules/tar/dist/commonjs/unpack.d.ts +101 -0
  1249. package/node_modules/tar/dist/commonjs/unpack.d.ts.map +1 -0
  1250. package/node_modules/tar/dist/commonjs/unpack.js +932 -0
  1251. package/node_modules/tar/dist/commonjs/unpack.js.map +1 -0
  1252. package/node_modules/tar/dist/commonjs/update.d.ts +2 -0
  1253. package/node_modules/tar/dist/commonjs/update.d.ts.map +1 -0
  1254. package/node_modules/tar/dist/commonjs/update.js +33 -0
  1255. package/node_modules/tar/dist/commonjs/update.js.map +1 -0
  1256. package/node_modules/tar/dist/commonjs/warn-method.d.ts +24 -0
  1257. package/node_modules/tar/dist/commonjs/warn-method.d.ts.map +1 -0
  1258. package/node_modules/tar/dist/commonjs/warn-method.js +31 -0
  1259. package/node_modules/tar/dist/commonjs/warn-method.js.map +1 -0
  1260. package/node_modules/tar/dist/commonjs/winchars.d.ts +3 -0
  1261. package/node_modules/tar/dist/commonjs/winchars.d.ts.map +1 -0
  1262. package/node_modules/tar/dist/commonjs/winchars.js +14 -0
  1263. package/node_modules/tar/dist/commonjs/winchars.js.map +1 -0
  1264. package/node_modules/tar/dist/commonjs/write-entry.d.ts +129 -0
  1265. package/node_modules/tar/dist/commonjs/write-entry.d.ts.map +1 -0
  1266. package/node_modules/tar/dist/commonjs/write-entry.js +698 -0
  1267. package/node_modules/tar/dist/commonjs/write-entry.js.map +1 -0
  1268. package/node_modules/tar/dist/esm/create.d.ts +3 -0
  1269. package/node_modules/tar/dist/esm/create.d.ts.map +1 -0
  1270. package/node_modules/tar/dist/esm/create.js +76 -0
  1271. package/node_modules/tar/dist/esm/create.js.map +1 -0
  1272. package/node_modules/tar/dist/esm/cwd-error.d.ts +8 -0
  1273. package/node_modules/tar/dist/esm/cwd-error.d.ts.map +1 -0
  1274. package/node_modules/tar/dist/esm/cwd-error.js +14 -0
  1275. package/node_modules/tar/dist/esm/cwd-error.js.map +1 -0
  1276. package/node_modules/tar/dist/esm/extract.d.ts +3 -0
  1277. package/node_modules/tar/dist/esm/extract.d.ts.map +1 -0
  1278. package/node_modules/tar/dist/esm/extract.js +49 -0
  1279. package/node_modules/tar/dist/esm/extract.js.map +1 -0
  1280. package/node_modules/tar/dist/esm/get-write-flag.d.ts +2 -0
  1281. package/node_modules/tar/dist/esm/get-write-flag.d.ts.map +1 -0
  1282. package/node_modules/tar/dist/esm/get-write-flag.js +26 -0
  1283. package/node_modules/tar/dist/esm/get-write-flag.js.map +1 -0
  1284. package/node_modules/tar/dist/esm/header.d.ts +53 -0
  1285. package/node_modules/tar/dist/esm/header.d.ts.map +1 -0
  1286. package/node_modules/tar/dist/esm/header.js +311 -0
  1287. package/node_modules/tar/dist/esm/header.js.map +1 -0
  1288. package/node_modules/tar/dist/esm/index.d.ts +20 -0
  1289. package/node_modules/tar/dist/esm/index.d.ts.map +1 -0
  1290. package/node_modules/tar/dist/esm/index.js +20 -0
  1291. package/node_modules/tar/dist/esm/index.js.map +1 -0
  1292. package/node_modules/tar/dist/esm/index.min.js +4 -0
  1293. package/node_modules/tar/dist/esm/index.min.js.map +7 -0
  1294. package/node_modules/tar/dist/esm/large-numbers.d.ts +3 -0
  1295. package/node_modules/tar/dist/esm/large-numbers.d.ts.map +1 -0
  1296. package/node_modules/tar/dist/esm/large-numbers.js +94 -0
  1297. package/node_modules/tar/dist/esm/large-numbers.js.map +1 -0
  1298. package/node_modules/tar/dist/esm/list.d.ts +7 -0
  1299. package/node_modules/tar/dist/esm/list.d.ts.map +1 -0
  1300. package/node_modules/tar/dist/esm/list.js +113 -0
  1301. package/node_modules/tar/dist/esm/list.js.map +1 -0
  1302. package/node_modules/tar/dist/esm/make-command.d.ts +49 -0
  1303. package/node_modules/tar/dist/esm/make-command.d.ts.map +1 -0
  1304. package/node_modules/tar/dist/esm/make-command.js +48 -0
  1305. package/node_modules/tar/dist/esm/make-command.js.map +1 -0
  1306. package/node_modules/tar/dist/esm/mkdir.d.ts +25 -0
  1307. package/node_modules/tar/dist/esm/mkdir.d.ts.map +1 -0
  1308. package/node_modules/tar/dist/esm/mkdir.js +179 -0
  1309. package/node_modules/tar/dist/esm/mkdir.js.map +1 -0
  1310. package/node_modules/tar/dist/esm/mode-fix.d.ts +2 -0
  1311. package/node_modules/tar/dist/esm/mode-fix.d.ts.map +1 -0
  1312. package/node_modules/tar/dist/esm/mode-fix.js +25 -0
  1313. package/node_modules/tar/dist/esm/mode-fix.js.map +1 -0
  1314. package/node_modules/tar/dist/esm/normalize-unicode.d.ts +2 -0
  1315. package/node_modules/tar/dist/esm/normalize-unicode.d.ts.map +1 -0
  1316. package/node_modules/tar/dist/esm/normalize-unicode.js +34 -0
  1317. package/node_modules/tar/dist/esm/normalize-unicode.js.map +1 -0
  1318. package/node_modules/tar/dist/esm/normalize-windows-path.d.ts +2 -0
  1319. package/node_modules/tar/dist/esm/normalize-windows-path.d.ts.map +1 -0
  1320. package/node_modules/tar/dist/esm/normalize-windows-path.js +9 -0
  1321. package/node_modules/tar/dist/esm/normalize-windows-path.js.map +1 -0
  1322. package/node_modules/tar/dist/esm/options.d.ts +604 -0
  1323. package/node_modules/tar/dist/esm/options.d.ts.map +1 -0
  1324. package/node_modules/tar/dist/esm/options.js +54 -0
  1325. package/node_modules/tar/dist/esm/options.js.map +1 -0
  1326. package/node_modules/tar/dist/esm/pack.d.ts +105 -0
  1327. package/node_modules/tar/dist/esm/pack.d.ts.map +1 -0
  1328. package/node_modules/tar/dist/esm/pack.js +502 -0
  1329. package/node_modules/tar/dist/esm/pack.js.map +1 -0
  1330. package/node_modules/tar/dist/esm/package.json +3 -0
  1331. package/node_modules/tar/dist/esm/parse.d.ts +92 -0
  1332. package/node_modules/tar/dist/esm/parse.d.ts.map +1 -0
  1333. package/node_modules/tar/dist/esm/parse.js +651 -0
  1334. package/node_modules/tar/dist/esm/parse.js.map +1 -0
  1335. package/node_modules/tar/dist/esm/path-reservations.d.ts +11 -0
  1336. package/node_modules/tar/dist/esm/path-reservations.d.ts.map +1 -0
  1337. package/node_modules/tar/dist/esm/path-reservations.js +166 -0
  1338. package/node_modules/tar/dist/esm/path-reservations.js.map +1 -0
  1339. package/node_modules/tar/dist/esm/pax.d.ts +26 -0
  1340. package/node_modules/tar/dist/esm/pax.d.ts.map +1 -0
  1341. package/node_modules/tar/dist/esm/pax.js +178 -0
  1342. package/node_modules/tar/dist/esm/pax.js.map +1 -0
  1343. package/node_modules/tar/dist/esm/process-umask.d.ts +2 -0
  1344. package/node_modules/tar/dist/esm/process-umask.d.ts.map +1 -0
  1345. package/node_modules/tar/dist/esm/process-umask.js +3 -0
  1346. package/node_modules/tar/dist/esm/process-umask.js.map +1 -0
  1347. package/node_modules/tar/dist/esm/read-entry.d.ts +36 -0
  1348. package/node_modules/tar/dist/esm/read-entry.d.ts.map +1 -0
  1349. package/node_modules/tar/dist/esm/read-entry.js +132 -0
  1350. package/node_modules/tar/dist/esm/read-entry.js.map +1 -0
  1351. package/node_modules/tar/dist/esm/replace.d.ts +2 -0
  1352. package/node_modules/tar/dist/esm/replace.d.ts.map +1 -0
  1353. package/node_modules/tar/dist/esm/replace.js +221 -0
  1354. package/node_modules/tar/dist/esm/replace.js.map +1 -0
  1355. package/node_modules/tar/dist/esm/strip-absolute-path.d.ts +2 -0
  1356. package/node_modules/tar/dist/esm/strip-absolute-path.d.ts.map +1 -0
  1357. package/node_modules/tar/dist/esm/strip-absolute-path.js +25 -0
  1358. package/node_modules/tar/dist/esm/strip-absolute-path.js.map +1 -0
  1359. package/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts +2 -0
  1360. package/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts.map +1 -0
  1361. package/node_modules/tar/dist/esm/strip-trailing-slashes.js +14 -0
  1362. package/node_modules/tar/dist/esm/strip-trailing-slashes.js.map +1 -0
  1363. package/node_modules/tar/dist/esm/symlink-error.d.ts +9 -0
  1364. package/node_modules/tar/dist/esm/symlink-error.d.ts.map +1 -0
  1365. package/node_modules/tar/dist/esm/symlink-error.js +15 -0
  1366. package/node_modules/tar/dist/esm/symlink-error.js.map +1 -0
  1367. package/node_modules/tar/dist/esm/types.d.ts +16 -0
  1368. package/node_modules/tar/dist/esm/types.d.ts.map +1 -0
  1369. package/node_modules/tar/dist/esm/types.js +65 -0
  1370. package/node_modules/tar/dist/esm/types.js.map +1 -0
  1371. package/node_modules/tar/dist/esm/unpack.d.ts +101 -0
  1372. package/node_modules/tar/dist/esm/unpack.d.ts.map +1 -0
  1373. package/node_modules/tar/dist/esm/unpack.js +891 -0
  1374. package/node_modules/tar/dist/esm/unpack.js.map +1 -0
  1375. package/node_modules/tar/dist/esm/update.d.ts +2 -0
  1376. package/node_modules/tar/dist/esm/update.d.ts.map +1 -0
  1377. package/node_modules/tar/dist/esm/update.js +30 -0
  1378. package/node_modules/tar/dist/esm/update.js.map +1 -0
  1379. package/node_modules/tar/dist/esm/warn-method.d.ts +24 -0
  1380. package/node_modules/tar/dist/esm/warn-method.d.ts.map +1 -0
  1381. package/node_modules/tar/dist/esm/warn-method.js +27 -0
  1382. package/node_modules/tar/dist/esm/warn-method.js.map +1 -0
  1383. package/node_modules/tar/dist/esm/winchars.d.ts +3 -0
  1384. package/node_modules/tar/dist/esm/winchars.d.ts.map +1 -0
  1385. package/node_modules/tar/dist/esm/winchars.js +9 -0
  1386. package/node_modules/tar/dist/esm/winchars.js.map +1 -0
  1387. package/node_modules/tar/dist/esm/write-entry.d.ts +129 -0
  1388. package/node_modules/tar/dist/esm/write-entry.d.ts.map +1 -0
  1389. package/node_modules/tar/dist/esm/write-entry.js +656 -0
  1390. package/node_modules/tar/dist/esm/write-entry.js.map +1 -0
  1391. package/node_modules/tar/package.json +298 -0
  1392. package/node_modules/typescript/LICENSE.txt +55 -0
  1393. package/node_modules/typescript/README.md +50 -0
  1394. package/node_modules/typescript/SECURITY.md +41 -0
  1395. package/node_modules/typescript/ThirdPartyNoticeText.txt +193 -0
  1396. package/node_modules/typescript/bin/tsc +2 -0
  1397. package/node_modules/typescript/bin/tsserver +2 -0
  1398. package/node_modules/typescript/lib/_tsc.js +133818 -0
  1399. package/node_modules/typescript/lib/_tsserver.js +659 -0
  1400. package/node_modules/typescript/lib/_typingsInstaller.js +222 -0
  1401. package/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +2122 -0
  1402. package/node_modules/typescript/lib/de/diagnosticMessages.generated.json +2122 -0
  1403. package/node_modules/typescript/lib/es/diagnosticMessages.generated.json +2122 -0
  1404. package/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +2122 -0
  1405. package/node_modules/typescript/lib/it/diagnosticMessages.generated.json +2122 -0
  1406. package/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +2122 -0
  1407. package/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +2122 -0
  1408. package/node_modules/typescript/lib/lib.d.ts +22 -0
  1409. package/node_modules/typescript/lib/lib.decorators.d.ts +384 -0
  1410. package/node_modules/typescript/lib/lib.decorators.legacy.d.ts +22 -0
  1411. package/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +41 -0
  1412. package/node_modules/typescript/lib/lib.dom.d.ts +39429 -0
  1413. package/node_modules/typescript/lib/lib.dom.iterable.d.ts +571 -0
  1414. package/node_modules/typescript/lib/lib.es2015.collection.d.ts +147 -0
  1415. package/node_modules/typescript/lib/lib.es2015.core.d.ts +597 -0
  1416. package/node_modules/typescript/lib/lib.es2015.d.ts +28 -0
  1417. package/node_modules/typescript/lib/lib.es2015.generator.d.ts +77 -0
  1418. package/node_modules/typescript/lib/lib.es2015.iterable.d.ts +605 -0
  1419. package/node_modules/typescript/lib/lib.es2015.promise.d.ts +81 -0
  1420. package/node_modules/typescript/lib/lib.es2015.proxy.d.ts +128 -0
  1421. package/node_modules/typescript/lib/lib.es2015.reflect.d.ts +144 -0
  1422. package/node_modules/typescript/lib/lib.es2015.symbol.d.ts +46 -0
  1423. package/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +326 -0
  1424. package/node_modules/typescript/lib/lib.es2016.array.include.d.ts +116 -0
  1425. package/node_modules/typescript/lib/lib.es2016.d.ts +21 -0
  1426. package/node_modules/typescript/lib/lib.es2016.full.d.ts +23 -0
  1427. package/node_modules/typescript/lib/lib.es2016.intl.d.ts +31 -0
  1428. package/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +21 -0
  1429. package/node_modules/typescript/lib/lib.es2017.d.ts +26 -0
  1430. package/node_modules/typescript/lib/lib.es2017.date.d.ts +31 -0
  1431. package/node_modules/typescript/lib/lib.es2017.full.d.ts +23 -0
  1432. package/node_modules/typescript/lib/lib.es2017.intl.d.ts +44 -0
  1433. package/node_modules/typescript/lib/lib.es2017.object.d.ts +49 -0
  1434. package/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +135 -0
  1435. package/node_modules/typescript/lib/lib.es2017.string.d.ts +45 -0
  1436. package/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +53 -0
  1437. package/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +77 -0
  1438. package/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +53 -0
  1439. package/node_modules/typescript/lib/lib.es2018.d.ts +24 -0
  1440. package/node_modules/typescript/lib/lib.es2018.full.d.ts +24 -0
  1441. package/node_modules/typescript/lib/lib.es2018.intl.d.ts +83 -0
  1442. package/node_modules/typescript/lib/lib.es2018.promise.d.ts +30 -0
  1443. package/node_modules/typescript/lib/lib.es2018.regexp.d.ts +37 -0
  1444. package/node_modules/typescript/lib/lib.es2019.array.d.ts +79 -0
  1445. package/node_modules/typescript/lib/lib.es2019.d.ts +24 -0
  1446. package/node_modules/typescript/lib/lib.es2019.full.d.ts +24 -0
  1447. package/node_modules/typescript/lib/lib.es2019.intl.d.ts +23 -0
  1448. package/node_modules/typescript/lib/lib.es2019.object.d.ts +33 -0
  1449. package/node_modules/typescript/lib/lib.es2019.string.d.ts +37 -0
  1450. package/node_modules/typescript/lib/lib.es2019.symbol.d.ts +24 -0
  1451. package/node_modules/typescript/lib/lib.es2020.bigint.d.ts +765 -0
  1452. package/node_modules/typescript/lib/lib.es2020.d.ts +27 -0
  1453. package/node_modules/typescript/lib/lib.es2020.date.d.ts +42 -0
  1454. package/node_modules/typescript/lib/lib.es2020.full.d.ts +24 -0
  1455. package/node_modules/typescript/lib/lib.es2020.intl.d.ts +474 -0
  1456. package/node_modules/typescript/lib/lib.es2020.number.d.ts +28 -0
  1457. package/node_modules/typescript/lib/lib.es2020.promise.d.ts +47 -0
  1458. package/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +99 -0
  1459. package/node_modules/typescript/lib/lib.es2020.string.d.ts +44 -0
  1460. package/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +41 -0
  1461. package/node_modules/typescript/lib/lib.es2021.d.ts +23 -0
  1462. package/node_modules/typescript/lib/lib.es2021.full.d.ts +24 -0
  1463. package/node_modules/typescript/lib/lib.es2021.intl.d.ts +166 -0
  1464. package/node_modules/typescript/lib/lib.es2021.promise.d.ts +48 -0
  1465. package/node_modules/typescript/lib/lib.es2021.string.d.ts +33 -0
  1466. package/node_modules/typescript/lib/lib.es2021.weakref.d.ts +78 -0
  1467. package/node_modules/typescript/lib/lib.es2022.array.d.ts +121 -0
  1468. package/node_modules/typescript/lib/lib.es2022.d.ts +25 -0
  1469. package/node_modules/typescript/lib/lib.es2022.error.d.ts +75 -0
  1470. package/node_modules/typescript/lib/lib.es2022.full.d.ts +24 -0
  1471. package/node_modules/typescript/lib/lib.es2022.intl.d.ts +145 -0
  1472. package/node_modules/typescript/lib/lib.es2022.object.d.ts +26 -0
  1473. package/node_modules/typescript/lib/lib.es2022.regexp.d.ts +39 -0
  1474. package/node_modules/typescript/lib/lib.es2022.string.d.ts +25 -0
  1475. package/node_modules/typescript/lib/lib.es2023.array.d.ts +924 -0
  1476. package/node_modules/typescript/lib/lib.es2023.collection.d.ts +21 -0
  1477. package/node_modules/typescript/lib/lib.es2023.d.ts +22 -0
  1478. package/node_modules/typescript/lib/lib.es2023.full.d.ts +24 -0
  1479. package/node_modules/typescript/lib/lib.es2023.intl.d.ts +56 -0
  1480. package/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +65 -0
  1481. package/node_modules/typescript/lib/lib.es2024.collection.d.ts +29 -0
  1482. package/node_modules/typescript/lib/lib.es2024.d.ts +26 -0
  1483. package/node_modules/typescript/lib/lib.es2024.full.d.ts +24 -0
  1484. package/node_modules/typescript/lib/lib.es2024.object.d.ts +29 -0
  1485. package/node_modules/typescript/lib/lib.es2024.promise.d.ts +35 -0
  1486. package/node_modules/typescript/lib/lib.es2024.regexp.d.ts +25 -0
  1487. package/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +68 -0
  1488. package/node_modules/typescript/lib/lib.es2024.string.d.ts +29 -0
  1489. package/node_modules/typescript/lib/lib.es5.d.ts +4601 -0
  1490. package/node_modules/typescript/lib/lib.es6.d.ts +23 -0
  1491. package/node_modules/typescript/lib/lib.esnext.array.d.ts +35 -0
  1492. package/node_modules/typescript/lib/lib.esnext.collection.d.ts +96 -0
  1493. package/node_modules/typescript/lib/lib.esnext.d.ts +29 -0
  1494. package/node_modules/typescript/lib/lib.esnext.decorators.d.ts +28 -0
  1495. package/node_modules/typescript/lib/lib.esnext.disposable.d.ts +193 -0
  1496. package/node_modules/typescript/lib/lib.esnext.error.d.ts +24 -0
  1497. package/node_modules/typescript/lib/lib.esnext.float16.d.ts +445 -0
  1498. package/node_modules/typescript/lib/lib.esnext.full.d.ts +24 -0
  1499. package/node_modules/typescript/lib/lib.esnext.intl.d.ts +21 -0
  1500. package/node_modules/typescript/lib/lib.esnext.iterator.d.ts +148 -0
  1501. package/node_modules/typescript/lib/lib.esnext.promise.d.ts +34 -0
  1502. package/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +25 -0
  1503. package/node_modules/typescript/lib/lib.scripthost.d.ts +322 -0
  1504. package/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +41 -0
  1505. package/node_modules/typescript/lib/lib.webworker.d.ts +13150 -0
  1506. package/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +23 -0
  1507. package/node_modules/typescript/lib/lib.webworker.iterable.d.ts +340 -0
  1508. package/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +2122 -0
  1509. package/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +2122 -0
  1510. package/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +2122 -0
  1511. package/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +2122 -0
  1512. package/node_modules/typescript/lib/tsc.js +8 -0
  1513. package/node_modules/typescript/lib/tsserver.js +8 -0
  1514. package/node_modules/typescript/lib/tsserverlibrary.d.ts +17 -0
  1515. package/node_modules/typescript/lib/tsserverlibrary.js +21 -0
  1516. package/node_modules/typescript/lib/typesMap.json +497 -0
  1517. package/node_modules/typescript/lib/typescript.d.ts +11437 -0
  1518. package/node_modules/typescript/lib/typescript.js +200276 -0
  1519. package/node_modules/typescript/lib/typingsInstaller.js +8 -0
  1520. package/node_modules/typescript/lib/watchGuard.js +53 -0
  1521. package/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +2122 -0
  1522. package/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +2122 -0
  1523. package/node_modules/typescript/package.json +120 -0
  1524. package/node_modules/yallist/LICENSE.md +63 -0
  1525. package/node_modules/yallist/README.md +205 -0
  1526. package/node_modules/yallist/dist/commonjs/index.d.ts +39 -0
  1527. package/node_modules/yallist/dist/commonjs/index.d.ts.map +1 -0
  1528. package/node_modules/yallist/dist/commonjs/index.js +384 -0
  1529. package/node_modules/yallist/dist/commonjs/index.js.map +1 -0
  1530. package/node_modules/yallist/dist/commonjs/package.json +3 -0
  1531. package/node_modules/yallist/dist/esm/index.d.ts +39 -0
  1532. package/node_modules/yallist/dist/esm/index.d.ts.map +1 -0
  1533. package/node_modules/yallist/dist/esm/index.js +379 -0
  1534. package/node_modules/yallist/dist/esm/index.js.map +1 -0
  1535. package/node_modules/yallist/dist/esm/package.json +3 -0
  1536. package/node_modules/yallist/package.json +68 -0
  1537. package/node_modules/yauzl/LICENSE +21 -0
  1538. package/node_modules/yauzl/README.md +1015 -0
  1539. package/node_modules/yauzl/crc32.js +45 -0
  1540. package/node_modules/yauzl/fd-slicer.js +188 -0
  1541. package/node_modules/yauzl/index.js +1096 -0
  1542. package/node_modules/yauzl/package.json +40 -0
  1543. package/node_modules/yazl/LICENSE +21 -0
  1544. package/node_modules/yazl/README.md +457 -0
  1545. package/node_modules/yazl/index.js +826 -0
  1546. package/node_modules/yazl/package.json +34 -0
  1547. package/package.json +163 -0
  1548. package/testkit-config-schema.md +718 -0
@@ -0,0 +1,30 @@
1
+ import type { RuntimeServiceConfig } from "./template.js";
2
+ import { type ConfiguredStepReporter, type ConfiguredStepServiceConfig } from "../steps/index.js";
3
+ import { type SetupOperationRegistry } from "../evidence/setup-progress.js";
4
+ import type { FingerprintPolicy } from "../repo/fingerprint-policy.js";
5
+ import type { NormalizedBuildPrepareConfig } from "../steps/build-config.js";
6
+ export type RuntimePreparationConfig = RuntimeServiceConfig & ConfiguredStepServiceConfig & {
7
+ runtimeLabel: string;
8
+ stateDir: string;
9
+ testkit: RuntimeServiceConfig["testkit"] & ConfiguredStepServiceConfig["testkit"] & {
10
+ envFiles?: readonly string[];
11
+ fingerprints?: FingerprintPolicy;
12
+ prepareDir: string;
13
+ };
14
+ };
15
+ export type RuntimePreparationInputConfig = Omit<RuntimePreparationConfig, "testkit"> & {
16
+ testkit: Omit<RuntimePreparationConfig["testkit"], "runtime"> & {
17
+ runtime: Omit<RuntimePreparationConfig["testkit"]["runtime"], "prepare"> & {
18
+ prepare?: NormalizedBuildPrepareConfig | null;
19
+ };
20
+ };
21
+ };
22
+ export interface RuntimePreparationOptions {
23
+ extraEnv?: NodeJS.ProcessEnv | null;
24
+ reporter?: ConfiguredStepReporter | null;
25
+ setupRegistry?: SetupOperationRegistry | null;
26
+ signal?: AbortSignal;
27
+ }
28
+ export declare function prepareRuntimeServices(runtimeConfigs: readonly RuntimePreparationInputConfig[], options?: Readonly<RuntimePreparationOptions>): Promise<void>;
29
+ export declare function prepareRuntimeService(config: RuntimePreparationInputConfig, options?: Readonly<RuntimePreparationOptions>): Promise<void>;
30
+ export declare function computeRuntimePrepareFingerprint(config: RuntimePreparationConfig, options?: Readonly<Pick<RuntimePreparationOptions, "signal">>): Promise<string>;
@@ -0,0 +1 @@
1
+ import S from"crypto";import p from"fs";import k from"path";import{resolveServiceCwd as D}from"../config/loader/index.js";import{appendFileToHash as y}from"../repo/fingerprint-policy.js";import{announceResolvedToolchain as b,resolveConfiguredToolchain as v}from"../toolchains/index.js";import{readDatabaseUrl as m}from"../database/index.js";import{buildExecutionEnv as w,collectConfiguredInputs as x}from"../steps/index.js";import{runConfiguredSteps as R}from"../database/configured-steps.js";import"../evidence/setup-progress.js";const I="prepare-manifest.json";export async function prepareRuntimeServices(e,r={}){for(const t of e)await prepareRuntimeService(t,r)}export async function prepareRuntimeService(e,r={}){const t=e.testkit.runtime.prepare;if(!t||t.steps.length===0||!N(e))return;const n=e.testkit.prepareDir,s=await computeRuntimePrepareFingerprint(e,{signal:r.signal}),i=k.join(n,I);if(g(i)?.fingerprint===s){r.setupRegistry?.recordCached({config:e,stage:"runtime:prepare",kind:"runtime-prepare",summary:"runtime prepare cache hit"});return}p.rmSync(n,{recursive:!0,force:!0}),p.mkdirSync(n,{recursive:!0});const o={...w(e,{...e.testkit.local?.env||{},...r.extraEnv||{}},process.env)},d=m(e.stateDir);d&&(o.DATABASE_URL=d);const u=r.setupRegistry?.start({config:e,stage:"runtime:prepare",kind:"runtime-prepare",summary:"runtime prepare",recordLog:!1}),c=r.setupRegistry;try{await b(e,await v(e,{signal:r.signal}),r.reporter),await R({config:e,steps:t.steps,env:o,labelPrefix:"runtime:prepare",reporter:r.reporter,setupRegistry:c||null,parentOperation:u,signal:r.signal});const a=u?c?.finish(u,{status:"passed",summary:"runtime prepare"}):null;a&&r.reporter?.setupOperationFinished?.(a),A(i,{fingerprint:s,preparedAt:new Date().toISOString(),runtimeId:e.runtimeId||null,serviceName:e.name})}catch(a){const f=u?c?.finish(u,{status:"failed",summary:"runtime prepare",error:U(a,"message")||a}):null;throw f&&r.reporter?.setupOperationFinished?.(f),p.rmSync(n,{recursive:!0,force:!0}),a}}function N(e){return e.testkit.runtime.prepare!=null}export async function computeRuntimePrepareFingerprint(e,r={}){const t=await v(e,{signal:r.signal}),n=S.createHash("sha256");n.update(JSON.stringify({prepare:e.testkit.runtime.prepare,toolchain:t?{kind:"node",install:t.install,nodeVersion:t.nodeVersion,npmVersion:t.npmVersion,nodeSource:t.nodeSource,npmSource:t.npmSource,fingerprint:t.fingerprint}:null,serviceEnv:e.testkit.serviceEnv||{},local:e.testkit.local?{baseUrl:e.testkit.local.baseUrl,cwd:e.testkit.local.cwd,env:e.testkit.local.env||{},readyUrl:e.testkit.local.readyUrl,start:e.testkit.local.start}:null})),n.update(JSON.stringify(O(e)));const s=e.testkit.fingerprints||{exclude:[],include:[]};for(const i of e.testkit.envFiles||[])y(n,e.productDir,D(e.productDir,i),s);for(const i of x(e.productDir,e.testkit.runtime.prepare))y(n,e.productDir,i,s);return n.digest("hex")}function O(e){const r=[],t=m(e.stateDir);t&&r.push({service:e.name,url:t});const n=new Set;for(const i of Object.values(e.testkit.serviceEnv||{}))h(i,n,e.name);for(const i of Object.values(e.testkit.local?.env||{}))h(i,n,e.name);const s=e.testkit.templateContext?.stateDirByService;for(const i of[...n].sort()){const l=s?.get(i),o=l?m(l):null;r.push({service:i,url:o||null})}return r}function h(e,r,t){if(typeof e!="string")return;const n=/\{db(?:Url|Host|Port|Name|User|Password|Ssl)(?::([a-zA-Z0-9_-]+))?\}/g;let s=n.exec(e);for(;s;)r.add(s[1]||t),s=n.exec(e)}function g(e){if(!p.existsSync(e))return null;try{const r=JSON.parse(p.readFileSync(e,"utf8"));return F(r)?{fingerprint:r.fingerprint,...typeof r.preparedAt=="string"?{preparedAt:r.preparedAt}:{},...typeof r.runtimeId=="string"||typeof r.runtimeId=="number"||r.runtimeId===null?{runtimeId:r.runtimeId}:{},...typeof r.serviceName=="string"?{serviceName:r.serviceName}:{}}:null}catch{return null}}function A(e,r){p.writeFileSync(e,JSON.stringify(r,null,2))}function F(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function U(e,r){if(!((typeof e!="object"||e===null)&&typeof e!="function"))return Reflect.get(e,r)}
@@ -0,0 +1,18 @@
1
+ import type { EngineJsonObject } from "../engines/api/index.js";
2
+ import type { EngineId } from "../domain/identifiers.js";
3
+ import type { ExecutionEnvironmentConfig } from "../steps/index.js";
4
+ export interface ReadyServiceLocalConfig {
5
+ baseUrl?: null | string;
6
+ cwd?: string;
7
+ env?: Readonly<Record<string, string>>;
8
+ }
9
+ export interface ReadyServiceConfig extends ExecutionEnvironmentConfig {
10
+ engineConfigurations?: Readonly<Partial<Record<EngineId, EngineJsonObject>>>;
11
+ stateDir: string;
12
+ testkit: ExecutionEnvironmentConfig["testkit"] & {
13
+ execution: {
14
+ fileTimeoutSeconds: number;
15
+ };
16
+ local?: null | ReadyServiceLocalConfig;
17
+ };
18
+ }
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1,48 @@
1
+ import { type SupervisedProcessHandle, type SupervisedProcessReady } from "../process/index.js";
2
+ import { type ToolchainResolvedReporter } from "../toolchains/index.js";
3
+ import { type RuntimeServiceConfig } from "./template.js";
4
+ import { type OutputLineHandler } from "../process/index.js";
5
+ import type { RunLogRegistry } from "../evidence/logs.js";
6
+ type LocalServiceConfig = RuntimeServiceConfig & {
7
+ runtimeLabel: string;
8
+ stateDir: string;
9
+ testkit: RuntimeServiceConfig["testkit"] & {
10
+ local: NonNullable<RuntimeServiceConfig["testkit"]["local"]> & {
11
+ readyTimeoutMs?: number;
12
+ shutdownTimeoutMs?: number;
13
+ };
14
+ };
15
+ };
16
+ export type ResolvedServiceConfig = RuntimeServiceConfig & {
17
+ runtimeLabel: string;
18
+ stateDir: string;
19
+ };
20
+ export interface LocalServiceLifecycle {
21
+ isStopRequested(): unknown;
22
+ registerService(config: LocalServiceConfig, supervisor: SupervisedProcessHandle, ownership: SupervisedProcessReady, cwd: string): unknown;
23
+ requestStop(reason?: unknown): unknown;
24
+ signal: AbortSignal;
25
+ unregisterService(supervisorPid: number): unknown;
26
+ }
27
+ export interface LocalServiceReporter extends ToolchainResolvedReporter<LocalServiceConfig> {
28
+ localServiceStarting?: (config: LocalServiceConfig, command: string) => unknown;
29
+ outputMode?: string;
30
+ writeDebugLine?: OutputLineHandler;
31
+ }
32
+ export interface StartLocalServicesOptions {
33
+ extraEnv?: NodeJS.ProcessEnv | null;
34
+ logRegistry?: RunLogRegistry | null;
35
+ reporter?: LocalServiceReporter | null;
36
+ }
37
+ export interface StartedLocalService {
38
+ completionMonitor: Promise<Error | null>;
39
+ expectCompletion(): void;
40
+ name: string;
41
+ outputDrains: Promise<void>[];
42
+ ownership: SupervisedProcessReady;
43
+ supervisor: SupervisedProcessHandle;
44
+ }
45
+ export declare function startLocalServices(runtimeConfigs: readonly ResolvedServiceConfig[], lifecycle: LocalServiceLifecycle, options?: Readonly<StartLocalServicesOptions>): Promise<StartedLocalService[]>;
46
+ export declare function startLocalService(config: LocalServiceConfig, lifecycle: LocalServiceLifecycle, options?: Readonly<StartLocalServicesOptions>): Promise<StartedLocalService>;
47
+ export declare function stopLocalServices(started: readonly StartedLocalService[], lifecycle: LocalServiceLifecycle | null | undefined): Promise<void>;
48
+ export {};
@@ -0,0 +1 @@
1
+ import{DEFAULT_READY_TIMEOUT_MS as x,waitForReady as M,serviceCompletionError as y}from"../process/readiness.js";import{resolveServiceCwd as A}from"../config/loader/index.js";import{startSupervisedProcess as f,ProcessExitedBeforeReadyError as k,DEFAULT_SHUTDOWN_TIMEOUT_MS as R}from"../process/index.js";import{announceResolvedToolchain as U,applyToolchainEnv as g,resolveConfiguredToolchain as D}from"../toolchains/index.js";import{buildExecutionEnv as O}from"../steps/index.js";import{numericPortFromUrl as P}from"./template.js";import{assertLocalServicePortsAvailable as _}from"./readiness.js";import{captureOutput as T}from"../process/index.js";import{prepareServiceStartInvocation as C}from"../process/service-processes.js";import{readDatabaseUrl as F}from"../database/index.js";export async function startLocalServices(e,r,t={}){const s=[];try{for(const a of e){if(!B(a))continue;const n=await startLocalService(a,r,t);s.push(n)}}catch(a){try{await stopLocalServices(s,r)}catch(n){throw new AggregateError([a,n],"Local service startup failed and its supervised cleanup also failed",{cause:n})}throw a}return s}export async function startLocalService(e,r,t={}){const s=A(e.productDir,e.testkit.local.cwd),a=await D(e,{signal:r.signal});await U(e,a,t.reporter);const n=g(O(e,{...e.testkit.local.env||{},...t.extraEnv||{}},process.env),a),l=e.testkit.local.port||P(e.testkit.local.baseUrl);l&&(n.PORT=String(l));const b=F(e.stateDir);b&&(n.DATABASE_URL=b),await _(e),t.reporter?.localServiceStarting?.(e,e.testkit.local.start);const v=C(e.testkit.local.start,n),d=t.logRegistry?.ensureServiceLogRecord(e),L=t.reporter?.outputMode==="debug"?o=>t.reporter?.writeDebugLine?.(o):null,i=f({args:v.args,windowsVerbatimArguments:v.windowsVerbatimArguments,cwd:s,displayLabel:`Testkit local service ${e.runtimeLabel}:${e.name}`,env:I(n),executable:v.executable,outputMode:"caller-drained",signal:r.signal,shutdownTimeoutMs:e.testkit.local.shutdownTimeoutMs??R,timeoutMs:null}),S=[T(i.stdout,{livePrefix:`[${e.runtimeLabel}:${e.name}]`,liveWriter:L,onLine(o){d&&t.logRegistry?.append(d,"stdout",o)}}),T(i.stderr,{livePrefix:`[${e.runtimeLabel}:${e.name}]`,liveWriter:L,onLine(o){d&&t.logRegistry?.append(d,"stderr",o)}})];let h,p=!1,w=!1;try{h=await i.ready,p=!0,r.registerService(e,i,h,s);const o=e.testkit.local.readyTimeoutMs||x;e.testkit.local.readyUrl!==!1&&e.testkit.local.readyUrl!=null&&await M({name:`${e.runtimeLabel}:${e.name}`,url:e.testkit.local.readyUrl,timeoutMs:o,process:i,signal:r.signal})}catch(o){const u=o instanceof k?y(`${e.runtimeLabel}:${e.name}`,o):o;w=!0;const c=[];try{c.push(...await $(i,S,!1))}catch(E){c.push(m(E))}if(p)try{r.unregisterService(i.pid)}catch(E){c.push(m(E))}throw c.length>0?new AggregateError([u,...c],`Local service ${e.runtimeLabel}:${e.name} startup and cleanup failed`,{cause:o}):u}return{completionMonitor:i.completion.then(o=>{if(w)return null;if(r.signal.aborted){if(p){p=!1;try{r.unregisterService(i.pid)}catch{}}return null}let u=y(`${e.runtimeLabel}:${e.name}`,o,"unexpectedly");if(p){p=!1;try{r.unregisterService(i.pid)}catch(c){u=new AggregateError([u,c],`Local service ${e.runtimeLabel}:${e.name} exited and its manifest entry could not be removed`)}}try{r.requestStop(u.message)}catch(c){u=new AggregateError([u,c],`Local service ${e.runtimeLabel}:${e.name} exited and the active run could not be interrupted`)}return u}),expectCompletion(){w=!0},name:e.name,outputDrains:S,ownership:h,supervisor:i}}export async function stopLocalServices(e,r){const t=[];for(const s of[...e].reverse()){s.expectCompletion();try{t.push(...await $(s.supervisor,s.outputDrains)),await s.completionMonitor}catch(a){t.push(m(a))}finally{try{r?.unregisterService(s.ownership.pid)}catch(a){t.push(m(a))}}}if(t.length>0)throw new AggregateError(t,"Could not stop all local services")}async function $(e,r,t=!0){const a=await e.stop().then(l=>({error:null,result:l}),l=>({error:m(l),result:null})),n=await Promise.allSettled(r);return[...a.result?j(a.result,t):[a.error],...n.flatMap(l=>l.status==="rejected"?[m(l.reason)]:[])]}function j(e,r=!0){return[...r?[e.error]:[],e.terminationError].filter(t=>t!==null)}function I(e){return Object.fromEntries(Object.entries(e).filter(r=>r[1]!==void 0))}function m(e){return e instanceof Error?e:new Error(String(e))}function B(e){return e.testkit.local!=null}
@@ -0,0 +1,18 @@
1
+ import type { RuntimeGraph } from "./planning-types.js";
2
+ export type GraphMetadataInput = Pick<RuntimeGraph, "dirName" | "instanceCount" | "key" | "maxConcurrentTasks" | "portNamespaceIndex" | "portNamespaceStride" | "runtimeNames" | "targetNames">;
3
+ export interface GraphMetadata extends Record<string, unknown> {
4
+ dirName?: null | string;
5
+ instanceCount?: null | number;
6
+ key?: null | string;
7
+ maxConcurrentTasks?: null | number;
8
+ portNamespaceIndex?: null | number;
9
+ portNamespaceStride?: null | number;
10
+ runtimeNames?: string[];
11
+ runtimeServices?: string[];
12
+ targetServices?: string[];
13
+ }
14
+ export declare function findRuntimeStateDirs(rootDir: string, isDatabaseStateDir: (directory: string) => boolean): string[];
15
+ export declare function findGraphDirsForService(productDir: string, serviceName: string): string[];
16
+ export declare function writeGraphMetadata(graphDir: string, graph: Readonly<GraphMetadataInput>): void;
17
+ export declare function readGraphMetadata(graphDir: string): GraphMetadata | null;
18
+ export declare function normalizePathSeparators(filePath: string): string;
@@ -0,0 +1 @@
1
+ import c from"fs";import u from"path";const y="graph.json";export function findRuntimeStateDirs(e,t){const n=[],a=r=>{if(!c.existsSync(r))return;const s=c.readdirSync(r,{withFileTypes:!0});t(r)&&n.push(r);for(const o of s)o.isDirectory()&&a(u.join(r,o.name))};return a(e),n.sort((r,s)=>s.length-r.length)}export function findGraphDirsForService(e,t){const n=u.join(e,".testkit","_graphs");if(!c.existsSync(n))return[];const a=[];for(const r of c.readdirSync(n,{withFileTypes:!0})){if(!r.isDirectory())continue;const s=u.join(n,r.name),o=readGraphMetadata(s);o&&(o.runtimeServices??[]).includes(t)&&a.push(s)}return a.sort()}export function writeGraphMetadata(e,t){c.mkdirSync(e,{recursive:!0});const n={key:t.key||null,dirName:t.dirName||null,instanceCount:Number.isFinite(t.instanceCount)?t.instanceCount:null,maxConcurrentTasks:Number.isFinite(t.maxConcurrentTasks)?t.maxConcurrentTasks:null,portNamespaceIndex:Number.isFinite(t.portNamespaceIndex)?t.portNamespaceIndex:null,portNamespaceStride:Number.isFinite(t.portNamespaceStride)?t.portNamespaceStride:null,runtimeNames:[...t.runtimeNames].sort(),runtimeServices:t.runtimeNames,targetServices:[...t.targetNames].sort()};c.writeFileSync(u.join(e,y),JSON.stringify(n,null,2))}export function readGraphMetadata(e){const t=u.join(e,y);if(!c.existsSync(t))return null;try{const n=JSON.parse(c.readFileSync(t,"utf8"));return x(n)}catch{return null}}export function normalizePathSeparators(e){return e.split(u.sep).join("/")}function x(e){if(!A(e))return null;const{dirName:t,instanceCount:n,key:a,maxConcurrentTasks:r,portNamespaceIndex:s,portNamespaceStride:o,runtimeNames:l,runtimeServices:p,targetServices:d,...S}=e,i={...S};return N(t)&&(i.dirName=t),m(n)&&(i.instanceCount=n),N(a)&&(i.key=a),m(r)&&(i.maxConcurrentTasks=r),m(s)&&(i.portNamespaceIndex=s),m(o)&&(i.portNamespaceStride=o),Array.isArray(l)&&(i.runtimeNames=l.filter(f)),Array.isArray(p)&&(i.runtimeServices=p.filter(f)),Array.isArray(d)&&(i.targetServices=d.filter(f)),i}function A(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function N(e){return e===null||typeof e=="string"}function m(e){return e===null||typeof e=="number"&&Number.isFinite(e)}function f(e){return typeof e=="string"}
@@ -0,0 +1,53 @@
1
+ import type { DesiredRuntimeGraph } from "./planning-types.js";
2
+ export interface RuntimeDirectoryStatus {
3
+ id: string;
4
+ path: string;
5
+ }
6
+ export interface StaleRuntimeDirectoryStatus extends RuntimeDirectoryStatus {
7
+ active: boolean;
8
+ }
9
+ export interface DesiredRuntimeGraphStatus {
10
+ instanceCount: number;
11
+ runtimeIds: string[];
12
+ runtimeServices: string[];
13
+ targetServices: string[];
14
+ }
15
+ export interface ActualRuntimeGraphStatus {
16
+ runtimeServices: string[];
17
+ targetServices: string[];
18
+ }
19
+ export interface RuntimeGraphStatus {
20
+ actual: ActualRuntimeGraphStatus | null;
21
+ currentRuntimeDirs: RuntimeDirectoryStatus[];
22
+ desired: DesiredRuntimeGraphStatus | null;
23
+ exists: boolean;
24
+ name: string;
25
+ orphan: boolean;
26
+ path: string;
27
+ runtimeDirCount: number;
28
+ staleRuntimeDirs: StaleRuntimeDirectoryStatus[];
29
+ }
30
+ export interface RunStatusEntry {
31
+ pid?: number;
32
+ ports: string[];
33
+ runId: unknown;
34
+ startedAt: null | string;
35
+ status: "active" | "stale";
36
+ }
37
+ export interface RunStatus {
38
+ active: number;
39
+ runs: RunStatusEntry[];
40
+ stale: number;
41
+ total: number;
42
+ }
43
+ export interface RuntimeCleanupTarget {
44
+ graph: string;
45
+ path: string;
46
+ runtimeId: string;
47
+ }
48
+ export interface RuntimeGraphStatusOptions {
49
+ desiredGraphs?: readonly DesiredRuntimeGraph[];
50
+ serviceName?: null | string;
51
+ }
52
+ export declare function collectRuntimeGraphStatus(productDir: string, { desiredGraphs, serviceName }?: Readonly<RuntimeGraphStatusOptions>): RuntimeGraphStatus[];
53
+ export declare function collectRunStatus(productDir: string): RunStatus;
@@ -0,0 +1 @@
1
+ import u from"fs";import c from"path";import{buildRuntimeIds as w}from"../domain/runtime-identity.js";import{isRunManifestActive as S,listRunManifests as v}from"./lifecycle.js";import{readGraphMetadata as I}from"./state.js";export function collectRuntimeGraphStatus(s,{desiredGraphs:i=[],serviceName:e=null}={}){const t=c.join(s,".testkit","_graphs"),d=new Map(i.map(r=>[r.dirName,r])),m=new Map;if(u.existsSync(t))for(const r of u.readdirSync(t,{withFileTypes:!0}).sort((n,o)=>n.name.localeCompare(o.name))){if(!r.isDirectory())continue;const n=c.join(t,r.name);m.set(r.name,{name:r.name,path:n,metadata:I(n)})}const D=x(s);return[...new Set([...d.keys(),...m.keys()])].sort().map(r=>{const n=d.get(r)||null,o=m.get(r)||null,p=o?.path||c.join(t,r),l=A(p),f=n?w(n.instanceCount):[],h=new Set(f),g=l.filter(a=>!h.has(a.id)).map(a=>({...a,active:D.has(a.path)})),y=l.filter(a=>h.has(a.id));return{name:r,path:p,exists:!!o,desired:n?{instanceCount:n.instanceCount,runtimeIds:f,runtimeServices:n.runtimeNames,targetServices:n.targetNames}:null,actual:o?{runtimeServices:[...o.metadata?.runtimeServices||[]].sort(),targetServices:[...o.metadata?.targetServices||[]].sort()}:null,runtimeDirCount:l.length,currentRuntimeDirs:y,staleRuntimeDirs:g,orphan:!n}}).filter(r=>e?new Set([...r.desired?.runtimeServices||[],...r.desired?.targetServices||[],...r.actual?.runtimeServices||[],...r.actual?.targetServices||[]]).has(e):!0)}export function collectRunStatus(s){const e=v(s).map(t=>({runId:t.runId,pid:t.pid,status:S(t)?"active":"stale",startedAt:t.startedAt||null,ports:N(t)}));return{total:e.length,active:e.filter(t=>t.status==="active").length,stale:e.filter(t=>t.status==="stale").length,runs:e}}function N(s){const i=[];for(const e of s.services)for(const t of e.ports)t.host&&t.port&&i.push(`${t.host}:${t.port.toString()}`);return[...new Set(i)].sort()}function x(s){const i=new Set;for(const e of v(s))if(S(e))for(const t of e.runtimeDirs)i.add(c.resolve(t));return i}function A(s){const i=c.join(s,"runtimes");return u.existsSync(i)?u.readdirSync(i,{withFileTypes:!0}).filter(e=>e.isDirectory()&&/^runtime-\d+$/.test(e.name)).map(e=>({id:e.name,path:c.resolve(i,e.name)})).sort((e,t)=>R(e.id)-R(t.id)||e.id.localeCompare(t.id)):[]}function R(s){return Number(s.match(/^runtime-(\d+)$/)?.[1]||Number.MAX_SAFE_INTEGER)}
@@ -0,0 +1,180 @@
1
+ import type { RuntimeSocket } from "../process/runtime-socket.js";
2
+ import { type NormalizedDatabaseConfig, type NormalizedRuntimeConfig } from "../config/loader/index.js";
3
+ import { type ExecutionEnvironmentConfig, type ExecutionEnvironmentLocalConfig, type ExecutionEnvironmentTestkitConfig, type ExecutionTemplateContextValues, type RuntimeUrlMapping } from "../steps/index.js";
4
+ import { readDatabaseInfo } from "../database/index.js";
5
+ type RuntimeIdentifier = number | string;
6
+ type StringMap = ReadonlyMap<string, string>;
7
+ interface RuntimeLocalConfig extends ExecutionEnvironmentLocalConfig {
8
+ baseUrl: string;
9
+ cwd?: string;
10
+ port?: number;
11
+ readyUrl?: false | null | string;
12
+ shutdownTimeoutMs?: number;
13
+ start: string;
14
+ }
15
+ interface RuntimeServiceTestkitConfig extends ExecutionEnvironmentTestkitConfig {
16
+ database?: NormalizedDatabaseConfig | null;
17
+ local?: RuntimeLocalConfig | null;
18
+ runtime: NormalizedRuntimeConfig;
19
+ }
20
+ export interface RuntimeServiceConfig extends ExecutionEnvironmentConfig {
21
+ testkit: RuntimeServiceTestkitConfig;
22
+ }
23
+ export interface RuntimePortNamespace {
24
+ index?: unknown;
25
+ portOffset?: unknown;
26
+ stride?: unknown;
27
+ }
28
+ export interface RuntimeInstanceResolutionOptions {
29
+ externalEndpoints?: Readonly<Record<string, null | string | undefined>>;
30
+ graphDirName?: null | string;
31
+ portNamespaceIndex?: number;
32
+ portNamespaceStride?: number;
33
+ portOffset?: number;
34
+ privateEndpoints?: Readonly<Record<string, null | string | undefined>>;
35
+ publicEndpoints?: Readonly<Record<string, null | string | undefined>>;
36
+ publicHost?: null | string;
37
+ serviceContextEndpoints?: Readonly<Record<string, null | string | undefined>>;
38
+ }
39
+ interface RuntimeUrlResolutionContext extends ExecutionTemplateContextValues {
40
+ portMap: ReadonlyMap<string, number>;
41
+ }
42
+ export declare function resolveRuntimeInstanceConfigs<T extends RuntimeServiceConfig>(runtimeConfigs: readonly T[], runtimeId: string, runtimeDir: string, options?: RuntimeInstanceResolutionOptions): (T & {
43
+ stateDir: string;
44
+ runtimeId: string;
45
+ runtimeLabel: string;
46
+ testkit: {
47
+ database: import("../config/loader/database-materialization.js").MaterializedDatabaseConfig<{
48
+ sourceSchema: import("../config/loader/database.js").NormalizedSourceSchemaConfig | null;
49
+ template: import("../config/loader/database.js").NormalizedDatabaseTemplateConfig;
50
+ image?: string | undefined;
51
+ password?: string | undefined;
52
+ user?: string | undefined;
53
+ binding: import("../config/loader/execution-model.js").DatabaseBinding;
54
+ maxConnections: number | undefined;
55
+ reservedConnections: number | undefined;
56
+ reset: boolean;
57
+ roles: import("../config/authoring/index.js").DatabaseRoleConfig[];
58
+ runtimeConnections: number | undefined;
59
+ serviceName: string;
60
+ }> | undefined;
61
+ prepareDir: string;
62
+ templateContext: {
63
+ runtimeId: string;
64
+ runtimeLabel: string;
65
+ runtimeDir: string;
66
+ productDir: string;
67
+ serviceName: string;
68
+ serviceCwd: string;
69
+ serviceStateDir: string;
70
+ prepareDir: string;
71
+ portMap: ReadonlyMap<string, number>;
72
+ baseUrlByService: StringMap;
73
+ readyUrlByService: StringMap;
74
+ publicBaseUrlByService: StringMap;
75
+ privateBaseUrlByService: StringMap;
76
+ serviceContextUrlByService: StringMap;
77
+ publicHost: string | null;
78
+ stateDirByService: StringMap;
79
+ urlMappings: readonly RuntimeUrlMapping[];
80
+ leaseId: null;
81
+ leaseDir: null;
82
+ databaseBindingsReader: typeof readDatabaseInfo;
83
+ };
84
+ runtime: {
85
+ prepare: import("../steps/build-config.js").NormalizedBuildPrepareConfig;
86
+ build: import("../steps/build-config.js").NormalizedBuildConfig | null;
87
+ instances: number;
88
+ maxConcurrentTasks: number;
89
+ toolchain: import("../toolchains/index.js").NormalizedRuntimeToolchain | null;
90
+ };
91
+ local: {
92
+ start: string;
93
+ cwd: string | undefined;
94
+ port: number | undefined;
95
+ baseUrl: string | undefined;
96
+ readyUrl: string | undefined;
97
+ env: {
98
+ [x: string]: string;
99
+ };
100
+ shutdownTimeoutMs?: number;
101
+ } | undefined;
102
+ mode?: string;
103
+ serviceEnv?: Readonly<Record<string, string>>;
104
+ ui?: unknown;
105
+ };
106
+ })[];
107
+ export declare function buildPortMap(runtimeConfigs: readonly RuntimeServiceConfig[], runtimeId: RuntimeIdentifier, namespace?: RuntimePortNamespace): Map<string, number>;
108
+ export declare function resolveRuntimeConfig<T extends RuntimeServiceConfig>(config: T, runtimeId: string, runtimeLabel: string, runtimeDir: string, portMap: ReadonlyMap<string, number>, baseUrlByService: StringMap, readyUrlByService: StringMap, publicBaseUrlByService: StringMap, privateBaseUrlByService: StringMap, serviceContextUrlByService: StringMap, publicHost: null | string, stateDirByService: StringMap, urlMappings: readonly RuntimeUrlMapping[]): T & {
109
+ stateDir: string;
110
+ runtimeId: string;
111
+ runtimeLabel: string;
112
+ testkit: {
113
+ database: import("../config/loader/database-materialization.js").MaterializedDatabaseConfig<{
114
+ sourceSchema: import("../config/loader/database.js").NormalizedSourceSchemaConfig | null;
115
+ template: import("../config/loader/database.js").NormalizedDatabaseTemplateConfig;
116
+ image?: string | undefined;
117
+ password?: string | undefined;
118
+ user?: string | undefined;
119
+ binding: import("../config/loader/execution-model.js").DatabaseBinding;
120
+ maxConnections: number | undefined;
121
+ reservedConnections: number | undefined;
122
+ reset: boolean;
123
+ roles: import("../config/authoring/index.js").DatabaseRoleConfig[];
124
+ runtimeConnections: number | undefined;
125
+ serviceName: string;
126
+ }> | undefined;
127
+ prepareDir: string;
128
+ templateContext: {
129
+ runtimeId: string;
130
+ runtimeLabel: string;
131
+ runtimeDir: string;
132
+ productDir: string;
133
+ serviceName: string;
134
+ serviceCwd: string;
135
+ serviceStateDir: string;
136
+ prepareDir: string;
137
+ portMap: ReadonlyMap<string, number>;
138
+ baseUrlByService: StringMap;
139
+ readyUrlByService: StringMap;
140
+ publicBaseUrlByService: StringMap;
141
+ privateBaseUrlByService: StringMap;
142
+ serviceContextUrlByService: StringMap;
143
+ publicHost: string | null;
144
+ stateDirByService: StringMap;
145
+ urlMappings: readonly RuntimeUrlMapping[];
146
+ leaseId: null;
147
+ leaseDir: null;
148
+ databaseBindingsReader: typeof readDatabaseInfo;
149
+ };
150
+ runtime: {
151
+ prepare: import("../steps/build-config.js").NormalizedBuildPrepareConfig;
152
+ build: import("../steps/build-config.js").NormalizedBuildConfig | null;
153
+ instances: number;
154
+ maxConcurrentTasks: number;
155
+ toolchain: import("../toolchains/index.js").NormalizedRuntimeToolchain | null;
156
+ };
157
+ local: {
158
+ start: string;
159
+ cwd: string | undefined;
160
+ port: number | undefined;
161
+ baseUrl: string | undefined;
162
+ readyUrl: string | undefined;
163
+ env: {
164
+ [x: string]: string;
165
+ };
166
+ shutdownTimeoutMs?: number;
167
+ } | undefined;
168
+ mode?: string;
169
+ serviceEnv?: Readonly<Record<string, string>>;
170
+ ui?: unknown;
171
+ };
172
+ };
173
+ export declare function resolveServiceStateDir(runtimeDir: string, config: Pick<ExecutionEnvironmentConfig, "name">): string;
174
+ export declare function resolveServicePrepareDir(runtimeDir: string, config: Pick<ExecutionEnvironmentConfig, "name">): string;
175
+ export declare function resolveRuntimeUrl(rawUrl: string, serviceName: string, runtimeId: string, context: RuntimeUrlResolutionContext): string;
176
+ export declare function rewriteUrlPort(rawUrl: string, port: number): string;
177
+ export declare function numericPortFromUrl(rawUrl: string): number | null;
178
+ export declare function socketFromUrl(rawUrl: string): RuntimeSocket | null;
179
+ export declare function normalizeSocketHost(hostname: string): string;
180
+ export {};
@@ -0,0 +1 @@
1
+ import{finalizeRuntimeDatabaseConfig as R}from"../database/runtime-config.js";import w from"path";import{finalizeConfiguredInputs as N,finalizeConfiguredSteps as y}from"../steps/configured-steps.js";import"../config/loader/index.js";import{finalizeString as h,resolveTemplateString as E}from"../steps/index.js";import{readDatabaseInfo as M}from"../database/index.js";const O=100;export function resolveRuntimeInstanceConfigs(t,e,r,s={}){const o=B(s.graphDirName,e),c=buildPortMap(t,e,{index:s.portNamespaceIndex||0,stride:s.portNamespaceStride||1,portOffset:s.portOffset||0}),i=new Map,p=new Map,l=new Map,u=new Map,d=new Map,m=new Map,S=x(s.externalEndpoints),v=x(s.publicEndpoints),k=x(s.privateEndpoints),f=x(s.serviceContextEndpoints);for(const n of t)m.set(n.name,resolveServiceStateDir(r,n));for(const n of t)n.testkit.local&&(i.set(n.name,resolveRuntimeUrl(n.testkit.local.baseUrl,n.name,e,{runtimeId:e,runtimeLabel:o,runtimeDir:r,portMap:c,baseUrlByService:i,readyUrlByService:p,stateDirByService:m})),n.testkit.local.readyUrl!==!1&&n.testkit.local.readyUrl!=null&&p.set(n.name,resolveRuntimeUrl(n.testkit.local.readyUrl,n.name,e,{runtimeId:e,runtimeLabel:o,runtimeDir:r,portMap:c,baseUrlByService:i,readyUrlByService:p,stateDirByService:m})));for(const[n,a]of Object.entries(S))i.has(n)||i.set(n,a),p.has(n)||p.set(n,a);for(const[n,a]of Object.entries(v))l.set(n,a);for(const[n,a]of Object.entries(k))u.set(n,a);for(const[n,a]of Object.entries(f))d.set(n,a);for(const[n,a]of i.entries())l.has(n)||l.set(n,g(a,s.publicHost||null)),d.has(n)||d.set(n,a),u.has(n)||u.set(n,a);const b=[];for(const n of t){if(!n.testkit.local)continue;const a=i.get(n.name),U=p.get(n.name);a&&b.push([n.testkit.local.baseUrl,a]),U&&b.push([n.testkit.local.readyUrl,U])}return t.map(n=>resolveRuntimeConfig(n,e,o,r,c,i,p,l,u,d,s.publicHost||null,m,b))}function x(t){return Object.fromEntries(Object.entries(t??{}).map(([e,r])=>[e,(r??"").trim()]).filter(e=>e[1].length>0))}export function buildPortMap(t,e,r={}){const s=new Map,o=new Map,c=j(e,r)+Number(r.portOffset||0);for(const i of t){if(!i.testkit.local)continue;const p=i.testkit.local.port||numericPortFromUrl(i.testkit.local.baseUrl);if(!p)continue;const l=p+c;if(l>65535)throw new Error(`Runtime port resolution exceeded 65535 for service "${i.name}" (${String(l)}). Reduce runtime instances or choose lower local.port/baseUrl ports in testkit.config.ts.`);const u=o.get(l);if(u)throw new Error(`Runtime port collision: services "${u}" and "${i.name}" both resolve to ${String(l)}. Assign distinct local.port/baseUrl ports in testkit.config.ts.`);o.set(l,i.name),s.set(i.name,l)}return s}export function resolveRuntimeConfig(t,e,r,s,o,c,i,p,l,u,d,m,S){const v=resolveServiceStateDir(s,t),k=resolveServicePrepareDir(s,t),f={runtimeId:e,runtimeLabel:r,runtimeDir:s,productDir:t.productDir,serviceName:t.name,serviceCwd:t.testkit.local?.cwd||".",serviceStateDir:v,prepareDir:k,portMap:o,baseUrlByService:c,readyUrlByService:i,publicBaseUrlByService:p,privateBaseUrlByService:l,serviceContextUrlByService:u,publicHost:d,stateDirByService:m,urlMappings:S,leaseId:null,leaseDir:null,databaseBindingsReader:M},b=R(t.testkit.database,f),n={...t.testkit.runtime,prepare:P(t.testkit.runtime.prepare,f)},a=t.testkit.local?{...t.testkit.local,start:h(t.testkit.local.start,f),cwd:t.testkit.local.cwd!==void 0?h(t.testkit.local.cwd,f):t.testkit.local.cwd,port:o.get(t.name)||t.testkit.local.port,baseUrl:c.get(t.name),readyUrl:i.get(t.name),env:{...t.testkit.local.env||{}}}:void 0;return{...t,stateDir:v,runtimeId:e,runtimeLabel:r,testkit:{...t.testkit,database:b,prepareDir:k,templateContext:f,runtime:n,local:a}}}export function resolveServiceStateDir(t,e){return w.join(t,"services",e.name)}export function resolveServicePrepareDir(t,e){return w.join(resolveServiceStateDir(t,e),"prepared")}export function resolveRuntimeUrl(t,e,r,s){const o=E(t,{...s,runtimeId:r,serviceName:e}),c=s.portMap.get(e);return c?rewriteUrlPort(o,c):o}function g(t,e){if(!e)return t;try{const r=new URL(t);r.hostname=e;let s=r.toString();return!t.endsWith("/")&&r.pathname==="/"&&s.endsWith("/")&&(s=s.slice(0,-1)),s}catch{return t}}function P(t,e){return t?{inputs:N(t.inputs,r=>h(r,e)),steps:y(t.steps,r=>h(r,e))}:{inputs:[],steps:[]}}export function rewriteUrlPort(t,e){try{const r=new URL(t);if(!r.port)return t;const s=new URL(t);s.port=String(e);let o=s.toString();return!t.endsWith("/")&&r.pathname==="/"&&o.endsWith("/")&&(o=o.slice(0,-1)),o}catch{return t}}export function numericPortFromUrl(t){try{const e=new URL(t),r=Number(e.port);return Number.isInteger(r)&&r>0?r:null}catch{return null}}export function socketFromUrl(t){try{const e=new URL(t),r=Number(e.port);if(!Number.isInteger(r)||r<=0)return null;const s=normalizeSocketHost(e.hostname);return s?{host:s,port:r}:null}catch{return null}}export function normalizeSocketHost(t){return!t||t==="localhost"?"127.0.0.1":t==="[::1]"?"::1":t}function j(t,e={}){const r=String(t).match(/(\d+)$/),s=r?Number.parseInt(r[1],10)-1:0,o=Math.max(0,Number(e.index||0)),c=Math.max(1,Number(e.stride||1));return O*(o*c+s)}function B(t,e){return t?`${t}/${e}`:e}
@@ -0,0 +1,14 @@
1
+ export interface NormalizedArtifactRetentionConfig {
2
+ maxRuns: number | null;
3
+ maxAgeDays: number | null;
4
+ preserveSuites: string[];
5
+ }
6
+ export interface NormalizedArtifactPublicationConfig {
7
+ directory: string;
8
+ required: boolean;
9
+ }
10
+ export interface NormalizedArtifactArchiveConfig {
11
+ retention: NormalizedArtifactRetentionConfig;
12
+ publication: NormalizedArtifactPublicationConfig | null;
13
+ }
14
+ export declare function normalizeArtifactArchiveConfig(config?: unknown): NormalizedArtifactArchiveConfig;
@@ -0,0 +1 @@
1
+ export function normalizeArtifactArchiveConfig(r){const n=e(r,"artifacts"),i=e(n?.retention,"artifacts.retention"),t=e(n?.publication,"artifacts.publication");return{retention:{maxRuns:o(i?.maxRuns,"artifacts.retention.maxRuns"),maxAgeDays:s(i?.maxAgeDays,"artifacts.retention.maxAgeDays"),preserveSuites:a(i?.preserveSuites,"artifacts.retention.preserveSuites")},publication:t?{directory:u(t.directory,"artifacts.publication.directory"),required:f(t.required,"artifacts.publication.required")}:null}}function o(r,n){if(r==null)return null;if(typeof r!="number"||!Number.isInteger(r)||r<=0)throw new Error(`${n} must be a positive integer`);return r}function s(r,n){if(r==null)return null;if(typeof r!="number"||!Number.isFinite(r)||r<=0)throw new Error(`${n} must be a positive number`);return r}function a(r,n){if(r==null)return[];if(!m(r))throw new Error(`${n} must be an array of non-empty strings`);const i=r.map(t=>{if(typeof t!="string"||t.trim().length===0)throw new Error(`${n} must be an array of non-empty strings`);return t.trim()});return[...new Set(i)].sort()}function u(r,n){if(typeof r!="string"||r.trim().length===0)throw new Error(`${n} is required`);return r.trim()}function f(r,n){if(r===void 0)return!1;if(typeof r!="boolean")throw new Error(`${n} must be a boolean`);return r}function e(r,n){if(r!=null){if(!c(r))throw new Error(`${n} must be an object`);return r}}function c(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}function m(r){return Array.isArray(r)}
@@ -0,0 +1,5 @@
1
+ export { requireObjectRecord, isObjectRecord, requireStringArray as normalizeStringArray } from "./read-fields.js";
2
+ export type UnknownRecord = Record<string, unknown>;
3
+ export declare function isUnknownArray(value: unknown): value is unknown[];
4
+ export declare function readOptionalProperty(value: UnknownRecord | undefined, key: string): unknown;
5
+ export declare function normalizeOptionalNonEmptyString(value: unknown, label: string): string | null;
@@ -0,0 +1 @@
1
+ export{requireObjectRecord,isObjectRecord,requireStringArray as normalizeStringArray}from"./read-fields.js";export function isUnknownArray(r){return Array.isArray(r)}export function readOptionalProperty(r,n){return r?.[n]}export function normalizeOptionalNonEmptyString(r,n){if(r==null||r==="")return null;if(typeof r!="string")throw new Error(`${n} must be a string or null`);return r}
@@ -0,0 +1,75 @@
1
+ import type { RunArtifactDocument } from "./reporting-types.js";
2
+ import { type EngineJsonValue } from "../engines/api/index.js";
3
+ import { type EngineId, type PublicTestType, type RunnerProfileId } from "../domain/identifiers.js";
4
+ import { type NormalizedArtifactArchiveConfig } from "./artifact-config.js";
5
+ import { applyRunBundleRetention, publishRunBundle, sealRunBundle, type RunBundleArtifact, type SealRunBundleOptions } from "./bundles.js";
6
+ import { type Timings, type TimingUpdate } from "./timing.js";
7
+ import type { ReportingArtifactReference } from "./reporting-types.js";
8
+ import { type SecureFileCopyResult } from "./secure-file-copy.js";
9
+ export type WrittenRunArtifact<Artifact extends RunArtifactDocument> = Omit<Artifact, "archive"> & RunBundleArtifact;
10
+ export interface WriteRunArtifactOptions extends Omit<SealRunBundleOptions, "archiveConfig" | "declaredEnvironmentKeys"> {
11
+ archiveConfig?: NormalizedArtifactArchiveConfig | null;
12
+ declaredEnvironmentKeys?: readonly string[];
13
+ }
14
+ export interface WriteRunArtifactDependencies {
15
+ applyRunBundleRetention?: typeof applyRunBundleRetention;
16
+ publishRunBundle?: typeof publishRunBundle;
17
+ sealRunBundle?: typeof sealRunBundle;
18
+ writeLatestProjection?: (filePath: string, value: unknown) => void;
19
+ }
20
+ export interface InterruptLiveRunArtifactOptions {
21
+ finishedAt?: Date | number | string;
22
+ reason?: string;
23
+ runId?: null | string;
24
+ status?: string;
25
+ }
26
+ export interface ArtifactTask {
27
+ engineId: EngineId;
28
+ file?: null | string;
29
+ id: number | string;
30
+ profileId: RunnerProfileId;
31
+ serviceName?: null | string;
32
+ suiteKey?: null | string;
33
+ suiteName?: null | string;
34
+ testType: PublicTestType;
35
+ }
36
+ export interface PersistedArtifactReference extends ReportingArtifactReference {
37
+ contentType: string;
38
+ kind: null | string;
39
+ summary: null | string;
40
+ }
41
+ interface RuntimeArtifactInput {
42
+ contentType?: null | string;
43
+ data?: EngineJsonValue;
44
+ emittedAt?: null | string;
45
+ kind?: null | string;
46
+ name: string;
47
+ summary?: null | string;
48
+ }
49
+ interface FileArtifactInput {
50
+ contentType?: null | string;
51
+ kind?: null | string;
52
+ name?: null | string;
53
+ path: string;
54
+ summary?: null | string;
55
+ }
56
+ interface TaskOutputArtifactInput extends Partial<Omit<RuntimeArtifactInput, "data">> {
57
+ stream?: null | string;
58
+ text: string;
59
+ }
60
+ export interface PersistTaskFileArtifactsOptions {
61
+ copyResults?: SecureFileCopyResult[];
62
+ maxBytes?: number;
63
+ sizeLimitDescription?: string;
64
+ sourceRoot?: string;
65
+ }
66
+ export declare function writeRunArtifact<Artifact extends RunArtifactDocument>(productDir: string, artifact: Artifact, options?: WriteRunArtifactOptions, dependencies?: Readonly<WriteRunArtifactDependencies>): WrittenRunArtifact<Artifact>;
67
+ export declare function writeLiveRunArtifact(productDir: string, artifact: RunArtifactDocument): void;
68
+ export declare function finalizeLiveRunArtifact(productDir: string, options?: InterruptLiveRunArtifactOptions): boolean;
69
+ export declare function resetResultArtifacts(productDir: string): void;
70
+ export declare function persistTaskArtifacts(productDir: string, task: Readonly<ArtifactTask>, emittedArtifacts: readonly RuntimeArtifactInput[]): PersistedArtifactReference[];
71
+ export declare function persistTaskFileArtifacts(productDir: string, task: Readonly<ArtifactTask>, fileArtifacts: readonly FileArtifactInput[], options?: Readonly<PersistTaskFileArtifactsOptions>): PersistedArtifactReference[];
72
+ export declare function persistTaskOutputArtifacts(productDir: string, task: Readonly<ArtifactTask>, outputs: readonly TaskOutputArtifactInput[]): PersistedArtifactReference[];
73
+ export declare function loadTimings(productDir: string): Timings;
74
+ export declare function saveTimings(productDir: string, timings: Timings, updates: readonly TimingUpdate[]): void;
75
+ export {};
@@ -0,0 +1,2 @@
1
+ import{isPathWithin as F}from"../process/files/paths.js";import{readRunDocument as P}from"./read-run.js";import l from"node:fs";import o from"node:path";import"../engines/api/index.js";import"../domain/identifiers.js";import{normalizeArtifactArchiveConfig as _}from"./artifact-config.js";import{applyRunBundleRetention as C,publishRunBundle as M,sealRunBundle as B}from"./bundles.js";import{RETENTION_DECISION_SCHEMA_VERSION as $}from"./contracts.js";import{applyTimingUpdates as U,createEmptyTimings as I,normalizeTimings as J}from"./timing.js";import{isObjectRecord as q,isUnknownArray as V,normalizeOptionalNonEmptyString as E,normalizeStringArray as K,readOptionalProperty as x,requireObjectRecord as X}from"./artifact-validation.js";import{errorMessage as G,isPropertyContainer as W,readProperty as H,serializeJson as j,writeJsonFileAtomicWithRetry as k}from"../process/files/json-file.js";import{copyRegularFileSecurely as Q}from"./secure-file-copy.js";const N="timings.json",A="artifacts",Y="logs",Z="setup",R="live.json",tt=1e4,z=String;export function writeRunArtifact(t,e,r={},n={}){const i=e,s=o.join(t,".testkit","results");l.mkdirSync(s,{recursive:!0});const c=i.archive,a=r.archiveConfig??_(x(c,"request")||{}),u=r.declaredEnvironmentKeys??K(x(c,"declaredEnvironmentKeys")||[],"run artifact declaredEnvironmentKeys"),m=n.sealRunBundle??B,p=n.publishRunBundle??M,d=n.applyRunBundleRetention??C,y=n.writeLatestProjection??k,f=m(t,i,{env:r.env,archiveConfig:a,declaredEnvironmentKeys:u}),h=et(t,f.archive.runId,a.publication,p),S=rt(t,f.archive.runId,a.retention,d),v=i.finalizationFailure,L={...f,...v===void 0?{}:{finalizationFailure:v},run:h.status==="failed"&&h.required===!0||f.archive.cleanup?.status==="failed"||v!==void 0&&f.run.status!=="interrupted"?{...f.run,status:"failed"}:f.run,archive:{...f.archive,publication:h,retention:S}};return nt(s,L,y)}function et(t,e,r,n){try{return n(t,e,r)}catch(i){return{bytesUploaded:0,configured:r!==null,error:T(i),recordedAt:new Date().toISOString(),required:r?.required??!1,runId:e,schemaVersion:1,status:"failed",target:r===null?null:o.resolve(t,r.directory)}}}function rt(t,e,r,n){try{return n(t,e,r)}catch(i){return{currentRunId:e,decidedAt:new Date().toISOString(),error:T(i),garbageCollection:{failures:[],reclaimedBytes:0,removedObjects:0,status:"not_started"},policy:{maxAgeDays:r.maxAgeDays,maxRuns:r.maxRuns,preserveSuites:[...r.preserveSuites]},protectedRunIds:[e],removed:[],removalErrors:[],schemaVersion:$,status:"failed"}}}function nt(t,e,r){const n=o.join(t,"latest.json"),i={path:w(o.relative(o.dirname(t),n)),status:"complete"},s={...e,archive:{...e.archive,latest:i}};try{return r(n,s),s}catch(c){return{...s,archive:{...s.archive,latest:{...i,error:T(c),status:"failed"}}}}}function T(t){try{return G(t)}catch{return"Unknown post-seal archive operation failure"}}export function writeLiveRunArtifact(t,e){const r=e,n=o.join(t,".testkit","results");l.mkdirSync(n,{recursive:!0}),k(o.join(n,R),r)}export function finalizeLiveRunArtifact(t,e={}){const r=ot(e),n=o.join(t,".testkit","results",R),i=ft(n);if(i===null)return!1;const s=it(i,r);return s?(writeRunArtifact(t,s),!0):!1}function it(t,e){const r=P(t,"live run artifact"),n=r.run.id||null;if(e.runId&&n&&n!==e.runId)return null;const i=at(e.finishedAt),s=new Date(i).toISOString(),c=ut(r.run.startedAt),a=c===null?r.run.durationMs:Math.max(0,i-c);return{...r,generatedAt:s,run:{...r.run,id:n??e.runId,status:e.status,finishedAt:s,durationMs:a,interruptReason:e.reason},timings:st(r.timings,s,e.reason)}}function st(t,e,r){if(t==null)return t;const n=X(t,"live run artifact.timings"),i=n.operations;if(i==null)return n;if(!V(i))throw new Error("live run artifact.timings.operations must be an array");return{...n,operations:i.map(s=>!q(s)||s.status!=="running"?s:{...s,status:"cancelled",finishedAt:E(s.finishedAt,"live run operation.finishedAt")??e,message:E(s.message,"live run operation.message")??r})}}function ot(t){return{runId:t.runId??null,reason:t.reason??"run interrupted",status:t.status??"interrupted",finishedAt:t.finishedAt??Date.now()}}function at(t){if(t instanceof Date&&Number.isFinite(t.getTime()))return t.getTime();if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t=="string"){const e=Date.parse(t);if(Number.isFinite(e))return e}return Date.now()}function ut(t){if(typeof t!="string")return null;const e=Date.parse(t);return Number.isFinite(e)?e:null}export function resetResultArtifacts(t){l.rmSync(o.join(t,".testkit","results",A),{recursive:!0,force:!0}),l.rmSync(o.join(t,".testkit","results",Y),{recursive:!0,force:!0}),l.rmSync(o.join(t,".testkit","results",Z),{recursive:!0,force:!0}),l.rmSync(o.join(t,".testkit","results",R),{force:!0})}export function persistTaskArtifacts(t,e,r){if(r.length===0)return[];const n=g(e.serviceName||"service"),i=D(t,n);return r.map((s,c)=>{const a=ct(s),u={schemaVersion:2,source:"testkit-runtime-artifact",service:e.serviceName,suite:{engineId:e.engineId,key:e.suiteKey,name:e.suiteName,profileId:e.profileId,testType:e.testType},file:e.file,taskId:e.id,index:c,name:a.name,kind:a.kind,summary:a.summary,contentType:a.contentType,emittedAt:a.emittedAt,data:a.data},m=`${j(u,"runtime artifact payload")}
2
+ `,p=O(i,e.id,c,a.name,".json",y=>{l.writeFileSync(y,m,{flag:"wx"})}),d=o.join(".testkit","results",A,n,p);return{name:u.name,kind:u.kind,summary:u.summary,contentType:u.contentType,path:w(d)}})}export function persistTaskFileArtifacts(t,e,r,n={}){if(r.length===0)return[];const i=g(e.serviceName||"service"),s=D(t,i);return r.map((c,a)=>{const u=lt(c),m=o.resolve(u.path),p=pt(m,u.contentType),d=[],y=O(s,e.id,a,u.name,p,S=>{d.push(Q(m,S,{...n.maxBytes===void 0?{}:{maxBytes:n.maxBytes},...n.sourceRoot===void 0?{}:{sourceRoot:n.sourceRoot},...n.sizeLimitDescription===void 0?{}:{sizeLimitDescription:n.sizeLimitDescription}}))}),f=d.at(0);if(f===void 0)throw new Error("File artifact copy completed without a result");n.copyResults?.push(f);const h=o.join(".testkit","results",A,i,y);return{name:u.name,kind:u.kind,summary:u.summary,contentType:u.contentType??yt(m),path:w(h)}})}export function persistTaskOutputArtifacts(t,e,r){if(r.length===0)return[];const n=[];for(const i of r){const s=i.text;s.trim().length!==0&&n.push({name:i.name||"task-output",kind:i.kind||"runtime.output",summary:i.summary||dt(s),contentType:i.contentType||"text/plain",emittedAt:i.emittedAt||new Date().toISOString(),data:{stream:i.stream||null,text:s}})}return persistTaskArtifacts(t,e,n)}export function loadTimings(t){const e=o.join(t,".testkit",N);if(!l.existsSync(e))return I();try{const r=JSON.parse(l.readFileSync(e,"utf8"));return J(r)}catch{return I()}}export function saveTimings(t,e,r){if(r.length===0)return;const n=U(e,r),i=o.join(t,".testkit");l.mkdirSync(i,{recursive:!0}),l.writeFileSync(o.join(i,N),j(n,"timings"))}function ct(t){return{name:t.name,kind:t.kind||null,summary:t.summary||null,contentType:t.contentType||"application/json",emittedAt:t.emittedAt||null,data:t.data}}function lt(t){return{path:t.path,name:t.name||"artifact",kind:t.kind||null,summary:t.summary||null,contentType:t.contentType||null}}function mt(t,e,r,n,i=0){const s=i===0?"":`-${(i+1).toString().padStart(2,"0")}`;return`task-${g(t)}-${(e+1).toString().padStart(2,"0")}-${g(r)}${s}${n}`}function O(t,e,r,n,i,s){for(let c=0;c<tt;c+=1){const a=mt(e,r,n,i,c),u=o.join(t,a);try{return s(u),a}catch(m){if(b(m,"EEXIST"))continue;throw l.rmSync(u,{force:!0}),m}}throw new Error(`Could not allocate a unique artifact path for task ${z(e)} and artifact ${n}`)}function D(t,e){const r=o.resolve(t);if(!l.statSync(r).isDirectory())throw new Error("Artifact product directory must be a directory");const i=l.realpathSync(r);let s=r;for(const c of[".testkit","results",A,e]){s=o.join(s,c);try{l.mkdirSync(s)}catch(m){if(!b(m,"EEXIST"))throw m}const a=l.lstatSync(s);if(a.isSymbolicLink()||!a.isDirectory())throw new Error(`Artifact output directory ${JSON.stringify(s)} must be a real directory below productDir`);const u=l.realpathSync(s);if(!F(i,u))throw new Error(`Artifact output directory ${JSON.stringify(s)} escapes productDir`)}return s}function g(t){return z(t).trim().toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function w(t){return t.split(o.sep).join("/")}function ft(t){try{return JSON.parse(l.readFileSync(t,"utf8"))}catch{return null}}function dt(t){const e=t.split(/\r?\n/u).map(r=>r.trim()).find(Boolean);return e?e.slice(0,120):"captured task output"}function pt(t,e){const r=o.extname(t);if(r)return r;const n=(e??"").split(";",1)[0].trim().toLowerCase();return n==="text/markdown"?".md":n==="text/plain"?".txt":n==="application/json"?".json":n==="application/zip"?".zip":n==="image/png"?".png":n==="image/jpeg"?".jpg":n==="text/html"?".html":n==="video/webm"?".webm":".artifact"}function yt(t){const e=o.extname(t).toLowerCase();return e===".md"||e===".markdown"?"text/markdown":e===".txt"||e===".log"?"text/plain":e===".json"?"application/json":"application/octet-stream"}function b(t,e){return W(t)&&H(t,"code")===e}
@@ -0,0 +1,28 @@
1
+ import type { RunArtifactDocument } from "./reporting-types.js";
2
+ import type { NormalizedArtifactPublicationConfig, NormalizedArtifactRetentionConfig } from "./artifact-config.js";
3
+ import { type RunBundleArtifact, type RunBundleCleanup, type RunBundleManifest, type RunBundlePublication, type RunBundleRetentionDecision, type RunBundleSummary, type RunBundleVerification, type VerifiedRunBundleUpload, type SealRunBundleOptions } from "./contracts.js";
4
+ export type { RunBundleArchive, RunBundleArtifact, RunBundleCleanup, RunBundleLatestProjection, RunBundleManifest, RunBundleManifestEntry, RunBundlePublication, RunBundleRedaction, RunBundleRetentionDecision, RunBundleStorage, RunBundleSummary, RunBundleVerification, VerifiedRunBundleUpload, SealRunBundleOptions, } from "./contracts.js";
5
+ interface PublicationReceiptInput extends RunBundlePublication {
6
+ bytesUploaded: number;
7
+ }
8
+ export interface RunBundleSealDependencies {
9
+ cleanupActiveRunResults?: (resultsDir: string) => RunBundleCleanup;
10
+ }
11
+ export interface RunBundleRetentionDependencies {
12
+ removeObject?: (objectPath: string) => void;
13
+ removeRunBundle?: (bundlePath: string) => void;
14
+ }
15
+ export interface RunBundlePublicationDependencies {
16
+ writePublicationReceipt?: (productDir: string, runId: string, receipt: PublicationReceiptInput) => RunBundlePublication;
17
+ }
18
+ export declare function sealRunBundle(productDir: string, artifact: RunArtifactDocument, options?: SealRunBundleOptions, dependencies?: Readonly<RunBundleSealDependencies>): RunBundleArtifact;
19
+ export declare function loadVerifiedRunBundleArtifactIfExists(productDir: string, runId: unknown): RunBundleArtifact | null;
20
+ export declare function loadRunBundleArtifact(productDir: string, runId: unknown): RunBundleArtifact;
21
+ export declare function loadRunBundleManifest(productDir: string, runId: unknown): RunBundleManifest;
22
+ export declare function listRunBundles(productDir: string, options?: {
23
+ file?: null | string;
24
+ }): RunBundleSummary[];
25
+ export declare function verifyRunBundle(productDir: string, runId: unknown): RunBundleVerification;
26
+ export declare function prepareVerifiedRunBundleUpload(productDir: string, requestedRunId?: null | string): VerifiedRunBundleUpload;
27
+ export declare function publishRunBundle(productDir: string, runId: unknown, publication: NormalizedArtifactPublicationConfig | null, dependencies?: Readonly<RunBundlePublicationDependencies>): RunBundlePublication;
28
+ export declare function applyRunBundleRetention(productDir: string, currentRunId: unknown, retention?: Partial<NormalizedArtifactRetentionConfig>, dependencies?: Readonly<RunBundleRetentionDependencies>): RunBundleRetentionDecision;
@@ -0,0 +1 @@
1
+ import{optionalString as A}from"../kernel/unknown-values.js";import{readRunProvenance as oe}from"./read-provenance.js";import{parseRunBundleArtifact as ae,parseRunBundleManifest as J,readRunBundleArtifact as ce}from"./read-bundle.js";import{readRunDocument as ue}from"./read-run.js";import le from"crypto";import c from"fs";import u from"path";import{redactSensitiveText as Y}from"../kernel/redaction.js";import{BUNDLE_SCHEMA_VERSION as G,OBJECTS_DIRNAME as Q,PROVENANCE_SCHEMA_VERSION as fe,RETENTION_DECISION_SCHEMA_VERSION as de,RUNS_DIRNAME as me}from"./contracts.js";import{bundleRelativePath as P,errorMessage as k,hashFile as z,isObjectRecord as $,normalizePath as X,normalizeRunId as w,objectRecords as Z,optionalStringArray as D,optionalUnknownArray as pe,readJsonFile as O,requirePublicationPathOutsideResults as M,requireRunId as he,runIncludesFile as ge,resolveManifestEntryPath as U,resolveRunBundleDirectory as x,resolveRunsRoot as ee,resultsRoot as q,sanitizeSegment as ye,sha256 as C,stableJson as W,treeBytes as te,walkFiles as ne,writeBufferAtomic as ve,writeJson as N}from"./storage.js";import{resolveCiProvenance as Se}from"./ci-provenance.js";const K=["artifacts","logs","setup"],Re=/(?:PASSWORD|TOKEN|SECRET|PRIVATE_KEY|AUTH|COOKIE|SESSION|API_KEY)/iu,je=["package.json","package-lock.json","npm-shrinkwrap.json","pnpm-lock.yaml","yarn.lock","testkit.config.ts","testkit.config.mts","testkit.config.js","testkit.config.mjs"];export function sealRunBundle(e,r,t={},s={}){const n=r,i=he(n),o=ee(e,!0),a=u.dirname(o),f=u.join(o,i),m=s.cleanupActiveRunResults??_e,p=loadVerifiedRunBundleArtifactIfExists(e,i);if(p!==null)return{...p,archive:{...p.archive,cleanup:m(a)}};const d=u.join(o,`.${i}.${String(process.pid)}.${String(Date.now())}.${le.randomBytes(4).toString("hex")}.tmp`);c.mkdirSync(d,{recursive:!0});try{const R=Ne(t.env??process.env),g=be({productDir:e,resultsDir:a,runId:i,tempDir:d,sensitiveValues:R}),h=Ie(n,i,R),y=ue(h.artifact,"run artifact");g.redaction.structuredReplacements=h.replacements,g.redaction.replacements+=h.replacements;const v=Be(e,y,i,{...t,redaction:g.redaction}),j={schemaVersion:G,runId:i,status:"complete",canonicalRunPath:P(i,"run.json"),manifestPath:P(i,"manifest.json"),provenancePath:P(i,"provenance.json"),integrity:"sha256",publication:{configured:!!t.archiveConfig?.publication,status:t.archiveConfig?.publication?"pending":"not_configured"},redaction:g.redaction};y.archive=j,N(u.join(d,"run.json"),y),N(u.join(d,"provenance.json"),v);const b=Ae(d),V=C(Buffer.from(W(b))),E={schemaVersion:G,runId:i,createdAt:new Date().toISOString(),algorithm:"sha256",files:b,storage:{fileCount:b.length,logicalBytes:b.reduce((_,F)=>_+F.bytes,0),objectBytesWritten:g.objectBytesWritten,deduplicatedBytes:g.deduplicatedBytes},redaction:g.redaction,digest:V};return N(u.join(d,"manifest.json"),E),c.renameSync(d,f),{...y,archive:{...j,cleanup:m(a),manifestDigest:E.digest,storage:E.storage}}}catch(R){try{c.rmSync(d,{recursive:!0,force:!0})}catch{}try{xe(e)}catch{}throw R}}export function loadVerifiedRunBundleArtifactIfExists(e,r){const t=w(r),s=x(e,t);if(!c.existsSync(s))return null;const n=verifyRunBundle(e,t);if(!n.ok)throw new Error(`Immutable run bundle ${t} already exists but failed integrity verification: ${n.errors.join("; ")}`);return loadRunBundleArtifact(e,t)}export function loadRunBundleArtifact(e,r){const t=w(r),s=ce(e,t),n=loadRunBundleManifest(e,t);return{...s,archive:{...s.archive,manifestDigest:n.digest,storage:n.storage}}}export function loadRunBundleManifest(e,r){const t=w(r),s=x(e,t),n=u.join(s,"manifest.json");if(!c.existsSync(n))throw new Error(`No immutable Testkit run manifest found for ${t}`);return J(O(n),n,t)}export function listRunBundles(e,r={}){const t=ee(e,!1);return c.existsSync(t)?c.readdirSync(t,{withFileTypes:!0}).filter(n=>n.isDirectory()&&!n.name.startsWith(".")).map(n=>{try{const i=loadRunBundleArtifact(e,n.name);return r.file&&!ge(i,r.file)?null:{runId:n.name,status:i.run.status,startedAt:i.run.startedAt,finishedAt:i.run.finishedAt??null,manifestDigest:i.archive.manifestDigest??null,canonicalRunPath:i.archive.canonicalRunPath}}catch{return null}}).filter(n=>n!==null).sort((n,i)=>(i.finishedAt??i.startedAt??"").localeCompare(n.finishedAt??n.startedAt??"")):[]}export function verifyRunBundle(e,r){const t=w(r);try{return T(x(e,t),t)}catch(s){return{ok:!1,runId:t,errors:[k(s)],checkedFiles:0}}}export function prepareVerifiedRunBundleUpload(e,r=null){const t=r??listRunBundles(e).at(0)?.runId??null;if(t===null)throw new Error("No immutable Testkit run bundle is available to publish");const s=verifyRunBundle(e,t);if(!s.ok)throw new Error(`Immutable run bundle ${t} failed integrity verification: ${s.errors.join("; ")}`);const n=loadRunBundleManifest(e,t),i=x(e,t);return{runId:t,manifest:n,files:n.files.map(o=>({...o,absolutePath:U(i,o.path)}))}}export function publishRunBundle(e,r,t,s={}){const n=w(r),i=s.writePublicationReceipt??ke;if(!t)return i(e,n,{status:"not_configured",required:!1,target:null,bytesUploaded:0});const o=u.resolve(e,t.directory);try{M(e,o)}catch(d){return i(e,n,{status:"failed",required:t.required,target:o,error:k(d),bytesUploaded:0})}const a=ye(u.basename(e)),f=u.join(o,a),m=u.join(f,n),p=u.join(f,`.${n}.${String(process.pid)}.${String(Date.now())}.tmp`);try{const d=x(e,n);if(c.mkdirSync(f,{recursive:!0}),M(e,f),c.existsSync(m)){const h=c.lstatSync(m);if(h.isSymbolicLink()||!h.isDirectory())throw new Error("Publication target must be a regular bundle directory");M(e,m);const y=T(d,n);if(!y.ok)throw new Error(`Source run bundle failed integrity verification: ${y.errors.join("; ")}`);const v=T(m,n);if(!v.ok)throw new Error(`Publication target failed integrity verification: ${v.errors.join("; ")}`);if(y.manifestDigest!==v.manifestDigest)throw new Error("Publication target already exists with a different manifest digest");return i(e,n,{status:"complete",required:t.required,target:m,manifestDigest:y.manifestDigest,reused:!0,bundleBytes:te(d),bytesUploaded:0})}const R=te(d);c.cpSync(d,p,{recursive:!0,preserveTimestamps:!0});const g=T(p,n);if(!g.ok)throw new Error(g.errors.join("; "));return c.renameSync(p,m),i(e,n,{status:"complete",required:t.required,target:m,manifestDigest:g.manifestDigest,reused:!1,bundleBytes:R,bytesUploaded:R})}catch(d){return c.rmSync(p,{recursive:!0,force:!0}),i(e,n,{status:"failed",required:t.required,target:m,error:k(d),bytesUploaded:0})}}export function applyRunBundleRetention(e,r,t={},s={}){const n=w(r),i=s.removeObject??ie,o=s.removeRunBundle??Pe,a=t.maxRuns??null,f=t.maxAgeDays??null,m=new Set(t.preserveSuites||[]),p=listRunBundles(e).map(l=>({...l,artifact:loadRunBundleArtifact(e,l.runId)})),d=new Set([n]);for(const l of p)$e(l.artifact,m)&&d.add(l.runId);const R=new Set(a?p.slice(0,a).map(l=>l.runId):p.map(l=>l.runId)),g=f==null?null:Date.now()-f*24*60*60*1e3,h=[];for(const l of p){if(d.has(l.runId))continue;const S=g!=null&&Date.parse(l.finishedAt||l.startedAt||"")<g,I=!R.has(l.runId);if(!S&&!I)continue;const B=[];S&&B.push("max_age"),I&&B.push("max_runs"),h.push({path:u.join(q(e),me,l.runId),reasons:B,runId:l.runId})}const y=new Map(p.map(l=>[l.runId,loadRunBundleManifest(e,l.runId).files.filter(S=>S.path.startsWith("files/")).map(S=>S.sha256)])),v=re(e),j=[],b=[];for(const l of h){let S=null;try{o(l.path)}catch(B){S=H(B)}const I=!c.existsSync(l.path);!I&&S===null&&(S="Run bundle still exists after removal completed"),I&&j.push({reasons:l.reasons,runId:l.runId}),S!==null&&b.push({...l,error:S,removed:I})}const V=new Set(j.map(l=>l.runId)),E=new Set(p.filter(l=>!V.has(l.runId)).flatMap(l=>y.get(l.runId)??[])),_=se(v,E,i),F=new Date().toISOString();return Oe({currentRunId:n,decidedAt:F,garbageCollection:_,policy:{maxRuns:a,maxAgeDays:f,preserveSuites:[...m].sort()},protectedRunIds:[...d].sort(),removed:j,removalErrors:b})}function be({resultsDir:e,tempDir:r,sensitiveValues:t}){let s=0,n=0,i=0,o=0,a=0;const f=u.join(e,Q,"sha256");c.mkdirSync(f,{recursive:!0});for(const m of K){const p=u.join(e,m);if(c.existsSync(p))for(const d of ne(p)){const R=u.relative(p,d),g=c.readFileSync(d),h=Ce(g,d,t);h.scanned&&(i+=1),h.replacements>0&&(o+=1,a+=h.replacements);const y=C(h.buffer),v=u.join(f,y);c.existsSync(v)?n+=h.buffer.length:(ve(v,h.buffer),c.chmodSync(v,292),s+=h.buffer.length);const j=u.join(r,"files",m,R);c.mkdirSync(u.dirname(j),{recursive:!0});try{c.linkSync(v,j)}catch{c.copyFileSync(v,j)}}}return{objectBytesWritten:s,deduplicatedBytes:n,redaction:{policyVersion:1,status:"applied",textualFilesScanned:i,filesRedacted:o,replacements:a,sensitiveEnvironmentKeys:t.map(m=>m.key).sort(),valuesStored:!1}}}function Ie(e,r,t){const s=new Map(K.map(i=>[`.testkit/results/${i}/`,`${P(r,`files/${i}`)}/`])),n=L(e,s);return Ee(we(n),t)}function we(e){if(!$(e))return e;const r={...e};if($(r.product)){const t={...r.product};delete t.directory,r.product=t}if($(r.git)){const t={...r.git};delete t.remoteUrl,delete t.repoRoot,delete t.worktreePath,r.git=t}return delete r.host,r}function L(e,r){if(Array.isArray(e))return e.map(s=>L(s,r));if($(e))return Object.fromEntries(Object.entries(e).map(([s,n])=>[s,L(n,r)]));if(typeof e!="string")return e;let t=e;for(const[s,n]of r)t.startsWith(s)&&(t=`${n}${t.slice(s.length)}`);return t}function Ee(e,r){let t=0;function s(n){if(Array.isArray(n))return n.map(s);if($(n))return Object.fromEntries(Object.entries(n).map(([o,a])=>[o,s(a)]));if(typeof n!="string")return n;let i=Y(n);i!==n&&(t+=1);for(const o of r){if(!i.includes(o.value))continue;const a=i.split(o.value);t+=a.length-1,i=a.join("<redacted>")}return i}return{artifact:s(e),replacements:t}}function Be(e,r,t,s){const n=D(r.run.fileNames),i=[...new Set([...je,...n])].map(o=>Ve(e,o)).filter(o=>o!==null);return{schemaVersion:fe,runId:t,ci:Se(s.env??process.env),source:{git:r.git??null,files:i},runtime:{controller:{testkitVersion:A(r.run.testkitVersion),node:process.versions.node,platform:process.platform,architecture:process.arch},runtimeStats:pe(r.run.runtimeStats)},scenario:{types:D(r.run.types),suiteSelectors:D(r.run.suiteSelectors),fileNames:n,serviceFilter:A(r.run.serviceFilter),planningDigest:C(Buffer.from(W(r.planning??null))),declaredEnvironmentKeys:[...new Set(s.declaredEnvironmentKeys??[])].sort()},redaction:s.redaction}}function Ae(e){return ne(e).map(r=>({path:X(u.relative(e,r)),bytes:c.statSync(r).size,sha256:z(r)})).sort((r,t)=>r.path.localeCompare(t.path))}function T(e,r){const t=u.join(e,"manifest.json"),s=J(O(t),t,r);ae(O(u.join(e,"run.json")),u.join(e,"run.json"),r);const n=[];for(const o of s.files){let a;try{a=U(e,o.path)}catch(m){n.push(k(m));continue}if(!c.existsSync(a)){n.push(`missing ${o.path}`);continue}const f=c.lstatSync(a);if(f.isSymbolicLink()){n.push(`symbolic link not allowed ${o.path}`);continue}if(!f.isFile()){n.push(`not a regular file ${o.path}`);continue}f.size!==o.bytes&&n.push(`size mismatch ${o.path}`),z(a)!==o.sha256&&n.push(`checksum mismatch ${o.path}`)}C(Buffer.from(W(s.files)))!==s.digest&&n.push("manifest digest mismatch"),s.storage.fileCount!==s.files.length&&n.push("manifest file count mismatch");for(const o of["run.json","provenance.json"])s.files.some(a=>a.path===o)||n.push(`manifest must include ${o}`);if(n.length===0){const o=U(e,"provenance.json");oe(O(o),o,r)}return{runId:r,checkedFiles:s.files.length,storage:s.storage,ok:n.length===0,errors:n,manifestDigest:s.digest}}function ke(e,r,t){const s={schemaVersion:1,runId:r,recordedAt:new Date().toISOString(),...t};return N(u.join(q(e),"publications",`${r}.json`),s),s}function $e(e,r){return r.size===0?!1:Z(e.services).some(t=>Z(t.suites).some(s=>{const n=A(t.name)??"",i=A(s.name)??"",o=A(s.testType)??"";return[i,`${o}:${i}`,`${n}/${o}:${i}`].some(f=>r.has(f))}))}function xe(e){const r=new Set;for(const t of listRunBundles(e)){const s=loadRunBundleManifest(e,t.runId);for(const n of s.files)n.path.startsWith("files/")&&r.add(n.sha256)}return se(re(e),r,ie)}function re(e){const r=u.join(q(e),Q,"sha256");return c.existsSync(r)?c.readdirSync(r,{withFileTypes:!0}).filter(t=>t.isFile()).map(t=>{const s=u.join(r,t.name);return{bytes:c.statSync(s).size,digest:t.name,path:s}}):[]}function se(e,r,t){const s=[];let n=0,i=0;for(const o of e){if(r.has(o.digest))continue;let a=null;try{t(o.path)}catch(m){a=H(m)}!c.existsSync(o.path)?(n+=1,i+=o.bytes):a===null&&(a="Object still exists after removal completed"),a!==null&&s.push({error:a,path:o.path})}return{failures:s,reclaimedBytes:i,removedObjects:n,status:s.length===0?"complete":"failed"}}function Pe(e){c.rmSync(e,{recursive:!0,force:!0})}function ie(e){c.rmSync(e,{force:!0})}function Oe({currentRunId:e,decidedAt:r,garbageCollection:t,policy:s,protectedRunIds:n,removed:i,removalErrors:o}){const a=[...o.map(f=>`remove ${f.runId}: ${f.error}`),...t.failures.map(f=>`garbage collect ${f.path}: ${f.error}`)];return{currentRunId:e,decidedAt:r,garbageCollection:t,policy:s,protectedRunIds:n,removed:i,removalErrors:o,schemaVersion:de,status:a.length===0?"complete":"failed",...a.length===0?{}:{error:a.join("; ")}}}function Ce(e,r,t){if(!Te(e,r)){for(const o of t)if(e.includes(Buffer.from(o.value)))throw new Error(`Refusing to archive binary file containing sensitive environment value: ${r}`);return{buffer:e,scanned:!1,replacements:0}}const s=e.toString("utf8");let n=Y(s),i=n===s?0:1;for(const o of t){if(!n.includes(o.value))continue;const a=n.split(o.value);i+=a.length-1,n=a.join("<redacted>")}return{buffer:Buffer.from(n),scanned:!0,replacements:i}}function Ne(e){const r=[];for(const[t,s]of Object.entries(e))Re.test(t)&&typeof s=="string"&&s.length>=8&&r.push({key:t,value:s});return r}function Te(e,r){if(e.includes(0))return!1;const t=u.extname(r).toLowerCase();return![".zip",".gz",".png",".jpg",".jpeg",".webm",".pdf"].includes(t)}function Ve(e,r){const t=u.resolve(e,r);return!t.startsWith(`${u.resolve(e)}${u.sep}`)||!c.existsSync(t)||!c.statSync(t).isFile()?null:{path:X(u.relative(e,t)),bytes:c.statSync(t).size,sha256:z(t)}}function _e(e){const r=[];for(const t of[...K.map(s=>u.join(e,s)),u.join(e,"live.json")])try{c.rmSync(t,{recursive:!0,force:!0})}catch(s){r.push(`${t}: ${H(s)}`)}return r.length===0?{status:"complete"}:{error:r.join("; "),status:"failed"}}function H(e){try{return k(e)}catch{return"Unknown post-seal archive operation failure"}}
@@ -0,0 +1,9 @@
1
+ export type CiProvider = "github" | "gitlab" | "other";
2
+ export interface CiProvenance {
3
+ readonly actor: string | null;
4
+ readonly eventName: string | null;
5
+ readonly provider: CiProvider | null;
6
+ readonly runId: string | null;
7
+ readonly runUrl: string | null;
8
+ }
9
+ export declare function resolveCiProvenance(env: Readonly<NodeJS.ProcessEnv>): CiProvenance;
@@ -0,0 +1 @@
1
+ export function resolveCiProvenance(r){const n=i(r);if(n===null)return{actor:null,eventName:null,provider:null,runId:null,runUrl:null};if(n==="github"){const u=t(r,"GITHUB_RUN_ID");return{actor:t(r,"GITHUB_ACTOR"),eventName:t(r,"GITHUB_EVENT_NAME"),provider:n,runId:u,runUrl:o(r,u)}}return{actor:t(r,"GITLAB_USER_LOGIN")??t(r,"CI_COMMIT_AUTHOR"),eventName:t(r,"CI_PIPELINE_SOURCE")??t(r,"CI_EVENT_NAME"),provider:n,runId:t(r,"CI_PIPELINE_ID")??t(r,"CI_JOB_ID"),runUrl:t(r,"CI_PIPELINE_URL")??t(r,"CI_JOB_URL")}}function i(r){return I(r,"GITHUB_ACTIONS")||e(r,"GITHUB_")?"github":I(r,"GITLAB_CI")||t(r,"CI_SERVER_NAME")?.toLowerCase()==="gitlab"?"gitlab":I(r,"CI")||e(r,"CI_")?"other":null}function o(r,n){const u=t(r,"GITHUB_SERVER_URL"),l=t(r,"GITHUB_REPOSITORY");return u===null||l===null||n===null?null:`${u.replace(/\/+$/u,"")}/${l}/actions/runs/${n}`}function t(r,n){const u=r[n]?.trim();return u||null}function I(r,n){return t(r,n)!==null}function e(r,n){return Object.entries(r).some(([u,l])=>u.startsWith(n)&&!!l?.trim())}