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
@@ -0,0 +1,249 @@
1
+ import {
2
+ runOperationJsonQuery,
3
+ toPrologAtom,
4
+ toPrologList,
5
+ } from "../prolog-json.js";
6
+ import type { OperationContext } from "../runtime-types.js";
7
+ import type { OperationResult, OperationSpec } from "../types.js";
8
+
9
+ const ENTITY_TYPES = [
10
+ "req",
11
+ "scenario",
12
+ "test",
13
+ "adr",
14
+ "flag",
15
+ "event",
16
+ "symbol",
17
+ "fact",
18
+ ] as const;
19
+ const ENTITY_TYPE_SET: ReadonlySet<string> = new Set(ENTITY_TYPES);
20
+
21
+ export type FindGapsInput = {
22
+ readonly type?: string;
23
+ readonly missingRelationships?: readonly string[];
24
+ readonly presentRelationships?: readonly string[];
25
+ readonly tags?: readonly string[];
26
+ readonly sourceFile?: string;
27
+ readonly limit?: number;
28
+ readonly offset?: number;
29
+ };
30
+
31
+ export type FindGapsPayload = {
32
+ readonly rows: readonly Readonly<Record<string, unknown>>[];
33
+ readonly count: number;
34
+ readonly meta?: Readonly<Record<string, unknown>>;
35
+ };
36
+
37
+ export type CoverageInput = {
38
+ readonly by?: "req" | "symbol" | "type";
39
+ readonly tags?: readonly string[];
40
+ readonly includePassing?: boolean;
41
+ readonly includeTransitive?: boolean;
42
+ readonly limit?: number;
43
+ readonly offset?: number;
44
+ };
45
+
46
+ export type CoveragePayload = {
47
+ readonly summary: Readonly<Record<string, number>>;
48
+ readonly rows: readonly Readonly<Record<string, unknown>>[];
49
+ readonly meta?: Readonly<Record<string, unknown>>;
50
+ };
51
+
52
+ export type GraphInput = {
53
+ readonly seedIds: readonly string[];
54
+ readonly relationships?: readonly string[];
55
+ readonly direction?: "outgoing" | "incoming" | "both";
56
+ readonly depth?: number;
57
+ readonly entityTypes?: readonly string[];
58
+ readonly maxNodes?: number;
59
+ readonly maxEdges?: number;
60
+ };
61
+
62
+ export type GraphPayload = {
63
+ readonly nodes: readonly Readonly<Record<string, unknown>>[];
64
+ readonly edges: readonly Readonly<Record<string, unknown>>[];
65
+ readonly truncated: boolean;
66
+ readonly meta?: Readonly<Record<string, unknown>>;
67
+ };
68
+
69
+ function requireProlog(context: OperationContext) {
70
+ if (context.prolog === undefined) {
71
+ throw new Error("Reporting operation requires a Prolog runtime");
72
+ }
73
+ return context.prolog;
74
+ }
75
+
76
+ function validateEntityType(type?: string): void {
77
+ if (type !== undefined && !ENTITY_TYPE_SET.has(type)) {
78
+ throw new Error(
79
+ `Invalid type '${type}'. Valid types: ${ENTITY_TYPES.join(", ")}. Use a single type value, or omit this parameter to query all entities.`,
80
+ );
81
+ }
82
+ }
83
+
84
+ export async function executeFindGaps(
85
+ input: FindGapsInput,
86
+ context: OperationContext,
87
+ ): Promise<OperationResult<FindGapsPayload>> {
88
+ validateEntityType(input.type);
89
+ try {
90
+ const payload = await runOperationJsonQuery<FindGapsPayload>(
91
+ requireProlog(context),
92
+ "discovery.pl",
93
+ `discovery:find_gaps_json(${toPrologAtom(input.type)}, ${toPrologList(input.missingRelationships)}, ${toPrologList(input.presentRelationships)}, ${toPrologList(input.tags)}, ${toPrologAtom(input.sourceFile)}, ${input.limit ?? 100}, ${input.offset ?? 0}, JsonString)`,
94
+ "Find-gaps execution",
95
+ );
96
+ const rows = payload.rows ?? [];
97
+ return {
98
+ content: [
99
+ {
100
+ type: "text",
101
+ text:
102
+ rows.length === 0
103
+ ? "No matching gaps found."
104
+ : `Found ${payload.count ?? rows.length} gap rows. Showing ${rows.length}: ${rows.map((row) => row.id).join(", ")}`,
105
+ },
106
+ ],
107
+ structuredContent: payload,
108
+ };
109
+ } catch (error) {
110
+ const message = error instanceof Error ? error.message : String(error);
111
+ throw new Error(`Find-gaps execution failed: ${message}`);
112
+ }
113
+ }
114
+
115
+ export const findGapsSpec = {
116
+ name: "kb_find_gaps",
117
+ cliName: "find-gaps",
118
+ description:
119
+ "Run bulk missing/present relationship analysis over KB entities. Use for questions like which requirements lack scenarios or tests. No mutation side effects.",
120
+ businessInputSchema: {
121
+ type: "object",
122
+ properties: {
123
+ type: {
124
+ type: "string",
125
+ enum: ENTITY_TYPES,
126
+ },
127
+ missingRelationships: { type: "array", items: { type: "string" } },
128
+ presentRelationships: { type: "array", items: { type: "string" } },
129
+ tags: { type: "array", items: { type: "string" } },
130
+ sourceFile: { type: "string" },
131
+ limit: { type: "integer", default: 100 },
132
+ offset: { type: "integer", default: 0 },
133
+ },
134
+ },
135
+ requiresProlog: true,
136
+ effects: ["kb-read"],
137
+ execute: executeFindGaps,
138
+ } as const satisfies OperationSpec<FindGapsInput, FindGapsPayload>;
139
+
140
+ export async function executeCoverage(
141
+ input: CoverageInput,
142
+ context: OperationContext,
143
+ ): Promise<OperationResult<CoveragePayload>> {
144
+ try {
145
+ const payload = await runOperationJsonQuery<CoveragePayload>(
146
+ requireProlog(context),
147
+ "discovery.pl",
148
+ `discovery:coverage_report_json('${input.by ?? "req"}', ${toPrologList(input.tags)}, ${input.includePassing ?? false}, ${input.includeTransitive ?? true}, ${input.limit ?? 100}, ${input.offset ?? 0}, JsonString)`,
149
+ "Coverage execution",
150
+ );
151
+ const fullyCovered = Number(payload.summary?.fullyCovered ?? 0);
152
+ const total = Number(payload.summary?.total ?? 0);
153
+ return {
154
+ content: [
155
+ {
156
+ type: "text",
157
+ text: `Coverage summary: ${fullyCovered} fully covered out of ${total}.`,
158
+ },
159
+ ],
160
+ structuredContent: payload,
161
+ };
162
+ } catch (error) {
163
+ const message = error instanceof Error ? error.message : String(error);
164
+ throw new Error(`Coverage execution failed: ${message}`);
165
+ }
166
+ }
167
+
168
+ export const coverageSpec = {
169
+ name: "kb_coverage",
170
+ cliName: "coverage",
171
+ description:
172
+ "Generate curated coverage reports for requirements, symbols, or grouped types. Read-only reporting with no mutation side effects.",
173
+ businessInputSchema: {
174
+ type: "object",
175
+ properties: {
176
+ by: { type: "string", enum: ["req", "symbol", "type"], default: "req" },
177
+ tags: { type: "array", items: { type: "string" } },
178
+ includePassing: { type: "boolean", default: false },
179
+ includeTransitive: { type: "boolean", default: true },
180
+ limit: { type: "integer", default: 100 },
181
+ offset: { type: "integer", default: 0 },
182
+ },
183
+ },
184
+ requiresProlog: true,
185
+ effects: ["kb-read"],
186
+ execute: executeCoverage,
187
+ } as const satisfies OperationSpec<CoverageInput, CoveragePayload>;
188
+
189
+ export async function executeGraph(
190
+ input: GraphInput,
191
+ context: OperationContext,
192
+ ): Promise<OperationResult<GraphPayload>> {
193
+ const depth = input.depth ?? 1;
194
+ if (depth < 1 || depth > 5) {
195
+ throw new RangeError("Graph depth must be between 1 and 5");
196
+ }
197
+ try {
198
+ const payload = await runOperationJsonQuery<GraphPayload>(
199
+ requireProlog(context),
200
+ "discovery.pl",
201
+ `discovery:graph_expand_json(${toPrologList(input.seedIds)}, ${toPrologList(input.relationships)}, '${input.direction ?? "outgoing"}', ${depth}, ${toPrologList(input.entityTypes)}, ${input.maxNodes ?? 200}, ${input.maxEdges ?? 500}, JsonString)`,
202
+ "Graph execution",
203
+ );
204
+ const nodes = payload.nodes ?? [];
205
+ const edges = payload.edges ?? [];
206
+ return {
207
+ content: [
208
+ {
209
+ type: "text",
210
+ text:
211
+ nodes.length === 0
212
+ ? "Graph traversal returned no nodes."
213
+ : `Graph traversal returned ${nodes.length} nodes and ${edges.length} edges from ${input.seedIds.join(", ")}.`,
214
+ },
215
+ ],
216
+ structuredContent: payload,
217
+ };
218
+ } catch (error) {
219
+ const message = error instanceof Error ? error.message : String(error);
220
+ throw new Error(`Graph execution failed: ${message}`);
221
+ }
222
+ }
223
+
224
+ export const graphSpec = {
225
+ name: "kb_graph",
226
+ cliName: "graph",
227
+ description:
228
+ "Run bounded graph traversal from one or more seed IDs across curated relationship types. No mutation side effects.",
229
+ businessInputSchema: {
230
+ type: "object",
231
+ required: ["seedIds"],
232
+ properties: {
233
+ seedIds: { type: "array", items: { type: "string" } },
234
+ relationships: { type: "array", items: { type: "string" } },
235
+ direction: {
236
+ type: "string",
237
+ enum: ["outgoing", "incoming", "both"],
238
+ default: "outgoing",
239
+ },
240
+ depth: { type: "integer", default: 1, minimum: 1, maximum: 5 },
241
+ entityTypes: { type: "array", items: { type: "string" } },
242
+ maxNodes: { type: "integer", default: 200 },
243
+ maxEdges: { type: "integer", default: 500 },
244
+ },
245
+ },
246
+ requiresProlog: true,
247
+ effects: ["kb-read"],
248
+ execute: executeGraph,
249
+ } as const satisfies OperationSpec<GraphInput, GraphPayload>;
@@ -0,0 +1,174 @@
1
+ import { InputError } from "../../../cli-errors.js";
2
+ import { analyzeSemanticAdvisorInput } from "../../../operations/semantic-advisor/analyze-prose.js";
3
+ import type {
4
+ SemanticAdvisorArgs,
5
+ SemanticAdvisorOperationResult,
6
+ } from "../../../operations/semantic-advisor/types.js";
7
+ import type { OperationContext } from "../runtime-types.js";
8
+ import type { OperationSpec } from "../types.js";
9
+
10
+ function requiredText(value: unknown): string {
11
+ const text = typeof value === "string" ? value.trim() : "";
12
+ if (!text) {
13
+ throw new InputError(
14
+ "VALIDATION_FAILED",
15
+ "Semantic advisor failed: text must be a non-empty string",
16
+ );
17
+ }
18
+ return text;
19
+ }
20
+
21
+ function optionalString(value: unknown): string | undefined {
22
+ const text = typeof value === "string" ? value.trim() : "";
23
+ return text || undefined;
24
+ }
25
+
26
+ export async function executeSemanticAdvisor(
27
+ args: SemanticAdvisorArgs,
28
+ _context?: OperationContext,
29
+ ): Promise<SemanticAdvisorOperationResult> {
30
+ const text = requiredText(args.text);
31
+ const id = optionalString(args.id) ?? "REQ-SEMANTIC-ADVISOR-PREVIEW";
32
+ const title = optionalString(args.title) ?? text.split(/[.!?]/, 1)[0] ?? text;
33
+ const source = optionalString(args.source) ?? "mcp://kibi/semantic-advisor";
34
+ const result = analyzeSemanticAdvisorInput({
35
+ payload: {
36
+ type: optionalString(args.type) ?? "req",
37
+ id,
38
+ properties: {
39
+ title,
40
+ status: optionalString(args.status) ?? "open",
41
+ source,
42
+ text_ref: text,
43
+ },
44
+ },
45
+ ...(args.clauses !== undefined ? { clauses: args.clauses } : {}),
46
+ ...(args.interpretations !== undefined
47
+ ? { interpretations: args.interpretations }
48
+ : {}),
49
+ });
50
+ return {
51
+ content: [
52
+ {
53
+ type: "text",
54
+ text: `kb_semantic_advisor: ${result.receipt.summary} Suggestions: ${result.receipt.suggestions.map(({ kind }) => kind).join(", ") || "none"}.`,
55
+ },
56
+ ],
57
+ structuredContent: { receipt: result.receipt, warnings: result.warnings },
58
+ };
59
+ }
60
+
61
+ async function executeSemanticAdvisorInput(
62
+ input: Readonly<Record<string, unknown>>,
63
+ context: OperationContext,
64
+ ): Promise<SemanticAdvisorOperationResult> {
65
+ const type = optionalString(input.type);
66
+ const id = optionalString(input.id);
67
+ const title = optionalString(input.title);
68
+ const source = optionalString(input.source);
69
+ const status = optionalString(input.status);
70
+ const clauses = Array.isArray(input.clauses)
71
+ ? input.clauses.filter(
72
+ (value): value is string => typeof value === "string",
73
+ )
74
+ : undefined;
75
+ const interpretations = Array.isArray(input.interpretations)
76
+ ? input.interpretations.filter(
77
+ (
78
+ value,
79
+ ): value is NonNullable<
80
+ SemanticAdvisorArgs["interpretations"]
81
+ >[number] => typeof value === "object" && value !== null,
82
+ )
83
+ : undefined;
84
+ return executeSemanticAdvisor(
85
+ {
86
+ text: requiredText(input.text),
87
+ ...(type ? { type } : {}),
88
+ ...(id ? { id } : {}),
89
+ ...(title ? { title } : {}),
90
+ ...(source ? { source } : {}),
91
+ ...(status ? { status } : {}),
92
+ ...(clauses !== undefined ? { clauses } : {}),
93
+ ...(interpretations !== undefined ? { interpretations } : {}),
94
+ },
95
+ context,
96
+ );
97
+ }
98
+
99
+ export const semanticAdvisorSpec = {
100
+ name: "kb_semantic_advisor",
101
+ cliName: "semantic-advisor",
102
+ description:
103
+ "Analyze requirement prose without mutating the KB and return semantic advisor receipts with modeling suggestions. Use before constructing kb_upsert payloads when prose may contain machine-checkable logic. Suggestions can include strict-property facts, predicate facts, ambiguity observations, or ontology-gap observations; all suggestions are advisory and reviewable.",
104
+ businessInputSchema: {
105
+ type: "object",
106
+ required: ["text"],
107
+ properties: {
108
+ text: {
109
+ type: "string",
110
+ description:
111
+ "Requirement prose to inspect for machine-checkable modeling suggestions.",
112
+ },
113
+ clauses: {
114
+ type: "array",
115
+ items: { type: "string" },
116
+ description:
117
+ "Optional complete list of atomic requirement clauses supplied by the caller. Use this for compound prose so every normative clause receives a stable claim key and independent grounding review.",
118
+ },
119
+ interpretations: {
120
+ type: "array",
121
+ maxItems: 3,
122
+ description:
123
+ "Optional host-LLM typed kibi.logic.v1 interpretations. Kibi validates and canonicalizes them; raw Prolog is not accepted.",
124
+ items: {
125
+ type: "object",
126
+ required: ["claim_key", "claim_text", "ir"],
127
+ properties: {
128
+ claim_key: { type: "string" },
129
+ claim_text: { type: "string" },
130
+ confidence: { type: "number", minimum: 0, maximum: 1 },
131
+ span: { type: "object" },
132
+ ir: { type: "object" },
133
+ },
134
+ },
135
+ },
136
+ type: {
137
+ type: "string",
138
+ enum: [
139
+ "req",
140
+ "scenario",
141
+ "test",
142
+ "adr",
143
+ "flag",
144
+ "event",
145
+ "symbol",
146
+ "fact",
147
+ ],
148
+ default: "req",
149
+ description:
150
+ "Entity type context for analysis. Requirement, domain-fact, and supporting prose all receive a proposition ledger; only requirements receive deterministic modeling suggestions.",
151
+ },
152
+ id: {
153
+ type: "string",
154
+ description:
155
+ "Optional requirement ID used for deterministic draft relationship guidance.",
156
+ },
157
+ title: {
158
+ type: "string",
159
+ description: "Optional requirement title for draft apply plans.",
160
+ },
161
+ source: {
162
+ type: "string",
163
+ description: "Optional provenance for draft suggestions.",
164
+ },
165
+ status: {
166
+ type: "string",
167
+ description: "Optional requirement status for draft suggestions.",
168
+ },
169
+ },
170
+ },
171
+ requiresProlog: false,
172
+ effects: ["local-read"],
173
+ execute: executeSemanticAdvisorInput,
174
+ } as const satisfies OperationSpec;
@@ -0,0 +1,142 @@
1
+ import { createHash } from "node:crypto";
2
+ import {
3
+ type SkillManifest,
4
+ listBundledSkills,
5
+ loadBundledSkill,
6
+ readBundledSkillResource,
7
+ } from "../../skills.js";
8
+ import type { OperationContext } from "../runtime-types.js";
9
+ import type { OperationResult, OperationSpec } from "../types.js";
10
+
11
+ function assertNonEmptyString(value: string, field: string): void {
12
+ if (typeof value !== "string" || value.trim() === "") {
13
+ throw new Error(`${field} must be a non-empty string`);
14
+ }
15
+ }
16
+
17
+ async function executeSkillsList(
18
+ _input: Readonly<Record<string, unknown>>,
19
+ _context: OperationContext,
20
+ ): Promise<OperationResult<{ readonly skills: readonly SkillManifest[] }>> {
21
+ const skills = listBundledSkills();
22
+ const ids = skills.map((skill) => skill.id).join(", ") || "none";
23
+ return {
24
+ content: [
25
+ { type: "text", text: `Found ${skills.length} bundled skills: ${ids}` },
26
+ ],
27
+ structuredContent: { skills },
28
+ };
29
+ }
30
+
31
+ async function executeSkillsLoad(
32
+ input: Readonly<Record<string, unknown>>,
33
+ _context: OperationContext,
34
+ ): Promise<
35
+ OperationResult<{
36
+ readonly metadata: SkillManifest;
37
+ readonly body: string;
38
+ readonly resources: readonly string[];
39
+ readonly contentHash: string;
40
+ readonly sourceType: "bundled";
41
+ }>
42
+ > {
43
+ const id = typeof input.id === "string" ? input.id : "";
44
+ assertNonEmptyString(id, "id");
45
+ const bundle = loadBundledSkill(id);
46
+ const resources = bundle.manifest.resources ?? [];
47
+ const contentHash = createHash("sha256")
48
+ .update(bundle.body, "utf8")
49
+ .digest("hex");
50
+ const resourceList = resources.length === 0 ? "none" : resources.join(", ");
51
+ return {
52
+ content: [
53
+ {
54
+ type: "text",
55
+ text: `Loaded bundled skill ${bundle.manifest.id} with ${resources.length} resources: ${resourceList}`,
56
+ },
57
+ ],
58
+ structuredContent: {
59
+ metadata: bundle.manifest,
60
+ body: bundle.body,
61
+ resources,
62
+ contentHash,
63
+ sourceType: "bundled",
64
+ },
65
+ };
66
+ }
67
+
68
+ async function executeSkillsRead(
69
+ input: Readonly<Record<string, unknown>>,
70
+ _context: OperationContext,
71
+ ): Promise<OperationResult<{ readonly content: string }>> {
72
+ const id = typeof input.id === "string" ? input.id : "";
73
+ const resource = typeof input.resource === "string" ? input.resource : "";
74
+ assertNonEmptyString(id, "id");
75
+ assertNonEmptyString(resource, "resource");
76
+ const resourceContent = readBundledSkillResource(id, resource);
77
+ return {
78
+ content: [
79
+ {
80
+ type: "text",
81
+ text: `Read bundled skill resource ${id}/${resource}`,
82
+ },
83
+ ],
84
+ structuredContent: { content: resourceContent },
85
+ };
86
+ }
87
+
88
+ export const skillsListSpec = {
89
+ name: "kb_skills_list",
90
+ cliName: "skills list",
91
+ description:
92
+ "List bundled Kibi agent skills available for progressive disclosure. Read-only; does not mutate the KB or require Prolog.",
93
+ businessInputSchema: { type: "object", properties: {} },
94
+ requiresProlog: false,
95
+ effects: ["local-read"],
96
+ execute: executeSkillsList,
97
+ } as const satisfies OperationSpec;
98
+
99
+ export const skillsLoadSpec = {
100
+ name: "kb_skills_load",
101
+ cliName: "skills load",
102
+ description:
103
+ "Load a bundled Kibi agent skill by ID, returning its manifest metadata, Markdown body, declared resources, content hash, and source type. Read-only; does not execute scripts or require Prolog.",
104
+ businessInputSchema: {
105
+ type: "object",
106
+ required: ["id"],
107
+ properties: {
108
+ id: {
109
+ type: "string",
110
+ description: "Bundled skill ID to load. Example: 'kibi-usage'.",
111
+ },
112
+ },
113
+ },
114
+ requiresProlog: false,
115
+ effects: ["local-read"],
116
+ execute: executeSkillsLoad,
117
+ } as const satisfies OperationSpec;
118
+
119
+ export const skillsReadSpec = {
120
+ name: "kb_skills_read",
121
+ cliName: "skills read",
122
+ description:
123
+ "Read a declared resource from a bundled Kibi agent skill. Resource paths are restricted to the skill manifest; arbitrary file paths are not exposed. Read-only; does not require Prolog.",
124
+ businessInputSchema: {
125
+ type: "object",
126
+ required: ["id", "resource"],
127
+ properties: {
128
+ id: {
129
+ type: "string",
130
+ description: "Bundled skill ID. Example: 'kibi-usage'.",
131
+ },
132
+ resource: {
133
+ type: "string",
134
+ description:
135
+ "Manifest-declared resource path to read. Example: 'resources/workflows.md'.",
136
+ },
137
+ },
138
+ },
139
+ requiresProlog: false,
140
+ effects: ["local-read"],
141
+ execute: executeSkillsRead,
142
+ } as const satisfies OperationSpec;