kibi-cli 2.1.0 → 2.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 (398) hide show
  1. package/dist/cli-operation-loader.d.ts.map +1 -1
  2. package/dist/cli-operation-loader.js +3 -0
  3. package/dist/cli-operation-metadata.d.ts +4 -0
  4. package/dist/cli-operation-metadata.d.ts.map +1 -1
  5. package/dist/cli-operation-metadata.js +5 -0
  6. package/dist/cli-protocol.d.ts.map +1 -1
  7. package/dist/cli-protocol.js +3 -2
  8. package/dist/cli-register-reporting.d.ts.map +1 -1
  9. package/dist/cli-register-reporting.js +4 -0
  10. package/dist/commands/aggregated-checks.d.ts +7 -0
  11. package/dist/commands/aggregated-checks.d.ts.map +1 -1
  12. package/dist/commands/aggregated-checks.js +25 -1
  13. package/dist/commands/check-diff.d.ts +5 -0
  14. package/dist/commands/check-diff.d.ts.map +1 -0
  15. package/dist/commands/check-diff.js +62 -0
  16. package/dist/commands/check-generated.d.ts.map +1 -1
  17. package/dist/commands/check-generated.js +41 -18
  18. package/dist/commands/check.d.ts.map +1 -1
  19. package/dist/commands/check.js +231 -86
  20. package/dist/commands/doctor.d.ts.map +1 -1
  21. package/dist/commands/doctor.js +168 -53
  22. package/dist/commands/github-init.d.ts +1 -1
  23. package/dist/commands/github-init.d.ts.map +1 -1
  24. package/dist/commands/github-init.js +10 -3
  25. package/dist/commands/init-helpers.d.ts +17 -2
  26. package/dist/commands/init-helpers.d.ts.map +1 -1
  27. package/dist/commands/init-helpers.js +123 -23
  28. package/dist/commands/init.d.ts.map +1 -1
  29. package/dist/commands/init.js +110 -15
  30. package/dist/commands/prove.d.ts.map +1 -1
  31. package/dist/commands/prove.js +10 -18
  32. package/dist/commands/sync/cache.d.ts +20 -1
  33. package/dist/commands/sync/cache.d.ts.map +1 -1
  34. package/dist/commands/sync/cache.js +51 -2
  35. package/dist/commands/sync/discovery.d.ts.map +1 -1
  36. package/dist/commands/sync/discovery.js +1 -1
  37. package/dist/commands/sync/manifest.d.ts.map +1 -1
  38. package/dist/commands/sync/manifest.js +3 -1
  39. package/dist/commands/sync/persistence.d.ts.map +1 -1
  40. package/dist/commands/sync/persistence.js +8 -0
  41. package/dist/commands/sync.d.ts.map +1 -1
  42. package/dist/commands/sync.js +11 -3
  43. package/dist/engine.d.ts +41 -1
  44. package/dist/engine.d.ts.map +1 -1
  45. package/dist/engine.js +377 -80
  46. package/dist/extractors/manifest.d.ts.map +1 -1
  47. package/dist/extractors/manifest.js +66 -28
  48. package/dist/extractors/markdown.d.ts +2 -0
  49. package/dist/extractors/markdown.d.ts.map +1 -1
  50. package/dist/extractors/markdown.js +14 -3
  51. package/dist/extractors/relationships.d.ts.map +1 -1
  52. package/dist/extractors/relationships.js +1 -0
  53. package/dist/extractors/symbols-coordinator.d.ts +7 -0
  54. package/dist/extractors/symbols-coordinator.d.ts.map +1 -1
  55. package/dist/extractors/symbols-coordinator.js +75 -39
  56. package/dist/intent-search.d.ts.map +1 -1
  57. package/dist/intent-search.js +68 -29
  58. package/dist/operations/bootstrap/generate.d.ts.map +1 -1
  59. package/dist/operations/bootstrap/generate.js +4 -3
  60. package/dist/operations/modeling/model-requirement.d.ts +1 -1
  61. package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
  62. package/dist/operations/modeling/model-requirement.js +176 -10
  63. package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
  64. package/dist/operations/modeling/predicate-applyplan.js +14 -2
  65. package/dist/operations/modeling/predicate-inference-1.js +1 -1
  66. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
  67. package/dist/operations/modeling/predicate-loader.js +24 -0
  68. package/dist/operations/modeling/predicate-types.d.ts +4 -0
  69. package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
  70. package/dist/operations/modeling/predicate-vocabulary.d.ts +54 -0
  71. package/dist/operations/modeling/predicate-vocabulary.d.ts.map +1 -0
  72. package/dist/operations/modeling/predicate-vocabulary.js +169 -0
  73. package/dist/operations/modeling/requirement-types.d.ts +5 -0
  74. package/dist/operations/modeling/requirement-types.d.ts.map +1 -1
  75. package/dist/operations/modeling/vocabulary-alignment.d.ts +60 -0
  76. package/dist/operations/modeling/vocabulary-alignment.d.ts.map +1 -0
  77. package/dist/operations/modeling/vocabulary-alignment.js +178 -0
  78. package/dist/operations/mutation/contradictions.d.ts +3 -0
  79. package/dist/operations/mutation/contradictions.d.ts.map +1 -1
  80. package/dist/operations/mutation/contradictions.js +29 -0
  81. package/dist/operations/mutation/delete.d.ts.map +1 -1
  82. package/dist/operations/mutation/delete.js +33 -1
  83. package/dist/operations/mutation/predicate-vocabulary-guard.d.ts +8 -0
  84. package/dist/operations/mutation/predicate-vocabulary-guard.d.ts.map +1 -0
  85. package/dist/operations/mutation/predicate-vocabulary-guard.js +64 -0
  86. package/dist/operations/mutation/relationships.d.ts +1 -1
  87. package/dist/operations/mutation/relationships.d.ts.map +1 -1
  88. package/dist/operations/mutation/relationships.js +1 -0
  89. package/dist/operations/mutation/saga.d.ts +5 -0
  90. package/dist/operations/mutation/saga.d.ts.map +1 -1
  91. package/dist/operations/mutation/saga.js +10 -0
  92. package/dist/operations/mutation/serialization.d.ts.map +1 -1
  93. package/dist/operations/mutation/serialization.js +2 -0
  94. package/dist/operations/mutation/source-authoring.d.ts +6 -0
  95. package/dist/operations/mutation/source-authoring.d.ts.map +1 -1
  96. package/dist/operations/mutation/source-authoring.js +213 -52
  97. package/dist/operations/mutation/strict-fact.d.ts.map +1 -1
  98. package/dist/operations/mutation/strict-fact.js +5 -0
  99. package/dist/operations/mutation/types.d.ts +17 -0
  100. package/dist/operations/mutation/types.d.ts.map +1 -1
  101. package/dist/operations/mutation/upsert.d.ts +6 -0
  102. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  103. package/dist/operations/mutation/upsert.js +77 -11
  104. package/dist/operations/mutation/validate-upsert.d.ts.map +1 -1
  105. package/dist/operations/mutation/validate-upsert.js +24 -1
  106. package/dist/operations/mutation/validation.d.ts.map +1 -1
  107. package/dist/operations/mutation/validation.js +16 -3
  108. package/dist/operations/planning/apply-plan.d.ts.map +1 -1
  109. package/dist/operations/planning/apply-plan.js +66 -26
  110. package/dist/operations/planning/compile-intent.d.ts.map +1 -1
  111. package/dist/operations/planning/compile-intent.js +3 -1
  112. package/dist/operations/proof/code-scope.d.ts +17 -0
  113. package/dist/operations/proof/code-scope.d.ts.map +1 -0
  114. package/dist/operations/proof/code-scope.js +60 -0
  115. package/dist/operations/proof/ingest-proof.d.ts +4 -2
  116. package/dist/operations/proof/ingest-proof.d.ts.map +1 -1
  117. package/dist/operations/proof/ingest-proof.js +208 -74
  118. package/dist/operations/proof/migrate-legacy-receipts.d.ts.map +1 -1
  119. package/dist/operations/proof/migrate-legacy-receipts.js +7 -5
  120. package/dist/operations/proof/prune-receipts.d.ts.map +1 -1
  121. package/dist/operations/proof/prune-receipts.js +7 -5
  122. package/dist/operations/semantic-advisor/analysis-receipt.d.ts.map +1 -1
  123. package/dist/operations/semantic-advisor/analysis-receipt.js +7 -1
  124. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  125. package/dist/operations/semantic-advisor/analyze-prose.js +26 -4
  126. package/dist/operations/semantic-advisor/clauses.d.ts +1 -0
  127. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
  128. package/dist/operations/semantic-advisor/clauses.js +7 -1
  129. package/dist/performance-trace.d.ts +17 -0
  130. package/dist/performance-trace.d.ts.map +1 -0
  131. package/dist/performance-trace.js +134 -0
  132. package/dist/plugins/approved-source-analyzers.d.ts +13 -0
  133. package/dist/plugins/approved-source-analyzers.d.ts.map +1 -0
  134. package/dist/plugins/approved-source-analyzers.generated.d.ts +71 -0
  135. package/dist/plugins/approved-source-analyzers.generated.d.ts.map +1 -0
  136. package/dist/plugins/approved-source-analyzers.generated.js +77 -0
  137. package/dist/plugins/approved-source-analyzers.js +3 -0
  138. package/dist/plugins/compose-semantic-classifier.d.ts +6 -1
  139. package/dist/plugins/compose-semantic-classifier.d.ts.map +1 -1
  140. package/dist/plugins/compose-semantic-classifier.js +8 -3
  141. package/dist/plugins/compose-vocabulary-alignment.d.ts +23 -0
  142. package/dist/plugins/compose-vocabulary-alignment.d.ts.map +1 -0
  143. package/dist/plugins/compose-vocabulary-alignment.js +141 -0
  144. package/dist/plugins/external-allowlist.d.ts +7 -0
  145. package/dist/plugins/external-allowlist.d.ts.map +1 -1
  146. package/dist/plugins/external-allowlist.js +13 -0
  147. package/dist/plugins/index.d.ts +2 -0
  148. package/dist/plugins/index.d.ts.map +1 -1
  149. package/dist/plugins/index.js +4 -0
  150. package/dist/plugins/maintenance-source-analysis.d.ts +14 -0
  151. package/dist/plugins/maintenance-source-analysis.d.ts.map +1 -0
  152. package/dist/plugins/maintenance-source-analysis.js +191 -0
  153. package/dist/plugins/registry.d.ts +3 -1
  154. package/dist/plugins/registry.d.ts.map +1 -1
  155. package/dist/plugins/registry.js +27 -1
  156. package/dist/plugins/source-analysis-service.d.ts +36 -1
  157. package/dist/plugins/source-analysis-service.d.ts.map +1 -1
  158. package/dist/plugins/source-analysis-service.js +184 -27
  159. package/dist/plugins/source-change-analysis.d.ts +15 -0
  160. package/dist/plugins/source-change-analysis.d.ts.map +1 -0
  161. package/dist/plugins/source-change-analysis.js +54 -0
  162. package/dist/plugins/source-classification.d.ts +41 -0
  163. package/dist/plugins/source-classification.d.ts.map +1 -0
  164. package/dist/plugins/source-classification.js +490 -0
  165. package/dist/prolog/codec.d.ts.map +1 -1
  166. package/dist/prolog/codec.js +2 -0
  167. package/dist/prolog/swipl-resolver.d.ts +88 -0
  168. package/dist/prolog/swipl-resolver.d.ts.map +1 -0
  169. package/dist/prolog/swipl-resolver.js +446 -0
  170. package/dist/prolog.d.ts +51 -1
  171. package/dist/prolog.d.ts.map +1 -1
  172. package/dist/prolog.js +145 -15
  173. package/dist/public/diagnostic-usage.d.ts.map +1 -1
  174. package/dist/public/diagnostic-usage.js +7 -25
  175. package/dist/public/impact/analyzer.d.ts.map +1 -1
  176. package/dist/public/impact/analyzer.js +56 -5
  177. package/dist/public/impact/diagnostics.d.ts.map +1 -1
  178. package/dist/public/impact/diagnostics.js +3 -1
  179. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  180. package/dist/public/impact/full-kb-quality.js +4 -12
  181. package/dist/public/impact/manifest.d.ts.map +1 -1
  182. package/dist/public/impact/manifest.js +15 -1
  183. package/dist/public/impact/source-changes.d.ts.map +1 -1
  184. package/dist/public/impact/source-changes.js +35 -27
  185. package/dist/public/impact/types.d.ts +2 -0
  186. package/dist/public/impact/types.d.ts.map +1 -1
  187. package/dist/public/operations/catalog.d.ts +80 -7
  188. package/dist/public/operations/catalog.d.ts.map +1 -1
  189. package/dist/public/operations/catalog.js +2 -0
  190. package/dist/public/operations/check-executor.d.ts.map +1 -1
  191. package/dist/public/operations/check-executor.js +10 -2
  192. package/dist/public/operations/check-helpers.d.ts +6 -0
  193. package/dist/public/operations/check-helpers.d.ts.map +1 -1
  194. package/dist/public/operations/check-helpers.js +21 -1
  195. package/dist/public/operations/contracts.d.ts.map +1 -1
  196. package/dist/public/operations/contracts.js +325 -8
  197. package/dist/public/operations/discovery-entities.d.ts +42 -2
  198. package/dist/public/operations/discovery-entities.d.ts.map +1 -1
  199. package/dist/public/operations/discovery-entities.js +195 -22
  200. package/dist/public/operations/discovery-executors.d.ts +1 -0
  201. package/dist/public/operations/discovery-executors.d.ts.map +1 -1
  202. package/dist/public/operations/discovery-executors.js +75 -46
  203. package/dist/public/operations/impact-review-preparation.d.ts +14 -0
  204. package/dist/public/operations/impact-review-preparation.d.ts.map +1 -0
  205. package/dist/public/operations/impact-review-preparation.js +379 -0
  206. package/dist/public/operations/index.d.ts +2 -0
  207. package/dist/public/operations/index.d.ts.map +1 -1
  208. package/dist/public/operations/index.js +2 -0
  209. package/dist/public/operations/migration-plan.d.ts +2 -0
  210. package/dist/public/operations/migration-plan.d.ts.map +1 -1
  211. package/dist/public/operations/migration-plan.js +50 -0
  212. package/dist/public/operations/node-ports.d.ts.map +1 -1
  213. package/dist/public/operations/node-ports.js +1 -35
  214. package/dist/public/operations/predicate-schema-conformance.d.ts +41 -0
  215. package/dist/public/operations/predicate-schema-conformance.d.ts.map +1 -0
  216. package/dist/public/operations/predicate-schema-conformance.js +242 -0
  217. package/dist/public/operations/prolog-json.d.ts.map +1 -1
  218. package/dist/public/operations/prolog-json.js +9 -3
  219. package/dist/public/operations/proof-receipt-projection.d.ts +5 -0
  220. package/dist/public/operations/proof-receipt-projection.d.ts.map +1 -0
  221. package/dist/public/operations/proof-receipt-projection.js +36 -0
  222. package/dist/public/operations/result-envelope.d.ts +34 -1
  223. package/dist/public/operations/result-envelope.d.ts.map +1 -1
  224. package/dist/public/operations/result-envelope.js +78 -2
  225. package/dist/public/operations/runtime-types.d.ts +1 -1
  226. package/dist/public/operations/runtime-types.d.ts.map +1 -1
  227. package/dist/public/operations/specs/check-rules.generated.d.ts +1 -1
  228. package/dist/public/operations/specs/check-rules.generated.d.ts.map +1 -1
  229. package/dist/public/operations/specs/check-rules.generated.js +8 -1
  230. package/dist/public/operations/specs/check.d.ts +1 -1
  231. package/dist/public/operations/specs/discovery.d.ts +7 -1
  232. package/dist/public/operations/specs/discovery.d.ts.map +1 -1
  233. package/dist/public/operations/specs/discovery.js +7 -1
  234. package/dist/public/operations/specs/impact-review-preparation.d.ts +47 -0
  235. package/dist/public/operations/specs/impact-review-preparation.d.ts.map +1 -0
  236. package/dist/public/operations/specs/impact-review-preparation.js +43 -0
  237. package/dist/public/operations/specs/mutation-schemas.d.ts +27 -4
  238. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  239. package/dist/public/operations/specs/mutation-schemas.js +21 -3
  240. package/dist/public/operations/specs/reporting.d.ts +8 -0
  241. package/dist/public/operations/specs/reporting.d.ts.map +1 -1
  242. package/dist/public/operations/specs/reporting.js +46 -15
  243. package/dist/public/operations/specs/upsert.d.ts +28 -5
  244. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  245. package/dist/public/operations/specs/upsert.js +1 -1
  246. package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -1
  247. package/dist/public/operations/symbol-repair-plan.js +8 -3
  248. package/dist/public/operations/types.d.ts +1 -1
  249. package/dist/public/operations/types.d.ts.map +1 -1
  250. package/dist/public/schemas/entity.d.ts.map +1 -1
  251. package/dist/public/schemas/entity.js +22 -0
  252. package/dist/public/schemas/relationship.d.ts.map +1 -1
  253. package/dist/public/schemas/relationship.js +1 -0
  254. package/dist/public/skills/kibi-usage/SKILL.md +7 -3
  255. package/dist/public/skills/kibi-usage/resources/fact-lanes.md +4 -0
  256. package/dist/public/skills/kibi-usage/resources/operation-access.md +1 -0
  257. package/dist/public/skills/kibi-usage/resources/relationship-directions.md +35 -17
  258. package/dist/public/skills/kibi-usage/resources/source-authoring.md +36 -0
  259. package/dist/public/skills/kibi-usage/resources/workflows.md +52 -1
  260. package/dist/public/telemetry-acceptance.d.ts.map +1 -1
  261. package/dist/public/telemetry-acceptance.js +21 -5
  262. package/dist/relationships/shards.d.ts +6 -0
  263. package/dist/relationships/shards.d.ts.map +1 -1
  264. package/dist/relationships/shards.js +26 -19
  265. package/dist/schemas/entity.schema.json +32 -0
  266. package/dist/traceability/analysis-gate.d.ts +39 -0
  267. package/dist/traceability/analysis-gate.d.ts.map +1 -0
  268. package/dist/traceability/analysis-gate.js +51 -0
  269. package/dist/traceability/git-change-snapshot.d.ts +27 -0
  270. package/dist/traceability/git-change-snapshot.d.ts.map +1 -0
  271. package/dist/traceability/git-change-snapshot.js +411 -0
  272. package/dist/traceability/git-staged.d.ts +5 -1
  273. package/dist/traceability/git-staged.d.ts.map +1 -1
  274. package/dist/traceability/git-staged.js +16 -11
  275. package/dist/traceability/impact-evaluator.d.ts +54 -0
  276. package/dist/traceability/impact-evaluator.d.ts.map +1 -0
  277. package/dist/traceability/impact-evaluator.js +270 -0
  278. package/dist/traceability/impact-git-tree.d.ts +12 -0
  279. package/dist/traceability/impact-git-tree.d.ts.map +1 -0
  280. package/dist/traceability/impact-git-tree.js +46 -0
  281. package/dist/traceability/impact-knowledge.d.ts +16 -0
  282. package/dist/traceability/impact-knowledge.d.ts.map +1 -0
  283. package/dist/traceability/impact-knowledge.js +165 -0
  284. package/dist/traceability/impact-policy.d.ts +15 -0
  285. package/dist/traceability/impact-policy.d.ts.map +1 -0
  286. package/dist/traceability/impact-policy.js +48 -0
  287. package/dist/traceability/impact-policy.v1.schema.json +48 -0
  288. package/dist/traceability/impact-pr-diff.d.ts +5 -0
  289. package/dist/traceability/impact-pr-diff.d.ts.map +1 -0
  290. package/dist/traceability/impact-pr-diff.js +83 -0
  291. package/dist/traceability/impact-record-validation.d.ts +9 -0
  292. package/dist/traceability/impact-record-validation.d.ts.map +1 -0
  293. package/dist/traceability/impact-record-validation.js +113 -0
  294. package/dist/traceability/impact-review.d.ts +148 -0
  295. package/dist/traceability/impact-review.d.ts.map +1 -0
  296. package/dist/traceability/impact-review.js +494 -0
  297. package/dist/traceability/impact-review.schema.json +365 -0
  298. package/dist/traceability/impact-side-evidence.d.ts +13 -0
  299. package/dist/traceability/impact-side-evidence.d.ts.map +1 -0
  300. package/dist/traceability/impact-side-evidence.js +240 -0
  301. package/dist/traceability/reviewed-coordinate-refresh.d.ts +10 -0
  302. package/dist/traceability/reviewed-coordinate-refresh.d.ts.map +1 -0
  303. package/dist/traceability/reviewed-coordinate-refresh.js +49 -0
  304. package/dist/traceability/snapshot-knowledge.d.ts +4 -0
  305. package/dist/traceability/snapshot-knowledge.d.ts.map +1 -0
  306. package/dist/traceability/snapshot-knowledge.js +98 -0
  307. package/dist/traceability/staged-diagnostics.d.ts +1 -1
  308. package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
  309. package/dist/traceability/staged-entity-id-style.d.ts +12 -0
  310. package/dist/traceability/staged-entity-id-style.d.ts.map +1 -0
  311. package/dist/traceability/staged-entity-id-style.js +68 -0
  312. package/dist/traceability/staged-file-coverage.d.ts +23 -0
  313. package/dist/traceability/staged-file-coverage.d.ts.map +1 -1
  314. package/dist/traceability/staged-impact-contract.d.ts.map +1 -1
  315. package/dist/traceability/staged-impact-contract.js +2 -16
  316. package/dist/traceability/staged-symbols-manifest.d.ts +4 -0
  317. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  318. package/dist/traceability/staged-symbols-manifest.js +17 -6
  319. package/dist/traceability/symbol-extract.d.ts +3 -5
  320. package/dist/traceability/symbol-extract.d.ts.map +1 -1
  321. package/dist/traceability/symbol-extract.js +49 -34
  322. package/dist/traceability/temp-kb.d.ts +1 -1
  323. package/dist/traceability/temp-kb.d.ts.map +1 -1
  324. package/dist/traceability/temp-kb.js +57 -13
  325. package/dist/traceability/trusted-pr-event.d.ts +13 -0
  326. package/dist/traceability/trusted-pr-event.d.ts.map +1 -0
  327. package/dist/traceability/trusted-pr-event.js +105 -0
  328. package/dist/traceability/validate.js +1 -1
  329. package/dist/types/entities.d.ts +2 -0
  330. package/dist/types/entities.d.ts.map +1 -1
  331. package/dist/types/relationships.d.ts +1 -1
  332. package/dist/types/relationships.d.ts.map +1 -1
  333. package/dist/utils/canonical-path.d.ts +3 -0
  334. package/dist/utils/canonical-path.d.ts.map +1 -0
  335. package/dist/utils/canonical-path.js +33 -0
  336. package/dist/utils/entity-id-style.d.ts +27 -0
  337. package/dist/utils/entity-id-style.d.ts.map +1 -0
  338. package/dist/utils/entity-id-style.js +81 -0
  339. package/dist/utils/git-repository-context.d.ts +50 -0
  340. package/dist/utils/git-repository-context.d.ts.map +1 -0
  341. package/dist/utils/git-repository-context.js +259 -0
  342. package/dist/utils/rule-registry.d.ts +5 -0
  343. package/dist/utils/rule-registry.d.ts.map +1 -1
  344. package/dist/utils/rule-registry.generated.d.ts +37 -0
  345. package/dist/utils/rule-registry.generated.d.ts.map +1 -1
  346. package/dist/utils/rule-registry.generated.js +44 -0
  347. package/dist/utils/strict-modeling.d.ts +7 -0
  348. package/dist/utils/strict-modeling.d.ts.map +1 -1
  349. package/dist/utils/strict-modeling.js +11 -0
  350. package/package.json +14 -5
  351. package/schema/entities.pl +60 -1
  352. package/schema/relationships.pl +17 -4
  353. package/schema/validation.pl +118 -20
  354. package/src/public/diagnostic-usage.ts +16 -24
  355. package/src/public/impact/analyzer.ts +88 -5
  356. package/src/public/impact/diagnostics.ts +7 -5
  357. package/src/public/impact/full-kb-quality.ts +4 -16
  358. package/src/public/impact/manifest.ts +14 -1
  359. package/src/public/impact/source-changes.ts +39 -34
  360. package/src/public/impact/types.ts +5 -0
  361. package/src/public/operations/catalog.ts +2 -0
  362. package/src/public/operations/check-executor.ts +12 -1
  363. package/src/public/operations/check-helpers.ts +27 -1
  364. package/src/public/operations/contracts.ts +404 -9
  365. package/src/public/operations/discovery-entities.ts +292 -23
  366. package/src/public/operations/discovery-executors.ts +91 -55
  367. package/src/public/operations/impact-review-preparation.ts +548 -0
  368. package/src/public/operations/index.ts +2 -0
  369. package/src/public/operations/migration-plan.ts +57 -0
  370. package/src/public/operations/node-ports.ts +1 -39
  371. package/src/public/operations/predicate-schema-conformance.ts +362 -0
  372. package/src/public/operations/prolog-json.ts +9 -3
  373. package/src/public/operations/proof-receipt-projection.ts +39 -0
  374. package/src/public/operations/result-envelope.ts +114 -2
  375. package/src/public/operations/runtime-types.ts +1 -1
  376. package/src/public/operations/specs/check-rules.generated.ts +8 -1
  377. package/src/public/operations/specs/discovery.ts +8 -1
  378. package/src/public/operations/specs/impact-review-preparation.ts +46 -0
  379. package/src/public/operations/specs/mutation-schemas.ts +23 -3
  380. package/src/public/operations/specs/reporting.ts +69 -22
  381. package/src/public/operations/specs/upsert.ts +1 -1
  382. package/src/public/operations/symbol-repair-plan.ts +13 -3
  383. package/src/public/operations/types.ts +1 -0
  384. package/src/public/schemas/entity.ts +22 -0
  385. package/src/public/schemas/relationship.ts +1 -0
  386. package/src/public/skills/kibi-usage/SKILL.md +7 -3
  387. package/src/public/skills/kibi-usage/resources/fact-lanes.md +4 -0
  388. package/src/public/skills/kibi-usage/resources/operation-access.md +1 -0
  389. package/src/public/skills/kibi-usage/resources/relationship-directions.md +35 -17
  390. package/src/public/skills/kibi-usage/resources/source-authoring.md +36 -0
  391. package/src/public/skills/kibi-usage/resources/workflows.md +52 -1
  392. package/src/public/telemetry-acceptance.ts +37 -6
  393. package/src/schemas/entity.schema.json +32 -0
  394. package/src/schemas/relationship.schema.json +1 -0
  395. package/src/traceability/impact-policy.v1.schema.json +48 -0
  396. package/src/traceability/impact-review.schema.json +365 -0
  397. package/templates/github/kibi-badge.yml +0 -4
  398. package/templates/github/kibi-report.yml +0 -4
