@agent-teams/engineering-foundation 1.2.0 → 1.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 (257) hide show
  1. package/dist/capabilities/public-api-compatibility/adapters/inbound/configuration/load-public-api-audit.d.ts +4 -0
  2. package/dist/capabilities/public-api-compatibility/adapters/inbound/configuration/load-public-api-audit.d.ts.map +1 -0
  3. package/dist/capabilities/public-api-compatibility/adapters/inbound/configuration/load-public-api-audit.js +13 -0
  4. package/dist/capabilities/public-api-compatibility/adapters/inbound/configuration/load-public-api-audit.js.map +1 -0
  5. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/audit-compiler-bindings.d.ts +17 -0
  6. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/audit-compiler-bindings.d.ts.map +1 -0
  7. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/audit-compiler-bindings.js +139 -0
  8. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/audit-compiler-bindings.js.map +1 -0
  9. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/load-pinned-audit-sdk.d.ts +7 -0
  10. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/load-pinned-audit-sdk.d.ts.map +1 -0
  11. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/load-pinned-audit-sdk.js +14 -0
  12. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/load-pinned-audit-sdk.js.map +1 -0
  13. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/microsoft-public-api-extractor.d.ts.map +1 -1
  14. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/microsoft-public-api-extractor.js +10 -43
  15. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/microsoft-public-api-extractor.js.map +1 -1
  16. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/microsoft-public-api-observer.d.ts +6 -0
  17. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/microsoft-public-api-observer.d.ts.map +1 -0
  18. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/microsoft-public-api-observer.js +497 -0
  19. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/microsoft-public-api-observer.js.map +1 -0
  20. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/pinned-audit-compiler.d.ts +101 -0
  21. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/pinned-audit-compiler.d.ts.map +1 -0
  22. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/pinned-audit-compiler.js +2 -0
  23. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/pinned-audit-compiler.js.map +1 -0
  24. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/prepare-public-api-extractor.d.ts +15 -0
  25. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/prepare-public-api-extractor.d.ts.map +1 -0
  26. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/prepare-public-api-extractor.js +47 -0
  27. package/dist/capabilities/public-api-compatibility/adapters/outbound/api-extractor/prepare-public-api-extractor.js.map +1 -0
  28. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/public-api-audit-inputs.d.ts +43 -0
  29. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/public-api-audit-inputs.d.ts.map +1 -0
  30. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/public-api-audit-inputs.js +239 -0
  31. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/public-api-audit-inputs.js.map +1 -0
  32. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/public-api-baseline-mapper.d.ts +1 -1
  33. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/public-api-baseline-mapper.d.ts.map +1 -1
  34. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/public-api-baseline-mapper.js.map +1 -1
  35. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/stage-public-api-audit.d.ts +12 -0
  36. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/stage-public-api-audit.d.ts.map +1 -0
  37. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/stage-public-api-audit.js +169 -0
  38. package/dist/capabilities/public-api-compatibility/adapters/outbound/filesystem/stage-public-api-audit.js.map +1 -0
  39. package/dist/capabilities/public-api-compatibility/api.d.ts +3 -0
  40. package/dist/capabilities/public-api-compatibility/api.d.ts.map +1 -0
  41. package/dist/capabilities/public-api-compatibility/api.js +2 -0
  42. package/dist/capabilities/public-api-compatibility/api.js.map +1 -0
  43. package/dist/capabilities/public-api-compatibility/application/model/public-api-audit-report.d.ts +36 -0
  44. package/dist/capabilities/public-api-compatibility/application/model/public-api-audit-report.d.ts.map +1 -0
  45. package/dist/capabilities/public-api-compatibility/application/model/public-api-audit-report.js +2 -0
  46. package/dist/capabilities/public-api-compatibility/application/model/public-api-audit-report.js.map +1 -0
  47. package/dist/capabilities/public-api-compatibility/application/model/public-api-observation.d.ts +73 -0
  48. package/dist/capabilities/public-api-compatibility/application/model/public-api-observation.d.ts.map +1 -0
  49. package/dist/capabilities/public-api-compatibility/application/model/public-api-observation.js +5 -0
  50. package/dist/capabilities/public-api-compatibility/application/model/public-api-observation.js.map +1 -0
  51. package/dist/capabilities/public-api-compatibility/application/policies/project-public-api-observation.d.ts +33 -0
  52. package/dist/capabilities/public-api-compatibility/application/policies/project-public-api-observation.d.ts.map +1 -0
  53. package/dist/capabilities/public-api-compatibility/application/policies/project-public-api-observation.js +110 -0
  54. package/dist/capabilities/public-api-compatibility/application/policies/project-public-api-observation.js.map +1 -0
  55. package/dist/capabilities/public-api-compatibility/application/policies/public-api-audit-eligibility.d.ts +9 -0
  56. package/dist/capabilities/public-api-compatibility/application/policies/public-api-audit-eligibility.d.ts.map +1 -0
  57. package/dist/capabilities/public-api-compatibility/application/policies/public-api-audit-eligibility.js +180 -0
  58. package/dist/capabilities/public-api-compatibility/application/policies/public-api-audit-eligibility.js.map +1 -0
  59. package/dist/capabilities/public-api-compatibility/application/ports/public-api-observer.d.ts +29 -0
  60. package/dist/capabilities/public-api-compatibility/application/ports/public-api-observer.d.ts.map +1 -0
  61. package/dist/capabilities/public-api-compatibility/application/ports/public-api-observer.js +2 -0
  62. package/dist/capabilities/public-api-compatibility/application/ports/public-api-observer.js.map +1 -0
  63. package/dist/capabilities/public-api-compatibility/application/use-cases/audit-public-api.d.ts +14 -0
  64. package/dist/capabilities/public-api-compatibility/application/use-cases/audit-public-api.d.ts.map +1 -0
  65. package/dist/capabilities/public-api-compatibility/application/use-cases/audit-public-api.js +144 -0
  66. package/dist/capabilities/public-api-compatibility/application/use-cases/audit-public-api.js.map +1 -0
  67. package/dist/capabilities/public-api-compatibility/contract/public-api-audit.d.ts +58 -0
  68. package/dist/capabilities/public-api-compatibility/contract/public-api-audit.d.ts.map +1 -0
  69. package/dist/capabilities/public-api-compatibility/contract/public-api-audit.js +2 -0
  70. package/dist/capabilities/public-api-compatibility/contract/public-api-audit.js.map +1 -0
  71. package/dist/capabilities/public-api-compatibility/node.d.ts +3 -0
  72. package/dist/capabilities/public-api-compatibility/node.d.ts.map +1 -0
  73. package/dist/capabilities/public-api-compatibility/node.js +2 -0
  74. package/dist/capabilities/public-api-compatibility/node.js.map +1 -0
  75. package/dist/capabilities/public-api-compatibility/schemas.d.ts +1 -1
  76. package/dist/capabilities/public-api-compatibility/schemas.d.ts.map +1 -1
  77. package/dist/capabilities/public-api-compatibility/schemas.js +2 -0
  78. package/dist/capabilities/public-api-compatibility/schemas.js.map +1 -1
  79. package/dist/capabilities/source-dependencies/adapters/inbound/configuration/load-capability-config.d.ts +1 -0
  80. package/dist/capabilities/source-dependencies/adapters/inbound/configuration/load-capability-config.d.ts.map +1 -1
  81. package/dist/capabilities/source-dependencies/adapters/inbound/configuration/load-capability-config.js +3 -0
  82. package/dist/capabilities/source-dependencies/adapters/inbound/configuration/load-capability-config.js.map +1 -1
  83. package/dist/capabilities/source-dependencies/adapters/outbound/node/selected-package-source-discovery.d.ts +2 -0
  84. package/dist/capabilities/source-dependencies/adapters/outbound/node/selected-package-source-discovery.d.ts.map +1 -1
  85. package/dist/capabilities/source-dependencies/adapters/outbound/node/selected-package-source-discovery.js +5 -4
  86. package/dist/capabilities/source-dependencies/adapters/outbound/node/selected-package-source-discovery.js.map +1 -1
  87. package/dist/capabilities/source-dependencies/adapters/outbound/node/source-census-reader.d.ts +3 -0
  88. package/dist/capabilities/source-dependencies/adapters/outbound/node/source-census-reader.d.ts.map +1 -0
  89. package/dist/capabilities/source-dependencies/adapters/outbound/node/source-census-reader.js +32 -0
  90. package/dist/capabilities/source-dependencies/adapters/outbound/node/source-census-reader.js.map +1 -0
  91. package/dist/capabilities/source-dependencies/api.d.ts +1 -0
  92. package/dist/capabilities/source-dependencies/api.d.ts.map +1 -1
  93. package/dist/capabilities/source-dependencies/api.js.map +1 -1
  94. package/dist/capabilities/source-dependencies/application/ports/source-census-reader.d.ts +13 -0
  95. package/dist/capabilities/source-dependencies/application/ports/source-census-reader.d.ts.map +1 -0
  96. package/dist/capabilities/source-dependencies/application/ports/source-census-reader.js +2 -0
  97. package/dist/capabilities/source-dependencies/application/ports/source-census-reader.js.map +1 -0
  98. package/dist/capabilities/source-dependencies/module.d.ts +2 -0
  99. package/dist/capabilities/source-dependencies/module.d.ts.map +1 -1
  100. package/dist/capabilities/source-dependencies/module.js +2 -0
  101. package/dist/capabilities/source-dependencies/module.js.map +1 -1
  102. package/dist/capabilities/suppression-governance/adapters/inbound/configuration/load-capability-config.d.ts +1 -0
  103. package/dist/capabilities/suppression-governance/adapters/inbound/configuration/load-capability-config.d.ts.map +1 -1
  104. package/dist/capabilities/suppression-governance/adapters/inbound/configuration/load-capability-config.js +3 -0
  105. package/dist/capabilities/suppression-governance/adapters/inbound/configuration/load-capability-config.js.map +1 -1
  106. package/dist/capabilities/suppression-governance/module.d.ts +1 -0
  107. package/dist/capabilities/suppression-governance/module.d.ts.map +1 -1
  108. package/dist/capabilities/suppression-governance/module.js +1 -0
  109. package/dist/capabilities/suppression-governance/module.js.map +1 -1
  110. package/dist/composition/capability-modules.d.ts.map +1 -1
  111. package/dist/composition/capability-modules.js +3 -0
  112. package/dist/composition/capability-modules.js.map +1 -1
  113. package/dist/composition/command-host.d.ts.map +1 -1
  114. package/dist/composition/command-host.js +2 -1
  115. package/dist/composition/command-host.js.map +1 -1
  116. package/dist/composition/quality-coverage.d.ts +6 -0
  117. package/dist/composition/quality-coverage.d.ts.map +1 -0
  118. package/dist/composition/quality-coverage.js +25 -0
  119. package/dist/composition/quality-coverage.js.map +1 -0
  120. package/dist/features/command-host/adapters/inbound/cli/cli-arguments.d.ts.map +1 -1
  121. package/dist/features/command-host/adapters/inbound/cli/cli-arguments.js +17 -2
  122. package/dist/features/command-host/adapters/inbound/cli/cli-arguments.js.map +1 -1
  123. package/dist/features/command-host/adapters/inbound/cli/foundation-cli.d.ts.map +1 -1
  124. package/dist/features/command-host/adapters/inbound/cli/foundation-cli.js +38 -1
  125. package/dist/features/command-host/adapters/inbound/cli/foundation-cli.js.map +1 -1
  126. package/dist/features/command-host/application/command-invocation.d.ts +1 -0
  127. package/dist/features/command-host/application/command-invocation.d.ts.map +1 -1
  128. package/dist/features/command-host/application/command-invocation.js.map +1 -1
  129. package/dist/features/command-host/application/command-reporting.d.ts +2 -2
  130. package/dist/features/command-host/application/command-reporting.d.ts.map +1 -1
  131. package/dist/features/command-host/application/command-reporting.js +4 -1
  132. package/dist/features/command-host/application/command-reporting.js.map +1 -1
  133. package/dist/features/command-host/application/command-services.d.ts +10 -1
  134. package/dist/features/command-host/application/command-services.d.ts.map +1 -1
  135. package/dist/features/command-host/composition/node-command-host.d.ts +4 -1
  136. package/dist/features/command-host/composition/node-command-host.d.ts.map +1 -1
  137. package/dist/features/command-host/composition/node-command-host.js +3 -0
  138. package/dist/features/command-host/composition/node-command-host.js.map +1 -1
  139. package/dist/features/foundation-check/adapters/inbound/config/foundation-config-reader.d.ts.map +1 -1
  140. package/dist/features/foundation-check/adapters/inbound/config/foundation-config-reader.js +2 -1
  141. package/dist/features/foundation-check/adapters/inbound/config/foundation-config-reader.js.map +1 -1
  142. package/dist/features/foundation-check/application/ports/foundation-config-input.d.ts +1 -1
  143. package/dist/features/foundation-check/application/ports/foundation-config-input.d.ts.map +1 -1
  144. package/dist/features/foundation-check/schemas.d.ts +1 -1
  145. package/dist/features/foundation-check/schemas.d.ts.map +1 -1
  146. package/dist/features/foundation-check/schemas.js +2 -1
  147. package/dist/features/foundation-check/schemas.js.map +1 -1
  148. package/dist/features/quality-coverage/adapters/configuration.d.ts +3 -0
  149. package/dist/features/quality-coverage/adapters/configuration.d.ts.map +1 -0
  150. package/dist/features/quality-coverage/adapters/configuration.js +4 -0
  151. package/dist/features/quality-coverage/adapters/configuration.js.map +1 -0
  152. package/dist/features/quality-coverage/adapters/consumer-execution.d.ts +12 -0
  153. package/dist/features/quality-coverage/adapters/consumer-execution.d.ts.map +1 -0
  154. package/dist/features/quality-coverage/adapters/consumer-execution.js +35 -0
  155. package/dist/features/quality-coverage/adapters/consumer-execution.js.map +1 -0
  156. package/dist/features/quality-coverage/adapters/consumer-observations.d.ts +8 -0
  157. package/dist/features/quality-coverage/adapters/consumer-observations.d.ts.map +1 -0
  158. package/dist/features/quality-coverage/adapters/consumer-observations.js +93 -0
  159. package/dist/features/quality-coverage/adapters/consumer-observations.js.map +1 -0
  160. package/dist/features/quality-coverage/adapters/consumer-toolchain.d.ts +13 -0
  161. package/dist/features/quality-coverage/adapters/consumer-toolchain.d.ts.map +1 -0
  162. package/dist/features/quality-coverage/adapters/consumer-toolchain.js +84 -0
  163. package/dist/features/quality-coverage/adapters/consumer-toolchain.js.map +1 -0
  164. package/dist/features/quality-coverage/adapters/oxlint-output.d.ts +8 -0
  165. package/dist/features/quality-coverage/adapters/oxlint-output.d.ts.map +1 -0
  166. package/dist/features/quality-coverage/adapters/oxlint-output.js +53 -0
  167. package/dist/features/quality-coverage/adapters/oxlint-output.js.map +1 -0
  168. package/dist/features/quality-coverage/adapters/oxlint-session.d.ts +14 -0
  169. package/dist/features/quality-coverage/adapters/oxlint-session.d.ts.map +1 -0
  170. package/dist/features/quality-coverage/adapters/oxlint-session.js +53 -0
  171. package/dist/features/quality-coverage/adapters/oxlint-session.js.map +1 -0
  172. package/dist/features/quality-coverage/adapters/profile-input.d.ts +9 -0
  173. package/dist/features/quality-coverage/adapters/profile-input.d.ts.map +1 -0
  174. package/dist/features/quality-coverage/adapters/profile-input.js +110 -0
  175. package/dist/features/quality-coverage/adapters/profile-input.js.map +1 -0
  176. package/dist/features/quality-coverage/adapters/protected-config.d.ts +15 -0
  177. package/dist/features/quality-coverage/adapters/protected-config.d.ts.map +1 -0
  178. package/dist/features/quality-coverage/adapters/protected-config.js +200 -0
  179. package/dist/features/quality-coverage/adapters/protected-config.js.map +1 -0
  180. package/dist/features/quality-coverage/api.d.ts +13 -0
  181. package/dist/features/quality-coverage/api.d.ts.map +1 -0
  182. package/dist/features/quality-coverage/api.js +7 -0
  183. package/dist/features/quality-coverage/api.js.map +1 -0
  184. package/dist/features/quality-coverage/application/capability.d.ts +7 -0
  185. package/dist/features/quality-coverage/application/capability.d.ts.map +1 -0
  186. package/dist/features/quality-coverage/application/capability.js +12 -0
  187. package/dist/features/quality-coverage/application/capability.js.map +1 -0
  188. package/dist/features/quality-coverage/application/check-quality-coverage.d.ts +9 -0
  189. package/dist/features/quality-coverage/application/check-quality-coverage.d.ts.map +1 -0
  190. package/dist/features/quality-coverage/application/check-quality-coverage.js +56 -0
  191. package/dist/features/quality-coverage/application/check-quality-coverage.js.map +1 -0
  192. package/dist/features/quality-coverage/application/evaluate-coverage.d.ts +6 -0
  193. package/dist/features/quality-coverage/application/evaluate-coverage.d.ts.map +1 -0
  194. package/dist/features/quality-coverage/application/evaluate-coverage.js +125 -0
  195. package/dist/features/quality-coverage/application/evaluate-coverage.js.map +1 -0
  196. package/dist/features/quality-coverage/application/input-observations.d.ts +6 -0
  197. package/dist/features/quality-coverage/application/input-observations.d.ts.map +1 -0
  198. package/dist/features/quality-coverage/application/input-observations.js +2 -0
  199. package/dist/features/quality-coverage/application/input-observations.js.map +1 -0
  200. package/dist/features/quality-coverage/application/model.d.ts +57 -0
  201. package/dist/features/quality-coverage/application/model.d.ts.map +1 -0
  202. package/dist/features/quality-coverage/application/model.js +2 -0
  203. package/dist/features/quality-coverage/application/model.js.map +1 -0
  204. package/dist/features/quality-coverage/application/observation-input.d.ts +17 -0
  205. package/dist/features/quality-coverage/application/observation-input.d.ts.map +1 -0
  206. package/dist/features/quality-coverage/application/observation-input.js +2 -0
  207. package/dist/features/quality-coverage/application/observation-input.js.map +1 -0
  208. package/dist/features/quality-coverage/application/profile.d.ts +38 -0
  209. package/dist/features/quality-coverage/application/profile.d.ts.map +1 -0
  210. package/dist/features/quality-coverage/application/profile.js +2 -0
  211. package/dist/features/quality-coverage/application/profile.js.map +1 -0
  212. package/dist/features/quality-coverage/application/rules.d.ts +20 -0
  213. package/dist/features/quality-coverage/application/rules.d.ts.map +1 -0
  214. package/dist/features/quality-coverage/application/rules.js +33 -0
  215. package/dist/features/quality-coverage/application/rules.js.map +1 -0
  216. package/dist/features/quality-coverage/application/script-route.d.ts +3 -0
  217. package/dist/features/quality-coverage/application/script-route.d.ts.map +1 -0
  218. package/dist/features/quality-coverage/application/script-route.js +46 -0
  219. package/dist/features/quality-coverage/application/script-route.js.map +1 -0
  220. package/dist/features/quality-coverage/application/source-coverage.d.ts +19 -0
  221. package/dist/features/quality-coverage/application/source-coverage.d.ts.map +1 -0
  222. package/dist/features/quality-coverage/application/source-coverage.js +46 -0
  223. package/dist/features/quality-coverage/application/source-coverage.js.map +1 -0
  224. package/dist/features/quality-coverage/application/tool-execution.d.ts +2 -0
  225. package/dist/features/quality-coverage/application/tool-execution.d.ts.map +1 -0
  226. package/dist/features/quality-coverage/application/tool-execution.js +2 -0
  227. package/dist/features/quality-coverage/application/tool-execution.js.map +1 -0
  228. package/dist/features/quality-coverage/node.d.ts +5 -0
  229. package/dist/features/quality-coverage/node.d.ts.map +1 -0
  230. package/dist/features/quality-coverage/node.js +5 -0
  231. package/dist/features/quality-coverage/node.js.map +1 -0
  232. package/dist/features/quality-coverage/schemas.d.ts +2 -0
  233. package/dist/features/quality-coverage/schemas.d.ts.map +1 -0
  234. package/dist/features/quality-coverage/schemas.js +2 -0
  235. package/dist/features/quality-coverage/schemas.js.map +1 -0
  236. package/dist/features/validation-reporting/api.d.ts +1 -1
  237. package/dist/features/validation-reporting/api.d.ts.map +1 -1
  238. package/dist/features/validation-reporting/api.js.map +1 -1
  239. package/dist/process-execution/node-process-runner.d.ts.map +1 -1
  240. package/dist/process-execution/node-process-runner.js +15 -0
  241. package/dist/process-execution/node-process-runner.js.map +1 -1
  242. package/dist/process-execution/windows-managed-process.js +2 -2
  243. package/dist/process-execution/windows-managed-process.js.map +1 -1
  244. package/dist/schema-catalog.d.ts +1 -1
  245. package/dist/schema-catalog.d.ts.map +1 -1
  246. package/dist/schema-ids.d.ts +1 -1
  247. package/dist/schema-ids.d.ts.map +1 -1
  248. package/dist/schema-ids.js +2 -0
  249. package/dist/schema-ids.js.map +1 -1
  250. package/dist/source-inventory/adapters/outbound/filesystem/filesystem-source-tree-reader.d.ts.map +1 -1
  251. package/dist/source-inventory/adapters/outbound/filesystem/filesystem-source-tree-reader.js +4 -0
  252. package/dist/source-inventory/adapters/outbound/filesystem/filesystem-source-tree-reader.js.map +1 -1
  253. package/package.json +5 -1
  254. package/schemas/foundation-config/v2.schema.json +201 -0
  255. package/schemas/package-public-api-audit-report/v1.schema.json +1400 -0
  256. package/schemas/package-public-api-audit-request/v1.schema.json +339 -0
  257. package/schemas/quality-source-coverage/v1.schema.json +119 -0
