kibi-cli 0.14.0 → 0.17.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 (456) 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 -211
  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 +1 -1
  39. package/dist/commands/check.d.ts.map +1 -1
  40. package/dist/commands/check.js +53 -95
  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 +2 -1
  44. package/dist/commands/discovery-shared.d.ts.map +1 -1
  45. package/dist/commands/discovery-shared.js +6 -18
  46. package/dist/commands/gaps.d.ts.map +1 -1
  47. package/dist/commands/gaps.js +15 -19
  48. package/dist/commands/graph.d.ts.map +1 -1
  49. package/dist/commands/graph.js +15 -21
  50. package/dist/commands/query.d.ts +7 -7
  51. package/dist/commands/query.d.ts.map +1 -1
  52. package/dist/commands/query.js +98 -204
  53. package/dist/commands/search.d.ts +4 -4
  54. package/dist/commands/search.d.ts.map +1 -1
  55. package/dist/commands/search.js +14 -27
  56. package/dist/commands/status.d.ts +1 -1
  57. package/dist/commands/status.d.ts.map +1 -1
  58. package/dist/commands/status.js +6 -7
  59. package/dist/commands/sync/manifest.d.ts +13 -2
  60. package/dist/commands/sync/manifest.d.ts.map +1 -1
  61. package/dist/commands/sync/manifest.js +31 -22
  62. package/dist/commands/sync/persistence.d.ts.map +1 -1
  63. package/dist/commands/sync/persistence.js +39 -1
  64. package/dist/extractors/markdown.d.ts +22 -2
  65. package/dist/extractors/markdown.d.ts.map +1 -1
  66. package/dist/extractors/markdown.js +50 -1
  67. package/dist/extractors/symbols-ts.d.ts.map +1 -1
  68. package/dist/extractors/symbols-ts.js +11 -1
  69. package/dist/logic/ir.d.ts +112 -0
  70. package/dist/logic/ir.d.ts.map +1 -0
  71. package/dist/logic/ir.js +729 -0
  72. package/dist/operations/autopilot/activation.d.ts +4 -0
  73. package/dist/operations/autopilot/activation.d.ts.map +1 -0
  74. package/dist/operations/autopilot/activation.js +130 -0
  75. package/dist/operations/autopilot/candidate-helpers.d.ts +13 -0
  76. package/dist/operations/autopilot/candidate-helpers.d.ts.map +1 -0
  77. package/dist/operations/autopilot/candidate-helpers.js +55 -0
  78. package/dist/operations/autopilot/candidates.d.ts +4 -0
  79. package/dist/operations/autopilot/candidates.d.ts.map +1 -0
  80. package/dist/operations/autopilot/candidates.js +114 -0
  81. package/dist/operations/autopilot/discovery-evidence.d.ts +10 -0
  82. package/dist/operations/autopilot/discovery-evidence.d.ts.map +1 -0
  83. package/dist/operations/autopilot/discovery-evidence.js +158 -0
  84. package/dist/operations/autopilot/discovery.d.ts +4 -0
  85. package/dist/operations/autopilot/discovery.d.ts.map +1 -0
  86. package/dist/operations/autopilot/discovery.js +100 -0
  87. package/dist/operations/autopilot/generate.d.ts +8 -0
  88. package/dist/operations/autopilot/generate.d.ts.map +1 -0
  89. package/dist/operations/autopilot/generate.js +112 -0
  90. package/dist/operations/autopilot/guidance-actions.d.ts +3 -0
  91. package/dist/operations/autopilot/guidance-actions.d.ts.map +1 -0
  92. package/dist/operations/autopilot/guidance-actions.js +79 -0
  93. package/dist/operations/autopilot/guidance.d.ts +14 -0
  94. package/dist/operations/autopilot/guidance.d.ts.map +1 -0
  95. package/dist/operations/autopilot/guidance.js +124 -0
  96. package/dist/operations/autopilot/markdown-candidates.d.ts +7 -0
  97. package/dist/operations/autopilot/markdown-candidates.d.ts.map +1 -0
  98. package/dist/operations/autopilot/markdown-candidates.js +134 -0
  99. package/dist/operations/autopilot/presentation.d.ts +13 -0
  100. package/dist/operations/autopilot/presentation.d.ts.map +1 -0
  101. package/dist/operations/autopilot/presentation.js +91 -0
  102. package/dist/operations/autopilot/requirement-claims.d.ts +3 -0
  103. package/dist/operations/autopilot/requirement-claims.d.ts.map +1 -0
  104. package/dist/operations/autopilot/requirement-claims.js +48 -0
  105. package/dist/operations/autopilot/types.d.ts +117 -0
  106. package/dist/operations/autopilot/types.d.ts.map +1 -0
  107. package/dist/operations/autopilot/types.js +8 -0
  108. package/dist/operations/modeling/logic-modeling.d.ts +22 -0
  109. package/dist/operations/modeling/logic-modeling.d.ts.map +1 -0
  110. package/dist/operations/modeling/logic-modeling.js +111 -0
  111. package/dist/operations/modeling/model-requirement.d.ts +10 -0
  112. package/dist/operations/modeling/model-requirement.d.ts.map +1 -0
  113. package/dist/operations/modeling/model-requirement.js +164 -0
  114. package/dist/operations/modeling/predicate-applyplan.d.ts +6 -0
  115. package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -0
  116. package/dist/operations/modeling/predicate-applyplan.js +117 -0
  117. package/dist/operations/modeling/predicate-catalog-1.d.ts +3 -0
  118. package/dist/operations/modeling/predicate-catalog-1.d.ts.map +1 -0
  119. package/dist/operations/modeling/predicate-catalog-1.js +200 -0
  120. package/dist/operations/modeling/predicate-catalog-2.d.ts +3 -0
  121. package/dist/operations/modeling/predicate-catalog-2.d.ts.map +1 -0
  122. package/dist/operations/modeling/predicate-catalog-2.js +197 -0
  123. package/dist/operations/modeling/predicate-catalog-3.d.ts +3 -0
  124. package/dist/operations/modeling/predicate-catalog-3.d.ts.map +1 -0
  125. package/dist/operations/modeling/predicate-catalog-3.js +193 -0
  126. package/dist/operations/modeling/predicate-catalog-4.d.ts +3 -0
  127. package/dist/operations/modeling/predicate-catalog-4.d.ts.map +1 -0
  128. package/dist/operations/modeling/predicate-catalog-4.js +149 -0
  129. package/dist/operations/modeling/predicate-catalog.d.ts +5 -0
  130. package/dist/operations/modeling/predicate-catalog.d.ts.map +1 -0
  131. package/dist/operations/modeling/predicate-catalog.js +29 -0
  132. package/dist/operations/modeling/predicate-inference-1.d.ts +16 -0
  133. package/dist/operations/modeling/predicate-inference-1.d.ts.map +1 -0
  134. package/dist/operations/modeling/predicate-inference-1.js +161 -0
  135. package/dist/operations/modeling/predicate-inference-2.d.ts +19 -0
  136. package/dist/operations/modeling/predicate-inference-2.d.ts.map +1 -0
  137. package/dist/operations/modeling/predicate-inference-2.js +169 -0
  138. package/dist/operations/modeling/predicate-inference-3.d.ts +15 -0
  139. package/dist/operations/modeling/predicate-inference-3.d.ts.map +1 -0
  140. package/dist/operations/modeling/predicate-inference-3.js +163 -0
  141. package/dist/operations/modeling/predicate-inference.d.ts +5 -0
  142. package/dist/operations/modeling/predicate-inference.d.ts.map +1 -0
  143. package/dist/operations/modeling/predicate-inference.js +163 -0
  144. package/dist/operations/modeling/predicate-loader.d.ts +10 -0
  145. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -0
  146. package/dist/operations/modeling/predicate-loader.js +94 -0
  147. package/dist/operations/modeling/predicate-ranker.d.ts +3 -0
  148. package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -0
  149. package/dist/operations/modeling/predicate-ranker.js +62 -0
  150. package/dist/operations/modeling/predicate-score-1.d.ts +3 -0
  151. package/dist/operations/modeling/predicate-score-1.d.ts.map +1 -0
  152. package/dist/operations/modeling/predicate-score-1.js +121 -0
  153. package/dist/operations/modeling/predicate-score-2.d.ts +3 -0
  154. package/dist/operations/modeling/predicate-score-2.d.ts.map +1 -0
  155. package/dist/operations/modeling/predicate-score-2.js +122 -0
  156. package/dist/operations/modeling/predicate-score-3.d.ts +3 -0
  157. package/dist/operations/modeling/predicate-score-3.d.ts.map +1 -0
  158. package/dist/operations/modeling/predicate-score-3.js +54 -0
  159. package/dist/operations/modeling/predicate-types.d.ts +64 -0
  160. package/dist/operations/modeling/predicate-types.d.ts.map +1 -0
  161. package/dist/operations/modeling/predicate-types.js +1 -0
  162. package/dist/operations/modeling/predicate-usage-hints-1.d.ts +3 -0
  163. package/dist/operations/modeling/predicate-usage-hints-1.d.ts.map +1 -0
  164. package/dist/operations/modeling/predicate-usage-hints-1.js +211 -0
  165. package/dist/operations/modeling/predicate-usage-hints-2.d.ts +3 -0
  166. package/dist/operations/modeling/predicate-usage-hints-2.d.ts.map +1 -0
  167. package/dist/operations/modeling/predicate-usage-hints-2.js +209 -0
  168. package/dist/operations/modeling/predicate-usage-hints-3.d.ts +3 -0
  169. package/dist/operations/modeling/predicate-usage-hints-3.d.ts.map +1 -0
  170. package/dist/operations/modeling/predicate-usage-hints-3.js +45 -0
  171. package/dist/operations/modeling/predicate-utils.d.ts +23 -0
  172. package/dist/operations/modeling/predicate-utils.d.ts.map +1 -0
  173. package/dist/operations/modeling/predicate-utils.js +187 -0
  174. package/dist/operations/modeling/requirement-applyplan.d.ts +4 -0
  175. package/dist/operations/modeling/requirement-applyplan.d.ts.map +1 -0
  176. package/dist/operations/modeling/requirement-applyplan.js +44 -0
  177. package/dist/operations/modeling/requirement-heuristics.d.ts +4 -0
  178. package/dist/operations/modeling/requirement-heuristics.d.ts.map +1 -0
  179. package/dist/operations/modeling/requirement-heuristics.js +114 -0
  180. package/dist/operations/modeling/requirement-modeler.d.ts +8 -0
  181. package/dist/operations/modeling/requirement-modeler.d.ts.map +1 -0
  182. package/dist/operations/modeling/requirement-modeler.js +70 -0
  183. package/dist/operations/modeling/requirement-types.d.ts +61 -0
  184. package/dist/operations/modeling/requirement-types.d.ts.map +1 -0
  185. package/dist/operations/modeling/requirement-types.js +1 -0
  186. package/dist/operations/modeling/requirement-utils.d.ts +10 -0
  187. package/dist/operations/modeling/requirement-utils.d.ts.map +1 -0
  188. package/dist/operations/modeling/requirement-utils.js +65 -0
  189. package/dist/operations/modeling/suggest-predicates.d.ts +6 -0
  190. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -0
  191. package/dist/operations/modeling/suggest-predicates.js +64 -0
  192. package/dist/operations/mutation/audit.d.ts +6 -0
  193. package/dist/operations/mutation/audit.d.ts.map +1 -0
  194. package/dist/operations/mutation/audit.js +22 -0
  195. package/dist/operations/mutation/contradictions.d.ts +10 -0
  196. package/dist/operations/mutation/contradictions.d.ts.map +1 -0
  197. package/dist/operations/mutation/contradictions.js +40 -0
  198. package/dist/operations/mutation/delete.d.ts +5 -0
  199. package/dist/operations/mutation/delete.d.ts.map +1 -0
  200. package/dist/operations/mutation/delete.js +67 -0
  201. package/dist/operations/mutation/relationships.d.ts +17 -0
  202. package/dist/operations/mutation/relationships.d.ts.map +1 -0
  203. package/dist/operations/mutation/relationships.js +142 -0
  204. package/dist/operations/mutation/save.d.ts +4 -0
  205. package/dist/operations/mutation/save.d.ts.map +1 -0
  206. package/dist/operations/mutation/save.js +14 -0
  207. package/dist/operations/mutation/serialization.d.ts +5 -0
  208. package/dist/operations/mutation/serialization.d.ts.map +1 -0
  209. package/dist/operations/mutation/serialization.js +88 -0
  210. package/dist/operations/mutation/strict-fact.d.ts +4 -0
  211. package/dist/operations/mutation/strict-fact.d.ts.map +1 -0
  212. package/dist/operations/mutation/strict-fact.js +132 -0
  213. package/dist/operations/mutation/symbol-granularity.d.ts +4 -0
  214. package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -0
  215. package/dist/operations/mutation/symbol-granularity.js +109 -0
  216. package/dist/operations/mutation/symbol-refresh.d.ts +10 -0
  217. package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -0
  218. package/dist/operations/mutation/symbol-refresh.js +105 -0
  219. package/dist/operations/mutation/types.d.ts +43 -0
  220. package/dist/operations/mutation/types.d.ts.map +1 -0
  221. package/dist/operations/mutation/types.js +1 -0
  222. package/dist/operations/mutation/upsert.d.ts +5 -0
  223. package/dist/operations/mutation/upsert.d.ts.map +1 -0
  224. package/dist/operations/mutation/upsert.js +103 -0
  225. package/dist/operations/mutation/validate-upsert.d.ts +5 -0
  226. package/dist/operations/mutation/validate-upsert.d.ts.map +1 -0
  227. package/dist/operations/mutation/validate-upsert.js +50 -0
  228. package/dist/operations/mutation/validation.d.ts +5 -0
  229. package/dist/operations/mutation/validation.d.ts.map +1 -0
  230. package/dist/operations/mutation/validation.js +107 -0
  231. package/dist/operations/mutation/warnings.d.ts +4 -0
  232. package/dist/operations/mutation/warnings.d.ts.map +1 -0
  233. package/dist/operations/mutation/warnings.js +17 -0
  234. package/dist/operations/semantic-advisor/analysis-receipt.d.ts +5 -0
  235. package/dist/operations/semantic-advisor/analysis-receipt.d.ts.map +1 -0
  236. package/dist/operations/semantic-advisor/analysis-receipt.js +120 -0
  237. package/dist/operations/semantic-advisor/analyze-prose.d.ts +5 -0
  238. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -0
  239. package/dist/operations/semantic-advisor/analyze-prose.js +693 -0
  240. package/dist/operations/semantic-advisor/clauses.d.ts +10 -0
  241. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -0
  242. package/dist/operations/semantic-advisor/clauses.js +43 -0
  243. package/dist/operations/semantic-advisor/observation-plan.d.ts +3 -0
  244. package/dist/operations/semantic-advisor/observation-plan.d.ts.map +1 -0
  245. package/dist/operations/semantic-advisor/observation-plan.js +31 -0
  246. package/dist/operations/semantic-advisor/predicate-rule.d.ts +14 -0
  247. package/dist/operations/semantic-advisor/predicate-rule.d.ts.map +1 -0
  248. package/dist/operations/semantic-advisor/predicate-rule.js +22 -0
  249. package/dist/operations/semantic-advisor/predicate-rules-core.d.ts +79 -0
  250. package/dist/operations/semantic-advisor/predicate-rules-core.d.ts.map +1 -0
  251. package/dist/operations/semantic-advisor/predicate-rules-core.js +140 -0
  252. package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts +83 -0
  253. package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts.map +1 -0
  254. package/dist/operations/semantic-advisor/predicate-rules-policy.js +150 -0
  255. package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts +48 -0
  256. package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts.map +1 -0
  257. package/dist/operations/semantic-advisor/predicate-rules-product-tail.js +102 -0
  258. package/dist/operations/semantic-advisor/predicate-rules-product.d.ts +71 -0
  259. package/dist/operations/semantic-advisor/predicate-rules-product.d.ts.map +1 -0
  260. package/dist/operations/semantic-advisor/predicate-rules-product.js +133 -0
  261. package/dist/operations/semantic-advisor/prose-coverage-evaluator.d.ts +29 -0
  262. package/dist/operations/semantic-advisor/prose-coverage-evaluator.d.ts.map +1 -0
  263. package/dist/operations/semantic-advisor/prose-coverage-evaluator.js +54 -0
  264. package/dist/operations/semantic-advisor/shared.d.ts +19 -0
  265. package/dist/operations/semantic-advisor/shared.d.ts.map +1 -0
  266. package/dist/operations/semantic-advisor/shared.js +209 -0
  267. package/dist/operations/semantic-advisor/strict-count-rules.d.ts +4 -0
  268. package/dist/operations/semantic-advisor/strict-count-rules.d.ts.map +1 -0
  269. package/dist/operations/semantic-advisor/strict-count-rules.js +62 -0
  270. package/dist/operations/semantic-advisor/strict-rules.d.ts +4 -0
  271. package/dist/operations/semantic-advisor/strict-rules.d.ts.map +1 -0
  272. package/dist/operations/semantic-advisor/strict-rules.js +106 -0
  273. package/dist/operations/semantic-advisor/types.d.ts +195 -0
  274. package/dist/operations/semantic-advisor/types.d.ts.map +1 -0
  275. package/dist/operations/semantic-advisor/types.js +1 -0
  276. package/dist/prolog/codec.d.ts.map +1 -1
  277. package/dist/prolog/codec.js +20 -3
  278. package/dist/prolog.d.ts +5 -0
  279. package/dist/prolog.d.ts.map +1 -1
  280. package/dist/prolog.js +89 -32
  281. package/dist/public/impact/diagnostics.d.ts.map +1 -1
  282. package/dist/public/impact/diagnostics.js +8 -4
  283. package/dist/public/impact/full-kb-quality.d.ts +1 -1
  284. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  285. package/dist/public/impact/full-kb-quality.js +34 -1
  286. package/dist/public/impact/requirement-quality.d.ts.map +1 -1
  287. package/dist/public/impact/requirement-quality.js +6 -23
  288. package/dist/public/operations/catalog.d.ts +986 -0
  289. package/dist/public/operations/catalog.d.ts.map +1 -0
  290. package/dist/public/operations/catalog.js +42 -0
  291. package/dist/public/operations/check-executor.d.ts +21 -0
  292. package/dist/public/operations/check-executor.d.ts.map +1 -0
  293. package/dist/public/operations/check-executor.js +111 -0
  294. package/dist/public/operations/check-format-shared.d.ts +36 -0
  295. package/dist/public/operations/check-format-shared.d.ts.map +1 -0
  296. package/dist/public/operations/check-format-shared.js +107 -0
  297. package/dist/public/operations/check-helpers.d.ts +10 -0
  298. package/dist/public/operations/check-helpers.d.ts.map +1 -0
  299. package/dist/public/operations/check-helpers.js +107 -0
  300. package/dist/public/operations/discovery-entities.d.ts +14 -0
  301. package/dist/public/operations/discovery-entities.d.ts.map +1 -0
  302. package/dist/public/operations/discovery-entities.js +91 -0
  303. package/dist/public/operations/discovery-executors.d.ts +39 -0
  304. package/dist/public/operations/discovery-executors.d.ts.map +1 -0
  305. package/dist/public/operations/discovery-executors.js +101 -0
  306. package/dist/public/operations/index.d.ts +21 -0
  307. package/dist/public/operations/index.d.ts.map +1 -0
  308. package/dist/public/operations/index.js +19 -0
  309. package/dist/public/operations/node-ports.d.ts +15 -0
  310. package/dist/public/operations/node-ports.d.ts.map +1 -0
  311. package/dist/public/operations/node-ports.js +57 -0
  312. package/dist/public/operations/prolog-json.d.ts +5 -0
  313. package/dist/public/operations/prolog-json.d.ts.map +1 -0
  314. package/dist/public/operations/prolog-json.js +44 -0
  315. package/dist/public/operations/runtime-types.d.ts +69 -0
  316. package/dist/public/operations/runtime-types.d.ts.map +1 -0
  317. package/dist/public/operations/runtime-types.js +17 -0
  318. package/dist/public/operations/specs/autopilot.d.ts +82 -0
  319. package/dist/public/operations/specs/autopilot.d.ts.map +1 -0
  320. package/dist/public/operations/specs/autopilot.js +72 -0
  321. package/dist/public/operations/specs/check.d.ts +51 -0
  322. package/dist/public/operations/specs/check.d.ts.map +1 -0
  323. package/dist/public/operations/specs/check.js +65 -0
  324. package/dist/public/operations/specs/discovery.d.ts +94 -0
  325. package/dist/public/operations/specs/discovery.d.ts.map +1 -0
  326. package/dist/public/operations/specs/discovery.js +98 -0
  327. package/dist/public/operations/specs/modeling.d.ts +142 -0
  328. package/dist/public/operations/specs/modeling.d.ts.map +1 -0
  329. package/dist/public/operations/specs/modeling.js +133 -0
  330. package/dist/public/operations/specs/mutation-schemas.d.ts +268 -0
  331. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -0
  332. package/dist/public/operations/specs/mutation-schemas.js +294 -0
  333. package/dist/public/operations/specs/mutation.d.ts +56 -0
  334. package/dist/public/operations/specs/mutation.d.ts.map +1 -0
  335. package/dist/public/operations/specs/mutation.js +44 -0
  336. package/dist/public/operations/specs/reporting.d.ts +185 -0
  337. package/dist/public/operations/specs/reporting.d.ts.map +1 -0
  338. package/dist/public/operations/specs/reporting.js +158 -0
  339. package/dist/public/operations/specs/semantic.d.ts +81 -0
  340. package/dist/public/operations/specs/semantic.d.ts.map +1 -0
  341. package/dist/public/operations/specs/semantic.js +137 -0
  342. package/dist/public/operations/specs/skills.d.ts +70 -0
  343. package/dist/public/operations/specs/skills.d.ts.map +1 -0
  344. package/dist/public/operations/specs/skills.js +107 -0
  345. package/dist/public/operations/specs/sparql.d.ts +39 -0
  346. package/dist/public/operations/specs/sparql.d.ts.map +1 -0
  347. package/dist/public/operations/specs/sparql.js +121 -0
  348. package/dist/public/operations/specs/upsert.d.ts +291 -0
  349. package/dist/public/operations/specs/upsert.d.ts.map +1 -0
  350. package/dist/public/operations/specs/upsert.js +27 -0
  351. package/dist/public/operations/types.d.ts +24 -0
  352. package/dist/public/operations/types.d.ts.map +1 -0
  353. package/dist/public/operations/types.js +1 -0
  354. package/dist/public/schemas/entity.d.ts.map +1 -1
  355. package/dist/public/schemas/entity.js +317 -0
  356. package/dist/public/schemas/relationship.d.ts.map +1 -1
  357. package/dist/public/schemas/relationship.js +1 -0
  358. package/dist/public/skill-system/errors.d.ts +19 -0
  359. package/dist/public/skill-system/errors.d.ts.map +1 -0
  360. package/dist/public/skill-system/errors.js +36 -0
  361. package/dist/public/skill-system/loader.d.ts +9 -0
  362. package/dist/public/skill-system/loader.d.ts.map +1 -0
  363. package/dist/public/skill-system/loader.js +76 -0
  364. package/dist/public/skill-system/paths.d.ts +6 -0
  365. package/dist/public/skill-system/paths.d.ts.map +1 -0
  366. package/dist/public/skill-system/paths.js +25 -0
  367. package/dist/public/skill-system/types.d.ts +15 -0
  368. package/dist/public/skill-system/types.d.ts.map +1 -0
  369. package/dist/public/skill-system/types.js +1 -0
  370. package/dist/public/skill-system/validation.d.ts +10 -0
  371. package/dist/public/skill-system/validation.d.ts.map +1 -0
  372. package/dist/public/skill-system/validation.js +119 -0
  373. package/dist/public/skills/init-kibi/SKILL.md +62 -0
  374. package/dist/public/skills/kibi-freshness/SKILL.md +44 -0
  375. package/dist/public/skills/kibi-traceability/SKILL.md +54 -0
  376. package/dist/public/skills/kibi-usage/SKILL.md +145 -99
  377. package/dist/public/skills/kibi-usage/resources/fact-lanes.md +112 -0
  378. package/dist/public/skills/kibi-usage/resources/logic-ir.md +43 -0
  379. package/dist/public/skills/kibi-usage/resources/operation-access.md +44 -0
  380. package/dist/public/skills/kibi-usage/resources/ui-requirements.md +96 -0
  381. package/dist/public/skills/kibi-usage/resources/workflows.md +41 -3
  382. package/dist/public/skills.d.ts +4 -41
  383. package/dist/public/skills.d.ts.map +1 -1
  384. package/dist/public/skills.js +3 -270
  385. package/dist/public/symbol-granularity.d.ts +9 -0
  386. package/dist/public/symbol-granularity.d.ts.map +1 -1
  387. package/dist/public/symbol-granularity.js +16 -0
  388. package/dist/runtime/cli-runtime.d.ts +3 -0
  389. package/dist/runtime/cli-runtime.d.ts.map +1 -0
  390. package/dist/runtime/cli-runtime.js +96 -0
  391. package/dist/schemas/entity.schema.json +329 -3
  392. package/dist/traceability/staged-diagnostics.d.ts +2 -2
  393. package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
  394. package/dist/traceability/staged-diagnostics.js +17 -10
  395. package/dist/traceability/staged-impact-contract.js +1 -1
  396. package/dist/traceability/staged-symbols-manifest.d.ts +1 -0
  397. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  398. package/dist/traceability/staged-symbols-manifest.js +53 -24
  399. package/dist/traceability/symbol-extract.d.ts.map +1 -1
  400. package/dist/traceability/symbol-extract.js +17 -1
  401. package/dist/traceability/temp-kb.d.ts.map +1 -1
  402. package/dist/traceability/temp-kb.js +47 -1
  403. package/dist/types/entities.d.ts +3 -0
  404. package/dist/types/entities.d.ts.map +1 -1
  405. package/dist/types/relationships.d.ts +1 -1
  406. package/dist/types/relationships.d.ts.map +1 -1
  407. package/dist/utils/rule-registry.d.ts.map +1 -1
  408. package/dist/utils/rule-registry.js +24 -0
  409. package/dist/utils/schema-version.d.ts +1 -1
  410. package/dist/utils/schema-version.js +1 -1
  411. package/package.json +60 -2
  412. package/src/public/impact/diagnostics.ts +18 -11
  413. package/src/public/impact/full-kb-quality.ts +30 -3
  414. package/src/public/impact/requirement-quality.ts +6 -26
  415. package/src/public/operations/catalog.ts +60 -0
  416. package/src/public/operations/check-executor.ts +185 -0
  417. package/src/public/operations/check-format-shared.ts +178 -0
  418. package/src/public/operations/check-helpers.ts +141 -0
  419. package/src/public/operations/discovery-entities.ts +122 -0
  420. package/src/public/operations/discovery-executors.ts +176 -0
  421. package/src/public/operations/index.ts +20 -0
  422. package/src/public/operations/node-ports.ts +78 -0
  423. package/src/public/operations/prolog-json.ts +71 -0
  424. package/src/public/operations/runtime-types.ts +106 -0
  425. package/src/public/operations/specs/autopilot.ts +98 -0
  426. package/src/public/operations/specs/check.ts +75 -0
  427. package/src/public/operations/specs/discovery.ts +126 -0
  428. package/src/public/operations/specs/modeling.ts +174 -0
  429. package/src/public/operations/specs/mutation-schemas.ts +326 -0
  430. package/src/public/operations/specs/mutation.ts +58 -0
  431. package/src/public/operations/specs/reporting.ts +249 -0
  432. package/src/public/operations/specs/semantic.ts +174 -0
  433. package/src/public/operations/specs/skills.ts +142 -0
  434. package/src/public/operations/specs/sparql.ts +149 -0
  435. package/src/public/operations/specs/upsert.ts +40 -0
  436. package/src/public/operations/types.ts +57 -0
  437. package/src/public/schemas/entity.ts +324 -1
  438. package/src/public/schemas/relationship.ts +1 -0
  439. package/src/public/skill-system/errors.ts +38 -0
  440. package/src/public/skill-system/loader.ts +108 -0
  441. package/src/public/skill-system/paths.ts +27 -0
  442. package/src/public/skill-system/types.ts +14 -0
  443. package/src/public/skill-system/validation.ts +175 -0
  444. package/src/public/skills/init-kibi/SKILL.md +62 -0
  445. package/src/public/skills/kibi-freshness/SKILL.md +44 -0
  446. package/src/public/skills/kibi-traceability/SKILL.md +54 -0
  447. package/src/public/skills/kibi-usage/SKILL.md +145 -99
  448. package/src/public/skills/kibi-usage/resources/fact-lanes.md +112 -0
  449. package/src/public/skills/kibi-usage/resources/logic-ir.md +43 -0
  450. package/src/public/skills/kibi-usage/resources/operation-access.md +44 -0
  451. package/src/public/skills/kibi-usage/resources/ui-requirements.md +96 -0
  452. package/src/public/skills/kibi-usage/resources/workflows.md +41 -3
  453. package/src/public/skills.ts +18 -427
  454. package/src/public/symbol-granularity.ts +25 -0
  455. package/src/schemas/entity.schema.json +329 -3
  456. package/src/schemas/relationship.schema.json +1 -0
