kibi-cli 0.19.0 → 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 (506) hide show
  1. package/dist/cli-operation-loader.d.ts.map +1 -1
  2. package/dist/cli-operation-loader.js +53 -20
  3. package/dist/cli-operation-metadata.d.ts +20 -8
  4. package/dist/cli-operation-metadata.d.ts.map +1 -1
  5. package/dist/cli-operation-metadata.js +23 -8
  6. package/dist/cli-protocol.d.ts.map +1 -1
  7. package/dist/cli-protocol.js +38 -8
  8. package/dist/cli-register-foundation.d.ts.map +1 -1
  9. package/dist/cli-register-foundation.js +14 -2
  10. package/dist/cli-register-maintenance.d.ts.map +1 -1
  11. package/dist/cli-register-maintenance.js +26 -4
  12. package/dist/cli-register-reporting.d.ts.map +1 -1
  13. package/dist/cli-register-reporting.js +10 -0
  14. package/dist/cli-register-verification.d.ts +3 -0
  15. package/dist/cli-register-verification.d.ts.map +1 -0
  16. package/dist/cli-register-verification.js +16 -0
  17. package/dist/cli.d.ts.map +1 -1
  18. package/dist/cli.js +2 -0
  19. package/dist/commands/aggregated-checks.d.ts +1 -2
  20. package/dist/commands/aggregated-checks.d.ts.map +1 -1
  21. package/dist/commands/aggregated-checks.js +14 -9
  22. package/dist/commands/branch.d.ts +36 -0
  23. package/dist/commands/branch.d.ts.map +1 -1
  24. package/dist/commands/branch.js +371 -40
  25. package/dist/commands/check.d.ts.map +1 -1
  26. package/dist/commands/check.js +20 -67
  27. package/dist/commands/discovery-shared.d.ts.map +1 -1
  28. package/dist/commands/discovery-shared.js +10 -19
  29. package/dist/commands/doctor.d.ts +4 -1
  30. package/dist/commands/doctor.d.ts.map +1 -1
  31. package/dist/commands/doctor.js +259 -24
  32. package/dist/commands/engine.d.ts.map +1 -1
  33. package/dist/commands/engine.js +10 -7
  34. package/dist/commands/gc.d.ts +5 -2
  35. package/dist/commands/gc.d.ts.map +1 -1
  36. package/dist/commands/gc.js +140 -71
  37. package/dist/commands/github-init.d.ts +56 -0
  38. package/dist/commands/github-init.d.ts.map +1 -0
  39. package/dist/commands/github-init.js +310 -0
  40. package/dist/commands/init-helpers.d.ts +1 -1
  41. package/dist/commands/init-helpers.d.ts.map +1 -1
  42. package/dist/commands/init-helpers.js +73 -25
  43. package/dist/commands/init.d.ts +2 -0
  44. package/dist/commands/init.d.ts.map +1 -1
  45. package/dist/commands/init.js +79 -24
  46. package/dist/commands/legacy-storage-migration.d.ts +54 -0
  47. package/dist/commands/legacy-storage-migration.d.ts.map +1 -0
  48. package/dist/commands/legacy-storage-migration.js +277 -0
  49. package/dist/commands/migrate.d.ts +7 -0
  50. package/dist/commands/migrate.d.ts.map +1 -1
  51. package/dist/commands/migrate.js +244 -91
  52. package/dist/commands/report.d.ts +24 -0
  53. package/dist/commands/report.d.ts.map +1 -0
  54. package/dist/commands/report.js +191 -0
  55. package/dist/commands/sync/cache.d.ts +16 -3
  56. package/dist/commands/sync/cache.d.ts.map +1 -1
  57. package/dist/commands/sync/cache.js +111 -4
  58. package/dist/commands/sync/discovery.d.ts +23 -2
  59. package/dist/commands/sync/discovery.d.ts.map +1 -1
  60. package/dist/commands/sync/discovery.js +196 -15
  61. package/dist/commands/sync/extraction.d.ts +8 -1
  62. package/dist/commands/sync/extraction.d.ts.map +1 -1
  63. package/dist/commands/sync/extraction.js +38 -4
  64. package/dist/commands/sync/manifest.d.ts +8 -5
  65. package/dist/commands/sync/manifest.d.ts.map +1 -1
  66. package/dist/commands/sync/manifest.js +142 -39
  67. package/dist/commands/sync/persistence.d.ts.map +1 -1
  68. package/dist/commands/sync/persistence.js +3 -0
  69. package/dist/commands/sync.d.ts +6 -0
  70. package/dist/commands/sync.d.ts.map +1 -1
  71. package/dist/commands/sync.js +304 -79
  72. package/dist/commands/verify.d.ts +10 -0
  73. package/dist/commands/verify.d.ts.map +1 -0
  74. package/dist/commands/verify.js +126 -0
  75. package/dist/diagnostics.d.ts +1 -1
  76. package/dist/diagnostics.d.ts.map +1 -1
  77. package/dist/engine.d.ts +96 -3
  78. package/dist/engine.d.ts.map +1 -1
  79. package/dist/engine.js +392 -23
  80. package/dist/env.d.ts.map +1 -1
  81. package/dist/env.js +5 -6
  82. package/dist/extractors/manifest.d.ts +8 -1
  83. package/dist/extractors/manifest.d.ts.map +1 -1
  84. package/dist/extractors/manifest.js +51 -9
  85. package/dist/extractors/markdown.d.ts +2 -1
  86. package/dist/extractors/markdown.d.ts.map +1 -1
  87. package/dist/extractors/markdown.js +21 -3
  88. package/dist/extractors/playwright-cases.d.ts +24 -0
  89. package/dist/extractors/playwright-cases.d.ts.map +1 -0
  90. package/dist/extractors/playwright-cases.js +126 -0
  91. package/dist/extractors/relationships.d.ts.map +1 -1
  92. package/dist/extractors/relationships.js +1 -0
  93. package/dist/extractors/symbol-coordinates.d.ts +81 -3
  94. package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
  95. package/dist/extractors/symbol-coordinates.js +389 -51
  96. package/dist/extractors/symbols-coordinator.js +11 -1
  97. package/dist/intent-search.d.ts +60 -0
  98. package/dist/intent-search.d.ts.map +1 -0
  99. package/dist/intent-search.js +433 -0
  100. package/dist/operations/bootstrap/activation.d.ts.map +1 -0
  101. package/dist/operations/{autopilot → bootstrap}/activation.js +48 -31
  102. package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts.map +1 -1
  103. package/dist/operations/bootstrap/candidates.d.ts +4 -0
  104. package/dist/operations/{autopilot → bootstrap}/candidates.d.ts.map +1 -1
  105. package/dist/operations/{autopilot → bootstrap}/candidates.js +22 -8
  106. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts +2 -2
  107. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts.map +1 -1
  108. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.js +46 -6
  109. package/dist/operations/{autopilot → bootstrap}/discovery.d.ts +1 -1
  110. package/dist/operations/bootstrap/discovery.d.ts.map +1 -0
  111. package/dist/operations/{autopilot → bootstrap}/discovery.js +21 -14
  112. package/dist/operations/bootstrap/generate.d.ts +8 -0
  113. package/dist/operations/bootstrap/generate.d.ts.map +1 -0
  114. package/dist/operations/bootstrap/generate.js +204 -0
  115. package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts +2 -2
  116. package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts.map +1 -1
  117. package/dist/operations/{autopilot → bootstrap}/guidance-actions.js +4 -4
  118. package/dist/operations/{autopilot → bootstrap}/guidance.d.ts +2 -2
  119. package/dist/operations/{autopilot → bootstrap}/guidance.d.ts.map +1 -1
  120. package/dist/operations/{autopilot → bootstrap}/guidance.js +2 -0
  121. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts +2 -2
  122. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts.map +1 -1
  123. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.js +4 -3
  124. package/dist/operations/bootstrap/presentation.d.ts +15 -0
  125. package/dist/operations/bootstrap/presentation.d.ts.map +1 -0
  126. package/dist/operations/bootstrap/presentation.js +177 -0
  127. package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts.map +1 -1
  128. package/dist/operations/{autopilot → bootstrap}/types.d.ts +63 -21
  129. package/dist/operations/bootstrap/types.d.ts.map +1 -0
  130. package/dist/operations/bootstrap/types.js +25 -0
  131. package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
  132. package/dist/operations/modeling/model-requirement.js +4 -17
  133. package/dist/operations/modeling/predicate-applicability.d.ts +16 -0
  134. package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -0
  135. package/dist/operations/modeling/predicate-applicability.js +276 -0
  136. package/dist/operations/modeling/predicate-applyplan.d.ts +13 -2
  137. package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
  138. package/dist/operations/modeling/predicate-applyplan.js +100 -3
  139. package/dist/operations/modeling/predicate-bindings.d.ts +6 -0
  140. package/dist/operations/modeling/predicate-bindings.d.ts.map +1 -0
  141. package/dist/operations/modeling/predicate-bindings.js +122 -0
  142. package/dist/operations/modeling/predicate-catalog-4.d.ts.map +1 -1
  143. package/dist/operations/modeling/predicate-catalog-4.js +155 -0
  144. package/dist/operations/modeling/predicate-inference-1.d.ts.map +1 -1
  145. package/dist/operations/modeling/predicate-inference-1.js +8 -0
  146. package/dist/operations/modeling/predicate-inference-launcher.d.ts +10 -0
  147. package/dist/operations/modeling/predicate-inference-launcher.d.ts.map +1 -0
  148. package/dist/operations/modeling/predicate-inference-launcher.js +13 -0
  149. package/dist/operations/modeling/predicate-inference.d.ts.map +1 -1
  150. package/dist/operations/modeling/predicate-inference.js +4 -0
  151. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
  152. package/dist/operations/modeling/predicate-loader.js +7 -0
  153. package/dist/operations/modeling/predicate-ranker.d.ts +8 -1
  154. package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
  155. package/dist/operations/modeling/predicate-ranker.js +156 -24
  156. package/dist/operations/modeling/predicate-score-3.d.ts.map +1 -1
  157. package/dist/operations/modeling/predicate-score-3.js +6 -0
  158. package/dist/operations/modeling/predicate-types.d.ts +34 -0
  159. package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
  160. package/dist/operations/modeling/predicate-usage-hints-3.d.ts.map +1 -1
  161. package/dist/operations/modeling/predicate-usage-hints-3.js +40 -0
  162. package/dist/operations/modeling/predicate-utils.d.ts.map +1 -1
  163. package/dist/operations/modeling/predicate-utils.js +2 -0
  164. package/dist/operations/modeling/suggest-predicates.d.ts +1 -1
  165. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
  166. package/dist/operations/modeling/suggest-predicates.js +170 -32
  167. package/dist/operations/mutation/delete.d.ts.map +1 -1
  168. package/dist/operations/mutation/delete.js +415 -19
  169. package/dist/operations/mutation/entity-projection.d.ts +11 -0
  170. package/dist/operations/mutation/entity-projection.d.ts.map +1 -0
  171. package/dist/operations/mutation/entity-projection.js +14 -0
  172. package/dist/operations/mutation/relationships.d.ts +10 -0
  173. package/dist/operations/mutation/relationships.d.ts.map +1 -1
  174. package/dist/operations/mutation/relationships.js +71 -1
  175. package/dist/operations/mutation/serialization.d.ts.map +1 -1
  176. package/dist/operations/mutation/serialization.js +1 -0
  177. package/dist/operations/mutation/source-authoring.d.ts +61 -0
  178. package/dist/operations/mutation/source-authoring.d.ts.map +1 -0
  179. package/dist/operations/mutation/source-authoring.js +543 -0
  180. package/dist/operations/mutation/symbol-compiler-lock.d.ts +51 -0
  181. package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -0
  182. package/dist/operations/mutation/symbol-compiler-lock.js +274 -0
  183. package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
  184. package/dist/operations/mutation/symbol-granularity.js +34 -3
  185. package/dist/operations/mutation/symbol-refresh.d.ts +18 -1
  186. package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
  187. package/dist/operations/mutation/symbol-refresh.js +225 -63
  188. package/dist/operations/mutation/types.d.ts +57 -1
  189. package/dist/operations/mutation/types.d.ts.map +1 -1
  190. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  191. package/dist/operations/mutation/upsert.js +363 -24
  192. package/dist/operations/mutation/validation.d.ts.map +1 -1
  193. package/dist/operations/mutation/validation.js +1 -0
  194. package/dist/operations/planning/apply-plan.d.ts +117 -0
  195. package/dist/operations/planning/apply-plan.d.ts.map +1 -0
  196. package/dist/operations/planning/apply-plan.js +1437 -0
  197. package/dist/operations/planning/compile-intent.d.ts +106 -0
  198. package/dist/operations/planning/compile-intent.d.ts.map +1 -0
  199. package/dist/operations/planning/compile-intent.js +562 -0
  200. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  201. package/dist/operations/semantic-advisor/analyze-prose.js +6 -2
  202. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
  203. package/dist/operations/semantic-advisor/clauses.js +15 -2
  204. package/dist/operations/semantic-advisor/ingestion-boundary.d.ts.map +1 -1
  205. package/dist/operations/semantic-advisor/ingestion-boundary.js +7 -3
  206. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts +51 -0
  207. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts.map +1 -0
  208. package/dist/operations/semantic-advisor/predicate-rules-launcher.js +96 -0
  209. package/dist/operations/semantic-advisor/types.d.ts +13 -5
  210. package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
  211. package/dist/operations/verification/ingest-verification.d.ts +29 -0
  212. package/dist/operations/verification/ingest-verification.d.ts.map +1 -0
  213. package/dist/operations/verification/ingest-verification.js +192 -0
  214. package/dist/prolog/codec.d.ts.map +1 -1
  215. package/dist/prolog/codec.js +2 -1
  216. package/dist/prolog.d.ts.map +1 -1
  217. package/dist/prolog.js +27 -8
  218. package/dist/public/branch-resolver.d.ts +1 -0
  219. package/dist/public/branch-resolver.d.ts.map +1 -1
  220. package/dist/public/branch-resolver.js +1 -0
  221. package/dist/public/check-types.d.ts +2 -2
  222. package/dist/public/check-types.d.ts.map +1 -1
  223. package/dist/public/check-types.js +16 -16
  224. package/dist/public/diagnostic-usage.d.ts.map +1 -1
  225. package/dist/public/diagnostic-usage.js +69 -1
  226. package/dist/public/distribution-parity.d.ts +1 -1
  227. package/dist/public/distribution-parity.d.ts.map +1 -1
  228. package/dist/public/distribution-parity.js +1 -0
  229. package/dist/public/ignore-policy.d.ts.map +1 -1
  230. package/dist/public/ignore-policy.js +16 -4
  231. package/dist/public/impact/coverage-depth-quality.d.ts +6 -1
  232. package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
  233. package/dist/public/impact/coverage-depth-quality.js +21 -3
  234. package/dist/public/impact/full-kb-quality.d.ts +4 -2
  235. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  236. package/dist/public/impact/full-kb-quality.js +61 -1
  237. package/dist/public/impact/manifest.d.ts.map +1 -1
  238. package/dist/public/impact/manifest.js +2 -5
  239. package/dist/public/operational-artifacts.d.ts.map +1 -1
  240. package/dist/public/operational-artifacts.js +7 -1
  241. package/dist/public/operations/catalog.d.ts +682 -67
  242. package/dist/public/operations/catalog.d.ts.map +1 -1
  243. package/dist/public/operations/catalog.js +126 -4
  244. package/dist/public/operations/check-executor.d.ts +2 -2
  245. package/dist/public/operations/check-executor.d.ts.map +1 -1
  246. package/dist/public/operations/check-executor.js +72 -13
  247. package/dist/public/operations/check-format-shared.d.ts +3 -0
  248. package/dist/public/operations/check-format-shared.d.ts.map +1 -1
  249. package/dist/public/operations/check-format-shared.js +3 -0
  250. package/dist/public/operations/check-helpers.d.ts +27 -2
  251. package/dist/public/operations/check-helpers.d.ts.map +1 -1
  252. package/dist/public/operations/check-helpers.js +62 -26
  253. package/dist/public/operations/contracts.d.ts +11 -0
  254. package/dist/public/operations/contracts.d.ts.map +1 -0
  255. package/dist/public/operations/contracts.js +325 -0
  256. package/dist/public/operations/discovery-executors.d.ts +37 -1
  257. package/dist/public/operations/discovery-executors.d.ts.map +1 -1
  258. package/dist/public/operations/discovery-executors.js +206 -6
  259. package/dist/public/operations/index.d.ts +9 -4
  260. package/dist/public/operations/index.d.ts.map +1 -1
  261. package/dist/public/operations/index.js +8 -3
  262. package/dist/public/operations/migration-plan.d.ts +101 -0
  263. package/dist/public/operations/migration-plan.d.ts.map +1 -0
  264. package/dist/public/operations/migration-plan.js +537 -0
  265. package/dist/public/operations/node-ports.d.ts.map +1 -1
  266. package/dist/public/operations/node-ports.js +68 -8
  267. package/dist/public/operations/prolog-json.d.ts +14 -0
  268. package/dist/public/operations/prolog-json.d.ts.map +1 -1
  269. package/dist/public/operations/prolog-json.js +44 -5
  270. package/dist/public/operations/repair-plan.d.ts.map +1 -1
  271. package/dist/public/operations/repair-plan.js +1 -0
  272. package/dist/public/operations/result-envelope.d.ts +13 -0
  273. package/dist/public/operations/result-envelope.d.ts.map +1 -0
  274. package/dist/public/operations/result-envelope.js +104 -0
  275. package/dist/public/operations/runtime-types.d.ts +97 -7
  276. package/dist/public/operations/runtime-types.d.ts.map +1 -1
  277. package/dist/public/operations/source-relationship-parity.d.ts +13 -0
  278. package/dist/public/operations/source-relationship-parity.d.ts.map +1 -0
  279. package/dist/public/operations/source-relationship-parity.js +162 -0
  280. package/dist/public/operations/specs/{autopilot.d.ts → bootstrap.d.ts} +9 -9
  281. package/dist/public/operations/specs/bootstrap.d.ts.map +1 -0
  282. package/dist/public/operations/specs/{autopilot.js → bootstrap.js} +8 -7
  283. package/dist/public/operations/specs/check.d.ts +4 -4
  284. package/dist/public/operations/specs/check.d.ts.map +1 -1
  285. package/dist/public/operations/specs/check.js +4 -3
  286. package/dist/public/operations/specs/discovery.d.ts +87 -3
  287. package/dist/public/operations/specs/discovery.d.ts.map +1 -1
  288. package/dist/public/operations/specs/discovery.js +53 -3
  289. package/dist/public/operations/specs/modeling.d.ts +3 -3
  290. package/dist/public/operations/specs/modeling.js +3 -3
  291. package/dist/public/operations/specs/mutation-schemas.d.ts +190 -47
  292. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  293. package/dist/public/operations/specs/mutation-schemas.js +3 -1
  294. package/dist/public/operations/specs/mutation.d.ts +42 -2
  295. package/dist/public/operations/specs/mutation.d.ts.map +1 -1
  296. package/dist/public/operations/specs/mutation.js +26 -2
  297. package/dist/public/operations/specs/planning.d.ts +270 -0
  298. package/dist/public/operations/specs/planning.d.ts.map +1 -0
  299. package/dist/public/operations/specs/planning.js +191 -0
  300. package/dist/public/operations/specs/reporting.d.ts +4 -1
  301. package/dist/public/operations/specs/reporting.d.ts.map +1 -1
  302. package/dist/public/operations/specs/reporting.js +46 -1
  303. package/dist/public/operations/specs/upsert.d.ts +204 -47
  304. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  305. package/dist/public/operations/specs/upsert.js +9 -0
  306. package/dist/public/operations/specs/verification.d.ts +78 -0
  307. package/dist/public/operations/specs/verification.d.ts.map +1 -0
  308. package/dist/public/operations/specs/verification.js +62 -0
  309. package/dist/public/operations/symbol-repair-plan.d.ts +11 -0
  310. package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -0
  311. package/dist/public/operations/symbol-repair-plan.js +123 -0
  312. package/dist/public/operations/types.d.ts +52 -1
  313. package/dist/public/operations/types.d.ts.map +1 -1
  314. package/dist/public/playwright-case-id.d.ts +8 -0
  315. package/dist/public/playwright-case-id.d.ts.map +1 -0
  316. package/dist/public/playwright-case-id.js +25 -0
  317. package/dist/public/schemas/entity.d.ts.map +1 -1
  318. package/dist/public/schemas/entity.js +4 -2
  319. package/dist/public/skills/kibi-bootstrap/SKILL.md +58 -0
  320. package/dist/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
  321. package/dist/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
  322. package/dist/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
  323. package/dist/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
  324. package/dist/public/skills/kibi-freshness/SKILL.md +39 -9
  325. package/dist/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
  326. package/dist/public/skills/kibi-freshness/resources/operation-access.md +6 -0
  327. package/dist/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
  328. package/dist/public/skills/kibi-traceability/SKILL.md +47 -47
  329. package/dist/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
  330. package/dist/public/skills/kibi-traceability/resources/operation-access.md +5 -0
  331. package/dist/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
  332. package/dist/public/skills/kibi-traceability/resources/traceability.md +8 -0
  333. package/dist/public/skills/kibi-usage/SKILL.md +115 -239
  334. package/dist/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
  335. package/dist/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
  336. package/dist/public/skills/kibi-usage/resources/operation-access.md +36 -38
  337. package/dist/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
  338. package/dist/public/skills/kibi-usage/resources/source-authoring.md +31 -0
  339. package/dist/public/skills/kibi-usage/resources/workflows.md +56 -3
  340. package/dist/public/symbol-granularity.d.ts +1 -1
  341. package/dist/public/symbol-granularity.d.ts.map +1 -1
  342. package/dist/public/symbol-granularity.js +1 -0
  343. package/dist/public/telemetry-acceptance.d.ts +7 -0
  344. package/dist/public/telemetry-acceptance.d.ts.map +1 -1
  345. package/dist/public/telemetry-acceptance.js +8 -1
  346. package/dist/public/telemetry-remediation.js +1 -1
  347. package/dist/public/verification-receipt.d.ts +206 -39
  348. package/dist/public/verification-receipt.d.ts.map +1 -1
  349. package/dist/public/verification-receipt.js +171 -4
  350. package/dist/relationships/shards.d.ts +16 -0
  351. package/dist/relationships/shards.d.ts.map +1 -1
  352. package/dist/relationships/shards.js +87 -2
  353. package/dist/report/brand.d.ts +19 -0
  354. package/dist/report/brand.d.ts.map +1 -0
  355. package/dist/report/brand.js +112 -0
  356. package/dist/report/html-report.d.ts +19 -0
  357. package/dist/report/html-report.d.ts.map +1 -0
  358. package/dist/report/html-report.js +963 -0
  359. package/dist/report/relative-time.d.ts +4 -0
  360. package/dist/report/relative-time.d.ts.map +1 -0
  361. package/dist/report/relative-time.js +46 -0
  362. package/dist/report/report-view.d.ts +17 -0
  363. package/dist/report/report-view.d.ts.map +1 -0
  364. package/dist/report/report-view.js +33 -0
  365. package/dist/report/repository.d.ts +35 -0
  366. package/dist/report/repository.d.ts.map +1 -0
  367. package/dist/report/repository.js +151 -0
  368. package/dist/runtime/cli-runtime.d.ts.map +1 -1
  369. package/dist/runtime/cli-runtime.js +82 -22
  370. package/dist/schemas/entity.schema.json +1148 -273
  371. package/dist/traceability/evidence-model.d.ts +2 -2
  372. package/dist/traceability/evidence-model.d.ts.map +1 -1
  373. package/dist/traceability/evidence-model.js +2 -2
  374. package/dist/traceability/git-staged.d.ts.map +1 -1
  375. package/dist/traceability/git-staged.js +15 -40
  376. package/dist/traceability/markdown-validate.d.ts.map +1 -1
  377. package/dist/traceability/markdown-validate.js +12 -7
  378. package/dist/traceability/staged-impact-contract.d.ts +3 -3
  379. package/dist/traceability/staged-impact-contract.d.ts.map +1 -1
  380. package/dist/traceability/staged-impact-contract.js +10 -38
  381. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  382. package/dist/traceability/staged-symbols-manifest.js +8 -3
  383. package/dist/traceability/temp-kb.d.ts.map +1 -1
  384. package/dist/traceability/temp-kb.js +3 -0
  385. package/dist/types/entities.d.ts +3 -0
  386. package/dist/types/entities.d.ts.map +1 -1
  387. package/dist/utils/branch-resolver.d.ts +24 -10
  388. package/dist/utils/branch-resolver.d.ts.map +1 -1
  389. package/dist/utils/branch-resolver.js +121 -38
  390. package/dist/utils/branch-store-locator.d.ts +23 -0
  391. package/dist/utils/branch-store-locator.d.ts.map +1 -0
  392. package/dist/utils/branch-store-locator.js +90 -0
  393. package/dist/utils/branch-store.d.ts +15 -0
  394. package/dist/utils/branch-store.d.ts.map +1 -0
  395. package/dist/utils/branch-store.js +130 -0
  396. package/dist/utils/config.d.ts +39 -37
  397. package/dist/utils/config.d.ts.map +1 -1
  398. package/dist/utils/config.js +107 -119
  399. package/dist/utils/kb-manifest.d.ts +35 -0
  400. package/dist/utils/kb-manifest.d.ts.map +1 -0
  401. package/dist/utils/kb-manifest.js +154 -0
  402. package/dist/utils/kb-paths.d.ts +54 -0
  403. package/dist/utils/kb-paths.d.ts.map +1 -0
  404. package/dist/utils/kb-paths.js +125 -0
  405. package/dist/utils/manifest-paths.d.ts +4 -4
  406. package/dist/utils/manifest-paths.d.ts.map +1 -1
  407. package/dist/utils/manifest-paths.js +8 -56
  408. package/dist/utils/rule-registry.d.ts +48 -20
  409. package/dist/utils/rule-registry.d.ts.map +1 -1
  410. package/dist/utils/rule-registry.js +82 -77
  411. package/dist/utils/schema-version.d.ts +5 -5
  412. package/dist/utils/schema-version.d.ts.map +1 -1
  413. package/dist/utils/schema-version.js +26 -6
  414. package/dist/utils/strict-modeling.d.ts +0 -4
  415. package/dist/utils/strict-modeling.d.ts.map +1 -1
  416. package/dist/utils/strict-modeling.js +7 -8
  417. package/dist/verification/playwright-reporter.d.ts +21 -0
  418. package/dist/verification/playwright-reporter.d.ts.map +1 -0
  419. package/dist/verification/playwright-reporter.js +114 -0
  420. package/package.json +46 -7
  421. package/schema/config.json +2 -2
  422. package/schema/manifest.json +26 -0
  423. package/src/public/branch-resolver.ts +1 -0
  424. package/src/public/check-types.ts +22 -19
  425. package/src/public/diagnostic-usage.ts +79 -1
  426. package/src/public/distribution-parity.ts +1 -0
  427. package/src/public/ignore-policy.ts +16 -10
  428. package/src/public/impact/coverage-depth-quality.ts +36 -0
  429. package/src/public/impact/full-kb-quality.ts +118 -5
  430. package/src/public/impact/manifest.ts +2 -4
  431. package/src/public/operational-artifacts.ts +9 -1
  432. package/src/public/operations/catalog.ts +146 -9
  433. package/src/public/operations/check-executor.ts +102 -15
  434. package/src/public/operations/check-format-shared.ts +6 -0
  435. package/src/public/operations/check-helpers.ts +74 -35
  436. package/src/public/operations/contracts.ts +366 -0
  437. package/src/public/operations/discovery-executors.ts +299 -12
  438. package/src/public/operations/index.ts +9 -4
  439. package/src/public/operations/migration-plan.ts +740 -0
  440. package/src/public/operations/node-ports.ts +84 -10
  441. package/src/public/operations/prolog-json.ts +60 -5
  442. package/src/public/operations/repair-plan.ts +1 -0
  443. package/src/public/operations/result-envelope.ts +136 -0
  444. package/src/public/operations/runtime-types.ts +91 -5
  445. package/src/public/operations/source-relationship-parity.ts +226 -0
  446. package/src/public/operations/specs/{autopilot.ts → bootstrap.ts} +17 -16
  447. package/src/public/operations/specs/check.ts +4 -3
  448. package/src/public/operations/specs/discovery.ts +57 -3
  449. package/src/public/operations/specs/modeling.ts +3 -3
  450. package/src/public/operations/specs/mutation-schemas.ts +6 -1
  451. package/src/public/operations/specs/mutation.ts +27 -2
  452. package/src/public/operations/specs/planning.ts +234 -0
  453. package/src/public/operations/specs/reporting.ts +55 -1
  454. package/src/public/operations/specs/upsert.ts +10 -0
  455. package/src/public/operations/specs/verification.ts +78 -0
  456. package/src/public/operations/symbol-repair-plan.ts +164 -0
  457. package/src/public/operations/types.ts +62 -1
  458. package/src/public/playwright-case-id.ts +35 -0
  459. package/src/public/schemas/entity.ts +7 -2
  460. package/src/public/skills/kibi-bootstrap/SKILL.md +58 -0
  461. package/src/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
  462. package/src/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
  463. package/src/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
  464. package/src/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
  465. package/src/public/skills/kibi-freshness/SKILL.md +39 -9
  466. package/src/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
  467. package/src/public/skills/kibi-freshness/resources/operation-access.md +6 -0
  468. package/src/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
  469. package/src/public/skills/kibi-traceability/SKILL.md +47 -47
  470. package/src/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
  471. package/src/public/skills/kibi-traceability/resources/operation-access.md +5 -0
  472. package/src/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
  473. package/src/public/skills/kibi-traceability/resources/traceability.md +8 -0
  474. package/src/public/skills/kibi-usage/SKILL.md +115 -239
  475. package/src/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
  476. package/src/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
  477. package/src/public/skills/kibi-usage/resources/operation-access.md +36 -38
  478. package/src/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
  479. package/src/public/skills/kibi-usage/resources/source-authoring.md +31 -0
  480. package/src/public/skills/kibi-usage/resources/workflows.md +56 -3
  481. package/src/public/symbol-granularity.ts +1 -0
  482. package/src/public/telemetry-acceptance.ts +16 -1
  483. package/src/public/telemetry-remediation.ts +1 -1
  484. package/src/public/verification-receipt.ts +248 -6
  485. package/src/schemas/entity.schema.json +1148 -273
  486. package/templates/github/kibi-badge.yml +86 -0
  487. package/templates/github/kibi-report.yml +84 -0
  488. package/dist/operations/autopilot/activation.d.ts.map +0 -1
  489. package/dist/operations/autopilot/candidates.d.ts +0 -4
  490. package/dist/operations/autopilot/discovery.d.ts.map +0 -1
  491. package/dist/operations/autopilot/generate.d.ts +0 -8
  492. package/dist/operations/autopilot/generate.d.ts.map +0 -1
  493. package/dist/operations/autopilot/generate.js +0 -112
  494. package/dist/operations/autopilot/presentation.d.ts +0 -13
  495. package/dist/operations/autopilot/presentation.d.ts.map +0 -1
  496. package/dist/operations/autopilot/presentation.js +0 -91
  497. package/dist/operations/autopilot/types.d.ts.map +0 -1
  498. package/dist/operations/autopilot/types.js +0 -8
  499. package/dist/public/operations/specs/autopilot.d.ts.map +0 -1
  500. package/dist/public/skills/init-kibi/SKILL.md +0 -62
  501. package/src/public/skills/init-kibi/SKILL.md +0 -62
  502. /package/dist/operations/{autopilot → bootstrap}/activation.d.ts +0 -0
  503. /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts +0 -0
  504. /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.js +0 -0
  505. /package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts +0 -0
  506. /package/dist/operations/{autopilot → bootstrap}/requirement-claims.js +0 -0