@@ -0,0 +1,169 @@
1
+ import { chmod, lstat, mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
3
+ import { auditDigest, auditInputPath, AUDIT_MAX_BYTES } from "./public-api-audit-inputs.js";
4
+ function containedPath(root, directory, value, allowRoot = false) {
5
+ if (isAbsolute(value) || value.includes("\\") || /^[a-z][a-z0-9+.-]*:/iu.test(value)) {
6
+ throw new Error(`Unsupported SDK input path: ${value}.`);
7
+ }
8
+ const path = resolve(directory, value);
9
+ const local = relative(root, path);
10
+ if ((!allowRoot && local === "") || local === ".." || local.startsWith(`..${sep}`)) {
11
+ throw new Error(`SDK input path escapes verified evidence: ${value}.`);
12
+ }
13
+ return path;
14
+ }
15
+ function strings(value) {
16
+ if (typeof value === "string") {
17
+ return [value];
18
+ }
19
+ if (Array.isArray(value)) {
20
+ return value.flatMap(strings);
21
+ }
22
+ if (typeof value === "object" && value !== null) {
23
+ return Object.values(value).flatMap(strings);
24
+ }
25
+ return [];
26
+ }
27
+ /** Over-approximate every metadata path the pinned SDK can select from a manifest. */
28
+ function metadataPaths(root, path, bytes) {
29
+ const manifest = JSON.parse(bytes.toString("utf8"));
30
+ const directory = dirname(path);
31
+ const paths = [join(directory, "tsdoc-metadata.json")];
32
+ if (manifest["tsdocMetadata"] !== undefined) {
33
+ if (typeof manifest["tsdocMetadata"] !== "string") {
34
+ throw new Error("Unsupported tsdocMetadata path.");
35
+ }
36
+ paths.push(containedPath(root, directory, manifest["tsdocMetadata"]));
37
+ }
38
+ for (const field of ["exports", "typesVersions", "types", "typings", "main"]) {
39
+ for (const value of strings(manifest[field])) {
40
+ paths.push(join(dirname(containedPath(root, directory, value)), "tsdoc-metadata.json"));
41
+ }
42
+ }
43
+ return paths;
44
+ }
45
+ function mappedSources(root, path, bytes) {
46
+ const map = JSON.parse(bytes.toString("utf8"));
47
+ if (map["version"] !== 3 || map["sections"] !== undefined || !Array.isArray(map["sources"]) ||
48
+ (map["sourceRoot"] !== undefined && typeof map["sourceRoot"] !== "string")) {
49
+ throw new Error("Unsupported declaration source-map structure.");
50
+ }
51
+ const sourceRoot = map["sourceRoot"] ?? "";
52
+ return map["sources"].map((source) => {
53
+ if (typeof source !== "string") {
54
+ throw new Error("Unsupported mapped source path.");
55
+ }
56
+ // Validate both components before joining: join would hide an absolute source.
57
+ const base = sourceRoot === "" ? dirname(path) : containedPath(root, dirname(path), sourceRoot, true);
58
+ return containedPath(root, base, source);
59
+ });
60
+ }
61
+ async function present(root, path) {
62
+ // Observe absence only after rejecting symlinked ancestors, including dangling links.
63
+ const parts = relative(root, path).split(sep);
64
+ let cursor = root;
65
+ for (const part of parts) {
66
+ cursor = join(cursor, part);
67
+ try {
68
+ const stat = await lstat(cursor);
69
+ if (stat.isSymbolicLink()) {
70
+ throw new Error(`Audit symlink unsupported: ${path}.`);
71
+ }
72
+ }
73
+ catch (error) {
74
+ if (error.code === "ENOENT") {
75
+ return false;
76
+ }
77
+ throw error;
78
+ }
79
+ }
80
+ return true;
81
+ }
82
+ export async function stagePublicApiAudit(root, allowed, stageRoot) {
83
+ // Claim a fresh namespace before doing any I/O on its behalf. In particular,
84
+ // a second producer cannot reuse a published stage (also enforced on Windows).
85
+ allowed = new Map(allowed);
86
+ await mkdir(stageRoot, { mode: 0o700 });
87
+ const bytes = new Map();
88
+ const observed = new Map();
89
+ let byteCount = 0;
90
+ for (const [path, digest] of allowed) {
91
+ await auditInputPath(root, relative(root, path).split(sep).join("/"));
92
+ const content = await readFile(path);
93
+ byteCount += content.length;
94
+ if (byteCount > AUDIT_MAX_BYTES) {
95
+ throw new Error("Audit staging byte budget exhausted.");
96
+ }
97
+ if (auditDigest(content) !== digest) {
98
+ throw new Error("Audit staging input digest mismatch.");
99
+ }
100
+ bytes.set(path, content);
101
+ }
102
+ const dependencies = new Set();
103
+ for (const [path, content] of bytes) {
104
+ if (/\.d\.[cm]?ts$/u.test(path)) {
105
+ dependencies.add(`${path}.map`);
106
+ }
107
+ if (basename(path) === "package.json") {
108
+ for (const dependency of metadataPaths(root, path, content)) {
109
+ dependencies.add(dependency);
110
+ }
111
+ }
112
+ if (/\.d\.[cm]?ts\.map$/u.test(path)) {
113
+ for (const dependency of mappedSources(root, path, content)) {
114
+ if (!allowed.has(dependency)) {
115
+ throw new Error(`Undeclared mapped source: ${dependency}.`);
116
+ }
117
+ dependencies.add(dependency);
118
+ }
119
+ }
120
+ }
121
+ for (const path of dependencies) {
122
+ const exists = await present(root, path);
123
+ observed.set(path, exists);
124
+ if (exists && !allowed.has(path)) {
125
+ throw new Error(`Undeclared SDK input: ${path}.`);
126
+ }
127
+ }
128
+ const files = new Map();
129
+ const directories = new Set([stageRoot]);
130
+ for (const [path, content] of bytes) {
131
+ const destination = join(stageRoot, relative(root, path));
132
+ await mkdir(dirname(destination), { recursive: true });
133
+ let directory = dirname(destination);
134
+ while (directory !== stageRoot) {
135
+ directories.add(directory);
136
+ directory = dirname(directory);
137
+ }
138
+ await writeFile(destination, content, { flag: "wx", mode: 0o400 });
139
+ files.set(destination, auditDigest(content));
140
+ }
141
+ for (const directory of directories) {
142
+ await chmod(directory, 0o500);
143
+ }
144
+ let released = false;
145
+ return { root: stageRoot, files,
146
+ release: async () => {
147
+ released = true;
148
+ for (const directory of directories) {
149
+ await chmod(directory, 0o700);
150
+ }
151
+ },
152
+ revalidate: async () => {
153
+ if (released) {
154
+ throw new Error("Audit stage has been released.");
155
+ }
156
+ for (const [path, expected] of observed) {
157
+ if (await present(root, path) !== expected || await present(stageRoot, join(stageRoot, relative(root, path))) !== expected) {
158
+ throw new Error("SDK input presence changed during observation.");
159
+ }
160
+ }
161
+ for (const [path, digest] of allowed) {
162
+ await auditInputPath(root, relative(root, path).split(sep).join("/"));
163
+ if (auditDigest(await readFile(path)) !== digest) {
164
+ throw new Error("Audit input changed during observation.");
165
+ }
166
+ }
167
+ } };
168
+ }
169
+ //# sourceMappingURL=stage-public-api-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage-public-api-audit.js","sourceRoot":"","sources":["../../../../../../src/capabilities/public-api-compatibility/adapters/outbound/filesystem/stage-public-api-audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type { PublicApiAuditRequest } from "./contract/public-api-audit.js";
2
+ export type { PublicApiAuditReport } from "./application/model/public-api-audit-report.js";
3
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/capabilities/public-api-compatibility/api.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,YAAY,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/capabilities/public-api-compatibility/api.ts"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ import type { PublicApiAuditRequest } from "../../contract/public-api-audit.js";
2
+ import type { AuditObservation } from "./public-api-observation.js";
3
+ import type { AuditEligibility } from "../policies/public-api-audit-eligibility.js";
4
+ import type { AuditGraphProjection } from "../policies/project-public-api-observation.js";
5
+ import type { PublicApiChangeSet } from "./public-api.js";
6
+ export interface AuditComparison {
7
+ readonly pair: "A-B" | "B-C" | "A-C";
8
+ readonly packageName: string;
9
+ readonly scope: "historical-stored-surface" | "declaration-graph";
10
+ readonly eligibility: AuditEligibility;
11
+ readonly limitations: readonly string[];
12
+ readonly findings?: PublicApiChangeSet;
13
+ readonly beforeProjection?: AuditGraphProjection;
14
+ readonly afterProjection?: AuditGraphProjection;
15
+ }
16
+ export interface PublicApiAuditReport {
17
+ readonly schemaVersion: 1;
18
+ readonly operation: "public-api-audit";
19
+ readonly releaseEligible: false;
20
+ readonly foundationVersion: string;
21
+ readonly requestDigest: string;
22
+ /** Content evidence only; caller namespace immutability and atomic path containment are not verified. */
23
+ readonly custody: {
24
+ readonly supplied: PublicApiAuditRequest["subjects"];
25
+ readonly archiveProvenanceVerified: false;
26
+ readonly archiveDigestVerified: false;
27
+ readonly archiveInventoryCompletenessVerified: false;
28
+ readonly buildExecutionVerified: false;
29
+ };
30
+ readonly observations: readonly AuditObservation[];
31
+ readonly comparisons: readonly AuditComparison[];
32
+ readonly evidenceComplete: boolean;
33
+ readonly errors: readonly string[];
34
+ readonly exitCode: 0 | 2;
35
+ }
36
+ //# sourceMappingURL=public-api-audit-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-api-audit-report.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/model/public-api-audit-report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,2BAA2B,GAAG,mBAAmB,CAAC;IAClE,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACjD,QAAQ,CAAC,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACjD;AACD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,yGAAyG;IACzG,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAAC,QAAQ,CAAC,yBAAyB,EAAE,KAAK,CAAC;QAAC,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC;QAAC,QAAQ,CAAC,oCAAoC,EAAE,KAAK,CAAC;QAAC,QAAQ,CAAC,sBAAsB,EAAE,KAAK,CAAA;KAAE,CAAC;IAC3P,QAAQ,CAAC,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnD,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;IACjD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;CAC1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=public-api-audit-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-api-audit-report.js","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/model/public-api-audit-report.ts"],"names":[],"mappings":""}
@@ -0,0 +1,73 @@
1
+ import type { AuditFileIdentity } from "../../contract/public-api-audit.js";
2
+ export type { AuditFileIdentity } from "../../contract/public-api-audit.js";
3
+ import type { PublicApiSnapshot } from "./public-api.js";
4
+ export declare const PUBLIC_API_AUDIT_PROFILE = "foundation:public-api-audit:declaration-graph:1";
5
+ export type AuditSubject = "A" | "C";
6
+ export interface AuditIdentity {
7
+ readonly subject: AuditSubject;
8
+ readonly packageName: string;
9
+ readonly exportPath: string;
10
+ readonly canonicalReference: string;
11
+ }
12
+ export interface AuditDiagnostic {
13
+ readonly source: "compiler" | "extractor" | "input";
14
+ readonly id: string;
15
+ readonly severity: string;
16
+ readonly text: string;
17
+ readonly file?: string;
18
+ readonly line?: number;
19
+ }
20
+ export interface AuditReference {
21
+ readonly text: string;
22
+ readonly canonicalReference: string | null;
23
+ readonly resolution: "local" | "same-subject-dependency" | "verified-external-library" | "unresolved" | "ambiguous";
24
+ readonly target?: AuditIdentity;
25
+ readonly library?: {
26
+ readonly symbol: string;
27
+ readonly declarations: readonly string[];
28
+ };
29
+ }
30
+ export interface AuditDeclaration {
31
+ readonly displayName: string;
32
+ readonly identity: AuditIdentity;
33
+ readonly kind: string;
34
+ readonly parentReference: string;
35
+ readonly parentKind: string;
36
+ readonly excerpt: string;
37
+ /** Relative to the modeled container; null means the mixin does not apply. */
38
+ readonly isExported: boolean | null;
39
+ readonly public: boolean;
40
+ readonly references: readonly AuditReference[];
41
+ }
42
+ export interface AuditObservation {
43
+ readonly subject: AuditSubject;
44
+ readonly packageName: string;
45
+ readonly packageVersion: string;
46
+ readonly exportPath: string | null;
47
+ readonly modelExpected: boolean;
48
+ readonly toolchain: string;
49
+ readonly normalizationProfile: typeof PUBLIC_API_AUDIT_PROFILE;
50
+ readonly compilerEnvironment: string;
51
+ readonly compilerOptions: Readonly<Record<string, unknown>>;
52
+ readonly configurationDependencies: readonly AuditFileIdentity[];
53
+ readonly sourceFiles: readonly AuditFileIdentity[];
54
+ readonly externalDeclarations: readonly AuditFileIdentity[];
55
+ readonly diagnostics: readonly AuditDiagnostic[];
56
+ readonly compilerDiagnosticsCollected: boolean;
57
+ readonly invocation: {
58
+ readonly outcome: "completed" | "exception" | "not-invoked";
59
+ readonly succeeded: boolean;
60
+ readonly errorCount: number | null;
61
+ readonly warningCount: number | null;
62
+ readonly exception?: string;
63
+ };
64
+ readonly modelPresent: boolean;
65
+ readonly modelDigest?: string;
66
+ readonly items: readonly AuditDeclaration[];
67
+ readonly inputBytesRevalidated: boolean;
68
+ readonly unsupported: readonly string[];
69
+ /** Historical field vocabulary mapped from observed public items; no reconstructed B graph. */
70
+ readonly storedSurface?: PublicApiSnapshot;
71
+ }
72
+ export declare function auditIdentityKey(identity: AuditIdentity): string;
73
+ //# sourceMappingURL=public-api-observation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-api-observation.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/model/public-api-observation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export const PUBLIC_API_AUDIT_PROFILE = "foundation:public-api-audit:declaration-graph:1";
2
+ export function auditIdentityKey(identity) {
3
+ return JSON.stringify([identity.subject, identity.packageName, identity.exportPath, identity.canonicalReference]);
4
+ }
5
+ //# sourceMappingURL=public-api-observation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-api-observation.js","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/model/public-api-observation.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,wBAAwB,GAAG,iDAAiD,CAAC;AAiE1F,MAAM,UAAU,gBAAgB,CAAC,QAAuB;IACtD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACpH,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { type PublicApiSnapshot } from "../model/public-api.js";
2
+ import { type AuditDeclaration, type AuditIdentity, type AuditObservation } from "../model/public-api-observation.js";
3
+ declare function record(item: AuditDeclaration): {
4
+ identity: readonly string[];
5
+ kind: string;
6
+ parentReference: string;
7
+ parentKind: string;
8
+ excerpt: string;
9
+ isExported: boolean | null;
10
+ public: boolean;
11
+ references: {
12
+ text: string;
13
+ canonicalReference: string | null;
14
+ resolution: "ambiguous" | "local" | "same-subject-dependency" | "unresolved" | "verified-external-library";
15
+ target?: readonly string[];
16
+ library?: {
17
+ readonly symbol: string;
18
+ readonly declarations: readonly string[];
19
+ };
20
+ }[];
21
+ };
22
+ export interface AuditGraphProjection {
23
+ readonly snapshot: PublicApiSnapshot;
24
+ readonly graphs: readonly {
25
+ readonly root: AuditIdentity;
26
+ readonly signature: string;
27
+ readonly nodes: readonly ReturnType<typeof record>[];
28
+ }[];
29
+ }
30
+ /** Finite declaration/reference closure, not TypeScript assignability. */
31
+ export declare function projectPublicApiObservation(observations: readonly AuditObservation[], packageName: string): AuditGraphProjection;
32
+ export {};
33
+ //# sourceMappingURL=project-public-api-observation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-public-api-observation.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/policies/project-public-api-observation.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAEL,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EACjE,MAAM,oCAAoC,CAAC;AAM5C,iBAAS,MAAM,CAAC,IAAI,EAAE,gBAAgB;IAElC,QAAQ;IAA6B,IAAI;IACzC,eAAe;IAAwB,UAAU;IACjD,OAAO;IAAgB,UAAU;IAAmB,MAAM;IAC1D,UAAU;;;;;;;;;;EAOb;AACD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS;QACxB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;QAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC;KACtD,EAAE,CAAC;CACL;AAED,0EAA0E;AAC1E,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,SAAS,gBAAgB,EAAE,EAAE,WAAW,EAAE,MAAM,GAC7D,oBAAoB,CA8DtB"}
@@ -0,0 +1,110 @@
1
+ import { compareCanonicalReferences } from "../model/public-api.js";
2
+ import { auditIdentityKey, PUBLIC_API_AUDIT_PROFILE } from "../model/public-api-observation.js";
3
+ /** Subject remains part of resolution identity, but is removed from comparison coordinates. */
4
+ function coordinate(identity) {
5
+ return [identity.packageName, identity.exportPath, identity.canonicalReference];
6
+ }
7
+ function record(item) {
8
+ return {
9
+ identity: coordinate(item.identity), kind: item.kind,
10
+ parentReference: item.parentReference, parentKind: item.parentKind,
11
+ excerpt: item.excerpt, isExported: item.isExported, public: item.public,
12
+ references: item.references.map((reference) => ({
13
+ text: reference.text, canonicalReference: reference.canonicalReference,
14
+ resolution: reference.resolution,
15
+ ...(reference.target === undefined ? {} : { target: coordinate(reference.target) }),
16
+ ...(reference.library === undefined ? {} : { library: reference.library })
17
+ }))
18
+ };
19
+ }
20
+ /** Finite declaration/reference closure, not TypeScript assignability. */
21
+ export function projectPublicApiObservation(observations, packageName) {
22
+ const subject = observations[0]?.subject;
23
+ const index = new Map();
24
+ for (const observation of observations) {
25
+ if (observation.subject !== subject) {
26
+ throw new Error("Mixed audit subjects.");
27
+ }
28
+ for (const item of observation.items) {
29
+ if (item.identity.subject !== subject || item.identity.packageName !== observation.packageName ||
30
+ item.identity.exportPath !== observation.exportPath) {
31
+ throw new Error("Invalid scoped identity.");
32
+ }
33
+ const key = auditIdentityKey(item.identity);
34
+ if (index.has(key)) {
35
+ throw new Error(`Duplicate audit identity: ${key}.`);
36
+ }
37
+ index.set(key, item);
38
+ }
39
+ }
40
+ let visitedRecords = 0;
41
+ let signatureCharacters = 0;
42
+ const graphs = [];
43
+ const packages = observations.filter((observation) => observation.packageName === packageName)
44
+ .toSorted((a, b) => compareCanonicalReferences(a.exportPath ?? "", b.exportPath ?? ""));
45
+ if (packages.length === 0) {
46
+ throw new Error("Missing audit package.");
47
+ }
48
+ if (new Set(packages.map((entry) => entry.exportPath)).size !== packages.length) {
49
+ throw new Error("Duplicate export path.");
50
+ }
51
+ const entrypoints = packages.flatMap((observation) => observation.exportPath === null ? [] : [{
52
+ exportPath: observation.exportPath,
53
+ items: observation.items.filter((item) => item.public)
54
+ .toSorted((a, b) => compareCanonicalReferences(a.identity.canonicalReference, b.identity.canonicalReference))
55
+ .map((root) => {
56
+ const visited = new Set();
57
+ const pending = [root];
58
+ const nodes = [];
59
+ while (pending.length > 0) {
60
+ const item = pending.pop();
61
+ if (item === undefined) {
62
+ break;
63
+ }
64
+ const key = auditIdentityKey(item.identity);
65
+ if (visited.has(key)) {
66
+ continue;
67
+ }
68
+ visited.add(key);
69
+ if (++visitedRecords > 20_000) {
70
+ throw new Error("Audit reachable graph budget exhausted.");
71
+ }
72
+ nodes.push(record(item));
73
+ for (const reference of item.references) {
74
+ if (reference.resolution === "verified-external-library" && reference.library !== undefined) {
75
+ continue;
76
+ }
77
+ if (reference.resolution !== "local" && reference.resolution !== "same-subject-dependency") {
78
+ throw new Error("Unresolved required reference.");
79
+ }
80
+ const target = reference.target === undefined ? undefined : index.get(auditIdentityKey(reference.target));
81
+ if (target === undefined) {
82
+ throw new Error("Missing scoped reference target.");
83
+ }
84
+ pending.push(target);
85
+ }
86
+ // Referenced interfaces/classes/namespaces carry their declaration members.
87
+ for (const member of index.values()) {
88
+ if (member.identity.packageName === item.identity.packageName &&
89
+ member.identity.exportPath === item.identity.exportPath &&
90
+ member.parentReference === item.identity.canonicalReference) {
91
+ pending.push(member);
92
+ }
93
+ }
94
+ }
95
+ const sortedNodes = nodes.toSorted((a, b) => compareCanonicalReferences(JSON.stringify(a.identity), JSON.stringify(b.identity)));
96
+ const signature = JSON.stringify({ domain: PUBLIC_API_AUDIT_PROFILE, nodes: sortedNodes });
97
+ signatureCharacters += signature.length;
98
+ if (signatureCharacters > 16 * 1024 * 1024) {
99
+ throw new Error("Audit projection byte budget exhausted.");
100
+ }
101
+ graphs.push({ root: root.identity, signature, nodes: sortedNodes });
102
+ return { canonicalReference: root.identity.canonicalReference, kind: root.kind,
103
+ parentReference: root.parentReference, parentKind: root.parentKind, signature };
104
+ })
105
+ }]);
106
+ return { snapshot: { schemaVersion: 1, packageName,
107
+ packageVersion: packages[0]?.packageVersion ?? "", extractorVersion: packages[0]?.toolchain ?? "",
108
+ entrypoints }, graphs };
109
+ }
110
+ //# sourceMappingURL=project-public-api-observation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-public-api-observation.js","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/policies/project-public-api-observation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type AuditObservation } from "../model/public-api-observation.js";
2
+ export interface AuditEligibility {
3
+ readonly eligible: boolean;
4
+ readonly reasons: readonly string[];
5
+ }
6
+ /** Admission is Foundation-derived; extraction failure remains a separate failed gate. */
7
+ export declare function publicApiAuditEligibility(observations: readonly AuditObservation[]): AuditEligibility;
8
+ export declare function publicApiAuditPairEligibility(before: readonly AuditObservation[], after: readonly AuditObservation[]): AuditEligibility;
9
+ //# sourceMappingURL=public-api-audit-eligibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-api-audit-eligibility.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/public-api-compatibility/application/policies/public-api-audit-eligibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAEkB,KAAK,gBAAgB,EAC7C,MAAM,oCAAoC,CAAC;AAE5C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAyED,0FAA0F;AAC1F,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,SAAS,gBAAgB,EAAE,GAAG,gBAAgB,CAqBrG;AAOD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,EAAE,KAAK,EAAE,SAAS,gBAAgB,EAAE,GAAG,gBAAgB,CAavI"}