@planu/cli 0.63.7 → 0.64.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 (601) hide show
  1. package/dist/config/license-plans.json +16 -1
  2. package/dist/engine/a2a/capability-card.d.ts +16 -0
  3. package/dist/engine/a2a/capability-card.d.ts.map +1 -0
  4. package/dist/engine/a2a/capability-card.js +69 -0
  5. package/dist/engine/a2a/capability-card.js.map +1 -0
  6. package/dist/engine/a2a/delegate.d.ts +15 -0
  7. package/dist/engine/a2a/delegate.d.ts.map +1 -0
  8. package/dist/engine/a2a/delegate.js +47 -0
  9. package/dist/engine/a2a/delegate.js.map +1 -0
  10. package/dist/engine/a2a/fallback.d.ts +12 -0
  11. package/dist/engine/a2a/fallback.d.ts.map +1 -0
  12. package/dist/engine/a2a/fallback.js +52 -0
  13. package/dist/engine/a2a/fallback.js.map +1 -0
  14. package/dist/engine/a2a/index.d.ts +5 -0
  15. package/dist/engine/a2a/index.d.ts.map +1 -0
  16. package/dist/engine/a2a/index.js +6 -0
  17. package/dist/engine/a2a/index.js.map +1 -0
  18. package/dist/engine/a2a/task-manager.d.ts +39 -0
  19. package/dist/engine/a2a/task-manager.d.ts.map +1 -0
  20. package/dist/engine/a2a/task-manager.js +84 -0
  21. package/dist/engine/a2a/task-manager.js.map +1 -0
  22. package/dist/engine/ac-gap-detector/analyze-gaps.d.ts +13 -0
  23. package/dist/engine/ac-gap-detector/analyze-gaps.d.ts.map +1 -0
  24. package/dist/engine/ac-gap-detector/analyze-gaps.js +43 -0
  25. package/dist/engine/ac-gap-detector/analyze-gaps.js.map +1 -0
  26. package/dist/engine/ac-gap-detector/constants.d.ts +22 -0
  27. package/dist/engine/ac-gap-detector/constants.d.ts.map +1 -0
  28. package/dist/engine/ac-gap-detector/constants.js +143 -0
  29. package/dist/engine/ac-gap-detector/constants.js.map +1 -0
  30. package/dist/engine/ac-gap-detector/gap-rules.d.ts +16 -0
  31. package/dist/engine/ac-gap-detector/gap-rules.d.ts.map +1 -0
  32. package/dist/engine/ac-gap-detector/gap-rules.js +180 -0
  33. package/dist/engine/ac-gap-detector/gap-rules.js.map +1 -0
  34. package/dist/engine/ac-gap-detector/pattern-matcher.d.ts +16 -0
  35. package/dist/engine/ac-gap-detector/pattern-matcher.d.ts.map +1 -0
  36. package/dist/engine/ac-gap-detector/pattern-matcher.js +62 -0
  37. package/dist/engine/ac-gap-detector/pattern-matcher.js.map +1 -0
  38. package/dist/engine/ac-gap-detector.d.ts +3 -0
  39. package/dist/engine/ac-gap-detector.d.ts.map +1 -0
  40. package/dist/engine/ac-gap-detector.js +5 -0
  41. package/dist/engine/ac-gap-detector.js.map +1 -0
  42. package/dist/engine/audit-trail/attestation.d.ts +11 -0
  43. package/dist/engine/audit-trail/attestation.d.ts.map +1 -0
  44. package/dist/engine/audit-trail/attestation.js +47 -0
  45. package/dist/engine/audit-trail/attestation.js.map +1 -0
  46. package/dist/engine/audit-trail/index.d.ts +6 -0
  47. package/dist/engine/audit-trail/index.d.ts.map +1 -0
  48. package/dist/engine/audit-trail/index.js +6 -0
  49. package/dist/engine/audit-trail/index.js.map +1 -0
  50. package/dist/engine/audit-trail/logger.d.ts +17 -0
  51. package/dist/engine/audit-trail/logger.d.ts.map +1 -0
  52. package/dist/engine/audit-trail/logger.js +78 -0
  53. package/dist/engine/audit-trail/logger.js.map +1 -0
  54. package/dist/engine/audit-trail/query.d.ts +7 -0
  55. package/dist/engine/audit-trail/query.d.ts.map +1 -0
  56. package/dist/engine/audit-trail/query.js +61 -0
  57. package/dist/engine/audit-trail/query.js.map +1 -0
  58. package/dist/engine/audit-trail/utils.d.ts +18 -0
  59. package/dist/engine/audit-trail/utils.d.ts.map +1 -0
  60. package/dist/engine/audit-trail/utils.js +44 -0
  61. package/dist/engine/audit-trail/utils.js.map +1 -0
  62. package/dist/engine/audit-trail/verifier.d.ts +10 -0
  63. package/dist/engine/audit-trail/verifier.d.ts.map +1 -0
  64. package/dist/engine/audit-trail/verifier.js +78 -0
  65. package/dist/engine/audit-trail/verifier.js.map +1 -0
  66. package/dist/engine/auth/config.d.ts +20 -0
  67. package/dist/engine/auth/config.d.ts.map +1 -0
  68. package/dist/engine/auth/config.js +49 -0
  69. package/dist/engine/auth/config.js.map +1 -0
  70. package/dist/engine/auth/index.d.ts +6 -0
  71. package/dist/engine/auth/index.d.ts.map +1 -0
  72. package/dist/engine/auth/index.js +7 -0
  73. package/dist/engine/auth/index.js.map +1 -0
  74. package/dist/engine/auth/middleware.d.ts +19 -0
  75. package/dist/engine/auth/middleware.d.ts.map +1 -0
  76. package/dist/engine/auth/middleware.js +64 -0
  77. package/dist/engine/auth/middleware.js.map +1 -0
  78. package/dist/engine/auth/pkce.d.ts +17 -0
  79. package/dist/engine/auth/pkce.d.ts.map +1 -0
  80. package/dist/engine/auth/pkce.js +33 -0
  81. package/dist/engine/auth/pkce.js.map +1 -0
  82. package/dist/engine/auth/scope-mapper.d.ts +21 -0
  83. package/dist/engine/auth/scope-mapper.d.ts.map +1 -0
  84. package/dist/engine/auth/scope-mapper.js +124 -0
  85. package/dist/engine/auth/scope-mapper.js.map +1 -0
  86. package/dist/engine/auth/token-validator.d.ts +15 -0
  87. package/dist/engine/auth/token-validator.d.ts.map +1 -0
  88. package/dist/engine/auth/token-validator.js +121 -0
  89. package/dist/engine/auth/token-validator.js.map +1 -0
  90. package/dist/engine/ci-generator/index.d.ts.map +1 -1
  91. package/dist/engine/ci-generator/index.js +8 -2
  92. package/dist/engine/ci-generator/index.js.map +1 -1
  93. package/dist/engine/ci-generator/yaml-builder.d.ts +7 -2
  94. package/dist/engine/ci-generator/yaml-builder.d.ts.map +1 -1
  95. package/dist/engine/ci-generator/yaml-builder.js +49 -1
  96. package/dist/engine/ci-generator/yaml-builder.js.map +1 -1
  97. package/dist/engine/design-to-spec/ac-generator.d.ts +21 -0
  98. package/dist/engine/design-to-spec/ac-generator.d.ts.map +1 -0
  99. package/dist/engine/design-to-spec/ac-generator.js +185 -0
  100. package/dist/engine/design-to-spec/ac-generator.js.map +1 -0
  101. package/dist/engine/design-to-spec/index.d.ts +11 -0
  102. package/dist/engine/design-to-spec/index.d.ts.map +1 -0
  103. package/dist/engine/design-to-spec/index.js +19 -0
  104. package/dist/engine/design-to-spec/index.js.map +1 -0
  105. package/dist/engine/design-to-spec/parser.d.ts +7 -0
  106. package/dist/engine/design-to-spec/parser.d.ts.map +1 -0
  107. package/dist/engine/design-to-spec/parser.js +290 -0
  108. package/dist/engine/design-to-spec/parser.js.map +1 -0
  109. package/dist/engine/design-to-spec/spec-builder.d.ts +12 -0
  110. package/dist/engine/design-to-spec/spec-builder.d.ts.map +1 -0
  111. package/dist/engine/design-to-spec/spec-builder.js +148 -0
  112. package/dist/engine/design-to-spec/spec-builder.js.map +1 -0
  113. package/dist/engine/design-to-spec/ui-contract-builder.d.ts +17 -0
  114. package/dist/engine/design-to-spec/ui-contract-builder.d.ts.map +1 -0
  115. package/dist/engine/design-to-spec/ui-contract-builder.js +175 -0
  116. package/dist/engine/design-to-spec/ui-contract-builder.js.map +1 -0
  117. package/dist/engine/elicitation/builder.d.ts +37 -0
  118. package/dist/engine/elicitation/builder.d.ts.map +1 -0
  119. package/dist/engine/elicitation/builder.js +115 -0
  120. package/dist/engine/elicitation/builder.js.map +1 -0
  121. package/dist/engine/elicitation/fallback.d.ts +20 -0
  122. package/dist/engine/elicitation/fallback.d.ts.map +1 -0
  123. package/dist/engine/elicitation/fallback.js +72 -0
  124. package/dist/engine/elicitation/fallback.js.map +1 -0
  125. package/dist/engine/elicitation/index.d.ts +4 -0
  126. package/dist/engine/elicitation/index.d.ts.map +1 -0
  127. package/dist/engine/elicitation/index.js +5 -0
  128. package/dist/engine/elicitation/index.js.map +1 -0
  129. package/dist/engine/elicitation/response-parser.d.ts +9 -0
  130. package/dist/engine/elicitation/response-parser.d.ts.map +1 -0
  131. package/dist/engine/elicitation/response-parser.js +163 -0
  132. package/dist/engine/elicitation/response-parser.js.map +1 -0
  133. package/dist/engine/federation/cross-repo-resolver.d.ts +21 -0
  134. package/dist/engine/federation/cross-repo-resolver.d.ts.map +1 -0
  135. package/dist/engine/federation/cross-repo-resolver.js +75 -0
  136. package/dist/engine/federation/cross-repo-resolver.js.map +1 -0
  137. package/dist/engine/federation/drift-checker.d.ts +19 -0
  138. package/dist/engine/federation/drift-checker.d.ts.map +1 -0
  139. package/dist/engine/federation/drift-checker.js +114 -0
  140. package/dist/engine/federation/drift-checker.js.map +1 -0
  141. package/dist/engine/federation/federation-store.d.ts +25 -0
  142. package/dist/engine/federation/federation-store.d.ts.map +1 -0
  143. package/dist/engine/federation/federation-store.js +58 -0
  144. package/dist/engine/federation/federation-store.js.map +1 -0
  145. package/dist/engine/federation/index.d.ts +4 -0
  146. package/dist/engine/federation/index.d.ts.map +1 -0
  147. package/dist/engine/federation/index.js +5 -0
  148. package/dist/engine/federation/index.js.map +1 -0
  149. package/dist/engine/github/spec-ac-analyzer.d.ts +40 -0
  150. package/dist/engine/github/spec-ac-analyzer.d.ts.map +1 -0
  151. package/dist/engine/github/spec-ac-analyzer.js +181 -0
  152. package/dist/engine/github/spec-ac-analyzer.js.map +1 -0
  153. package/dist/engine/hooks/handlers/on-impl-change.d.ts +3 -1
  154. package/dist/engine/hooks/handlers/on-impl-change.d.ts.map +1 -1
  155. package/dist/engine/hooks/handlers/on-impl-change.js +25 -1
  156. package/dist/engine/hooks/handlers/on-impl-change.js.map +1 -1
  157. package/dist/engine/infrastructure/component-mapper.d.ts +9 -0
  158. package/dist/engine/infrastructure/component-mapper.d.ts.map +1 -0
  159. package/dist/engine/infrastructure/component-mapper.js +162 -0
  160. package/dist/engine/infrastructure/component-mapper.js.map +1 -0
  161. package/dist/engine/infrastructure/cost-estimator.d.ts +6 -0
  162. package/dist/engine/infrastructure/cost-estimator.d.ts.map +1 -0
  163. package/dist/engine/infrastructure/cost-estimator.js +48 -0
  164. package/dist/engine/infrastructure/cost-estimator.js.map +1 -0
  165. package/dist/engine/infrastructure/docker-compose-generator.d.ts +6 -0
  166. package/dist/engine/infrastructure/docker-compose-generator.d.ts.map +1 -0
  167. package/dist/engine/infrastructure/docker-compose-generator.js +201 -0
  168. package/dist/engine/infrastructure/docker-compose-generator.js.map +1 -0
  169. package/dist/engine/infrastructure/index.d.ts +15 -0
  170. package/dist/engine/infrastructure/index.d.ts.map +1 -0
  171. package/dist/engine/infrastructure/index.js +67 -0
  172. package/dist/engine/infrastructure/index.js.map +1 -0
  173. package/dist/engine/infrastructure/kubernetes-generator.d.ts +6 -0
  174. package/dist/engine/infrastructure/kubernetes-generator.d.ts.map +1 -0
  175. package/dist/engine/infrastructure/kubernetes-generator.js +141 -0
  176. package/dist/engine/infrastructure/kubernetes-generator.js.map +1 -0
  177. package/dist/engine/infrastructure/railway-generator.d.ts +6 -0
  178. package/dist/engine/infrastructure/railway-generator.d.ts.map +1 -0
  179. package/dist/engine/infrastructure/railway-generator.js +87 -0
  180. package/dist/engine/infrastructure/railway-generator.js.map +1 -0
  181. package/dist/engine/infrastructure/signal-detector.d.ts +7 -0
  182. package/dist/engine/infrastructure/signal-detector.d.ts.map +1 -0
  183. package/dist/engine/infrastructure/signal-detector.js +174 -0
  184. package/dist/engine/infrastructure/signal-detector.js.map +1 -0
  185. package/dist/engine/infrastructure/terraform-generator.d.ts +6 -0
  186. package/dist/engine/infrastructure/terraform-generator.d.ts.map +1 -0
  187. package/dist/engine/infrastructure/terraform-generator.js +241 -0
  188. package/dist/engine/infrastructure/terraform-generator.js.map +1 -0
  189. package/dist/engine/living-spec/annotation-parser.d.ts.map +1 -1
  190. package/dist/engine/living-spec/annotation-parser.js.map +1 -1
  191. package/dist/engine/living-spec/auto-updater.d.ts +58 -0
  192. package/dist/engine/living-spec/auto-updater.d.ts.map +1 -0
  193. package/dist/engine/living-spec/auto-updater.js +311 -0
  194. package/dist/engine/living-spec/auto-updater.js.map +1 -0
  195. package/dist/engine/living-spec/conflict-resolver.d.ts +46 -0
  196. package/dist/engine/living-spec/conflict-resolver.d.ts.map +1 -0
  197. package/dist/engine/living-spec/conflict-resolver.js +301 -0
  198. package/dist/engine/living-spec/conflict-resolver.js.map +1 -0
  199. package/dist/engine/living-spec/hash-tracker.d.ts.map +1 -1
  200. package/dist/engine/living-spec/hash-tracker.js.map +1 -1
  201. package/dist/engine/living-spec/index.d.ts +1 -0
  202. package/dist/engine/living-spec/index.d.ts.map +1 -1
  203. package/dist/engine/living-spec/index.js +1 -0
  204. package/dist/engine/living-spec/index.js.map +1 -1
  205. package/dist/engine/living-spec/signature-tracker.d.ts.map +1 -1
  206. package/dist/engine/living-spec/signature-tracker.js.map +1 -1
  207. package/dist/engine/observability/config.d.ts +16 -0
  208. package/dist/engine/observability/config.d.ts.map +1 -0
  209. package/dist/engine/observability/config.js +44 -0
  210. package/dist/engine/observability/config.js.map +1 -0
  211. package/dist/engine/observability/index.d.ts +7 -0
  212. package/dist/engine/observability/index.d.ts.map +1 -0
  213. package/dist/engine/observability/index.js +8 -0
  214. package/dist/engine/observability/index.js.map +1 -0
  215. package/dist/engine/observability/metrics.d.ts +12 -0
  216. package/dist/engine/observability/metrics.d.ts.map +1 -0
  217. package/dist/engine/observability/metrics.js +61 -0
  218. package/dist/engine/observability/metrics.js.map +1 -0
  219. package/dist/engine/observability/noop-tracer.d.ts +13 -0
  220. package/dist/engine/observability/noop-tracer.d.ts.map +1 -0
  221. package/dist/engine/observability/noop-tracer.js +41 -0
  222. package/dist/engine/observability/noop-tracer.js.map +1 -0
  223. package/dist/engine/observability/otel-tracer.d.ts +19 -0
  224. package/dist/engine/observability/otel-tracer.d.ts.map +1 -0
  225. package/dist/engine/observability/otel-tracer.js +134 -0
  226. package/dist/engine/observability/otel-tracer.js.map +1 -0
  227. package/dist/engine/observability/span-helpers.d.ts +28 -0
  228. package/dist/engine/observability/span-helpers.d.ts.map +1 -0
  229. package/dist/engine/observability/span-helpers.js +68 -0
  230. package/dist/engine/observability/span-helpers.js.map +1 -0
  231. package/dist/engine/observability/tracer.d.ts +26 -0
  232. package/dist/engine/observability/tracer.d.ts.map +1 -0
  233. package/dist/engine/observability/tracer.js +45 -0
  234. package/dist/engine/observability/tracer.js.map +1 -0
  235. package/dist/engine/rbac/index.d.ts +3 -0
  236. package/dist/engine/rbac/index.d.ts.map +1 -0
  237. package/dist/engine/rbac/index.js +4 -0
  238. package/dist/engine/rbac/index.js.map +1 -0
  239. package/dist/engine/rbac/permission-checker.d.ts +21 -0
  240. package/dist/engine/rbac/permission-checker.d.ts.map +1 -0
  241. package/dist/engine/rbac/permission-checker.js +74 -0
  242. package/dist/engine/rbac/permission-checker.js.map +1 -0
  243. package/dist/engine/rbac/roles.d.ts +12 -0
  244. package/dist/engine/rbac/roles.d.ts.map +1 -0
  245. package/dist/engine/rbac/roles.js +37 -0
  246. package/dist/engine/rbac/roles.js.map +1 -0
  247. package/dist/engine/shared/ac-extractor.d.ts +9 -0
  248. package/dist/engine/shared/ac-extractor.d.ts.map +1 -0
  249. package/dist/engine/shared/ac-extractor.js +36 -0
  250. package/dist/engine/shared/ac-extractor.js.map +1 -0
  251. package/dist/engine/shared/line-diff.d.ts +11 -0
  252. package/dist/engine/shared/line-diff.d.ts.map +1 -0
  253. package/dist/engine/shared/line-diff.js +32 -0
  254. package/dist/engine/shared/line-diff.js.map +1 -0
  255. package/dist/engine/spec-decomposer/analyzer.d.ts +18 -0
  256. package/dist/engine/spec-decomposer/analyzer.d.ts.map +1 -0
  257. package/dist/engine/spec-decomposer/analyzer.js +263 -0
  258. package/dist/engine/spec-decomposer/analyzer.js.map +1 -0
  259. package/dist/engine/spec-decomposer/file-mapper.d.ts +17 -0
  260. package/dist/engine/spec-decomposer/file-mapper.d.ts.map +1 -0
  261. package/dist/engine/spec-decomposer/file-mapper.js +96 -0
  262. package/dist/engine/spec-decomposer/file-mapper.js.map +1 -0
  263. package/dist/engine/spec-decomposer/index.d.ts +14 -0
  264. package/dist/engine/spec-decomposer/index.d.ts.map +1 -0
  265. package/dist/engine/spec-decomposer/index.js +50 -0
  266. package/dist/engine/spec-decomposer/index.js.map +1 -0
  267. package/dist/engine/spec-decomposer/ownership-resolver.d.ts +7 -0
  268. package/dist/engine/spec-decomposer/ownership-resolver.d.ts.map +1 -0
  269. package/dist/engine/spec-decomposer/ownership-resolver.js +169 -0
  270. package/dist/engine/spec-decomposer/ownership-resolver.js.map +1 -0
  271. package/dist/engine/spec-observability/index.d.ts +4 -0
  272. package/dist/engine/spec-observability/index.d.ts.map +1 -0
  273. package/dist/engine/spec-observability/index.js +4 -0
  274. package/dist/engine/spec-observability/index.js.map +1 -0
  275. package/dist/engine/spec-observability/metrics.d.ts +8 -0
  276. package/dist/engine/spec-observability/metrics.d.ts.map +1 -0
  277. package/dist/engine/spec-observability/metrics.js +116 -0
  278. package/dist/engine/spec-observability/metrics.js.map +1 -0
  279. package/dist/engine/spec-observability/tracker.d.ts +22 -0
  280. package/dist/engine/spec-observability/tracker.d.ts.map +1 -0
  281. package/dist/engine/spec-observability/tracker.js +77 -0
  282. package/dist/engine/spec-observability/tracker.js.map +1 -0
  283. package/dist/engine/spec-reader.d.ts +7 -0
  284. package/dist/engine/spec-reader.d.ts.map +1 -0
  285. package/dist/engine/spec-reader.js +23 -0
  286. package/dist/engine/spec-reader.js.map +1 -0
  287. package/dist/engine/spec-repair.d.ts +10 -0
  288. package/dist/engine/spec-repair.d.ts.map +1 -0
  289. package/dist/engine/spec-repair.js +388 -0
  290. package/dist/engine/spec-repair.js.map +1 -0
  291. package/dist/engine/spec-versioning/brancher.d.ts +17 -0
  292. package/dist/engine/spec-versioning/brancher.d.ts.map +1 -0
  293. package/dist/engine/spec-versioning/brancher.js +113 -0
  294. package/dist/engine/spec-versioning/brancher.js.map +1 -0
  295. package/dist/engine/spec-versioning/differ.d.ts +19 -0
  296. package/dist/engine/spec-versioning/differ.d.ts.map +1 -0
  297. package/dist/engine/spec-versioning/differ.js +151 -0
  298. package/dist/engine/spec-versioning/differ.js.map +1 -0
  299. package/dist/engine/spec-versioning/index.d.ts +5 -0
  300. package/dist/engine/spec-versioning/index.d.ts.map +1 -0
  301. package/dist/engine/spec-versioning/index.js +6 -0
  302. package/dist/engine/spec-versioning/index.js.map +1 -0
  303. package/dist/engine/spec-versioning/merger.d.ts +18 -0
  304. package/dist/engine/spec-versioning/merger.d.ts.map +1 -0
  305. package/dist/engine/spec-versioning/merger.js +113 -0
  306. package/dist/engine/spec-versioning/merger.js.map +1 -0
  307. package/dist/engine/spec-versioning/version-store.d.ts +18 -0
  308. package/dist/engine/spec-versioning/version-store.d.ts.map +1 -0
  309. package/dist/engine/spec-versioning/version-store.js +96 -0
  310. package/dist/engine/spec-versioning/version-store.js.map +1 -0
  311. package/dist/engine/well-known/discovery.d.ts +7 -0
  312. package/dist/engine/well-known/discovery.d.ts.map +1 -0
  313. package/dist/engine/well-known/discovery.js +109 -0
  314. package/dist/engine/well-known/discovery.js.map +1 -0
  315. package/dist/engine/well-known/index.d.ts +6 -0
  316. package/dist/engine/well-known/index.d.ts.map +1 -0
  317. package/dist/engine/well-known/index.js +5 -0
  318. package/dist/engine/well-known/index.js.map +1 -0
  319. package/dist/engine/well-known/manifest-generator.d.ts +7 -0
  320. package/dist/engine/well-known/manifest-generator.d.ts.map +1 -0
  321. package/dist/engine/well-known/manifest-generator.js +60 -0
  322. package/dist/engine/well-known/manifest-generator.js.map +1 -0
  323. package/dist/engine/well-known/manifest-schema.d.ts +92 -0
  324. package/dist/engine/well-known/manifest-schema.d.ts.map +1 -0
  325. package/dist/engine/well-known/manifest-schema.js +70 -0
  326. package/dist/engine/well-known/manifest-schema.js.map +1 -0
  327. package/dist/resources/spec-granular.d.ts +33 -0
  328. package/dist/resources/spec-granular.d.ts.map +1 -0
  329. package/dist/resources/spec-granular.js +299 -0
  330. package/dist/resources/spec-granular.js.map +1 -0
  331. package/dist/storage/federation-store.d.ts +29 -0
  332. package/dist/storage/federation-store.d.ts.map +1 -0
  333. package/dist/storage/federation-store.js +111 -0
  334. package/dist/storage/federation-store.js.map +1 -0
  335. package/dist/storage/index.d.ts +3 -0
  336. package/dist/storage/index.d.ts.map +1 -1
  337. package/dist/storage/index.js +3 -0
  338. package/dist/storage/index.js.map +1 -1
  339. package/dist/storage/rbac-store.d.ts +8 -0
  340. package/dist/storage/rbac-store.d.ts.map +1 -0
  341. package/dist/storage/rbac-store.js +75 -0
  342. package/dist/storage/rbac-store.js.map +1 -0
  343. package/dist/storage/spec-observability-store.d.ts +16 -0
  344. package/dist/storage/spec-observability-store.d.ts.map +1 -0
  345. package/dist/storage/spec-observability-store.js +55 -0
  346. package/dist/storage/spec-observability-store.js.map +1 -0
  347. package/dist/tools/a2a-handler.d.ts +14 -0
  348. package/dist/tools/a2a-handler.d.ts.map +1 -0
  349. package/dist/tools/a2a-handler.js +100 -0
  350. package/dist/tools/a2a-handler.js.map +1 -0
  351. package/dist/tools/assign-role-handler.d.ts +3 -0
  352. package/dist/tools/assign-role-handler.d.ts.map +1 -0
  353. package/dist/tools/assign-role-handler.js +25 -0
  354. package/dist/tools/assign-role-handler.js.map +1 -0
  355. package/dist/tools/audit-trail-handler.d.ts +4 -0
  356. package/dist/tools/audit-trail-handler.d.ts.map +1 -0
  357. package/dist/tools/audit-trail-handler.js +91 -0
  358. package/dist/tools/audit-trail-handler.js.map +1 -0
  359. package/dist/tools/auto-update-spec.d.ts +3 -0
  360. package/dist/tools/auto-update-spec.d.ts.map +1 -0
  361. package/dist/tools/auto-update-spec.js +43 -0
  362. package/dist/tools/auto-update-spec.js.map +1 -0
  363. package/dist/tools/branch-spec.d.ts +3 -0
  364. package/dist/tools/branch-spec.d.ts.map +1 -0
  365. package/dist/tools/branch-spec.js +68 -0
  366. package/dist/tools/branch-spec.js.map +1 -0
  367. package/dist/tools/configure-auth-handler.d.ts +15 -0
  368. package/dist/tools/configure-auth-handler.d.ts.map +1 -0
  369. package/dist/tools/configure-auth-handler.js +113 -0
  370. package/dist/tools/configure-auth-handler.js.map +1 -0
  371. package/dist/tools/configure-observability.d.ts +14 -0
  372. package/dist/tools/configure-observability.d.ts.map +1 -0
  373. package/dist/tools/configure-observability.js +96 -0
  374. package/dist/tools/configure-observability.js.map +1 -0
  375. package/dist/tools/configure-roles-handler.d.ts +4 -0
  376. package/dist/tools/configure-roles-handler.d.ts.map +1 -0
  377. package/dist/tools/configure-roles-handler.js +36 -0
  378. package/dist/tools/configure-roles-handler.js.map +1 -0
  379. package/dist/tools/create-spec-hu/ac-adapters/architecture-adapter.d.ts +7 -0
  380. package/dist/tools/create-spec-hu/ac-adapters/architecture-adapter.d.ts.map +1 -0
  381. package/dist/tools/create-spec-hu/ac-adapters/architecture-adapter.js +114 -0
  382. package/dist/tools/create-spec-hu/ac-adapters/architecture-adapter.js.map +1 -0
  383. package/dist/tools/create-spec-hu/ac-adapters/database-adapter.d.ts +7 -0
  384. package/dist/tools/create-spec-hu/ac-adapters/database-adapter.d.ts.map +1 -0
  385. package/dist/tools/create-spec-hu/ac-adapters/database-adapter.js +48 -0
  386. package/dist/tools/create-spec-hu/ac-adapters/database-adapter.js.map +1 -0
  387. package/dist/tools/create-spec-hu/ac-adapters/index.d.ts +14 -0
  388. package/dist/tools/create-spec-hu/ac-adapters/index.d.ts.map +1 -0
  389. package/dist/tools/create-spec-hu/ac-adapters/index.js +28 -0
  390. package/dist/tools/create-spec-hu/ac-adapters/index.js.map +1 -0
  391. package/dist/tools/create-spec-hu/ac-adapters/stack-adapter.d.ts +7 -0
  392. package/dist/tools/create-spec-hu/ac-adapters/stack-adapter.d.ts.map +1 -0
  393. package/dist/tools/create-spec-hu/ac-adapters/stack-adapter.js +99 -0
  394. package/dist/tools/create-spec-hu/ac-adapters/stack-adapter.js.map +1 -0
  395. package/dist/tools/create-spec-hu/ac-adapters/testing-adapter.d.ts +7 -0
  396. package/dist/tools/create-spec-hu/ac-adapters/testing-adapter.d.ts.map +1 -0
  397. package/dist/tools/create-spec-hu/ac-adapters/testing-adapter.js +62 -0
  398. package/dist/tools/create-spec-hu/ac-adapters/testing-adapter.js.map +1 -0
  399. package/dist/tools/create-spec-hu/hu-body-generators.d.ts.map +1 -1
  400. package/dist/tools/create-spec-hu/hu-body-generators.js +41 -19
  401. package/dist/tools/create-spec-hu/hu-body-generators.js.map +1 -1
  402. package/dist/tools/create-spec-tech/ficha-content.d.ts.map +1 -1
  403. package/dist/tools/create-spec-tech/ficha-content.js +235 -5
  404. package/dist/tools/create-spec-tech/ficha-content.js.map +1 -1
  405. package/dist/tools/decompose-spec.d.ts +7 -0
  406. package/dist/tools/decompose-spec.d.ts.map +1 -0
  407. package/dist/tools/decompose-spec.js +49 -0
  408. package/dist/tools/decompose-spec.js.map +1 -0
  409. package/dist/tools/design-to-spec.d.ts +12 -0
  410. package/dist/tools/design-to-spec.d.ts.map +1 -0
  411. package/dist/tools/design-to-spec.js +73 -0
  412. package/dist/tools/design-to-spec.js.map +1 -0
  413. package/dist/tools/detect-ac-gaps.d.ts +7 -0
  414. package/dist/tools/detect-ac-gaps.d.ts.map +1 -0
  415. package/dist/tools/detect-ac-gaps.js +63 -0
  416. package/dist/tools/detect-ac-gaps.js.map +1 -0
  417. package/dist/tools/discover-registry.d.ts +8 -0
  418. package/dist/tools/discover-registry.d.ts.map +1 -0
  419. package/dist/tools/discover-registry.js +79 -0
  420. package/dist/tools/discover-registry.js.map +1 -0
  421. package/dist/tools/federate-specs.d.ts +6 -0
  422. package/dist/tools/federate-specs.d.ts.map +1 -0
  423. package/dist/tools/federate-specs.js +41 -0
  424. package/dist/tools/federate-specs.js.map +1 -0
  425. package/dist/tools/federation-status.d.ts +6 -0
  426. package/dist/tools/federation-status.d.ts.map +1 -0
  427. package/dist/tools/federation-status.js +56 -0
  428. package/dist/tools/federation-status.js.map +1 -0
  429. package/dist/tools/generate-annotations.d.ts.map +1 -1
  430. package/dist/tools/generate-annotations.js +3 -1
  431. package/dist/tools/generate-annotations.js.map +1 -1
  432. package/dist/tools/generate-infrastructure.d.ts +3 -0
  433. package/dist/tools/generate-infrastructure.d.ts.map +1 -0
  434. package/dist/tools/generate-infrastructure.js +60 -0
  435. package/dist/tools/generate-infrastructure.js.map +1 -0
  436. package/dist/tools/merge-spec-branch.d.ts +3 -0
  437. package/dist/tools/merge-spec-branch.d.ts.map +1 -0
  438. package/dist/tools/merge-spec-branch.js +103 -0
  439. package/dist/tools/merge-spec-branch.js.map +1 -0
  440. package/dist/tools/publish-registry.d.ts +8 -0
  441. package/dist/tools/publish-registry.d.ts.map +1 -0
  442. package/dist/tools/publish-registry.js +76 -0
  443. package/dist/tools/publish-registry.js.map +1 -0
  444. package/dist/tools/register-a2a-tools.d.ts +3 -0
  445. package/dist/tools/register-a2a-tools.d.ts.map +1 -0
  446. package/dist/tools/register-a2a-tools.js +66 -0
  447. package/dist/tools/register-a2a-tools.js.map +1 -0
  448. package/dist/tools/register-audit-trail-tools.d.ts +3 -0
  449. package/dist/tools/register-audit-trail-tools.d.ts.map +1 -0
  450. package/dist/tools/register-audit-trail-tools.js +62 -0
  451. package/dist/tools/register-audit-trail-tools.js.map +1 -0
  452. package/dist/tools/register-decompose-tools.d.ts +3 -0
  453. package/dist/tools/register-decompose-tools.d.ts.map +1 -0
  454. package/dist/tools/register-decompose-tools.js +31 -0
  455. package/dist/tools/register-decompose-tools.js.map +1 -0
  456. package/dist/tools/register-federation-tools.d.ts +6 -0
  457. package/dist/tools/register-federation-tools.d.ts.map +1 -0
  458. package/dist/tools/register-federation-tools.js +48 -0
  459. package/dist/tools/register-federation-tools.js.map +1 -0
  460. package/dist/tools/register-infrastructure-tools.d.ts +3 -0
  461. package/dist/tools/register-infrastructure-tools.d.ts.map +1 -0
  462. package/dist/tools/register-infrastructure-tools.js +34 -0
  463. package/dist/tools/register-infrastructure-tools.js.map +1 -0
  464. package/dist/tools/register-living-spec-tools.d.ts.map +1 -1
  465. package/dist/tools/register-living-spec-tools.js +2 -8
  466. package/dist/tools/register-living-spec-tools.js.map +1 -1
  467. package/dist/tools/register-observability-tools.d.ts +3 -0
  468. package/dist/tools/register-observability-tools.d.ts.map +1 -0
  469. package/dist/tools/register-observability-tools.js +48 -0
  470. package/dist/tools/register-observability-tools.js.map +1 -0
  471. package/dist/tools/register-rbac-tools.d.ts +3 -0
  472. package/dist/tools/register-rbac-tools.d.ts.map +1 -0
  473. package/dist/tools/register-rbac-tools.js +36 -0
  474. package/dist/tools/register-rbac-tools.js.map +1 -0
  475. package/dist/tools/register-spec-observability-tools.d.ts +3 -0
  476. package/dist/tools/register-spec-observability-tools.d.ts.map +1 -0
  477. package/dist/tools/register-spec-observability-tools.js +24 -0
  478. package/dist/tools/register-spec-observability-tools.js.map +1 -0
  479. package/dist/tools/register-versioning-tools.d.ts +3 -0
  480. package/dist/tools/register-versioning-tools.d.ts.map +1 -0
  481. package/dist/tools/register-versioning-tools.js +93 -0
  482. package/dist/tools/register-versioning-tools.js.map +1 -0
  483. package/dist/tools/register-well-known-tools.d.ts +3 -0
  484. package/dist/tools/register-well-known-tools.d.ts.map +1 -0
  485. package/dist/tools/register-well-known-tools.js +36 -0
  486. package/dist/tools/register-well-known-tools.js.map +1 -0
  487. package/dist/tools/repair-spec.d.ts +9 -0
  488. package/dist/tools/repair-spec.d.ts.map +1 -0
  489. package/dist/tools/repair-spec.js +93 -0
  490. package/dist/tools/repair-spec.js.map +1 -0
  491. package/dist/tools/resolve-spec-conflict.d.ts +7 -0
  492. package/dist/tools/resolve-spec-conflict.d.ts.map +1 -0
  493. package/dist/tools/resolve-spec-conflict.js +63 -0
  494. package/dist/tools/resolve-spec-conflict.js.map +1 -0
  495. package/dist/tools/response-helpers.d.ts +42 -0
  496. package/dist/tools/response-helpers.d.ts.map +1 -1
  497. package/dist/tools/response-helpers.js +29 -0
  498. package/dist/tools/response-helpers.js.map +1 -1
  499. package/dist/tools/schemas/auth-schema.d.ts +12 -0
  500. package/dist/tools/schemas/auth-schema.d.ts.map +1 -0
  501. package/dist/tools/schemas/auth-schema.js +38 -0
  502. package/dist/tools/schemas/auth-schema.js.map +1 -0
  503. package/dist/tools/schemas/rbac.d.ts +26 -0
  504. package/dist/tools/schemas/rbac.d.ts.map +1 -0
  505. package/dist/tools/schemas/rbac.js +25 -0
  506. package/dist/tools/schemas/rbac.js.map +1 -0
  507. package/dist/tools/schemas/well-known.d.ts +12 -0
  508. package/dist/tools/schemas/well-known.d.ts.map +1 -0
  509. package/dist/tools/schemas/well-known.js +31 -0
  510. package/dist/tools/schemas/well-known.js.map +1 -0
  511. package/dist/tools/snapshot-spec-hashes.d.ts.map +1 -1
  512. package/dist/tools/snapshot-spec-hashes.js.map +1 -1
  513. package/dist/tools/spec-usage-report.d.ts +3 -0
  514. package/dist/tools/spec-usage-report.d.ts.map +1 -0
  515. package/dist/tools/spec-usage-report.js +95 -0
  516. package/dist/tools/spec-usage-report.js.map +1 -0
  517. package/dist/tools/start-hooks.d.ts.map +1 -1
  518. package/dist/tools/start-hooks.js +93 -16
  519. package/dist/tools/start-hooks.js.map +1 -1
  520. package/dist/tools/version-spec.d.ts +3 -0
  521. package/dist/tools/version-spec.d.ts.map +1 -0
  522. package/dist/tools/version-spec.js +54 -0
  523. package/dist/tools/version-spec.js.map +1 -0
  524. package/dist/types/a2a.d.ts +125 -0
  525. package/dist/types/a2a.d.ts.map +1 -0
  526. package/dist/types/a2a.js +3 -0
  527. package/dist/types/a2a.js.map +1 -0
  528. package/dist/types/ac-gap.d.ts +57 -0
  529. package/dist/types/ac-gap.d.ts.map +1 -0
  530. package/dist/types/ac-gap.js +3 -0
  531. package/dist/types/ac-gap.js.map +1 -0
  532. package/dist/types/audit-trail.d.ts +77 -0
  533. package/dist/types/audit-trail.d.ts.map +1 -0
  534. package/dist/types/audit-trail.js +3 -0
  535. package/dist/types/audit-trail.js.map +1 -0
  536. package/dist/types/auth.d.ts +82 -0
  537. package/dist/types/auth.d.ts.map +1 -0
  538. package/dist/types/auth.js +3 -0
  539. package/dist/types/auth.js.map +1 -0
  540. package/dist/types/ci.d.ts +10 -25
  541. package/dist/types/ci.d.ts.map +1 -1
  542. package/dist/types/design-to-spec.d.ts +89 -0
  543. package/dist/types/design-to-spec.d.ts.map +1 -0
  544. package/dist/types/design-to-spec.js +3 -0
  545. package/dist/types/design-to-spec.js.map +1 -0
  546. package/dist/types/elicitation.d.ts +109 -0
  547. package/dist/types/elicitation.d.ts.map +1 -0
  548. package/dist/types/elicitation.js +3 -0
  549. package/dist/types/elicitation.js.map +1 -0
  550. package/dist/types/federation.d.ts +95 -0
  551. package/dist/types/federation.d.ts.map +1 -0
  552. package/dist/types/federation.js +3 -0
  553. package/dist/types/federation.js.map +1 -0
  554. package/dist/types/file-hooks.d.ts +8 -6
  555. package/dist/types/file-hooks.d.ts.map +1 -1
  556. package/dist/types/github.d.ts +17 -0
  557. package/dist/types/github.d.ts.map +1 -1
  558. package/dist/types/index.d.ts +16 -0
  559. package/dist/types/index.d.ts.map +1 -1
  560. package/dist/types/index.js +16 -0
  561. package/dist/types/index.js.map +1 -1
  562. package/dist/types/infrastructure.d.ts +71 -0
  563. package/dist/types/infrastructure.d.ts.map +1 -0
  564. package/dist/types/infrastructure.js +3 -0
  565. package/dist/types/infrastructure.js.map +1 -0
  566. package/dist/types/living-spec.d.ts +100 -0
  567. package/dist/types/living-spec.d.ts.map +1 -1
  568. package/dist/types/observability.d.ts +105 -0
  569. package/dist/types/observability.d.ts.map +1 -0
  570. package/dist/types/observability.js +3 -0
  571. package/dist/types/observability.js.map +1 -0
  572. package/dist/types/rbac.d.ts +51 -0
  573. package/dist/types/rbac.d.ts.map +1 -0
  574. package/dist/types/rbac.js +4 -0
  575. package/dist/types/rbac.js.map +1 -0
  576. package/dist/types/resources.d.ts +20 -0
  577. package/dist/types/resources.d.ts.map +1 -0
  578. package/dist/types/resources.js +3 -0
  579. package/dist/types/resources.js.map +1 -0
  580. package/dist/types/spec/repair.d.ts +33 -0
  581. package/dist/types/spec/repair.d.ts.map +1 -0
  582. package/dist/types/spec/repair.js +3 -0
  583. package/dist/types/spec/repair.js.map +1 -0
  584. package/dist/types/spec-decomposer.d.ts +108 -0
  585. package/dist/types/spec-decomposer.d.ts.map +1 -0
  586. package/dist/types/spec-decomposer.js +4 -0
  587. package/dist/types/spec-decomposer.js.map +1 -0
  588. package/dist/types/spec-observability.d.ts +71 -0
  589. package/dist/types/spec-observability.d.ts.map +1 -0
  590. package/dist/types/spec-observability.js +4 -0
  591. package/dist/types/spec-observability.js.map +1 -0
  592. package/dist/types/spec-versioning.d.ts +117 -0
  593. package/dist/types/spec-versioning.d.ts.map +1 -0
  594. package/dist/types/spec-versioning.js +3 -0
  595. package/dist/types/spec-versioning.js.map +1 -0
  596. package/dist/types/well-known.d.ts +70 -0
  597. package/dist/types/well-known.d.ts.map +1 -0
  598. package/dist/types/well-known.js +3 -0
  599. package/dist/types/well-known.js.map +1 -0
  600. package/package.json +1 -1
  601. package/src/config/license-plans.json +16 -1
