vouchington-tooling 0.34.0 → 0.36.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 (542) hide show
  1. package/README.md +24 -221
  2. package/dist/agent-blackboard/feedback-audit-source.mjs +2 -2
  3. package/dist/agent-blackboard/feedback-canonical.mjs +1 -1
  4. package/dist/agent-blackboard/feedback-codec.mjs +3 -3
  5. package/dist/agent-blackboard/feedback-compose.mjs +5 -5
  6. package/dist/agent-blackboard/feedback-deadline.mjs +1 -1
  7. package/dist/agent-blackboard/feedback-delivery.mjs +6 -6
  8. package/dist/agent-blackboard/feedback-fields.mjs +1 -1
  9. package/dist/agent-blackboard/feedback-identity.mjs +3 -3
  10. package/dist/agent-blackboard/feedback-journal-audit.mjs +4 -4
  11. package/dist/agent-blackboard/feedback-journal-sandbox.mjs +1 -1
  12. package/dist/agent-blackboard/feedback-online-error.mjs +1 -1
  13. package/dist/agent-blackboard/feedback-online.mjs +7 -7
  14. package/dist/agent-blackboard/feedback-outbox-counts.mjs +2 -2
  15. package/dist/agent-blackboard/feedback-outbox.mjs +7 -7
  16. package/dist/agent-blackboard/index.mjs +13 -13
  17. package/dist/agent-blackboard/journal.mjs +3 -3
  18. package/dist/agent-blackboard/session-tools.mjs +4 -4
  19. package/dist/agent-blackboard/snapshot-cleanup-directory.mjs +3 -3
  20. package/dist/agent-blackboard/snapshot-cleanup-receipt.mjs +1 -1
  21. package/dist/agent-blackboard/snapshot-cleanup-resume.mjs +2 -2
  22. package/dist/agent-blackboard/snapshot-partition-cleanup.mjs +3 -3
  23. package/dist/agent-blackboard/snapshot-partition-format.mjs +3 -3
  24. package/dist/agent-blackboard/snapshot-partition-predicates.mjs +2 -2
  25. package/dist/agent-blackboard/snapshot-partition-read.mjs +2 -2
  26. package/dist/agent-blackboard/snapshot-partition-validate.mjs +2 -2
  27. package/dist/agent-blackboard/snapshot-partition-write.mjs +2 -2
  28. package/dist/agent-blackboard/snapshot-partitions.mjs +4 -4
  29. package/dist/agent-blackboard/snapshot.mjs +2 -2
  30. package/dist/agent-harness-identity/index.d.mts +1 -1
  31. package/dist/api-fixtures/fixture-contract-validation.mjs +1 -1
  32. package/dist/api-fixtures/index.mjs +3 -3
  33. package/dist/ast-grep-examples/companion-parity.mjs +1 -1
  34. package/dist/ast-grep-examples/index.mjs +1 -1
  35. package/dist/basic-auth-doc-sync/index.mjs +2 -2
  36. package/dist/basic-auth-doc-sync/runbook.mjs +4 -4
  37. package/dist/basic-auth-doc-sync/source.mjs +2 -2
  38. package/dist/browser-session-runner/attempt.mjs +5 -5
  39. package/dist/browser-session-runner/index.mjs +4 -4
  40. package/dist/browser-session-runner/output.mjs +1 -1
  41. package/dist/ci-local/index.mjs +2 -2
  42. package/dist/cli/commands/agent-blackboard-flags.mjs +1 -1
  43. package/dist/cli/commands/agent-blackboard.mjs +3 -3
  44. package/dist/cli/commands/ast-grep-examples.mjs +1 -1
  45. package/dist/cli/commands/ast-grep-pack.mjs +1 -1
  46. package/dist/cli/commands/gha-artifacts-cleanup.mjs +1 -1
  47. package/dist/cli/commands/gha-runtime-audit.mjs +1 -1
  48. package/dist/cli/commands/gha-workspace-policy.mjs +2 -2
  49. package/dist/cli/commands/http-origin.mjs +1 -1
  50. package/dist/cli/commands/link-skill.mjs +1 -1
  51. package/dist/cli/commands/mcp.mjs +2 -2
  52. package/dist/cli/commands/nuget-central-version.mjs +1 -1
  53. package/dist/cli/commands/pnpm-install.mjs +1 -1
  54. package/dist/cli/commands/prepare-vitest-reports.mjs +1 -1
  55. package/dist/cli/commands/require-up-to-date.mjs +1 -1
  56. package/dist/cli/commands/retrospective-facts.mjs +1 -1
  57. package/dist/cli/commands/retrospective-transcript.mjs +1 -1
  58. package/dist/cli/commands/runner-port-policy.mjs +1 -1
  59. package/dist/cli/commands/vitest-blob-manifest.mjs +1 -1
  60. package/dist/cli/commands/vitest-report-attempt.mjs +1 -1
  61. package/dist/cli/index.mjs +27 -27
  62. package/dist/cli/installed-version.mjs +1 -1
  63. package/dist/cli/parse-gha-runtime-audit.mjs +1 -1
  64. package/dist/cli/parse-options.mjs +2 -2
  65. package/dist/cli/parse.mjs +5 -5
  66. package/dist/compiler-build/index.mjs +3 -3
  67. package/dist/compiler-build/program.mjs +3 -3
  68. package/dist/config-inventory/collect.mjs +5 -5
  69. package/dist/config-inventory/dynamic-configs.mjs +1 -1
  70. package/dist/config-inventory/env-expression-readers.mjs +1 -1
  71. package/dist/config-inventory/env-prefix-readers.mjs +2 -2
  72. package/dist/config-inventory/env-var-accumulator.mjs +1 -1
  73. package/dist/config-inventory/env-vars.mjs +5 -5
  74. package/dist/config-inventory/index.mjs +2 -2
  75. package/dist/contract-schema/contract-schema-bounded-array.mjs +2 -2
  76. package/dist/contract-schema/contract-schema-extractor.mjs +3 -3
  77. package/dist/contract-schema/contract-schema-object-tuple.mjs +2 -2
  78. package/dist/contract-schema/contract-schema-type-extractor.mjs +5 -5
  79. package/dist/contract-schema/contract-schema-type-utils.mjs +2 -2
  80. package/dist/contract-schema/contract-schema-validator.mjs +1 -1
  81. package/dist/contract-schema/index.mjs +7 -7
  82. package/dist/contract-schema/type-query-call.mjs +3 -3
  83. package/dist/contract-schema/type-query.mjs +2 -2
  84. package/dist/contract-schema/virtual-program.mjs +1 -1
  85. package/dist/coverage-transport/control-v2-parse-object.mjs +2 -2
  86. package/dist/coverage-transport/control-v2.mjs +4 -4
  87. package/dist/coverage-transport/control.mjs +2 -2
  88. package/dist/coverage-transport/discovery.mjs +4 -4
  89. package/dist/coverage-transport/http.mjs +1 -1
  90. package/dist/coverage-transport/index.mjs +10 -10
  91. package/dist/coverage-transport/keys.mjs +1 -1
  92. package/dist/coverage-transport/lib.mjs +6 -6
  93. package/dist/coverage-transport/prefix-transfer.mjs +4 -4
  94. package/dist/coverage-transport/prefix.mjs +3 -3
  95. package/dist/coverage-transport/presign.mjs +1 -1
  96. package/dist/coverage-transport/vitest-blob-transport.mjs +2 -2
  97. package/dist/dependency-license-policy/collect.mjs +5 -5
  98. package/dist/dependency-license-policy/index.mjs +3 -3
  99. package/dist/dependency-license-policy/policy.mjs +1 -1
  100. package/dist/dependency-license-policy/workspace.mjs +1 -1
  101. package/dist/dockerfile-parse/index.mjs +2 -2
  102. package/dist/dockerfile-parse/prewarm-ports.mjs +1 -1
  103. package/dist/dockerfile-parse/runtime-cmd.mjs +2 -2
  104. package/dist/finite-enum-ripple/check.mjs +3 -3
  105. package/dist/finite-enum-ripple/compare.mjs +3 -5
  106. package/dist/finite-enum-ripple/component-paths.mjs +2 -2
  107. package/dist/finite-enum-ripple/configured-object-mutations.mjs +1 -1
  108. package/dist/finite-enum-ripple/create-page-jsx.mjs +1 -1
  109. package/dist/finite-enum-ripple/create-page-literals.mjs +4 -4
  110. package/dist/finite-enum-ripple/create-page-object-visitor.mjs +2 -2
  111. package/dist/finite-enum-ripple/create-page-properties.mjs +1 -1
  112. package/dist/finite-enum-ripple/index.mjs +1 -1
  113. package/dist/finite-enum-ripple/model.d.mts +4 -0
  114. package/dist/finite-enum-ripple/parser-support.mjs +16 -3
  115. package/dist/finite-enum-ripple/parsers.mjs +5 -3
  116. package/dist/finite-enum-ripple/structured-route-check.mjs +5 -5
  117. package/dist/finite-enum-ripple/types.mjs +3 -3
  118. package/dist/finite-enum-ripple/union-factory-check.mjs +2 -2
  119. package/dist/finite-enum-ripple/union-types.mjs +5 -5
  120. package/dist/gh-api-shell-quoting/index.mjs +2 -2
  121. package/dist/gh-api-shell-quoting/logical-line.mjs +1 -1
  122. package/dist/gh-api-shell-quoting/scan.mjs +1 -1
  123. package/dist/gh-api-shell-quoting/yaml.mjs +1 -1
  124. package/dist/gh-cli/index.mjs +4 -4
  125. package/dist/gha-artifacts-cleanup/commands.mjs +2 -2
  126. package/dist/gha-artifacts-cleanup/index.mjs +4 -4
  127. package/dist/gha-check-run/cli.mjs +2 -2
  128. package/dist/gha-check-run/index.mjs +2 -2
  129. package/dist/gha-claude-post-review/index.mjs +2 -2
  130. package/dist/gha-post-review/claude-token.d.mts +2 -2
  131. package/dist/gha-post-review/claude-token.mjs +1 -1
  132. package/dist/gha-post-review/cli.mjs +1 -1
  133. package/dist/gha-post-review/github.mjs +7 -7
  134. package/dist/gha-post-review/index.mjs +6 -6
  135. package/dist/gha-post-review/post.mjs +2 -2
  136. package/dist/gha-post-review/pull-io.mjs +1 -1
  137. package/dist/gha-post-review/token.mjs +1 -1
  138. package/dist/gha-pr-checkpoint/index.mjs +3 -3
  139. package/dist/gha-pr-checkpoint/resume.mjs +1 -1
  140. package/dist/gha-pr-checkpoint/update.mjs +1 -1
  141. package/dist/gha-review-payload/cli.mjs +2 -2
  142. package/dist/gha-review-payload/file.mjs +1 -1
  143. package/dist/gha-review-payload/index.mjs +4 -4
  144. package/dist/gha-review-payload/remap.mjs +1 -1
  145. package/dist/gha-runtime-audit/audit.mjs +4 -4
  146. package/dist/gha-runtime-audit/index.mjs +3 -3
  147. package/dist/gha-workspace-policy/docker-options.mjs +1 -1
  148. package/dist/gha-workspace-policy/docker-workspace-user.mjs +2 -2
  149. package/dist/gha-workspace-policy/index.mjs +3 -3
  150. package/dist/gha-workspace-policy/shell-tokens.mjs +1 -1
  151. package/dist/gha-workspace-policy/sparse-checkout.mjs +1 -1
  152. package/dist/github-projects/index.mjs +2 -2
  153. package/dist/github-projects/project-audit.mjs +1 -1
  154. package/dist/index.mjs +55 -55
  155. package/dist/markdown/content-facts.mjs +1 -1
  156. package/dist/markdown/document-sections.mjs +2 -2
  157. package/dist/markdown/html-blocks.mjs +1 -1
  158. package/dist/markdown/index.mjs +10 -10
  159. package/dist/markdown/sections.mjs +2 -2
  160. package/dist/markdown/tables.mjs +2 -2
  161. package/dist/markdown/tasks.mjs +1 -1
  162. package/dist/mcp-server/context.mjs +2 -2
  163. package/dist/mcp-server/dispatch.mjs +8 -8
  164. package/dist/mcp-server/git-fixture.test-helpers.mjs +1 -1
  165. package/dist/mcp-server/handlers-journal.mjs +4 -4
  166. package/dist/mcp-server/handlers-outbox.mjs +2 -2
  167. package/dist/mcp-server/handlers-session.mjs +3 -3
  168. package/dist/mcp-server/harness.test-helpers.mjs +4 -4
  169. package/dist/mcp-server/main.mjs +1 -1
  170. package/dist/mcp-server/run.mjs +3 -3
  171. package/dist/mcp-server/sdk.mjs +1 -1
  172. package/dist/mcp-server/server.mjs +2 -2
  173. package/dist/mcp-server/worktree.mjs +2 -2
  174. package/dist/nuget-central-version/cli.mjs +1 -1
  175. package/dist/openapi-document/build-openapi-catalog-sse.mjs +1 -1
  176. package/dist/openapi-document/build-openapi-document.mjs +8 -8
  177. package/dist/openapi-document/build-openapi-request.mjs +1 -1
  178. package/dist/openapi-document/build-openapi-response.mjs +3 -3
  179. package/dist/openapi-document/build-openapi-sse-events.mjs +1 -1
  180. package/dist/openapi-document/component-registry.mjs +1 -1
  181. package/dist/openapi-document/contract-schema-intersection-merge.mjs +1 -1
  182. package/dist/openapi-document/contract-schema-to-openapi.mjs +1 -1
  183. package/dist/openapi-document/index.mjs +12 -12
  184. package/dist/openapi-document/openapi-route-helpers.mjs +1 -1
  185. package/dist/pg-schema-snapshot/build-snapshot.mjs +3 -3
  186. package/dist/pg-schema-snapshot/catalog-objects.mjs +1 -1
  187. package/dist/pg-schema-snapshot/catalog-queries.mjs +4 -4
  188. package/dist/pg-schema-snapshot/catalog-table-constraints.mjs +1 -1
  189. package/dist/pg-schema-snapshot/catalog-table-indexes.mjs +1 -1
  190. package/dist/pg-schema-snapshot/catalog-tables.mjs +1 -1
  191. package/dist/pg-schema-snapshot/generate.mjs +5 -5
  192. package/dist/pg-schema-snapshot/index.mjs +6 -6
  193. package/dist/pg-schema-snapshot/markdown-files.mjs +1 -1
  194. package/dist/pg-schema-snapshot/render-markdown.mjs +1 -1
  195. package/dist/pg-schema-snapshot/table-snapshot-constraints.mjs +1 -1
  196. package/dist/pg-schema-snapshot/table-snapshot.mjs +3 -3
  197. package/dist/pnpm-deploy/index.mjs +3 -3
  198. package/dist/pnpm-deploy/restore.mjs +1 -1
  199. package/dist/pnpm-install/exec.mjs +1 -1
  200. package/dist/pnpm-install/index.mjs +8 -8
  201. package/dist/pnpm-install/install-operations.mjs +6 -6
  202. package/dist/pnpm-install/metadata-legacy.mjs +1 -1
  203. package/dist/pnpm-install/metadata.d.mts +1 -1
  204. package/dist/pnpm-install/metadata.mjs +2 -2
  205. package/dist/pnpm-install/native-health.mjs +2 -2
  206. package/dist/pnpm-install/pnpm-install-fixture.test-helpers.mjs +2 -2
  207. package/dist/pnpm-install/runner.mjs +7 -7
  208. package/dist/post-publication-inventory/index.d.mts +6 -0
  209. package/dist/post-publication-inventory/index.mjs +6 -2
  210. package/dist/post-publication-inventory/readers/compose-appends.d.mts +7 -0
  211. package/dist/post-publication-inventory/readers/compose-appends.mjs +38 -0
  212. package/dist/post-publication-inventory/readers/composes.d.mts +2 -0
  213. package/dist/post-publication-inventory/readers/composes.mjs +79 -0
  214. package/dist/post-publication-inventory/readers/composition.d.mts +2 -0
  215. package/dist/post-publication-inventory/readers/composition.mjs +62 -0
  216. package/dist/post-publication-inventory/readers/public-boundary-ast.d.mts +5 -0
  217. package/dist/post-publication-inventory/readers/public-boundary-ast.mjs +33 -0
  218. package/dist/post-publication-inventory/readers/public-boundary-consumed.d.mts +3 -0
  219. package/dist/post-publication-inventory/readers/public-boundary-consumed.mjs +39 -0
  220. package/dist/post-publication-inventory/readers/public-boundary-dataflow.d.mts +3 -0
  221. package/dist/post-publication-inventory/readers/public-boundary-dataflow.mjs +61 -0
  222. package/dist/post-publication-inventory/readers/public-boundary-then.d.mts +9 -0
  223. package/dist/post-publication-inventory/readers/public-boundary-then.mjs +31 -0
  224. package/dist/post-publication-inventory/readers/public-boundary.d.mts +3 -0
  225. package/dist/post-publication-inventory/readers/public-boundary.mjs +71 -0
  226. package/dist/post-publication-inventory/readers/public-view-ast.d.mts +6 -0
  227. package/dist/post-publication-inventory/readers/public-view-ast.mjs +67 -0
  228. package/dist/post-publication-inventory/readers/public-view-options.d.mts +8 -0
  229. package/dist/post-publication-inventory/readers/public-view-protection.d.mts +2 -0
  230. package/dist/post-publication-inventory/readers/public-view-protection.mjs +83 -0
  231. package/dist/post-publication-inventory/readers/public-view.d.mts +2 -0
  232. package/dist/post-publication-inventory/readers/public-view.mjs +117 -0
  233. package/dist/post-publication-inventory/readers/source-ast.d.mts +30 -0
  234. package/dist/post-publication-inventory/readers/source-ast.mjs +52 -0
  235. package/dist/post-publication-inventory/readers/source-executors.d.mts +4 -0
  236. package/dist/post-publication-inventory/readers/source-executors.mjs +38 -0
  237. package/dist/post-publication-inventory/readers/source-helpers.d.mts +16 -0
  238. package/dist/post-publication-inventory/readers/source-helpers.mjs +72 -0
  239. package/dist/post-publication-inventory/readers/source-options.d.mts +8 -0
  240. package/dist/post-publication-inventory/readers/source-sql.d.mts +3 -0
  241. package/dist/post-publication-inventory/readers/source-sql.mjs +17 -0
  242. package/dist/post-publication-inventory/readers/sql-executors.mjs +2 -2
  243. package/dist/post-publication-inventory/readers/sql-source.mjs +3 -3
  244. package/dist/post-publication-inventory/readers/sql-template.mjs +1 -1
  245. package/dist/post-publication-inventory/writers/source.mjs +1 -1
  246. package/dist/retrospective-facts/coverage.mjs +1 -1
  247. package/dist/retrospective-facts/foreign.mjs +3 -3
  248. package/dist/retrospective-facts/index.mjs +4 -4
  249. package/dist/retrospective-facts/local.mjs +4 -4
  250. package/dist/retrospective-transcript/claude-blocks.mjs +1 -1
  251. package/dist/retrospective-transcript/claude.mjs +2 -2
  252. package/dist/retrospective-transcript/codex-messages.mjs +1 -1
  253. package/dist/retrospective-transcript/codex-payload.mjs +2 -2
  254. package/dist/retrospective-transcript/codex-records.mjs +3 -3
  255. package/dist/retrospective-transcript/codex-segment.mjs +1 -1
  256. package/dist/retrospective-transcript/codex.mjs +2 -2
  257. package/dist/retrospective-transcript/index.mjs +9 -9
  258. package/dist/retrospective-transcript/resolve-transcript-file.mjs +2 -2
  259. package/dist/scc-complexity/baseline.mjs +2 -2
  260. package/dist/scc-complexity/index.mjs +8 -8
  261. package/dist/scc-complexity/parser.mjs +1 -1
  262. package/dist/scc-complexity/scope-config.mjs +1 -1
  263. package/dist/session-friction/audit-block.mjs +1 -1
  264. package/dist/session-friction/ci-failures.mjs +2 -2
  265. package/dist/session-friction/classify.mjs +2 -2
  266. package/dist/session-friction/coverage-ledger.mjs +1 -1
  267. package/dist/session-friction/index.mjs +5 -5
  268. package/dist/session-friction/log-file.mjs +2 -2
  269. package/dist/session-friction/log.mjs +7 -7
  270. package/dist/session-friction/normalize.mjs +1 -1
  271. package/dist/session-friction/report.mjs +5 -5
  272. package/dist/session-friction/sandbox.mjs +1 -1
  273. package/dist/session-friction/session-id.mjs +1 -1
  274. package/dist/shared-context/index.mjs +1 -1
  275. package/dist/skill-discovery/index.mjs +3 -3
  276. package/dist/sql-ast/add-column.mjs +1 -1
  277. package/dist/sql-ast/constraint-do-block.mjs +2 -2
  278. package/dist/sql-ast/constraint-shared.mjs +1 -1
  279. package/dist/sql-ast/constraint.mjs +4 -4
  280. package/dist/sql-ast/create-table.mjs +2 -2
  281. package/dist/sql-ast/drop-index.mjs +2 -2
  282. package/dist/sql-ast/implicit-indexes.mjs +1 -1
  283. package/dist/sql-ast/index-metadata.mjs +3 -3
  284. package/dist/sql-ast/index.mjs +8 -8
  285. package/dist/sql-scanner/comments.mjs +1 -1
  286. package/dist/sql-scanner/index.mjs +3 -3
  287. package/dist/sql-scanner/literals.mjs +1 -1
  288. package/dist/swift-semantic-equal/cli.mjs +1 -1
  289. package/dist/swift-semantic-equal/index.mjs +1 -1
  290. package/dist/transient-retry/index.mjs +2 -2
  291. package/dist/vitest-blob-manifest/cli.mjs +2 -2
  292. package/dist/vitest-blob-manifest/index.mjs +4 -4
  293. package/dist/vitest-blob-manifest/report-attempt-cli.mjs +2 -2
  294. package/dist/vitest-blob-manifest/report-attempt.mjs +1 -1
  295. package/dist/vitest-blob-manifest/reports-cli.mjs +3 -3
  296. package/dist/vitest-blob-manifest/reports-source.mjs +2 -2
  297. package/dist/vitest-blob-manifest/reports.mjs +2 -2
  298. package/dist/vitest-diagnostics/index.mjs +8 -8
  299. package/dist/vitest-diagnostics/vitest-fork-exit-records.mjs +1 -1
  300. package/dist/vitest-diagnostics/vitest-fork-exit-sentinel.mjs +2 -2
  301. package/dist/vitest-diagnostics/vitest-fork-leak-detection.mjs +2 -2
  302. package/dist/vitest-diagnostics/vitest-worker-exit-diagnostics-reporter.mjs +2 -2
  303. package/dist/workflow-policy/condition-entailment.mjs +1 -1
  304. package/dist/workflow-policy/index.d.mts +1 -3
  305. package/dist/workflow-policy/index.mjs +4 -6
  306. package/dist/workflow-policy/permission-inheritance.mjs +1 -1
  307. package/dist/workflow-policy/permission-mismatches.mjs +2 -2
  308. package/dist/workflow-policy/secret-readiness.mjs +2 -2
  309. package/dist/workflow-policy/types.d.mts +2 -28
  310. package/dist/workspace-gates/first-party-graph.mjs +2 -2
  311. package/dist/workspace-gates/index.mjs +1 -1
  312. package/dist/workspace-gates/manifest-version-assertions.mjs +2 -2
  313. package/dist/workspace-gates/manifest-version-parser.mjs +1 -1
  314. package/dist/workspace-gates/options.mjs +1 -1
  315. package/dist/workspace-gates/policy.mjs +7 -7
  316. package/dist/workspace-gates/test-helpers.d.mts +2 -2
  317. package/docs/workflow-and-compiler.md +7 -16
  318. package/package.json +3 -6
  319. package/dist/api-contract-discovery/header-contract-parser.d.mts +0 -3
  320. package/dist/api-contract-discovery/header-contract-parser.mjs +0 -93
  321. package/dist/api-contract-discovery/header-contract-registry.d.mts +0 -3
  322. package/dist/api-contract-discovery/header-contract-registry.mjs +0 -40
  323. package/dist/api-contract-discovery/header-contract-types.d.mts +0 -19
  324. package/dist/api-contract-discovery/index.d.mts +0 -34
  325. package/dist/api-contract-discovery/index.mjs +0 -27
  326. package/dist/api-contract-discovery/protocol-analysis-cache.d.mts +0 -21
  327. package/dist/api-contract-discovery/protocol-analysis-cache.mjs +0 -7
  328. package/dist/api-contract-discovery/protocol-body-status.d.mts +0 -2
  329. package/dist/api-contract-discovery/protocol-body-status.mjs +0 -4
  330. package/dist/api-contract-discovery/protocol-callback-argument-bindings.d.mts +0 -7
  331. package/dist/api-contract-discovery/protocol-callback-argument-bindings.mjs +0 -33
  332. package/dist/api-contract-discovery/protocol-callback-invocation.d.mts +0 -6
  333. package/dist/api-contract-discovery/protocol-callback-invocation.mjs +0 -111
  334. package/dist/api-contract-discovery/protocol-callback-mutations.d.mts +0 -5
  335. package/dist/api-contract-discovery/protocol-callback-mutations.mjs +0 -42
  336. package/dist/api-contract-discovery/protocol-callback-registration.d.mts +0 -3
  337. package/dist/api-contract-discovery/protocol-callback-registration.mjs +0 -27
  338. package/dist/api-contract-discovery/protocol-callback-values.d.mts +0 -18
  339. package/dist/api-contract-discovery/protocol-callback-values.mjs +0 -114
  340. package/dist/api-contract-discovery/protocol-context-alias.d.mts +0 -3
  341. package/dist/api-contract-discovery/protocol-context-alias.mjs +0 -20
  342. package/dist/api-contract-discovery/protocol-contract-extraction.d.mts +0 -9
  343. package/dist/api-contract-discovery/protocol-contract-extraction.mjs +0 -87
  344. package/dist/api-contract-discovery/protocol-contract-keys.d.mts +0 -1
  345. package/dist/api-contract-discovery/protocol-contract-keys.mjs +0 -8
  346. package/dist/api-contract-discovery/protocol-contract-registry.d.mts +0 -5
  347. package/dist/api-contract-discovery/protocol-contract-registry.mjs +0 -133
  348. package/dist/api-contract-discovery/protocol-executable-path.d.mts +0 -3
  349. package/dist/api-contract-discovery/protocol-executable-path.mjs +0 -64
  350. package/dist/api-contract-discovery/protocol-execution-path.d.mts +0 -4
  351. package/dist/api-contract-discovery/protocol-execution-path.mjs +0 -16
  352. package/dist/api-contract-discovery/protocol-http-association.d.mts +0 -7
  353. package/dist/api-contract-discovery/protocol-http-association.mjs +0 -108
  354. package/dist/api-contract-discovery/protocol-http-body-kinds.d.mts +0 -3
  355. package/dist/api-contract-discovery/protocol-http-body-kinds.mjs +0 -19
  356. package/dist/api-contract-discovery/protocol-http-context-callers.d.mts +0 -7
  357. package/dist/api-contract-discovery/protocol-http-context-callers.mjs +0 -40
  358. package/dist/api-contract-discovery/protocol-http-context-escapes.d.mts +0 -3
  359. package/dist/api-contract-discovery/protocol-http-context-escapes.mjs +0 -95
  360. package/dist/api-contract-discovery/protocol-http-context.d.mts +0 -8
  361. package/dist/api-contract-discovery/protocol-http-context.mjs +0 -85
  362. package/dist/api-contract-discovery/protocol-http-emission.d.mts +0 -3
  363. package/dist/api-contract-discovery/protocol-http-emission.mjs +0 -76
  364. package/dist/api-contract-discovery/protocol-http-implicit-taint.d.mts +0 -7
  365. package/dist/api-contract-discovery/protocol-http-implicit-taint.mjs +0 -26
  366. package/dist/api-contract-discovery/protocol-http-method-access.d.mts +0 -9
  367. package/dist/api-contract-discovery/protocol-http-method-access.mjs +0 -34
  368. package/dist/api-contract-discovery/protocol-http-method-mutations.d.mts +0 -3
  369. package/dist/api-contract-discovery/protocol-http-method-mutations.mjs +0 -31
  370. package/dist/api-contract-discovery/protocol-http-reflect.d.mts +0 -5
  371. package/dist/api-contract-discovery/protocol-http-reflect.mjs +0 -45
  372. package/dist/api-contract-discovery/protocol-http-registration.d.mts +0 -12
  373. package/dist/api-contract-discovery/protocol-http-registration.mjs +0 -53
  374. package/dist/api-contract-discovery/protocol-http-response-mutations.d.mts +0 -3
  375. package/dist/api-contract-discovery/protocol-http-response-mutations.mjs +0 -31
  376. package/dist/api-contract-discovery/protocol-marker-analysis.d.mts +0 -7
  377. package/dist/api-contract-discovery/protocol-marker-analysis.mjs +0 -50
  378. package/dist/api-contract-discovery/protocol-opaque-callback.d.mts +0 -3
  379. package/dist/api-contract-discovery/protocol-opaque-callback.mjs +0 -107
  380. package/dist/api-contract-discovery/protocol-platform-callbacks.d.mts +0 -7
  381. package/dist/api-contract-discovery/protocol-platform-callbacks.mjs +0 -76
  382. package/dist/api-contract-discovery/protocol-platform-mutation-targets.d.mts +0 -5
  383. package/dist/api-contract-discovery/protocol-platform-mutation-targets.mjs +0 -89
  384. package/dist/api-contract-discovery/protocol-platform-writes.d.mts +0 -3
  385. package/dist/api-contract-discovery/protocol-platform-writes.mjs +0 -92
  386. package/dist/api-contract-discovery/protocol-requested-keys.d.mts +0 -5
  387. package/dist/api-contract-discovery/protocol-requested-keys.mjs +0 -45
  388. package/dist/api-contract-discovery/protocol-sse-callers.d.mts +0 -7
  389. package/dist/api-contract-discovery/protocol-sse-callers.mjs +0 -67
  390. package/dist/api-contract-discovery/protocol-sse-emission.d.mts +0 -11
  391. package/dist/api-contract-discovery/protocol-sse-emission.mjs +0 -61
  392. package/dist/api-contract-discovery/protocol-sse-feasible-status.d.mts +0 -3
  393. package/dist/api-contract-discovery/protocol-sse-feasible-status.mjs +0 -24
  394. package/dist/api-contract-discovery/protocol-sse-raw-writes.d.mts +0 -9
  395. package/dist/api-contract-discovery/protocol-sse-raw-writes.mjs +0 -99
  396. package/dist/api-contract-discovery/protocol-sse-status.d.mts +0 -3
  397. package/dist/api-contract-discovery/protocol-sse-status.mjs +0 -84
  398. package/dist/api-contract-discovery/protocol-sse-write-access.d.mts +0 -9
  399. package/dist/api-contract-discovery/protocol-sse-write-access.mjs +0 -42
  400. package/dist/api-contract-discovery/protocol-sse-write-helpers.d.mts +0 -7
  401. package/dist/api-contract-discovery/protocol-sse-write-helpers.mjs +0 -82
  402. package/dist/api-contract-discovery/protocol-sse-write-mutations.d.mts +0 -9
  403. package/dist/api-contract-discovery/protocol-sse-write-mutations.mjs +0 -42
  404. package/dist/api-contract-discovery/protocol-sse-write-resolution.d.mts +0 -14
  405. package/dist/api-contract-discovery/protocol-sse-write-resolution.mjs +0 -79
  406. package/dist/api-contract-discovery/protocol-status-dominance.d.mts +0 -5
  407. package/dist/api-contract-discovery/protocol-status-dominance.mjs +0 -35
  408. package/dist/api-contract-discovery/protocol-write-receiver.d.mts +0 -9
  409. package/dist/api-contract-discovery/protocol-write-receiver.mjs +0 -79
  410. package/dist/api-contract-discovery/query-contract-extraction.d.mts +0 -3
  411. package/dist/api-contract-discovery/query-contract-extraction.mjs +0 -82
  412. package/dist/api-contract-discovery/query-contract-literals.d.mts +0 -13
  413. package/dist/api-contract-discovery/query-contract-literals.mjs +0 -83
  414. package/dist/api-contract-discovery/query-contract-registry.d.mts +0 -3
  415. package/dist/api-contract-discovery/query-contract-registry.mjs +0 -70
  416. package/dist/api-contract-discovery/query-contract-types.d.mts +0 -8
  417. package/dist/api-contract-discovery/registered-route-binding-writes.d.mts +0 -4
  418. package/dist/api-contract-discovery/registered-route-binding-writes.mjs +0 -47
  419. package/dist/api-contract-discovery/registered-route-catalog.d.mts +0 -10
  420. package/dist/api-contract-discovery/registered-route-catalog.mjs +0 -85
  421. package/dist/api-contract-discovery/registered-route-factory-returns.d.mts +0 -3
  422. package/dist/api-contract-discovery/registered-route-factory-returns.mjs +0 -29
  423. package/dist/api-contract-discovery/registered-route-handler-analysis.d.mts +0 -12
  424. package/dist/api-contract-discovery/registered-route-handler-analysis.mjs +0 -119
  425. package/dist/api-contract-discovery/registered-route-handler-helpers.d.mts +0 -3
  426. package/dist/api-contract-discovery/registered-route-handler-helpers.mjs +0 -16
  427. package/dist/api-contract-discovery/registered-route-runtime-parameters.d.mts +0 -3
  428. package/dist/api-contract-discovery/registered-route-runtime-parameters.mjs +0 -5
  429. package/dist/api-contract-discovery/registered-route-terminal-error.d.mts +0 -3
  430. package/dist/api-contract-discovery/registered-route-terminal-error.mjs +0 -98
  431. package/dist/api-contract-discovery/request-contract-implicit.d.mts +0 -17
  432. package/dist/api-contract-discovery/request-contract-implicit.mjs +0 -73
  433. package/dist/api-contract-discovery/request-contract-lenient.d.mts +0 -28
  434. package/dist/api-contract-discovery/request-contract-lenient.mjs +0 -59
  435. package/dist/api-contract-discovery/request-contract-registry.d.mts +0 -14
  436. package/dist/api-contract-discovery/request-contract-registry.mjs +0 -63
  437. package/dist/api-contract-discovery/request-contract-route-analysis.d.mts +0 -25
  438. package/dist/api-contract-discovery/request-contract-route-analysis.mjs +0 -68
  439. package/dist/api-contract-discovery/request-contract-types.d.mts +0 -12
  440. package/dist/api-contract-discovery/request-contract-types.mjs +0 -1
  441. package/dist/api-contract-discovery/request-validation-callbacks.d.mts +0 -9
  442. package/dist/api-contract-discovery/request-validation-callbacks.mjs +0 -27
  443. package/dist/api-contract-discovery/request-validation-checker.d.mts +0 -7
  444. package/dist/api-contract-discovery/request-validation-checker.mjs +0 -25
  445. package/dist/api-contract-discovery/request-validation-conditional.d.mts +0 -6
  446. package/dist/api-contract-discovery/request-validation-conditional.mjs +0 -31
  447. package/dist/api-contract-discovery/request-validation-factory-calls.d.mts +0 -11
  448. package/dist/api-contract-discovery/request-validation-factory-calls.mjs +0 -23
  449. package/dist/api-contract-discovery/request-validation-facts.d.mts +0 -16
  450. package/dist/api-contract-discovery/request-validation-facts.mjs +0 -64
  451. package/dist/api-contract-discovery/request-validation-follow.d.mts +0 -24
  452. package/dist/api-contract-discovery/request-validation-follow.mjs +0 -38
  453. package/dist/api-contract-discovery/request-validation-handler-state.d.mts +0 -8
  454. package/dist/api-contract-discovery/request-validation-handler-state.mjs +0 -35
  455. package/dist/api-contract-discovery/request-validation-input.d.mts +0 -12
  456. package/dist/api-contract-discovery/request-validation-input.mjs +0 -43
  457. package/dist/api-contract-discovery/request-validation-keys.d.mts +0 -25
  458. package/dist/api-contract-discovery/request-validation-keys.mjs +0 -119
  459. package/dist/api-contract-discovery/request-validation-match.d.mts +0 -11
  460. package/dist/api-contract-discovery/request-validation-match.mjs +0 -47
  461. package/dist/api-contract-discovery/request-validation-mutation.d.mts +0 -7
  462. package/dist/api-contract-discovery/request-validation-mutation.mjs +0 -80
  463. package/dist/api-contract-discovery/request-validation-origin.d.mts +0 -20
  464. package/dist/api-contract-discovery/request-validation-origin.mjs +0 -71
  465. package/dist/api-contract-discovery/request-validation-reads.d.mts +0 -13
  466. package/dist/api-contract-discovery/request-validation-reads.mjs +0 -88
  467. package/dist/api-contract-discovery/request-validation-registration.d.mts +0 -9
  468. package/dist/api-contract-discovery/request-validation-registration.mjs +0 -32
  469. package/dist/api-contract-discovery/request-validation-report.d.mts +0 -3
  470. package/dist/api-contract-discovery/request-validation-report.mjs +0 -21
  471. package/dist/api-contract-discovery/request-validation-request-origin.d.mts +0 -5
  472. package/dist/api-contract-discovery/request-validation-request-origin.mjs +0 -13
  473. package/dist/api-contract-discovery/request-validation-select.d.mts +0 -9
  474. package/dist/api-contract-discovery/request-validation-select.mjs +0 -36
  475. package/dist/api-contract-discovery/request-validation-sites.d.mts +0 -9
  476. package/dist/api-contract-discovery/request-validation-sites.mjs +0 -77
  477. package/dist/api-contract-discovery/request-validation-state-key.d.mts +0 -13
  478. package/dist/api-contract-discovery/request-validation-state-key.mjs +0 -30
  479. package/dist/api-contract-discovery/request-validation-trace-helpers.d.mts +0 -14
  480. package/dist/api-contract-discovery/request-validation-trace-helpers.mjs +0 -80
  481. package/dist/api-contract-discovery/request-validation-trace-select.d.mts +0 -23
  482. package/dist/api-contract-discovery/request-validation-trace-select.mjs +0 -45
  483. package/dist/api-contract-discovery/request-validation-trace.d.mts +0 -8
  484. package/dist/api-contract-discovery/request-validation-trace.mjs +0 -130
  485. package/dist/api-contract-discovery/request-validation-types.d.mts +0 -84
  486. package/dist/api-contract-discovery/request-validation-types.mjs +0 -1
  487. package/dist/api-contract-discovery/request-validation-walker.d.mts +0 -26
  488. package/dist/api-contract-discovery/request-validation-walker.mjs +0 -143
  489. package/dist/api-contract-discovery/request-validation.test-helpers.d.mts +0 -39
  490. package/dist/api-contract-discovery/request-validation.test-helpers.mjs +0 -108
  491. package/dist/api-contract-discovery/response-contract-attribution-facts.d.mts +0 -2
  492. package/dist/api-contract-discovery/response-contract-attribution-facts.mjs +0 -18
  493. package/dist/api-contract-discovery/response-contract-attribution.d.mts +0 -3
  494. package/dist/api-contract-discovery/response-contract-attribution.mjs +0 -23
  495. package/dist/api-contract-discovery/response-contract-call-classification.d.mts +0 -3
  496. package/dist/api-contract-discovery/response-contract-call-classification.mjs +0 -37
  497. package/dist/api-contract-discovery/response-contract-ctx-analysis.d.mts +0 -7
  498. package/dist/api-contract-discovery/response-contract-ctx-analysis.mjs +0 -28
  499. package/dist/api-contract-discovery/response-contract-error-branch.d.mts +0 -15
  500. package/dist/api-contract-discovery/response-contract-error-branch.mjs +0 -150
  501. package/dist/api-contract-discovery/response-contract-handler-bindings.d.mts +0 -3
  502. package/dist/api-contract-discovery/response-contract-handler-bindings.mjs +0 -126
  503. package/dist/api-contract-discovery/response-contract-handler-calls.d.mts +0 -3
  504. package/dist/api-contract-discovery/response-contract-handler-calls.mjs +0 -81
  505. package/dist/api-contract-discovery/response-contract-implicit-sources.test-helpers.d.mts +0 -145
  506. package/dist/api-contract-discovery/response-contract-implicit-sources.test-helpers.mjs +0 -145
  507. package/dist/api-contract-discovery/response-contract-implicit-variants.d.mts +0 -2
  508. package/dist/api-contract-discovery/response-contract-implicit-variants.mjs +0 -6
  509. package/dist/api-contract-discovery/response-contract-implicit.d.mts +0 -6
  510. package/dist/api-contract-discovery/response-contract-implicit.mjs +0 -120
  511. package/dist/api-contract-discovery/response-contract-lenient.d.mts +0 -41
  512. package/dist/api-contract-discovery/response-contract-lenient.mjs +0 -52
  513. package/dist/api-contract-discovery/response-contract-media.d.mts +0 -3
  514. package/dist/api-contract-discovery/response-contract-media.mjs +0 -46
  515. package/dist/api-contract-discovery/response-contract-object-symbols.d.mts +0 -3
  516. package/dist/api-contract-discovery/response-contract-object-symbols.mjs +0 -80
  517. package/dist/api-contract-discovery/response-contract-property-mutations.d.mts +0 -5
  518. package/dist/api-contract-discovery/response-contract-property-mutations.mjs +0 -84
  519. package/dist/api-contract-discovery/response-contract-registration.d.mts +0 -11
  520. package/dist/api-contract-discovery/response-contract-registration.mjs +0 -65
  521. package/dist/api-contract-discovery/response-contract-registry.d.mts +0 -7
  522. package/dist/api-contract-discovery/response-contract-registry.mjs +0 -124
  523. package/dist/api-contract-discovery/response-contract-route-analysis.d.mts +0 -12
  524. package/dist/api-contract-discovery/response-contract-route-analysis.mjs +0 -65
  525. package/dist/api-contract-discovery/response-contract-route-syntax.d.mts +0 -7
  526. package/dist/api-contract-discovery/response-contract-route-syntax.mjs +0 -41
  527. package/dist/api-contract-discovery/response-contract-status.d.mts +0 -27
  528. package/dist/api-contract-discovery/response-contract-status.mjs +0 -82
  529. package/dist/api-contract-discovery/response-contract-symbols.d.mts +0 -5
  530. package/dist/api-contract-discovery/response-contract-symbols.mjs +0 -82
  531. package/dist/api-contract-discovery/response-contract-types.d.mts +0 -23
  532. package/dist/api-contract-discovery/response-contract-types.mjs +0 -1
  533. package/dist/api-contract-discovery/test-setup.test-helpers.d.mts +0 -3
  534. package/dist/api-contract-discovery/test-setup.test-helpers.mjs +0 -2
  535. package/dist/workflow-policy/concurrency-scope.d.mts +0 -4
  536. package/dist/workflow-policy/concurrency-scope.mjs +0 -66
  537. package/dist/workflow-policy/concurrency.d.mts +0 -10
  538. package/dist/workflow-policy/concurrency.mjs +0 -77
  539. package/dist/workflow-policy/graph.d.mts +0 -2
  540. package/dist/workflow-policy/graph.mjs +0 -138
  541. /package/dist/{api-contract-discovery/header-contract-types.mjs → post-publication-inventory/readers/public-view-options.mjs} +0 -0
  542. /package/dist/{api-contract-discovery/query-contract-types.mjs → post-publication-inventory/readers/source-options.mjs} +0 -0