@@ -1,169 +1,37 @@
1
- /*
2
- Kibi — repo-local, per-branch, queryable long-term memory for software projects
3
- Copyright (C) 2026 Piotr Franczyk
4
-
5
- This program is free software: you can redistribute it and/or modify
6
- it under the terms of the GNU Affero General Public License as published by
7
- the Free Software Foundation, either version 3 of the License, or
8
- (at your option) any later version.
9
-
10
- This program is distributed in the hope that it will be useful,
11
- but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- GNU Affero General Public License for more details.
14
-
15
- You should have received a copy of the GNU Affero General Public License
16
- along with this program. If not, see <https://www.gnu.org/licenses/>.
17
- */
18
- import * as path from "node:path";
19
1
  import Table from "cli-table3";
20
- import { PrologProcess } from "../prolog.js";
21
- import { parseEntityFromBinding, parseEntityFromList, parseListOfLists, parsePrologValue, } from "../prolog/codec.js";
2
+ import { parseListOfLists, parsePrologValue } from "../prolog/codec.js";
3
+ import { VALID_ENTITY_TYPES, executeOperation, querySpec, } from "../public/operations/index.js";
22
4
  import relationshipSchema from "../public/schemas/relationship.js";
23
- import { VALID_ENTITY_TYPES } from "../query/service.js";
24
- import { resolveActiveBranch } from "../utils/branch-resolver.js";
25
- import { safeCleanupProlog } from "../utils/prolog-cleanup.js";
5
+ import { createCliRuntime } from "../runtime/cli-runtime.js";
6
+ import { withAttachedBranchProlog } from "./discovery-shared.js";
26
7
  const REL_TYPES = relationshipSchema.properties.type.enum;