@@ -0,0 +1,134 @@
1
+ import { constants } from "node:fs";
2
+ import { closeSync, existsSync, lstatSync, openSync, realpathSync, statSync, writeSync, } from "node:fs";
3
+ import path from "node:path";
4
+ export const KIBI_PERF_TRACE_DIR_ENV = "KIBI_PERF_TRACE_DIR";
5
+ export const KIBI_PERF_TIMINGS_ENV = "KIBI_PERF_TIMINGS";
6
+ export const KIBI_PERF_TRACE_MAX_EVENTS = 5_000;
7
+ export const KIBI_PERF_TRACE_MAX_BYTES = 512 * 1024;
8
+ const states = new Map();
9
+ const MAX_DURATION_MS = 60_000;
10
+ const TRACE_LIMIT_RESERVE_BYTES = 96;
11
+ function isWithin(parent, candidate) {
12
+ const relative = path.relative(parent, candidate);
13
+ return (relative === "" ||
14
+ (relative !== ".." &&
15
+ !relative.startsWith(`..${path.sep}`) &&
16
+ !path.isAbsolute(relative)));
17
+ }
18
+ function privateTraceFile() {
19
+ if (process.env[KIBI_PERF_TIMINGS_ENV] !== "1")
20
+ return null;
21
+ const configuredDirectory = process.env[KIBI_PERF_TRACE_DIR_ENV];
22
+ if (!configuredDirectory || !path.isAbsolute(configuredDirectory))
23
+ return null;
24
+ try {
25
+ const directoryInfo = lstatSync(configuredDirectory);
26
+ if (!directoryInfo.isDirectory() || directoryInfo.isSymbolicLink()) {
27
+ return null;
28
+ }
29
+ const directory = realpathSync(configuredDirectory);
30
+ if (path.resolve(configuredDirectory) !== directory)
31
+ return null;
32
+ const directoryStats = statSync(directory);
33
+ if (typeof process.getuid !== "function" ||
34
+ directoryStats.uid !== process.getuid()) {
35
+ return null;
36
+ }
37
+ if ((directoryStats.mode & 0o077) !== 0) {
38
+ return null;
39
+ }
40
+ const currentDirectory = realpathSync(process.cwd());
41
+ if (isWithin(currentDirectory, directory))
42
+ return null;
43
+ const file = path.join(directory, `kibi-performance-${process.pid}.jsonl`);
44
+ let state = states.get(file);
45
+ if (!state) {
46
+ if (existsSync(file))
47
+ return null;
48
+ state = { bytes: 0, events: 0, disabled: false };
49
+ states.set(file, state);
50
+ }
51
+ if (state.disabled)
52
+ return null;
53
+ return { file, state };
54
+ }
55
+ catch {
56
+ return null;
57
+ }
58
+ }
59
+ function writeAll(fd, bytes) {
60
+ let offset = 0;
61
+ while (offset < bytes.length) {
62
+ const written = writeSync(fd, bytes, offset, bytes.length - offset);
63
+ if (written <= 0)
64
+ throw new Error("Performance trace write made no progress");
65
+ offset += written;
66
+ }
67
+ }
68
+ function appendLine(file, state, line, exclusive) {
69
+ const fileInfo = existsSync(file) ? lstatSync(file) : null;
70
+ if ((exclusive && fileInfo !== null) ||
71
+ (!exclusive &&
72
+ (!fileInfo?.isFile() ||
73
+ fileInfo.isSymbolicLink() ||
74
+ fileInfo.size !== state.bytes))) {
75
+ throw new Error("Performance trace file changed unexpectedly");
76
+ }
77
+ const flags = constants.O_WRONLY |
78
+ constants.O_CREAT |
79
+ constants.O_APPEND |
80
+ (constants.O_NOFOLLOW ?? 0) |
81
+ (exclusive ? constants.O_EXCL : 0);
82
+ const fd = openSync(file, flags, 0o600);
83
+ try {
84
+ const bytes = Buffer.from(line, "utf8");
85
+ writeAll(fd, bytes);
86
+ state.bytes += bytes.length;
87
+ }
88
+ finally {
89
+ closeSync(fd);
90
+ }
91
+ }
92
+ function appendLimitMarker(file, state, limit) {
93
+ const marker = `${JSON.stringify({ kind: "trace-limit", pid: process.pid, limit })}\n`;
94
+ const byteLength = Buffer.byteLength(marker, "utf8");
95
+ if (state.bytes + byteLength <= KIBI_PERF_TRACE_MAX_BYTES) {
96
+ appendLine(file, state, marker, state.events === 0);
97
+ }
98
+ state.disabled = true;
99
+ }
100
+ /**
101
+ * Append one bounded, payload-free timing observation to the explicitly
102
+ * supplied private host trace directory. Trace I/O is best-effort and never
103
+ * changes the operation result.
104
+ */
105
+ export function writePerformanceTraceEvent(event) {
106
+ if (!Number.isFinite(event.durationMs) ||
107
+ event.durationMs < 0 ||
108
+ event.durationMs > MAX_DURATION_MS) {
109
+ return;
110
+ }
111
+ const trace = privateTraceFile();
112
+ if (!trace)
113
+ return;
114
+ const durationMs = Math.round(event.durationMs * 1000) / 1000;
115
+ const line = `${JSON.stringify({
116
+ kind: event.kind,
117
+ durationMs,
118
+ pid: process.pid,
119
+ })}\n`;
120
+ const byteLength = Buffer.byteLength(line, "utf8");
121
+ try {
122
+ if (trace.state.events >= KIBI_PERF_TRACE_MAX_EVENTS ||
123
+ trace.state.bytes + byteLength >
124
+ KIBI_PERF_TRACE_MAX_BYTES - TRACE_LIMIT_RESERVE_BYTES) {
125
+ appendLimitMarker(trace.file, trace.state, trace.state.events >= KIBI_PERF_TRACE_MAX_EVENTS ? "events" : "bytes");
126
+ return;
127
+ }
128
+ appendLine(trace.file, trace.state, line, trace.state.events === 0);
129
+ trace.state.events += 1;
130
+ }
131
+ catch {
132
+ trace.state.disabled = true;
133
+ }
134
+ }
@@ -0,0 +1,13 @@
1
+ /** Release-qualified executable and asset closure. Updated only after qualification. */
2
+ export interface ApprovedSourceAnalyzer {
3
+ packageName: string;
4
+ version: string;
5
+ files: Readonly<Record<string, string>>;
6
+ dependencies: readonly {
7
+ packageName: string;
8
+ version: string;
9
+ files: Readonly<Record<string, string>>;
10
+ }[];
11
+ }
12
+ export declare const APPROVED_SOURCE_ANALYZERS: readonly ApprovedSourceAnalyzer[];
13
+ //# sourceMappingURL=approved-source-analyzers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approved-source-analyzers.d.ts","sourceRoot":"","sources":["../../src/plugins/approved-source-analyzers.ts"],"names":[],"mappings":"AAEA,wFAAwF;AAExF,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,YAAY,EAAE,SAAS;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACzC,EAAE,CAAC;CACL;AAGD,eAAO,MAAM,yBAAyB,EAAE,SAAS,sBAAsB,EAC7C,CAAC"}
@@ -0,0 +1,71 @@
1
+ export declare const qualifiedSourceAnalyzers: readonly [{
2
+ readonly packageName: "kibi-plugin-treesitter";
3
+ readonly version: "1.0.0";
4
+ readonly files: {
5
+ readonly "SBOM.spdx.json": "92cf77d240ffc1e95116edd4742363e34ead66b455dbf940f24321a19e7f9571";
6
+ readonly "THIRD_PARTY_NOTICES.md": "0b1ede96cb261dab73fd1ec8c51d7bb5b2492eed0502f6c10ed071736daa263c";
7
+ readonly "assets/queries/bash.scm": "6ca535e8fe652b51203ac272831881dab001f7ac508e50551bc2cdc4a15d7b6c";
8
+ readonly "assets/queries/c.scm": "774ca67cfe23b0e0d1d3a4f01788049a822beb1311feee72b20a595a37be1e28";
9
+ readonly "assets/queries/cpp-extra.scm": "7cf486901eaf7e9196bc2c5dfe83785eed70d367136f8008af37eb4f1c12a68a";
10
+ readonly "assets/queries/cpp.scm": "029731ca946e32f919491d9f76c85a50e5deb5ad1934e37fd6849312c0d4a705";
11
+ readonly "assets/queries/csharp-extra.scm": "d3a55c3c67cb236921da5785d08d146ba53f70d9e2af83a365f59954f8878a57";
12
+ readonly "assets/queries/csharp.scm": "4ed08da0162ecd48206ac34bebe7ea9757a8c7b617f6ad8f70c168d685d514fe";
13
+ readonly "assets/queries/go.scm": "d1a9b1f678fe0278b85054e2dc56a28ef26aa478b8c88fb2b0dd83cdcdb9db35";
14
+ readonly "assets/queries/hcl.scm": "cad52e3fd81bc5584ea181c920bdb8fa4be007f05f8c5e08f95e9ccb40aee93a";
15
+ readonly "assets/queries/java-extra.scm": "5ce7857f2b52c10b3672bc09f39f287cff2eaa7caa0b75dafccbaa5fec58431d";
16
+ readonly "assets/queries/java.scm": "bcb22147b8582d92743fc973864cefb894a4c12b3957f16f3d472b2ec7cd4c49";
17
+ readonly "assets/queries/php.scm": "4ac5e30f99f3abe5417dcb42219e0790c66f9b4bb3be071bc60160dd012f3cd8";
18
+ readonly "assets/queries/python.scm": "d0f3e577878167bfabc30e526e497bce58d1699b9bcabf8ab3a50698efb5ca3e";
19
+ readonly "assets/queries/ruby.scm": "ed1e7dc07a95b87aef267e7f9715c6717a70f09efbd7b6f48bbd51c7b7510cf3";
20
+ readonly "assets/queries/rust-extra.scm": "511a492200e813f15b7ebec324eae69a245986a9d6813ddabe776075fd65976c";
21
+ readonly "assets/queries/rust.scm": "f22867fdebde5cb091861c08d34690dc2540f4318068bf81be9f6b0d348ab8c1";
22
+ readonly "assets/queries/terraform.scm": "8a6974a8eb48e13b5b8cd64e7c81262a825b4251df01ab383aee5cdda8151e7e";
23
+ readonly "assets/tree-sitter-bash.wasm": "8292919c88a0f7d3fb31d0cd0253ca5a9531bc1ede82b0537f2c63dd8abe6a7a";
24
+ readonly "assets/tree-sitter-c.wasm": "c852c2a85ebf2beb636aa3b0ef7f7e70458684d74f6741b20dcb296885bed9f9";
25
+ readonly "assets/tree-sitter-c_sharp.wasm": "6f69e1cae44e1c32c1eccc170dc5a9778fb94ff716f71113fe1f8c4299aa2f40";
26
+ readonly "assets/tree-sitter-cpp.wasm": "174eb0deb75b2ec7881bcacda9f995648d8e683956e5c2267e69ab6dc503fcbf";
27
+ readonly "assets/tree-sitter-go.wasm": "9504573f352b20be7f2f1911754d710622aedc15afff16d5ed8fb5645681aee7";
28
+ readonly "assets/tree-sitter-hcl.release.wasm": "2f9acf63e7c263215f283e2cf0f4ebbb9bfa77f58e18fa42b91094be201372a7";
29
+ readonly "assets/tree-sitter-java.wasm": "4fdeac4ca6ca089f06c6f7e562abcac1733cd465728cc7031ebb73c2019122c4";
30
+ readonly "assets/tree-sitter-php.wasm": "d4df6a6ff08c87c3ec4f9cbb785fe09998a0cb570e03f57d7b19b3acfb146aa7";
31
+ readonly "assets/tree-sitter-python.wasm": "16108b50df4ee9a30168794252ab55e7c93bfc5765d7fa0aa3e335752c515f47";
32
+ readonly "assets/tree-sitter-ruby.wasm": "09a96427d7c72f0613ed470cd9812223fc4a91d6a9c025c0235cc6bd59ff96f4";
33
+ readonly "assets/tree-sitter-rust.wasm": "f65f354215611fd94ad34134b3427eb3d58cbb745df7b6509ba722184db73d57";
34
+ readonly "assets/tree-sitter-terraform.release.wasm": "59dbcbb0f08eb78b78f37510834559a48ce5c9d4866c978d62c6390796461cb5";
35
+ readonly "catalog.json": "4075d988391b8c893f47722fb85f93d626d700af9b2a1b4909fd20ef0ec989b4";
36
+ readonly "dist/analysis-worker.js": "75a1e646f636c1d1ace9ae22a9141a51e94bddc70203bed08de7bd13dae1764e";
37
+ readonly "dist/catalog.js": "460243c48cb6a03b8c7971273729d8a1134955186978b6c0d04182c71960ebff";
38
+ readonly "dist/extractor.js": "1d8cd819e7ec8fcc291a44e5ffe4ccfe77099301677913fcfe0d92e7ce971f33";
39
+ readonly "dist/index.js": "adc03d77d94c0133b3188950b35f79db19e447cf7bfa1f7e1cf1f5c97a582a44";
40
+ readonly "dist/performance-timing.js": "56cce530f627c8fd079e8ec070322f84378ae50c40a6765d88b418850692940b";
41
+ readonly "integrity.json": "4f1530009fdf5f087ab0b7adcae062ca141f76aa6e5acdb20c695fee963dec38";
42
+ readonly "licenses/tree-sitter-bash-MIT.txt": "49bf33cf78ef5897e4e161ce1517df7de1ae5042a65b6bcfd44401e0fc606559";
43
+ readonly "licenses/tree-sitter-c-MIT.txt": "2e0110e07abef7c2548b26ec9d6969775617ca539a0dc8dbeeb14d6452c711d1";
44
+ readonly "licenses/tree-sitter-c-sharp-MIT.txt": "778fb7d63b8c1844da315648c02f325c4713a6f4a5d19644fd413421422776d3";
45
+ readonly "licenses/tree-sitter-cpp-MIT.txt": "2e0110e07abef7c2548b26ec9d6969775617ca539a0dc8dbeeb14d6452c711d1";
46
+ readonly "licenses/tree-sitter-go-MIT.txt": "2e0110e07abef7c2548b26ec9d6969775617ca539a0dc8dbeeb14d6452c711d1";
47
+ readonly "licenses/tree-sitter-hcl-Apache-2.0.txt": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4";
48
+ readonly "licenses/tree-sitter-java-MIT.txt": "52ed137b039cd9c46409bc22e89938af911c95b157feae2d040b51e6084369a7";
49
+ readonly "licenses/tree-sitter-php-MIT.txt": "664764fabf40c0b318e06324a5a12379092a2df25b8cbf2415f71bc0bb352346";
50
+ readonly "licenses/tree-sitter-python-MIT.txt": "d724405ce238a22c0d35769c5a36b386ad5958192efe8bbb304fb2896254575f";
51
+ readonly "licenses/tree-sitter-ruby-MIT.txt": "9c99b99e93d3c6461bef9f6bac45d17b8bf014172625c24f76319bbd235a7b80";
52
+ readonly "licenses/tree-sitter-rust-MIT.txt": "31d5b6f4243d5c7c6e1c4ebbbb9f6407bd1457a08bcc4f706521710341acba36";
53
+ readonly "licenses/web-tree-sitter-MIT.txt": "c5cfb43042b6b72045f4ba997834d0a7786d2793d91680868b5815b39f14fc78";
54
+ readonly "package.json": "433313c71ef7951eb8cb58d855089f08ccab583405ab85d6a417d9309782356c";
55
+ };
56
+ readonly dependencies: readonly [{
57
+ readonly packageName: "web-tree-sitter";
58
+ readonly version: "0.27.0";
59
+ readonly files: {
60
+ readonly LICENSE: "c5cfb43042b6b72045f4ba997834d0a7786d2793d91680868b5815b39f14fc78";
61
+ readonly "debug/web-tree-sitter.cjs": "3faca4a6e5a006ec8e95a8e1918923ee9a385a02f64154fb2a893d5a27200f24";
62
+ readonly "debug/web-tree-sitter.js": "4cd02f4b5510044807279f7064e6bcceab391af3c245fc9b6da2de7b1116ff84";
63
+ readonly "debug/web-tree-sitter.wasm": "91a157f507fabb836588e6537a1af1bae45d3d4b9278d06d003678460b011d8e";
64
+ readonly "package.json": "707dd14277ba63ca8dcaad6b6df8051e23df78c878b5cbdc27885b3cfd72bfac";
65
+ readonly "web-tree-sitter.cjs": "743de33347202f863b6714fc7218c455d93f751943d43500500f6c5c65654dce";
66
+ readonly "web-tree-sitter.js": "7c49e3c1d87e24e0bb4c2def909d17154dfde281f5f8280225450090bb4b8110";
67
+ readonly "web-tree-sitter.wasm": "c03bccdc3b448a32848f5ae327e209c982bbb0840d43eec8bc2d5759544a1ed3";
68
+ };
69
+ }];
70
+ }];
71
+ //# sourceMappingURL=approved-source-analyzers.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approved-source-analyzers.generated.d.ts","sourceRoot":"","sources":["../../src/plugins/approved-source-analyzers.generated.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmI3B,CAAC"}
@@ -0,0 +1,77 @@
1
+ // Generated by scripts/qualify-source-analyzers.mjs after release qualification.
2
+ // Do not approve changed bytes without reviewing the executable and asset closure.
3
+ // implements REQ-source-analysis-v2
4
+ export const qualifiedSourceAnalyzers = [
5
+ {
6
+ packageName: "kibi-plugin-treesitter",
7
+ version: "1.0.0",
8
+ files: {
9
+ "SBOM.spdx.json": "92cf77d240ffc1e95116edd4742363e34ead66b455dbf940f24321a19e7f9571",
10
+ "THIRD_PARTY_NOTICES.md": "0b1ede96cb261dab73fd1ec8c51d7bb5b2492eed0502f6c10ed071736daa263c",
11
+ "assets/queries/bash.scm": "6ca535e8fe652b51203ac272831881dab001f7ac508e50551bc2cdc4a15d7b6c",
12
+ "assets/queries/c.scm": "774ca67cfe23b0e0d1d3a4f01788049a822beb1311feee72b20a595a37be1e28",
13
+ "assets/queries/cpp-extra.scm": "7cf486901eaf7e9196bc2c5dfe83785eed70d367136f8008af37eb4f1c12a68a",
14
+ "assets/queries/cpp.scm": "029731ca946e32f919491d9f76c85a50e5deb5ad1934e37fd6849312c0d4a705",
15
+ "assets/queries/csharp-extra.scm": "d3a55c3c67cb236921da5785d08d146ba53f70d9e2af83a365f59954f8878a57",
16
+ "assets/queries/csharp.scm": "4ed08da0162ecd48206ac34bebe7ea9757a8c7b617f6ad8f70c168d685d514fe",
17
+ "assets/queries/go.scm": "d1a9b1f678fe0278b85054e2dc56a28ef26aa478b8c88fb2b0dd83cdcdb9db35",
18
+ "assets/queries/hcl.scm": "cad52e3fd81bc5584ea181c920bdb8fa4be007f05f8c5e08f95e9ccb40aee93a",
19
+ "assets/queries/java-extra.scm": "5ce7857f2b52c10b3672bc09f39f287cff2eaa7caa0b75dafccbaa5fec58431d",
20
+ "assets/queries/java.scm": "bcb22147b8582d92743fc973864cefb894a4c12b3957f16f3d472b2ec7cd4c49",
21
+ "assets/queries/php.scm": "4ac5e30f99f3abe5417dcb42219e0790c66f9b4bb3be071bc60160dd012f3cd8",
22
+ "assets/queries/python.scm": "d0f3e577878167bfabc30e526e497bce58d1699b9bcabf8ab3a50698efb5ca3e",
23
+ "assets/queries/ruby.scm": "ed1e7dc07a95b87aef267e7f9715c6717a70f09efbd7b6f48bbd51c7b7510cf3",
24
+ "assets/queries/rust-extra.scm": "511a492200e813f15b7ebec324eae69a245986a9d6813ddabe776075fd65976c",
25
+ "assets/queries/rust.scm": "f22867fdebde5cb091861c08d34690dc2540f4318068bf81be9f6b0d348ab8c1",
26
+ "assets/queries/terraform.scm": "8a6974a8eb48e13b5b8cd64e7c81262a825b4251df01ab383aee5cdda8151e7e",
27
+ "assets/tree-sitter-bash.wasm": "8292919c88a0f7d3fb31d0cd0253ca5a9531bc1ede82b0537f2c63dd8abe6a7a",
28
+ "assets/tree-sitter-c.wasm": "c852c2a85ebf2beb636aa3b0ef7f7e70458684d74f6741b20dcb296885bed9f9",
29
+ "assets/tree-sitter-c_sharp.wasm": "6f69e1cae44e1c32c1eccc170dc5a9778fb94ff716f71113fe1f8c4299aa2f40",
30
+ "assets/tree-sitter-cpp.wasm": "174eb0deb75b2ec7881bcacda9f995648d8e683956e5c2267e69ab6dc503fcbf",
31
+ "assets/tree-sitter-go.wasm": "9504573f352b20be7f2f1911754d710622aedc15afff16d5ed8fb5645681aee7",
32
+ "assets/tree-sitter-hcl.release.wasm": "2f9acf63e7c263215f283e2cf0f4ebbb9bfa77f58e18fa42b91094be201372a7",
33
+ "assets/tree-sitter-java.wasm": "4fdeac4ca6ca089f06c6f7e562abcac1733cd465728cc7031ebb73c2019122c4",
34
+ "assets/tree-sitter-php.wasm": "d4df6a6ff08c87c3ec4f9cbb785fe09998a0cb570e03f57d7b19b3acfb146aa7",
35
+ "assets/tree-sitter-python.wasm": "16108b50df4ee9a30168794252ab55e7c93bfc5765d7fa0aa3e335752c515f47",
36
+ "assets/tree-sitter-ruby.wasm": "09a96427d7c72f0613ed470cd9812223fc4a91d6a9c025c0235cc6bd59ff96f4",
37
+ "assets/tree-sitter-rust.wasm": "f65f354215611fd94ad34134b3427eb3d58cbb745df7b6509ba722184db73d57",
38
+ "assets/tree-sitter-terraform.release.wasm": "59dbcbb0f08eb78b78f37510834559a48ce5c9d4866c978d62c6390796461cb5",
39
+ "catalog.json": "4075d988391b8c893f47722fb85f93d626d700af9b2a1b4909fd20ef0ec989b4",
40
+ "dist/analysis-worker.js": "75a1e646f636c1d1ace9ae22a9141a51e94bddc70203bed08de7bd13dae1764e",
41
+ "dist/catalog.js": "460243c48cb6a03b8c7971273729d8a1134955186978b6c0d04182c71960ebff",
42
+ "dist/extractor.js": "1d8cd819e7ec8fcc291a44e5ffe4ccfe77099301677913fcfe0d92e7ce971f33",
43
+ "dist/index.js": "adc03d77d94c0133b3188950b35f79db19e447cf7bfa1f7e1cf1f5c97a582a44",
44
+ "dist/performance-timing.js": "56cce530f627c8fd079e8ec070322f84378ae50c40a6765d88b418850692940b",
45
+ "integrity.json": "4f1530009fdf5f087ab0b7adcae062ca141f76aa6e5acdb20c695fee963dec38",
46
+ "licenses/tree-sitter-bash-MIT.txt": "49bf33cf78ef5897e4e161ce1517df7de1ae5042a65b6bcfd44401e0fc606559",
47
+ "licenses/tree-sitter-c-MIT.txt": "2e0110e07abef7c2548b26ec9d6969775617ca539a0dc8dbeeb14d6452c711d1",
48
+ "licenses/tree-sitter-c-sharp-MIT.txt": "778fb7d63b8c1844da315648c02f325c4713a6f4a5d19644fd413421422776d3",
49
+ "licenses/tree-sitter-cpp-MIT.txt": "2e0110e07abef7c2548b26ec9d6969775617ca539a0dc8dbeeb14d6452c711d1",
50
+ "licenses/tree-sitter-go-MIT.txt": "2e0110e07abef7c2548b26ec9d6969775617ca539a0dc8dbeeb14d6452c711d1",
51
+ "licenses/tree-sitter-hcl-Apache-2.0.txt": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
52
+ "licenses/tree-sitter-java-MIT.txt": "52ed137b039cd9c46409bc22e89938af911c95b157feae2d040b51e6084369a7",
53
+ "licenses/tree-sitter-php-MIT.txt": "664764fabf40c0b318e06324a5a12379092a2df25b8cbf2415f71bc0bb352346",
54
+ "licenses/tree-sitter-python-MIT.txt": "d724405ce238a22c0d35769c5a36b386ad5958192efe8bbb304fb2896254575f",
55
+ "licenses/tree-sitter-ruby-MIT.txt": "9c99b99e93d3c6461bef9f6bac45d17b8bf014172625c24f76319bbd235a7b80",
56
+ "licenses/tree-sitter-rust-MIT.txt": "31d5b6f4243d5c7c6e1c4ebbbb9f6407bd1457a08bcc4f706521710341acba36",
57
+ "licenses/web-tree-sitter-MIT.txt": "c5cfb43042b6b72045f4ba997834d0a7786d2793d91680868b5815b39f14fc78",
58
+ "package.json": "433313c71ef7951eb8cb58d855089f08ccab583405ab85d6a417d9309782356c",
59
+ },
60
+ dependencies: [
61
+ {
62
+ packageName: "web-tree-sitter",
63
+ version: "0.27.0",
64
+ files: {
65
+ LICENSE: "c5cfb43042b6b72045f4ba997834d0a7786d2793d91680868b5815b39f14fc78",
66
+ "debug/web-tree-sitter.cjs": "3faca4a6e5a006ec8e95a8e1918923ee9a385a02f64154fb2a893d5a27200f24",
67
+ "debug/web-tree-sitter.js": "4cd02f4b5510044807279f7064e6bcceab391af3c245fc9b6da2de7b1116ff84",
68
+ "debug/web-tree-sitter.wasm": "91a157f507fabb836588e6537a1af1bae45d3d4b9278d06d003678460b011d8e",
69
+ "package.json": "707dd14277ba63ca8dcaad6b6df8051e23df78c878b5cbdc27885b3cfd72bfac",
70
+ "web-tree-sitter.cjs": "743de33347202f863b6714fc7218c455d93f751943d43500500f6c5c65654dce",
71
+ "web-tree-sitter.js": "7c49e3c1d87e24e0bb4c2def909d17154dfde281f5f8280225450090bb4b8110",
72
+ "web-tree-sitter.wasm": "c03bccdc3b448a32848f5ae327e209c982bbb0840d43eec8bc2d5759544a1ed3",
73
+ },
74
+ },
75
+ ],
76
+ },
77
+ ];
@@ -0,0 +1,3 @@
1
+ import { qualifiedSourceAnalyzers } from "./approved-source-analyzers.generated.js";
2
+ // implements REQ-capability-plugin-activation-disclosure-v1
3
+ export const APPROVED_SOURCE_ANALYZERS = qualifiedSourceAnalyzers;
@@ -1,5 +1,5 @@
1
1
  import { type PluginMode, type PluginProviderStamp, type SemanticClassificationDecision, type SemanticClassifierInput, type SemanticClassifierV1 } from "kibi-plugin-sdk";
