kibi-cli 0.18.1 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (539) hide show
  1. package/dist/cli-json-command.d.ts +1 -2
  2. package/dist/cli-json-command.d.ts.map +1 -1
  3. package/dist/cli-json-command.js +2 -34
  4. package/dist/cli-operation-loader.d.ts +3 -0
  5. package/dist/cli-operation-loader.d.ts.map +1 -0
  6. package/dist/cli-operation-loader.js +91 -0
  7. package/dist/cli-operation-metadata.d.ts +94 -0
  8. package/dist/cli-operation-metadata.d.ts.map +1 -0
  9. package/dist/cli-operation-metadata.js +121 -0
  10. package/dist/cli-protocol.d.ts +1 -1
  11. package/dist/cli-protocol.d.ts.map +1 -1
  12. package/dist/cli-protocol.js +42 -11
  13. package/dist/cli-register-foundation.d.ts.map +1 -1
  14. package/dist/cli-register-foundation.js +28 -19
  15. package/dist/cli-register-json.d.ts +3 -0
  16. package/dist/cli-register-json.d.ts.map +1 -0
  17. package/dist/cli-register-json.js +35 -0
  18. package/dist/cli-register-maintenance.d.ts.map +1 -1
  19. package/dist/cli-register-maintenance.js +60 -13
  20. package/dist/cli-register-reporting.d.ts.map +1 -1
  21. package/dist/cli-register-reporting.js +23 -14
  22. package/dist/cli-register-skills.d.ts.map +1 -1
  23. package/dist/cli-register-skills.js +8 -6
  24. package/dist/cli-register-verification.d.ts +3 -0
  25. package/dist/cli-register-verification.d.ts.map +1 -0
  26. package/dist/cli-register-verification.js +16 -0
  27. package/dist/cli.d.ts.map +1 -1
  28. package/dist/cli.js +3 -1
  29. package/dist/commands/aggregated-checks.d.ts +1 -2
  30. package/dist/commands/aggregated-checks.d.ts.map +1 -1
  31. package/dist/commands/aggregated-checks.js +14 -9
  32. package/dist/commands/branch.d.ts +36 -0
  33. package/dist/commands/branch.d.ts.map +1 -1
  34. package/dist/commands/branch.js +371 -40
  35. package/dist/commands/check.d.ts.map +1 -1
  36. package/dist/commands/check.js +48 -77
  37. package/dist/commands/coverage.js +1 -1
  38. package/dist/commands/discovery-shared.d.ts +2 -1
  39. package/dist/commands/discovery-shared.d.ts.map +1 -1
  40. package/dist/commands/discovery-shared.js +38 -25
  41. package/dist/commands/doctor.d.ts +4 -1
  42. package/dist/commands/doctor.d.ts.map +1 -1
  43. package/dist/commands/doctor.js +259 -24
  44. package/dist/commands/engine.d.ts +8 -0
  45. package/dist/commands/engine.d.ts.map +1 -0
  46. package/dist/commands/engine.js +103 -0
  47. package/dist/commands/gaps.js +1 -1
  48. package/dist/commands/gc.d.ts +5 -2
  49. package/dist/commands/gc.d.ts.map +1 -1
  50. package/dist/commands/gc.js +140 -71
  51. package/dist/commands/github-init.d.ts +56 -0
  52. package/dist/commands/github-init.d.ts.map +1 -0
  53. package/dist/commands/github-init.js +310 -0
  54. package/dist/commands/graph.js +1 -1
  55. package/dist/commands/init-helpers.d.ts +1 -1
  56. package/dist/commands/init-helpers.d.ts.map +1 -1
  57. package/dist/commands/init-helpers.js +73 -25
  58. package/dist/commands/init.d.ts +2 -0
  59. package/dist/commands/init.d.ts.map +1 -1
  60. package/dist/commands/init.js +79 -24
  61. package/dist/commands/legacy-storage-migration.d.ts +54 -0
  62. package/dist/commands/legacy-storage-migration.d.ts.map +1 -0
  63. package/dist/commands/legacy-storage-migration.js +277 -0
  64. package/dist/commands/migrate.d.ts +7 -0
  65. package/dist/commands/migrate.d.ts.map +1 -1
  66. package/dist/commands/migrate.js +244 -91
  67. package/dist/commands/query.d.ts.map +1 -1
  68. package/dist/commands/query.js +3 -1
  69. package/dist/commands/report.d.ts +24 -0
  70. package/dist/commands/report.d.ts.map +1 -0
  71. package/dist/commands/report.js +191 -0
  72. package/dist/commands/search.d.ts.map +1 -1
  73. package/dist/commands/search.js +3 -1
  74. package/dist/commands/status.d.ts.map +1 -1
  75. package/dist/commands/status.js +2 -1
  76. package/dist/commands/sync/cache.d.ts +26 -3
  77. package/dist/commands/sync/cache.d.ts.map +1 -1
  78. package/dist/commands/sync/cache.js +141 -5
  79. package/dist/commands/sync/discovery.d.ts +23 -2
  80. package/dist/commands/sync/discovery.d.ts.map +1 -1
  81. package/dist/commands/sync/discovery.js +196 -15
  82. package/dist/commands/sync/extraction.d.ts +8 -1
  83. package/dist/commands/sync/extraction.d.ts.map +1 -1
  84. package/dist/commands/sync/extraction.js +38 -4
  85. package/dist/commands/sync/manifest.d.ts +8 -5
  86. package/dist/commands/sync/manifest.d.ts.map +1 -1
  87. package/dist/commands/sync/manifest.js +142 -39
  88. package/dist/commands/sync/persistence.d.ts +10 -1
  89. package/dist/commands/sync/persistence.d.ts.map +1 -1
  90. package/dist/commands/sync/persistence.js +223 -44
  91. package/dist/commands/sync/staging.d.ts +10 -1
  92. package/dist/commands/sync/staging.d.ts.map +1 -1
  93. package/dist/commands/sync/staging.js +84 -1
  94. package/dist/commands/sync.d.ts +6 -0
  95. package/dist/commands/sync.d.ts.map +1 -1
  96. package/dist/commands/sync.js +710 -48
  97. package/dist/commands/verify.d.ts +10 -0
  98. package/dist/commands/verify.d.ts.map +1 -0
  99. package/dist/commands/verify.js +126 -0
  100. package/dist/diagnostics.d.ts +1 -1
  101. package/dist/diagnostics.d.ts.map +1 -1
  102. package/dist/engine-daemon.d.ts +3 -0
  103. package/dist/engine-daemon.d.ts.map +1 -0
  104. package/dist/engine-daemon.js +34 -0
  105. package/dist/engine.d.ts +156 -0
  106. package/dist/engine.d.ts.map +1 -0
  107. package/dist/engine.js +1625 -0
  108. package/dist/env.d.ts.map +1 -1
  109. package/dist/env.js +5 -6
  110. package/dist/extractors/manifest.d.ts +8 -1
  111. package/dist/extractors/manifest.d.ts.map +1 -1
  112. package/dist/extractors/manifest.js +51 -9
  113. package/dist/extractors/markdown.d.ts +2 -1
  114. package/dist/extractors/markdown.d.ts.map +1 -1
  115. package/dist/extractors/markdown.js +21 -3
  116. package/dist/extractors/playwright-cases.d.ts +24 -0
  117. package/dist/extractors/playwright-cases.d.ts.map +1 -0
  118. package/dist/extractors/playwright-cases.js +126 -0
  119. package/dist/extractors/relationships.d.ts +2 -0
  120. package/dist/extractors/relationships.d.ts.map +1 -1
  121. package/dist/extractors/relationships.js +16 -17
  122. package/dist/extractors/symbol-coordinates.d.ts +81 -3
  123. package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
  124. package/dist/extractors/symbol-coordinates.js +389 -51
  125. package/dist/extractors/symbols-coordinator.js +11 -1
  126. package/dist/intent-search.d.ts +60 -0
  127. package/dist/intent-search.d.ts.map +1 -0
  128. package/dist/intent-search.js +433 -0
  129. package/dist/operations/bootstrap/activation.d.ts.map +1 -0
  130. package/dist/operations/{autopilot → bootstrap}/activation.js +48 -31
  131. package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts.map +1 -1
  132. package/dist/operations/bootstrap/candidates.d.ts +4 -0
  133. package/dist/operations/{autopilot → bootstrap}/candidates.d.ts.map +1 -1
  134. package/dist/operations/{autopilot → bootstrap}/candidates.js +22 -8
  135. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts +2 -2
  136. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts.map +1 -1
  137. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.js +46 -6
  138. package/dist/operations/{autopilot → bootstrap}/discovery.d.ts +1 -1
  139. package/dist/operations/bootstrap/discovery.d.ts.map +1 -0
  140. package/dist/operations/{autopilot → bootstrap}/discovery.js +21 -14
  141. package/dist/operations/bootstrap/generate.d.ts +8 -0
  142. package/dist/operations/bootstrap/generate.d.ts.map +1 -0
  143. package/dist/operations/bootstrap/generate.js +204 -0
  144. package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts +2 -2
  145. package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts.map +1 -1
  146. package/dist/operations/{autopilot → bootstrap}/guidance-actions.js +4 -4
  147. package/dist/operations/{autopilot → bootstrap}/guidance.d.ts +2 -2
  148. package/dist/operations/{autopilot → bootstrap}/guidance.d.ts.map +1 -1
  149. package/dist/operations/{autopilot → bootstrap}/guidance.js +2 -0
  150. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts +2 -2
  151. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts.map +1 -1
  152. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.js +4 -3
  153. package/dist/operations/bootstrap/presentation.d.ts +15 -0
  154. package/dist/operations/bootstrap/presentation.d.ts.map +1 -0
  155. package/dist/operations/bootstrap/presentation.js +177 -0
  156. package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts.map +1 -1
  157. package/dist/operations/{autopilot → bootstrap}/types.d.ts +63 -21
  158. package/dist/operations/bootstrap/types.d.ts.map +1 -0
  159. package/dist/operations/bootstrap/types.js +25 -0
  160. package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
  161. package/dist/operations/modeling/model-requirement.js +4 -17
  162. package/dist/operations/modeling/predicate-applicability.d.ts +16 -0
  163. package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -0
  164. package/dist/operations/modeling/predicate-applicability.js +276 -0
  165. package/dist/operations/modeling/predicate-applyplan.d.ts +13 -2
  166. package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
  167. package/dist/operations/modeling/predicate-applyplan.js +100 -3
  168. package/dist/operations/modeling/predicate-bindings.d.ts +6 -0
  169. package/dist/operations/modeling/predicate-bindings.d.ts.map +1 -0
  170. package/dist/operations/modeling/predicate-bindings.js +122 -0
  171. package/dist/operations/modeling/predicate-catalog-4.d.ts.map +1 -1
  172. package/dist/operations/modeling/predicate-catalog-4.js +155 -0
  173. package/dist/operations/modeling/predicate-inference-1.d.ts.map +1 -1
  174. package/dist/operations/modeling/predicate-inference-1.js +8 -0
  175. package/dist/operations/modeling/predicate-inference-launcher.d.ts +10 -0
  176. package/dist/operations/modeling/predicate-inference-launcher.d.ts.map +1 -0
  177. package/dist/operations/modeling/predicate-inference-launcher.js +13 -0
  178. package/dist/operations/modeling/predicate-inference.d.ts.map +1 -1
  179. package/dist/operations/modeling/predicate-inference.js +4 -0
  180. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
  181. package/dist/operations/modeling/predicate-loader.js +7 -0
  182. package/dist/operations/modeling/predicate-ranker.d.ts +8 -1
  183. package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
  184. package/dist/operations/modeling/predicate-ranker.js +156 -24
  185. package/dist/operations/modeling/predicate-score-3.d.ts.map +1 -1
  186. package/dist/operations/modeling/predicate-score-3.js +6 -0
  187. package/dist/operations/modeling/predicate-types.d.ts +34 -0
  188. package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
  189. package/dist/operations/modeling/predicate-usage-hints-3.d.ts.map +1 -1
  190. package/dist/operations/modeling/predicate-usage-hints-3.js +40 -0
  191. package/dist/operations/modeling/predicate-utils.d.ts.map +1 -1
  192. package/dist/operations/modeling/predicate-utils.js +2 -0
  193. package/dist/operations/modeling/suggest-predicates.d.ts +1 -1
  194. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
  195. package/dist/operations/modeling/suggest-predicates.js +170 -32
  196. package/dist/operations/mutation/delete.d.ts.map +1 -1
  197. package/dist/operations/mutation/delete.js +415 -19
  198. package/dist/operations/mutation/entity-projection.d.ts +11 -0
  199. package/dist/operations/mutation/entity-projection.d.ts.map +1 -0
  200. package/dist/operations/mutation/entity-projection.js +14 -0
  201. package/dist/operations/mutation/relationships.d.ts +10 -0
  202. package/dist/operations/mutation/relationships.d.ts.map +1 -1
  203. package/dist/operations/mutation/relationships.js +71 -1
  204. package/dist/operations/mutation/serialization.d.ts.map +1 -1
  205. package/dist/operations/mutation/serialization.js +1 -0
  206. package/dist/operations/mutation/source-authoring.d.ts +61 -0
  207. package/dist/operations/mutation/source-authoring.d.ts.map +1 -0
  208. package/dist/operations/mutation/source-authoring.js +543 -0
  209. package/dist/operations/mutation/symbol-compiler-lock.d.ts +51 -0
  210. package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -0
  211. package/dist/operations/mutation/symbol-compiler-lock.js +274 -0
  212. package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
  213. package/dist/operations/mutation/symbol-granularity.js +34 -3
  214. package/dist/operations/mutation/symbol-refresh.d.ts +18 -1
  215. package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
  216. package/dist/operations/mutation/symbol-refresh.js +225 -63
  217. package/dist/operations/mutation/types.d.ts +57 -1
  218. package/dist/operations/mutation/types.d.ts.map +1 -1
  219. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  220. package/dist/operations/mutation/upsert.js +363 -24
  221. package/dist/operations/mutation/validation.d.ts.map +1 -1
  222. package/dist/operations/mutation/validation.js +1 -0
  223. package/dist/operations/planning/apply-plan.d.ts +117 -0
  224. package/dist/operations/planning/apply-plan.d.ts.map +1 -0
  225. package/dist/operations/planning/apply-plan.js +1437 -0
  226. package/dist/operations/planning/compile-intent.d.ts +106 -0
  227. package/dist/operations/planning/compile-intent.d.ts.map +1 -0
  228. package/dist/operations/planning/compile-intent.js +562 -0
  229. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  230. package/dist/operations/semantic-advisor/analyze-prose.js +6 -2
  231. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
  232. package/dist/operations/semantic-advisor/clauses.js +15 -2
  233. package/dist/operations/semantic-advisor/ingestion-boundary.d.ts.map +1 -1
  234. package/dist/operations/semantic-advisor/ingestion-boundary.js +7 -3
  235. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts +51 -0
  236. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts.map +1 -0
  237. package/dist/operations/semantic-advisor/predicate-rules-launcher.js +96 -0
  238. package/dist/operations/semantic-advisor/types.d.ts +13 -5
  239. package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
  240. package/dist/operations/verification/ingest-verification.d.ts +29 -0
  241. package/dist/operations/verification/ingest-verification.d.ts.map +1 -0
  242. package/dist/operations/verification/ingest-verification.js +192 -0
  243. package/dist/prolog/codec.d.ts.map +1 -1
  244. package/dist/prolog/codec.js +2 -1
  245. package/dist/prolog.d.ts +8 -0
  246. package/dist/prolog.d.ts.map +1 -1
  247. package/dist/prolog.js +66 -16
  248. package/dist/public/branch-resolver.d.ts +1 -0
  249. package/dist/public/branch-resolver.d.ts.map +1 -1
  250. package/dist/public/branch-resolver.js +1 -0
  251. package/dist/public/check-types.d.ts +2 -2
  252. package/dist/public/check-types.d.ts.map +1 -1
  253. package/dist/public/check-types.js +16 -16
  254. package/dist/public/diagnostic-usage.d.ts.map +1 -1
  255. package/dist/public/diagnostic-usage.js +69 -1
  256. package/dist/public/distribution-parity.d.ts +1 -1
  257. package/dist/public/distribution-parity.d.ts.map +1 -1
  258. package/dist/public/distribution-parity.js +1 -0
  259. package/dist/public/ignore-policy.d.ts.map +1 -1
  260. package/dist/public/ignore-policy.js +16 -4
  261. package/dist/public/impact/coverage-depth-quality.d.ts +6 -1
  262. package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
  263. package/dist/public/impact/coverage-depth-quality.js +21 -3
  264. package/dist/public/impact/full-kb-quality.d.ts +4 -2
  265. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  266. package/dist/public/impact/full-kb-quality.js +61 -1
  267. package/dist/public/impact/manifest.d.ts.map +1 -1
  268. package/dist/public/impact/manifest.js +2 -5
  269. package/dist/public/operational-artifacts.d.ts.map +1 -1
  270. package/dist/public/operational-artifacts.js +7 -1
  271. package/dist/public/operations/catalog.d.ts +682 -67
  272. package/dist/public/operations/catalog.d.ts.map +1 -1
  273. package/dist/public/operations/catalog.js +126 -4
  274. package/dist/public/operations/check-executor.d.ts +2 -2
  275. package/dist/public/operations/check-executor.d.ts.map +1 -1
  276. package/dist/public/operations/check-executor.js +72 -13
  277. package/dist/public/operations/check-format-shared.d.ts +3 -0
  278. package/dist/public/operations/check-format-shared.d.ts.map +1 -1
  279. package/dist/public/operations/check-format-shared.js +3 -0
  280. package/dist/public/operations/check-helpers.d.ts +27 -2
  281. package/dist/public/operations/check-helpers.d.ts.map +1 -1
  282. package/dist/public/operations/check-helpers.js +62 -26
  283. package/dist/public/operations/contracts.d.ts +11 -0
  284. package/dist/public/operations/contracts.d.ts.map +1 -0
  285. package/dist/public/operations/contracts.js +325 -0
  286. package/dist/public/operations/discovery-entities.d.ts.map +1 -1
  287. package/dist/public/operations/discovery-entities.js +3 -2
  288. package/dist/public/operations/discovery-executors.d.ts +37 -1
  289. package/dist/public/operations/discovery-executors.d.ts.map +1 -1
  290. package/dist/public/operations/discovery-executors.js +246 -9
  291. package/dist/public/operations/index.d.ts +9 -4
  292. package/dist/public/operations/index.d.ts.map +1 -1
  293. package/dist/public/operations/index.js +8 -3
  294. package/dist/public/operations/migration-plan.d.ts +101 -0
  295. package/dist/public/operations/migration-plan.d.ts.map +1 -0
  296. package/dist/public/operations/migration-plan.js +537 -0
  297. package/dist/public/operations/node-ports.d.ts.map +1 -1
  298. package/dist/public/operations/node-ports.js +68 -8
  299. package/dist/public/operations/prolog-json.d.ts +14 -0
  300. package/dist/public/operations/prolog-json.d.ts.map +1 -1
  301. package/dist/public/operations/prolog-json.js +55 -6
  302. package/dist/public/operations/repair-plan.d.ts.map +1 -1
  303. package/dist/public/operations/repair-plan.js +1 -0
  304. package/dist/public/operations/result-envelope.d.ts +13 -0
  305. package/dist/public/operations/result-envelope.d.ts.map +1 -0
  306. package/dist/public/operations/result-envelope.js +104 -0
  307. package/dist/public/operations/runtime-types.d.ts +126 -5
  308. package/dist/public/operations/runtime-types.d.ts.map +1 -1
  309. package/dist/public/operations/source-relationship-parity.d.ts +13 -0
  310. package/dist/public/operations/source-relationship-parity.d.ts.map +1 -0
  311. package/dist/public/operations/source-relationship-parity.js +162 -0
  312. package/dist/public/operations/specs/{autopilot.d.ts → bootstrap.d.ts} +9 -9
  313. package/dist/public/operations/specs/bootstrap.d.ts.map +1 -0
  314. package/dist/public/operations/specs/{autopilot.js → bootstrap.js} +8 -7
  315. package/dist/public/operations/specs/check.d.ts +4 -4
  316. package/dist/public/operations/specs/check.d.ts.map +1 -1
  317. package/dist/public/operations/specs/check.js +4 -3
  318. package/dist/public/operations/specs/discovery.d.ts +87 -3
  319. package/dist/public/operations/specs/discovery.d.ts.map +1 -1
  320. package/dist/public/operations/specs/discovery.js +53 -3
  321. package/dist/public/operations/specs/modeling.d.ts +3 -3
  322. package/dist/public/operations/specs/modeling.js +3 -3
  323. package/dist/public/operations/specs/mutation-schemas.d.ts +190 -47
  324. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  325. package/dist/public/operations/specs/mutation-schemas.js +3 -1
  326. package/dist/public/operations/specs/mutation.d.ts +42 -2
  327. package/dist/public/operations/specs/mutation.d.ts.map +1 -1
  328. package/dist/public/operations/specs/mutation.js +26 -2
  329. package/dist/public/operations/specs/planning.d.ts +270 -0
  330. package/dist/public/operations/specs/planning.d.ts.map +1 -0
  331. package/dist/public/operations/specs/planning.js +191 -0
  332. package/dist/public/operations/specs/reporting.d.ts +4 -1
  333. package/dist/public/operations/specs/reporting.d.ts.map +1 -1
  334. package/dist/public/operations/specs/reporting.js +46 -1
  335. package/dist/public/operations/specs/upsert.d.ts +204 -47
  336. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  337. package/dist/public/operations/specs/upsert.js +9 -0
  338. package/dist/public/operations/specs/verification.d.ts +78 -0
  339. package/dist/public/operations/specs/verification.d.ts.map +1 -0
  340. package/dist/public/operations/specs/verification.js +62 -0
  341. package/dist/public/operations/symbol-repair-plan.d.ts +11 -0
  342. package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -0
  343. package/dist/public/operations/symbol-repair-plan.js +123 -0
  344. package/dist/public/operations/types.d.ts +52 -1
  345. package/dist/public/operations/types.d.ts.map +1 -1
  346. package/dist/public/playwright-case-id.d.ts +8 -0
  347. package/dist/public/playwright-case-id.d.ts.map +1 -0
  348. package/dist/public/playwright-case-id.js +25 -0
  349. package/dist/public/schemas/entity.d.ts.map +1 -1
  350. package/dist/public/schemas/entity.js +4 -2
  351. package/dist/public/skills/kibi-bootstrap/SKILL.md +58 -0
  352. package/dist/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
  353. package/dist/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
  354. package/dist/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
  355. package/dist/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
  356. package/dist/public/skills/kibi-freshness/SKILL.md +40 -10
  357. package/dist/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
  358. package/dist/public/skills/kibi-freshness/resources/operation-access.md +6 -0
  359. package/dist/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
  360. package/dist/public/skills/kibi-traceability/SKILL.md +47 -47
  361. package/dist/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
  362. package/dist/public/skills/kibi-traceability/resources/operation-access.md +5 -0
  363. package/dist/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
  364. package/dist/public/skills/kibi-traceability/resources/traceability.md +8 -0
  365. package/dist/public/skills/kibi-usage/SKILL.md +115 -239
  366. package/dist/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
  367. package/dist/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
  368. package/dist/public/skills/kibi-usage/resources/operation-access.md +36 -38
  369. package/dist/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
  370. package/dist/public/skills/kibi-usage/resources/source-authoring.md +31 -0
  371. package/dist/public/skills/kibi-usage/resources/workflows.md +56 -3
  372. package/dist/public/symbol-granularity.d.ts +1 -1
  373. package/dist/public/symbol-granularity.d.ts.map +1 -1
  374. package/dist/public/symbol-granularity.js +1 -0
  375. package/dist/public/telemetry-acceptance.d.ts +7 -0
  376. package/dist/public/telemetry-acceptance.d.ts.map +1 -1
  377. package/dist/public/telemetry-acceptance.js +8 -1
  378. package/dist/public/telemetry-remediation.js +1 -1
  379. package/dist/public/verification-receipt.d.ts +206 -39
  380. package/dist/public/verification-receipt.d.ts.map +1 -1
  381. package/dist/public/verification-receipt.js +171 -4
  382. package/dist/relationships/shards.d.ts +16 -0
  383. package/dist/relationships/shards.d.ts.map +1 -1
  384. package/dist/relationships/shards.js +87 -2
  385. package/dist/report/brand.d.ts +19 -0
  386. package/dist/report/brand.d.ts.map +1 -0
  387. package/dist/report/brand.js +112 -0
  388. package/dist/report/html-report.d.ts +19 -0
  389. package/dist/report/html-report.d.ts.map +1 -0
  390. package/dist/report/html-report.js +963 -0
  391. package/dist/report/relative-time.d.ts +4 -0
  392. package/dist/report/relative-time.d.ts.map +1 -0
  393. package/dist/report/relative-time.js +46 -0
  394. package/dist/report/report-view.d.ts +17 -0
  395. package/dist/report/report-view.d.ts.map +1 -0
  396. package/dist/report/report-view.js +33 -0
  397. package/dist/report/repository.d.ts +35 -0
  398. package/dist/report/repository.d.ts.map +1 -0
  399. package/dist/report/repository.js +151 -0
  400. package/dist/runtime/cli-runtime.d.ts.map +1 -1
  401. package/dist/runtime/cli-runtime.js +98 -42
  402. package/dist/schemas/entity.schema.json +1148 -273
  403. package/dist/traceability/evidence-model.d.ts +2 -2
  404. package/dist/traceability/evidence-model.d.ts.map +1 -1
  405. package/dist/traceability/evidence-model.js +2 -2
  406. package/dist/traceability/git-staged.d.ts.map +1 -1
  407. package/dist/traceability/git-staged.js +15 -40
  408. package/dist/traceability/markdown-validate.d.ts.map +1 -1
  409. package/dist/traceability/markdown-validate.js +12 -7
  410. package/dist/traceability/staged-impact-contract.d.ts +3 -3
  411. package/dist/traceability/staged-impact-contract.d.ts.map +1 -1
  412. package/dist/traceability/staged-impact-contract.js +10 -38
  413. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  414. package/dist/traceability/staged-symbols-manifest.js +8 -3
  415. package/dist/traceability/temp-kb.d.ts.map +1 -1
  416. package/dist/traceability/temp-kb.js +3 -0
  417. package/dist/types/entities.d.ts +3 -0
  418. package/dist/types/entities.d.ts.map +1 -1
  419. package/dist/utils/branch-resolver.d.ts +24 -10
  420. package/dist/utils/branch-resolver.d.ts.map +1 -1
  421. package/dist/utils/branch-resolver.js +121 -38
  422. package/dist/utils/branch-store-locator.d.ts +23 -0
  423. package/dist/utils/branch-store-locator.d.ts.map +1 -0
  424. package/dist/utils/branch-store-locator.js +90 -0
  425. package/dist/utils/branch-store.d.ts +15 -0
  426. package/dist/utils/branch-store.d.ts.map +1 -0
  427. package/dist/utils/branch-store.js +130 -0
  428. package/dist/utils/config.d.ts +39 -37
  429. package/dist/utils/config.d.ts.map +1 -1
  430. package/dist/utils/config.js +107 -119
  431. package/dist/utils/kb-manifest.d.ts +35 -0
  432. package/dist/utils/kb-manifest.d.ts.map +1 -0
  433. package/dist/utils/kb-manifest.js +154 -0
  434. package/dist/utils/kb-paths.d.ts +54 -0
  435. package/dist/utils/kb-paths.d.ts.map +1 -0
  436. package/dist/utils/kb-paths.js +125 -0
  437. package/dist/utils/manifest-paths.d.ts +4 -4
  438. package/dist/utils/manifest-paths.d.ts.map +1 -1
  439. package/dist/utils/manifest-paths.js +8 -56
  440. package/dist/utils/rule-registry.d.ts +48 -20
  441. package/dist/utils/rule-registry.d.ts.map +1 -1
  442. package/dist/utils/rule-registry.js +82 -77
  443. package/dist/utils/schema-version.d.ts +5 -5
  444. package/dist/utils/schema-version.d.ts.map +1 -1
  445. package/dist/utils/schema-version.js +26 -6
  446. package/dist/utils/strict-modeling.d.ts +0 -4
  447. package/dist/utils/strict-modeling.d.ts.map +1 -1
  448. package/dist/utils/strict-modeling.js +7 -8
  449. package/dist/verification/playwright-reporter.d.ts +21 -0
  450. package/dist/verification/playwright-reporter.d.ts.map +1 -0
  451. package/dist/verification/playwright-reporter.js +114 -0
  452. package/package.json +51 -8
  453. package/schema/config.json +2 -2
  454. package/schema/manifest.json +26 -0
  455. package/src/public/branch-resolver.ts +1 -0
  456. package/src/public/check-types.ts +22 -19
  457. package/src/public/diagnostic-usage.ts +79 -1
  458. package/src/public/distribution-parity.ts +1 -0
  459. package/src/public/ignore-policy.ts +16 -10
  460. package/src/public/impact/coverage-depth-quality.ts +36 -0
  461. package/src/public/impact/full-kb-quality.ts +118 -5
  462. package/src/public/impact/manifest.ts +2 -4
  463. package/src/public/operational-artifacts.ts +9 -1
  464. package/src/public/operations/catalog.ts +146 -9
  465. package/src/public/operations/check-executor.ts +102 -15
  466. package/src/public/operations/check-format-shared.ts +6 -0
  467. package/src/public/operations/check-helpers.ts +74 -35
  468. package/src/public/operations/contracts.ts +366 -0
  469. package/src/public/operations/discovery-entities.ts +3 -2
  470. package/src/public/operations/discovery-executors.ts +343 -15
  471. package/src/public/operations/index.ts +9 -4
  472. package/src/public/operations/migration-plan.ts +740 -0
  473. package/src/public/operations/node-ports.ts +84 -10
  474. package/src/public/operations/prolog-json.ts +73 -6
  475. package/src/public/operations/repair-plan.ts +1 -0
  476. package/src/public/operations/result-envelope.ts +136 -0
  477. package/src/public/operations/runtime-types.ts +130 -5
  478. package/src/public/operations/source-relationship-parity.ts +226 -0
  479. package/src/public/operations/specs/{autopilot.ts → bootstrap.ts} +17 -16
  480. package/src/public/operations/specs/check.ts +4 -3
  481. package/src/public/operations/specs/discovery.ts +57 -3
  482. package/src/public/operations/specs/modeling.ts +3 -3
  483. package/src/public/operations/specs/mutation-schemas.ts +6 -1
  484. package/src/public/operations/specs/mutation.ts +27 -2
  485. package/src/public/operations/specs/planning.ts +234 -0
  486. package/src/public/operations/specs/reporting.ts +55 -1
  487. package/src/public/operations/specs/upsert.ts +10 -0
  488. package/src/public/operations/specs/verification.ts +78 -0
  489. package/src/public/operations/symbol-repair-plan.ts +164 -0
  490. package/src/public/operations/types.ts +62 -1
  491. package/src/public/playwright-case-id.ts +35 -0
  492. package/src/public/schemas/entity.ts +7 -2
  493. package/src/public/skills/kibi-bootstrap/SKILL.md +58 -0
  494. package/src/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
  495. package/src/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
  496. package/src/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
  497. package/src/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
  498. package/src/public/skills/kibi-freshness/SKILL.md +40 -10
  499. package/src/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
  500. package/src/public/skills/kibi-freshness/resources/operation-access.md +6 -0
  501. package/src/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
  502. package/src/public/skills/kibi-traceability/SKILL.md +47 -47
  503. package/src/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
  504. package/src/public/skills/kibi-traceability/resources/operation-access.md +5 -0
  505. package/src/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
  506. package/src/public/skills/kibi-traceability/resources/traceability.md +8 -0
  507. package/src/public/skills/kibi-usage/SKILL.md +115 -239
  508. package/src/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
  509. package/src/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
  510. package/src/public/skills/kibi-usage/resources/operation-access.md +36 -38
  511. package/src/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
  512. package/src/public/skills/kibi-usage/resources/source-authoring.md +31 -0
  513. package/src/public/skills/kibi-usage/resources/workflows.md +56 -3
  514. package/src/public/symbol-granularity.ts +1 -0
  515. package/src/public/telemetry-acceptance.ts +16 -1
  516. package/src/public/telemetry-remediation.ts +1 -1
  517. package/src/public/verification-receipt.ts +248 -6
  518. package/src/schemas/entity.schema.json +1148 -273
  519. package/templates/github/kibi-badge.yml +86 -0
  520. package/templates/github/kibi-report.yml +84 -0
  521. package/dist/operations/autopilot/activation.d.ts.map +0 -1
  522. package/dist/operations/autopilot/candidates.d.ts +0 -4
  523. package/dist/operations/autopilot/discovery.d.ts.map +0 -1
  524. package/dist/operations/autopilot/generate.d.ts +0 -8
  525. package/dist/operations/autopilot/generate.d.ts.map +0 -1
  526. package/dist/operations/autopilot/generate.js +0 -112
  527. package/dist/operations/autopilot/presentation.d.ts +0 -13
  528. package/dist/operations/autopilot/presentation.d.ts.map +0 -1
  529. package/dist/operations/autopilot/presentation.js +0 -91
  530. package/dist/operations/autopilot/types.d.ts.map +0 -1
  531. package/dist/operations/autopilot/types.js +0 -8
  532. package/dist/public/operations/specs/autopilot.d.ts.map +0 -1
  533. package/dist/public/skills/init-kibi/SKILL.md +0 -62
  534. package/src/public/skills/init-kibi/SKILL.md +0 -62
  535. /package/dist/operations/{autopilot → bootstrap}/activation.d.ts +0 -0
  536. /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts +0 -0
  537. /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.js +0 -0
  538. /package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts +0 -0
  539. /package/dist/operations/{autopilot → bootstrap}/requirement-claims.js +0 -0