@@ -0,0 +1,537 @@
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import * as path from "node:path";
4
+ import { legacyConfigExists } from "../../utils/config.js";
5
+ import { readKbManifestStatus } from "../../utils/kb-manifest.js";
6
+ import { getSchemaVersionStatus, normalizeSchemaVersion, } from "../../utils/schema-version.js";
7
+ export const MIGRATION_PLAN_VERSION = "kibi.migration-plan.v2";
8
+ function isRecord(value) {
9
+ return value !== null && typeof value === "object" && !Array.isArray(value);
10
+ }
11
+ function stableValue(value, root = true) {
12
+ if (Array.isArray(value))
13
+ return value.map((entry) => stableValue(entry, false));
14
+ if (!isRecord(value))
15
+ return value;
16
+ return Object.fromEntries(Object.entries(value)
17
+ .filter(([key]) => root
18
+ ? key !== "planHash" && key !== "status" && key !== "summary"
19
+ : key !== "planHash")
20
+ .sort(([left], [right]) => left.localeCompare(right))
21
+ .map(([key, item]) => [key, stableValue(item, false)]));
22
+ }
23
+ // implements REQ-agent-guided-migration-orchestration
24
+ export function migrationPlanHash(value) {
25
+ return createHash("sha256")
26
+ .update(JSON.stringify(stableValue(value)))
27
+ .digest("hex");
28
+ }
29
+ function uniqueSorted(values) {
30
+ return [...new Set(values ?? [])].sort();
31
+ }
32
+ function actionSort(left, right) {
33
+ return (left.state.localeCompare(right.state) ||
34
+ left.safety.localeCompare(right.safety) ||
35
+ left.category.localeCompare(right.category) ||
36
+ left.id.localeCompare(right.id));
37
+ }
38
+ /** Return actions in a deterministic dependency-first order for agents and the applier. */
39
+ function dependencyOrder(actions) {
40
+ const byId = new Map(actions.map((action) => [action.id, action]));
41
+ const remaining = new Map(actions.map((action) => [
42
+ action.id,
43
+ new Set(action.dependsOn.filter((dependency) => byId.has(dependency))),
44
+ ]));
45
+ const ordered = [];
46
+ const ready = actions
47
+ .filter((action) => (remaining.get(action.id)?.size ?? 0) === 0)
48
+ .sort(actionSort)
49
+ .map((action) => action.id);
50
+ const queued = new Set(ready);
51
+ while (ready.length > 0) {
52
+ const id = ready.shift();
53
+ if (id === undefined)
54
+ break;
55
+ queued.delete(id);
56
+ const action = byId.get(id);
57
+ if (action === undefined)
58
+ continue;
59
+ ordered.push(action);
60
+ for (const [candidateId, dependencies] of remaining) {
61
+ if (!dependencies.delete(id) ||
62
+ dependencies.size !== 0 ||
63
+ queued.has(candidateId)) {
64
+ continue;
65
+ }
66
+ ready.push(candidateId);
67
+ queued.add(candidateId);
68
+ ready.sort((left, right) => {
69
+ const leftAction = byId.get(left);
70
+ const rightAction = byId.get(right);
71
+ if (leftAction === undefined || rightAction === undefined) {
72
+ return left.localeCompare(right);
73
+ }
74
+ return actionSort(leftAction, rightAction);
75
+ });
76
+ }
77
+ }
78
+ // Preserve cyclic/missing-dependency actions in canonical order; validation will block them.
79
+ if (ordered.length !== actions.length) {
80
+ const emitted = new Set(ordered.map((action) => action.id));
81
+ ordered.push(...actions.filter((action) => !emitted.has(action.id)).sort(actionSort));
82
+ }
83
+ return ordered;
84
+ }
85
+ function summarize(actions) {
86
+ return {
87
+ actionCount: actions.length,
88
+ readyActionCount: actions.filter((action) => action.state === "ready")
89
+ .length,
90
+ blockedActionCount: actions.filter((action) => action.state === "blocked")
91
+ .length,
92
+ automaticActionCount: actions.filter((action) => action.safety === "automatic").length,
93
+ reviewActionCount: actions.filter((action) => action.safety === "review")
94
+ .length,
95
+ operatorActionCount: actions.filter((action) => action.safety === "operator").length,
96
+ executionActionCount: actions.filter((action) => action.safety === "execution").length,
97
+ };
98
+ }
99
+ // implements REQ-agent-guided-migration-orchestration
100
+ export function buildMigrationPlan(input = {}) {
101
+ const actions = dependencyOrder([...(input.actions ?? [])].sort(actionSort));
102
+ const evaluatedDomains = uniqueSorted(input.evaluatedDomains);
103
+ const incompleteDomains = uniqueSorted(input.incompleteDomains);
104
+ const expected = {
105
+ branch: input.expected?.branch ?? null,
106
+ kbBranch: input.expected?.kbBranch ?? null,
107
+ kbSnapshotId: input.expected?.kbSnapshotId ?? null,
108
+ workspaceSnapshot: input.expected?.workspaceSnapshot ?? null,
109
+ configHash: input.expected?.configHash ?? null,
110
+ };
111
+ const body = {
112
+ version: MIGRATION_PLAN_VERSION,
113
+ expected,
114
+ scope: {
115
+ evaluatedDomains,
116
+ incompleteDomains,
117
+ complete: incompleteDomains.length === 0,
118
+ },
119
+ actions,
120
+ diagnostics: [...(input.diagnostics ?? [])].sort(),
121
+ };
122
+ const planHash = migrationPlanHash(body);
123
+ const summary = summarize(actions);
124
+ const status = actions.length === 0 && incompleteDomains.length === 0
125
+ ? "no_actions"
126
+ : actions.length > 0 && summary.readyActionCount === 0
127
+ ? "blocked"
128
+ : incompleteDomains.length > 0 || summary.blockedActionCount > 0
129
+ ? "partial"
130
+ : "ready";
131
+ return {
132
+ ...body,
133
+ planHash,
134
+ status,
135
+ summary,
136
+ };
137
+ }
138
+ export function mergeMigrationPlans(plans) {
139
+ if (plans.length === 0)
140
+ return buildMigrationPlan();
141
+ const first = plans[0];
142
+ if (first === undefined)
143
+ return buildMigrationPlan();
144
+ const actions = new Map();
145
+ const diagnostics = new Set();
146
+ const evaluated = new Set();
147
+ const incomplete = new Set();
148
+ for (const plan of plans) {
149
+ for (const action of plan.actions) {
150
+ const existing = actions.get(action.id);
151
+ if (existing === undefined || action.state === "ready") {
152
+ actions.set(action.id, action);
153
+ }
154
+ }
155
+ for (const value of plan.diagnostics)
156
+ diagnostics.add(value);
157
+ for (const value of plan.scope.evaluatedDomains)
158
+ evaluated.add(value);
159
+ for (const value of plan.scope.incompleteDomains)
160
+ incomplete.add(value);
161
+ }
162
+ return buildMigrationPlan({
163
+ expected: first.expected,
164
+ evaluatedDomains: [...evaluated],
165
+ incompleteDomains: [...incomplete],
166
+ actions: [...actions.values()],
167
+ diagnostics: [...diagnostics],
168
+ });
169
+ }
170
+ function actionDefaults(input) {
171
+ return {
172
+ id: input.id ?? "migration-action-unknown",
173
+ code: input.code ?? "migration_action",
174
+ category: input.category ?? "quality",
175
+ state: input.state ?? "ready",
176
+ safety: input.safety ?? "review",
177
+ invocation: input.invocation ?? {
178
+ kind: "review",
179
+ instruction: "Review this migration action and choose a disposition.",
180
+ },
181
+ affectedEntityIds: uniqueSorted(input.affectedEntityIds),
182
+ affectedFiles: uniqueSorted(input.affectedFiles),
183
+ dependsOn: uniqueSorted(input.dependsOn),
184
+ preconditions: input.preconditions ?? [],
185
+ postconditions: input.postconditions ?? [],
186
+ evidence: input.evidence ?? {},
187
+ autoApplicable: input.autoApplicable ?? false,
188
+ dispositionRequired: input.dispositionRequired ?? false,
189
+ allowedDispositions: input.allowedDispositions ?? [
190
+ "fixed",
191
+ "accepted",
192
+ "deferred",
193
+ ],
194
+ };
195
+ }
196
+ export function migrationAction(input) {
197
+ return actionDefaults(input);
198
+ }
199
+ export function buildActionsFromCheck(input) {
200
+ const actions = [];
201
+ for (const [index, violation] of (input.violations ?? []).entries()) {
202
+ const rule = typeof violation.rule === "string" ? violation.rule : "check";
203
+ const entityId = typeof violation.entityId === "string" ? violation.entityId : "";
204
+ const suggestion = typeof violation.suggestion === "string"
205
+ ? violation.suggestion
206
+ : typeof violation.description === "string"
207
+ ? violation.description
208
+ : "Review the blocking validation violation.";
209
+ actions.push(migrationAction({
210
+ id: `check-${rule}-${entityId || "workspace"}-${index + 1}`,
211
+ code: `check_${rule}`,
212
+ category: "quality",
213
+ safety: "review",
214
+ invocation: { kind: "review", instruction: suggestion },
215
+ affectedEntityIds: entityId ? [entityId] : [],
216
+ evidence: { violation },
217
+ dispositionRequired: false,
218
+ }));
219
+ }
220
+ for (const [index, diagnostic] of (input.qualityDiagnostics ?? []).entries()) {
221
+ const id = typeof diagnostic.id === "string" ? diagnostic.id : "quality";
222
+ const entityId = typeof diagnostic.entityId === "string" ? diagnostic.entityId : "";
223
+ const suggestion = typeof diagnostic.suggestion === "string"
224
+ ? diagnostic.suggestion
225
+ : "Review this quality diagnostic.";
226
+ const blocking = diagnostic.blocking === true;
227
+ actions.push(migrationAction({
228
+ id: `diagnostic-${id}-${entityId || "workspace"}-${index + 1}`,
229
+ code: `quality_${id}`,
230
+ category: "quality",
231
+ safety: blocking ? "review" : "review",
232
+ invocation: { kind: "review", instruction: suggestion },
233
+ affectedEntityIds: entityId ? [entityId] : [],
234
+ affectedFiles: Array.isArray(diagnostic.files)
235
+ ? diagnostic.files.filter((value) => typeof value === "string")
236
+ : [],
237
+ evidence: { diagnostic },
238
+ dispositionRequired: true,
239
+ }));
240
+ }
241
+ return actions;
242
+ }
243
+ export function buildActionsFromCoverage(input) {
244
+ const actions = [];
245
+ const batches = Array.isArray(input.repairPlan?.batches)
246
+ ? input.repairPlan.batches.filter(isRecord)
247
+ : [];
248
+ for (const batch of batches) {
249
+ const id = typeof batch.id === "string" ? batch.id : "repair-batch";
250
+ const phase = typeof batch.phase === "string" ? batch.phase : "review";
251
+ const req = typeof batch.requirementId === "string" ? batch.requirementId : "";
252
+ const ready = batch.state === "ready";
253
+ const automatic = phase === "source_coordinates";
254
+ actions.push(migrationAction({
255
+ id: `coverage-${id}`,
256
+ code: `coverage_${phase}`,
257
+ category: phase === "verification_evidence" ? "verification" : "semantic",
258
+ state: ready ? "ready" : "blocked",
259
+ safety: automatic
260
+ ? "automatic"
261
+ : phase === "verification_evidence"
262
+ ? "execution"
263
+ : "review",
264
+ invocation: automatic
265
+ ? {
266
+ kind: "cli",
267
+ command_argv: ["kibi", "sync", "--refresh-symbol-coordinates"],
268
+ }
269
+ : {
270
+ kind: "review",
271
+ instruction: typeof batch.objective === "string"
272
+ ? batch.objective
273
+ : "Apply the dependency-ordered coverage repair batch.",
274
+ },
275
+ affectedEntityIds: req ? [req] : [],
276
+ dependsOn: Array.isArray(batch.dependsOn)
277
+ ? batch.dependsOn
278
+ .filter((value) => typeof value === "string")
279
+ .map((value) => `coverage-${value}`)
280
+ : [],
281
+ evidence: { batch },
282
+ autoApplicable: automatic && ready,
283
+ dispositionRequired: !automatic,
284
+ }));
285
+ }
286
+ const repairs = Array.isArray(input.symbolRepairPlan?.repairs)
287
+ ? input.symbolRepairPlan.repairs.filter(isRecord)
288
+ : [];
289
+ for (const repair of repairs) {
290
+ const symbolId = typeof repair.symbolId === "string" ? repair.symbolId : "symbol";
291
+ const action = typeof repair.action === "string" ? repair.action : "review";
292
+ const automatic = action === "refresh_coordinates";
293
+ actions.push(migrationAction({
294
+ id: `symbol-${action}-${symbolId}`,
295
+ code: `symbol_${action}`,
296
+ category: "symbol",
297
+ safety: automatic ? "automatic" : "review",
298
+ invocation: automatic
299
+ ? {
300
+ kind: "cli",
301
+ command_argv: ["kibi", "sync", "--refresh-symbol-coordinates"],
302
+ }
303
+ : {
304
+ kind: "review",
305
+ instruction: `Review ${action} for ${symbolId} using current extraction and Git evidence.`,
306
+ },
307
+ affectedEntityIds: [symbolId],
308
+ evidence: { repair },
309
+ autoApplicable: automatic,
310
+ dispositionRequired: !automatic,
311
+ }));
312
+ }
313
+ return actions;
314
+ }
315
+ export function readMigrationConfigStatus(workspaceRoot) {
316
+ const status = readKbManifestStatus(workspaceRoot);
317
+ if (status.state === "ok") {
318
+ return {
319
+ status: getSchemaVersionStatus({
320
+ schemaVersion: status.manifest.schemaVersion,
321
+ }).status,
322
+ currentVersion: status.manifest.schemaVersion,
323
+ latestVersion: getSchemaVersionStatus({
324
+ schemaVersion: status.manifest.schemaVersion,
325
+ }).latestVersion,
326
+ needsMigration: getSchemaVersionStatus({
327
+ schemaVersion: status.manifest.schemaVersion,
328
+ }).needsMigration,
329
+ warning: null,
330
+ configHash: status.manifestHash,
331
+ };
332
+ }
333
+ const legacySchemaVersion = readLegacySchemaVersion(workspaceRoot);
334
+ const schemaStatus = getSchemaVersionStatus(legacySchemaVersion === null
335
+ ? undefined
336
+ : { schemaVersion: legacySchemaVersion });
337
+ return {
338
+ ...schemaStatus,
339
+ currentVersion: normalizeSchemaVersion(legacySchemaVersion),
340
+ configHash: null,
341
+ warning: status.warning,
342
+ };
343
+ }
344
+ /**
345
+ * Best-effort recognition of a legacy `.kb/config.json` schemaVersion for
346
+ * repositories that have not yet run the storage migration. Malformed
347
+ * documents return null so status reports demand repair rather than
348
+ * silently treating the KB as uninitialized.
349
+ */
350
+ function readLegacySchemaVersion(workspaceRoot) {
351
+ const legacyPath = path.join(workspaceRoot, ".kb", "config.json");
352
+ if (!existsSync(legacyPath))
353
+ return null;
354
+ try {
355
+ const parsed = JSON.parse(readFileSync(legacyPath, "utf8"));
356
+ return parsed.schemaVersion ?? null;
357
+ }
358
+ catch {
359
+ return "";
360
+ }
361
+ }
362
+ // implements REQ-agent-guided-migration-orchestration
363
+ export function buildActionsFromStatus(input) {
364
+ const actions = [];
365
+ const attachment = input.branchAttachment;
366
+ const store = input.branchStore;
367
+ const configStatus = input.configStatus ?? readMigrationConfigStatus(input.workspaceRoot);
368
+ const branch = typeof attachment?.gitBranch === "string" ? attachment.gitBranch : null;
369
+ const kbBranch = typeof attachment?.kbBranch === "string" ? attachment.kbBranch : null;
370
+ if (attachment?.migrationRequired === true) {
371
+ const legacy = attachment.kind === "legacy_compat" &&
372
+ typeof branch === "string" &&
373
+ typeof kbBranch === "string";
374
+ actions.push(migrationAction({
375
+ id: "branch-legacy-attachment",
376
+ code: legacy ? "legacy_branch_storage" : "ambiguous_branch_attachment",
377
+ category: "branch",
378
+ state: legacy ? "ready" : "blocked",
379
+ safety: legacy ? "automatic" : "operator",
380
+ invocation: legacy
381
+ ? {
382
+ kind: "cli",
383
+ command_argv: [
384
+ "kibi",
385
+ "branch",
386
+ "migrate",
387
+ "--from",
388
+ kbBranch,
389
+ "--to",
390
+ branch,
391
+ "--apply",
392
+ ],
393
+ }
394
+ : {
395
+ kind: "review",
396
+ instruction: "Resolve branch and KB provenance explicitly; Kibi will not guess or rename Git branches.",
397
+ },
398
+ affectedFiles: [
399
+ typeof attachment.storePath === "string"
400
+ ? attachment.storePath
401
+ : ".kb/branches",
402
+ ],
403
+ evidence: { attachment },
404
+ autoApplicable: legacy,
405
+ dispositionRequired: !legacy,
406
+ }));
407
+ }
408
+ const storeState = typeof store?.state === "string" ? store.state : null;
409
+ const legacyStorageMigrationRequired = legacyConfigExists(input.workspaceRoot);
410
+ if (storeState === "missing") {
411
+ actions.push(migrationAction({
412
+ id: "branch-store-ensure",
413
+ code: "missing_exact_branch_store",
414
+ category: "storage",
415
+ safety: "automatic",
416
+ invocation: { kind: "cli", command_argv: ["kibi", "branch", "ensure"] },
417
+ affectedFiles: [
418
+ typeof store?.path === "string" ? store.path : ".kb/branches",
419
+ ],
420
+ evidence: { store },
421
+ autoApplicable: true,
422
+ }));
423
+ }
424
+ else if (storeState === "incomplete" || storeState === "unreadable") {
425
+ actions.push(migrationAction({
426
+ id: "branch-store-recover",
427
+ code: "damaged_exact_branch_store",
428
+ category: "storage",
429
+ safety: "automatic",
430
+ invocation: {
431
+ kind: "cli",
432
+ command_argv: ["kibi", "branch", "recover", "--apply"],
433
+ },
434
+ affectedFiles: [
435
+ typeof store?.path === "string" ? store.path : ".kb/branches",
436
+ ],
437
+ evidence: { store, backupRequired: true },
438
+ autoApplicable: true,
439
+ }));
440
+ }
441
+ if (configStatus.needsMigration || legacyStorageMigrationRequired) {
442
+ actions.push(migrationAction({
443
+ id: "schema-config-upgrade",
444
+ code: configStatus.status === "invalid"
445
+ ? "invalid_schema_version"
446
+ : legacyStorageMigrationRequired
447
+ ? "legacy_storage_migration"
448
+ : "schema_version_upgrade",
449
+ category: "schema",
450
+ state: configStatus.status === "newer" ? "blocked" : "ready",
451
+ safety: configStatus.status === "newer" ? "operator" : "automatic",
452
+ invocation: { kind: "cli", command_argv: ["kibi", "migrate", "--yes"] },
453
+ affectedFiles: [
454
+ ".kb/manifest.json",
455
+ ".kb/migrations",
456
+ ".kb/config.json",
457
+ ],
458
+ evidence: { configStatus },
459
+ dependsOn: storeState === "missing" ? ["branch-store-ensure"] : [],
460
+ autoApplicable: configStatus.status !== "newer",
461
+ }));
462
+ }
463
+ for (const reason of input.staleReasons ?? []) {
464
+ const code = typeof reason.code === "string" ? reason.code : "stale_source";
465
+ const file = typeof reason.path === "string" ? reason.path : "";
466
+ actions.push(migrationAction({
467
+ id: `freshness-${code}-${file}`,
468
+ code,
469
+ category: "freshness",
470
+ safety: "review",
471
+ invocation: {
472
+ kind: "review",
473
+ instruction: typeof reason.remediation === "string"
474
+ ? reason.remediation
475
+ : "Refresh or reconcile the stale source, then run kibi sync and read back status.",
476
+ },
477
+ affectedFiles: file ? [file] : [],
478
+ evidence: { reason },
479
+ dispositionRequired: true,
480
+ }));
481
+ }
482
+ if (input.verificationSnapshotAvailable === false) {
483
+ actions.push(migrationAction({
484
+ id: "verification-snapshot-unavailable",
485
+ code: "verification_snapshot_unavailable",
486
+ category: "verification",
487
+ safety: "operator",
488
+ invocation: {
489
+ kind: "review",
490
+ instruction: "Use a runtime that can compute a workspace verification snapshot before claiming proof.",
491
+ },
492
+ evidence: { verificationSnapshotAvailable: false },
493
+ dispositionRequired: true,
494
+ }));
495
+ }
496
+ else if (input.verificationSnapshotDirty === true) {
497
+ actions.push(migrationAction({
498
+ id: "verification-snapshot-dirty",
499
+ code: "verification_snapshot_dirty",
500
+ category: "verification",
501
+ safety: "review",
502
+ invocation: {
503
+ kind: "review",
504
+ instruction: "Resolve or intentionally record the listed dirty workspace paths before reusing or creating proof receipts.",
505
+ },
506
+ evidence: { verificationSnapshotDirty: true },
507
+ dispositionRequired: true,
508
+ }));
509
+ }
510
+ const incompleteDomains = actions.some((action) => action.code === "damaged_exact_branch_store" ||
511
+ action.code === "ambiguous_branch_attachment" ||
512
+ action.code === "missing_exact_branch_store" ||
513
+ action.code === "schema_version_upgrade" ||
514
+ action.code === "invalid_schema_version" ||
515
+ action.code === "legacy_storage_migration")
516
+ ? ["kb"]
517
+ : [];
518
+ return buildMigrationPlan({
519
+ expected: {
520
+ branch,
521
+ kbBranch,
522
+ kbSnapshotId: input.kbSnapshotId ?? null,
523
+ workspaceSnapshot: input.workspaceSnapshot ?? null,
524
+ configHash: configStatus.configHash,
525
+ },
526
+ evaluatedDomains: [
527
+ "package",
528
+ "branch",
529
+ "storage",
530
+ "schema",
531
+ "freshness",
532
+ "verification",
533
+ ],
534
+ incompleteDomains,
535
+ actions,
536
+ });
537
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"node-ports.d.ts","sourceRoot":"","sources":["../../../src/public/operations/node-ports.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE/E,KAAK,kBAAkB,GAAG,cAAc,GAAG;IACzC,QAAQ,CAAC,IAAI,EAAE,CACb,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,OAAO,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,KACjE,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CACjC,CAAC;AAEF,KAAK,WAAW,GAAG,OAAO,GAAG;IAC3B,QAAQ,CAAC,YAAY,EAAE,CACrB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,SAAS,MAAM,EAAE,KACrB,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CACjC,CAAC;AA2HF,eAAO,MAAM,cAAc,EAAE,kBAkB5B,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAiBrB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,WAEzB,CAAC"}
1
+ {"version":3,"file":"node-ports.d.ts","sourceRoot":"","sources":["../../../src/public/operations/node-ports.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE/E,KAAK,kBAAkB,GAAG,cAAc,GAAG;IACzC,QAAQ,CAAC,IAAI,EAAE,CACb,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,OAAO,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,KACjE,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CACjC,CAAC;AAEF,KAAK,WAAW,GAAG,OAAO,GAAG;IAC3B,QAAQ,CAAC,YAAY,EAAE,CACrB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,SAAS,MAAM,EAAE,KACrB,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CACjC,CAAC;AAkMF,eAAO,MAAM,cAAc,EAAE,kBAoB5B,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAiBrB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,WAEzB,CAAC"}
@@ -1,15 +1,28 @@
1
- import { execFile } from "node:child_process";
1
+ import { execFile, execFileSync } from "node:child_process";
2
2
  import { createHash } from "node:crypto";
3
+ import * as fsSync from "node:fs";
3
4
  import * as fs from "node:fs/promises";
4
5
  import path from "node:path";
5
6
  import { promisify } from "node:util";
6
7
  import fg from "fast-glob";
7
8
  import { createRepoIgnorePolicy } from "../ignore-policy.js";
8
9
  const execFileAsync = promisify(execFile);
9
- const SNAPSHOT_EXCLUDED_PREFIXES = [".changeset/", ".kb/", "docs/"];
10
+ const SNAPSHOT_EXCLUDED_PREFIXES = [
11
+ ".changeset/",
12
+ ".kb/branches/",
13
+ ".kb/recovery/",
14
+ ".kb/verification/",
15
+ ".kb/briefs/",
16
+ ".kb/migrations/",
17
+ "docs/",
18
+ ];
10
19
  const ALWAYS_IGNORED_GLOBS = [
11
20
  "**/.git/**",
12
- "**/.kb/**",
21
+ "**/.kb/branches/**",
22
+ "**/.kb/recovery/**",
23
+ "**/.kb/verification/**",
24
+ "**/.kb/briefs/**",
25
+ "**/.kb/migrations/**",
13
26
  "**/node_modules/**",
14
27
  "**/vendor/**",
15
28
  "**/vendors/**",
@@ -53,12 +66,30 @@ function withoutVerificationReceiptFrontmatter(content) {
53
66
  return retained.join("");
54
67
  }
55
68
  function snapshotFileContent(relativePath, content) {
56
- if (relativePath.startsWith("documentation/") &&
57
- relativePath.endsWith(".md")) {
69
+ if (relativePath.endsWith(".md")) {
58
70
  return Buffer.from(withoutVerificationReceiptFrontmatter(content.toString("utf8")));
59
71
  }
60
72
  return content;
61
73
  }
74
+ /**
75
+ * A tracked markdown file whose only change is verification-receipt frontmatter
76
+ * cannot alter the snapshot hash (receipts are stripped before hashing), so it
77
+ * must not mark the workspace dirty either. CI proof runs append receipts to
78
+ * tracked proof documents before reporting, and would otherwise always surface
79
+ * a dirty-workspace warning.
80
+ */
81
+ function isReceiptOnlyMarkdownChange(workspaceRoot, relativePath) {
82
+ if (!relativePath.endsWith(".md"))
83
+ return false;
84
+ try {
85
+ const working = snapshotFileContent(relativePath, fsSync.readFileSync(path.join(workspaceRoot, relativePath)));
86
+ const committed = execFileSync("git", ["-C", workspaceRoot, "show", `HEAD:${relativePath}`], { encoding: "buffer", maxBuffer: 64 * 1024 * 1024 });
87
+ return working.equals(snapshotFileContent(relativePath, committed));
88
+ }
89
+ catch {
90
+ return false;
91
+ }
92
+ }
62
93
  async function workspaceSnapshot(workspaceRoot) {
63
94
  const { stdout: listed } = await execFileAsync("git", [
64
95
  "-C",
@@ -76,7 +107,7 @@ async function workspaceSnapshot(workspaceRoot) {
76
107
  .filter(includedSnapshotPath)
77
108
  .sort();
78
109
  const digest = createHash("sha256");
79
- digest.update("kibi.workspace-snapshot.v1\0");
110
+ digest.update("kibi.workspace-snapshot.v2\0");
80
111
  for (const relativePath of paths) {
81
112
  digest.update(relativePath);
82
113
  digest.update("\0");
@@ -98,12 +129,39 @@ async function workspaceSnapshot(workspaceRoot) {
98
129
  "status",
99
130
  "--porcelain=v1",
100
131
  "--untracked-files=normal",
132
+ "-z",
101
133
  ], { maxBuffer: 16 * 1024 * 1024 });
134
+ const rawChanges = status.split("\0").filter(Boolean);
135
+ const changes = [];
136
+ for (let index = 0; index < rawChanges.length; index++) {
137
+ const entry = rawChanges[index] ?? "";
138
+ const statusCode = entry.slice(0, 2);
139
+ const relativePath = entry.slice(3).replaceAll("\\", "/");
140
+ const previous = rawChanges[index + 1];
141
+ const isRenameOrCopy = statusCode[0] === "R" || statusCode[0] === "C";
142
+ const previousPath = isRenameOrCopy && previous ? previous.replaceAll("\\", "/") : undefined;
143
+ const receiptOnly = statusCode.includes("M") &&
144
+ includedSnapshotPath(relativePath) &&
145
+ isReceiptOnlyMarkdownChange(workspaceRoot, relativePath);
146
+ changes.push({
147
+ path: relativePath,
148
+ status: statusCode,
149
+ snapshotRelevant: (includedSnapshotPath(relativePath) && !receiptOnly) ||
150
+ (previousPath !== undefined && includedSnapshotPath(previousPath)),
151
+ ...(previousPath !== undefined ? { previousPath } : {}),
152
+ });
153
+ if (previousPath !== undefined)
154
+ index++;
155
+ }
156
+ const maxChanges = 200;
102
157
  return {
103
- version: "kibi.workspace-snapshot.v1",
158
+ version: "kibi.workspace-snapshot.v2",
104
159
  hash: digest.digest("hex"),
105
- dirty: status.trim().length > 0,
160
+ dirty: changes.some((change) => change.snapshotRelevant),
106
161
  fileCount: paths.length,
162
+ changes: changes.slice(0, maxChanges),
163
+ changeCount: changes.length,
164
+ changesTruncated: changes.length > maxChanges,
107
165
  };
108
166
  }
109
167
  export const nodeFilesystem = {
@@ -111,10 +169,12 @@ export const nodeFilesystem = {
111
169
  writeFile: async (filePath, data) => {
112
170
  await fs.writeFile(filePath, data, "utf8");
113
171
  },
172
+ rename: (from, to) => fs.rename(from, to),
114
173
  mkdir: async (directoryPath) => {
115
174
  await fs.mkdir(directoryPath, { recursive: true });
116
175
  },
117
176
  stat: (filePath) => fs.stat(filePath),
177
+ unlink: (filePath) => fs.unlink(filePath),
118
178
  glob: (patterns, options) => fg([...patterns], {
119
179
  cwd: options.cwd,
120
180
  onlyFiles: true,
@@ -1,4 +1,18 @@
1
1
  import type { PrologPort } from "./runtime-types.js";
2
+ export type JsonBindingDecodeStage = "outer" | "inner";
3
+ /**
4
+ * A JSON operation result is transported through Prolog's answer printer and
5
+ * then through the engine frame. Keep decode failures typed and bounded: the
6
+ * raw binding may contain project-authored data and must never be copied into
7
+ * diagnostics wholesale.
8
+ */
9
+ export declare class OperationJsonDecodeError extends Error {
10
+ readonly code = "engine_result_invalid_json";
11
+ readonly stage: JsonBindingDecodeStage;
12
+ readonly rawLength: number;
13
+ readonly prefixCodePoints: readonly number[];
14
+ constructor(errorLabel: string, stage: JsonBindingDecodeStage, rawJson: unknown, cause: unknown);
15
+ }
2
16
  export declare function runOperationJsonQuery<T>(prolog: PrologPort, fileName: string, goal: string, errorLabel: string): Promise<T>;
3
17
  export declare function toPrologAtom(value?: string): string;
4
18
  export declare function toPrologList(values?: readonly string[]): string;