kibi-cli 1.0.1 → 2.1.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 (548) hide show
  1. package/dist/cli-errors.d.ts +3 -1
  2. package/dist/cli-errors.d.ts.map +1 -1
  3. package/dist/cli-errors.js +4 -1
  4. package/dist/cli-json-command.d.ts +1 -0
  5. package/dist/cli-json-command.d.ts.map +1 -1
  6. package/dist/cli-json-command.js +13 -4
  7. package/dist/cli-operation-loader.js +3 -3
  8. package/dist/cli-operation-metadata.d.ts +4 -3
  9. package/dist/cli-operation-metadata.d.ts.map +1 -1
  10. package/dist/cli-operation-metadata.js +7 -5
  11. package/dist/cli-protocol.js +1 -1
  12. package/dist/cli-register-maintenance.d.ts.map +1 -1
  13. package/dist/cli-register-maintenance.js +7 -0
  14. package/dist/cli-register-proof.d.ts +3 -0
  15. package/dist/cli-register-proof.d.ts.map +1 -0
  16. package/dist/cli-register-proof.js +127 -0
  17. package/dist/cli-register-reporting.d.ts.map +1 -1
  18. package/dist/cli-register-reporting.js +7 -0
  19. package/dist/cli.d.ts +4 -0
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +19 -10
  22. package/dist/commands/branch.d.ts +1 -0
  23. package/dist/commands/branch.d.ts.map +1 -1
  24. package/dist/commands/branch.js +8 -4
  25. package/dist/commands/check-generated.d.ts +7 -0
  26. package/dist/commands/check-generated.d.ts.map +1 -0
  27. package/dist/commands/check-generated.js +192 -0
  28. package/dist/commands/check.d.ts +14 -0
  29. package/dist/commands/check.d.ts.map +1 -1
  30. package/dist/commands/check.js +193 -46
  31. package/dist/commands/coverage.d.ts +1 -0
  32. package/dist/commands/coverage.d.ts.map +1 -1
  33. package/dist/commands/coverage.js +6 -0
  34. package/dist/commands/doctor.d.ts +22 -0
  35. package/dist/commands/doctor.d.ts.map +1 -1
  36. package/dist/commands/doctor.js +170 -23
  37. package/dist/commands/engine.d.ts +12 -0
  38. package/dist/commands/engine.d.ts.map +1 -1
  39. package/dist/commands/engine.js +42 -0
  40. package/dist/commands/github-init.d.ts +1 -0
  41. package/dist/commands/github-init.d.ts.map +1 -1
  42. package/dist/commands/github-init.js +9 -5
  43. package/dist/commands/init-helpers.d.ts.map +1 -1
  44. package/dist/commands/init-helpers.js +49 -10
  45. package/dist/commands/migrate.d.ts +4 -0
  46. package/dist/commands/migrate.d.ts.map +1 -1
  47. package/dist/commands/migrate.js +7 -7
  48. package/dist/commands/proof-explain.d.ts +10 -0
  49. package/dist/commands/proof-explain.d.ts.map +1 -0
  50. package/dist/commands/proof-explain.js +45 -0
  51. package/dist/commands/proof-impact.d.ts +7 -0
  52. package/dist/commands/proof-impact.d.ts.map +1 -0
  53. package/dist/commands/proof-impact.js +39 -0
  54. package/dist/commands/proof-migrate-legacy.d.ts +7 -0
  55. package/dist/commands/proof-migrate-legacy.d.ts.map +1 -0
  56. package/dist/commands/proof-migrate-legacy.js +45 -0
  57. package/dist/commands/proof-prune.d.ts +8 -0
  58. package/dist/commands/proof-prune.d.ts.map +1 -0
  59. package/dist/commands/proof-prune.js +53 -0
  60. package/dist/commands/prove.d.ts +37 -0
  61. package/dist/commands/prove.d.ts.map +1 -0
  62. package/dist/commands/prove.js +470 -0
  63. package/dist/commands/report.d.ts.map +1 -1
  64. package/dist/commands/report.js +18 -3
  65. package/dist/commands/sync/discovery.d.ts +3 -0
  66. package/dist/commands/sync/discovery.d.ts.map +1 -1
  67. package/dist/commands/sync/discovery.js +36 -28
  68. package/dist/commands/sync/manifest.d.ts +2 -1
  69. package/dist/commands/sync/manifest.d.ts.map +1 -1
  70. package/dist/commands/sync/manifest.js +55 -21
  71. package/dist/commands/sync/persistence.d.ts +4 -1
  72. package/dist/commands/sync/persistence.d.ts.map +1 -1
  73. package/dist/commands/sync/persistence.js +31 -14
  74. package/dist/commands/sync/staging.d.ts +1 -0
  75. package/dist/commands/sync/staging.d.ts.map +1 -1
  76. package/dist/commands/sync/staging.js +5 -2
  77. package/dist/commands/sync/untracked-targets.d.ts +24 -0
  78. package/dist/commands/sync/untracked-targets.d.ts.map +1 -0
  79. package/dist/commands/sync/untracked-targets.js +108 -0
  80. package/dist/commands/sync.d.ts +11 -1
  81. package/dist/commands/sync.d.ts.map +1 -1
  82. package/dist/commands/sync.js +74 -30
  83. package/dist/engine-daemon.d.ts +3 -1
  84. package/dist/engine-daemon.d.ts.map +1 -1
  85. package/dist/engine-daemon.js +49 -20
  86. package/dist/engine.d.ts +17 -77
  87. package/dist/engine.d.ts.map +1 -1
  88. package/dist/engine.js +331 -91
  89. package/dist/env/bootstrap.d.ts +84 -0
  90. package/dist/env/bootstrap.d.ts.map +1 -0
  91. package/dist/env/bootstrap.js +310 -0
  92. package/dist/extractors/manifest.d.ts +5 -0
  93. package/dist/extractors/manifest.d.ts.map +1 -1
  94. package/dist/extractors/manifest.js +46 -1
  95. package/dist/extractors/markdown.d.ts +7 -3
  96. package/dist/extractors/markdown.d.ts.map +1 -1
  97. package/dist/extractors/markdown.js +60 -24
  98. package/dist/extractors/playwright-cases.js +1 -1
  99. package/dist/extractors/relationships.d.ts +6 -0
  100. package/dist/extractors/relationships.d.ts.map +1 -1
  101. package/dist/extractors/relationships.js +1 -1
  102. package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
  103. package/dist/extractors/symbols-coordinator.d.ts +8 -0
  104. package/dist/extractors/symbols-coordinator.d.ts.map +1 -1
  105. package/dist/extractors/symbols-coordinator.js +40 -0
  106. package/dist/extractors/symbols-ts.d.ts +9 -19
  107. package/dist/extractors/symbols-ts.d.ts.map +1 -1
  108. package/dist/extractors/symbols-ts.js +34 -429
  109. package/dist/intent-search.d.ts +1 -0
  110. package/dist/intent-search.d.ts.map +1 -1
  111. package/dist/intent-search.js +11 -8
  112. package/dist/logic/ir.d.ts +1 -0
  113. package/dist/logic/ir.d.ts.map +1 -1
  114. package/dist/logic/ir.js +1 -1
  115. package/dist/operations/bootstrap/activation.d.ts +2 -1
  116. package/dist/operations/bootstrap/activation.d.ts.map +1 -1
  117. package/dist/operations/bootstrap/activation.js +11 -3
  118. package/dist/operations/bootstrap/generate.d.ts +2 -1
  119. package/dist/operations/bootstrap/generate.d.ts.map +1 -1
  120. package/dist/operations/bootstrap/generate.js +6 -3
  121. package/dist/operations/bootstrap/guidance.d.ts +1 -0
  122. package/dist/operations/bootstrap/guidance.d.ts.map +1 -1
  123. package/dist/operations/bootstrap/guidance.js +1 -1
  124. package/dist/operations/modeling/model-requirement.d.ts +5 -0
  125. package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
  126. package/dist/operations/modeling/model-requirement.js +57 -46
  127. package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -1
  128. package/dist/operations/modeling/predicate-applicability.js +103 -4
  129. package/dist/operations/modeling/predicate-catalog-2.d.ts.map +1 -1
  130. package/dist/operations/modeling/predicate-catalog-2.js +18 -2
  131. package/dist/operations/modeling/predicate-catalog-3.d.ts.map +1 -1
  132. package/dist/operations/modeling/predicate-catalog-3.js +17 -1
  133. package/dist/operations/modeling/predicate-catalog-5.d.ts +10 -0
  134. package/dist/operations/modeling/predicate-catalog-5.d.ts.map +1 -0
  135. package/dist/operations/modeling/predicate-catalog-5.js +291 -0
  136. package/dist/operations/modeling/predicate-catalog.d.ts.map +1 -1
  137. package/dist/operations/modeling/predicate-catalog.js +4 -0
  138. package/dist/operations/modeling/predicate-loader.d.ts +1 -0
  139. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
  140. package/dist/operations/modeling/predicate-loader.js +4 -3
  141. package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
  142. package/dist/operations/modeling/predicate-ranker.js +4 -1
  143. package/dist/operations/modeling/predicate-types.d.ts +1 -1
  144. package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
  145. package/dist/operations/modeling/predicate-usage-hints-4.d.ts +3 -0
  146. package/dist/operations/modeling/predicate-usage-hints-4.d.ts.map +1 -0
  147. package/dist/operations/modeling/predicate-usage-hints-4.js +84 -0
  148. package/dist/operations/modeling/suggest-predicates.d.ts +4 -2
  149. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
  150. package/dist/operations/modeling/suggest-predicates.js +82 -22
  151. package/dist/operations/mutation/contradictions.d.ts +2 -1
  152. package/dist/operations/mutation/contradictions.d.ts.map +1 -1
  153. package/dist/operations/mutation/contradictions.js +26 -5
  154. package/dist/operations/mutation/delete.d.ts +3 -0
  155. package/dist/operations/mutation/delete.d.ts.map +1 -1
  156. package/dist/operations/mutation/delete.js +100 -32
  157. package/dist/operations/mutation/relationships.d.ts +1 -0
  158. package/dist/operations/mutation/relationships.d.ts.map +1 -1
  159. package/dist/operations/mutation/relationships.js +6 -4
  160. package/dist/operations/mutation/saga.d.ts +51 -0
  161. package/dist/operations/mutation/saga.d.ts.map +1 -0
  162. package/dist/operations/mutation/saga.js +67 -0
  163. package/dist/operations/mutation/serialization.d.ts.map +1 -1
  164. package/dist/operations/mutation/serialization.js +3 -2
  165. package/dist/operations/mutation/source-authoring.d.ts +5 -1
  166. package/dist/operations/mutation/source-authoring.d.ts.map +1 -1
  167. package/dist/operations/mutation/source-authoring.js +79 -46
  168. package/dist/operations/mutation/strict-fact.d.ts +1 -0
  169. package/dist/operations/mutation/strict-fact.d.ts.map +1 -1
  170. package/dist/operations/mutation/strict-fact.js +8 -5
  171. package/dist/operations/mutation/symbol-compiler-lock.d.ts +5 -2
  172. package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -1
  173. package/dist/operations/mutation/symbol-compiler-lock.js +65 -2
  174. package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
  175. package/dist/operations/mutation/symbol-granularity.js +11 -89
  176. package/dist/operations/mutation/symbol-refresh.d.ts +1 -0
  177. package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
  178. package/dist/operations/mutation/symbol-refresh.js +10 -8
  179. package/dist/operations/mutation/upsert.d.ts +18 -2
  180. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  181. package/dist/operations/mutation/upsert.js +86 -54
  182. package/dist/operations/mutation/validate-upsert.js +2 -2
  183. package/dist/operations/mutation/validation.d.ts.map +1 -1
  184. package/dist/operations/mutation/validation.js +46 -4
  185. package/dist/operations/mutation/warnings.d.ts +1 -0
  186. package/dist/operations/mutation/warnings.d.ts.map +1 -1
  187. package/dist/operations/mutation/warnings.js +7 -5
  188. package/dist/operations/mutation/workspace-mutation-lock.d.ts +60 -0
  189. package/dist/operations/mutation/workspace-mutation-lock.d.ts.map +1 -0
  190. package/dist/operations/mutation/workspace-mutation-lock.js +362 -0
  191. package/dist/operations/planning/apply-plan.d.ts +8 -106
  192. package/dist/operations/planning/apply-plan.d.ts.map +1 -1
  193. package/dist/operations/planning/apply-plan.js +113 -36
  194. package/dist/operations/planning/compile-intent.d.ts +51 -0
  195. package/dist/operations/planning/compile-intent.d.ts.map +1 -1
  196. package/dist/operations/planning/compile-intent.js +133 -17
  197. package/dist/operations/proof/baseline-diff.d.ts +41 -0
  198. package/dist/operations/proof/baseline-diff.d.ts.map +1 -0
  199. package/dist/operations/proof/baseline-diff.js +153 -0
  200. package/dist/operations/proof/explain.d.ts +75 -0
  201. package/dist/operations/proof/explain.d.ts.map +1 -0
  202. package/dist/operations/proof/explain.js +294 -0
  203. package/dist/operations/proof/impact.d.ts +45 -0
  204. package/dist/operations/proof/impact.d.ts.map +1 -0
  205. package/dist/operations/proof/impact.js +118 -0
  206. package/dist/operations/proof/ingest-proof.d.ts +34 -0
  207. package/dist/operations/proof/ingest-proof.d.ts.map +1 -0
  208. package/dist/operations/proof/ingest-proof.js +348 -0
  209. package/dist/operations/proof/migrate-legacy-receipts.d.ts +30 -0
  210. package/dist/operations/proof/migrate-legacy-receipts.d.ts.map +1 -0
  211. package/dist/operations/proof/migrate-legacy-receipts.js +92 -0
  212. package/dist/operations/proof/prune-receipts.d.ts +35 -0
  213. package/dist/operations/proof/prune-receipts.d.ts.map +1 -0
  214. package/dist/operations/proof/prune-receipts.js +91 -0
  215. package/dist/operations/proof/receipt-document.d.ts +29 -0
  216. package/dist/operations/proof/receipt-document.d.ts.map +1 -0
  217. package/dist/operations/proof/receipt-document.js +117 -0
  218. package/dist/operations/semantic-advisor/analysis-receipt.d.ts.map +1 -1
  219. package/dist/operations/semantic-advisor/analysis-receipt.js +3 -9
  220. package/dist/operations/semantic-advisor/analyze-prose.d.ts +1 -0
  221. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  222. package/dist/operations/semantic-advisor/analyze-prose.js +64 -93
  223. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
  224. package/dist/operations/semantic-advisor/clauses.js +20 -7
  225. package/dist/operations/semantic-advisor/plugin-orchestration.d.ts +63 -0
  226. package/dist/operations/semantic-advisor/plugin-orchestration.d.ts.map +1 -0
  227. package/dist/operations/semantic-advisor/plugin-orchestration.js +489 -0
  228. package/dist/operations/semantic-advisor/predicate-rules-core.d.ts +15 -2
  229. package/dist/operations/semantic-advisor/predicate-rules-core.d.ts.map +1 -1
  230. package/dist/operations/semantic-advisor/predicate-rules-core.js +7 -140
  231. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts +11 -12
  232. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts.map +1 -1
  233. package/dist/operations/semantic-advisor/predicate-rules-launcher.js +6 -94
  234. package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts +16 -0
  235. package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts.map +1 -1
  236. package/dist/operations/semantic-advisor/predicate-rules-policy.js +7 -150
  237. package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts +9 -0
  238. package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts.map +1 -1
  239. package/dist/operations/semantic-advisor/predicate-rules-product-tail.js +7 -102
  240. package/dist/operations/semantic-advisor/predicate-rules-product.d.ts +13 -0
  241. package/dist/operations/semantic-advisor/predicate-rules-product.d.ts.map +1 -1
  242. package/dist/operations/semantic-advisor/predicate-rules-product.js +7 -133
  243. package/dist/operations/semantic-advisor/strict-count-rules.d.ts +2 -0
  244. package/dist/operations/semantic-advisor/strict-count-rules.d.ts.map +1 -1
  245. package/dist/operations/semantic-advisor/strict-count-rules.js +40 -25
  246. package/dist/operations/semantic-advisor/types.d.ts +1 -0
  247. package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
  248. package/dist/plugins/compose-ontology-packs.d.ts +51 -0
  249. package/dist/plugins/compose-ontology-packs.d.ts.map +1 -0
  250. package/dist/plugins/compose-ontology-packs.js +257 -0
  251. package/dist/plugins/compose-semantic-classifier.d.ts +42 -0
  252. package/dist/plugins/compose-semantic-classifier.d.ts.map +1 -0
  253. package/dist/plugins/compose-semantic-classifier.js +211 -0
  254. package/dist/plugins/external-allowlist.d.ts +10 -0
  255. package/dist/plugins/external-allowlist.d.ts.map +1 -0
  256. package/dist/plugins/external-allowlist.js +16 -0
  257. package/dist/plugins/index.d.ts +9 -0
  258. package/dist/plugins/index.d.ts.map +1 -0
  259. package/dist/plugins/index.js +33 -0
  260. package/dist/plugins/load-plugin.d.ts +19 -0
  261. package/dist/plugins/load-plugin.d.ts.map +1 -0
  262. package/dist/plugins/load-plugin.js +59 -0
  263. package/dist/plugins/project-config.d.ts +28 -0
  264. package/dist/plugins/project-config.d.ts.map +1 -0
  265. package/dist/plugins/project-config.js +90 -0
  266. package/dist/plugins/registry.d.ts +93 -0
  267. package/dist/plugins/registry.d.ts.map +1 -0
  268. package/dist/plugins/registry.js +338 -0
  269. package/dist/plugins/resolve-package.d.ts +47 -0
  270. package/dist/plugins/resolve-package.d.ts.map +1 -0
  271. package/dist/plugins/resolve-package.js +262 -0
  272. package/dist/plugins/source-analysis-service.d.ts +44 -0
  273. package/dist/plugins/source-analysis-service.d.ts.map +1 -0
  274. package/dist/plugins/source-analysis-service.js +232 -0
  275. package/dist/prolog/codec.d.ts +13 -1
  276. package/dist/prolog/codec.d.ts.map +1 -1
  277. package/dist/prolog/codec.js +269 -154
  278. package/dist/prolog/error-terms.d.ts +47 -0
  279. package/dist/prolog/error-terms.d.ts.map +1 -0
  280. package/dist/prolog/error-terms.js +334 -0
  281. package/dist/prolog/janitor.d.ts +50 -0
  282. package/dist/prolog/janitor.d.ts.map +1 -0
  283. package/dist/prolog/janitor.js +154 -0
  284. package/dist/prolog/store-lock.d.ts +45 -0
  285. package/dist/prolog/store-lock.d.ts.map +1 -0
  286. package/dist/prolog/store-lock.js +195 -0
  287. package/dist/prolog.d.ts +7 -0
  288. package/dist/prolog.d.ts.map +1 -1
  289. package/dist/prolog.js +55 -17
  290. package/dist/proof/evaluate.d.ts +27 -0
  291. package/dist/proof/evaluate.d.ts.map +1 -0
  292. package/dist/proof/evaluate.js +151 -0
  293. package/dist/proof/inspect.d.ts +12 -0
  294. package/dist/proof/inspect.d.ts.map +1 -0
  295. package/dist/proof/inspect.js +236 -0
  296. package/dist/proof/integrations.d.ts +35 -0
  297. package/dist/proof/integrations.d.ts.map +1 -0
  298. package/dist/proof/integrations.js +123 -0
  299. package/dist/proof/producers/junit-adapter.d.ts +26 -0
  300. package/dist/proof/producers/junit-adapter.d.ts.map +1 -0
  301. package/dist/proof/producers/junit-adapter.js +186 -0
  302. package/dist/{public → proof/producers}/playwright-case-id.d.ts +1 -1
  303. package/dist/proof/producers/playwright-case-id.d.ts.map +1 -0
  304. package/dist/{public → proof/producers}/playwright-case-id.js +1 -1
  305. package/dist/proof/producers/playwright-reporter.d.ts +27 -0
  306. package/dist/proof/producers/playwright-reporter.d.ts.map +1 -0
  307. package/dist/proof/producers/playwright-reporter.js +138 -0
  308. package/dist/proof/producers/tap-adapter.d.ts +10 -0
  309. package/dist/proof/producers/tap-adapter.d.ts.map +1 -0
  310. package/dist/proof/producers/tap-adapter.js +200 -0
  311. package/dist/proof/receipt-outcome.d.ts +2 -0
  312. package/dist/proof/receipt-outcome.d.ts.map +1 -0
  313. package/dist/proof/receipt-outcome.js +1 -0
  314. package/dist/public/diagnostic-usage.js +6 -6
  315. package/dist/public/distribution-parity.d.ts +7 -1
  316. package/dist/public/distribution-parity.d.ts.map +1 -1
  317. package/dist/public/distribution-parity.js +15 -10
  318. package/dist/public/extractors/symbols-coordinator.d.ts +1 -1
  319. package/dist/public/extractors/symbols-coordinator.d.ts.map +1 -1
  320. package/dist/public/extractors/symbols-coordinator.js +1 -1
  321. package/dist/public/impact/analyzer.d.ts +1 -1
  322. package/dist/public/impact/analyzer.d.ts.map +1 -1
  323. package/dist/public/impact/analyzer.js +6 -4
  324. package/dist/public/impact/coverage-depth-quality.d.ts +1 -0
  325. package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
  326. package/dist/public/impact/coverage-depth-quality.js +1 -1
  327. package/dist/public/impact/diagnostics.d.ts.map +1 -1
  328. package/dist/public/impact/diagnostics.js +2 -2
  329. package/dist/public/impact/diff-meaning.d.ts +1 -0
  330. package/dist/public/impact/diff-meaning.d.ts.map +1 -1
  331. package/dist/public/impact/diff-meaning.js +5 -2
  332. package/dist/public/impact/full-kb-quality.d.ts +5 -2
  333. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  334. package/dist/public/impact/full-kb-quality.js +329 -64
  335. package/dist/public/operations/catalog.d.ts +450 -196
  336. package/dist/public/operations/catalog.d.ts.map +1 -1
  337. package/dist/public/operations/catalog.js +6 -4
  338. package/dist/public/operations/check-executor.d.ts.map +1 -1
  339. package/dist/public/operations/check-executor.js +4 -8
  340. package/dist/public/operations/check-helpers.d.ts +1 -1
  341. package/dist/public/operations/check-helpers.d.ts.map +1 -1
  342. package/dist/public/operations/check-helpers.js +1 -1
  343. package/dist/public/operations/contracts.d.ts +7 -0
  344. package/dist/public/operations/contracts.d.ts.map +1 -1
  345. package/dist/public/operations/contracts.js +66 -34
  346. package/dist/public/operations/discovery-entities.d.ts +15 -0
  347. package/dist/public/operations/discovery-entities.d.ts.map +1 -1
  348. package/dist/public/operations/discovery-entities.js +38 -0
  349. package/dist/public/operations/discovery-executors.d.ts +9 -9
  350. package/dist/public/operations/discovery-executors.d.ts.map +1 -1
  351. package/dist/public/operations/discovery-executors.js +39 -31
  352. package/dist/public/operations/index.d.ts +1 -1
  353. package/dist/public/operations/index.d.ts.map +1 -1
  354. package/dist/public/operations/index.js +1 -1
  355. package/dist/public/operations/migration-plan.d.ts +4 -3
  356. package/dist/public/operations/migration-plan.d.ts.map +1 -1
  357. package/dist/public/operations/migration-plan.js +23 -21
  358. package/dist/public/operations/node-ports.js +6 -6
  359. package/dist/public/operations/prolog-json.d.ts +1 -1
  360. package/dist/public/operations/prolog-json.d.ts.map +1 -1
  361. package/dist/public/operations/prolog-json.js +7 -7
  362. package/dist/public/operations/repair-plan.d.ts +3 -3
  363. package/dist/public/operations/repair-plan.d.ts.map +1 -1
  364. package/dist/public/operations/repair-plan.js +49 -19
  365. package/dist/public/operations/result-envelope.d.ts +1 -0
  366. package/dist/public/operations/result-envelope.d.ts.map +1 -1
  367. package/dist/public/operations/result-envelope.js +12 -10
  368. package/dist/public/operations/runtime-types.d.ts +21 -1
  369. package/dist/public/operations/runtime-types.d.ts.map +1 -1
  370. package/dist/public/operations/specs/check-rules.generated.d.ts +5 -0
  371. package/dist/public/operations/specs/check-rules.generated.d.ts.map +1 -0
  372. package/dist/public/operations/specs/check-rules.generated.js +35 -0
  373. package/dist/public/operations/specs/check.d.ts +7 -2
  374. package/dist/public/operations/specs/check.d.ts.map +1 -1
  375. package/dist/public/operations/specs/check.js +8 -20
  376. package/dist/public/operations/specs/discovery.d.ts +3 -0
  377. package/dist/public/operations/specs/discovery.d.ts.map +1 -1
  378. package/dist/public/operations/specs/discovery.js +3 -0
  379. package/dist/public/operations/specs/mutation-schemas.d.ts +257 -163
  380. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  381. package/dist/public/operations/specs/mutation-schemas.js +15 -7
  382. package/dist/public/operations/specs/planning.d.ts +9 -0
  383. package/dist/public/operations/specs/planning.d.ts.map +1 -1
  384. package/dist/public/operations/specs/planning.js +6 -0
  385. package/dist/public/operations/specs/proof.d.ts +212 -0
  386. package/dist/public/operations/specs/proof.d.ts.map +1 -0
  387. package/dist/public/operations/specs/proof.js +30 -0
  388. package/dist/public/operations/specs/reporting.d.ts +20 -0
  389. package/dist/public/operations/specs/reporting.d.ts.map +1 -1
  390. package/dist/public/operations/specs/reporting.js +112 -12
  391. package/dist/public/operations/specs/semantic.d.ts +1 -1
  392. package/dist/public/operations/specs/semantic.d.ts.map +1 -1
  393. package/dist/public/operations/specs/semantic.js +54 -4
  394. package/dist/public/operations/specs/upsert.d.ts +257 -163
  395. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  396. package/dist/public/operations/symbol-repair-plan.d.ts +11 -0
  397. package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -1
  398. package/dist/public/operations/symbol-repair-plan.js +121 -4
  399. package/dist/public/operations/types.d.ts +6 -1
  400. package/dist/public/operations/types.d.ts.map +1 -1
  401. package/dist/public/proof-fingerprint.d.ts +54 -0
  402. package/dist/public/proof-fingerprint.d.ts.map +1 -0
  403. package/dist/public/proof-fingerprint.js +141 -0
  404. package/dist/public/proof-protocol.d.ts +354 -0
  405. package/dist/public/proof-protocol.d.ts.map +1 -0
  406. package/dist/public/proof-protocol.js +454 -0
  407. package/dist/public/proof-receipt.d.ts +279 -0
  408. package/dist/public/proof-receipt.d.ts.map +1 -0
  409. package/dist/public/proof-receipt.js +377 -0
  410. package/dist/public/schemas/entity.d.ts.map +1 -1
  411. package/dist/public/schemas/entity.js +21 -7
  412. package/dist/public/skills/kibi-freshness/SKILL.md +1 -1
  413. package/dist/public/skills/kibi-usage/SKILL.md +44 -12
  414. package/dist/public/skills/kibi-usage/resources/operation-access.md +1 -1
  415. package/dist/public/skills/kibi-usage/resources/proof.md +150 -0
  416. package/dist/public/skills/kibi-usage/resources/workflows.md +6 -6
  417. package/dist/public/symbol-granularity.d.ts +3 -14
  418. package/dist/public/symbol-granularity.d.ts.map +1 -1
  419. package/dist/public/symbol-granularity.generated.d.ts +16 -0
  420. package/dist/public/symbol-granularity.generated.d.ts.map +1 -0
  421. package/dist/public/symbol-granularity.generated.js +53 -0
  422. package/dist/public/symbol-granularity.js +6 -47
  423. package/dist/public/telemetry-acceptance.d.ts +3 -77
  424. package/dist/public/telemetry-acceptance.d.ts.map +1 -1
  425. package/dist/public/telemetry-acceptance.js +4 -2
  426. package/dist/public/telemetry-remediation.js +1 -1
  427. package/dist/report/html-report.css +1240 -0
  428. package/dist/report/html-report.d.ts +4 -2
  429. package/dist/report/html-report.d.ts.map +1 -1
  430. package/dist/report/html-report.js +37 -300
  431. package/dist/runtime/cli-runtime.d.ts +2 -0
  432. package/dist/runtime/cli-runtime.d.ts.map +1 -1
  433. package/dist/runtime/cli-runtime.js +32 -7
  434. package/dist/schemas/entity.schema.json +355 -215
  435. package/dist/search-ranking.d.ts +1 -0
  436. package/dist/search-ranking.d.ts.map +1 -1
  437. package/dist/search-ranking.js +3 -0
  438. package/dist/traceability/evidence-model.d.ts +28 -0
  439. package/dist/traceability/evidence-model.d.ts.map +1 -1
  440. package/dist/traceability/git-staged.d.ts +20 -0
  441. package/dist/traceability/git-staged.d.ts.map +1 -1
  442. package/dist/traceability/git-staged.js +145 -1
  443. package/dist/traceability/staged-diagnostics.d.ts +7 -0
  444. package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
  445. package/dist/traceability/staged-diagnostics.js +78 -7
  446. package/dist/traceability/staged-file-coverage.d.ts +33 -0
  447. package/dist/traceability/staged-file-coverage.d.ts.map +1 -0
  448. package/dist/traceability/staged-file-coverage.js +284 -0
  449. package/dist/traceability/staged-impact-contract.js +4 -4
  450. package/dist/traceability/staged-symbols-manifest.d.ts +13 -0
  451. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  452. package/dist/traceability/staged-symbols-manifest.js +138 -27
  453. package/dist/traceability/symbol-extract.d.ts +24 -2
  454. package/dist/traceability/symbol-extract.d.ts.map +1 -1
  455. package/dist/traceability/symbol-extract.js +64 -208
  456. package/dist/traceability/temp-kb.d.ts +2 -0
  457. package/dist/traceability/temp-kb.d.ts.map +1 -1
  458. package/dist/traceability/temp-kb.js +13 -4
  459. package/dist/types/entities.d.ts +5 -3
  460. package/dist/types/entities.d.ts.map +1 -1
  461. package/dist/utils/branch-resolver.d.ts +1 -0
  462. package/dist/utils/branch-resolver.d.ts.map +1 -1
  463. package/dist/utils/branch-resolver.js +7 -4
  464. package/dist/utils/branch-store.d.ts +6 -0
  465. package/dist/utils/branch-store.d.ts.map +1 -1
  466. package/dist/utils/branch-store.js +27 -0
  467. package/dist/utils/kb-paths.d.ts +1 -1
  468. package/dist/utils/kb-paths.d.ts.map +1 -1
  469. package/dist/utils/kb-paths.js +1 -1
  470. package/dist/utils/rule-registry.d.ts +1 -11
  471. package/dist/utils/rule-registry.d.ts.map +1 -1
  472. package/dist/utils/rule-registry.generated.d.ts +102 -0
  473. package/dist/utils/rule-registry.generated.d.ts.map +1 -0
  474. package/dist/utils/rule-registry.generated.js +131 -0
  475. package/dist/utils/rule-registry.js +12 -113
  476. package/dist/utils/strict-modeling.d.ts +1 -0
  477. package/dist/utils/strict-modeling.d.ts.map +1 -1
  478. package/dist/utils/strict-modeling.js +1 -1
  479. package/package.json +20 -20
  480. package/src/public/diagnostic-usage.ts +6 -6
  481. package/src/public/distribution-parity.ts +17 -10
  482. package/src/public/extractors/symbols-coordinator.ts +1 -0
  483. package/src/public/impact/analyzer.ts +15 -12
  484. package/src/public/impact/coverage-depth-quality.ts +1 -1
  485. package/src/public/impact/diagnostics.ts +2 -1
  486. package/src/public/impact/diff-meaning.ts +11 -4
  487. package/src/public/impact/full-kb-quality.ts +463 -72
  488. package/src/public/operations/catalog.ts +10 -4
  489. package/src/public/operations/check-executor.ts +4 -8
  490. package/src/public/operations/check-helpers.ts +2 -2
  491. package/src/public/operations/contracts.ts +78 -34
  492. package/src/public/operations/discovery-entities.ts +53 -0
  493. package/src/public/operations/discovery-executors.ts +64 -48
  494. package/src/public/operations/index.ts +1 -1
  495. package/src/public/operations/migration-plan.ts +32 -25
  496. package/src/public/operations/node-ports.ts +6 -6
  497. package/src/public/operations/prolog-json.ts +13 -5
  498. package/src/public/operations/repair-plan.ts +60 -23
  499. package/src/public/operations/result-envelope.ts +15 -10
  500. package/src/public/operations/runtime-types.ts +26 -2
  501. package/src/public/operations/specs/check-rules.generated.ts +38 -0
  502. package/src/public/operations/specs/check.ts +12 -21
  503. package/src/public/operations/specs/discovery.ts +3 -0
  504. package/src/public/operations/specs/mutation-schemas.ts +22 -9
  505. package/src/public/operations/specs/planning.ts +7 -0
  506. package/src/public/operations/specs/proof.ts +43 -0
  507. package/src/public/operations/specs/reporting.ts +140 -13
  508. package/src/public/operations/specs/semantic.ts +79 -17
  509. package/src/public/operations/symbol-repair-plan.ts +166 -7
  510. package/src/public/operations/types.ts +6 -1
  511. package/src/public/proof-fingerprint.ts +216 -0
  512. package/src/public/proof-protocol-types.d.ts +96 -0
  513. package/src/public/proof-protocol.ts +589 -0
  514. package/src/public/proof-receipt.ts +499 -0
  515. package/src/public/schemas/entity.ts +26 -10
  516. package/src/public/skills/kibi-freshness/SKILL.md +1 -1
  517. package/src/public/skills/kibi-usage/SKILL.md +44 -12
  518. package/src/public/skills/kibi-usage/resources/operation-access.md +1 -1
  519. package/src/public/skills/kibi-usage/resources/proof.md +150 -0
  520. package/src/public/skills/kibi-usage/resources/workflows.md +6 -6
  521. package/src/public/symbol-granularity.generated.ts +74 -0
  522. package/src/public/symbol-granularity.ts +34 -59
  523. package/src/public/telemetry-acceptance-types.d.ts +98 -0
  524. package/src/public/telemetry-acceptance.ts +22 -100
  525. package/src/public/telemetry-remediation.ts +1 -1
  526. package/src/schemas/entity.schema.json +355 -215
  527. package/dist/cli-register-verification.d.ts +0 -3
  528. package/dist/cli-register-verification.d.ts.map +0 -1
  529. package/dist/cli-register-verification.js +0 -16
  530. package/dist/commands/verify.d.ts +0 -10
  531. package/dist/commands/verify.d.ts.map +0 -1
  532. package/dist/commands/verify.js +0 -126
  533. package/dist/operations/verification/ingest-verification.d.ts +0 -29
  534. package/dist/operations/verification/ingest-verification.d.ts.map +0 -1
  535. package/dist/operations/verification/ingest-verification.js +0 -192
  536. package/dist/public/operations/specs/verification.d.ts +0 -78
  537. package/dist/public/operations/specs/verification.d.ts.map +0 -1
  538. package/dist/public/operations/specs/verification.js +0 -62
  539. package/dist/public/playwright-case-id.d.ts.map +0 -1
  540. package/dist/public/verification-receipt.d.ts +0 -242
  541. package/dist/public/verification-receipt.d.ts.map +0 -1
  542. package/dist/public/verification-receipt.js +0 -296
  543. package/dist/verification/playwright-reporter.d.ts +0 -21
  544. package/dist/verification/playwright-reporter.d.ts.map +0 -1
  545. package/dist/verification/playwright-reporter.js +0 -114
  546. package/src/public/operations/specs/verification.ts +0 -78
  547. package/src/public/playwright-case-id.ts +0 -35
  548. package/src/public/verification-receipt.ts +0 -412