2
- import type { CapabilityModeResolution } from "./registry.js";
2
+ import type { CapabilityModeResolution, CapabilityProviderBinding } from "./registry.js";
3
3
  export type SemanticClassifierDiagnostic = Readonly<{
4
4
  pluginId: string;
5
5
  packageName: string | null;
@@ -30,6 +30,11 @@ export declare function publicCapabilityStamp(stamp: PluginProviderStamp): {
30
30
  fallbackUsed?: boolean;
31
31
  model?: string;
32
32
  };
33
+ export declare function withFallback(stamp: PluginProviderStamp, fallbackUsed: boolean): PluginProviderStamp;
34
+ /** Bound and redact provider error text before it reaches diagnostics. */
35
+ export declare function redactClassifierMessage(message: string): string;
36
+ /** Typed, redacted diagnostic for a failed provider call of any capability. */
37
+ export declare function diagnosticFromError(binding: CapabilityProviderBinding<unknown>, error: unknown): SemanticClassifierDiagnostic;
33
38
  /**
34
39
  * Compose semantic classifiers according to replace / augment / shadow modes.
35
40
  *
@@ -1 +1 @@
1
- {"version":3,"file":"compose-semantic-classifier.d.ts","sourceRoot":"","sources":["../../src/plugins/compose-semantic-classifier.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,mBAAmB,EAExB,KAAK,8BAA8B,EACnC,KAAK,uBAAuB,EAE5B,KAAK,oBAAoB,EAE1B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,eAAe,CAAC;AAGvB,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAGH,MAAM,MAAM,gCAAgC,GAAG,QAAQ,CAAC;IACtD,SAAS,EAAE,SAAS,8BAA8B,EAAE,CAAC;IACrD,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACvC,iBAAiB,EAAE,SAAS;QAC1B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;QACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,8BAA8B,EAAE,CAAC;KAC/D,EAAE,CAAC;IACJ,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,SAAS,4BAA4B,EAAE,CAAC;CACtD,CAAC,CAAC;AAMH,yEAAyE;AAEzE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAYA;AAyGD;;;;;GAKG;AAEH,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,wBAAwB,CAAC,oBAAoB,CAAC,EAC1D,KAAK,EAAE,uBAAuB,EAC9B,OAAO,EAAE,QAAQ,CAAC;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,GAC3C,OAAO,CAAC,gCAAgC,CAAC,CA0G3C"}
1
+ {"version":3,"file":"compose-semantic-classifier.d.ts","sourceRoot":"","sources":["../../src/plugins/compose-semantic-classifier.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,mBAAmB,EAExB,KAAK,8BAA8B,EACnC,KAAK,uBAAuB,EAE5B,KAAK,oBAAoB,EAE1B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,eAAe,CAAC;AAGvB,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAGH,MAAM,MAAM,gCAAgC,GAAG,QAAQ,CAAC;IACtD,SAAS,EAAE,SAAS,8BAA8B,EAAE,CAAC;IACrD,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACvC,iBAAiB,EAAE,SAAS;QAC1B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;QACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,8BAA8B,EAAE,CAAC;KAC/D,EAAE,CAAC;IACJ,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,SAAS,4BAA4B,EAAE,CAAC;CACtD,CAAC,CAAC;AAMH,yEAAyE;AAEzE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAYA;AAGD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,mBAAmB,EAC1B,YAAY,EAAE,OAAO,GACpB,mBAAmB,CAErB;AAWD,0EAA0E;AAE1E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK/D;AAED,+EAA+E;AAE/E,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,yBAAyB,CAAC,OAAO,CAAC,EAC3C,KAAK,EAAE,OAAO,GACb,4BAA4B,CAgC9B;AA6CD;;;;;GAKG;AAEH,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,wBAAwB,CAAC,oBAAoB,CAAC,EAC1D,KAAK,EAAE,uBAAuB,EAC9B,OAAO,EAAE,QAAQ,CAAC;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,GAC3C,OAAO,CAAC,gCAAgC,CAAC,CA0G3C"}
@@ -32,7 +32,8 @@ export function publicCapabilityStamp(stamp) {
32
32
  ...(stamp.model !== undefined ? { model: stamp.model } : {}),
33
33
  };
34
34
  }
35
- function withFallback(stamp, fallbackUsed) {
35
+ // implements REQ-capability-plugin-activation-disclosure-v1
36
+ export function withFallback(stamp, fallbackUsed) {
36
37
  return fallbackUsed ? { ...stamp, fallbackUsed: true } : stamp;
37
38
  }
38
39
  function isUnresolved(decision) {
@@ -44,13 +45,17 @@ function isUnresolved(decision) {
44
45
  return true;
45
46
  return false;
46
47
  }
47
- function redactClassifierMessage(message) {
48
+ /** Bound and redact provider error text before it reaches diagnostics. */
49
+ // implements REQ-capability-plugin-activation-disclosure-v1
50
+ export function redactClassifierMessage(message) {
48
51
  return message
49
52
  .replace(/sk-[A-Za-z0-9_-]+/g, "[redacted]")
50
53
  .replace(/(api[_-]?key\s*[:=]\s*)\S+/gi, "$1[redacted]")
51
54
  .slice(0, 300);
52
55
  }
53
- function diagnosticFromError(binding, error) {
56
+ /** Typed, redacted diagnostic for a failed provider call of any capability. */
57
+ // implements REQ-capability-plugin-activation-disclosure-v1
58
+ export function diagnosticFromError(binding, error) {
54
59
  const message = redactClassifierMessage(error instanceof Error ? error.message : String(error));
55
60
  let code = "unknown";
56
61
  let model;
@@ -0,0 +1,23 @@
1
+ import { type ClaimComparisonJudgment, type CompareClaimsInput, type PluginProviderStamp, type RankSubjectsInput, type SubjectRankingDecision, type VocabularyAlignmentV1 } from "kibi-plugin-sdk";
2
+ import { type SemanticClassifierDiagnostic } from "./compose-semantic-classifier.js";
3
+ import type { CapabilityModeResolution } from "./registry.js";
4
+ export type VocabularyAlignmentDiagnostic = SemanticClassifierDiagnostic;
5
+ export type ComposedVocabularyResult<T> = Readonly<{
6
+ results: readonly T[];
7
+ stamps: readonly PluginProviderStamp[];
8
+ shadowComparisons: readonly {
9
+ readonly stamp: PluginProviderStamp;
10
+ readonly results: readonly T[];
11
+ }[];
12
+ fallbackUsed: boolean;
13
+ diagnostics: readonly VocabularyAlignmentDiagnostic[];
14
+ }>;
15
+ /** Choose an existing subject (or new_subject) for each clause. */
16
+ export declare function composeSubjectRanking(resolution: CapabilityModeResolution<VocabularyAlignmentV1>, input: RankSubjectsInput, options: Readonly<{
17
+ operationName: string;
18
+ }>): Promise<ComposedVocabularyResult<SubjectRankingDecision>>;
19
+ /** Judge claim pairs; true judgments are review candidates, never verdicts. */
20
+ export declare function composeClaimComparison(resolution: CapabilityModeResolution<VocabularyAlignmentV1>, input: CompareClaimsInput, options: Readonly<{
21
+ operationName: string;
22
+ }>): Promise<ComposedVocabularyResult<ClaimComparisonJudgment>>;
23
+ //# sourceMappingURL=compose-vocabulary-alignment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-vocabulary-alignment.d.ts","sourceRoot":"","sources":["../../src/plugins/compose-vocabulary-alignment.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EAEvB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAG3B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,KAAK,4BAA4B,EAGlC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,eAAe,CAAC;AAGvB,MAAM,MAAM,6BAA6B,GAAG,4BAA4B,CAAC;AAGzE,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI,QAAQ,CAAC;IACjD,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;IACtB,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACvC,iBAAiB,EAAE,SAAS;QAC1B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;QACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;KAChC,EAAE,CAAC;IACJ,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,SAAS,6BAA6B,EAAE,CAAC;CACvD,CAAC,CAAC;AA0KH,mEAAmE;AAEnE,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,wBAAwB,CAAC,qBAAqB,CAAC,EAC3D,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,QAAQ,CAAC;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,GAC3C,OAAO,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,CAAC,CAE3D;AAED,+EAA+E;AAE/E,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,wBAAwB,CAAC,qBAAqB,CAAC,EAC3D,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,QAAQ,CAAC;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,GAC3C,OAAO,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,CAAC,CAE5D"}
@@ -0,0 +1,141 @@
1
+ /*
2
+ Kibi — repo-local, per-branch, queryable long-term memory for software projects
3
+ Copyright (C) 2026 Piotr Franczyk
4
+
5
+ This program is free software: you can redistribute it and/or modify
6
+ it under the terms of the GNU Affero General Public License as published by
7
+ the Free Software Foundation, either version 3 of the License, or
8
+ (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU Affero General Public License for more details.
14
+
15
+ You should have received a copy of the GNU Affero General Public License
16
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { NEW_SUBJECT_CHOICE, validateCompareClaimsResult, validateRankSubjectsResult, } from "kibi-plugin-sdk";
19
+ import { diagnosticFromError, withFallback, } from "./compose-semantic-classifier.js";
20
+ import { allowsExternalVocabularyAlignment } from "./external-allowlist.js";
21
+ async function attempt(binding, strategy, input) {
22
+ try {
23
+ return { ok: true, results: await strategy.run(binding.capability, input) };
24
+ }
25
+ catch (error) {
26
+ return { ok: false, diagnostic: diagnosticFromError(binding, error) };
27
+ }
28
+ }
29
+ function mergeByKey(strategy, input, primary, fallback) {
30
+ const primaryByKey = new Map(primary.map((r) => [strategy.keyOf(r), r]));
31
+ const fallbackByKey = new Map(fallback.map((r) => [strategy.keyOf(r), r]));
32
+ return strategy.itemKeys(input).flatMap((key) => {
33
+ const result = primaryByKey.get(key) ?? fallbackByKey.get(key);
34
+ return result === undefined ? [] : [result];
35
+ });
36
+ }
37
+ /**
38
+ * replace / augment / shadow with the same semantics as the semantic
39
+ * classifier: a replace provider owns the result and falls back to builtin
40
+ * (stamped fallbackUsed) on any failure; augment providers only refine items
41
+ * the builtin left unresolved; shadow providers are recorded for comparison
42
+ * and never change the result. External providers run only for allowlisted
43
+ * operations.
44
+ */
45
+ async function compose(resolution, strategy, input, operationName) {
46
+ const allowExternal = allowsExternalVocabularyAlignment(operationName);
47
+ const stamps = [];
48
+ const diagnostics = [];
49
+ const shadowComparisons = [];
50
+ let fallbackUsed = false;
51
+ let results = [];
52
+ const builtin = await attempt(resolution.builtin, strategy, input);
53
+ const builtinResults = builtin.ok ? builtin.results : [];
54
+ if (allowExternal && resolution.replace) {
55
+ const replaced = await attempt(resolution.replace, strategy, input);
56
+ if (replaced.ok) {
57
+ results = mergeByKey(strategy, input, replaced.results, builtinResults);
58
+ stamps.push(resolution.replace.stamp);
59
+ }
60
+ else {
61
+ diagnostics.push(replaced.diagnostic);
62
+ fallbackUsed = true;
63
+ if (builtin.ok) {
64
+ results = [...builtinResults];
65
+ stamps.push(withFallback(resolution.builtin.stamp, true));
66
+ }
67
+ else {
68
+ diagnostics.push(builtin.diagnostic);
69
+ }
70
+ }
71
+ }
72
+ else {
73
+ if (builtin.ok) {
74
+ results = [...builtinResults];
75
+ stamps.push(resolution.builtin.stamp);
76
+ }
77
+ else {
78
+ diagnostics.push(builtin.diagnostic);
79
+ }
80
+ if (allowExternal) {
81
+ for (const augment of resolution.augment) {
82
+ const unresolved = new Set(results.filter(strategy.unresolved).map(strategy.keyOf));
83
+ if (unresolved.size === 0)
84
+ break;
85
+ const augmented = await attempt(augment, strategy, strategy.subset(input, unresolved));
86
+ if (!augmented.ok) {
87
+ diagnostics.push(augmented.diagnostic);
88
+ continue;
89
+ }
90
+ stamps.push(augment.stamp);
91
+ const improvements = augmented.results.filter((result) => unresolved.has(strategy.keyOf(result)) && strategy.improves(result));
92
+ results = mergeByKey(strategy, input, improvements, results);
93
+ }
94
+ }
95
+ }
96
+ if (allowExternal) {
97
+ for (const shadow of resolution.shadow) {
98
+ const shadowed = await attempt(shadow, strategy, input);
99
+ if (!shadowed.ok) {
100
+ diagnostics.push(shadowed.diagnostic);
101
+ continue;
102
+ }
103
+ stamps.push(shadow.stamp);
104
+ shadowComparisons.push({
105
+ stamp: shadow.stamp,
106
+ results: shadowed.results,
107
+ });
108
+ }
109
+ }
110
+ return { results, stamps, shadowComparisons, fallbackUsed, diagnostics };
111
+ }
112
+ const RANK_SUBJECTS = {
113
+ keyOf: (decision) => decision.claimKey,
114
+ itemKeys: (input) => input.clauses.map((clause) => clause.claimKey),
115
+ subset: (input, keys) => ({
116
+ clauses: input.clauses.filter((clause) => keys.has(clause.claimKey)),
117
+ }),
118
+ run: async (provider, input) => validateRankSubjectsResult(await provider.rankSubjects(input), input.clauses).decisions,
119
+ unresolved: (decision) => decision.choice === NEW_SUBJECT_CHOICE,
120
+ improves: (decision) => decision.choice !== NEW_SUBJECT_CHOICE,
121
+ };
122
+ const COMPARE_CLAIMS = {
123
+ keyOf: (judgment) => judgment.pairKey,
124
+ itemKeys: (input) => input.pairs.map((pair) => pair.pairKey),
125
+ subset: (input, keys) => ({
126
+ pairs: input.pairs.filter((pair) => keys.has(pair.pairKey)),
127
+ }),
128
+ run: async (provider, input) => validateCompareClaimsResult(await provider.compareClaims(input), input.pairs.map((pair) => pair.pairKey)).judgments,
129
+ unresolved: (judgment) => !judgment.sameObligation,
130
+ improves: (judgment) => judgment.sameObligation,
131
+ };
132
+ /** Choose an existing subject (or new_subject) for each clause. */
133
+ // implements REQ-kibi-vocabulary-alignment-capability
134
+ export function composeSubjectRanking(resolution, input, options) {
135
+ return compose(resolution, RANK_SUBJECTS, input, options.operationName);
136
+ }
137
+ /** Judge claim pairs; true judgments are review candidates, never verdicts. */
138
+ // implements REQ-kibi-vocabulary-alignment-capability
139
+ export function composeClaimComparison(resolution, input, options) {
140
+ return compose(resolution, COMPARE_CLAIMS, input, options.operationName);
141
+ }
@@ -7,4 +7,11 @@
7
7
  export declare const EXTERNAL_SEMANTIC_CLASSIFIER_OPERATIONS: readonly ["kb_semantic_advisor", "kb_compile_intent"];
8
8
  export type ExternalSemanticClassifierOperation = (typeof EXTERNAL_SEMANTIC_CLASSIFIER_OPERATIONS)[number];
9
9
  export declare function allowsExternalSemanticClassifier(operationName: string): boolean;
10
+ /**
11
+ * Operations that may call external kibi.vocabulary-alignment.v1 providers.
12
+ * kb_check and every other operation stay builtin-only: vocabulary alignment is
13
+ * modeling-time advice and never participates in pass/fail checks.
14
+ */
15
+ export declare const EXTERNAL_VOCABULARY_ALIGNMENT_OPERATIONS: readonly ["kb_model_requirement"];
16
+ export declare function allowsExternalVocabularyAlignment(operationName: string): boolean;
10
17
  //# sourceMappingURL=external-allowlist.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"external-allowlist.d.ts","sourceRoot":"","sources":["../../src/plugins/external-allowlist.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,uCAAuC,uDAG1C,CAAC;AAGX,MAAM,MAAM,mCAAmC,GAC7C,CAAC,OAAO,uCAAuC,CAAC,CAAC,MAAM,CAAC,CAAC;AAK3D,wBAAgB,gCAAgC,CAC9C,aAAa,EAAE,MAAM,GACpB,OAAO,CAET"}
1
+ {"version":3,"file":"external-allowlist.d.ts","sourceRoot":"","sources":["../../src/plugins/external-allowlist.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,uCAAuC,uDAG1C,CAAC;AAGX,MAAM,MAAM,mCAAmC,GAC7C,CAAC,OAAO,uCAAuC,CAAC,CAAC,MAAM,CAAC,CAAC;AAK3D,wBAAgB,gCAAgC,CAC9C,aAAa,EAAE,MAAM,GACpB,OAAO,CAET;AAED;;;;GAIG;AAEH,eAAO,MAAM,wCAAwC,mCAE3C,CAAC;AAGX,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,MAAM,GACpB,OAAO,CAIT"}
@@ -14,3 +14,16 @@ const ALLOWED = new Set(EXTERNAL_SEMANTIC_CLASSIFIER_OPERATIONS);
14
14
  export function allowsExternalSemanticClassifier(operationName) {
15
15
  return ALLOWED.has(operationName);
16
16
  }
17
+ /**
18
+ * Operations that may call external kibi.vocabulary-alignment.v1 providers.
19
+ * kb_check and every other operation stay builtin-only: vocabulary alignment is
20
+ * modeling-time advice and never participates in pass/fail checks.
21
+ */
22
+ // implements REQ-kibi-vocabulary-alignment-capability
23
+ export const EXTERNAL_VOCABULARY_ALIGNMENT_OPERATIONS = [
24
+ "kb_model_requirement",
25
+ ];
26
+ // implements REQ-kibi-vocabulary-alignment-capability
27
+ export function allowsExternalVocabularyAlignment(operationName) {
28
+ return EXTERNAL_VOCABULARY_ALIGNMENT_OPERATIONS.includes(operationName);
29
+ }
@@ -6,4 +6,6 @@ export { composeSemanticClassification, publicCapabilityStamp, type ComposedSema
6
6
  export { composeOntologyCatalog, composeOntologyMatches, type ComposedOntologyCatalog, type StampedOntologyCandidate, } from "./compose-ontology-packs.js";
7
7
  export { SourceAnalysisService, analyzeWithResolution, createConservativeFallbackAnalysis, createSourceAnalysisService, type HostSourceAnalysisResult, type SourceAnalysisServiceOptions, } from "./source-analysis-service.js";
8
8
  export { EXTERNAL_SEMANTIC_CLASSIFIER_OPERATIONS, allowsExternalSemanticClassifier, type ExternalSemanticClassifierOperation, } from "./external-allowlist.js";
9
+ export { composeClaimComparison, composeSubjectRanking, type ComposedVocabularyResult, type VocabularyAlignmentDiagnostic, } from "./compose-vocabulary-alignment.js";
10
+ export { EXTERNAL_VOCABULARY_ALIGNMENT_OPERATIONS, allowsExternalVocabularyAlignment, } from "./external-allowlist.js";
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,mCAAmC,EACnC,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,oCAAoC,EACzC,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,oCAAoC,EACpC,0BAA0B,EAC1B,4BAA4B,EAC5B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,EAC7B,uBAAuB,EACvB,wBAAwB,EACxB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,+BAA+B,GACrC,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,KAAK,gCAAgC,EACrC,KAAK,4BAA4B,GAClC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,GAC9B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,kCAAkC,EAClC,2BAA2B,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,GAClC,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,uCAAuC,EACvC,gCAAgC,EAChC,KAAK,mCAAmC,GACzC,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,mCAAmC,EACnC,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,oCAAoC,EACzC,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,oCAAoC,EACpC,0BAA0B,EAC1B,4BAA4B,EAC5B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,EAC7B,uBAAuB,EACvB,wBAAwB,EACxB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,+BAA+B,GACrC,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,KAAK,gCAAgC,EACrC,KAAK,4BAA4B,GAClC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,GAC9B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,kCAAkC,EAClC,2BAA2B,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,GAClC,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,uCAAuC,EACvC,gCAAgC,EAChC,KAAK,mCAAmC,GACzC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,GACnC,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,wCAAwC,EACxC,iCAAiC,GAClC,MAAM,yBAAyB,CAAC"}
@@ -31,3 +31,7 @@ export { composeOntologyCatalog, composeOntologyMatches, } from "./compose-ontol
31
31
  export { SourceAnalysisService, analyzeWithResolution, createConservativeFallbackAnalysis, createSourceAnalysisService, } from "./source-analysis-service.js";
32
32
  // implements REQ-capability-plugin-activation-disclosure-v1
33
33
  export { EXTERNAL_SEMANTIC_CLASSIFIER_OPERATIONS, allowsExternalSemanticClassifier, } from "./external-allowlist.js";
34
+ // implements REQ-kibi-vocabulary-alignment-capability
35
+ export { composeClaimComparison, composeSubjectRanking, } from "./compose-vocabulary-alignment.js";
36
+ // implements REQ-kibi-vocabulary-alignment-capability
37
+ export { EXTERNAL_VOCABULARY_ALIGNMENT_OPERATIONS, allowsExternalVocabularyAlignment, } from "./external-allowlist.js";
@@ -0,0 +1,14 @@
1
+ import type { ProjectKibiConfig } from "kibi-plugin-sdk";
2
+ import type { GitChangeSnapshot } from "../traceability/git-change-snapshot.js";
3
+ import type { Fingerprint } from "../traceability/impact-review.js";
4
+ import { type ApprovedSourceAnalyzer } from "./approved-source-analyzers.js";
5
+ import { type SourceAnalysisService } from "./source-analysis-service.js";
6
+ /** Hash the exact trusted source-extractor activation and its host-pinned closure. */
7
+ export declare function fingerprintMaintenanceSourceSet(workspaceRoot: string, projectConfig: ProjectKibiConfig): Fingerprint;
8
+ /** Verify the exact host-approved closure before any plugin entrypoint executes. */
9
+ export declare function verifyApprovedSourceAnalyzer(root: string, approval: ApprovedSourceAnalyzer): string;
10
+ /** Maintenance resolves source capabilities only; unrelated plugin code is never imported. */
11
+ export declare function createMaintenanceSourceAnalysisService(workspaceRoot: string, projectConfig?: ProjectKibiConfig): SourceAnalysisService;
12
+ /** Capture activation with the same source snapshot and retain baseline analyzers for code changes. */
13
+ export declare function readSnapshotSourceConfig(snapshot: GitChangeSnapshot, trustedTree?: string): ProjectKibiConfig;
14
+ //# sourceMappingURL=maintenance-source-analysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintenance-source-analysis.d.ts","sourceRoot":"","sources":["../../src/plugins/maintenance-source-analysis.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,gCAAgC,CAAC;AAIxC,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,8BAA8B,CAAC;AA+DtC,sFAAsF;AAEtF,wBAAgB,+BAA+B,CAC7C,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,iBAAiB,GAC/B,WAAW,CAwCb;AAED,oFAAoF;AAEpF,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,sBAAsB,GAC/B,MAAM,CAwBR;AAED,8FAA8F;AAE9F,wBAAgB,sCAAsC,CACpD,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,iBAAiB,GAChC,qBAAqB,CAyDvB;AAED,uGAAuG;AAEvG,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,iBAAiB,EAC3B,WAAW,CAAC,EAAE,MAAM,GACnB,iBAAiB,CA+CnB"}