@@ -0,0 +1,143 @@
1
+ /** Numeric weight per priority (higher = more important). Used for sorting and scoring. */
2
+ export const PRIORITY_ORDER = {
3
+ critical: 4,
4
+ high: 3,
5
+ medium: 2,
6
+ low: 1,
7
+ };
8
+ /** Keywords that indicate an existing AC already covers error handling. */
9
+ export const ERROR_HANDLING_KEYWORDS = [
10
+ 'error',
11
+ 'fail',
12
+ 'invalid',
13
+ 'exception',
14
+ 'reject',
15
+ '4xx',
16
+ '5xx',
17
+ 'not found',
18
+ '404',
19
+ '500',
20
+ 'timeout',
21
+ 'unavailable',
22
+ 'catch',
23
+ 'handling',
24
+ ];
25
+ /** Keywords that indicate existing ACs cover security concerns. */
26
+ export const SECURITY_KEYWORDS = [
27
+ 'auth',
28
+ 'permission',
29
+ 'role',
30
+ 'unauthorized',
31
+ 'forbidden',
32
+ 'jwt',
33
+ 'token',
34
+ 'csrf',
35
+ 'xss',
36
+ 'inject',
37
+ 'sanitize',
38
+ 'rate limit',
39
+ 'throttle',
40
+ 'secure',
41
+ 'encrypt',
42
+ 'https',
43
+ ];
44
+ /** Keywords that indicate existing ACs cover performance concerns. */
45
+ export const PERFORMANCE_KEYWORDS = [
46
+ 'performance',
47
+ 'latency',
48
+ 'response time',
49
+ 'load',
50
+ 'concurrent',
51
+ 'throughput',
52
+ 'cache',
53
+ 'slow',
54
+ 'fast',
55
+ 'benchmark',
56
+ 'sla',
57
+ 'p95',
58
+ 'p99',
59
+ ];
60
+ /** Keywords that indicate existing ACs cover accessibility. */
61
+ export const ACCESSIBILITY_KEYWORDS = [
62
+ 'accessibility',
63
+ 'a11y',
64
+ 'wcag',
65
+ 'aria',
66
+ 'screen reader',
67
+ 'keyboard',
68
+ 'focus',
69
+ 'contrast',
70
+ 'alt text',
71
+ ];
72
+ /** Keywords that indicate existing ACs cover input/data validation. */
73
+ export const DATA_VALIDATION_KEYWORDS = [
74
+ 'validate',
75
+ 'validation',
76
+ 'required field',
77
+ 'max length',
78
+ 'min length',
79
+ 'format',
80
+ 'schema',
81
+ 'constraint',
82
+ 'sanitize',
83
+ 'input',
84
+ 'boundary',
85
+ ];
86
+ /** Keywords that indicate existing ACs cover observability. */
87
+ export const OBSERVABILITY_KEYWORDS = [
88
+ 'log',
89
+ 'metric',
90
+ 'trace',
91
+ 'monitor',
92
+ 'alert',
93
+ 'audit',
94
+ 'observability',
95
+ 'telemetry',
96
+ 'event',
97
+ ];
98
+ /** Keywords that indicate existing ACs cover edge cases broadly. */
99
+ export const EDGE_CASE_KEYWORDS = [
100
+ 'edge',
101
+ 'empty',
102
+ 'null',
103
+ 'boundary',
104
+ 'concurrent',
105
+ 'race condition',
106
+ 'duplicate',
107
+ 'overflow',
108
+ 'underflow',
109
+ 'missing',
110
+ 'optional',
111
+ ];
112
+ /** Keywords that indicate existing ACs cover rollback / undo. */
113
+ export const ROLLBACK_KEYWORDS = [
114
+ 'rollback',
115
+ 'undo',
116
+ 'revert',
117
+ 'restore',
118
+ 'migration',
119
+ 'transaction',
120
+ 'atomic',
121
+ 'idempotent',
122
+ ];
123
+ /** Signal words that suggest this spec likely has UI / frontend components. */
124
+ export const WEB_UI_KEYWORDS = [
125
+ 'ui',
126
+ 'frontend',
127
+ 'form',
128
+ 'page',
129
+ 'view',
130
+ 'component',
131
+ 'modal',
132
+ 'button',
133
+ 'screen',
134
+ 'layout',
135
+ 'render',
136
+ 'display',
137
+ 'react',
138
+ 'vue',
139
+ 'angular',
140
+ 'html',
141
+ 'css',
142
+ ];
143
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/engine/ac-gap-detector/constants.ts"],"names":[],"mappings":"AAGA,2FAA2F;AAC3F,MAAM,CAAC,MAAM,cAAc,GAAkC;IAC3D,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,CAAC;CACP,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,uBAAuB,GAAsB;IACxD,OAAO;IACP,MAAM;IACN,SAAS;IACT,WAAW;IACX,QAAQ;IACR,KAAK;IACL,KAAK;IACL,WAAW;IACX,KAAK;IACL,KAAK;IACL,SAAS;IACT,aAAa;IACb,OAAO;IACP,UAAU;CACX,CAAC;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,MAAM;IACN,YAAY;IACZ,MAAM;IACN,cAAc;IACd,WAAW;IACX,KAAK;IACL,OAAO;IACP,MAAM;IACN,KAAK;IACL,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,UAAU;IACV,QAAQ;IACR,SAAS;IACT,OAAO;CACR,CAAC;AAEF,sEAAsE;AACtE,MAAM,CAAC,MAAM,oBAAoB,GAAsB;IACrD,aAAa;IACb,SAAS;IACT,eAAe;IACf,MAAM;IACN,YAAY;IACZ,YAAY;IACZ,OAAO;IACP,MAAM;IACN,MAAM;IACN,WAAW;IACX,KAAK;IACL,KAAK;IACL,KAAK;CACN,CAAC;AAEF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACvD,eAAe;IACf,MAAM;IACN,MAAM;IACN,MAAM;IACN,eAAe;IACf,UAAU;IACV,OAAO;IACP,UAAU;IACV,UAAU;CACX,CAAC;AAEF,uEAAuE;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAsB;IACzD,UAAU;IACV,YAAY;IACZ,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,UAAU;IACV,OAAO;IACP,UAAU;CACX,CAAC;AAEF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACvD,KAAK;IACL,QAAQ;IACR,OAAO;IACP,SAAS;IACT,OAAO;IACP,OAAO;IACP,eAAe;IACf,WAAW;IACX,OAAO;CACR,CAAC;AAEF,oEAAoE;AACpE,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,MAAM;IACN,OAAO;IACP,MAAM;IACN,UAAU;IACV,YAAY;IACZ,gBAAgB;IAChB,WAAW;IACX,UAAU;IACV,WAAW;IACX,SAAS;IACT,UAAU;CACX,CAAC;AAEF,iEAAiE;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,UAAU;IACV,MAAM;IACN,QAAQ;IACR,SAAS;IACT,WAAW;IACX,aAAa;IACb,QAAQ;IACR,YAAY;CACb,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAsB;IAChD,IAAI;IACJ,UAAU;IACV,MAAM;IACN,MAAM;IACN,MAAM;IACN,WAAW;IACX,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,OAAO;IACP,KAAK;IACL,SAAS;IACT,MAAM;IACN,KAAK;CACN,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { GapRule } from '../../types/ac-gap.js';
2
+ export declare const ruleErrorHandling: GapRule;
3
+ export declare const ruleSecurityAuth: GapRule;
4
+ export declare const ruleDataValidation: GapRule;
5
+ export declare const rulePerformance: GapRule;
6
+ export declare const ruleAccessibility: GapRule;
7
+ export declare const ruleEdgeCases: GapRule;
8
+ export declare const ruleObservability: GapRule;
9
+ export declare const ruleRollback: GapRule;
10
+ /** All rules, ordered from highest to lowest default priority. */
11
+ export declare const ALL_RULES: readonly GapRule[];
12
+ /** Map from category name to its rule for targeted execution. */
13
+ export declare const RULE_BY_CATEGORY: Record<string, GapRule>;
14
+ /** Returns the rules to run given an optional category filter. */
15
+ export declare function selectRules(categories?: string[]): readonly GapRule[];
16
+ //# sourceMappingURL=gap-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gap-rules.d.ts","sourceRoot":"","sources":["../../../src/engine/ac-gap-detector/gap-rules.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,OAAO,EAAE,MAAM,uBAAuB,CAAC;AA8BrE,eAAO,MAAM,iBAAiB,EAAE,OAe/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,OAoB9B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,OAmBhC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,OAmB7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,OAkB/B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,OAmB3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,OAmB/B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,OAmB1B,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EASvC,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CASpD,CAAC;AAEF,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,OAAO,EAAE,CAOrE"}
@@ -0,0 +1,180 @@
1
+ import { containsAny } from './pattern-matcher.js';
2
+ import { ERROR_HANDLING_KEYWORDS, SECURITY_KEYWORDS, PERFORMANCE_KEYWORDS, ACCESSIBILITY_KEYWORDS, DATA_VALIDATION_KEYWORDS, OBSERVABILITY_KEYWORDS, EDGE_CASE_KEYWORDS, ROLLBACK_KEYWORDS, } from './constants.js';
3
+ /** Generates a sequential ID for a suggestion (e.g. "GAP-01"). */
4
+ function nextId(ctx, prefix) {
5
+ const counter = ctx.idCounter;
6
+ counter.value += 1;
7
+ return `${prefix}-${String(counter.value).padStart(2, '0')}`;
8
+ }
9
+ /** Checks whether any existing AC already covers the given keywords. */
10
+ function acCovers(acLines, keywords) {
11
+ const combined = acLines.join(' ').toLowerCase();
12
+ return containsAny(combined, keywords);
13
+ }
14
+ // ---------------------------------------------------------------------------
15
+ // Individual gap rules
16
+ // ---------------------------------------------------------------------------
17
+ export const ruleErrorHandling = (ctx) => {
18
+ if (acCovers(ctx.acLines, ERROR_HANDLING_KEYWORDS)) {
19
+ return null;
20
+ }
21
+ return {
22
+ id: nextId(ctx, 'EH'),
23
+ category: 'error-handling',
24
+ priority: 'high',
25
+ suggestion: 'Add ACs covering error and failure scenarios',
26
+ rationale: 'No existing AC addresses error handling. Every user-facing operation should specify behavior on failure.',
27
+ example: 'When the operation fails due to a server error, the system shows an actionable error message and does not corrupt state.',
28
+ };
29
+ };
30
+ export const ruleSecurityAuth = (ctx) => {
31
+ if (acCovers(ctx.acLines, SECURITY_KEYWORDS)) {
32
+ return null;
33
+ }
34
+ // Only flag if the spec text mentions anything that could be user-facing or data-mutating
35
+ const mutableKeywords = ['create', 'update', 'delete', 'submit', 'write', 'post', 'put'];
36
+ if (!containsAny(ctx.fullText, mutableKeywords)) {
37
+ return null;
38
+ }
39
+ return {
40
+ id: nextId(ctx, 'SEC'),
41
+ category: 'security',
42
+ priority: 'critical',
43
+ suggestion: 'Add ACs specifying authentication and authorization requirements',
44
+ rationale: 'The spec describes mutable operations but no AC defines who is allowed to perform them.',
45
+ example: 'When an unauthenticated user attempts the action, the system returns 401 and logs the attempt.',
46
+ };
47
+ };
48
+ export const ruleDataValidation = (ctx) => {
49
+ if (acCovers(ctx.acLines, DATA_VALIDATION_KEYWORDS)) {
50
+ return null;
51
+ }
52
+ const inputKeywords = ['input', 'form', 'field', 'parameter', 'payload', 'body', 'request'];
53
+ if (!containsAny(ctx.fullText, inputKeywords)) {
54
+ return null;
55
+ }
56
+ return {
57
+ id: nextId(ctx, 'DV'),
58
+ category: 'data-validation',
59
+ priority: 'high',
60
+ suggestion: 'Add ACs covering input validation boundaries and constraints',
61
+ rationale: 'The spec references inputs or form fields but no AC defines validation rules, required fields, or format constraints.',
62
+ example: 'When the user submits a required field as empty, the system highlights the field and prevents submission.',
63
+ };
64
+ };
65
+ export const rulePerformance = (ctx) => {
66
+ if (acCovers(ctx.acLines, PERFORMANCE_KEYWORDS)) {
67
+ return null;
68
+ }
69
+ const heavyKeywords = ['list', 'search', 'query', 'load', 'export', 'report', 'bulk', 'batch'];
70
+ if (!containsAny(ctx.fullText, heavyKeywords)) {
71
+ return null;
72
+ }
73
+ return {
74
+ id: nextId(ctx, 'PERF'),
75
+ category: 'performance',
76
+ priority: 'medium',
77
+ suggestion: 'Add ACs defining acceptable response time or throughput',
78
+ rationale: 'The spec involves potentially expensive operations (search/list/bulk) but no AC defines performance expectations.',
79
+ example: 'When the user triggers a list/search, the response completes in under 2 seconds for up to 10,000 records.',
80
+ };
81
+ };
82
+ export const ruleAccessibility = (ctx) => {
83
+ if (!ctx.hasWebUi) {
84
+ return null;
85
+ }
86
+ if (acCovers(ctx.acLines, ACCESSIBILITY_KEYWORDS)) {
87
+ return null;
88
+ }
89
+ return {
90
+ id: nextId(ctx, 'A11Y'),
91
+ category: 'accessibility',
92
+ priority: 'medium',
93
+ suggestion: 'Add ACs verifying keyboard navigation and screen reader compatibility',
94
+ rationale: 'This spec appears to include UI components but no AC ensures WCAG accessibility compliance.',
95
+ example: 'When a keyboard-only user navigates the form, all interactive elements are reachable via Tab and operable via Enter/Space.',
96
+ };
97
+ };
98
+ export const ruleEdgeCases = (ctx) => {
99
+ if (acCovers(ctx.acLines, EDGE_CASE_KEYWORDS)) {
100
+ return null;
101
+ }
102
+ // Flag when there are fewer than 3 ACs — sparse specs likely miss edge cases
103
+ if (ctx.acLines.length >= 3) {
104
+ return null;
105
+ }
106
+ return {
107
+ id: nextId(ctx, 'EDGE'),
108
+ category: 'edge-cases',
109
+ priority: 'medium',
110
+ suggestion: 'Add ACs covering empty/null/boundary input conditions',
111
+ rationale: 'The spec has few acceptance criteria and likely misses edge cases such as empty collections, null values, or boundary inputs.',
112
+ example: 'When the dataset is empty, the system renders a clear empty-state message instead of an error.',
113
+ };
114
+ };
115
+ export const ruleObservability = (ctx) => {
116
+ if (acCovers(ctx.acLines, OBSERVABILITY_KEYWORDS)) {
117
+ return null;
118
+ }
119
+ const criticalKeywords = ['payment', 'billing', 'order', 'transaction', 'deploy', 'migration'];
120
+ if (!containsAny(ctx.fullText, criticalKeywords)) {
121
+ return null;
122
+ }
123
+ return {
124
+ id: nextId(ctx, 'OBS'),
125
+ category: 'observability',
126
+ priority: 'high',
127
+ suggestion: 'Add ACs specifying logging and audit trail requirements',
128
+ rationale: 'The spec involves business-critical operations that typically require audit logs or metrics.',
129
+ example: 'When the operation completes (or fails), an audit log entry is written with actor, timestamp, and outcome.',
130
+ };
131
+ };
132
+ export const ruleRollback = (ctx) => {
133
+ if (acCovers(ctx.acLines, ROLLBACK_KEYWORDS)) {
134
+ return null;
135
+ }
136
+ const migrationKeywords = ['migration', 'schema change', 'deploy', 'upgrade', 'rollout'];
137
+ if (!containsAny(ctx.fullText, migrationKeywords)) {
138
+ return null;
139
+ }
140
+ return {
141
+ id: nextId(ctx, 'RB'),
142
+ category: 'rollback',
143
+ priority: 'high',
144
+ suggestion: 'Add ACs covering rollback or undo behavior if the operation fails midway',
145
+ rationale: 'The spec describes a multi-step or migration-like operation but no AC defines the rollback strategy.',
146
+ example: 'When the migration fails partway through, the system rolls back all changes and the database is left in its original state.',
147
+ };
148
+ };
149
+ /** All rules, ordered from highest to lowest default priority. */
150
+ export const ALL_RULES = [
151
+ ruleSecurityAuth,
152
+ ruleErrorHandling,
153
+ ruleDataValidation,
154
+ ruleRollback,
155
+ ruleObservability,
156
+ rulePerformance,
157
+ ruleAccessibility,
158
+ ruleEdgeCases,
159
+ ];
160
+ /** Map from category name to its rule for targeted execution. */
161
+ export const RULE_BY_CATEGORY = {
162
+ 'error-handling': ruleErrorHandling,
163
+ security: ruleSecurityAuth,
164
+ 'data-validation': ruleDataValidation,
165
+ performance: rulePerformance,
166
+ accessibility: ruleAccessibility,
167
+ 'edge-cases': ruleEdgeCases,
168
+ observability: ruleObservability,
169
+ rollback: ruleRollback,
170
+ };
171
+ /** Returns the rules to run given an optional category filter. */
172
+ export function selectRules(categories) {
173
+ if (!categories || categories.length === 0) {
174
+ return ALL_RULES;
175
+ }
176
+ return categories
177
+ .map((cat) => RULE_BY_CATEGORY[cat])
178
+ .filter((r) => r !== undefined);
179
+ }
180
+ //# sourceMappingURL=gap-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gap-rules.js","sourceRoot":"","sources":["../../../src/engine/ac-gap-detector/gap-rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Returns true if any keyword from the list appears in the text (case-insensitive).
3
+ */
4
+ export declare function containsAny(text: string, keywords: readonly string[]): boolean;
5
+ /**
6
+ * Extracts acceptance criteria lines from markdown text.
7
+ * Looks for lines starting with "- [ ]", "- [x]", "- [X]", numbered items, or "AC:" prefix.
8
+ * Returns an array of cleaned criterion strings.
9
+ */
10
+ export declare function extractAcLines(markdown: string): string[];
11
+ /**
12
+ * Computes a simple coverage score 0–100 based on how many gap categories
13
+ * are already addressed vs total expected categories.
14
+ */
15
+ export declare function computeCoverageScore(coveredCategories: Set<string>, totalCategories: number): number;
16
+ //# sourceMappingURL=pattern-matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-matcher.d.ts","sourceRoot":"","sources":["../../../src/engine/ac-gap-detector/pattern-matcher.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAG9E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAwCzD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC9B,eAAe,EAAE,MAAM,GACtB,MAAM,CAMR"}
@@ -0,0 +1,62 @@
1
+ // engine/ac-gap-detector/pattern-matcher.ts — Low-level keyword matching utilities (SPEC-156)
2
+ /**
3
+ * Returns true if any keyword from the list appears in the text (case-insensitive).
4
+ */
5
+ export function containsAny(text, keywords) {
6
+ const lower = text.toLowerCase();
7
+ return keywords.some((kw) => lower.includes(kw));
8
+ }
9
+ /**
10
+ * Extracts acceptance criteria lines from markdown text.
11
+ * Looks for lines starting with "- [ ]", "- [x]", "- [X]", numbered items, or "AC:" prefix.
12
+ * Returns an array of cleaned criterion strings.
13
+ */
14
+ export function extractAcLines(markdown) {
15
+ const lines = markdown.split('\n');
16
+ const results = [];
17
+ // Track whether we are inside an acceptance criteria section.
18
+ // Sections start at a heading that matches AC keywords and end at the next heading.
19
+ const AC_HEADING = /^#{1,4}\s+(?:acceptance\s+criteria|ac\b)/i;
20
+ const ANY_HEADING = /^#{1,4}\s+/;
21
+ let insideAcSection = false;
22
+ for (const raw of lines) {
23
+ const line = raw.trim();
24
+ // Update section tracking when we hit a heading
25
+ if (ANY_HEADING.test(line)) {
26
+ insideAcSection = AC_HEADING.test(line);
27
+ }
28
+ // BDD / checkbox style: "- [ ] Given...", "- [x] When..." — always captured regardless of section
29
+ if (/^-\s*\[[ xX]\]/.test(line)) {
30
+ results.push(line.replace(/^-\s*\[[ xX]\]\s*/, '').trim());
31
+ continue;
32
+ }
33
+ // Numbered list: "1. When the user..." — always captured regardless of section
34
+ if (/^\d+\.\s+/.test(line)) {
35
+ results.push(line.replace(/^\d+\.\s+/, '').trim());
36
+ continue;
37
+ }
38
+ // "AC:" prefix — always captured regardless of section
39
+ if (/^ac:/i.test(line)) {
40
+ results.push(line.replace(/^ac:\s*/i, '').trim());
41
+ continue;
42
+ }
43
+ // Plain bullet (- or *) — only captured when inside an acceptance criteria section
44
+ // to avoid pulling in unrelated list items from other sections of the spec.
45
+ if (insideAcSection && /^[-*]\s+/.test(line) && line.length > 5) {
46
+ results.push(line.replace(/^[-*]\s+/, '').trim());
47
+ }
48
+ }
49
+ return results.filter((l) => l.length > 0);
50
+ }
51
+ /**
52
+ * Computes a simple coverage score 0–100 based on how many gap categories
53
+ * are already addressed vs total expected categories.
54
+ */
55
+ export function computeCoverageScore(coveredCategories, totalCategories) {
56
+ if (totalCategories === 0) {
57
+ return 0;
58
+ }
59
+ const ratio = coveredCategories.size / totalCategories;
60
+ return Math.round(ratio * 100);
61
+ }
62
+ //# sourceMappingURL=pattern-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-matcher.js","sourceRoot":"","sources":["../../../src/engine/ac-gap-detector/pattern-matcher.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAE9F;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,QAA2B;IACnE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,8DAA8D;IAC9D,oFAAoF;IACpF,MAAM,UAAU,GAAG,2CAA2C,CAAC;IAC/D,MAAM,WAAW,GAAG,YAAY,CAAC;IACjC,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAExB,gDAAgD;QAChD,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,kGAAkG;QAClG,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,SAAS;QACX,CAAC;QACD,+EAA+E;QAC/E,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QACD,uDAAuD;QACvD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAClD,SAAS;QACX,CAAC;QACD,mFAAmF;QACnF,4EAA4E;QAC5E,IAAI,eAAe,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,iBAA8B,EAC9B,eAAuB;IAEvB,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,GAAG,eAAe,CAAC;IACvD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { analyzeAcGaps } from './ac-gap-detector/analyze-gaps.js';
2
+ export { PRIORITY_ORDER } from './ac-gap-detector/constants.js';
3
+ //# sourceMappingURL=ac-gap-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ac-gap-detector.d.ts","sourceRoot":"","sources":["../../src/engine/ac-gap-detector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,5 @@
1
+ // engine/ac-gap-detector.ts — Analyzes a spec's acceptance criteria and finds gaps (SPEC-156)
2
+ // Barrel re-export — implementation in src/engine/ac-gap-detector/ subdirectory
3
+ export { analyzeAcGaps } from './ac-gap-detector/analyze-gaps.js';
4
+ export { PRIORITY_ORDER } from './ac-gap-detector/constants.js';
5
+ //# sourceMappingURL=ac-gap-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ac-gap-detector.js","sourceRoot":"","sources":["../../src/engine/ac-gap-detector.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,gFAAgF;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { AttestationData } from '../../types/audit-trail.js';
2
+ /**
3
+ * Generate an attestation document for all events of a given spec.
4
+ * Verifies chain integrity and embeds the result in the attestation.
5
+ *
6
+ * @param filePath Absolute path to the project's audit-log.jsonl.
7
+ * @param projectId Project identifier.
8
+ * @param specId Spec identifier to filter events for.
9
+ */
10
+ export declare function generateAttestation(filePath: string, projectId: string, specId: string): Promise<AttestationData>;
11
+ //# sourceMappingURL=attestation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../../../src/engine/audit-trail/attestation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAA8B,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAe9F;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC,CAyB1B"}
@@ -0,0 +1,47 @@
1
+ // engine/audit-trail/attestation.ts — Generate attestation document for a spec (SPEC-167)
2
+ // Produces structured JSON (no runtime PDF deps required).
3
+ import { randomUUID } from 'node:crypto';
4
+ import { queryAuditLog } from './query.js';
5
+ import { verifyChainIntegrity } from './verifier.js';
6
+ /**
7
+ * Build an event-type frequency map from an array of events.
8
+ */
9
+ function buildEventTypeSummary(events) {
10
+ const counts = {};
11
+ for (const ev of events) {
12
+ counts[ev.eventType] = (counts[ev.eventType] ?? 0) + 1;
13
+ }
14
+ return counts;
15
+ }
16
+ /**
17
+ * Generate an attestation document for all events of a given spec.
18
+ * Verifies chain integrity and embeds the result in the attestation.
19
+ *
20
+ * @param filePath Absolute path to the project's audit-log.jsonl.
21
+ * @param projectId Project identifier.
22
+ * @param specId Spec identifier to filter events for.
23
+ */
24
+ export async function generateAttestation(filePath, projectId, specId) {
25
+ const [queryResult, chainResult] = await Promise.all([
26
+ queryAuditLog(filePath, { projectId, specId, limit: 1000 }),
27
+ verifyChainIntegrity(filePath),
28
+ ]);
29
+ const events = queryResult.events;
30
+ const timestamps = events.map((e) => e.timestamp).sort();
31
+ const summary = {
32
+ totalEvents: events.length,
33
+ firstEvent: timestamps[0],
34
+ lastEvent: timestamps[timestamps.length - 1],
35
+ eventTypes: buildEventTypeSummary(events),
36
+ };
37
+ return {
38
+ attestationId: randomUUID(),
39
+ generatedAt: new Date().toISOString(),
40
+ projectId,
41
+ specId,
42
+ events,
43
+ chainValid: chainResult.valid,
44
+ summary,
45
+ };
46
+ }
47
+ //# sourceMappingURL=attestation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attestation.js","sourceRoot":"","sources":["../../../src/engine/audit-trail/attestation.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,2DAA2D;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD;;GAEG;AACH,SAAS,qBAAqB,CAAC,MAAoB;IACjD,MAAM,MAAM,GAA4C,EAAE,CAAC;IAC3D,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,SAAiB,EACjB,MAAc;IAEd,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnD,aAAa,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC3D,oBAAoB,CAAC,QAAQ,CAAC;KAC/B,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAClC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;IAEzD,MAAM,OAAO,GAAG;QACd,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;QACzB,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5C,UAAU,EAAE,qBAAqB,CAAC,MAAM,CAAC;KAC1C,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,UAAU,EAAE;QAC3B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,SAAS;QACT,MAAM;QACN,MAAM;QACN,UAAU,EAAE,WAAW,CAAC,KAAK;QAC7B,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { appendEvent } from './logger.js';
2
+ export type { AppendEventInput } from './logger.js';
3
+ export { queryAuditLog } from './query.js';
4
+ export { verifyChainIntegrity } from './verifier.js';
5
+ export { generateAttestation } from './attestation.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/audit-trail/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,6 @@
1
+ // engine/audit-trail/index.ts — Barrel export for audit-trail engine module (SPEC-167)
2
+ export { appendEvent } from './logger.js';
3
+ export { queryAuditLog } from './query.js';
4
+ export { verifyChainIntegrity } from './verifier.js';
5
+ export { generateAttestation } from './attestation.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/audit-trail/index.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { AuditEvent, AppendEventInput } from '../../types/audit-trail.js';
2
+ export type { AppendEventInput };
3
+ /**
4
+ * Compute SHA-256 hex digest of a string.
5
+ */
6
+ export declare function sha256(input: string): string;
7
+ /**
8
+ * Append a new audit event to the JSONL log at filePath.
9
+ * Each event's hash is derived from the previous entry's hash, forming a chain.
10
+ * The file is created (with parent dirs) if it does not exist.
11
+ *
12
+ * Writes are serialized per file via a promise queue to prevent race conditions
13
+ * that would break the hash chain when multiple events are appended concurrently.
14
+ */
15
+ export declare function appendEvent(filePath: string, input: AppendEventInput): Promise<AuditEvent>;
16
+ export { canonicalJson } from './utils.js';
17
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/engine/audit-trail/logger.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE/E,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5C;AA0DD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAgB1F;AAID,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}