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,4 +1,6 @@
1
1
  import { readFileSync } from "node:fs";
2
+ import { readFile } from "node:fs/promises";
3
+ import path from "node:path";
2
4
  /*
3
5
  Kibi — repo-local, per-branch, queryable long-term memory for software projects
4
6
  Copyright (C) 2026 Piotr Franczyk
@@ -16,17 +18,15 @@ import { readFileSync } from "node:fs";
16
18
  You should have received a copy of the GNU Affero General Public License
17
19
  along with this program. If not, see <https://www.gnu.org/licenses/>.
18
20
  */
19
- import { readFile } from "node:fs/promises";
20
- import path from "node:path";
21
21
  import { getKbPlPathOverride } from "../../env.js";
22
22
  import { resolveKbPlPath } from "../../prolog.js";
23
23
  import { analyzePrologQueryPlanSafety } from "../../utils/prolog-query-plan-safety.js";
24
24
  import {
25
- type ChecksConfig,
26
- DEFAULT_CHECKS_CONFIG,
27
25
  RULE_NAMES,
28
26
  type Violation,
29
27
  getEffectiveRules,
28
+ getRuleDefinition,
29
+ getRuleEnforcementClass,
30
30
  } from "../../utils/rule-registry.js";
31
31
  import {
32
32
  type ChangedFileImpactResult,
@@ -37,6 +37,46 @@ import type { CheckInput } from "./check-executor.js";
37
37
 
38
38
  export { RULE_NAMES, getEffectiveRules };
39
39
 
40
+ /**
41
+ * Split Prolog/check findings by enforcement class so advisory and
42
+ * migration results cannot gate canonical health.
43
+ *
44
+ * Canonical findings stay in `violations` (blocking). Advisory findings
45
+ * always become non-blocking quality diagnostics. Migration findings are
46
+ * also non-blocking and only appear when that rule was selected to run.
47
+ */
48
+ // implements REQ-cli-check, REQ-mcp-tool-check
49
+ export function partitionCheckFindings(findings: readonly Violation[]): {
50
+ violations: Violation[];
51
+ qualityDiagnostics: QualityDiagnostic[];
52
+ } {
53
+ const violations: Violation[] = [];
54
+ const qualityDiagnostics: QualityDiagnostic[] = [];
55
+
56
+ for (const finding of findings) {
57
+ const enforcement = getRuleEnforcementClass(finding.rule) ?? "canonical";
58
+ if (enforcement === "canonical") {
59
+ violations.push(finding);
60
+ continue;
61
+ }
62
+
63
+ const definition = getRuleDefinition(finding.rule);
64
+ qualityDiagnostics.push({
65
+ id: `rule.${finding.rule}`,
66
+ severity: "warning",
67
+ blocking: false,
68
+ category: definition?.category ?? "integrity",
69
+ ...(finding.entityId !== undefined ? { entityId: finding.entityId } : {}),
70
+ ...(finding.source !== undefined ? { source: finding.source } : {}),
71
+ message: finding.description,
72
+ suggestion: finding.suggestion ?? "",
73
+ ...(finding.evidence !== undefined ? { evidence: finding.evidence } : {}),
74
+ });
75
+ }
76
+
77
+ return { violations, qualityDiagnostics };
78
+ }
79
+
40
80
  function resolveChecksPlPath(): string {
41
81
  const override = getKbPlPathOverride();
42
82
  return path.join(path.dirname(override ?? resolveKbPlPath()), "checks.pl");
@@ -55,43 +95,42 @@ export function collectQueryPlanSafetyViolations(): Violation[] {
55
95
  }));
56
96
  }
57
97
 
98
+ /**
99
+ * Resolve the rules for one check invocation.
100
+ *
101
+ * Enforcement policy is Kibi-owned: repositories cannot disable canonical
102
+ * checks. `args.rules` is an invocation-time diagnostic selector that never
103
+ * persists and never redefines project health.
104
+ */
105
+ // implements REQ-mcp-tool-check
106
+ export function resolveCheckRules(
107
+ args: Pick<CheckInput, "rules">,
108
+ ): Set<string> {
109
+ if (args.rules === undefined) {
110
+ return getEffectiveRules();
111
+ }
112
+ if (args.rules.length === 0) {
113
+ return new Set<string>();
114
+ }
115
+ return getEffectiveRules(args.rules);
116
+ }
117
+
118
+ /**
119
+ * Read whether the workspace still carries a legacy `.kb/config.json`.
120
+ * Retained only so check summaries can point operators at migration; the
121
+ * document never alters rule selection.
122
+ */
58
123
  // implements REQ-mcp-tool-check