27
- // implements REQ-003
28
8
  export async function queryCommand(type, options) {
29
- let prolog = null;
30
- let attached = false;
9
+ // implements REQ-003, REQ-kibi-operation-interface-parity
10
+ if (!type && !options.source && !options.relationships) {
11
+ console.error("Error: Must specify entity type, --source, or --relationships option");
12
+ return { exitCode: 1 };
13
+ }
14
+ if (type && !VALID_ENTITY_TYPES.some((candidate) => candidate === type)) {
15
+ console.error(`Error: Invalid type '${type}'. Valid types: ${VALID_ENTITY_TYPES.join(", ")}`);
16
+ return { exitCode: 1 };
17
+ }
31
18
  try {
32
- prolog = new PrologProcess({ timeout: 120000 });
33
- await prolog.start();
34
- await prolog.query("set_prolog_flag(answer_write_options, [max_depth(0), spacing(next_argument)])");
35
- let currentBranch;
36
- const branchResult = resolveActiveBranch();
37
- if ("error" in branchResult) {
38
- const isNonGitError = branchResult.code === "NOT_A_GIT_REPO" ||
39
- branchResult.code === "GIT_NOT_AVAILABLE";
40
- if (isNonGitError) {
41
- // For query command, use "main" as default branch when git is not available
42
- // or the current directory is not a git repository. This allows querying
43
- // after init in a non-git directory.
44
- currentBranch = "main";
45
- }
46
- else {
47
- console.error(`Error: Failed to resolve active branch:\n${branchResult.error}`);
48
- await prolog.terminate();
49
- return { exitCode: 1 };
50
- }
51
- }
52
- else {
53
- currentBranch = branchResult.branch;
54
- }
55
- const kbPath = path.join(process.cwd(), `.kb/branches/${currentBranch}`);
56
- const attachResult = await prolog.query(`kb_attach('${kbPath}')`);
57
- if (!attachResult.success) {
58
- await prolog.terminate();
59
- console.error(`Error: Failed to attach KB: ${attachResult.error || "Unknown error"}`);
60
- return { exitCode: 1 };
61
- }
62
- attached = true;
63
- let results = [];
19
+ const limit = Number.parseInt(options.limit || "100", 10);
20
+ const offset = Number.parseInt(options.offset || "0", 10);
64
21
  if (options.relationships) {
65
- const fromId = String(options.relationships);
66
- const safeFromId = fromId.replace(/'/g, "''");
67
- const relTypesList = REL_TYPES.join(", ");
68
- const goal = `findall([Type,From,To], (member(Type, [${relTypesList}]), kb_relationship(Type, '${safeFromId}', To), From='${safeFromId}'), Results)`;
69
- const queryResult = await prolog.query(goal);
70
- if (queryResult.success && queryResult.bindings.Results) {
71
- const rows = parseListOfLists(queryResult.bindings.Results);
72
- const parsed = rows
73
- .filter((r) => r.length >= 3)
74
- .flatMap((r) => {
75
- const [typeValue, fromValue, toValue] = r;
76
- if (typeValue === undefined ||
77
- fromValue === undefined ||
78
- toValue === undefined) {
79
- return [];
80
- }
81
- return [
82
- {
83
- type: parsePrologValue(typeValue),
84
- from: parsePrologValue(fromValue),
85
- to: parsePrologValue(toValue),
86
- },
87
- ];
88
- });
89
- results = parsed.filter((rel) => rel &&
90
- typeof rel.type === "string" &&
91
- typeof rel.from === "string" &&
92
- typeof rel.to === "string" &&
93
- rel.from === fromId &&
94
- REL_TYPES.includes(rel.type));
95
- }
96
- }
97
- else if (type || options.source) {
98
- if (type && !VALID_ENTITY_TYPES.includes(type)) {
99
- console.error(`Error: Invalid type '${type}'. Valid types: ${VALID_ENTITY_TYPES.join(", ")}`);
100
- return { exitCode: 1 };
101
- }
102
- let goal;
103
- if (options.source) {
104
- const safeSource = String(options.source).replace(/'/g, "\\'");
105
- if (type) {
106
- goal = `findall([Id,'${type}',Props], (kb_entities_by_source('${safeSource}', SourceIds), member(Id, SourceIds), kb_entity(Id, '${type}', Props)), Results)`;
107
- }
108
- else {
109
- goal = `findall([Id,Type,Props], (kb_entities_by_source('${safeSource}', SourceIds), member(Id, SourceIds), kb_entity(Id, Type, Props)), Results)`;
110
- }
111
- }
112
- else if (options.id) {
113
- const safeId = String(options.id).replace(/'/g, "''");
114
- goal = `kb_entity('${safeId}', '${type}', Props), Id = '${safeId}', Type = '${type}', Result = [Id, Type, Props]`;
115
- }
116
- else if (options.tag) {
117
- const safeTag = String(options.tag).replace(/'/g, "''");
118
- goal = `findall([Id,'${type}',Props], (kb_entity(Id, '${type}', Props), memberchk(tags=Tags, Props), member('${safeTag}', Tags)), Results)`;
119
- }
120
- else {
121
- goal = `findall([Id,'${type}',Props], kb_entity(Id, '${type}', Props), Results)`;
122
- }
123
- const queryResult = await prolog.query(goal);
124
- if (queryResult.success) {
125
- if (options.id) {
126
- // Single entity query
127
- if (queryResult.bindings.Result) {
128
- const entity = parseEntityFromBinding(queryResult.bindings.Result);
129
- results = [entity];
130
- }
131
- }
132
- else {
133
- // Multiple entities query
134
- if (queryResult.bindings.Results) {
135
- const entitiesData = parseListOfLists(queryResult.bindings.Results);
136
- for (const data of entitiesData) {
137
- const entity = parseEntityFromList(data);
138
- results.push(entity);
139
- }
140
- }
141
- }
142
- }
143
- }
144
- else {
145
- console.error("Error: Must specify entity type, --source, or --relationships option");
146
- return { exitCode: 1 };
147
- }
148
- const limit = Number.parseInt(options.limit || "100");
149
- const offset = Number.parseInt(options.offset || "0");
150
- const paginated = results.slice(offset, offset + limit);
151
- if (!paginated || paginated.length === 0) {
152
- if (options.format === "json") {
153
- console.log("[]");
154
- }
155
- else {
156
- console.log("No entities found");
157
- }
22
+ const relationships = await queryRelationships(options.relationships);
23
+ printRelationships(relationships.slice(offset, offset + limit), options.format);
158
24
  return { exitCode: 0 };
159
25
  }
160
- // Format output
161
- if (options.format === "table") {
162
- outputTable(paginated, Boolean(options.relationships));
163
- }
164
- else {
165
- console.log(JSON.stringify(paginated, null, 2));
166
- }
26
+ const result = await executeOperation(createCliRuntime(), querySpec, {
27
+ ...(type !== undefined ? { type } : {}),
28
+ ...(options.id !== undefined ? { id: options.id } : {}),
29
+ ...(options.tag !== undefined ? { tags: [options.tag] } : {}),
30
+ ...(options.source !== undefined ? { sourceFile: options.source } : {}),
31
+ limit,
32
+ offset,
33
+ }, { workspaceRoot: process.cwd() });
34
+ printEntities(result.structuredContent?.entities ?? [], options.format);
167
35
  return { exitCode: 0 };
168
36
  }
169
37
  catch (error) {
@@ -171,57 +39,83 @@ export async function queryCommand(type, options) {
171
39
  console.error(`Error: ${message}`);
172
40
  return { exitCode: 1 };
173
41
  }
174
- finally {
175
- await safeCleanupProlog(prolog);
42
+ }
43
+ async function queryRelationships(fromId) {
44
+ return withAttachedBranchProlog(async (prolog) => {
45
+ const safeFromId = fromId.replaceAll("'", "''");
46
+ const goal = `findall([Type,From,To], (member(Type, [${REL_TYPES.join(", ")}]), kb_relationship(Type, '${safeFromId}', To), From='${safeFromId}'), Results)`;
47
+ const result = await prolog.query(goal);
48
+ const binding = result.bindings.Results;
49
+ if (!result.success || !binding)
50
+ return [];
51
+ return parseListOfLists(binding).flatMap((row) => {
52
+ const [typeValue, fromValue, toValue] = row;
53
+ if (!typeValue || !fromValue || !toValue)
54
+ return [];
55
+ const type = parsePrologValue(typeValue);
56
+ const from = parsePrologValue(fromValue);
57
+ const to = parsePrologValue(toValue);
58
+ if (typeof type !== "string" ||
59
+ typeof from !== "string" ||
60
+ typeof to !== "string" ||
61
+ from !== fromId ||
62
+ !REL_TYPES.includes(type)) {
63
+ return [];
64
+ }
65
+ return [{ type, from, to }];
66
+ });
67
+ });
68
+ }
69
+ function printRelationships(items, format) {
70
+ if (items.length === 0) {
71
+ console.log(format === "json" ? "[]" : "No entities found");
72
+ return;
73
+ }
74
+ if (format !== "table") {
75
+ console.log(JSON.stringify(items, null, 2));
76
+ return;
176
77
  }
78
+ const table = new Table({
79
+ head: ["Type", "From", "To"],
80
+ colWidths: [20, 18, 18],
81
+ });
82
+ for (const item of items) {
83
+ table.push([
84
+ item.type || "N/A",
85
+ item.from.substring(0, 16) || "N/A",
86
+ item.to.substring(0, 16) || "N/A",
87
+ ]);
88
+ }
89
+ console.log(table.toString());
177
90
  }
178
- /**
179
- * Output results as a formatted table.
180
- */
181
- function outputTable(items, isRelationships) {
91
+ function printEntities(items, format) {
182
92
  if (items.length === 0) {
183
- console.log("No entities found.");
93
+ console.log(format === "json" ? "[]" : "No entities found");
184
94
  return;
185
95
  }
186
- if (isRelationships) {
187
- const table = new Table({
188
- head: ["Type", "From", "To"],
189
- colWidths: [20, 18, 18],
190
- });
191
- for (const item of items) {
192
- const rel = item;
193
- table.push([
194
- rel.type || "N/A",
195
- rel.from.substring(0, 16) || "N/A",
196
- rel.to.substring(0, 16) || "N/A",
197
- ]);
198
- }
199
- console.log(table.toString());
96
+ if (format !== "table") {
97
+ console.log(JSON.stringify(items, null, 2));
98
+ return;
200
99
  }
201
- else {
202
- const table = new Table({
203
- head: ["ID", "Type", "Title", "Status", "Tags"],
204
- colWidths: [18, 10, 40, 12, 30],
205
- });
206
- for (const entity of items) {
207
- const record = entity;
208
- const id = typeof record.id === "string" ? record.id : "N/A";
209
- const entityType = typeof record.type === "string" ? record.type : "N/A";
210
- const title = typeof record.title === "string" ? record.title : "N/A";
211
- const status = typeof record.status === "string" ? record.status : "N/A";
212
- const tags = Array.isArray(record.tags)
213
- ? record.tags
214
- .filter((tag) => typeof tag === "string")
215
- .join(", ")
216
- : "";
217
- table.push([
218
- id.substring(0, 16),
219
- entityType,
220
- title.substring(0, 38),
221
- status,
222
- tags.substring(0, 28),
223
- ]);
224
- }
225
- console.log(table.toString());
100
+ const table = new Table({
101
+ head: ["ID", "Type", "Title", "Status", "Tags"],
102
+ colWidths: [18, 10, 40, 12, 30],
103
+ });
104
+ for (const item of items) {
105
+ const id = typeof item.id === "string" ? item.id : "N/A";
106
+ const entityType = typeof item.type === "string" ? item.type : "N/A";
107
+ const title = typeof item.title === "string" ? item.title : "N/A";
108
+ const status = typeof item.status === "string" ? item.status : "N/A";
109
+ const tags = Array.isArray(item.tags)
110
+ ? item.tags.filter((tag) => typeof tag === "string").join(", ")
111
+ : "";
112
+ table.push([
113
+ id.substring(0, 16),
114
+ entityType,
115
+ title.substring(0, 38),
116
+ status,
117
+ tags.substring(0, 28),
118
+ ]);
226
119
  }
120
+ console.log(table.toString());
227
121
  }
@@ -1,8 +1,8 @@
1
1
  interface SearchOptions {
2
- type?: string;
3
- format?: "json" | "table";
4
- limit?: string;
5
- offset?: string;
2
+ readonly type?: string;
3
+ readonly format?: "json" | "table";
4
+ readonly limit?: string;
5
+ readonly offset?: string;
6
6
  }
7
7
  export declare function searchCommand(query: string | undefined, options: SearchOptions): Promise<void>;
8
8
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAQA,UAAU,aAAa;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAmCf"}
@@ -1,38 +1,25 @@
1
- import { VALID_ENTITY_TYPES, queryEntities } from "../query/service.js";
2
- import { rankEntities } from "../search-ranking.js";
3
- import { printDiscoveryResult, withAttachedBranchProlog, } from "./discovery-shared.js";
4
- // implements REQ-mcp-search-discovery, REQ-003
1
+ import { VALID_ENTITY_TYPES, executeOperation, searchSpec, } from "../public/operations/index.js";
2
+ import { createCliRuntime } from "../runtime/cli-runtime.js";
3
+ import { printDiscoveryResult } from "./discovery-shared.js";
5
4
  export async function searchCommand(query, options) {
5
+ // implements REQ-003, REQ-kibi-operation-interface-parity
6
6
  if (!query?.trim()) {
7
7
  console.error("Error: search query is required");
8
8
  process.exitCode = 1;
9
9
  return;
10
10
  }
11
- if (options.type && !VALID_ENTITY_TYPES.includes(options.type)) {
11
+ if (options.type &&
12
+ !VALID_ENTITY_TYPES.some((candidate) => candidate === options.type)) {
12
13
  console.error(`Error: invalid type '${options.type}'. Valid types: ${VALID_ENTITY_TYPES.join(", ")}`);
13
14
  process.exitCode = 1;
14
15
  return;
15
16
  }
16
- await withAttachedBranchProlog(async (prolog) => {
17
- const limit = Number.parseInt(options.limit || "20", 10);
18
- const offset = Number.parseInt(options.offset || "0", 10);
19
- const result = await executeSearch(prolog, query, options.type, limit, offset);
20
- printDiscoveryResult(options.format, result, buildSearchText(query, result));
21
- });
22
- }
23
- async function executeSearch(prolog, query, type, limit, offset) {
24
- const entitiesResult = await queryEntities(prolog, {
25
- ...(type !== undefined ? { type } : {}),
26
- limit: 100000,
27
- offset: 0,
28
- });
29
- const matches = await rankEntities(entitiesResult.entities, query, process.cwd());
30
- const paginated = matches.slice(offset, offset + limit);
31
- return { results: paginated, count: matches.length };
32
- }
33
- function buildSearchText(query, result) {
34
- if (result.count === 0) {
35
- return `No search results for '${query}'.`;
36
- }
37
- return `Found ${result.count} search results for '${query}'. Showing ${result.results.length}: ${result.results.map((match) => match.entity.id).join(", ")}`;
17
+ const result = await executeOperation(createCliRuntime(), searchSpec, {
18
+ query,
19
+ ...(options.type !== undefined ? { type: options.type } : {}),
20
+ limit: Number.parseInt(options.limit || "20", 10),
21
+ offset: Number.parseInt(options.offset || "0", 10),
22
+ }, { workspaceRoot: process.cwd() });
23
+ const structured = result.structuredContent ?? { results: [], count: 0 };
24
+ printDiscoveryResult(options.format, structured, result.content[0]?.text ?? `No search results for '${query}'.`);
38
25
  }
@@ -1,5 +1,5 @@
1
1
  interface StatusOptions {
2
- format?: "json" | "table";
2
+ readonly format?: "json" | "table";
3
3
  }
4
4
  export declare function statusCommand(options: StatusOptions): Promise<void>;
5
5
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAOA,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AAGD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBzE"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACpC;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAazE"}
@@ -1,9 +1,8 @@
1
- import { printDiscoveryResult, resolveCurrentKbPath, runJsonModuleQuery, withPrologProcess, } from "./discovery-shared.js";
2
- // implements REQ-002, REQ-003
1
+ import { executeOperation, statusSpec } from "../public/operations/index.js";
2
+ import { createCliRuntime } from "../runtime/cli-runtime.js";
3
+ import { printDiscoveryResult } from "./discovery-shared.js";
3
4
  export async function statusCommand(options) {
4
- await withPrologProcess(async (prolog) => {
5
- const kbPath = await resolveCurrentKbPath();
6
- const result = await runJsonModuleQuery(prolog, "status.pl", "status:kb_status_json(JsonString)", "status query failed", kbPath);
7
- printDiscoveryResult(options.format, result, `Branch ${result.branch} is ${result.syncState} (dirty=${result.dirty})`);
8
- });
5
+ // implements REQ-003, REQ-kibi-operation-interface-parity
6
+ const result = await executeOperation(createCliRuntime(), statusSpec, {}, { workspaceRoot: process.cwd() });
7
+ printDiscoveryResult(options.format, result.structuredContent, result.content[0]?.text ?? "Status unavailable");
9
8
  }
@@ -2,6 +2,7 @@ import { existsSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { dump as dumpYAML, load as parseYAML } from "js-yaml";
3
3
  import { writeCoordinateArtifact } from "../../extractors/symbol-coordinates.js";
4
4
  import { type ManifestSymbolEntry, enrichSymbolCoordinates } from "../../extractors/symbols-coordinator.js";
5
+ import { COARSE_GRANULARITY_REASONS } from "../../public/symbol-granularity.js";
5
6
  import { resolveSymbolsManifestPaths } from "../../utils/manifest-paths.js";
6
7
  interface ManifestDeps {
7
8
  dumpYAML: typeof dumpYAML;
@@ -13,11 +14,21 @@ interface ManifestDeps {
13
14
  writeCoordinateArtifact: typeof writeCoordinateArtifact;
14
15
  resolveSymbolsManifestPaths: typeof resolveSymbolsManifestPaths;
15
16
  }
16
- export declare const SYMBOLS_MANIFEST_COMMENT_BLOCK = "# symbols.yaml\n# AUTHORED fields (edit freely):\n# id, title, sourceFile, links, status, tags, owner, priority\n# GENERATED fields (never edit manually \u2014 overwritten by kibi sync and kb.symbols.refresh):\n# sourceLine, sourceColumn, sourceEndLine, sourceEndColumn\n# Run `kibi sync` or call the `kb.symbols.refresh` MCP tool to refresh coordinates.\n";
17
+ export declare const SYMBOLS_MANIFEST_COMMENT_BLOCK = "# symbols.yaml\n# AUTHORED fields (edit freely):\n# id, title, sourceFile, links, status, tags, owner, priority\n# Generated coordinates are stored separately in symbol-coordinates.yaml.\n# Run `kibi sync --refresh-symbol-coordinates` to refresh them.\n";
18
+ /**
19
+ * Coarse symbol anchors for which per-symbol coordinates are not expected.
20
+ *
21
+ * Test-suite, module-level-behavior, and config-artifact symbols represent a
22
+ * whole file or configuration unit, and `extractor-miss` explicitly documents
23
+ * that the extractor cannot locate a declaration. These entries legitimately
24
+ * carry no generated coordinates, so coordinate refresh counts them as
25
+ * unchanged instead of flagging them as failures.
26
+ */
27
+ export { COARSE_GRANULARITY_REASONS };
28
+ export declare function isCoarseGranularityAnchor(entry: ManifestSymbolEntry): boolean;
17
29
  export declare function refreshManifestCoordinates(manifestPath: string, workspaceRoot: string, deps?: Partial<ManifestDeps> & {
18
30
  refreshSymbolCoordinates?: boolean;
19
31
  }): Promise<void>;
20
32
  export declare function hasAllGeneratedCoordinates(entry: ManifestSymbolEntry): boolean;
21
33
  export declare function isEligibleForCoordinateRefresh(sourceFile: string | undefined, workspaceRoot: string, deps?: Partial<ManifestDeps>): boolean;
22
- export {};
23
34
  //# sourceMappingURL=manifest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/manifest.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAEL,uBAAuB,EACxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,KAAK,mBAAmB,EACxB,uBAAuB,EACxB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,UAAU,YAAY;IACpB,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,2BAA2B,EAAE,OAAO,2BAA2B,CAAC;CACjE;AAgBD,eAAO,MAAM,8BAA8B,6WAM1C,CAAC;AAoBF,wBAAsB,0BAA0B,CAE9C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAAE,wBAAwB,CAAC,EAAE,OAAO,CAAA;CAAE,GACpE,OAAO,CAAC,IAAI,CAAC,CA0If;AAED,wBAAgB,0BAA0B,CAExC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAOT;AAED,wBAAgB,8BAA8B,CAE5C,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC3B,OAAO,CAUT"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/manifest.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAEL,uBAAuB,EACxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,KAAK,mBAAmB,EACxB,uBAAuB,EACxB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,0BAA0B,EAE3B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,UAAU,YAAY;IACpB,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,2BAA2B,EAAE,OAAO,2BAA2B,CAAC;CACjE;AAgBD,eAAO,MAAM,8BAA8B,oQAK1C,CAAC;AAwBF;;;;;;;;GAQG;AACH,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAEtC,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAG7E;AAED,wBAAsB,0BAA0B,CAE9C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAAE,wBAAwB,CAAC,EAAE,OAAO,CAAA;CAAE,GACpE,OAAO,CAAC,IAAI,CAAC,CAuIf;AAED,wBAAgB,0BAA0B,CAExC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAOT;AAED,wBAAgB,8BAA8B,CAE5C,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC3B,OAAO,CAUT"}
@@ -20,6 +20,7 @@ import * as path from "node:path";
20
20
  import { dump as dumpYAML, load as parseYAML } from "js-yaml";
21
21
  import { writeCoordinateArtifact, } from "../../extractors/symbol-coordinates.js";
22
22
  import { enrichSymbolCoordinates, } from "../../extractors/symbols-coordinator.js";
23
+ import { COARSE_GRANULARITY_REASONS, isCoarseGranularityReason, } from "../../public/symbol-granularity.js";
23
24
  import { resolveSymbolsManifestPaths } from "../../utils/manifest-paths.js";
24
25
  function resolveDeps(overrides) {
25
26
  return {
@@ -37,9 +38,8 @@ function resolveDeps(overrides) {
37
38
  export const SYMBOLS_MANIFEST_COMMENT_BLOCK = `# symbols.yaml
38
39
  # AUTHORED fields (edit freely):
39
40
  # id, title, sourceFile, links, status, tags, owner, priority
40
- # GENERATED fields (never edit manually — overwritten by kibi sync and kb.symbols.refresh):
41
- # sourceLine, sourceColumn, sourceEndLine, sourceEndColumn
42
- # Run \`kibi sync\` or call the \`kb.symbols.refresh\` MCP tool to refresh coordinates.
41
+ # Generated coordinates are stored separately in symbol-coordinates.yaml.
42
+ # Run \`kibi sync --refresh-symbol-coordinates\` to refresh them.
43
43
  `;
44
44
  const SYMBOL_COORD_EXTENSIONS = new Set([
45
45
  ".ts",
@@ -57,6 +57,24 @@ const GENERATED_COORD_FIELDS = [
57
57
  "sourceEndLine",
58
58
  "sourceEndColumn",
59
59
  ];
60
+ const GENERATED_MANIFEST_FIELDS = new Set([
61
+ ...GENERATED_COORD_FIELDS,
62
+ "coordinatesGeneratedAt",
63
+ ]);
64
+ /**
65
+ * Coarse symbol anchors for which per-symbol coordinates are not expected.
66
+ *
67
+ * Test-suite, module-level-behavior, and config-artifact symbols represent a
68
+ * whole file or configuration unit, and `extractor-miss` explicitly documents
69
+ * that the extractor cannot locate a declaration. These entries legitimately
70
+ * carry no generated coordinates, so coordinate refresh counts them as
71
+ * unchanged instead of flagging them as failures.
72
+ */
73
+ export { COARSE_GRANULARITY_REASONS };
74
+ export function isCoarseGranularityAnchor(entry) {
75
+ const reason = entry.granularity_reason;
76
+ return isCoarseGranularityReason(reason);
77
+ }
60
78
  export async function refreshManifestCoordinates(
61
79
  // implements REQ-003
62
80
  manifestPath, workspaceRoot, deps) {
@@ -108,20 +126,9 @@ manifestPath, workspaceRoot, deps) {
108
126
  console.warn(`Warning: Failed to write symbol-coordinates artifact: ${String(err)}`);
109
127
  }
110
128
  }
111
- // Strip generated fields from symbols.yaml entries only if original had them
112
- const strippedEnriched = enriched.map((current, idx) => {
113
- const prev = before[idx] ?? {};
114
- const out = { ...current };
115
- const originalHadGenerated = GENERATED_COORD_FIELDS.some((f) => prev[f] !== undefined);
116
- if (originalHadGenerated) {
117
- for (const field of GENERATED_COORD_FIELDS) {
118
- delete out[field];
119
- }
120
- }
121
- // Ensure we never write coordinatesGeneratedAt
122
- out.coordinatesGeneratedAt = undefined;
123
- return out;
124
- });
129
+ // Coordinates belong exclusively to the generated artifact. Always strip
130
+ // them from the authored manifest so consecutive refreshes are idempotent.
131
+ const strippedEnriched = enriched.map((current) => Object.fromEntries(Object.entries(current).filter(([field]) => !GENERATED_MANIFEST_FIELDS.has(field))));
125
132
  parsed.symbols = strippedEnriched;
126
133
  let refreshed = 0;
127
134
  let failed = 0;
@@ -135,11 +142,13 @@ manifestPath, workspaceRoot, deps) {
135
142
  refreshed++;
136
143
  continue;
137
144
  }
138
- const eligible = isEligibleForCoordinateRefresh(typeof current.sourceFile === "string"
139
- ? current.sourceFile
140
- : typeof previous.sourceFile === "string"
141
- ? previous.sourceFile
142
- : undefined, workspaceRoot, resolved);
145
+ const coarseAnchor = isCoarseGranularityAnchor(current);
146
+ const eligible = !coarseAnchor &&
147
+ isEligibleForCoordinateRefresh(typeof current.sourceFile === "string"
148
+ ? current.sourceFile
149
+ : typeof previous.sourceFile === "string"
150
+ ? previous.sourceFile
151
+ : undefined, workspaceRoot, resolved);
143
152
  if (eligible && !hasAllGeneratedCoordinates(current)) {
144
153
  failed++;
145
154
  }
@@ -1 +1 @@
1
- {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/persistence.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAEV,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA0ErD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;CACrB;AAmCD,wBAAsB,eAAe,CAEnC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GACrB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CAoFvD;AA6BD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,kBAAkB,EAAE,qBAAqB,EAAE,GAC1C,OAAO,CAAC;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CA+K7D"}
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/persistence.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAEV,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA8GrD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;CACrB;AAmCD,wBAAsB,eAAe,CAEnC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GACrB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CA8FvD;AA6BD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,kBAAkB,EAAE,qBAAqB,EAAE,GAC1C,OAAO,CAAC;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CA+K7D"}
@@ -36,9 +36,31 @@ const STRING_FIELDS = new Set([
36
36
  "valid_from",
37
37
  "valid_to",
38
38
  "canonical_key",
39
+ "claim_key",
40
+ "claim_text",
41
+ "predicate_name",
42
+ "predicate_namespace",
43
+ "rule_hash",
44
+ "rule_schema_id",
45
+ "rule_name",
46
+ "semantic_key",
47
+ ]);
48
+ const NUMBER_FIELDS = new Set([
49
+ "value_int",
50
+ "value_number",
51
+ "predicate_arity",
52
+ "claim_span_start",
53
+ "claim_span_end",
39
54
  ]);
40
- const NUMBER_FIELDS = new Set(["value_int", "value_number"]);
41
55
  const BOOLEAN_FIELDS = new Set(["value_bool", "closed_world"]);
56
+ const STRING_ARRAY_FIELDS = new Set([
57
+ "argument_names",
58
+ "argument_types",
59
+ "argument_descriptions",
60
+ "aliases",
61
+ "examples",
62
+ "predicate_args",
63
+ ]);
42
64
  function getEntityField(entity, field) {
43
65
  // ExtractedEntity declares all fact fields as optional properties, so indexing
44
66
  // via keyof is safe. The cast is confined to this single helper.
@@ -54,6 +76,10 @@ function serializeTypedFactFields(entity) {
54
76
  fields.push(`${field}=${toPrologString(String(value))}`);
55
77
  }
56
78
  }
79
+ const ruleIr = getEntityField(entity, "rule_ir");
80
+ if (ruleIr !== undefined && ruleIr !== null) {
81
+ fields.push(`rule_ir=${toPrologString(JSON.stringify(ruleIr))}`);
82
+ }
57
83
  // Atom fields (possibly unquoted if simple)
58
84
  for (const field of ATOM_FIELDS) {
59
85
  const value = getEntityField(entity, field);
@@ -78,6 +104,12 @@ function serializeTypedFactFields(entity) {
78
104
  fields.push(`${field}=${value}`);
79
105
  }
80
106
  }
107
+ for (const field of STRING_ARRAY_FIELDS) {
108
+ const value = getEntityField(entity, field);
109
+ if (Array.isArray(value)) {
110
+ fields.push(`${field}=[${value.map((item) => toPrologString(String(item))).join(",")}]`);
111
+ }
112
+ }
81
113
  return fields;
82
114
  }
83
115
  function isQueryFailedError(error) {
@@ -147,6 +179,12 @@ prolog, results, entityIds) {
147
179
  props.push(`severity=${toPrologAtom(entity.severity)}`);
148
180
  if (entity.text_ref)
149
181
  props.push(`text_ref=${toPrologString(entity.text_ref)}`);
182
+ if (entity.type === "req" && entity.logic_claims) {
183
+ props.push(`logic_claims=[${entity.logic_claims.map(toPrologAtom).join(",")}]`);
184
+ }
185
+ if (entity.type === "req" && entity.semantic_inventory) {
186
+ props.push(`semantic_inventory=${toPrologString(JSON.stringify(entity.semantic_inventory))}`);
187
+ }
150
188
  if (sourceFile)
151
189
  props.push(`sourceFile=${toPrologString(sourceFile)}`);
152
190
  // Add typed fact fields for fact entities