@@ -1,41 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mjs';
2
- export const HTTP_METHODS = new Set(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']);
3
- export function isInlineRouteHandler(node) {
4
- if ((!ts.isArrowFunction(node) && !ts.isFunctionExpression(node)) ||
5
- !ts.isCallExpression(node.parent))
6
- return false;
7
- const method = propertyName(node.parent.expression)?.toUpperCase();
8
- return (!!method && HTTP_METHODS.has(method) && !!routeTemplateFromExpression(node.parent.expression));
9
- }
10
- export function routeTemplateFromExpression(expression) {
11
- if (!ts.isPropertyAccessExpression(expression))
12
- return undefined;
13
- return findRouteCall(expression.expression);
14
- }
15
- function findRouteCall(expression) {
16
- if (!ts.isCallExpression(expression))
17
- return undefined;
18
- if (!ts.isPropertyAccessExpression(expression.expression))
19
- return undefined;
20
- if (expression.expression.name.text === 'route') {
21
- const route = expression.arguments[0];
22
- return route && ts.isStringLiteral(route) ? route.text : undefined;
23
- }
24
- return findRouteCall(expression.expression.expression);
25
- }
26
- export function propertyName(expression) {
27
- return ts.isPropertyAccessExpression(expression) ? expression.name.text : undefined;
28
- }
29
- export function unwrapTransparentExpression(expression) {
30
- while (ts.isParenthesizedExpression(expression) ||
31
- ts.isAsExpression(expression) ||
32
- ts.isTypeAssertionExpression(expression) ||
33
- ts.isSatisfiesExpression(expression) ||
34
- ts.isNonNullExpression(expression))
35
- expression = expression.expression;
36
- return expression;
37
- }
38
- export function visit(node, callback) {
39
- callback(node);
40
- node.forEachChild((child) => visit(child, callback));
41
- }
@@ -1,27 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mts';
2
- import type { BackendResponseContract } from './response-contract-types.mts';
3
- export declare function responseStatusCodesForContract(contract: BackendResponseContract): number[];
4
- /**
5
- * Maps `METHOD:/route` to the non-error static `ctx.setStatus(NNN)` literal(s) found for that
6
- * route binding: a plain literal contributes one status; `ctx.setStatus(cond ? A : B)` with both
7
- * branches numeric contributes both (the doc can't know which branch fires at request time, so
8
- * both are valid statuses for the operation). Statuses >= 400 are dropped per-branch: they mark
9
- * hand-rolled error branches (the shared `default` -> `components/responses/Error` already
10
- * documents error responses), and capturing them here would misattribute an error status to the
11
- * whole operation. A route absent from the map never sets a non-error status explicitly (callers
12
- * fall back to 200, or 204 when the response schema's root is `null`).
13
- */
14
- /**
15
- * Resolves the status documented for one specific `apiResponse`/`apiNoContent` marker call: the
16
- * nearest preceding sibling `ctx.setStatus(NNN)` literal, walking outward through enclosing
17
- * blocks (mirroring `response-contract-implicit.mts`'s `precededByErrorStatus` walk). Unlike
18
- * `collectRouteStatusCodes`, this has no `>=400` filter: an explicit `#variant` marker is a
19
- * deliberate author opt-in to document that exact status (e.g. 422 for a `#validation` variant),
20
- * and the route-wide map (keyed only on `method:routeTemplate`) can't tell two markers in the
21
- * same route apart when they're preceded by different statuses.
22
- */
23
- export declare function resolveEmissionStatus(call: ts.CallExpression | ts.NewExpression, matchesContext?: (expression: ts.Expression) => boolean): {
24
- statusCodes?: readonly [number, ...number[]];
25
- statusKnowledge: 'default' | 'explicit' | 'unknown';
26
- unavailableReason?: string;
27
- };
@@ -1,82 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mjs';
2
- import { isContextMethod } from './response-contract-route-analysis.mjs';
3
- export function responseStatusCodesForContract(contract) {
4
- if (contract.statusKnowledge === 'unknown')
5
- return [];
6
- if (contract.statusCodes)
7
- return [...new Set(contract.statusCodes)].toSorted((a, b) => a - b);
8
- const bodyKind = contract.bodyKind ?? (contract.schema.root.type === 'null' ? 'none' : 'content');
9
- return [bodyKind === 'none' ? 204 : 200];
10
- }
11
- /**
12
- * Maps `METHOD:/route` to the non-error static `ctx.setStatus(NNN)` literal(s) found for that
13
- * route binding: a plain literal contributes one status; `ctx.setStatus(cond ? A : B)` with both
14
- * branches numeric contributes both (the doc can't know which branch fires at request time, so
15
- * both are valid statuses for the operation). Statuses >= 400 are dropped per-branch: they mark
16
- * hand-rolled error branches (the shared `default` -> `components/responses/Error` already
17
- * documents error responses), and capturing them here would misattribute an error status to the
18
- * whole operation. A route absent from the map never sets a non-error status explicitly (callers
19
- * fall back to 200, or 204 when the response schema's root is `null`).
20
- */
21
- /**
22
- * Resolves the status documented for one specific `apiResponse`/`apiNoContent` marker call: the
23
- * nearest preceding sibling `ctx.setStatus(NNN)` literal, walking outward through enclosing
24
- * blocks (mirroring `response-contract-implicit.mts`'s `precededByErrorStatus` walk). Unlike
25
- * `collectRouteStatusCodes`, this has no `>=400` filter: an explicit `#variant` marker is a
26
- * deliberate author opt-in to document that exact status (e.g. 422 for a `#validation` variant),
27
- * and the route-wide map (keyed only on `method:routeTemplate`) can't tell two markers in the
28
- * same route apart when they're preceded by different statuses.
29
- */
30
- export function resolveEmissionStatus(call, matchesContext = (expression) => isContextMethod(expression, 'setStatus')) {
31
- if (ts.isCallExpression(call) && matchesContext(call.expression))
32
- return statusArgument(call.arguments[0]);
33
- let statement = call;
34
- while (!ts.isStatement(statement))
35
- statement = statement.parent;
36
- return precedingStatus(statement, matchesContext);
37
- }
38
- function precedingStatus(statement, matchesContext) {
39
- const block = statement.parent;
40
- if (!ts.isBlock(block))
41
- return { statusKnowledge: 'default' };
42
- const index = block.statements.indexOf(statement);
43
- for (let i = index - 1; i >= 0; i--) {
44
- const status = statusStatement(block.statements[i], matchesContext);
45
- if (status)
46
- return status;
47
- }
48
- const enclosing = block.parent;
49
- return ts.isStatement(enclosing)
50
- ? precedingStatus(enclosing, matchesContext)
51
- : { statusKnowledge: 'default' };
52
- }
53
- function statusStatement(statement, matchesContext) {
54
- if (!ts.isExpressionStatement(statement))
55
- return undefined;
56
- const expression = statement.expression;
57
- if (!ts.isCallExpression(expression) || !matchesContext(expression.expression))
58
- return undefined;
59
- return statusArgument(expression.arguments[0]);
60
- }
61
- /** A `ctx.setStatus` argument's possible numeric literal value(s): one for a bare literal, up to two (sorted ascending) for `cond ? A : B` when both branches are numeric literals. */
62
- function statusArgument(argument) {
63
- if (!argument)
64
- return {
65
- statusKnowledge: 'unknown',
66
- unavailableReason: 'ctx.setStatus has no statically known status',
67
- };
68
- if (ts.isNumericLiteral(argument))
69
- return { statusCodes: [Number(argument.text)], statusKnowledge: 'explicit' };
70
- if (ts.isConditionalExpression(argument) &&
71
- ts.isNumericLiteral(argument.whenTrue) &&
72
- ts.isNumericLiteral(argument.whenFalse)) {
73
- const values = [
74
- ...new Set([Number(argument.whenTrue.text), Number(argument.whenFalse.text)]),
75
- ].toSorted((a, b) => a - b);
76
- return { statusCodes: values, statusKnowledge: 'explicit' };
77
- }
78
- return {
79
- statusKnowledge: 'unknown',
80
- unavailableReason: 'nearest ctx.setStatus value is dynamic',
81
- };
82
- }
@@ -1,5 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mts';
2
- export declare function functionSymbol(node: ts.Node, checker: ts.TypeChecker): ts.Symbol | undefined;
3
- export declare function attributionFunctionSymbol(node: ts.Node, checker: ts.TypeChecker): ts.Symbol | undefined;
4
- export declare function resolveSymbol(symbol: ts.Symbol, checker: ts.TypeChecker): ts.Symbol;
5
- export declare function attributionSymbol(symbol: ts.Symbol, checker: ts.TypeChecker): ts.Symbol;
@@ -1,82 +0,0 @@
1
- import ts from '../contract-schema/typescript-api.mjs';
2
- export function functionSymbol(node, checker) {
3
- if (ts.isFunctionDeclaration(node) && node.name)
4
- return checker.getSymbolAtLocation(node.name);
5
- if ((ts.isArrowFunction(node) || ts.isFunctionExpression(node)) &&
6
- ts.isVariableDeclaration(node.parent) &&
7
- ts.isIdentifier(node.parent.name)) {
8
- return checker.getSymbolAtLocation(node.parent.name);
9
- }
10
- return undefined;
11
- }
12
- export function attributionFunctionSymbol(node, checker) {
13
- const existing = functionSymbol(node, checker);
14
- if (existing)
15
- return existing;
16
- if (ts.isMethodDeclaration(node) && node.name)
17
- return checker.getSymbolAtLocation(node.name);
18
- if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) {
19
- const owner = wrappedFunctionOwner(node);
20
- if (owner &&
21
- (ts.isVariableDeclaration(owner) ||
22
- ts.isPropertyAssignment(owner) ||
23
- ts.isPropertyDeclaration(owner))) {
24
- return checker.getSymbolAtLocation(owner.name);
25
- }
26
- }
27
- if (ts.isFunctionDeclaration(node) &&
28
- !node.name &&
29
- ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Default)
30
- return defaultExportSymbol(node.getSourceFile(), checker);
31
- if ((ts.isArrowFunction(node) || ts.isFunctionExpression(node)) &&
32
- isDefaultExportExpression(node))
33
- return defaultExportSymbol(node.getSourceFile(), checker);
34
- return undefined;
35
- }
36
- function wrappedFunctionOwner(node) {
37
- let current = node;
38
- let parent = current.parent;
39
- while (ts.isParenthesizedExpression(parent) ||
40
- ts.isAsExpression(parent) ||
41
- ts.isTypeAssertionExpression(parent) ||
42
- ts.isSatisfiesExpression(parent) ||
43
- ts.isNonNullExpression(parent)) {
44
- current = parent;
45
- parent = current.parent;
46
- }
47
- if ((ts.isVariableDeclaration(parent) ||
48
- ts.isPropertyAssignment(parent) ||
49
- ts.isPropertyDeclaration(parent)) &&
50
- parent.initializer === current)
51
- return parent;
52
- return undefined;
53
- }
54
- function isDefaultExportExpression(node) {
55
- let current = node;
56
- let parent = current.parent;
57
- while ((ts.isParenthesizedExpression(parent) ||
58
- ts.isAsExpression(parent) ||
59
- ts.isTypeAssertionExpression(parent) ||
60
- ts.isSatisfiesExpression(parent) ||
61
- ts.isNonNullExpression(parent)) &&
62
- parent.expression === current) {
63
- current = parent;
64
- parent = current.parent;
65
- }
66
- return ts.isExportAssignment(parent) && !parent.isExportEquals && parent.expression === current;
67
- }
68
- function defaultExportSymbol(sourceFile, checker) {
69
- const moduleSymbol = checker.getSymbolAtLocation(sourceFile);
70
- return (moduleSymbol &&
71
- checker.getExportsOfModule(moduleSymbol).find((symbol) => symbol.getName() === 'default'));
72
- }
73
- export function resolveSymbol(symbol, checker) {
74
- return symbol.flags & ts.SymbolFlags.Alias ? checker.getAliasedSymbol(symbol) : symbol;
75
- }
76
- export function attributionSymbol(symbol, checker) {
77
- const resolved = resolveSymbol(symbol, checker);
78
- const name = resolved.valueDeclaration?.name;
79
- if (!name || !ts.isIdentifier(name))
80
- return resolved;
81
- return checker.getSymbolAtLocation(name) ?? resolved;
82
- }
@@ -1,23 +0,0 @@
1
- import type { ExtractedResponseContract } from '../contract-schema/index.mts';
2
- export type BackendResponseContract = ExtractedResponseContract & {
3
- method: string;
4
- routeTemplate: string;
5
- /** Statuses owned by this response emission. Defaults to 200, or 204 for an unannotated empty emission. */
6
- statusCodes?: readonly [number, ...number[]];
7
- /** Distinguishes a known framework default from an explicitly set or genuinely unknown status. */
8
- statusKnowledge?: 'default' | 'explicit' | 'unknown';
9
- bodyKind?: 'content' | 'none';
10
- /** Required for content emissions and absent for bodyless emissions. */
11
- mediaType?: string;
12
- /** Raw buffers and arbitrary streams have an unknown media type; bodyless emissions have none. */
13
- mediaTypeKnowledge?: 'known' | 'none' | 'unknown';
14
- /** Named SSE frames carried by the string stream body. */
15
- sseEvents?: readonly {
16
- eventName: string;
17
- contract: ExtractedResponseContract;
18
- }[];
19
- /** A concrete error status can also be produced by the framework before dispatch. */
20
- includeDefaultError?: boolean;
21
- /** Set when the route's response schema could not be extracted (lenient discovery mode). */
22
- unavailableReason?: string;
23
- };
@@ -1,3 +0,0 @@
1
- export { buildVirtualProgramMatrix } from '../contract-schema/virtual-program.mts';
2
- export type { VirtualProgramMatrix } from '../contract-schema/virtual-program.mts';
3
- export declare const COLD_VIRTUAL_PROGRAM_TIMEOUT_MS = 15000;
@@ -1,2 +0,0 @@
1
- export { buildVirtualProgramMatrix } from '../contract-schema/virtual-program.mjs';
2
- export const COLD_VIRTUAL_PROGRAM_TIMEOUT_MS = 15_000;
@@ -1,4 +0,0 @@
1
- export type ConcurrencyScope = 'fixed-resource' | 'pull-request' | 'ref' | 'sha' | 'run' | 'event' | 'input-resource';
2
- export type NormalizedConcurrencyScope = Exclude<ConcurrencyScope, 'fixed-resource'> | `unsupported:${string}`;
3
- export declare function extractConcurrencyScopes(group: string): NormalizedConcurrencyScope[];
4
- export declare function normalizePolicyScopes(scopes: readonly ConcurrencyScope[]): NormalizedConcurrencyScope[];
@@ -1,66 +0,0 @@
1
- const scopeOrder = [
2
- 'pull-request',
3
- 'ref',
4
- 'sha',
5
- 'run',
6
- 'event',
7
- 'input-resource',
8
- ];
9
- const ignoredOwnerContexts = new Set(['github.workflow', 'github.run_attempt']);
10
- const eventPayloadContexts = new Set([
11
- 'github.event_name',
12
- 'github.event.action',
13
- 'github.event.label.name',
14
- 'github.event.issue.number',
15
- 'github.event.schedule',
16
- 'github.event.workflow_run.event',
17
- 'github.event.workflow_run.id',
18
- 'github.event.workflow_run.workflow_id',
19
- ]);
20
- function classifyContext(reference) {
21
- if (ignoredOwnerContexts.has(reference))
22
- return undefined;
23
- if (reference === 'github.event.pull_request.number' ||
24
- reference === 'github.event.workflow_run.pull_requests')
25
- return 'pull-request';
26
- if (reference === 'github.event.pull_request.head.sha' ||
27
- reference === 'github.event.workflow_run.head_sha' ||
28
- reference === 'github.sha')
29
- return 'sha';
30
- if (reference === 'github.ref' ||
31
- reference === 'github.ref_name' ||
32
- reference === 'github.event.workflow_run.head_branch')
33
- return 'ref';
34
- if (reference === 'github.run_id')
35
- return 'run';
36
- if (reference.startsWith('inputs.') ||
37
- reference === 'github.event.inputs' ||
38
- reference.startsWith('github.event.inputs.')) {
39
- return 'input-resource';
40
- }
41
- if (eventPayloadContexts.has(reference))
42
- return 'event';
43
- return `unsupported:${reference}`;
44
- }
45
- function sortScopes(scopes) {
46
- return [...new Set(scopes)].toSorted((left, right) => {
47
- const leftIndex = scopeOrder.indexOf(left);
48
- const rightIndex = scopeOrder.indexOf(right);
49
- if (leftIndex === -1 || rightIndex === -1) {
50
- if (leftIndex === rightIndex)
51
- return left.localeCompare(right);
52
- return leftIndex === -1 ? 1 : -1;
53
- }
54
- return leftIndex - rightIndex;
55
- });
56
- }
57
- export function extractConcurrencyScopes(group) {
58
- const references = group.match(/\b(?:github|inputs)(?:\.[A-Za-z_][\w-]*)+/gu) ?? [];
59
- return sortScopes(references.flatMap((reference) => classifyContext(reference) ?? []));
60
- }
61
- export function normalizePolicyScopes(scopes) {
62
- if (scopes.includes('fixed-resource')) {
63
- return scopes.length === 1 ? [] : ['unsupported:fixed-resource-combination'];
64
- }
65
- return sortScopes(scopes.filter((scope) => scope !== 'fixed-resource'));
66
- }
@@ -1,10 +0,0 @@
1
- import type { WorkflowTopology } from './types.mts';
2
- import { type ConcurrencyScope } from './concurrency-scope.mts';
3
- type ConcurrencyCancellationBehavior = 'cancel-running' | 'retain-running' | 'conditional';
4
- export type ConcurrencyPolicy = {
5
- pending: 'coalesce-latest' | 'fifo';
6
- cancellation: ConcurrencyCancellationBehavior;
7
- scope: readonly ConcurrencyScope[];
8
- };
9
- export declare function evaluateLockPolicy(topology: WorkflowTopology, unlockedWorkflowReasons: Readonly<Record<string, string>>, semanticPolicy: Readonly<Record<string, ConcurrencyPolicy>>): string[];
10
- export {};
@@ -1,77 +0,0 @@
1
- import { extractConcurrencyScopes, normalizePolicyScopes, } from './concurrency-scope.mjs';
2
- function cancellation(value) {
3
- return typeof value === 'string' ? 'conditional' : value ? 'cancel-running' : 'retain-running';
4
- }
5
- export function evaluateLockPolicy(topology, unlockedWorkflowReasons, semanticPolicy) {
6
- const diagnostics = [];
7
- const owners = [...topology.workflows, ...topology.jobs].filter((owner) => owner.concurrency);
8
- const actualOwnerIds = new Set(owners.map((owner) => owner.id));
9
- const declaredOwnerIds = new Set(Object.keys(semanticPolicy));
10
- for (const id of [...actualOwnerIds].toSorted()) {
11
- if (!declaredOwnerIds.has(id))
12
- diagnostics.push(`lock intent missing: ${id}`);
13
- }
14
- for (const id of [...declaredOwnerIds].toSorted()) {
15
- if (!actualOwnerIds.has(id))
16
- diagnostics.push(`lock intent stale: ${id}`);
17
- }
18
- const jobsById = new Map(topology.jobs.map((job) => [job.id, job]));
19
- for (const workflow of topology.workflows) {
20
- const unlockedReason = unlockedWorkflowReasons[workflow.path];
21
- const hasUnlockedJob = !workflow.concurrency &&
22
- workflow.jobIds.some((jobId) => jobsById.get(jobId)?.concurrency === undefined);
23
- if (hasUnlockedJob && !unlockedReason)
24
- diagnostics.push(`lock intent missing: ${workflow.path}`);
25
- if (!hasUnlockedJob && unlockedReason)
26
- diagnostics.push(`unlocked reason stale: ${workflow.path}`);
27
- if (unlockedReason !== undefined && unlockedReason.trim() === '')
28
- diagnostics.push(`unlocked reason empty: ${workflow.path}`);
29
- }
30
- for (const path of Object.keys(unlockedWorkflowReasons).toSorted()) {
31
- if (!topology.workflows.some((workflow) => workflow.path === path))
32
- diagnostics.push(`unlocked reason stale: ${path}`);
33
- }
34
- for (const owner of owners) {
35
- const declared = semanticPolicy[owner.id];
36
- if (!declared || !owner.concurrency)
37
- continue;
38
- const cancelInProgress = owner.concurrency.effective.cancelInProgress;
39
- if (typeof cancelInProgress === 'string' &&
40
- !/^\$\{\{\s*\S[\s\S]*\}\}$/.test(cancelInProgress.trim()))
41
- diagnostics.push(`conditional cancel-in-progress expression invalid: ${owner.id}: ${cancelInProgress}`);
42
- const actualPending = owner.concurrency.effective.queue === 'max' ? 'fifo' : 'coalesce-latest';
43
- if (actualPending !== declared.pending)
44
- diagnostics.push(`concurrency pending mismatch: ${owner.id}: expected ${declared.pending}, got ${actualPending}`);
45
- const actualCancellation = cancellation(owner.concurrency.effective.cancelInProgress);
46
- if (actualCancellation !== declared.cancellation)
47
- diagnostics.push(`concurrency cancellation mismatch: ${owner.id}: expected ${declared.cancellation}, got ${actualCancellation}`);
48
- const actualScopes = extractConcurrencyScopes(owner.concurrency.effective.group);
49
- const expectedScopes = normalizePolicyScopes(declared.scope);
50
- if (JSON.stringify(actualScopes) !== JSON.stringify(expectedScopes))
51
- diagnostics.push(`concurrency scope mismatch: ${owner.id}: expected ${expectedScopes.join(',')}, got ${actualScopes.join(',')}`);
52
- }
53
- diagnostics.push(...collisionDiagnostics(owners, topology));
54
- return [...new Set(diagnostics)].toSorted();
55
- }
56
- function collisionDiagnostics(owners, topology) {
57
- const workflowPathsById = new Map(topology.workflows.map((workflow) => [workflow.id, workflow.path]));
58
- const ownerWorkflowPaths = new Map([
59
- ...topology.workflows.map((workflow) => [workflow.id, workflow.path]),
60
- ...topology.jobs.map((job) => [job.id, workflowPathsById.get(job.workflowId) ?? job.workflowId]),
61
- ]);
62
- const groups = new Map();
63
- for (const owner of owners) {
64
- const group = owner.concurrency?.effective.group;
65
- if (!group)
66
- continue;
67
- const normalizedGroup = group.toLocaleLowerCase('en-US');
68
- const workflowPartition = /\$\{\{\s*github\.workflow\s*\}\}/.test(group)
69
- ? ownerWorkflowPaths.get(owner.id)
70
- : '';
71
- const key = `${normalizedGroup}\0${workflowPartition}`;
72
- const entry = groups.get(key) ?? { group: normalizedGroup, ids: [] };
73
- entry.ids.push(owner.id);
74
- groups.set(key, entry);
75
- }
76
- return [...groups.values()].flatMap(({ group, ids }) => ids.length > 1 ? [`concurrency group collision: ${group}: ${ids.toSorted().join(', ')}`] : []);
77
- }
@@ -1,2 +0,0 @@
1
- import type { WorkflowTopology, WorkflowTopologyIndex, WorkflowTopologyPolicy } from './types.mts';
2
- export declare function evaluateGraphPolicy(topology: WorkflowTopology, index: WorkflowTopologyIndex, policy: WorkflowTopologyPolicy): string[];
@@ -1,138 +0,0 @@
1
- export function evaluateGraphPolicy(topology, index, policy) {
2
- const diagnostics = [
3
- ...inventoryDiagnostics(topology, policy),
4
- ...jobPresenceDiagnostics(index, policy),
5
- ...edgeDiagnostics(index, policy.requiredDirectEdges, true, true),
6
- ...edgeDiagnostics(index, policy.forbiddenDirectEdges, true, false),
7
- ...edgeDiagnostics(index, policy.requiredTransitiveEdges, false, true),
8
- ...edgeDiagnostics(index, policy.forbiddenTransitiveEdges, false, false),
9
- ...artifactEdgeDiagnostics(index, policy),
10
- ...fanInDiagnostics(index, policy),
11
- ...callerDiagnostics(index, policy),
12
- ...stepOrderDiagnostics(index, policy),
13
- ];
14
- return diagnostics.toSorted();
15
- }
16
- function artifactEdgeDiagnostics(index, policy) {
17
- return policy.requiredArtifactEdges.flatMap((rule) => {
18
- const label = `${rule.from} -> ${rule.to}: ${rule.name}${rule.match ? ` [${rule.match}]` : ''}`;
19
- if (!index.jobsById.has(rule.from) || !index.jobsById.has(rule.to))
20
- return [`required artifact edge missing: ${label}`];
21
- const present = index
22
- .artifactConsumersForProducerJob(rule.from)
23
- .some((edge) => edge.to === rule.to &&
24
- edge.name === rule.name &&
25
- (rule.match === undefined || edge.match === rule.match));
26
- return present ? [] : [`required artifact edge missing: ${label}`];
27
- });
28
- }
29
- function inventoryDiagnostics(topology, policy) {
30
- const jobsById = new Map(topology.jobs.map((job) => [job.id, job]));
31
- const actual = new Map(topology.workflows.map((workflow) => [
32
- workflow.path,
33
- workflow.jobIds
34
- .map((id) => jobsById.get(id)?.key ?? id)
35
- .toSorted((a, b) => a.localeCompare(b)),
36
- ]));
37
- const diagnostics = [];
38
- for (const [path, keys] of actual) {
39
- const expected = policy.jobInventory[path];
40
- if (!expected)
41
- diagnostics.push(`workflow inventory missing: ${path}`);
42
- else if (JSON.stringify(keys) !== JSON.stringify([...expected].toSorted()))
43
- diagnostics.push(`job inventory mismatch: ${path}: expected ${[...expected].toSorted().join(', ')}, got ${keys.join(', ')}`);
44
- }
45
- for (const path of Object.keys(policy.jobInventory).toSorted()) {
46
- if (!actual.has(path))
47
- diagnostics.push(`workflow inventory stale: ${path}`);
48
- }
49
- return diagnostics;
50
- }
51
- function jobPresenceDiagnostics(index, policy) {
52
- const diagnostics = [];
53
- for (const id of policy.requiredJobs)
54
- if (!index.jobsById.has(id))
55
- diagnostics.push(`required job missing: ${id}`);
56
- for (const id of policy.forbiddenJobs)
57
- if (index.jobsById.has(id))
58
- diagnostics.push(`forbidden job present: ${id}`);
59
- return diagnostics;
60
- }
61
- function edgeDiagnostics(index, rules, direct, required) {
62
- return rules.flatMap(([from, to]) => {
63
- if (!index.jobsById.has(from) || !index.jobsById.has(to))
64
- return required
65
- ? [`required ${direct ? 'direct' : 'transitive'} edge missing: ${from} -> ${to}`]
66
- : [];
67
- const downstream = direct
68
- ? index.directDownstreamJobIds(from)
69
- : index.transitiveDownstreamJobIds(from);
70
- const present = downstream.includes(to);
71
- return present === required
72
- ? []
73
- : [
74
- `${required ? 'required' : 'forbidden'} ${direct ? 'direct' : 'transitive'} edge ${required ? 'missing' : 'present'}: ${from} -> ${to}`,
75
- ];
76
- });
77
- }
78
- function fanInDiagnostics(index, policy) {
79
- return Object.entries(policy.exactFanIns).flatMap(([jobId, expected]) => {
80
- if (!index.jobsById.has(jobId))
81
- return [`exact fan-in target missing: ${jobId}`];
82
- const actual = [...index.directUpstreamJobIds(jobId)].toSorted();
83
- return JSON.stringify(actual) === JSON.stringify([...expected].toSorted())
84
- ? []
85
- : [
86
- `exact fan-in mismatch: ${jobId}: expected ${[...expected].toSorted().join(', ')}, got ${actual.join(', ')}`,
87
- ];
88
- });
89
- }
90
- function callerDiagnostics(index, policy) {
91
- const callablePaths = [];
92
- for (const workflow of index.workflowsByPath.values())
93
- if (workflow.callable)
94
- callablePaths.push(workflow.path);
95
- callablePaths.sort((left, right) => left.localeCompare(right));
96
- const declaredPaths = Object.keys(policy.exactCallerJobs).toSorted();
97
- const diagnostics = [];
98
- for (const path of callablePaths)
99
- if (!policy.exactCallerJobs[path])
100
- diagnostics.push(`caller allowlist missing: ${path}`);
101
- for (const path of declaredPaths)
102
- if (!callablePaths.includes(path))
103
- diagnostics.push(`caller allowlist stale: ${path}`);
104
- diagnostics.push(...Object.entries(policy.exactCallerJobs).flatMap(([path, expected]) => {
105
- if (!index.workflowsByPath.get(path)?.callable)
106
- return [];
107
- const actual = [...index.directCallerJobIds(path)].toSorted();
108
- return JSON.stringify(actual) === JSON.stringify([...expected].toSorted())
109
- ? []
110
- : [
111
- `caller allowlist mismatch: ${path}: expected ${[...expected].toSorted().join(', ')}, got ${actual.join(', ')}`,
112
- ];
113
- }));
114
- return diagnostics;
115
- }
116
- function matches(selector, step) {
117
- return ((selector.id === undefined || selector.id === step.id) &&
118
- (selector.uses === undefined || selector.uses === step.uses) &&
119
- (selector.name === undefined || selector.name === step.name));
120
- }
121
- function stepOrderDiagnostics(index, policy) {
122
- return policy.stepOrders.flatMap((rule) => {
123
- const job = index.jobsById.get(rule.jobId);
124
- if (!job)
125
- return [`step-order job missing: ${rule.jobId}`];
126
- let prior = -1;
127
- for (const selector of rule.steps) {
128
- const step = job.steps.find((candidate) => matches(selector, candidate));
129
- const label = selector.id ?? selector.uses ?? selector.name ?? '<step>';
130
- if (!step)
131
- return [`required ordered step missing: ${rule.jobId}: ${label}`];
132
- if (step.index <= prior)
133
- return [`required step order invalid: ${rule.jobId}: ${label}`];
134
- prior = step.index;
135
- }
136
- return [];
137
- });
138
- }