kibi-cli 0.12.8 → 0.16.1

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 (501) hide show
  1. package/bin/kibi +3 -1
  2. package/dist/cli-command.d.ts +5 -0
  3. package/dist/cli-command.d.ts.map +1 -0
  4. package/dist/cli-command.js +9 -0
  5. package/dist/cli-errors.d.ts +13 -0
  6. package/dist/cli-errors.d.ts.map +1 -0
  7. package/dist/cli-errors.js +26 -0
  8. package/dist/cli-input.d.ts +6 -0
  9. package/dist/cli-input.d.ts.map +1 -0
  10. package/dist/cli-input.js +54 -0
  11. package/dist/cli-json-command.d.ts +14 -0
  12. package/dist/cli-json-command.d.ts.map +1 -0
  13. package/dist/cli-json-command.js +96 -0
  14. package/dist/cli-protocol.d.ts +12 -0
  15. package/dist/cli-protocol.d.ts.map +1 -0
  16. package/dist/cli-protocol.js +37 -0
  17. package/dist/cli-register-foundation.d.ts +3 -0
  18. package/dist/cli-register-foundation.d.ts.map +1 -0
  19. package/dist/cli-register-foundation.js +90 -0
  20. package/dist/cli-register-maintenance.d.ts +3 -0
  21. package/dist/cli-register-maintenance.d.ts.map +1 -0
  22. package/dist/cli-register-maintenance.js +36 -0
  23. package/dist/cli-register-reporting.d.ts +3 -0
  24. package/dist/cli-register-reporting.d.ts.map +1 -0
  25. package/dist/cli-register-reporting.js +101 -0
  26. package/dist/cli-register-skills.d.ts +3 -0
  27. package/dist/cli-register-skills.d.ts.map +1 -0
  28. package/dist/cli-register-skills.js +71 -0
  29. package/dist/cli-validate.d.ts +18 -0
  30. package/dist/cli-validate.d.ts.map +1 -0
  31. package/dist/cli-validate.js +45 -0
  32. package/dist/cli.d.ts +4 -4
  33. package/dist/cli.d.ts.map +1 -1
  34. package/dist/cli.js +48 -210
  35. package/dist/commands/aggregated-checks.d.ts +1 -1
  36. package/dist/commands/aggregated-checks.d.ts.map +1 -1
  37. package/dist/commands/aggregated-checks.js +28 -34
  38. package/dist/commands/check.d.ts +2 -1
  39. package/dist/commands/check.d.ts.map +1 -1
  40. package/dist/commands/check.js +145 -152
  41. package/dist/commands/coverage.d.ts.map +1 -1
  42. package/dist/commands/coverage.js +12 -17
  43. package/dist/commands/discovery-shared.d.ts +3 -1
  44. package/dist/commands/discovery-shared.d.ts.map +1 -1
  45. package/dist/commands/discovery-shared.js +8 -209
  46. package/dist/commands/discovery-table.d.ts +3 -0
  47. package/dist/commands/discovery-table.d.ts.map +1 -0
  48. package/dist/commands/discovery-table.js +204 -0
  49. package/dist/commands/gaps.d.ts.map +1 -1
  50. package/dist/commands/gaps.js +15 -19
  51. package/dist/commands/graph.d.ts.map +1 -1
  52. package/dist/commands/graph.js +15 -21
  53. package/dist/commands/query.d.ts +7 -7
  54. package/dist/commands/query.d.ts.map +1 -1
  55. package/dist/commands/query.js +98 -204
  56. package/dist/commands/search.d.ts +4 -4
  57. package/dist/commands/search.d.ts.map +1 -1
  58. package/dist/commands/search.js +14 -27
  59. package/dist/commands/status.d.ts +1 -1
  60. package/dist/commands/status.d.ts.map +1 -1
  61. package/dist/commands/status.js +6 -7
  62. package/dist/commands/sync/discovery.d.ts.map +1 -1
  63. package/dist/commands/sync/discovery.js +8 -1
  64. package/dist/commands/sync/extraction.d.ts +6 -1
  65. package/dist/commands/sync/extraction.d.ts.map +1 -1
  66. package/dist/commands/sync/extraction.js +7 -3
  67. package/dist/commands/sync/manifest.d.ts +1 -1
  68. package/dist/commands/sync/manifest.d.ts.map +1 -1
  69. package/dist/commands/sync/manifest.js +9 -17
  70. package/dist/commands/sync/persistence.d.ts.map +1 -1
  71. package/dist/commands/sync/persistence.js +51 -2
  72. package/dist/extractors/manifest.d.ts.map +1 -1
  73. package/dist/extractors/manifest.js +18 -0
  74. package/dist/extractors/markdown.d.ts +20 -2
  75. package/dist/extractors/markdown.d.ts.map +1 -1
  76. package/dist/extractors/markdown.js +38 -1
  77. package/dist/extractors/symbols-coordinator.d.ts +1 -1
  78. package/dist/extractors/symbols-coordinator.d.ts.map +1 -1
  79. package/dist/extractors/symbols-ts.d.ts.map +1 -1
  80. package/dist/extractors/symbols-ts.js +73 -1
  81. package/dist/operations/autopilot/activation.d.ts +4 -0
  82. package/dist/operations/autopilot/activation.d.ts.map +1 -0
  83. package/dist/operations/autopilot/activation.js +130 -0
  84. package/dist/operations/autopilot/candidate-helpers.d.ts +13 -0
  85. package/dist/operations/autopilot/candidate-helpers.d.ts.map +1 -0
  86. package/dist/operations/autopilot/candidate-helpers.js +55 -0
  87. package/dist/operations/autopilot/candidates.d.ts +4 -0
  88. package/dist/operations/autopilot/candidates.d.ts.map +1 -0
  89. package/dist/operations/autopilot/candidates.js +114 -0
  90. package/dist/operations/autopilot/discovery-evidence.d.ts +10 -0
  91. package/dist/operations/autopilot/discovery-evidence.d.ts.map +1 -0
  92. package/dist/operations/autopilot/discovery-evidence.js +158 -0
  93. package/dist/operations/autopilot/discovery.d.ts +4 -0
  94. package/dist/operations/autopilot/discovery.d.ts.map +1 -0
  95. package/dist/operations/autopilot/discovery.js +100 -0
  96. package/dist/operations/autopilot/generate.d.ts +8 -0
  97. package/dist/operations/autopilot/generate.d.ts.map +1 -0
  98. package/dist/operations/autopilot/generate.js +112 -0
  99. package/dist/operations/autopilot/guidance-actions.d.ts +3 -0
  100. package/dist/operations/autopilot/guidance-actions.d.ts.map +1 -0
  101. package/dist/operations/autopilot/guidance-actions.js +79 -0
  102. package/dist/operations/autopilot/guidance.d.ts +14 -0
  103. package/dist/operations/autopilot/guidance.d.ts.map +1 -0
  104. package/dist/operations/autopilot/guidance.js +124 -0
  105. package/dist/operations/autopilot/markdown-candidates.d.ts +7 -0
  106. package/dist/operations/autopilot/markdown-candidates.d.ts.map +1 -0
  107. package/dist/operations/autopilot/markdown-candidates.js +134 -0
  108. package/dist/operations/autopilot/presentation.d.ts +13 -0
  109. package/dist/operations/autopilot/presentation.d.ts.map +1 -0
  110. package/dist/operations/autopilot/presentation.js +91 -0
  111. package/dist/operations/autopilot/requirement-claims.d.ts +3 -0
  112. package/dist/operations/autopilot/requirement-claims.d.ts.map +1 -0
  113. package/dist/operations/autopilot/requirement-claims.js +48 -0
  114. package/dist/operations/autopilot/types.d.ts +117 -0
  115. package/dist/operations/autopilot/types.d.ts.map +1 -0
  116. package/dist/operations/autopilot/types.js +8 -0
  117. package/dist/operations/modeling/model-requirement.d.ts +10 -0
  118. package/dist/operations/modeling/model-requirement.d.ts.map +1 -0
  119. package/dist/operations/modeling/model-requirement.js +108 -0
  120. package/dist/operations/modeling/predicate-applyplan.d.ts +6 -0
  121. package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -0
  122. package/dist/operations/modeling/predicate-applyplan.js +104 -0
  123. package/dist/operations/modeling/predicate-catalog-1.d.ts +3 -0
  124. package/dist/operations/modeling/predicate-catalog-1.d.ts.map +1 -0
  125. package/dist/operations/modeling/predicate-catalog-1.js +200 -0
  126. package/dist/operations/modeling/predicate-catalog-2.d.ts +3 -0
  127. package/dist/operations/modeling/predicate-catalog-2.d.ts.map +1 -0
  128. package/dist/operations/modeling/predicate-catalog-2.js +197 -0
  129. package/dist/operations/modeling/predicate-catalog-3.d.ts +3 -0
  130. package/dist/operations/modeling/predicate-catalog-3.d.ts.map +1 -0
  131. package/dist/operations/modeling/predicate-catalog-3.js +193 -0
  132. package/dist/operations/modeling/predicate-catalog-4.d.ts +3 -0
  133. package/dist/operations/modeling/predicate-catalog-4.d.ts.map +1 -0
  134. package/dist/operations/modeling/predicate-catalog-4.js +149 -0
  135. package/dist/operations/modeling/predicate-catalog.d.ts +5 -0
  136. package/dist/operations/modeling/predicate-catalog.d.ts.map +1 -0
  137. package/dist/operations/modeling/predicate-catalog.js +29 -0
  138. package/dist/operations/modeling/predicate-inference-1.d.ts +16 -0
  139. package/dist/operations/modeling/predicate-inference-1.d.ts.map +1 -0
  140. package/dist/operations/modeling/predicate-inference-1.js +161 -0
  141. package/dist/operations/modeling/predicate-inference-2.d.ts +19 -0
  142. package/dist/operations/modeling/predicate-inference-2.d.ts.map +1 -0
  143. package/dist/operations/modeling/predicate-inference-2.js +169 -0
  144. package/dist/operations/modeling/predicate-inference-3.d.ts +15 -0
  145. package/dist/operations/modeling/predicate-inference-3.d.ts.map +1 -0
  146. package/dist/operations/modeling/predicate-inference-3.js +163 -0
  147. package/dist/operations/modeling/predicate-inference.d.ts +5 -0
  148. package/dist/operations/modeling/predicate-inference.d.ts.map +1 -0
  149. package/dist/operations/modeling/predicate-inference.js +148 -0
  150. package/dist/operations/modeling/predicate-loader.d.ts +10 -0
  151. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -0
  152. package/dist/operations/modeling/predicate-loader.js +88 -0
  153. package/dist/operations/modeling/predicate-ranker.d.ts +3 -0
  154. package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -0
  155. package/dist/operations/modeling/predicate-ranker.js +24 -0
  156. package/dist/operations/modeling/predicate-score-1.d.ts +3 -0
  157. package/dist/operations/modeling/predicate-score-1.d.ts.map +1 -0
  158. package/dist/operations/modeling/predicate-score-1.js +121 -0
  159. package/dist/operations/modeling/predicate-score-2.d.ts +3 -0
  160. package/dist/operations/modeling/predicate-score-2.d.ts.map +1 -0
  161. package/dist/operations/modeling/predicate-score-2.js +122 -0
  162. package/dist/operations/modeling/predicate-score-3.d.ts +3 -0
  163. package/dist/operations/modeling/predicate-score-3.d.ts.map +1 -0
  164. package/dist/operations/modeling/predicate-score-3.js +54 -0
  165. package/dist/operations/modeling/predicate-types.d.ts +61 -0
  166. package/dist/operations/modeling/predicate-types.d.ts.map +1 -0
  167. package/dist/operations/modeling/predicate-types.js +1 -0
  168. package/dist/operations/modeling/predicate-usage-hints-1.d.ts +3 -0
  169. package/dist/operations/modeling/predicate-usage-hints-1.d.ts.map +1 -0
  170. package/dist/operations/modeling/predicate-usage-hints-1.js +211 -0
  171. package/dist/operations/modeling/predicate-usage-hints-2.d.ts +3 -0
  172. package/dist/operations/modeling/predicate-usage-hints-2.d.ts.map +1 -0
  173. package/dist/operations/modeling/predicate-usage-hints-2.js +209 -0
  174. package/dist/operations/modeling/predicate-usage-hints-3.d.ts +3 -0
  175. package/dist/operations/modeling/predicate-usage-hints-3.d.ts.map +1 -0
  176. package/dist/operations/modeling/predicate-usage-hints-3.js +45 -0
  177. package/dist/operations/modeling/predicate-utils.d.ts +23 -0
  178. package/dist/operations/modeling/predicate-utils.d.ts.map +1 -0
  179. package/dist/operations/modeling/predicate-utils.js +187 -0
  180. package/dist/operations/modeling/requirement-applyplan.d.ts +4 -0
  181. package/dist/operations/modeling/requirement-applyplan.d.ts.map +1 -0
  182. package/dist/operations/modeling/requirement-applyplan.js +44 -0
  183. package/dist/operations/modeling/requirement-heuristics.d.ts +4 -0
  184. package/dist/operations/modeling/requirement-heuristics.d.ts.map +1 -0
  185. package/dist/operations/modeling/requirement-heuristics.js +114 -0
  186. package/dist/operations/modeling/requirement-modeler.d.ts +8 -0
  187. package/dist/operations/modeling/requirement-modeler.d.ts.map +1 -0
  188. package/dist/operations/modeling/requirement-modeler.js +70 -0
  189. package/dist/operations/modeling/requirement-types.d.ts +49 -0
  190. package/dist/operations/modeling/requirement-types.d.ts.map +1 -0
  191. package/dist/operations/modeling/requirement-types.js +1 -0
  192. package/dist/operations/modeling/requirement-utils.d.ts +10 -0
  193. package/dist/operations/modeling/requirement-utils.d.ts.map +1 -0
  194. package/dist/operations/modeling/requirement-utils.js +65 -0
  195. package/dist/operations/modeling/suggest-predicates.d.ts +6 -0
  196. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -0
  197. package/dist/operations/modeling/suggest-predicates.js +64 -0
  198. package/dist/operations/mutation/audit.d.ts +6 -0
  199. package/dist/operations/mutation/audit.d.ts.map +1 -0
  200. package/dist/operations/mutation/audit.js +22 -0
  201. package/dist/operations/mutation/contradictions.d.ts +10 -0
  202. package/dist/operations/mutation/contradictions.d.ts.map +1 -0
  203. package/dist/operations/mutation/contradictions.js +40 -0
  204. package/dist/operations/mutation/delete.d.ts +5 -0
  205. package/dist/operations/mutation/delete.d.ts.map +1 -0
  206. package/dist/operations/mutation/delete.js +67 -0
  207. package/dist/operations/mutation/relationships.d.ts +17 -0
  208. package/dist/operations/mutation/relationships.d.ts.map +1 -0
  209. package/dist/operations/mutation/relationships.js +134 -0
  210. package/dist/operations/mutation/save.d.ts +4 -0
  211. package/dist/operations/mutation/save.d.ts.map +1 -0
  212. package/dist/operations/mutation/save.js +14 -0
  213. package/dist/operations/mutation/serialization.d.ts +5 -0
  214. package/dist/operations/mutation/serialization.d.ts.map +1 -0
  215. package/dist/operations/mutation/serialization.js +85 -0
  216. package/dist/operations/mutation/strict-fact.d.ts +4 -0
  217. package/dist/operations/mutation/strict-fact.d.ts.map +1 -0
  218. package/dist/operations/mutation/strict-fact.js +67 -0
  219. package/dist/operations/mutation/symbol-granularity.d.ts +4 -0
  220. package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -0
  221. package/dist/operations/mutation/symbol-granularity.js +109 -0
  222. package/dist/operations/mutation/symbol-refresh.d.ts +10 -0
  223. package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -0
  224. package/dist/operations/mutation/symbol-refresh.js +105 -0
  225. package/dist/operations/mutation/types.d.ts +43 -0
  226. package/dist/operations/mutation/types.d.ts.map +1 -0
  227. package/dist/operations/mutation/types.js +1 -0
  228. package/dist/operations/mutation/upsert.d.ts +5 -0
  229. package/dist/operations/mutation/upsert.d.ts.map +1 -0
  230. package/dist/operations/mutation/upsert.js +103 -0
  231. package/dist/operations/mutation/validate-upsert.d.ts +5 -0
  232. package/dist/operations/mutation/validate-upsert.d.ts.map +1 -0
  233. package/dist/operations/mutation/validate-upsert.js +50 -0
  234. package/dist/operations/mutation/validation.d.ts +5 -0
  235. package/dist/operations/mutation/validation.d.ts.map +1 -0
  236. package/dist/operations/mutation/validation.js +107 -0
  237. package/dist/operations/mutation/warnings.d.ts +4 -0
  238. package/dist/operations/mutation/warnings.d.ts.map +1 -0
  239. package/dist/operations/mutation/warnings.js +17 -0
  240. package/dist/operations/semantic-advisor/analysis-receipt.d.ts +5 -0
  241. package/dist/operations/semantic-advisor/analysis-receipt.d.ts.map +1 -0
  242. package/dist/operations/semantic-advisor/analysis-receipt.js +112 -0
  243. package/dist/operations/semantic-advisor/analyze-prose.d.ts +5 -0
  244. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -0
  245. package/dist/operations/semantic-advisor/analyze-prose.js +271 -0
  246. package/dist/operations/semantic-advisor/clauses.d.ts +10 -0
  247. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -0
  248. package/dist/operations/semantic-advisor/clauses.js +43 -0
  249. package/dist/operations/semantic-advisor/observation-plan.d.ts +3 -0
  250. package/dist/operations/semantic-advisor/observation-plan.d.ts.map +1 -0
  251. package/dist/operations/semantic-advisor/observation-plan.js +19 -0
  252. package/dist/operations/semantic-advisor/predicate-rule.d.ts +14 -0
  253. package/dist/operations/semantic-advisor/predicate-rule.d.ts.map +1 -0
  254. package/dist/operations/semantic-advisor/predicate-rule.js +22 -0
  255. package/dist/operations/semantic-advisor/predicate-rules-core.d.ts +79 -0
  256. package/dist/operations/semantic-advisor/predicate-rules-core.d.ts.map +1 -0
  257. package/dist/operations/semantic-advisor/predicate-rules-core.js +140 -0
  258. package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts +83 -0
  259. package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts.map +1 -0
  260. package/dist/operations/semantic-advisor/predicate-rules-policy.js +150 -0
  261. package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts +48 -0
  262. package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts.map +1 -0
  263. package/dist/operations/semantic-advisor/predicate-rules-product-tail.js +102 -0
  264. package/dist/operations/semantic-advisor/predicate-rules-product.d.ts +71 -0
  265. package/dist/operations/semantic-advisor/predicate-rules-product.d.ts.map +1 -0
  266. package/dist/operations/semantic-advisor/predicate-rules-product.js +133 -0
  267. package/dist/operations/semantic-advisor/prose-coverage-evaluator.d.ts +29 -0
  268. package/dist/operations/semantic-advisor/prose-coverage-evaluator.d.ts.map +1 -0
  269. package/dist/operations/semantic-advisor/prose-coverage-evaluator.js +54 -0
  270. package/dist/operations/semantic-advisor/shared.d.ts +18 -0
  271. package/dist/operations/semantic-advisor/shared.d.ts.map +1 -0
  272. package/dist/operations/semantic-advisor/shared.js +209 -0
  273. package/dist/operations/semantic-advisor/strict-count-rules.d.ts +4 -0
  274. package/dist/operations/semantic-advisor/strict-count-rules.d.ts.map +1 -0
  275. package/dist/operations/semantic-advisor/strict-count-rules.js +62 -0
  276. package/dist/operations/semantic-advisor/strict-rules.d.ts +4 -0
  277. package/dist/operations/semantic-advisor/strict-rules.d.ts.map +1 -0
  278. package/dist/operations/semantic-advisor/strict-rules.js +106 -0
  279. package/dist/operations/semantic-advisor/types.d.ts +135 -0
  280. package/dist/operations/semantic-advisor/types.d.ts.map +1 -0
  281. package/dist/operations/semantic-advisor/types.js +1 -0
  282. package/dist/prolog/codec.d.ts.map +1 -1
  283. package/dist/prolog/codec.js +9 -2
  284. package/dist/prolog.d.ts +5 -0
  285. package/dist/prolog.d.ts.map +1 -1
  286. package/dist/prolog.js +82 -30
  287. package/dist/public/impact/analyzer.d.ts +3 -0
  288. package/dist/public/impact/analyzer.d.ts.map +1 -0
  289. package/dist/public/impact/analyzer.js +54 -0
  290. package/dist/public/impact/coverage-depth-quality.d.ts +4 -0
  291. package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -0
  292. package/dist/public/impact/coverage-depth-quality.js +179 -0
  293. package/dist/public/impact/diagnostics.d.ts +7 -0
  294. package/dist/public/impact/diagnostics.d.ts.map +1 -0
  295. package/dist/public/impact/diagnostics.js +126 -0
  296. package/dist/public/impact/diff-meaning.d.ts +2 -0
  297. package/dist/public/impact/diff-meaning.d.ts.map +1 -0
  298. package/dist/public/impact/diff-meaning.js +101 -0
  299. package/dist/public/impact/full-kb-quality.d.ts +10 -0
  300. package/dist/public/impact/full-kb-quality.d.ts.map +1 -0
  301. package/dist/public/impact/full-kb-quality.js +191 -0
  302. package/dist/public/impact/manifest.d.ts +5 -0
  303. package/dist/public/impact/manifest.d.ts.map +1 -0
  304. package/dist/public/impact/manifest.js +43 -0
  305. package/dist/public/impact/requirement-quality.d.ts +4 -0
  306. package/dist/public/impact/requirement-quality.d.ts.map +1 -0
  307. package/dist/public/impact/requirement-quality.js +199 -0
  308. package/dist/public/impact/source-changes.d.ts +5 -0
  309. package/dist/public/impact/source-changes.d.ts.map +1 -0
  310. package/dist/public/impact/source-changes.js +129 -0
  311. package/dist/public/impact/summaries.d.ts +6 -0
  312. package/dist/public/impact/summaries.d.ts.map +1 -0
  313. package/dist/public/impact/summaries.js +68 -0
  314. package/dist/public/impact/symbol-quality-model.d.ts +21 -0
  315. package/dist/public/impact/symbol-quality-model.d.ts.map +1 -0
  316. package/dist/public/impact/symbol-quality-model.js +116 -0
  317. package/dist/public/impact/symbol-quality.d.ts +4 -0
  318. package/dist/public/impact/symbol-quality.d.ts.map +1 -0
  319. package/dist/public/impact/symbol-quality.js +159 -0
  320. package/dist/public/impact/types.d.ts +79 -0
  321. package/dist/public/impact/types.d.ts.map +1 -0
  322. package/dist/public/impact/types.js +1 -0
  323. package/dist/public/impact-diagnostics.d.ts +7 -0
  324. package/dist/public/impact-diagnostics.d.ts.map +1 -0
  325. package/dist/public/impact-diagnostics.js +5 -0
  326. package/dist/public/operations/catalog.d.ts +907 -0
  327. package/dist/public/operations/catalog.d.ts.map +1 -0
  328. package/dist/public/operations/catalog.js +42 -0
  329. package/dist/public/operations/check-executor.d.ts +21 -0
  330. package/dist/public/operations/check-executor.d.ts.map +1 -0
  331. package/dist/public/operations/check-executor.js +111 -0
  332. package/dist/public/operations/check-format-shared.d.ts +36 -0
  333. package/dist/public/operations/check-format-shared.d.ts.map +1 -0
  334. package/dist/public/operations/check-format-shared.js +107 -0
  335. package/dist/public/operations/check-helpers.d.ts +10 -0
  336. package/dist/public/operations/check-helpers.d.ts.map +1 -0
  337. package/dist/public/operations/check-helpers.js +107 -0
  338. package/dist/public/operations/discovery-entities.d.ts +14 -0
  339. package/dist/public/operations/discovery-entities.d.ts.map +1 -0
  340. package/dist/public/operations/discovery-entities.js +91 -0
  341. package/dist/public/operations/discovery-executors.d.ts +39 -0
  342. package/dist/public/operations/discovery-executors.d.ts.map +1 -0
  343. package/dist/public/operations/discovery-executors.js +101 -0
  344. package/dist/public/operations/index.d.ts +20 -0
  345. package/dist/public/operations/index.d.ts.map +1 -0
  346. package/dist/public/operations/index.js +18 -0
  347. package/dist/public/operations/node-ports.d.ts +15 -0
  348. package/dist/public/operations/node-ports.d.ts.map +1 -0
  349. package/dist/public/operations/node-ports.js +57 -0
  350. package/dist/public/operations/prolog-json.d.ts +5 -0
  351. package/dist/public/operations/prolog-json.d.ts.map +1 -0
  352. package/dist/public/operations/prolog-json.js +44 -0
  353. package/dist/public/operations/runtime-types.d.ts +69 -0
  354. package/dist/public/operations/runtime-types.d.ts.map +1 -0
  355. package/dist/public/operations/runtime-types.js +17 -0
  356. package/dist/public/operations/specs/autopilot.d.ts +82 -0
  357. package/dist/public/operations/specs/autopilot.d.ts.map +1 -0
  358. package/dist/public/operations/specs/autopilot.js +72 -0
  359. package/dist/public/operations/specs/check.d.ts +51 -0
  360. package/dist/public/operations/specs/check.d.ts.map +1 -0
  361. package/dist/public/operations/specs/check.js +62 -0
  362. package/dist/public/operations/specs/discovery.d.ts +94 -0
  363. package/dist/public/operations/specs/discovery.d.ts.map +1 -0
  364. package/dist/public/operations/specs/discovery.js +98 -0
  365. package/dist/public/operations/specs/modeling.d.ts +126 -0
  366. package/dist/public/operations/specs/modeling.d.ts.map +1 -0
  367. package/dist/public/operations/specs/modeling.js +117 -0
  368. package/dist/public/operations/specs/mutation-schemas.d.ts +233 -0
  369. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -0
  370. package/dist/public/operations/specs/mutation-schemas.js +267 -0
  371. package/dist/public/operations/specs/mutation.d.ts +56 -0
  372. package/dist/public/operations/specs/mutation.d.ts.map +1 -0
  373. package/dist/public/operations/specs/mutation.js +44 -0
  374. package/dist/public/operations/specs/reporting.d.ts +185 -0
  375. package/dist/public/operations/specs/reporting.d.ts.map +1 -0
  376. package/dist/public/operations/specs/reporting.js +158 -0
  377. package/dist/public/operations/specs/semantic.d.ts +53 -0
  378. package/dist/public/operations/specs/semantic.d.ts.map +1 -0
  379. package/dist/public/operations/specs/semantic.js +105 -0
  380. package/dist/public/operations/specs/skills.d.ts +70 -0
  381. package/dist/public/operations/specs/skills.d.ts.map +1 -0
  382. package/dist/public/operations/specs/skills.js +107 -0
  383. package/dist/public/operations/specs/sparql.d.ts +39 -0
  384. package/dist/public/operations/specs/sparql.d.ts.map +1 -0
  385. package/dist/public/operations/specs/sparql.js +121 -0
  386. package/dist/public/operations/specs/upsert.d.ts +256 -0
  387. package/dist/public/operations/specs/upsert.d.ts.map +1 -0
  388. package/dist/public/operations/specs/upsert.js +27 -0
  389. package/dist/public/operations/types.d.ts +24 -0
  390. package/dist/public/operations/types.d.ts.map +1 -0
  391. package/dist/public/operations/types.js +1 -0
  392. package/dist/public/schemas/entity.d.ts.map +1 -1
  393. package/dist/public/schemas/entity.js +48 -0
  394. package/dist/public/skill-system/errors.d.ts +19 -0
  395. package/dist/public/skill-system/errors.d.ts.map +1 -0
  396. package/dist/public/skill-system/errors.js +36 -0
  397. package/dist/public/skill-system/loader.d.ts +9 -0
  398. package/dist/public/skill-system/loader.d.ts.map +1 -0
  399. package/dist/public/skill-system/loader.js +76 -0
  400. package/dist/public/skill-system/paths.d.ts +6 -0
  401. package/dist/public/skill-system/paths.d.ts.map +1 -0
  402. package/dist/public/skill-system/paths.js +25 -0
  403. package/dist/public/skill-system/types.d.ts +15 -0
  404. package/dist/public/skill-system/types.d.ts.map +1 -0
  405. package/dist/public/skill-system/types.js +1 -0
  406. package/dist/public/skill-system/validation.d.ts +10 -0
  407. package/dist/public/skill-system/validation.d.ts.map +1 -0
  408. package/dist/public/skill-system/validation.js +119 -0
  409. package/dist/public/skills/init-kibi/SKILL.md +62 -0
  410. package/dist/public/skills/kibi-freshness/SKILL.md +44 -0
  411. package/dist/public/skills/kibi-traceability/SKILL.md +54 -0
  412. package/dist/public/skills/kibi-usage/SKILL.md +123 -95
  413. package/dist/public/skills/kibi-usage/resources/fact-lanes.md +107 -5
  414. package/dist/public/skills/kibi-usage/resources/operation-access.md +44 -0
  415. package/dist/public/skills/kibi-usage/resources/relationship-directions.md +30 -0
  416. package/dist/public/skills/kibi-usage/resources/workflows.md +40 -3
  417. package/dist/public/skills.d.ts +4 -41
  418. package/dist/public/skills.d.ts.map +1 -1
  419. package/dist/public/skills.js +3 -270
  420. package/dist/public/symbol-granularity.d.ts +1 -1
  421. package/dist/public/symbol-granularity.d.ts.map +1 -1
  422. package/dist/public/symbol-granularity.js +2 -0
  423. package/dist/runtime/cli-runtime.d.ts +3 -0
  424. package/dist/runtime/cli-runtime.d.ts.map +1 -0
  425. package/dist/runtime/cli-runtime.js +96 -0
  426. package/dist/schemas/entity.schema.json +23 -0
  427. package/dist/traceability/evidence-model.d.ts +1 -1
  428. package/dist/traceability/evidence-model.d.ts.map +1 -1
  429. package/dist/traceability/evidence-model.js +1 -1
  430. package/dist/traceability/staged-diagnostics.d.ts +6 -6
  431. package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
  432. package/dist/traceability/staged-diagnostics.js +12 -6
  433. package/dist/traceability/staged-impact-contract.js +1 -1
  434. package/dist/traceability/staged-symbols-manifest.d.ts +1 -0
  435. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  436. package/dist/traceability/staged-symbols-manifest.js +60 -27
  437. package/dist/traceability/symbol-extract.d.ts.map +1 -1
  438. package/dist/traceability/symbol-extract.js +58 -1
  439. package/dist/traceability/temp-kb.d.ts.map +1 -1
  440. package/dist/traceability/temp-kb.js +34 -1
  441. package/dist/types/entities.d.ts +8 -1
  442. package/dist/types/entities.d.ts.map +1 -1
  443. package/dist/utils/prolog-query-plan-safety.d.ts +8 -0
  444. package/dist/utils/prolog-query-plan-safety.d.ts.map +1 -0
  445. package/dist/utils/prolog-query-plan-safety.js +47 -0
  446. package/dist/utils/rule-registry.d.ts.map +1 -1
  447. package/dist/utils/rule-registry.js +18 -0
  448. package/package.json +60 -2
  449. package/schema/entities.pl +4 -0
  450. package/src/public/impact/analyzer.ts +90 -0
  451. package/src/public/impact/coverage-depth-quality.ts +268 -0
  452. package/src/public/impact/diagnostics.ts +199 -0
  453. package/src/public/impact/diff-meaning.ts +121 -0
  454. package/src/public/impact/full-kb-quality.ts +230 -0
  455. package/src/public/impact/manifest.ts +57 -0
  456. package/src/public/impact/requirement-quality.ts +262 -0
  457. package/src/public/impact/source-changes.ts +180 -0
  458. package/src/public/impact/summaries.ts +100 -0
  459. package/src/public/impact/symbol-quality-model.ts +171 -0
  460. package/src/public/impact/symbol-quality.ts +207 -0
  461. package/src/public/impact/types.ts +99 -0
  462. package/src/public/impact-diagnostics.ts +22 -0
  463. package/src/public/operations/catalog.ts +60 -0
  464. package/src/public/operations/check-executor.ts +185 -0
  465. package/src/public/operations/check-format-shared.ts +178 -0
  466. package/src/public/operations/check-helpers.ts +141 -0
  467. package/src/public/operations/discovery-entities.ts +122 -0
  468. package/src/public/operations/discovery-executors.ts +176 -0
  469. package/src/public/operations/index.ts +19 -0
  470. package/src/public/operations/node-ports.ts +78 -0
  471. package/src/public/operations/prolog-json.ts +71 -0
  472. package/src/public/operations/runtime-types.ts +106 -0
  473. package/src/public/operations/specs/autopilot.ts +98 -0
  474. package/src/public/operations/specs/check.ts +72 -0
  475. package/src/public/operations/specs/discovery.ts +126 -0
  476. package/src/public/operations/specs/modeling.ts +154 -0
  477. package/src/public/operations/specs/mutation-schemas.ts +296 -0
  478. package/src/public/operations/specs/mutation.ts +58 -0
  479. package/src/public/operations/specs/reporting.ts +249 -0
  480. package/src/public/operations/specs/semantic.ts +135 -0
  481. package/src/public/operations/specs/skills.ts +142 -0
  482. package/src/public/operations/specs/sparql.ts +149 -0
  483. package/src/public/operations/specs/upsert.ts +40 -0
  484. package/src/public/operations/types.ts +57 -0
  485. package/src/public/schemas/entity.ts +50 -0
  486. package/src/public/skill-system/errors.ts +38 -0
  487. package/src/public/skill-system/loader.ts +108 -0
  488. package/src/public/skill-system/paths.ts +27 -0
  489. package/src/public/skill-system/types.ts +14 -0
  490. package/src/public/skill-system/validation.ts +175 -0
  491. package/src/public/skills/init-kibi/SKILL.md +62 -0
  492. package/src/public/skills/kibi-freshness/SKILL.md +44 -0
  493. package/src/public/skills/kibi-traceability/SKILL.md +54 -0
  494. package/src/public/skills/kibi-usage/SKILL.md +123 -95
  495. package/src/public/skills/kibi-usage/resources/fact-lanes.md +107 -5
  496. package/src/public/skills/kibi-usage/resources/operation-access.md +44 -0
  497. package/src/public/skills/kibi-usage/resources/relationship-directions.md +30 -0
  498. package/src/public/skills/kibi-usage/resources/workflows.md +40 -3
  499. package/src/public/skills.ts +18 -427
  500. package/src/public/symbol-granularity.ts +4 -0
  501. package/src/schemas/entity.schema.json +23 -0