@@ -15,64 +15,395 @@
15
15
  You should have received a copy of the GNU Affero General Public License
16
16
  along with this program. If not, see <https://www.gnu.org/licenses/>.
17
17
  */
18
+ import { createHash } from "node:crypto";
18
19
  import * as fs from "node:fs";
19
20
  import * as path from "node:path";
20
- import { copyCleanSnapshot, getBranchDiagnostic, isValidBranchName, resolveActiveBranch, } from "../utils/branch-resolver.js";
21
- function resolveExplicitFromBranch(fromBranch) {
22
- if (!isValidBranchName(fromBranch)) {
23
- console.warn(`Warning: invalid branch name provided via --from: '${fromBranch}'`);
24
- return null;
25
- }
26
- const fromPath = path.join(process.cwd(), ".kb/branches", fromBranch);
27
- if (fs.existsSync(fromPath)) {
28
- return fromBranch;
29
- }
30
- console.warn(`Warning: --from branch '${fromBranch}' KB does not exist`);
31
- return null;
21
+ import { EngineClient, acquireEnginePublicationLease, engineSocketPath, } from "../engine.js";
22
+ import { getBranchDiagnostic, isValidBranchName, resolveActiveBranch, resolveBranchAttachment, } from "../utils/branch-resolver.js";
23
+ import { branchStoreManifestMatches, branchStoreManifestPath, branchStorePath, branchStoresRoot, ensureBranchStoreManifest, expectedBranchStoreManifest, legacyBranchStorePath, readBranchStoreManifest, } from "../utils/branch-store-locator.js";
24
+ import { inspectBranchStore } from "../utils/branch-store.js";
25
+ /** Legacy migration changes storage format for one exact branch identity. */
26
+ export function isSupportedLegacyBranchMigration(from, to) {
27
+ return from === to;
32
28
  }
33
- function resolveDefaultSourceBranch() {
34
- // No default branch concept - branches are independent
35
- // When --from is not specified, an empty branch KB will be created
36
- return null;
37
- }
38
- function determineSourceBranch(explicitFromBranch) {
39
- if (explicitFromBranch) {
40
- const fromResult = resolveExplicitFromBranch(explicitFromBranch);
41
- if (fromResult) {
42
- return fromResult;
29
+ function hashLegacyStore(sourcePath) {
30
+ const hash = createHash("sha256");
31
+ const visit = (directory, relative = "") => {
32
+ for (const entry of fs
33
+ .readdirSync(directory, { withFileTypes: true })
34
+ .sort((left, right) => left.name.localeCompare(right.name))) {
35
+ const absolute = path.join(directory, entry.name);
36
+ const child = relative ? path.join(relative, entry.name) : entry.name;
37
+ if (entry.isDirectory())
38
+ visit(absolute, child);
39
+ else if (entry.isFile()) {
40
+ hash.update(child.replaceAll(path.sep, "/"));
41
+ hash.update("\0");
42
+ hash.update(fs.readFileSync(absolute));
43
+ hash.update("\0");
44
+ }
43
45
  }
46
+ };
47
+ visit(sourcePath);
48
+ return hash.digest("hex");
49
+ }
50
+ export function branchMigrationApprovalHash(from, to, sourcePath, targetPath) {
51
+ const sourceHash = hashLegacyStore(sourcePath);
52
+ return createHash("sha256")
53
+ .update(JSON.stringify({
54
+ version: 2,
55
+ from,
56
+ to,
57
+ sourcePath,
58
+ targetPath,
59
+ sourceHash,
60
+ manifestVersion: expectedBranchStoreManifest(to).version,
61
+ }))
62
+ .digest("hex");
63
+ }
64
+ function migrationJournalPath(workspaceRoot, id) {
65
+ if (!/^[A-Za-z0-9._-]+$/.test(id)) {
66
+ throw new Error("branch migration journal ID is invalid");
44
67
  }
45
- return resolveDefaultSourceBranch();
68
+ return path.join(workspaceRoot, ".kb", "recovery", "branch-migrations", `${id}.json`);
69
+ }
70
+ function writeMigrationJournal(journalPath, journal) {
71
+ fs.writeFileSync(journalPath, `${JSON.stringify(journal, null, 2)}\n`, {
72
+ mode: 0o600,
73
+ });
46
74
  }
47
- function createBranchKbFromSource(sourceBranch, targetBranch) {
48
- const sourcePath = path.join(process.cwd(), ".kb/branches", sourceBranch);
49
- const targetPath = path.join(process.cwd(), ".kb/branches", targetBranch);
50
- copyCleanSnapshot(sourcePath, targetPath);
51
- console.log(`Created branch KB: ${targetBranch} (from ${sourceBranch})`);
75
+ function recoverBranchMigration(workspaceRoot, id, apply) {
76
+ const journalPath = migrationJournalPath(workspaceRoot, id);
77
+ const journal = JSON.parse(fs.readFileSync(journalPath, "utf8"));
78
+ if (journal.version !== 2)
79
+ throw new Error("Unsupported branch migration journal version");
80
+ const root = path.resolve(workspaceRoot);
81
+ const paths = ["sourcePath", "targetPath", "stagingPath", "backupPath"].map((key) => path.resolve(root, String(journal[key])));
82
+ if (paths.some((candidate) => !candidate.startsWith(`${root}${path.sep}`))) {
83
+ throw new Error("Branch migration journal path escapes workspace");
84
+ }
85
+ const [sourcePath, targetPath, stagingPath, backupPath] = paths;
86
+ if (!sourcePath || !targetPath || !stagingPath || !backupPath) {
87
+ throw new Error("Branch migration journal is incomplete");
88
+ }
89
+ console.log(`Branch migration recovery preview: ${id}`);
90
+ console.log(`State: ${String(journal.state)}`);
91
+ console.log(`Source: ${sourcePath}`);
92
+ console.log(`Target: ${targetPath}`);
93
+ console.log(`Backup: ${backupPath}`);
94
+ if (!apply) {
95
+ console.log("Preview only. Re-run with --apply to recover this journal.");
96
+ return;
97
+ }
98
+ if (journal.state === "committed")
99
+ return;
100
+ if (journal.state === "prepared") {
101
+ if (fs.existsSync(sourcePath) &&
102
+ fs.existsSync(stagingPath) &&
103
+ !fs.existsSync(targetPath)) {
104
+ fs.renameSync(sourcePath, backupPath);
105
+ writeMigrationJournal(journalPath, {
106
+ ...journal,
107
+ state: "legacy_quarantined",
108
+ });
109
+ }
110
+ else if (fs.existsSync(sourcePath) && fs.existsSync(targetPath)) {
111
+ throw new Error("Recovery found both legacy source and target; refusing to choose a winner");
112
+ }
113
+ }
114
+ if (fs.existsSync(backupPath) &&
115
+ fs.existsSync(stagingPath) &&
116
+ !fs.existsSync(targetPath)) {
117
+ fs.renameSync(stagingPath, targetPath);
118
+ if (!branchStoreManifestMatches(targetPath, String(journal.to))) {
119
+ throw new Error("Recovered target manifest does not match the exact branch identity");
120
+ }
121
+ writeMigrationJournal(journalPath, {
122
+ ...journal,
123
+ state: "target_published",
124
+ });
125
+ }
126
+ if (fs.existsSync(backupPath) && fs.existsSync(targetPath)) {
127
+ if (!branchStoreManifestMatches(targetPath, String(journal.to))) {
128
+ const corrupt = `${targetPath}.corrupt-${Date.now()}`;
129
+ fs.renameSync(targetPath, corrupt);
130
+ fs.renameSync(backupPath, targetPath);
131
+ throw new Error(`Invalid target moved to ${corrupt}; verified legacy backup restored`);
132
+ }
133
+ writeMigrationJournal(journalPath, { ...journal, state: "committed" });
134
+ return;
135
+ }
136
+ throw new Error(`Migration journal ${id} remains incomplete; rerun its recovery preview`);
52
137
  }
53
- function createEmptyBranchKb(branch) {
54
- const kbPath = path.join(process.cwd(), ".kb/branches", branch);
55
- fs.mkdirSync(kbPath, { recursive: true });
56
- console.log(`Created branch KB: ${branch} (empty schema)`);
138
+ function createEmptyBranchKb(branch, workspaceRoot) {
139
+ const kbPath = ensureBranchStoreManifest(workspaceRoot, branch);
140
+ console.log(`Created branch KB: ${branch} (${kbPath})`);
57
141
  }
58
142
  export async function branchEnsureCommand(options) {
59
- const branchResult = resolveActiveBranch(process.cwd());
143
+ const workspaceRoot = path.resolve(options?.workspaceRoot ?? process.cwd());
144
+ const branchResult = resolveBranchAttachment(workspaceRoot);
60
145
  if ("error" in branchResult) {
61
146
  console.error(getBranchDiagnostic(undefined, branchResult.error));
62
147
  throw new Error(`Failed to resolve active branch: ${branchResult.error}`);
63
148
  }
64
- const currentBranch = branchResult.branch;
65
- const kbPath = path.join(process.cwd(), ".kb/branches", currentBranch);
149
+ if (branchResult.migrationRequired) {
150
+ throw new Error(`Branch ensure blocked by legacy storage at ${branchResult.storePath}. Run an explicit 'kibi branch migrate --from ${branchResult.kbBranch} --to ${branchResult.gitBranch} --apply' first.`);
151
+ }
152
+ const currentBranch = branchResult.kbBranch;
153
+ const kbPath = branchResult.storePath;
154
+ if (options?.from !== undefined) {
155
+ throw new Error("branch ensure --from was removed: new branch stores compile from the current checkout's tracked sources. Use branch migrate for an explicit legacy-store move.");
156
+ }
66
157
  if (fs.existsSync(kbPath)) {
67
158
  console.log(`Branch KB already exists: ${currentBranch}`);
68
159
  return;
69
160
  }
70
- const sourceBranch = determineSourceBranch(options?.from);
71
- if (sourceBranch) {
72
- createBranchKbFromSource(sourceBranch, currentBranch);
161
+ createEmptyBranchKb(currentBranch, workspaceRoot);
162
+ }
163
+ /**
164
+ * Move a legacy branch-named KB into the exact active Git branch namespace.
165
+ * Preview is the default; --apply is required because this changes tracked
166
+ * workspace state.
167
+ */
168
+ export async function branchMigrateCommand(options = {}) {
169
+ const workspaceRoot = path.resolve(options.workspaceRoot ?? process.cwd());
170
+ if (options.recoverJournal !== undefined) {
171
+ recoverBranchMigration(workspaceRoot, options.recoverJournal, options.apply === true);
172
+ return;
173
+ }
174
+ const from = options.from;
175
+ if (!from || !isValidBranchName(from)) {
176
+ throw new Error("branch migrate requires a valid --from branch name");
177
+ }
178
+ const active = resolveActiveBranch(workspaceRoot);
179
+ if ("error" in active) {
180
+ throw new Error(`Failed to resolve active branch: ${active.error}`);
181
+ }
182
+ const to = options.to;
183
+ if (!to || !isValidBranchName(to)) {
184
+ throw new Error("branch migrate requires an explicit valid --to branch name");
185
+ }
186
+ if (active.branch !== to) {
187
+ throw new Error(`branch migrate --to '${to}' does not match the active Git branch '${active.branch}'`);
188
+ }
189
+ if (!isSupportedLegacyBranchMigration(from, to)) {
190
+ throw new Error("branch migrate only supports a same-identity literal-to-hashed migration; every cross-branch move is refused");
191
+ }
192
+ // `from === to` is valid for the same-identity storage bridge: it names the
193
+ // same exact Git identity while moving a legacy literal directory into its
194
+ // hashed compiled-store path. The explicit pair is still required; no
195
+ // rename is inferred from commit history.
196
+ const root = branchStoresRoot(workspaceRoot);
197
+ const sourcePath = legacyBranchStorePath(workspaceRoot, from);
198
+ const targetPath = branchStorePath(workspaceRoot, to);
199
+ if (!fs.existsSync(sourcePath)) {
200
+ throw new Error(`Legacy source KB does not exist: ${sourcePath}`);
201
+ }
202
+ if (fs.existsSync(targetPath)) {
203
+ throw new Error(`Target branch KB already exists: ${targetPath}`);
204
+ }
205
+ const approvalHash = branchMigrationApprovalHash(from, to, sourcePath, targetPath);
206
+ console.log(`Branch KB migration preview: ${from} -> ${to}`);
207
+ console.log(`Source: ${sourcePath}`);
208
+ console.log(`Target: ${targetPath}`);
209
+ console.log(`Approval hash: ${approvalHash}`);
210
+ if (!options.apply) {
211
+ console.log("Preview only. Re-run with --apply to move the branch KB.");
212
+ return;
213
+ }
214
+ if (!options.approvalHash) {
215
+ throw new Error(`branch migrate requires --approval-hash from the preview (${approvalHash})`);
216
+ }
217
+ if (options.approvalHash !== approvalHash) {
218
+ throw new Error(`branch migrate approval hash mismatch; expected ${approvalHash}`);
219
+ }
220
+ const publicationLease = acquireEnginePublicationLease(workspaceRoot, from);
221
+ try {
222
+ const engine = new EngineClient({
223
+ workspaceRoot,
224
+ branch: from,
225
+ timeout: 2_000,
226
+ allowPublicationLock: true,
227
+ });
228
+ const engineSocket = engineSocketPath(workspaceRoot, from);
229
+ try {
230
+ if (fs.existsSync(engineSocket))
231
+ await engine.start(false);
232
+ if (engine.isRunning()) {
233
+ await engine.stop(false);
234
+ }
235
+ else if (fs.existsSync(engineSocket)) {
236
+ throw new Error(`Kibi engine socket remains present but is not reachable: ${engineSocket}`);
237
+ }
238
+ }
239
+ catch (error) {
240
+ throw new Error(`Branch migration blocked: engine shutdown failed: ${error instanceof Error ? error.message : String(error)}`);
241
+ }
242
+ finally {
243
+ await engine.terminate();
244
+ }
245
+ if (branchMigrationApprovalHash(from, to, sourcePath, targetPath) !==
246
+ approvalHash) {
247
+ throw new Error("Branch migration source changed after engine shutdown; rerun the preview");
248
+ }
249
+ fs.mkdirSync(root, { recursive: true });
250
+ const migrationId = `${Date.now()}-${from.replaceAll("/", "__")}-${to.replaceAll("/", "__")}`;
251
+ const journalPath = path.join(workspaceRoot, ".kb", "recovery", "branch-migrations", `${migrationId}.json`);
252
+ const stagingPath = `${targetPath}.staging-${process.pid}-${Date.now()}`;
253
+ const backupPath = path.join(workspaceRoot, ".kb", "recovery", "branch-migrations", `${migrationId}-legacy`);
254
+ fs.mkdirSync(path.dirname(backupPath), { recursive: true });
255
+ const journal = {
256
+ version: 2,
257
+ from,
258
+ to,
259
+ sourcePath: path.relative(workspaceRoot, sourcePath),
260
+ targetPath: path.relative(workspaceRoot, targetPath),
261
+ stagingPath: path.relative(workspaceRoot, stagingPath),
262
+ backupPath: path.relative(workspaceRoot, backupPath),
263
+ approvalHash,
264
+ state: "prepared",
265
+ };
266
+ writeMigrationJournal(journalPath, { ...journal });
267
+ try {
268
+ fs.cpSync(sourcePath, stagingPath, {
269
+ recursive: true,
270
+ errorOnExist: true,
271
+ });
272
+ fs.writeFileSync(branchStoreManifestPath(stagingPath), `${JSON.stringify(expectedBranchStoreManifest(to), null, 2)}\n`, { mode: 0o600 });
273
+ fs.renameSync(sourcePath, backupPath);
274
+ writeMigrationJournal(journalPath, {
275
+ ...journal,
276
+ state: "legacy_quarantined",
277
+ });
278
+ fs.renameSync(stagingPath, targetPath);
279
+ if (!branchStoreManifestMatches(targetPath, to)) {
280
+ throw new Error("migrated branch store manifest verification failed");
281
+ }
282
+ writeMigrationJournal(journalPath, {
283
+ ...journal,
284
+ state: "target_published",
285
+ });
286
+ writeMigrationJournal(journalPath, { ...journal, state: "committed" });
287
+ }
288
+ catch (error) {
289
+ // Leave the hash-bound journal and any staging bytes for explicit crash
290
+ // recovery; never silently select a winner between source and target.
291
+ throw new Error(`Branch migration failed before authoritative completion; recover ${journalPath}: ${error instanceof Error ? error.message : String(error)}`);
292
+ }
293
+ console.log(`Migrated branch KB to exact Git branch '${to}'.`);
294
+ console.log(`Legacy store preserved at ${backupPath}.`);
295
+ console.log(`Migration journal: ${journalPath}.`);
296
+ }
297
+ finally {
298
+ publicationLease.release();
299
+ }
300
+ }
301
+ /**
302
+ * Rebuild an unreadable exact branch store from the current authored sources.
303
+ * The existing bytes are moved to a Kibi-owned recovery directory only after a
304
+ * clean staging store has been created successfully.
305
+ */
306
+ export async function branchRecoverCommand(options = {}) {
307
+ const workspaceRoot = path.resolve(options.workspaceRoot ?? process.cwd());
308
+ const attachment = resolveBranchAttachment(workspaceRoot);
309
+ if ("error" in attachment) {
310
+ throw new Error(`Failed to resolve active branch: ${attachment.error}`);
311
+ }
312
+ if (attachment.kind !== "exact") {
313
+ throw new Error("branch recover requires an exact Git/KB attachment; migrate legacy storage before recovery.");
314
+ }
315
+ const inspection = inspectBranchStore(workspaceRoot, attachment.kbBranch);
316
+ if (inspection.state === "missing") {
317
+ throw new Error(`Branch KB is missing at ${inspection.path}; run 'kibi branch ensure' instead.`);
318
+ }
319
+ const stamp = new Date().toISOString().replaceAll(":", "-");
320
+ const backupPath = path.join(workspaceRoot, ".kb", "recovery", attachment.kbBranch, stamp);
321
+ console.log(`Branch KB recovery preview: ${attachment.kbBranch}`);
322
+ console.log(`Store: ${inspection.path}`);
323
+ console.log(`State: ${inspection.state}${inspection.errorCode ? ` (${inspection.errorCode})` : ""}`);
324
+ console.log(`Backup: ${backupPath}`);
325
+ console.log("Strategy: rebuild a clean journaled store from current authored sources.");
326
+ console.log("Git branch remains unchanged; no branch rename will be performed.");
327
+ if (!options.apply) {
328
+ console.log("Preview only. Re-run with --apply to create the backup and publish the rebuilt store.");
329
+ return;
330
+ }
331
+ const { syncCommand } = await import("./sync.js");
332
+ const result = await syncCommand({
333
+ rebuild: true,
334
+ recoveryBackupPath: backupPath,
335
+ workspaceRoot,
336
+ });
337
+ if (!result.success) {
338
+ throw new Error("Branch KB recovery did not complete successfully.");
339
+ }
340
+ // Reattach through the normal delta path after publishing the isolated
341
+ // generation. This establishes the current checkpoint/snapshot metadata on
342
+ // the recovered store, so recovery finishes fresh rather than merely
343
+ // structurally readable.
344
+ const checkpoint = await syncCommand({ workspaceRoot });
345
+ if (!checkpoint.success) {
346
+ throw new Error("Recovered branch KB could not establish a fresh checkpoint.");
347
+ }
348
+ const auditPath = path.join(workspaceRoot, ".kb", "migrations", `${attachment.kbBranch.replaceAll("/", "__")}.recovery.json`);
349
+ fs.mkdirSync(path.dirname(auditPath), { recursive: true });
350
+ fs.writeFileSync(auditPath, `${JSON.stringify({
351
+ version: 1,
352
+ branch: attachment.kbBranch,
353
+ recoveredAt: new Date().toISOString(),
354
+ priorState: inspection.state,
355
+ priorErrorCode: inspection.errorCode ?? null,
356
+ backupPath: path.relative(workspaceRoot, backupPath),
357
+ strategy: "rebuild_from_authored_sources",
358
+ }, null, 2)}\n`, "utf8");
359
+ console.log(`Recovered exact branch KB '${attachment.kbBranch}'.`);
360
+ console.log(`Original bytes preserved at ${backupPath}.`);
361
+ console.log(`Recovery audit: ${auditPath}`);
362
+ }
363
+ /** Restore the newest quarantined store for an exact branch identity. */
364
+ export async function branchRestoreCommand(options = {}) {
365
+ const workspaceRoot = path.resolve(options.workspaceRoot ?? process.cwd());
366
+ const branch = options.branch;
367
+ if (!branch || !isValidBranchName(branch)) {
368
+ throw new Error("branch restore requires a valid --branch identity");
369
+ }
370
+ const targetPath = branchStorePath(workspaceRoot, branch);
371
+ if (fs.existsSync(targetPath)) {
372
+ throw new Error(`Target branch store already exists: ${targetPath}`);
373
+ }
374
+ const keyRoot = path.join(workspaceRoot, ".kb", "quarantine", "branches", path.basename(targetPath));
375
+ const candidates = fs.existsSync(keyRoot)
376
+ ? fs
377
+ .readdirSync(keyRoot, { withFileTypes: true })
378
+ .filter((entry) => entry.isDirectory())
379
+ .map((entry) => path.join(keyRoot, entry.name))
380
+ .sort()
381
+ .reverse()
382
+ : [];
383
+ const source = candidates.find((candidate) => {
384
+ try {
385
+ const metadata = JSON.parse(fs.readFileSync(path.join(candidate, "quarantine.json"), "utf8"));
386
+ return metadata.branch === branch;
387
+ }
388
+ catch {
389
+ return false;
390
+ }
391
+ });
392
+ if (!source)
393
+ throw new Error(`No quarantined store found for '${branch}'.`);
394
+ console.log(`Branch restore preview: ${branch}`);
395
+ console.log(`Source: ${source}`);
396
+ console.log(`Target: ${targetPath}`);
397
+ if (!options.apply) {
398
+ console.log("Preview only. Re-run with --apply to restore the store.");
399
+ return;
73
400
  }
74
- else {
75
- createEmptyBranchKb(currentBranch);
401
+ const manifest = readBranchStoreManifest(source);
402
+ if (manifest === null || !branchStoreManifestMatches(source, branch)) {
403
+ throw new Error(`Quarantined store identity mismatch for '${branch}'.`);
76
404
  }
405
+ fs.mkdirSync(path.dirname(targetPath), { recursive: true });
406
+ fs.renameSync(source, targetPath);
407
+ console.log(`Restored exact branch store for '${branch}'.`);
77
408
  }
78
409
  export default branchEnsureCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAkFA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,YAAY,EAAE,SAAS,EAAE,CAAC;AAG1B,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AA2bD,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAqW/B"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAqFA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAmaD,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA4W/B"}
@@ -17,14 +17,15 @@
17
17
  */
18
18
  import { existsSync } from "node:fs";
19
19
  import * as path from "node:path";
20
- import { getBranchOverride, isCliTraceOrDebugEnabled } from "../env.js";
20
+ import { EngineClient } from "../engine.js";
21
+ import { isCliTraceOrDebugEnabled } from "../env.js";
21
22
  import { extractFromManifest, extractFromManifestString, } from "../extractors/manifest.js";
22
23
  import { extractFromMarkdownString, } from "../extractors/markdown.js";
23
24
  import { PrologProcess } from "../prolog.js";
24
25
  import { escapeAtom, parseTriples, parseViolationRows, } from "../prolog/codec.js";
25
26
  import { createSemanticReviewDiagnostics, createSymbolGranularityDiagnostics, createSymbolQualityDiagnostics, hasBlockingImpactDiagnostics, } from "../public/impact-diagnostics.js";
26
27
  import { executeCheck } from "../public/operations/check-executor.js";
27
- import { KIBI_NO_IMPACT_DECLARATION, KIBI_SYMBOLS_MANIFEST_PATH, } from "../traceability/evidence-model.js";
28
+ import { KIBI_NO_IMPACT_DECLARATION, KIBI_SYMBOLS_MANIFEST_PATH, KIBI_SYMBOL_COORDINATES_PATH, } from "../traceability/evidence-model.js";
28
29
  import { getStagedFiles } from "../traceability/git-staged.js";
29
30
  import { validateStagedMarkdown } from "../traceability/markdown-validate.js";
30
31
  import { collectStagedKibiDiagnostics, } from "../traceability/staged-diagnostics.js";
@@ -33,9 +34,9 @@ import { assessStagedSymbolsManifest, collectStagedAuthoredSymbolsManifestEviden
33
34
  import { createManifestLookupSentinelKey, extractSymbolsFromStagedFile, } from "../traceability/symbol-extract.js";
34
35
  import { cleanupTempKb, consultOverlay, createOverlayFacts, createTempKb, projectStagedEntities, } from "../traceability/temp-kb.js";
35
36
  import { formatViolations as formatStagedViolations, validateStagedSymbols, } from "../traceability/validate.js";
36
- import { loadConfig } from "../utils/config.js";
37
+ import { resolveBranchAttachment } from "../utils/branch-resolver.js";
38
+ import { CANONICAL_ENTITY_PATHS } from "../utils/kb-paths.js";
37
39
  import { safeCleanupProlog } from "../utils/prolog-cleanup.js";
38
- import { getCurrentBranch } from "./init-helpers.js";
39
40
  function getMatchGroup(match, index = 1) {
40
41
  const value = match?.[index];
41
42
  return typeof value === "string" ? value : null;
@@ -69,9 +70,8 @@ function buildManifestLookup(stagedFiles) {
69
70
  // Pre-populate lookup from working-tree manifests so that code-only changes
70
71
  // (where symbols.yaml is not staged) still resolve to the correct symbol IDs
71
72
  // and relationships already defined on disk.
72
- const config = loadConfig(process.cwd());
73
- const symbolsRelPath = config.paths.symbols;
74
- if (symbolsRelPath) {
73
+ const symbolsRelPath = CANONICAL_ENTITY_PATHS.symbols;
74
+ {
75
75
  const absSymbolsPath = path.resolve(process.cwd(), symbolsRelPath);
76
76
  if (existsSync(absSymbolsPath)) {
77
77
  try {
@@ -103,10 +103,8 @@ function buildManifestLookup(stagedFiles) {
103
103
  }
104
104
  }
105
105
  const stagedManifestFiles = stagedFiles.filter((file) => file.content !== undefined &&
106
- (file.path.endsWith("/symbols.yaml") ||
107
- file.path.endsWith("/symbols.yml") ||
108
- file.path === "symbols.yaml" ||
109
- file.path === "symbols.yml"));
106
+ (file.path === CANONICAL_ENTITY_PATHS.symbols ||
107
+ file.path === ".kb/symbols.yml"));
110
108
  for (const manifestFile of stagedManifestFiles) {
111
109
  manifestLookup.set(createManifestLookupSentinelKey(manifestFile.path), {
112
110
  id: manifestFile.path,
@@ -172,29 +170,9 @@ function isKibiEntityType(value) {
172
170
  return KIBI_ENTITY_TYPES.has(value);
173
171
  }
174
172
  function isStagedManifestPath(filePath) {
175
- if (filePath.endsWith("/symbols.yaml") ||
176
- filePath.endsWith("/symbols.yml") ||
177
- filePath.endsWith("/symbol-coordinates.yaml") ||
178
- filePath === "symbols.yaml" ||
179
- filePath === "symbols.yml" ||
180
- filePath === "symbol-coordinates.yaml") {
181
- return true;
182
- }
183
- try {
184
- const config = loadConfig(process.cwd());
185
- if (config.paths.symbols) {
186
- const relSymbols = config.paths.symbols;
187
- const configuredBase = relSymbols.split(/[\\/]/).pop();
188
- if (filePath === relSymbols ||
189
- (configuredBase && filePath.endsWith(`/${configuredBase}`))) {
190
- return true;
191
- }
192
- }
193
- }
194
- catch {
195
- // ignore config read errors
196
- }
197
- return false;
173
+ return (filePath === CANONICAL_ENTITY_PATHS.symbols ||
174
+ filePath === ".kb/symbols.yml" ||
175
+ filePath === KIBI_SYMBOL_COORDINATES_PATH);
198
176
  }
199
177
  function isTestOnlySourcePath(filePath) {
200
178
  return (filePath.startsWith("tests/") ||
@@ -360,27 +338,23 @@ function buildStagedKibiImpactEvidence(options) {
360
338
  // implements REQ-006
361
339
  export async function checkCommand(options) {
362
340
  let prolog = null;
341
+ let engine = null;
363
342
  let attached = false;
343
+ let resolvedBranch = "";
364
344
  try {
365
345
  let resolvedKbPath = "";
366
346
  if (options.kbPath) {
367
347
  resolvedKbPath = options.kbPath;
368
348
  }
369
349
  else {
370
- const envBranch = getBranchOverride();
371
- let branch = envBranch || undefined;
372
- if (!branch) {
373
- try {
374
- branch = await getCurrentBranch(process.cwd());
375
- }
376
- catch {
377
- branch = undefined;
378
- }
350
+ const attachment = resolveBranchAttachment(process.cwd());
351
+ if ("error" in attachment)
352
+ throw new Error(attachment.error);
353
+ resolvedBranch = attachment.kbBranch;
354
+ if (attachment.migrationRequired) {
355
+ console.warn(`Warning: reading legacy KB attachment ${attachment.gitBranch} -> ${attachment.kbBranch}; migrate before writes or sync.`);
379
356
  }
380
- if (!branch)
381
- branch = envBranch || "develop";
382
- // fallback to main if develop isn't present? keep path consistent
383
- resolvedKbPath = path.join(process.cwd(), ".kb/branches", branch || "main");
357
+ resolvedKbPath = attachment.storePath;
384
358
  }
385
359
  if (options.staged) {
386
360
  const minLinks = options.minLinks ? Number(options.minLinks) : 1;
@@ -392,7 +366,7 @@ export async function checkCommand(options) {
392
366
  return { exitCode: 0 };
393
367
  }
394
368
  const { manifestLookup, manifestResults, authoredSymbolResults, stagedAuthoredSymbolResults, } = buildManifestLookup(stagedFiles);
395
- const symbolsManifestPath = loadConfig(process.cwd()).paths.symbols ?? KIBI_SYMBOLS_MANIFEST_PATH;
369
+ const symbolsManifestPath = KIBI_SYMBOLS_MANIFEST_PATH;
396
370
  const sourceFiles = stagedFiles.filter((file) => !file.path.endsWith(".md") && !isStagedManifestPath(file.path));
397
371
  const markdownFiles = stagedFiles.filter((f) => f.path.endsWith(".md"));
398
372
  const markdownErrors = [];
@@ -564,20 +538,33 @@ export async function checkCommand(options) {
564
538
  return { exitCode: 1 };
565
539
  }
566
540
  }
567
- prolog = new PrologProcess({ timeout: 120000 });
568
- await prolog.start();
569
- const kbPathEscaped = escapeAtom(resolvedKbPath);
570
- const attachResult = await prolog.query(`kb_attach('${kbPathEscaped}')`);
571
- if (!attachResult.success) {
572
- await prolog.terminate();
573
- console.error(`Error: Failed to attach KB: ${attachResult.error}`);
574
- return { exitCode: 1 };
541
+ // The active branch is hosted by the journaled engine. Keep the explicit
542
+ // --kb-path escape hatch on the one-shot path for alternate/staged stores,
543
+ // but never compete with the branch daemon for its RDF lock.
544
+ if (options.kbPath === undefined) {
545
+ engine = new EngineClient({
546
+ workspaceRoot: process.cwd(),
547
+ branch: resolvedBranch,
548
+ timeout: 120_000,
549
+ });
550
+ await engine.start();
551
+ }
552
+ else {
553
+ prolog = new PrologProcess({ timeout: 120000 });
554
+ await prolog.start();
555
+ const kbPathEscaped = escapeAtom(resolvedKbPath);
556
+ const attachResult = await prolog.query(`kb_attach('${kbPathEscaped}')`);
557
+ if (!attachResult.success) {
558
+ await prolog.terminate();
559
+ console.error(`Error: Failed to attach KB: ${attachResult.error}`);
560
+ return { exitCode: 1 };
561
+ }
562
+ attached = true;
575
563
  }
576
- attached = true;
577
- if (!prolog) {
578
- throw new Error("Prolog process not initialized");
564
+ const activeProlog = engine ?? prolog;
565
+ if (!activeProlog) {
566
+ throw new Error("Prolog runtime not initialized");
579
567
  }
580
- const activeProlog = prolog;
581
568
  const rules = options.rules
582
569
  ?.split(",")
583
570
  .map((rule) => rule.trim())
@@ -637,6 +624,7 @@ export async function checkCommand(options) {
637
624
  return { exitCode: 1 };
638
625
  }
639
626
  finally {
627
+ await engine?.terminate();
640
628
  await safeCleanupProlog(prolog);
641
629
  }
642
630
  }
@@ -1009,20 +997,3 @@ async function checkSymbolCoverage(prolog) {
1009
997
  }
1010
998
  return violations;
1011
999
  }
1012
- async function checkSymbolTraceability(prolog, requireAdr) {
1013
- const violations = [];
1014
- const requireAdrStr = requireAdr ? "true" : "false";
1015
- const result = await prolog.query(`findall(violation(Rule, EntityId, Desc, Sugg, Src),
1016
- checks:symbol_traceability_violation(${requireAdrStr}, violation(Rule, EntityId, Desc, Sugg, Src)),
1017
- Violations)`);
1018
- if (!result.success || !result.bindings.Violations) {
1019
- return violations;
1020
- }
1021
- const violationsStr = result.bindings.Violations;
1022
- if (violationsStr && violationsStr !== "[]") {
1023
- for (const v of parseViolationRows(violationsStr)) {
1024
- violations.push(v);
1025
- }
1026
- }
1027
- return violations;
1028
- }
@@ -1,4 +1,4 @@
1
- import { coverageSpec } from "../public/operations/index.js";
1
+ import { coverageSpec } from "../public/operations/specs/reporting.js";
2
2
  import { executeReportingSpec, printDiscoveryResult, } from "./discovery-shared.js";
3
3
  // implements REQ-002, REQ-003
4
4
  export async function coverageCommand(options) {
@@ -1,5 +1,6 @@
1
1
  import { PrologProcess, resolveKbPlPath } from "../prolog.js";
2
- import { type OperationSpec, type RuntimeOptions } from "../public/operations/index.js";
2
+ import { type RuntimeOptions } from "../public/operations/runtime-types.js";
3
+ import type { OperationSpec } from "../public/operations/types.js";
3
4
  export { renderCoverageTable } from "./discovery-table.js";
4
5
  export interface DiscoveryCommandOptions {
5
6
  format?: "json" | "table";