@@ -20,9 +20,22 @@ import { existsSync, readFileSync, statSync } from "node:fs";
20
20
  import { createRequire } from "node:module";
21
21
  import * as path from "node:path";
22
22
  import { fileURLToPath } from "node:url";
23
+ import { bootstrapKibiEnvironment, secretSourceFromBootstrap, } from "../env/bootstrap.js";
24
+ import { describeConfiguredCapabilityPlugins, readProjectKibiConfig, } from "../plugins/project-config.js";
23
25
  import { buildMigrationPlan, migrationAction, } from "../public/operations/migration-plan.js";
24
26
  import { readKbManifestStatus } from "../utils/kb-manifest.js";
25
27
  import { planLegacyStorageMigration } from "./legacy-storage-migration.js";
28
+ /**
29
+ * First-party plugin diagnostics known without importing the package.
30
+ * Generic third-party plugins report package/capability/mode/declared only.
31
+ */
32
+ // implements REQ-kibi-env-bootstrap, REQ-capability-plugin-configuration-v1
33
+ const FIRST_PARTY_PLUGIN_SECRETS = {
34
+ "kibi-plugin-jev": ["TYPESAFE_API_KEY"],
35
+ };
36
+ /** Static Jev defaults — must stay aligned with kibi-plugin-jev (no import). */
37
+ const JEV_DEFAULT_MODEL = "jev-latest";
38
+ const JEV_MAX_TIMEOUT_MS = 120_000;
26
39
  // implements REQ-003
