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
@@ -1,5 +1,6 @@
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";
@@ -23,10 +24,22 @@ type NodeGitPort = GitPort & {
23
24
  };
24
25
 
25
26
  const execFileAsync = promisify(execFile);
26
- const SNAPSHOT_EXCLUDED_PREFIXES = [".changeset/", ".kb/", "docs/"] as const;
27
+ const SNAPSHOT_EXCLUDED_PREFIXES = [
28
+ ".changeset/",
29
+ ".kb/branches/",
30
+ ".kb/recovery/",
31
+ ".kb/verification/",
32
+ ".kb/briefs/",
33
+ ".kb/migrations/",
34
+ "docs/",
35
+ ] as const;
27
36
  const ALWAYS_IGNORED_GLOBS = [
28
37
  "**/.git/**",
29
- "**/.kb/**",
38
+ "**/.kb/branches/**",
39
+ "**/.kb/recovery/**",
40
+ "**/.kb/verification/**",
41
+ "**/.kb/briefs/**",
42
+ "**/.kb/migrations/**",
30
43
  "**/node_modules/**",
31
44
  "**/vendor/**",
32
45
  "**/vendors/**",
@@ -76,10 +89,7 @@ function withoutVerificationReceiptFrontmatter(content: string): string {
76
89
  }
77
90
 
78
91
  function snapshotFileContent(relativePath: string, content: Buffer): Buffer {
79
- if (
80
- relativePath.startsWith("documentation/") &&
81
- relativePath.endsWith(".md")
82
- ) {
92
+ if (relativePath.endsWith(".md")) {
83
93
  return Buffer.from(
84
94
  withoutVerificationReceiptFrontmatter(content.toString("utf8")),
85
95
  );
@@ -87,6 +97,34 @@ function snapshotFileContent(relativePath: string, content: Buffer): Buffer {
87
97
  return content;
88
98
  }
89
99
 
100
+ /**
101
+ * A tracked markdown file whose only change is verification-receipt frontmatter
102
+ * cannot alter the snapshot hash (receipts are stripped before hashing), so it
103
+ * must not mark the workspace dirty either. CI proof runs append receipts to
104
+ * tracked proof documents before reporting, and would otherwise always surface
105
+ * a dirty-workspace warning.
106
+ */
107
+ function isReceiptOnlyMarkdownChange(
108
+ workspaceRoot: string,
109
+ relativePath: string,
110
+ ): boolean {
111
+ if (!relativePath.endsWith(".md")) return false;
112
+ try {
113
+ const working = snapshotFileContent(
114
+ relativePath,
115
+ fsSync.readFileSync(path.join(workspaceRoot, relativePath)),
116
+ );
117
+ const committed = execFileSync(
118
+ "git",
119
+ ["-C", workspaceRoot, "show", `HEAD:${relativePath}`],
120
+ { encoding: "buffer", maxBuffer: 64 * 1024 * 1024 },
121
+ ) as Buffer;
122
+ return working.equals(snapshotFileContent(relativePath, committed));
123
+ } catch {
124
+ return false;
125
+ }
126
+ }
127
+
90
128
  async function workspaceSnapshot(workspaceRoot: string) {
91
129
  const { stdout: listed } = await execFileAsync(
92
130
  "git",
@@ -108,7 +146,7 @@ async function workspaceSnapshot(workspaceRoot: string) {
108
146
  .filter(includedSnapshotPath)
109
147
  .sort();
110
148
  const digest = createHash("sha256");
111
- digest.update("kibi.workspace-snapshot.v1\0");
149
+ digest.update("kibi.workspace-snapshot.v2\0");
112
150
  for (const relativePath of paths) {
113
151
  digest.update(relativePath);
114
152
  digest.update("\0");
@@ -132,14 +170,48 @@ async function workspaceSnapshot(workspaceRoot: string) {
132
170
  "status",
133
171
  "--porcelain=v1",
134
172
  "--untracked-files=normal",
173
+ "-z",
135
174
  ],
136
175
  { maxBuffer: 16 * 1024 * 1024 },
137
176
  );
177
+ const rawChanges = status.split("\0").filter(Boolean);
178
+ const changes: {
179
+ path: string;
180
+ status: string;
181
+ snapshotRelevant: boolean;
182
+ previousPath?: string;
183
+ }[] = [];
184
+ for (let index = 0; index < rawChanges.length; index++) {
185
+ const entry = rawChanges[index] ?? "";
186
+ const statusCode = entry.slice(0, 2);
187
+ const relativePath = entry.slice(3).replaceAll("\\", "/");
188
+ const previous = rawChanges[index + 1];
189
+ const isRenameOrCopy = statusCode[0] === "R" || statusCode[0] === "C";
190
+ const previousPath =
191
+ isRenameOrCopy && previous ? previous.replaceAll("\\", "/") : undefined;
192
+ const receiptOnly =
193
+ statusCode.includes("M") &&
194
+ includedSnapshotPath(relativePath) &&
195
+ isReceiptOnlyMarkdownChange(workspaceRoot, relativePath);
196
+ changes.push({
197
+ path: relativePath,
198
+ status: statusCode,
199
+ snapshotRelevant:
200
+ (includedSnapshotPath(relativePath) && !receiptOnly) ||
201
+ (previousPath !== undefined && includedSnapshotPath(previousPath)),
202
+ ...(previousPath !== undefined ? { previousPath } : {}),
203
+ });
204
+ if (previousPath !== undefined) index++;
205
+ }
206
+ const maxChanges = 200;
138
207
  return {
139
- version: "kibi.workspace-snapshot.v1" as const,
208
+ version: "kibi.workspace-snapshot.v2" as const,
140
209
  hash: digest.digest("hex"),
141
- dirty: status.trim().length > 0,
210
+ dirty: changes.some((change) => change.snapshotRelevant),
142
211
  fileCount: paths.length,
212
+ changes: changes.slice(0, maxChanges),
213
+ changeCount: changes.length,
214
+ changesTruncated: changes.length > maxChanges,
143
215
  };
144
216
  }
145
217
 
@@ -148,10 +220,12 @@ export const nodeFilesystem: NodeFilesystemPort = {
148
220
  writeFile: async (filePath, data) => {
149
221
  await fs.writeFile(filePath, data, "utf8");
150
222
  },
223
+ rename: (from, to) => fs.rename(from, to),
151
224
  mkdir: async (directoryPath) => {
152
225
  await fs.mkdir(directoryPath, { recursive: true });
153
226
  },
154
227
  stat: (filePath) => fs.stat(filePath),
228
+ unlink: (filePath) => fs.unlink(filePath),
155
229
  glob: (patterns, options) =>
156
230
  fg([...patterns], {
157
231
  cwd: options.cwd,
@@ -5,6 +5,43 @@ import { resolveKbPlPath } from "../../prolog.js";
5
5
  import { escapeAtom } from "../../prolog/codec.js";
6
6
  import type { PrologPort } from "./runtime-types.js";
7
7
 
8
+ export type JsonBindingDecodeStage = "outer" | "inner";
9
+
10
+ /**
11
+ * A JSON operation result is transported through Prolog's answer printer and
12
+ * then through the engine frame. Keep decode failures typed and bounded: the
13
+ * raw binding may contain project-authored data and must never be copied into
14
+ * diagnostics wholesale.
15
+ */
16
+ export class OperationJsonDecodeError extends Error {
17
+ readonly code = "engine_result_invalid_json";
18
+ readonly stage: JsonBindingDecodeStage;
19
+ readonly rawLength: number;
20
+ readonly prefixCodePoints: readonly number[];
21
+
22
+ constructor(
23
+ errorLabel: string,
24
+ stage: JsonBindingDecodeStage,
25
+ rawJson: unknown,
26
+ cause: unknown,
27
+ ) {
28
+ const rawText = typeof rawJson === "string" ? rawJson : "";
29
+ const bindingType = typeof rawJson;
30
+ const message = cause instanceof Error ? cause.message : String(cause);
31
+ super(
32
+ `${errorLabel} returned invalid JSON binding (stage=${stage}, bindingType=${bindingType}, length=${rawText.length}, prefixCodePoints=${JSON.stringify([...rawText].slice(0, 8).map((character) => character.codePointAt(0) ?? 0))}): ${message}`,
33
+ );
34
+ this.name = "OperationJsonDecodeError";
35
+ this.stage = stage;
36
+ this.rawLength = rawText.length;
37
+ this.prefixCodePoints = Object.freeze(
38
+ [...rawText]
39
+ .slice(0, 8)
40
+ .map((character) => character.codePointAt(0) ?? 0),
41
+ );
42
+ }
43
+ }
44
+
8
45
  function resolveCoreModulePath(fileName: string): string {
9
46
  const genericOverride = getKbPlPathOverride();
10
47
  return path.join(
@@ -29,9 +66,10 @@ export async function runOperationJsonQuery<T>(
29
66
  const longLivedEngine =
30
67
  typeof (prolog as { storageStatus?: unknown }).storageStatus === "function";
31
68
  const oneShotMode =
32
- !longLivedEngine &&
33
- process.env.NODE_ENV === "test" &&
34
- typeof (globalThis as { Bun?: unknown }).Bun !== "undefined";
69
+ prolog.oneShotMode === true ||
70
+ (!longLivedEngine &&
71
+ process.env.NODE_ENV === "test" &&
72
+ typeof (globalThis as { Bun?: unknown }).Bun !== "undefined");
35
73
  const typedStatusQuery = prolog.queryStatusJson;
36
74
  const result =
37
75
  fileName === "status.pl" && typeof typedStatusQuery === "function"
@@ -48,9 +86,26 @@ export async function runOperationJsonQuery<T>(
48
86
  if (rawJson === undefined) {
49
87
  throw new Error(`${errorLabel} query returned no JsonString binding`);
50
88
  }
51
- let parsed: unknown = JSON.parse(rawJson);
89
+ if (typeof rawJson !== "string") {
90
+ throw new OperationJsonDecodeError(
91
+ errorLabel,
92
+ "outer",
93
+ rawJson,
94
+ new TypeError("JsonString binding is not a string"),
95
+ );
96
+ }
97
+ let parsed: unknown;
98
+ try {
99
+ parsed = JSON.parse(rawJson);
100
+ } catch (error) {
101
+ throw new OperationJsonDecodeError(errorLabel, "outer", rawJson, error);
102
+ }
52
103
  if (typeof parsed === "string") {
53
- parsed = JSON.parse(parsed);
104
+ try {
105
+ parsed = JSON.parse(parsed);
106
+ } catch (error) {
107
+ throw new OperationJsonDecodeError(errorLabel, "inner", parsed, error);
108
+ }
54
109
  }
55
110
  return parsed as T;
56
111
  }
@@ -237,6 +237,7 @@ const GAP_STAGE: Readonly<Record<string, string>> = {
237
237
  stale_verification_receipt: "passing_e2e",
238
238
  failed_verification_receipt: "passing_e2e",
239
239
  invalid_verification_receipt: "passing_e2e",
240
+ verification_contract_mismatch: "passing_e2e",
240
241
  verification_snapshot_unavailable: "passing_e2e",
241
242
  missing_executable_test_symbol: "executable_symbols",
242
243
  missing_production_symbol: "production_symbols",
@@ -0,0 +1,136 @@
1
+ import type { KibiResult, OperationEffect, OperationName } from "./types.js";
2
+
3
+ export const KIBI_PROTOCOL_VERSION = 1 as const;
4
+
5
+ function record(value: unknown): value is Record<string, unknown> {
6
+ return value !== null && typeof value === "object" && !Array.isArray(value);
7
+ }
8
+
9
+ function diagnostics(value: unknown): KibiResult["diagnostics"] {
10
+ if (!Array.isArray(value)) return [];
11
+ return value.flatMap((entry) => {
12
+ if (typeof entry === "string")
13
+ return [{ message: entry, severity: "warning" as const }];
14
+ if (!record(entry) || typeof entry.message !== "string") return [];
15
+ return [entry as KibiResult["diagnostics"][number]];
16
+ });
17
+ }
18
+
19
+ function nextActions(value: unknown): KibiResult["nextActions"] {
20
+ if (!Array.isArray(value)) return [];
21
+ return value.flatMap((entry) => {
22
+ if (
23
+ !record(entry) ||
24
+ typeof entry.operation !== "string" ||
25
+ typeof entry.reason !== "string"
26
+ )
27
+ return [];
28
+ return [
29
+ {
30
+ operation: entry.operation,
31
+ input: entry.input,
32
+ reason: entry.reason,
33
+ required: entry.required === true,
34
+ },
35
+ ];
36
+ });
37
+ }
38
+
39
+ function effectStatus(
40
+ effect: OperationEffect,
41
+ data: Record<string, unknown> | undefined,
42
+ ): KibiResult["effects"][number] {
43
+ const failures = data?.effectFailures;
44
+ if (Array.isArray(failures)) {
45
+ const failure = failures.find(
46
+ (entry) => record(entry) && entry.kind === effect,
47
+ );
48
+ if (record(failure)) {
49
+ return {
50
+ kind: effect,
51
+ status: "failed",
52
+ detail: failure.detail,
53
+ ...(typeof failure.errorCode === "string"
54
+ ? { errorCode: failure.errorCode }
55
+ : {}),
56
+ };
57
+ }
58
+ }
59
+ return { kind: effect, status: "completed" };
60
+ }
61
+
62
+ function extraFailedEffects(
63
+ declared: readonly OperationEffect[],
64
+ data: Record<string, unknown> | undefined,
65
+ ): KibiResult["effects"] {
66
+ const failures = data?.effectFailures;
67
+ if (!Array.isArray(failures)) return [];
68
+ const seen = new Set(declared);
69
+ return failures.flatMap((entry) => {
70
+ if (
71
+ !record(entry) ||
72
+ typeof entry.kind !== "string" ||
73
+ seen.has(entry.kind as OperationEffect)
74
+ ) {
75
+ return [];
76
+ }
77
+ seen.add(entry.kind as OperationEffect);
78
+ return [
79
+ {
80
+ kind: entry.kind,
81
+ status: "failed" as const,
82
+ detail: entry.detail,
83
+ ...(typeof entry.errorCode === "string"
84
+ ? { errorCode: entry.errorCode }
85
+ : {}),
86
+ },
87
+ ];
88
+ });
89
+ }
90
+
91
+ export function resultVersion(spec: {
92
+ readonly name: OperationName | string;
93
+ readonly resultVersion?: string;
94
+ }): string {
95
+ return spec.resultVersion ?? `kibi.${spec.name}.v1`;
96
+ }
97
+
98
+ export function toKibiResult<T>(
99
+ spec: {
100
+ readonly name: OperationName | string;
101
+ readonly effects: readonly OperationEffect[];
102
+ readonly resultVersion?: string;
103
+ },
104
+ data: T,
105
+ options: Partial<
106
+ Pick<KibiResult<T>, "status" | "diagnostics" | "nextActions" | "error">
107
+ > = {},
108
+ ): KibiResult<T> {
109
+ const row = record(data) ? data : undefined;
110
+ const status =
111
+ options.status ??
112
+ (row?.status === "committed_with_repairs"
113
+ ? "committed_with_repairs"
114
+ : "success");
115
+ return {
116
+ kibiProtocol: KIBI_PROTOCOL_VERSION,
117
+ operation: spec.name as OperationName,
118
+ resultVersion: resultVersion(spec),
119
+ status,
120
+ data,
121
+ effects: [
122
+ ...spec.effects.map((effect) => effectStatus(effect, row)),
123
+ ...extraFailedEffects(spec.effects, row),
124
+ ],
125
+ diagnostics: options.diagnostics ?? diagnostics(row?.diagnostics),
126
+ nextActions: options.nextActions ?? nextActions(row?.nextActions),
127
+ ...(options.error ? { error: options.error } : {}),
128
+ };
129
+ }
130
+
131
+ export function operationData(value: unknown): unknown {
132
+ if (record(value) && "structuredContent" in value) {
133
+ return value.structuredContent;
134
+ }
135
+ return value;
136
+ }
@@ -1,3 +1,4 @@
1
+ import type { BranchAttachment } from "../../utils/branch-resolver.js";
1
2
  import type { OperationEffect } from "./types.js";
2
3
 
3
4
  export type { OperationEffect } from "./types.js";
@@ -35,20 +36,79 @@ export type PrologSearchQueryResult = Readonly<{
35
36
  count: number;
36
37
  }>;
37
38
 
39
+ /** Goal-free, versioned commands accepted by the journaled engine. */
40
+ export type EngineCommandV1 =
41
+ | Readonly<{ version: 1; kind: "status" }>
42
+ | Readonly<{
43
+ version: 1;
44
+ kind: "entities";
45
+ type?: string;
46
+ id?: string;
47
+ tags?: readonly string[];
48
+ sourceFile?: string;
49
+ limit: number;
50
+ offset: number;
51
+ }>
52
+ | Readonly<{
53
+ version: 1;
54
+ kind: "search";
55
+ query: string;
56
+ type?: string;
57
+ limit: number;
58
+ offset: number;
59
+ }>
60
+ | Readonly<{ version: 1; kind: "checkpoint" }>
61
+ | Readonly<{ version: 1; kind: "compact" }>
62
+ | Readonly<{ version: 1; kind: "save" }>
63
+ | Readonly<{ version: 1; kind: "check"; rule?: string }>
64
+ | Readonly<{
65
+ version: 1;
66
+ kind: "relationship";
67
+ action: "assert" | "retract";
68
+ type: string;
69
+ from: string;
70
+ to: string;
71
+ }>
72
+ | Readonly<{
73
+ version: 1;
74
+ kind: "persistence";
75
+ action: "checkpoint" | "compact" | "save" | "export";
76
+ targetDirectory?: string;
77
+ }>
78
+ | Readonly<{
79
+ version: 1;
80
+ kind: "lifecycle";
81
+ action: "stop" | "cancel";
82
+ requestId?: number;
83
+ }>
84
+ | Readonly<{ version: 1; kind: "stop" }>
85
+ | Readonly<{ version: 1; kind: "cancel"; requestId: number }>;
86
+
87
+ export interface EnginePort {
88
+ execute<T = PrologQueryResult>(
89
+ command: EngineCommandV1,
90
+ signal?: AbortSignal,
91
+ ): Promise<T>;
92
+ }
93
+
38
94
  // implements REQ-kibi-operation-interface-parity
39
95
  export interface PrologPort {
40
- query(goal: string): Promise<PrologQueryResult>;
96
+ query(goal: string, signal?: AbortSignal): Promise<PrologQueryResult>;
97
+ /** True when each query is isolated and must include its module load. */
98
+ oneShotMode?: boolean;
41
99
  /** Optional index-backed page query supplied by the journaled engine. */
42
100
  queryEntities?(
43
101
  input: PrologEntityQueryInput,
102
+ signal?: AbortSignal,
44
103
  ): Promise<PrologEntityQueryResult>;
45
104
  /** Optional normalized-token candidate lookup supplied by the engine. */
46
105
  searchEntities?(
47
106
  input: PrologSearchQueryInput,
107
+ signal?: AbortSignal,
48
108
  ): Promise<PrologSearchQueryResult>;
49
109
  nextSolution(): Promise<PrologQueryResult | null>;
50
110
  invalidateCache?(): void;
51
- save(): Promise<PrologQueryResult>;
111
+ save(signal?: AbortSignal): Promise<PrologQueryResult>;
52
112
  /** Present on the journaled engine; used to distinguish a persistent port from one-shot SWI. */
53
113
  storageStatus?(): Promise<PrologQueryResult>;
54
114
  /** Typed public freshness query; avoids exposing module loading over RPC. */
@@ -63,21 +123,39 @@ export type FilesystemStat = {
63
123
  export interface FilesystemPort {
64
124
  readFile(path: string): Promise<string>;
65
125
  writeFile(path: string, data: string): Promise<void>;
126
+ /** Optional workspace globbing used by source-posture classifiers. */
127
+ glob?(
128
+ patterns: readonly string[],
129
+ options: { readonly cwd: string; readonly includeIgnored?: boolean },
130
+ ): Promise<readonly string[]>;
131
+ /** Replace a file atomically when the host filesystem supports it. */
132
+ rename?(from: string, to: string): Promise<void>;
66
133
  mkdir(path: string): Promise<void>;
67
134
  stat(path: string): Promise<FilesystemStat>;
135
+ /** Optional destructive primitive used only to roll back newly-created files. */
136
+ unlink?(path: string): Promise<void>;
68
137
  }
69
138
 
70
139
  export interface GitPort {
71
- revParse(...args: readonly string[]): Promise<string>;
72
- showToplevel(): Promise<string>;
140
+ /** Optional low-level Git probes; the journaled runtime may provide them. */
141
+ revParse?(...args: readonly string[]): Promise<string>;
142
+ showToplevel?(): Promise<string>;
73
143
  workspaceSnapshot?(workspaceRoot: string): Promise<WorkspaceSnapshot>;
74
144
  }
75
145
 
76
146
  export type WorkspaceSnapshot = Readonly<{
77
- version: "kibi.workspace-snapshot.v1";
147
+ version: "kibi.workspace-snapshot.v2";
78
148
  hash: string;
149
+ /** True only when at least one change can alter the verification snapshot. */
79
150
  dirty: boolean;
80
151
  fileCount: number;
152
+ readonly changes?: readonly {
153
+ readonly path: string;
154
+ readonly status: string;
155
+ readonly snapshotRelevant: boolean;
156
+ }[];
157
+ readonly changeCount?: number;
158
+ readonly changesTruncated?: boolean;
81
159
  }>;
82
160
 
83
161
  export interface NetworkPort {
@@ -101,9 +179,17 @@ export type OperationContext = {
101
179
  readonly signal: AbortSignal;
102
180
  readonly clock: Clock;
103
181
  readonly prolog?: PrologPort;
182
+ readonly engine?: EnginePort;
183
+ /** Lazily acquire the branch engine for operations that may start without Prolog. */
184
+ readonly ensureProlog?: () => Promise<PrologPort>;
104
185
  readonly fs?: FilesystemPort;
186
+ /** Whether filesystem-capable mutations must author tracked source files. */
187
+ readonly sourceFirst?: boolean;
188
+ /** Internal apply-plan capability: source bytes were already approved/published. */
189
+ readonly sourcePlanApplication?: boolean;
105
190
  readonly git?: GitPort;
106
191
  readonly net?: NetworkPort;
192
+ readonly branchAttachment?: BranchAttachment;
107
193
  };
108
194
 
109
195
  export interface RuntimeOperationSpec<TInput = unknown, TResult = unknown> {