@@ -0,0 +1,99 @@
1
+ import type { ExtractionResult } from "../../extractors/markdown.js";
2
+ import type { HunkRange, StagedFile } from "../../traceability/git-staged.js";
3
+ import type { KibiImpactDiagnostic } from "../../traceability/staged-diagnostics.js";
4
+ import type { ExtractedSymbol } from "../../traceability/symbol-extract.js";
5
+
6
+ export type QualityDiagnosticSeverity = "error" | "warning" | "review" | "info";
7
+
8
+ export type QualityDiagnostic = {
9
+ readonly id: string;
10
+ readonly severity: QualityDiagnosticSeverity;
11
+ readonly blocking: boolean;
12
+ readonly category:
13
+ | "symbol"
14
+ | "requirement"
15
+ | "coverage"
16
+ | "fact"
17
+ | "status"
18
+ | "coordinate"
19
+ | "mixed-purpose"
20
+ | string;
21
+ readonly entityId?: string;
22
+ readonly source?: string;
23
+ readonly files?: readonly string[];
24
+ readonly docs?: readonly string[];
25
+ readonly message: string;
26
+ readonly suggestion: string;
27
+ readonly evidence?: Readonly<Record<string, unknown>>;
28
+ };
29
+
30
+ export type SymbolsByFile = Map<string, readonly ExtractedSymbol[]>;
31
+
32
+ export type TraceabilityRelationship = {
33
+ readonly type: string;
34
+ readonly to: string;
35
+ };
36
+
37
+ export type SymbolGranularityDiagnosticsOptions = {
38
+ readonly manifestResults: readonly ExtractionResult[];
39
+ readonly activeEntityIds?: ReadonlySet<string>;
40
+ readonly symbolsByFile: SymbolsByFile;
41
+ readonly sourceContentByFile?: ReadonlyMap<string, string>;
42
+ readonly workspaceRoot?: string;
43
+ };
44
+
45
+ export type SemanticReviewDiagnosticsOptions = {
46
+ readonly symbolsByFile: SymbolsByFile;
47
+ };
48
+
49
+ export type SymbolQualityDiagnosticsOptions = {
50
+ readonly manifestResults: readonly ExtractionResult[];
51
+ readonly activeEntityIds?: ReadonlySet<string>;
52
+ readonly symbolsByFile: SymbolsByFile;
53
+ };
54
+
55
+ export type RequirementQualityDiagnosticsOptions = {
56
+ readonly manifestResults: readonly ExtractionResult[];
57
+ readonly hardViolationEntityIds?: ReadonlySet<string>;
58
+ };
59
+
60
+ export type ChangedFileImpactOptions = {
61
+ readonly workspaceRoot: string;
62
+ readonly sourceFiles?: readonly string[];
63
+ readonly staged?: boolean;
64
+ readonly includeWorkingTreeDiff?: boolean;
65
+ readonly includeImpactDiagnostics?: boolean;
66
+ readonly maxDiagnostics?: number;
67
+ };
68
+
69
+ export type ImpactExtractedSymbol = {
70
+ readonly id: string;
71
+ readonly name: string;
72
+ readonly kind: string;
73
+ readonly role: string;
74
+ readonly location: ExtractedSymbol["location"];
75
+ readonly hunkRanges: readonly HunkRange[];
76
+ readonly linkedEntityIds: readonly string[];
77
+ };
78
+
79
+ export type ImpactLinkedEntity = {
80
+ readonly id: string;
81
+ readonly relationshipType: string;
82
+ readonly sourceSymbolId: string;
83
+ readonly sourceSymbolName: string;
84
+ };
85
+
86
+ export type ChangedFileImpactResult = {
87
+ readonly impactDiagnostics: readonly KibiImpactDiagnostic[];
88
+ readonly sourceFiles: readonly string[];
89
+ readonly extractedSymbols: readonly ImpactExtractedSymbol[];
90
+ readonly linkedEntities: readonly ImpactLinkedEntity[];
91
+ readonly nextActions: readonly string[];
92
+ };
93
+
94
+ export type SourceChange = {
95
+ readonly file: string;
96
+ readonly status: StagedFile["status"];
97
+ readonly hunkRanges: readonly HunkRange[];
98
+ readonly content: string;
99
+ };
@@ -0,0 +1,22 @@
1
+ export { analyzeChangedFileImpact } from "./impact/analyzer.js";
2
+ export { collectFullKbQualityDiagnostics } from "./impact/full-kb-quality.js";
3
+ export {
4
+ createSemanticReviewDiagnostics,
5
+ createSymbolGranularityDiagnostics,
6
+ hasBlockingImpactDiagnostics,
7
+ hasBlockingQualityDiagnostics,
8
+ } from "./impact/diagnostics.js";
9
+ export { createRequirementQualityDiagnostics } from "./impact/requirement-quality.js";
10
+ export { createSymbolQualityDiagnostics } from "./impact/symbol-quality.js";
11
+ export type {
12
+ ChangedFileImpactOptions,
13
+ ChangedFileImpactResult,
14
+ ImpactExtractedSymbol,
15
+ ImpactLinkedEntity,
16
+ QualityDiagnostic,
17
+ QualityDiagnosticSeverity,
18
+ RequirementQualityDiagnosticsOptions,
19
+ SemanticReviewDiagnosticsOptions,
20
+ SymbolGranularityDiagnosticsOptions,
21
+ SymbolQualityDiagnosticsOptions,
22
+ } from "./impact/types.js";
@@ -0,0 +1,60 @@
1
+ import { autopilotGenerateSpec } from "./specs/autopilot.js";
2
+ import { checkSpec } from "./specs/check.js";
3
+ import { querySpec, searchSpec, statusSpec } from "./specs/discovery.js";
4
+ import {
5
+ modelRequirementSpec,
6
+ suggestPredicatesSpec,
7
+ } from "./specs/modeling.js";
8
+ import {
9
+ deleteSpec,
10
+ upsertSpec,
11
+ validateUpsertSpec,
12
+ } from "./specs/mutation.js";
13
+ import { coverageSpec, findGapsSpec, graphSpec } from "./specs/reporting.js";
14
+ import { semanticAdvisorSpec } from "./specs/semantic.js";
15
+ import {
16
+ skillsListSpec,
17
+ skillsLoadSpec,
18
+ skillsReadSpec,
19
+ } from "./specs/skills.js";
20
+ import { sparqlRemoteSpec } from "./specs/sparql.js";
21
+ import type { OperationName, OperationSpec } from "./types.js";
22
+
23
+ export const OPERATION_CATALOG = [
24
+ skillsListSpec,
25
+ skillsLoadSpec,
26
+ skillsReadSpec,
27
+ querySpec,
28
+ searchSpec,
29
+ statusSpec,
30
+ findGapsSpec,
31
+ coverageSpec,
32
+ graphSpec,
33
+ semanticAdvisorSpec,
34
+ modelRequirementSpec,
35
+ suggestPredicatesSpec,
36
+ autopilotGenerateSpec,
37
+ validateUpsertSpec,
38
+ upsertSpec,
39
+ deleteSpec,
40
+ checkSpec,
41
+ sparqlRemoteSpec,
42
+ ] as const satisfies readonly OperationSpec[];
43
+
44
+ const SPECS_BY_NAME: ReadonlyMap<OperationName, OperationSpec> = new Map(
45
+ OPERATION_CATALOG.map((spec) => [spec.name, spec]),
46
+ );
47
+
48
+ // implements REQ-kibi-operation-interface-parity
49
+ export function getSpec(name: OperationName): OperationSpec {
50
+ const spec = SPECS_BY_NAME.get(name);
51
+ if (!spec) {
52
+ throw new RangeError(`Unknown Kibi operation: ${name}`);
53
+ }
54
+ return spec;
55
+ }
56
+
57
+ // implements REQ-kibi-operation-interface-parity
58
+ export function listSpecs(): readonly OperationSpec[] {
59
+ return OPERATION_CATALOG;
60
+ }
@@ -0,0 +1,185 @@
1
+ import { runAggregatedChecks } from "../../commands/aggregated-checks.js";
2
+ /*
3
+ Kibi — repo-local, per-branch, queryable long-term memory for software projects
4
+ Copyright (C) 2026 Piotr Franczyk
5
+
6
+ This program is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU Affero General Public License as published by
8
+ the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU Affero General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Affero General Public License
17
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
18
+ */
19
+ import type { Violation } from "../check-types.js";
20
+ import { collectFullKbQualityDiagnostics } from "../impact-diagnostics.js";
21
+ import {
22
+ type CheckDiagnostic,
23
+ type CheckStructuredContent,
24
+ buildStructuredContent,
25
+ buildSummary,
26
+ } from "./check-format-shared.js";
27
+ import {
28
+ analyzeKbCheckImpact,
29
+ collectQueryPlanSafetyViolations,
30
+ getEffectiveRules,
31
+ loadChecksConfig,
32
+ qualityDiagnosticsFromImpact,
33
+ } from "./check-helpers.js";
34
+ import type { OperationContext, PrologPort } from "./runtime-types.js";
35
+ import type { OperationResult } from "./types.js";
36
+
37
+ // implements REQ-kibi-operation-interface-parity, REQ-002
38
+ export type CheckInput = {
39
+ readonly rules?: readonly string[];
40
+ readonly workspaceRoot?: string;
41
+ readonly sourceFiles?: readonly string[];
42
+ readonly staged?: boolean;
43
+ readonly includeWorkingTreeDiff?: boolean;
44
+ readonly includeImpactDiagnostics?: boolean;
45
+ readonly maxDiagnostics?: number;
46
+ };
47
+
48
+ export type CheckPayload = CheckStructuredContent;
49
+ export type { CheckDiagnostic, CheckStructuredContent };
50
+ export {
51
+ buildStructuredContent,
52
+ buildSummary,
53
+ getEffectiveRules,
54
+ loadChecksConfig,
55
+ };
56
+
57
+ export type CheckExecutionOptions = {
58
+ readonly collectFullQualityDiagnosticsForExplicitRules?: boolean;
59
+ };
60
+
61
+ function requireProlog(context: OperationContext): PrologPort {
62
+ if (context.prolog === undefined) {
63
+ throw new Error("Check operation requires a Prolog runtime");
64
+ }
65
+ return context.prolog;
66
+ }
67
+
68
+ function invalidatePrologCache(prolog: PrologPort): void {
69
+ prolog.invalidateCache?.();
70
+ }
71
+
72
+ // implements REQ-kibi-operation-interface-parity, REQ-002
73
+ export async function executeCheck(
74
+ args: CheckInput,
75
+ context: OperationContext,
76
+ options: CheckExecutionOptions = {},
77
+ ): Promise<OperationResult<CheckPayload>> {
78
+ try {
79
+ const workspaceRoot = args.workspaceRoot ?? context.workspaceRoot;
80
+ const prolog = requireProlog(context);
81
+ const checksConfig = await loadChecksConfig(workspaceRoot);
82
+ const rulesAllowlist =
83
+ args.rules === undefined
84
+ ? getEffectiveRules(checksConfig.rules)
85
+ : args.rules.length === 0
86
+ ? new Set<string>()
87
+ : getEffectiveRules(undefined, args.rules.join(","));
88
+ const hasExplicitRules = args.rules !== undefined;
89
+ const impactResult = analyzeKbCheckImpact(workspaceRoot, args);
90
+ const impactQualityDiagnostics = qualityDiagnosticsFromImpact(impactResult);
91
+ const maxDiagnosticsOption =
92
+ args.maxDiagnostics !== undefined
93
+ ? { maxDiagnostics: args.maxDiagnostics }
94
+ : {};
95
+
96
+ if (rulesAllowlist.size === 0) {
97
+ const qualityDiagnostics =
98
+ hasExplicitRules &&
99
+ options.collectFullQualityDiagnosticsForExplicitRules !== true
100
+ ? []
101
+ : impactResult
102
+ ? impactQualityDiagnostics
103
+ : await collectFullKbQualityDiagnostics({
104
+ prolog,
105
+ ...maxDiagnosticsOption,
106
+ });
107
+ return {
108
+ content: [
109
+ {
110
+ type: "text",
111
+ text: buildSummary({
112
+ violations: [],
113
+ impactResult,
114
+ qualityDiagnostics,
115
+ }),
116
+ },
117
+ ],
118
+ structuredContent: buildStructuredContent({
119
+ violations: [],
120
+ diagnostics: [],
121
+ qualityDiagnostics,
122
+ impactResult,
123
+ }),
124
+ };
125
+ }
126
+
127
+ invalidatePrologCache(prolog);
128
+
129
+ const aggregatedViolations = await runAggregatedChecks(
130
+ prolog,
131
+ rulesAllowlist,
132
+ checksConfig.symbolTraceability.requireAdr,
133
+ );
134
+ const queryPlanViolations = rulesAllowlist.has("query-plan-safety")
135
+ ? collectQueryPlanSafetyViolations()
136
+ : [];
137
+ const violations: Violation[] = [
138
+ ...aggregatedViolations,
139
+ ...queryPlanViolations,
140
+ ];
141
+
142
+ const diagnostics: CheckDiagnostic[] = violations.map((v) => ({
143
+ category: "SYNC_ERROR",
144
+ severity: "error",
145
+ message: v.description,
146
+ ...(v.source !== undefined ? { file: v.source } : {}),
147
+ ...(v.suggestion !== undefined ? { suggestion: v.suggestion } : {}),
148
+ }));
149
+
150
+ const collectFullQualityDiagnostics =
151
+ !hasExplicitRules ||
152
+ options.collectFullQualityDiagnosticsForExplicitRules === true;
153
+ const qualityDiagnostics = !collectFullQualityDiagnostics
154
+ ? impactQualityDiagnostics
155
+ : impactResult
156
+ ? impactQualityDiagnostics
157
+ : await collectFullKbQualityDiagnostics({
158
+ prolog,
159
+ hardViolationEntityIds: new Set(violations.map((v) => v.entityId)),
160
+ ...maxDiagnosticsOption,
161
+ });
162
+
163
+ return {
164
+ content: [
165
+ {
166
+ type: "text",
167
+ text: buildSummary({
168
+ violations,
169
+ impactResult,
170
+ qualityDiagnostics,
171
+ }),
172
+ },
173
+ ],
174
+ structuredContent: buildStructuredContent({
175
+ violations,
176
+ diagnostics,
177
+ qualityDiagnostics,
178
+ impactResult,
179
+ }),
180
+ };
181
+ } catch (error) {
182
+ const message = error instanceof Error ? error.message : String(error);
183
+ throw new Error(`Check execution failed: ${message}`);
184
+ }
185
+ }
@@ -0,0 +1,178 @@
1
+ import type { Violation } from "../check-types.js";
2
+ /*
3
+ Kibi — repo-local, per-branch, queryable long-term memory for software projects
4
+ Copyright (C) 2026 Piotr Franczyk
5
+
6
+ This program is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU Affero General Public License as published by
8
+ the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU Affero General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Affero General Public License
17
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
18
+ */
19
+ import type { ChangedFileImpactResult } from "../impact-diagnostics.js";
20
+ import type { QualityDiagnostic } from "../impact-diagnostics.js";
21
+
22
+ // implements REQ-mcp-tool-check
23
+ export interface CheckDiagnostic {
24
+ readonly category: string;
25
+ readonly severity: "error" | "warning";
26
+ readonly message: string;
27
+ readonly file?: string;
28
+ readonly suggestion?: string;
29
+ }
30
+
31
+ // implements REQ-mcp-tool-check
32
+ export interface CheckStructuredContent {
33
+ readonly violations: readonly Violation[];
34
+ readonly count: number;
35
+ readonly diagnostics: readonly CheckDiagnostic[];
36
+ readonly qualityDiagnostics?: readonly QualityDiagnostic[];
37
+ readonly impactDiagnostics?: ChangedFileImpactResult["impactDiagnostics"];
38
+ readonly sourceFiles?: ChangedFileImpactResult["sourceFiles"];
39
+ readonly extractedSymbols?: ChangedFileImpactResult["extractedSymbols"];
40
+ readonly linkedEntities?: ChangedFileImpactResult["linkedEntities"];
41
+ readonly nextActions?: ChangedFileImpactResult["nextActions"];
42
+ }
43
+
44
+ function formatDiagnostics(diagnostics: readonly CheckDiagnostic[]) {
45
+ return diagnostics.map((d) => ({
46
+ category: d.category,
47
+ severity: d.severity,
48
+ message: d.message,
49
+ ...(d.file !== undefined ? { file: d.file } : {}),
50
+ ...(d.suggestion !== undefined ? { suggestion: d.suggestion } : {}),
51
+ }));
52
+ }
53
+
54
+ // implements REQ-mcp-tool-check
55
+ export function formatImpactText(
56
+ impactResult: ChangedFileImpactResult,
57
+ ): string {
58
+ if (impactResult.impactDiagnostics.length === 0) {
59
+ return "No impact diagnostics found";
60
+ }
61
+
62
+ const details = impactResult.impactDiagnostics.map((diagnostic) => {
63
+ const files =
64
+ diagnostic.files.length > 0
65
+ ? diagnostic.files.join(", ")
66
+ : "unknown-source";
67
+ return `- ${diagnostic.id} | ${diagnostic.severity} | ${files} | ${diagnostic.message} Suggestion: ${diagnostic.suggestion}`;
68
+ });
69
+ return `${impactResult.impactDiagnostics.length} impact diagnostics found\n${details.join("\n")}`;
70
+ }
71
+
72
+ function formatOptionalList(
73
+ label: string,
74
+ values: readonly string[] | undefined,
75
+ ) {
76
+ if (values === undefined || values.length === 0) {
77
+ return [];
78
+ }
79
+ return [`${label}: ${values.join(", ")}`];
80
+ }
81
+
82
+ // implements REQ-mcp-tool-check
83
+ export function formatQualityDiagnosticsText(
84
+ diagnostics: readonly QualityDiagnostic[],
85
+ ): string {
86
+ if (diagnostics.length === 0) {
87
+ return "No quality diagnostics found";
88
+ }
89
+
90
+ const details = diagnostics.map((diagnostic) => {
91
+ const parts = [
92
+ diagnostic.id,
93
+ diagnostic.severity,
94
+ diagnostic.category,
95
+ diagnostic.message,
96
+ ];
97
+ const metadata = [
98
+ `Blocking: ${diagnostic.blocking ? "yes" : "no"}`,
99
+ ...formatOptionalList("Files", diagnostic.files),
100
+ ...formatOptionalList("Docs", diagnostic.docs),
101
+ ...(diagnostic.entityId !== undefined
102
+ ? [`Entity: ${diagnostic.entityId}`]
103
+ : []),
104
+ ...(diagnostic.source !== undefined
105
+ ? [`Source: ${diagnostic.source}`]
106
+ : []),
107
+ `Suggestion: ${diagnostic.suggestion}`,
108
+ ];
109
+ return `- ${parts.join(" | ")}\n ${metadata.join("\n ")}`;
110
+ });
111
+
112
+ return `${diagnostics.length} quality diagnostic${diagnostics.length === 1 ? "" : "s"} found\n${details.join("\n")}`;
113
+ }
114
+
115
+ // implements REQ-mcp-tool-check
116
+ export function formatViolationText(violations: readonly Violation[]): string {
117
+ if (violations.length === 0) {
118
+ return "No violations found";
119
+ }
120
+
121
+ const details = violations.map((violation) => {
122
+ const parts = [
123
+ violation.rule,
124
+ violation.entityId,
125
+ violation.source ?? "unknown-source",
126
+ violation.description,
127
+ ];
128
+ if (violation.suggestion) {
129
+ parts.push(`Suggestion: ${violation.suggestion}`);
130
+ }
131
+ return `- ${parts.join(" | ")}`;
132
+ });
133
+
134
+ return `${violations.length} violations found\n${details.join("\n")}`;
135
+ }
136
+
137
+ // implements REQ-mcp-tool-check
138
+ export function buildStructuredContent(input: {
139
+ violations: readonly Violation[];
140
+ diagnostics: readonly CheckDiagnostic[];
141
+ qualityDiagnostics?: readonly QualityDiagnostic[];
142
+ impactResult: ChangedFileImpactResult | undefined;
143
+ }): CheckStructuredContent {
144
+ const qualityDiagnostics = input.qualityDiagnostics ?? [];
145
+ return {
146
+ violations: [...input.violations],
147
+ count: input.violations.length,
148
+ diagnostics: formatDiagnostics(input.diagnostics),
149
+ ...(qualityDiagnostics.length > 0
150
+ ? { qualityDiagnostics: [...qualityDiagnostics] }
151
+ : {}),
152
+ ...(input.impactResult
153
+ ? {
154
+ impactDiagnostics: input.impactResult.impactDiagnostics,
155
+ sourceFiles: input.impactResult.sourceFiles,
156
+ extractedSymbols: input.impactResult.extractedSymbols,
157
+ linkedEntities: input.impactResult.linkedEntities,
158
+ nextActions: input.impactResult.nextActions,
159
+ }
160
+ : {}),
161
+ };
162
+ }
163
+
164
+ // implements REQ-mcp-tool-check
165
+ export function buildSummary(input: {
166
+ readonly violations: readonly Violation[];
167
+ readonly impactResult: ChangedFileImpactResult | undefined;
168
+ readonly qualityDiagnostics: readonly QualityDiagnostic[];
169
+ }): string {
170
+ const sections = [formatViolationText(input.violations)];
171
+ if (input.impactResult !== undefined) {
172
+ sections.push(formatImpactText(input.impactResult));
173
+ }
174
+ if (input.qualityDiagnostics.length > 0) {
175
+ sections.push(formatQualityDiagnosticsText(input.qualityDiagnostics));
176
+ }
177
+ return sections.join("\n");
178
+ }
@@ -0,0 +1,141 @@
1
+ import { readFileSync } from "node:fs";
2
+ /*
3
+ Kibi — repo-local, per-branch, queryable long-term memory for software projects
4
+ Copyright (C) 2026 Piotr Franczyk
5
+
6
+ This program is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU Affero General Public License as published by
8
+ the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU Affero General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Affero General Public License
17
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
18
+ */
19
+ import { readFile } from "node:fs/promises";
20
+ import path from "node:path";
21
+ import { getKbPlPathOverride } from "../../env.js";
22
+ import { resolveKbPlPath } from "../../prolog.js";
23
+ import { analyzePrologQueryPlanSafety } from "../../utils/prolog-query-plan-safety.js";
24
+ import {
25
+ type ChecksConfig,
26
+ DEFAULT_CHECKS_CONFIG,
27
+ RULE_NAMES,
28
+ type Violation,
29
+ getEffectiveRules,
30
+ } from "../../utils/rule-registry.js";
31
+ import {
32
+ type ChangedFileImpactResult,
33
+ type QualityDiagnostic,
34
+ analyzeChangedFileImpact,
35
+ } from "../impact-diagnostics.js";
36
+ import type { CheckInput } from "./check-executor.js";
37
+
38
+ export { RULE_NAMES, getEffectiveRules };
39
+
40
+ function resolveChecksPlPath(): string {
41
+ const override = getKbPlPathOverride();
42
+ return path.join(path.dirname(override ?? resolveKbPlPath()), "checks.pl");
43
+ }
44
+
45
+ // implements REQ-mcp-tool-check
46
+ export function collectQueryPlanSafetyViolations(): Violation[] {
47
+ const checksPlPath = resolveChecksPlPath();
48
+ const source = readFileSync(checksPlPath, "utf8");
49
+ return analyzePrologQueryPlanSafety(source).map((v) => ({
50
+ rule: "query-plan-safety",
51
+ entityId: v.predicate,
52
+ description: v.description,
53
+ suggestion: v.suggestion,
54
+ source: `${checksPlPath}:${v.line}`,
55
+ }));
56
+ }
57
+
58
+ // implements REQ-mcp-tool-check
59
+ export async function loadChecksConfig(
60
+ workspaceRoot: string,
61
+ ): Promise<ChecksConfig> {
62
+ const configPath = path.join(workspaceRoot, ".kb", "config.json");
63
+ try {
64
+ const content = await readFile(configPath, "utf8");
65
+ const parsed = JSON.parse(content) as {
66
+ checks?: Partial<ChecksConfig>;
67
+ };
68
+
69
+ const parsedRules = parsed.checks?.rules;
70
+ const normalizedRules: Record<string, boolean> = {
71
+ ...DEFAULT_CHECKS_CONFIG.rules,
72
+ };
73
+ if (parsedRules && typeof parsedRules === "object") {
74
+ for (const [key, value] of Object.entries(parsedRules)) {
75
+ if (typeof value === "boolean") {
76
+ normalizedRules[key] = value;
77
+ }
78
+ }
79
+ }
80
+
81
+ const parsedSt = parsed.checks?.symbolTraceability;
82
+ const normalizedSt = { ...DEFAULT_CHECKS_CONFIG.symbolTraceability };
83
+ if (
84
+ parsedSt &&
85
+ typeof parsedSt === "object" &&
86
+ typeof parsedSt.requireAdr === "boolean"
87
+ ) {
88
+ normalizedSt.requireAdr = parsedSt.requireAdr;
89
+ }
90
+
91
+ return { rules: normalizedRules, symbolTraceability: normalizedSt };
92
+ } catch {
93
+ return DEFAULT_CHECKS_CONFIG;
94
+ }
95
+ }
96
+
97
+ // implements REQ-mcp-tool-check
98
+ export function hasImpactOptions(args: CheckInput): boolean {
99
+ return Boolean(
100
+ args.includeImpactDiagnostics ||
101
+ args.staged ||
102
+ args.includeWorkingTreeDiff ||
103
+ (args.sourceFiles !== undefined && args.sourceFiles.length > 0),
104
+ );
105
+ }
106
+
107
+ // implements REQ-mcp-tool-check
108
+ export function analyzeKbCheckImpact(
109
+ workspaceRoot: string,
110
+ args: CheckInput,
111
+ ): ChangedFileImpactResult | undefined {
112
+ if (!hasImpactOptions(args)) {
113
+ return undefined;
114
+ }
115
+ return analyzeChangedFileImpact({
116
+ workspaceRoot,
117
+ ...(args.sourceFiles !== undefined
118
+ ? { sourceFiles: args.sourceFiles }
119
+ : {}),
120
+ ...(args.staged !== undefined ? { staged: args.staged } : {}),
121
+ ...(args.includeWorkingTreeDiff !== undefined
122
+ ? { includeWorkingTreeDiff: args.includeWorkingTreeDiff }
123
+ : {}),
124
+ ...(args.includeImpactDiagnostics !== undefined
125
+ ? { includeImpactDiagnostics: args.includeImpactDiagnostics }
126
+ : {}),
127
+ ...(args.maxDiagnostics !== undefined
128
+ ? { maxDiagnostics: args.maxDiagnostics }
129
+ : {}),
130
+ });
131
+ }
132
+
133
+ // implements REQ-mcp-tool-check
134
+ export function qualityDiagnosticsFromImpact(
135
+ impactResult: ChangedFileImpactResult | undefined,
136
+ ): readonly QualityDiagnostic[] {
137
+ if (impactResult === undefined) return [];
138
+ return impactResult.impactDiagnostics.filter(
139
+ (d) => !d.blocking && d.severity !== "error",
140
+ );
141
+ }