27
40
  export async function doctorCommand(options = {}) {
28
41
  const checks = [
@@ -58,8 +71,15 @@ export async function doctorCommand(options = {}) {
58
71
  name: "post-rewrite hook",
59
72
  check: checkPostRewriteHook,
60
73
  },
74
+ {
75
+ name: "Capability plugins",
76
+ check: checkCapabilityPlugins,
77
+ },
61
78
  ];
62
- const results = checks.map(({ name, check }) => ({ name, ...check() }));
79
+ const results = [];
80
+ for (const { name, check } of checks) {
81
+ results.push({ name, ...(await check()) });
82
+ }
63
83
  const allPassed = results.every((result) => result.passed);
64
84
  const runtime = await runtimeProvenance();
65
85
  const packageActions = await packageMigrationActions(runtime);
@@ -97,7 +117,16 @@ export async function doctorCommand(options = {}) {
97
117
  console.log("Some checks failed. Please address the issues above.");
98
118
  return { exitCode: 1 };
99
119
  }
100
- async function packageMigrationActions(runtime) {
120
+ export async function detectExecuteApplyPlanExport(load = () => import("../public/operations/index.js")) {
121
+ try {
122
+ const operations = await load();
123
+ return typeof operations.executeApplyPlan === "function";
124
+ }
125
+ catch {
126
+ return false;
127
+ }
128
+ }
129
+ export async function packageMigrationActions(runtime) {
101
130
  const actions = [];
102
131
  const versions = ["cliVersion", "coreVersion", "mcpVersion"].filter((key) => runtime[key] === "unresolved" || runtime[key] === "unknown");
103
132
  if (versions.length > 0) {
@@ -175,15 +204,7 @@ async function runtimeProvenance() {
175
204
  }
176
205
  const core = resolveInstalledPackageInfo("kibi-core");
177
206
  const mcp = resolveInstalledPackageInfo("kibi-mcp");
178
- let executeApplyPlanExported;
179
- try {
180
- const operations = await import("../public/operations/index.js");
181
- executeApplyPlanExported =
182
- typeof operations.executeApplyPlan === "function";
183
- }
184
- catch {
185
- executeApplyPlanExported = false;
186
- }
207
+ const executeApplyPlanExported = await detectExecuteApplyPlanExport();
187
208
  return {
188
209
  cliVersion: typeof cli.version === "string" ? cli.version : "unknown",
189
210
  coreVersion: core.version,
@@ -226,9 +247,13 @@ function packageInfoFromManifest(manifestPath) {
226
247
  : undefined,
227
248
  };
228
249
  }
229
- function nearestNamedPackageManifest(startDir, name) {
250
+ export function nextAncestorDirectory(current) {
251
+ const parent = path.dirname(current);
252
+ return parent === current ? undefined : parent;
253
+ }
254
+ export function nearestNamedPackageManifest(startDir, name) {
230
255
  let current = startDir;
231
- while (true) {
256
+ while (current !== undefined) {
232
257
  const candidate = path.join(current, "package.json");
233
258
  try {
234
259
  const metadata = JSON.parse(readFileSync(candidate, "utf8"));
@@ -238,11 +263,9 @@ function nearestNamedPackageManifest(startDir, name) {
238
263
  catch {
239
264
  // Keep walking; an unrelated or absent manifest is not a match.
240
265
  }
241
- const parent = path.dirname(current);
242
- if (parent === current)
243
- return undefined;
244
- current = parent;
266
+ current = nextAncestorDirectory(current);
245
267
  }
268
+ return undefined;
246
269
  }
247
270
  function resolveInstalledPackageInfo(name) {
248
271
  const require = createRequire(import.meta.url);
@@ -326,6 +349,107 @@ function checkSWIProlog() {
326
349
  };
327
350
  }
328
351
  }
352
+ /**
353
+ * Read-only view of package.json plugin activation.
354
+ * Does not import or execute plugin packages (no loadPluginPackage / dynamic import).
355
+ */
356
+ // implements REQ-capability-plugin-configuration-v1, REQ-kibi-env-bootstrap
357
+ function checkCapabilityPlugins() {
358
+ try {
359
+ const bootstrap = bootstrapKibiEnvironment();
360
+ const workspaceRoot = bootstrap.workspaceRoot;
361
+ const rows = describeConfiguredCapabilityPlugins(workspaceRoot);
362
+ if (rows.length === 0) {
363
+ return {
364
+ passed: true,
365
+ message: "None configured; builtin providers only",
366
+ };
367
+ }
368
+ const parts = rows.map((row) => `${row.package} ${row.capability} ${row.mode} declared=${row.declared ? "yes" : "no"}`);
369
+ if (rows.some((row) => !row.declared)) {
370
+ return {
371
+ passed: false,
372
+ message: parts.join("; "),
373
+ remediation: "Add the configured plugin package to dependencies, devDependencies, or optionalDependencies, or remove the kibi.plugins activation entry.",
374
+ };
375
+ }
376
+ const config = readProjectKibiConfig(workspaceRoot);
377
+ const packages = [
378
+ ...new Set((config.plugins ?? []).map((plugin) => plugin.package)),
379
+ ];
380
+ const missingSecrets = [];
381
+ const legacySecrets = [];
382
+ for (const packageName of packages) {
383
+ const secrets = FIRST_PARTY_PLUGIN_SECRETS[packageName] ?? [];
384
+ for (const secret of secrets) {
385
+ const source = formatSecretSourcePart(secret, bootstrap);
386
+ parts.push(`${secret}=${source}`);
387
+ if (source === "missing")
388
+ missingSecrets.push(secret);
389
+ if (source === "legacy_env")
390
+ legacySecrets.push(secret);
391
+ }
392
+ if (packageName === "kibi-plugin-jev") {
393
+ parts.push(...formatJevStaticConfigParts());
394
+ }
395
+ }
396
+ const message = parts.join("; ");
397
+ if (missingSecrets.length > 0) {
398
+ const jevMissing = missingSecrets.includes("TYPESAFE_API_KEY");
399
+ return {
400
+ passed: false,
401
+ message,
402
+ remediation: jevMissing
403
+ ? "Set `TYPESAFE_API_KEY` in `~/.config/kibi/env` (user-wide) or `<workspace>/.env.kibi` (project override), then restart long-running Kibi MCP/host processes."
404
+ : `Set missing plugin secret(s) (${missingSecrets.join(", ")}) in ~/.config/kibi/env or <workspace>/.env.kibi, then restart long-running Kibi MCP/host processes.`,
405
+ };
406
+ }
407
+ if (legacySecrets.length > 0) {
408
+ return {
409
+ passed: true,
410
+ message,
411
+ remediation: `Migrate ${legacySecrets.join(", ")} from legacy \`.env\` to \`~/.config/kibi/env\` or \`<workspace>/.env.kibi\`, then restart long-running Kibi MCP/host processes.`,
412
+ };
413
+ }
414
+ return {
415
+ passed: true,
416
+ message,
417
+ };
418
+ }
419
+ catch (error) {
420
+ const message = error instanceof Error ? error.message : String(error);
421
+ return {
422
+ passed: false,
423
+ message,
424
+ remediation: "Fix package.json kibi.plugins, then restart long-running Kibi MCP or client processes.",
425
+ };
426
+ }
427
+ }
428
+ function formatSecretSourcePart(secret, bootstrap) {
429
+ return secretSourceFromBootstrap(secret, bootstrap);
430
+ }
431
+ /**
432
+ * Static first-party Jev diagnostics — mirrors plugin resolve helpers without importing.
433
+ */
434
+ // implements REQ-kibi-env-bootstrap, REQ-capability-plugin-configuration-v1
435
+ function formatJevStaticConfigParts(env = process.env) {
436
+ const model = env.KIBI_JEV_MODEL?.trim() || JEV_DEFAULT_MODEL;
437
+ const raw = env.KIBI_JEV_TIMEOUT_MS;
438
+ if (raw === undefined || raw.trim() === "") {
439
+ return [`jev.model=${model}`, "jev.timeoutMs=default"];
440
+ }
441
+ const trimmed = raw.trim();
442
+ if (!/^[1-9]\d*$/.test(trimmed)) {
443
+ return [`jev.model=${model}`, "jev.timeoutMs=invalid"];
444
+ }
445
+ const timeoutMs = Number(trimmed);
446
+ if (!Number.isSafeInteger(timeoutMs) ||
447
+ timeoutMs < 1 ||
448
+ timeoutMs > JEV_MAX_TIMEOUT_MS) {
449
+ return [`jev.model=${model}`, "jev.timeoutMs=invalid"];
450
+ }
451
+ return [`jev.model=${model}`, `jev.timeoutMs=${String(timeoutMs)}`];
452
+ }
329
453
  function checkKbDirectory() {
330
454
  const kbDir = path.join(process.cwd(), ".kb");
331
455
  if (!existsSync(kbDir)) {
@@ -468,8 +592,13 @@ function checkPreCommitHook() {
468
592
  const preCommitExecutable = (preCommitStats.mode & 0o111) !== 0;
469
593
  // Read hook content to determine whether it's using the new staged check
470
594
  const content = readFileSync(preCommitPath, "utf-8");
471
- const usesKibi = content.includes("kibi check");
472
- const usesStaged = content.includes("kibi check --staged");
595
+ // Current templates resolve the kibi binary into KIBI_BIN before invoking
596
+ // it (git hooks do not get node_modules/.bin on PATH); legacy templates
597
+ // invoked bare `kibi`.
598
+ const resolvesKibi = content.includes("KIBI_BIN=");
599
+ const usesKibi = resolvesKibi || content.includes("kibi check");
600
+ const usesStaged = content.includes('"$KIBI_BIN" check --staged') ||
601
+ content.includes("kibi check --staged");
473
602
  if (!usesKibi) {
474
603
  // Fail if hook doesn't invoke kibi at all
475
604
  return {
@@ -480,15 +609,24 @@ function checkPreCommitHook() {
480
609
  }
481
610
  if (preCommitExecutable) {
482
611
  if (usesStaged) {
612
+ if (!resolvesKibi) {
613
+ // Functional template that invokes bare `kibi`: it fails whenever
614
+ // kibi is installed only as a project dependency.
615
+ return {
616
+ passed: true,
617
+ message: "Installed and executable (legacy template without kibi CLI resolution — run 'kibi init' to regenerate so hooks work with local installs)",
618
+ remediation: "Run: kibi init to update git hooks to the latest template",
619
+ };
620
+ }
483
621
  return {
484
622
  passed: true,
485
- message: "Installed and executable (uses 'kibi check --staged')",
623
+ message: "Installed and executable (resolves kibi CLI; uses 'kibi check --staged')",
486
624
  };
487
625
  }
488
626
  // Warn but pass if using legacy kibi check without --staged
489
627
  return {
490
628
  passed: true,
491
- message: "Installed and executable (uses legacy 'kibi check' — consider running 'kibi init' to update hooks to use '--staged')",
629
+ message: "Installed and executable (uses legacy 'kibi check' — consider running 'kibi init' to update hooks to use '--staged' with CLI resolution)",
492
630
  remediation: "Run: kibi init to update git hooks to the latest template",
493
631
  };
494
632
  }
@@ -529,9 +667,11 @@ function checkPostRewriteHook() {
529
667
  try {
530
668
  const postRewriteStats = statSync(postRewritePath);
531
669
  const postRewriteExecutable = (postRewriteStats.mode & 0o111) !== 0;
532
- // Read hook content to verify it invokes kibi
670
+ // Read hook content to verify it invokes kibi. Current templates invoke
671
+ // the resolved KIBI_BIN; legacy templates invoked bare `kibi sync`.
533
672
  const content = readFileSync(postRewritePath, "utf-8");
534
- const usesKibi = content.includes("kibi sync");
673
+ const usesKibi = content.includes('"$KIBI_BIN" sync') || content.includes("kibi sync");
674
+ const resolvesKibi = content.includes("KIBI_BIN=");
535
675
  if (!usesKibi) {
536
676
  return {
537
677
  passed: false,
@@ -540,6 +680,13 @@ function checkPostRewriteHook() {
540
680
  };
541
681
  }
542
682
  if (postRewriteExecutable) {
683
+ if (!resolvesKibi) {
684
+ return {
685
+ passed: true,
686
+ message: "Installed and executable (legacy template without kibi CLI resolution — run 'kibi init' to regenerate so hooks work with local installs)",
687
+ remediation: "Run: kibi init to update git hooks to the latest template",
688
+ };
689
+ }
543
690
  return {
544
691
  passed: true,
545
692
  message: "Installed and executable",
@@ -1,6 +1,18 @@
1
1
  export declare function engineStatusCommand(): Promise<void>;
2
2
  export declare function engineStopCommand(): Promise<void>;
3
3
  export declare function storageStatusCommand(): Promise<void>;
4
+ export interface EngineJanitorOptions {
5
+ readonly all?: boolean;
6
+ readonly apply?: boolean;
7
+ readonly format?: string;
8
+ }
9
+ /**
10
+ * Classify and (optionally) clean stale engine daemons and branch-store
11
+ * locks: crashed engines leave ownership journals behind, worktree removals
12
+ * strand live daemons, dead daemons leave sockets. Report-only by default;
13
+ `--apply` executes the clean actions.
14
+ */
15
+ export declare function engineJanitorCommand(options: EngineJanitorOptions): Promise<void>;
4
16
  export declare function storageCompactCommand(): Promise<void>;
5
17
  export declare function storageExportCommand(options: {
6
18
  output: string;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/commands/engine.ts"],"names":[],"mappings":"AAkCA,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4BzD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAWvD;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1D;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB3D;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAWhB"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/commands/engine.ts"],"names":[],"mappings":"AAkCA,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4BzD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAWvD;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1D;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AAEH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB3D;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAWhB"}
@@ -69,6 +69,48 @@ export async function engineStopCommand() {
69
69
  export async function storageStatusCommand() {
70
70
  await engineStatusCommand();
71
71
  }
72
+ /**
73
+ * Classify and (optionally) clean stale engine daemons and branch-store
74
+ * locks: crashed engines leave ownership journals behind, worktree removals
75
+ * strand live daemons, dead daemons leave sockets. Report-only by default;
76
+ `--apply` executes the clean actions.
77
+ */
78
+ // implements REQ-core-journaled-engine-persistence
79
+ export async function engineJanitorCommand(options) {
80
+ const { runtimeDirectory } = await import("../engine.js");
81
+ const { runJanitor } = await import("../prolog/janitor.js");
82
+ const findings = runJanitor({
83
+ workspaceRoot: workspaceRoot(),
84
+ runtimeDirectory: runtimeDirectory(),
85
+ all: options.all === true,
86
+ apply: options.apply === true,
87
+ });
88
+ const cleanable = findings.filter((f) => f.action !== "keep").length;
89
+ const cleaned = options.apply === true ? cleanable : 0;
90
+ if (options.format === "json") {
91
+ console.log(JSON.stringify({ findings, cleaned, cleanable, total: findings.length }));
92
+ return;
93
+ }
94
+ if (findings.length === 0) {
95
+ console.log("No engine or lock artifacts found.");
96
+ return;
97
+ }
98
+ for (const finding of findings) {
99
+ const holder = "pid" in finding && finding.pid !== undefined
100
+ ? ` pid=${finding.pid}`
101
+ : "";
102
+ const workspace = finding.kind === "store-lock" && finding.workspaceRoot !== undefined
103
+ ? ` workspace=${finding.workspaceRoot}`
104
+ : "";
105
+ const scope = finding.kind === "store-lock"
106
+ ? `store ${finding.storePath}`
107
+ : `socket ${finding.socketPath}`;
108
+ console.log(`[${finding.action}] ${scope}${holder}${workspace} holder=${finding.holderState}`);
109
+ }
110
+ console.log(options.apply === true
111
+ ? `${findings.length} finding(s), ${cleaned} cleaned`
112
+ : `${findings.length} finding(s), ${cleanable} cleanable (report only; re-run with --apply)`);
113
+ }
72
114
  export async function storageCompactCommand() {
73
115
  const root = workspaceRoot();
74
116
  const attachment = resolveBranchAttachment(root);
@@ -53,4 +53,5 @@ export declare function resolveGitHubRepo(remotes: readonly GitRemote[]): GitHub
53
53
  export declare function writeGitHubWorkflow(cwd: string, kind: GitHubWorkflowKind, template: string): WorkflowWriteStatus;
54
54
  export declare function ensureKibiReportGitIgnore(cwd: string): GitIgnoreWriteStatus;
55
55
  export declare function scaffoldGitHubIntegration(options: GitHubScaffoldOptions, deps?: GitHubInitDeps): GitHubScaffoldResult;
56
+ export declare function skipBlankLines(lines: readonly string[], start: number): number;
56
57
  //# sourceMappingURL=github-init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"github-init.d.ts","sourceRoot":"","sources":["../../src/commands/github-init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github-init.d.ts","sourceRoot":"","sources":["../../src/commands/github-init.ts"],"names":[],"mappings":"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"}
@@ -50,7 +50,7 @@ export function parseGitHubRemote(url) {
50
50
  return undefined;
51
51
  }
52
52
  const patterns = [
53
- /^https?:\/\/(?:www\.)?github\.com\/([^/]+)\/([^/]+?)(?:\.git)?\/?$/i,
53
+ /^https?:\/\/(?:[^/@]+@)?(?:www\.)?github\.com\/([^/]+)\/([^/]+?)(?:\.git)?\/?$/i,
54
54
  /^git@github\.com:([^/]+)\/([^/]+?)(?:\.git)?\/?$/i,
55
55
  /^ssh:\/\/(?:git@)?github\.com(?::\d+)?\/([^/]+)\/([^/]+?)(?:\.git)?\/?$/i,
56
56
  /^git:\/\/github\.com\/([^/]+)\/([^/]+?)(?:\.git)?\/?$/i,
@@ -264,6 +264,13 @@ function normalizeNewlines(value) {
264
264
  const unix = value.replace(/\r\n/g, "\n");
265
265
  return unix.endsWith("\n") ? unix : `${unix}\n`;
266
266
  }
267
+ export function skipBlankLines(lines, start) {
268
+ let peek = start;
269
+ while (peek < lines.length && (lines[peek] ?? "").trim() === "") {
270
+ peek += 1;
271
+ }
272
+ return peek;
273
+ }
267
274
  function findBadgeClusterEnd(lines, start) {
268
275
  let index = start;
269
276
  while (index < lines.length && (lines[index] ?? "").trim() === "") {
@@ -279,10 +286,7 @@ function findBadgeClusterEnd(lines, start) {
279
286
  continue;
280
287
  }
281
288
  if (line.trim() === "") {
282
- let peek = index + 1;
283
- while (peek < lines.length && (lines[peek] ?? "").trim() === "") {
284
- peek += 1;
285
- }
289
+ const peek = skipBlankLines(lines, index + 1);
286
290
  if (peek < lines.length && BADGE_OR_IMAGE_LINE.test(lines[peek] ?? "")) {
287
291
  index = peek;
288
292
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"init-helpers.d.ts","sourceRoot":"","sources":["../../src/commands/init-helpers.ts"],"names":[],"mappings":"AAgGA,wBAAsB,gBAAgB,CACpC,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACpB,IAAI,CAUN;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGtD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CA6BjD;AAiDD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAU3D;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CAYf;AASD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAkCnE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAiBpD"}
1
+ {"version":3,"file":"init-helpers.d.ts","sourceRoot":"","sources":["../../src/commands/init-helpers.ts"],"names":[],"mappings":"AAuIA,wBAAsB,gBAAgB,CACpC,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACpB,IAAI,CAUN;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGtD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CA6BjD;AAkDD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAU3D;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CAYf;AASD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAkCnE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAiBpD"}
@@ -23,6 +23,31 @@ import { ensureBranchStoreManifest } from "../utils/branch-store-locator.js";
23
23
  import { defaultKbManifest, writeKbManifest } from "../utils/kb-manifest.js";
24
24
  import { ENTITY_LANES, KB_PATHS } from "../utils/kb-paths.js";
25
25
  import { SYMBOLS_MANIFEST_COMMENT_BLOCK } from "./sync/manifest.js";
26
+ // Git executes hooks with the caller's PATH, which does not include
27
+ // node_modules/.bin, so a locally installed kibi CLI would not resolve.
28
+ // Each hook resolves the binary up front: PATH first (global installs),
29
+ // then a walk up from the repository root (git runs hooks from the top of
30
+ // the working tree) for local npm/bun dependencies.
31
+ const KIBI_BIN_RESOLVER = `KIBI_BIN="$(command -v kibi 2>/dev/null || true)"
32
+ if [ -z "$KIBI_BIN" ]; then
33
+ kibi_dir="$PWD"
34
+ while [ -n "$kibi_dir" ] && [ "$kibi_dir" != "/" ]; do
35
+ if [ -x "$kibi_dir/node_modules/.bin/kibi" ]; then
36
+ KIBI_BIN="$kibi_dir/node_modules/.bin/kibi"
37
+ break
38
+ fi
39
+ kibi_parent="\${kibi_dir%/*}"
40
+ if [ -z "$kibi_parent" ]; then
41
+ kibi_parent="/"
42
+ fi
43
+ kibi_dir="$kibi_parent"
44
+ done
45
+ fi
46
+ if [ -z "$KIBI_BIN" ]; then
47
+ echo "kibi: cannot locate the kibi CLI (checked PATH and node_modules/.bin)." >&2
48
+ echo "Install kibi globally or as a project dependency, then re-run 'kibi init'." >&2
49
+ exit 1
50
+ fi`;
26
51
  const POST_CHECKOUT_HOOK = `#!/bin/sh
27
52
  # post-checkout hook for kibi
28
53
  # Parameters: old_ref new_ref branch_flag
@@ -36,11 +61,17 @@ old_ref=$1
36
61
  new_ref=$2
37
62
  branch_flag=$3
38
63
 
39
- if [ "$branch_flag" = "1" ]; then
40
- # Branch stores are derived from the checked-out tracked sources. Never copy
41
- # the old branch's compiled store during checkout.
42
- kibi sync
64
+ # File checkouts never refresh the KB; skip binary resolution so sandboxed
65
+ # test workspaces without an installed kibi CLI can restore tracked files.
66
+ if [ "$branch_flag" != "1" ]; then
67
+ exit 0
43
68
  fi
69
+
70
+ ${KIBI_BIN_RESOLVER}
71
+
72
+ # Branch stores are derived from the checked-out tracked sources. Never copy
73
+ # the old branch's compiled store during checkout.
74
+ "$KIBI_BIN" sync
44
75
  `;
45
76
  const POST_MERGE_HOOK = `#!/bin/sh
46
77
  # post-merge hook for kibi
@@ -49,7 +80,9 @@ const POST_MERGE_HOOK = `#!/bin/sh
49
80
  # Uses default non-coordinate-writing sync to avoid writing
50
81
  # committed symbol artifacts during automatic hook execution.
51
82
 
52
- kibi sync
83
+ ${KIBI_BIN_RESOLVER}
84
+
85
+ "$KIBI_BIN" sync
53
86
  `;
54
87
  const POST_REWRITE_HOOK = `#!/bin/sh
55
88
  # post-rewrite hook for kibi
@@ -60,8 +93,10 @@ const POST_REWRITE_HOOK = `#!/bin/sh
60
93
 
61
94
  rewrite_type=$1
62
95
 
96
+ ${KIBI_BIN_RESOLVER}
97
+
63
98
  if [ "$rewrite_type" = "rebase" ]; then
64
- kibi sync
99
+ "$KIBI_BIN" sync
65
100
  fi
66
101
  `;
67
102
  const PRE_COMMIT_HOOK = `#!/bin/sh
@@ -71,12 +106,15 @@ const PRE_COMMIT_HOOK = `#!/bin/sh
71
106
  # Behavior-changing source edits require staged Kibi impact evidence
72
107
  # (KB entity docs under .kb/, authored symbols metadata, or refreshed
73
108
  # symbol coordinates). Test-only and docs-only edits are exempt.
74
- # Refresh with:
75
- # kibi sync --refresh-symbol-coordinates && git add .kb/symbol-coordinates.yaml .kb/symbols.yaml
109
+ # Generated manifests are checked against the exact staged snapshot before
110
+ # traceability validation. The check never stages files on the user's behalf.
76
111
 
77
112
  set -e
78
113
 
79
- kibi check --staged
114
+ ${KIBI_BIN_RESOLVER}
115
+
116
+ "$KIBI_BIN" check-generated --staged --changed-only
117
+ "$KIBI_BIN" check --staged
80
118
  `;
81
119
  export async function getCurrentBranch(cwd = process.cwd()) {
82
120
  const result = resolveActiveBranch(cwd);
@@ -131,10 +169,11 @@ export function updateGitIgnore(cwd) {
131
169
  const CANONICAL_DERIVED_GITIGNORE_ENTRIES = [
132
170
  ".kb/branches/",
133
171
  ".kb/recovery/",
134
- ".kb/verification/",
172
+ ".kb/proof/runs/",
135
173
  ".kb/briefs/",
136
174
  ".kb/migrations/",
137
175
  ".kb/usage.log",
176
+ ".env.kibi",
138
177
  ];
139
178
  /**
140
179
  * Pre-canonical Kibi init wrote a blanket `.kb/` fence and then
@@ -9,6 +9,10 @@ interface MigrateOptions {
9
9
  /** Internal migration-plan executor: create only the canonical baseline manifest. */
10
10
  initializeMissingConfig?: boolean;
11
11
  }
12
+ export declare function formatSchemaVersion(rawSchemaVersion: unknown, normalized: number | null): string;
13
+ export declare function warnMigrationRequiredWithoutYes(): {
14
+ exitCode: number;
15
+ };
12
16
  export declare function migrateCommand(options?: MigrateOptions): Promise<{
13
17
  exitCode: number;
14
18
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAgDA,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AA4WD,wBAAsB,cAAc,CAClC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAuO/B"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAgDA,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AA0ID,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,OAAO,EACzB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,MAAM,CAUR;AAoND,wBAAgB,+BAA+B,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAKtE;AAGD,wBAAsB,cAAc,CAClC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAgO/B"}
@@ -98,7 +98,7 @@ function writeTextAtomically(filePath, content) {
98
98
  writeFileSync(tempPath, content, "utf8");
99
99
  renameSync(tempPath, filePath);
100
100
  }
101
- function formatSchemaVersion(rawSchemaVersion, normalized) {
101
+ export function formatSchemaVersion(rawSchemaVersion, normalized) {
102
102
  if (normalized === null) {
103
103
  if (rawSchemaVersion === undefined) {
104
104
  return "missing";
@@ -261,6 +261,12 @@ function migrateSymbolGranularity(options) {
261
261
  }
262
262
  return { count, manifestPath };
263
263
  }
264
+ export function warnMigrationRequiredWithoutYes() {
265
+ printWarning("Migration required for this repository.");
266
+ console.log("No changes applied.");
267
+ console.log("Use --dry-run to preview or --yes to apply the migration.");
268
+ return { exitCode: 0 };
269
+ }
264
270
  // implements REQ-003
265
271
  export async function migrateCommand(options = {}) {
266
272
  if (options.applySafe === true ||
@@ -359,12 +365,6 @@ export async function migrateCommand(options = {}) {
359
365
  console.log("Re-run with --yes to apply these changes.");
360
366
  return { exitCode: 0 };
361
367
  }
362
- if (!options.yes) {
363
- printWarning("Migration required for this repository.");
364
- console.log("No changes applied.");
365
- console.log("Use --dry-run to preview or --yes to apply the migration.");
366
- return { exitCode: 0 };
367
- }
368
368
  // One-way storage cutover first: files must reach the canonical layout
369
369
  // before the manifest records the new schema generation.
370
370
  if (needsStorageMigration) {
@@ -0,0 +1,10 @@
1
+ export type ProofExplainOptions = Readonly<{
2
+ id?: string;
3
+ requirement?: string;
4
+ symbol?: string;
5
+ json?: boolean;
6
+ }>;
7
+ export declare function proofExplainCommand(options: ProofExplainOptions): Promise<{
8
+ exitCode: number;
9
+ }>;
10
+ //# sourceMappingURL=proof-explain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof-explain.d.ts","sourceRoot":"","sources":["../../src/commands/proof-explain.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC,CAAC;AAGH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAuC/B"}
@@ -0,0 +1,45 @@
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
+ import { classifyExplainTarget, executeProofExplain, renderProofExplain, } from "../operations/proof/explain.js";
11
+ import { createCliRuntime } from "../runtime/cli-runtime.js";
12
+ // implements REQ-kibi-verification-evidence-contract
13
+ export async function proofExplainCommand(options) {
14
+ const target = classifyExplainTarget(options.id, {
15
+ ...(options.requirement === undefined
16
+ ? {}
17
+ : { requirement: options.requirement }),
18
+ ...(options.symbol === undefined ? {} : { symbol: options.symbol }),
19
+ });
20
+ const runtime = createCliRuntime();
21
+ const context = await runtime.open({
22
+ name: "kibi_proof_explain",
23
+ effects: [],
24
+ requiresProlog: true,
25
+ execute: async () => undefined,
26
+ }, {});
27
+ let completed = false;
28
+ try {
29
+ const { view } = await executeProofExplain(target, context);
30
+ if (options.json) {
31
+ process.stdout.write(`${JSON.stringify(view, null, 2)}\n`);
32
+ }
33
+ else {
34
+ process.stdout.write(renderProofExplain(view));
35
+ }
36
+ completed = true;
37
+ await runtime.afterSuccess({ name: "kibi_proof_explain" }, context);
38
+ return { exitCode: 0 };
39
+ }
40
+ finally {
41
+ await runtime.close(context, completed
42
+ ? { status: "success", result: 0 }
43
+ : { status: "error", error: 1 });
44
+ }
45
+ }
@@ -0,0 +1,7 @@
1
+ export type ProofImpactOptions = Readonly<{
2
+ json?: boolean;
3
+ }>;
4
+ export declare function proofImpactCommand(options: ProofImpactOptions): Promise<{
5
+ exitCode: number;
6
+ }>;
7
+ //# sourceMappingURL=proof-impact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof-impact.d.ts","sourceRoot":"","sources":["../../src/commands/proof-impact.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC,CAAC;AAGH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA8B/B"}