59
- export async function loadChecksConfig(
124
+ export async function readLegacyChecksHint(
60
125
  workspaceRoot: string,
61
- ): Promise<ChecksConfig> {
126
+ ): Promise<string | null> {
62
127
  const configPath = path.join(workspaceRoot, ".kb", "config.json");
63
128
  try {
64
- const content = await readFile(configPath, "utf8");
65
- const parsed = JSON.parse(content) as {
66
- checks?: Partial<ChecksConfig>;
67
- };
68
-
69
- const parsedRules = parsed.checks?.rules;
70
- const normalizedRules: Record<string, boolean> = {
71
- ...DEFAULT_CHECKS_CONFIG.rules,
72
- };
73
- if (parsedRules && typeof parsedRules === "object") {
74
- for (const [key, value] of Object.entries(parsedRules)) {
75
- if (typeof value === "boolean") {
76
- normalizedRules[key] = value;
77
- }
78
- }
79
- }
80
-
81
- const parsedSt = parsed.checks?.symbolTraceability;
82
- const normalizedSt = { ...DEFAULT_CHECKS_CONFIG.symbolTraceability };
83
- if (
84
- parsedSt &&
85
- typeof parsedSt === "object" &&
86
- typeof parsedSt.requireAdr === "boolean"
87
- ) {
88
- normalizedSt.requireAdr = parsedSt.requireAdr;
89
- }
90
-
91
- return { rules: normalizedRules, symbolTraceability: normalizedSt };
129
+ await readFile(configPath, "utf8");
92
130
  } catch {
93
- return DEFAULT_CHECKS_CONFIG;
131
+ return null;
94
132
  }
133
+ return `Legacy ${path.join(".kb", "config.json")} is present. Kibi no longer reads project check or path configuration; run 'kibi migrate' to adopt the canonical .kb/ layout and retire this file.`;
95
134
  }
96
135
 
97
136
  // implements REQ-mcp-tool-check
@@ -0,0 +1,366 @@
1
+ import type {
2
+ OperationEffect,
3
+ OperationEffectDeclaration,
4
+ OperationName,
5
+ } from "./types.js";
6
+
7
+ /** A JSON Schema object emitted in the public operation catalog. */
8
+ export type OperationJsonSchema = Readonly<Record<string, unknown>>;
9
+
10
+ const anyValue: OperationJsonSchema = {};
11
+ const recordValue: OperationJsonSchema = {
12
+ type: "object",
13
+ additionalProperties: true,
14
+ };
15
+ const recordArray: OperationJsonSchema = {
16
+ type: "array",
17
+ items: recordValue,
18
+ };
19
+ const valueArray: OperationJsonSchema = {
20
+ type: "array",
21
+ items: anyValue,
22
+ };
23
+
24
+ function objectData(
25
+ properties: Readonly<Record<string, OperationJsonSchema>>,
26
+ required: readonly string[] = [],
27
+ ): OperationJsonSchema {
28
+ return {
29
+ type: "object",
30
+ additionalProperties: false,
31
+ ...(required.length > 0 ? { required } : {}),
32
+ properties,
33
+ };
34
+ }
35
+
36
+ const stringValue: OperationJsonSchema = { type: "string" };
37
+ const integerValue: OperationJsonSchema = { type: "integer" };
38
+ const numberValue: OperationJsonSchema = { type: "number" };
39
+ const booleanValue: OperationJsonSchema = { type: "boolean" };
40
+ const stringArray: OperationJsonSchema = {
41
+ type: "array",
42
+ items: stringValue,
43
+ };
44
+
45
+ /** Preserve JSON Schema's nullable scalar/object representation in every
46
+ * generated consumer contract. Using a `type` union keeps the catalog
47
+ * readable and lets the MCP bridge round-trip the same wire schema. */
48
+ function nullable(schema: OperationJsonSchema): OperationJsonSchema {
49
+ const type = schema.type;
50
+ if (typeof type === "string") {
51
+ return { ...schema, type: [type, "null"] };
52
+ }
53
+ return { anyOf: [schema, { type: "null" }] };
54
+ }
55
+
56
+ /**
57
+ * The data contract is deliberately maintained separately from the operation
58
+ * implementations. Every catalog entry therefore has a concrete payload
59
+ * shape, while nested domain records can still evolve independently.
60
+ */
61
+ export const OPERATION_DATA_SCHEMAS: Readonly<
62
+ Record<OperationName, OperationJsonSchema>
63
+ > = {
64
+ kb_skills_list: objectData({ skills: valueArray }, ["skills"]),
65
+ kb_skills_load: objectData({
66
+ metadata: recordValue,
67
+ body: stringValue,
68
+ resources: valueArray,
69
+ contentHash: stringValue,
70
+ sourceType: stringValue,
71
+ }),
72
+ kb_skills_read: objectData({ content: stringValue }, ["content"]),
73
+ kb_query: objectData({ entities: recordArray, count: integerValue }, [
74
+ "entities",
75
+ "count",
76
+ ]),
77
+ kb_search: objectData(
78
+ { results: valueArray, count: integerValue, queryAnalysis: recordValue },
79
+ ["results", "count"],
80
+ ),
81
+ kb_status: objectData({
82
+ branch: stringValue,
83
+ snapshotId: stringValue,
84
+ syncedAt: { type: ["string", "null"] },
85
+ dirty: booleanValue,
86
+ syncState: stringValue,
87
+ kbPath: stringValue,
88
+ lastSyncSource: stringValue,
89
+ verificationSnapshot: stringValue,
90
+ verificationSnapshotAvailable: booleanValue,
91
+ verificationSnapshotDirty: booleanValue,
92
+ verificationSnapshotFileCount: integerValue,
93
+ verificationSnapshotVersion: stringValue,
94
+ verificationSnapshotError: stringValue,
95
+ staleReasons: recordArray,
96
+ staleReasonCount: integerValue,
97
+ staleReasonsTruncated: booleanValue,
98
+ branchAttachment: recordValue,
99
+ verificationSnapshotChanges: recordArray,
100
+ verificationSnapshotChangeCount: integerValue,
101
+ verificationSnapshotChangesTruncated: booleanValue,
102
+ branchStore: recordValue,
103
+ engineStatus: recordValue,
104
+ schemaStatus: recordValue,
105
+ migrationPlan: recordValue,
106
+ bootstrap: recordValue,
107
+ }),
108
+ kb_find_gaps: objectData({
109
+ rows: recordArray,
110
+ count: integerValue,
111
+ meta: recordValue,
112
+ }),
113
+ kb_coverage: objectData({
114
+ summary: recordValue,
115
+ rows: recordArray,
116
+ repairPlan: recordValue,
117
+ legacyMigrationPlan: recordValue,
118
+ symbolRepairPlan: recordValue,
119
+ migrationPlan: recordValue,
120
+ meta: recordValue,
121
+ }),
122
+ kb_graph: objectData({
123
+ nodes: recordArray,
124
+ edges: recordArray,
125
+ truncated: booleanValue,
126
+ meta: recordValue,
127
+ }),
128
+ kb_sparql_remote: objectData({ rows: valueArray }, ["rows"]),
129
+ kb_semantic_advisor: objectData({
130
+ receipt: recordValue,
131
+ warnings: stringArray,
132
+ }),
133
+ kb_model_requirement: objectData({
134
+ statement: stringValue,
135
+ claimKey: stringValue,
136
+ logicClaims: stringArray,
137
+ source: stringValue,
138
+ sourceFiles: stringArray,
139
+ claim: recordValue,
140
+ writeSet: recordValue,
141
+ applyPlan: recordArray,
142
+ isStrict: booleanValue,
143
+ confidence: numberValue,
144
+ extractionMode: stringValue,
145
+ extractionWarnings: stringArray,
146
+ warnings: recordArray,
147
+ migrationWarning: { type: ["string", "null"] },
148
+ logic: recordValue,
149
+ }),
150
+ kb_suggest_predicates: objectData({
151
+ text: stringValue,
152
+ claimKey: stringValue,
153
+ logicClaims: stringArray,
154
+ source: { type: ["string", "null"] },
155
+ requirementId: { type: ["string", "null"] },
156
+ subject: stringValue,
157
+ candidates: recordArray,
158
+ recommendedAction: {
159
+ type: "string",
160
+ enum: [
161
+ "apply_requires_predicate",
162
+ "provide_argument_bindings",
163
+ "resolve_schema_reference",
164
+ "record_ontology_gap",
165
+ ],
166
+ },
167
+ recommendedPredicateSchema: { type: ["object", "null"] },
168
+ applyPlan: recordArray,
169
+ relationshipPlan: { type: ["object", "null"] },
170
+ warnings: stringArray,
171
+ }),
172
+ kb_plan_bootstrap: objectData(
173
+ {
174
+ plan: recordValue,
175
+ version: stringValue,
176
+ planHash: stringValue,
177
+ status: stringValue,
178
+ expected: recordValue,
179
+ activation: recordValue,
180
+ contextQuestions: stringArray,
181
+ activationState: stringValue,
182
+ activationMode: stringValue,
183
+ bootstrapMode: stringValue,
184
+ activationReason: stringValue,
185
+ applyBlocked: booleanValue,
186
+ migrationWarning: { type: ["string", "null"] },
187
+ handoffMessage: stringValue,
188
+ confidence: recordValue,
189
+ tldr: stringValue,
190
+ promptBlock: stringValue,
191
+ recommendedActions: recordArray,
192
+ declaredContext: recordValue,
193
+ discoverySummary: recordValue,
194
+ candidates: recordArray,
195
+ actions: recordArray,
196
+ sourceWrites: recordArray,
197
+ suppressedCandidates: recordArray,
198
+ payoffSummary: recordValue,
199
+ diagnostics: stringArray,
200
+ },
201
+ ["plan", "diagnostics"],
202
+ ),
203
+ kb_validate_upsert: objectData({
204
+ valid: booleanValue,
205
+ errors: valueArray,
206
+ warnings: valueArray,
207
+ semanticAdvisor: nullable(recordValue),
208
+ normalizedPreview: nullable(recordValue),
209
+ }),
210
+ kb_upsert: objectData({
211
+ created: integerValue,
212
+ updated: integerValue,
213
+ relationships_created: integerValue,
214
+ warnings: valueArray,
215
+ semanticAdvisor: recordValue,
216
+ status: stringValue,
217
+ effectFailures: recordArray,
218
+ nextActions: recordArray,
219
+ sourceWrites: recordArray,
220
+ contradictionCheck: recordValue,
221
+ }),
222
+ kb_delete: objectData({
223
+ deleted: integerValue,
224
+ relationships_deleted: integerValue,
225
+ skipped: integerValue,
226
+ errors: valueArray,
227
+ error_codes: valueArray,
228
+ relationship_results: recordArray,
229
+ sync_required: booleanValue,
230
+ sourceWrites: recordArray,
231
+ deletionPlan: recordValue,
232
+ supersessionPlan: recordValue,
233
+ status: stringValue,
234
+ effectFailures: recordArray,
235
+ nextActions: recordArray,
236
+ }),
237
+ kb_check: objectData({
238
+ violations: valueArray,
239
+ count: integerValue,
240
+ diagnostics: recordArray,
241
+ qualityDiagnostics: recordArray,
242
+ impactDiagnostics: recordArray,
243
+ sourceFiles: stringArray,
244
+ extractedSymbols: recordArray,
245
+ linkedEntities: recordArray,
246
+ nextActions: valueArray,
247
+ migrationPlan: recordValue,
248
+ }),
249
+ kb_compile_intent: objectData({
250
+ version: stringValue,
251
+ planHash: stringValue,
252
+ status: stringValue,
253
+ expected: recordValue,
254
+ target: recordValue,
255
+ discovery: recordValue,
256
+ propositions: valueArray,
257
+ contradictionAnalysis: recordValue,
258
+ proposals: valueArray,
259
+ steps: valueArray,
260
+ sourceWrites: recordArray,
261
+ diagnostics: stringArray,
262
+ }),
263
+ kb_apply_plan: objectData({
264
+ version: stringValue,
265
+ outcome: stringValue,
266
+ planHash: stringValue,
267
+ changedEntities: integerValue,
268
+ changedRelationships: integerValue,
269
+ changedPaths: stringArray,
270
+ finalSnapshots: recordValue,
271
+ validationSummary: recordValue,
272
+ recoveryJournalId: { type: ["string", "null"] },
273
+ deleted: integerValue,
274
+ sourcePaths: stringArray,
275
+ actionResults: recordArray,
276
+ notes: stringArray,
277
+ remainingPlan: recordValue,
278
+ closeout: recordValue,
279
+ status: stringValue,
280
+ effectFailures: recordArray,
281
+ nextActions: recordArray,
282
+ }),
283
+ kb_ingest_verification: objectData({
284
+ receipt: recordValue,
285
+ testId: stringValue,
286
+ proofOutcome: stringValue,
287
+ receiptCount: integerValue,
288
+ upsert: recordValue,
289
+ status: stringValue,
290
+ effectFailures: recordArray,
291
+ nextActions: recordArray,
292
+ }),
293
+ };
294
+
295
+ type EffectOverrides = Readonly<{
296
+ destructive?: boolean;
297
+ retrySafety?: "safe" | "unsafe";
298
+ openWorld?: boolean;
299
+ }>;
300
+
301
+ const EFFECT_OVERRIDES: Readonly<
302
+ Record<
303
+ OperationName,
304
+ Readonly<Partial<Record<OperationEffect, EffectOverrides>>>
305
+ >
306
+ > = {
307
+ kb_skills_list: {},
308
+ kb_skills_load: {},
309
+ kb_skills_read: {},
310
+ kb_query: {},
311
+ kb_search: {},
312
+ kb_status: {},
313
+ kb_find_gaps: {},
314
+ kb_coverage: {},
315
+ kb_graph: {},
316
+ kb_sparql_remote: { "network-read": { openWorld: true } },
317
+ kb_semantic_advisor: {},
318
+ kb_model_requirement: {},
319
+ kb_suggest_predicates: {},
320
+ kb_plan_bootstrap: {},
321
+ kb_validate_upsert: {},
322
+ kb_upsert: {
323
+ "kb-write": { destructive: true, retrySafety: "unsafe" },
324
+ "workspace-write": { destructive: true, retrySafety: "unsafe" },
325
+ },
326
+ kb_delete: {
327
+ "kb-write": { destructive: true, retrySafety: "unsafe" },
328
+ "workspace-write": { destructive: true, retrySafety: "unsafe" },
329
+ },
330
+ kb_check: {},
331
+ kb_compile_intent: {},
332
+ kb_apply_plan: {
333
+ "kb-write": { destructive: true, retrySafety: "unsafe" },
334
+ "workspace-write": { destructive: true, retrySafety: "unsafe" },
335
+ },
336
+ kb_ingest_verification: {
337
+ "kb-write": { destructive: true, retrySafety: "unsafe" },
338
+ },
339
+ };
340
+
341
+ export function declaredEffects(
342
+ operation: OperationName,
343
+ effects: readonly OperationEffect[],
344
+ ): readonly OperationEffectDeclaration[] {
345
+ const overrides = EFFECT_OVERRIDES[operation];
346
+ if (!overrides) throw new Error(`Missing effect contract for ${operation}`);
347
+ const expected = new Set(effects);
348
+ const declarations = effects.map((kind) => {
349
+ const override = overrides[kind] ?? {};
350
+ return {
351
+ kind,
352
+ mutability:
353
+ kind === "kb-write" || kind === "workspace-write"
354
+ ? ("write" as const)
355
+ : ("read" as const),
356
+ destructive: override.destructive === true,
357
+ retrySafety:
358
+ override.retrySafety ?? (override.destructive ? "unsafe" : "safe"),
359
+ openWorld: override.openWorld === true,
360
+ };
361
+ });
362
+ if (new Set(declarations.map(({ kind }) => kind)).size !== expected.size) {
363
+ throw new Error(`Duplicate effect contract for ${operation}`);
364
+ }
365
+ return declarations;
366
+ }