kibi-cli 0.19.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (672) hide show
  1. package/dist/cli-errors.d.ts +3 -1
  2. package/dist/cli-errors.d.ts.map +1 -1
  3. package/dist/cli-errors.js +4 -1
  4. package/dist/cli-json-command.d.ts +1 -0
  5. package/dist/cli-json-command.d.ts.map +1 -1
  6. package/dist/cli-json-command.js +13 -4
  7. package/dist/cli-operation-loader.d.ts.map +1 -1
  8. package/dist/cli-operation-loader.js +53 -20
  9. package/dist/cli-operation-metadata.d.ts +21 -8
  10. package/dist/cli-operation-metadata.d.ts.map +1 -1
  11. package/dist/cli-operation-metadata.js +27 -10
  12. package/dist/cli-protocol.d.ts.map +1 -1
  13. package/dist/cli-protocol.js +38 -8
  14. package/dist/cli-register-foundation.d.ts.map +1 -1
  15. package/dist/cli-register-foundation.js +14 -2
  16. package/dist/cli-register-maintenance.d.ts.map +1 -1
  17. package/dist/cli-register-maintenance.js +33 -4
  18. package/dist/cli-register-proof.d.ts +3 -0
  19. package/dist/cli-register-proof.d.ts.map +1 -0
  20. package/dist/cli-register-proof.js +103 -0
  21. package/dist/cli-register-reporting.d.ts.map +1 -1
  22. package/dist/cli-register-reporting.js +11 -0
  23. package/dist/cli.d.ts +4 -0
  24. package/dist/cli.d.ts.map +1 -1
  25. package/dist/cli.js +17 -8
  26. package/dist/commands/aggregated-checks.d.ts +1 -2
  27. package/dist/commands/aggregated-checks.d.ts.map +1 -1
  28. package/dist/commands/aggregated-checks.js +14 -9
  29. package/dist/commands/branch.d.ts +37 -0
  30. package/dist/commands/branch.d.ts.map +1 -1
  31. package/dist/commands/branch.js +375 -40
  32. package/dist/commands/check.d.ts +14 -0
  33. package/dist/commands/check.d.ts.map +1 -1
  34. package/dist/commands/check.js +209 -110
  35. package/dist/commands/coverage.d.ts +1 -0
  36. package/dist/commands/coverage.d.ts.map +1 -1
  37. package/dist/commands/coverage.js +6 -0
  38. package/dist/commands/discovery-shared.d.ts.map +1 -1
  39. package/dist/commands/discovery-shared.js +10 -19
  40. package/dist/commands/doctor.d.ts +26 -1
  41. package/dist/commands/doctor.d.ts.map +1 -1
  42. package/dist/commands/doctor.js +291 -30
  43. package/dist/commands/engine.d.ts +12 -0
  44. package/dist/commands/engine.d.ts.map +1 -1
  45. package/dist/commands/engine.js +50 -7
  46. package/dist/commands/gc.d.ts +5 -2
  47. package/dist/commands/gc.d.ts.map +1 -1
  48. package/dist/commands/gc.js +140 -71
  49. package/dist/commands/github-init.d.ts +57 -0
  50. package/dist/commands/github-init.d.ts.map +1 -0
  51. package/dist/commands/github-init.js +314 -0
  52. package/dist/commands/init-helpers.d.ts +1 -1
  53. package/dist/commands/init-helpers.d.ts.map +1 -1
  54. package/dist/commands/init-helpers.js +109 -28
  55. package/dist/commands/init.d.ts +2 -0
  56. package/dist/commands/init.d.ts.map +1 -1
  57. package/dist/commands/init.js +79 -24
  58. package/dist/commands/legacy-storage-migration.d.ts +54 -0
  59. package/dist/commands/legacy-storage-migration.d.ts.map +1 -0
  60. package/dist/commands/legacy-storage-migration.js +277 -0
  61. package/dist/commands/migrate.d.ts +11 -0
  62. package/dist/commands/migrate.d.ts.map +1 -1
  63. package/dist/commands/migrate.js +249 -96
  64. package/dist/commands/proof-migrate-legacy.d.ts +7 -0
  65. package/dist/commands/proof-migrate-legacy.d.ts.map +1 -0
  66. package/dist/commands/proof-migrate-legacy.js +45 -0
  67. package/dist/commands/proof-prune.d.ts +8 -0
  68. package/dist/commands/proof-prune.d.ts.map +1 -0
  69. package/dist/commands/proof-prune.js +53 -0
  70. package/dist/commands/prove.d.ts +37 -0
  71. package/dist/commands/prove.d.ts.map +1 -0
  72. package/dist/commands/prove.js +470 -0
  73. package/dist/commands/report.d.ts +24 -0
  74. package/dist/commands/report.d.ts.map +1 -0
  75. package/dist/commands/report.js +191 -0
  76. package/dist/commands/sync/cache.d.ts +16 -3
  77. package/dist/commands/sync/cache.d.ts.map +1 -1
  78. package/dist/commands/sync/cache.js +111 -4
  79. package/dist/commands/sync/discovery.d.ts +26 -2
  80. package/dist/commands/sync/discovery.d.ts.map +1 -1
  81. package/dist/commands/sync/discovery.js +204 -15
  82. package/dist/commands/sync/extraction.d.ts +8 -1
  83. package/dist/commands/sync/extraction.d.ts.map +1 -1
  84. package/dist/commands/sync/extraction.js +38 -4
  85. package/dist/commands/sync/manifest.d.ts +9 -6
  86. package/dist/commands/sync/manifest.d.ts.map +1 -1
  87. package/dist/commands/sync/manifest.js +195 -60
  88. package/dist/commands/sync/persistence.d.ts +4 -1
  89. package/dist/commands/sync/persistence.d.ts.map +1 -1
  90. package/dist/commands/sync/persistence.js +26 -12
  91. package/dist/commands/sync/staging.d.ts +1 -0
  92. package/dist/commands/sync/staging.d.ts.map +1 -1
  93. package/dist/commands/sync/staging.js +5 -2
  94. package/dist/commands/sync/untracked-targets.d.ts +24 -0
  95. package/dist/commands/sync/untracked-targets.d.ts.map +1 -0
  96. package/dist/commands/sync/untracked-targets.js +108 -0
  97. package/dist/commands/sync.d.ts +17 -1
  98. package/dist/commands/sync.d.ts.map +1 -1
  99. package/dist/commands/sync.js +375 -106
  100. package/dist/diagnostics.d.ts +1 -1
  101. package/dist/diagnostics.d.ts.map +1 -1
  102. package/dist/engine-daemon.d.ts +3 -1
  103. package/dist/engine-daemon.d.ts.map +1 -1
  104. package/dist/engine-daemon.js +49 -20
  105. package/dist/engine.d.ts +34 -3
  106. package/dist/engine.d.ts.map +1 -1
  107. package/dist/engine.js +578 -42
  108. package/dist/env.d.ts.map +1 -1
  109. package/dist/env.js +5 -6
  110. package/dist/extractors/manifest.d.ts +13 -1
  111. package/dist/extractors/manifest.d.ts.map +1 -1
  112. package/dist/extractors/manifest.js +97 -10
  113. package/dist/extractors/markdown.d.ts +5 -2
  114. package/dist/extractors/markdown.d.ts.map +1 -1
  115. package/dist/extractors/markdown.js +47 -12
  116. package/dist/extractors/playwright-cases.d.ts +24 -0
  117. package/dist/extractors/playwright-cases.d.ts.map +1 -0
  118. package/dist/extractors/playwright-cases.js +126 -0
  119. package/dist/extractors/relationships.d.ts +6 -0
  120. package/dist/extractors/relationships.d.ts.map +1 -1
  121. package/dist/extractors/relationships.js +2 -1
  122. package/dist/extractors/symbol-coordinates.d.ts +81 -3
  123. package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
  124. package/dist/extractors/symbol-coordinates.js +389 -51
  125. package/dist/extractors/symbols-coordinator.js +11 -1
  126. package/dist/extractors/symbols-ts.d.ts +1 -0
  127. package/dist/extractors/symbols-ts.d.ts.map +1 -1
  128. package/dist/extractors/symbols-ts.js +142 -67
  129. package/dist/intent-search.d.ts +61 -0
  130. package/dist/intent-search.d.ts.map +1 -0
  131. package/dist/intent-search.js +437 -0
  132. package/dist/logic/ir.d.ts +1 -0
  133. package/dist/logic/ir.d.ts.map +1 -1
  134. package/dist/logic/ir.js +1 -1
  135. package/dist/operations/bootstrap/activation.d.ts +5 -0
  136. package/dist/operations/bootstrap/activation.d.ts.map +1 -0
  137. package/dist/operations/{autopilot → bootstrap}/activation.js +58 -33
  138. package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts.map +1 -1
  139. package/dist/operations/bootstrap/candidates.d.ts +4 -0
  140. package/dist/operations/{autopilot → bootstrap}/candidates.d.ts.map +1 -1
  141. package/dist/operations/{autopilot → bootstrap}/candidates.js +22 -8
  142. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts +2 -2
  143. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts.map +1 -1
  144. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.js +46 -6
  145. package/dist/operations/{autopilot → bootstrap}/discovery.d.ts +1 -1
  146. package/dist/operations/bootstrap/discovery.d.ts.map +1 -0
  147. package/dist/operations/{autopilot → bootstrap}/discovery.js +21 -14
  148. package/dist/operations/bootstrap/generate.d.ts +9 -0
  149. package/dist/operations/bootstrap/generate.d.ts.map +1 -0
  150. package/dist/operations/bootstrap/generate.js +207 -0
  151. package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts +2 -2
  152. package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts.map +1 -1
  153. package/dist/operations/{autopilot → bootstrap}/guidance-actions.js +4 -4
  154. package/dist/operations/{autopilot → bootstrap}/guidance.d.ts +3 -2
  155. package/dist/operations/bootstrap/guidance.d.ts.map +1 -0
  156. package/dist/operations/{autopilot → bootstrap}/guidance.js +3 -1
  157. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts +2 -2
  158. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts.map +1 -1
  159. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.js +4 -3
  160. package/dist/operations/bootstrap/presentation.d.ts +15 -0
  161. package/dist/operations/bootstrap/presentation.d.ts.map +1 -0
  162. package/dist/operations/bootstrap/presentation.js +177 -0
  163. package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts.map +1 -1
  164. package/dist/operations/{autopilot → bootstrap}/types.d.ts +63 -21
  165. package/dist/operations/bootstrap/types.d.ts.map +1 -0
  166. package/dist/operations/bootstrap/types.js +25 -0
  167. package/dist/operations/modeling/model-requirement.d.ts +5 -0
  168. package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
  169. package/dist/operations/modeling/model-requirement.js +57 -63
  170. package/dist/operations/modeling/predicate-applicability.d.ts +16 -0
  171. package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -0
  172. package/dist/operations/modeling/predicate-applicability.js +375 -0
  173. package/dist/operations/modeling/predicate-applyplan.d.ts +13 -2
  174. package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
  175. package/dist/operations/modeling/predicate-applyplan.js +100 -3
  176. package/dist/operations/modeling/predicate-bindings.d.ts +6 -0
  177. package/dist/operations/modeling/predicate-bindings.d.ts.map +1 -0
  178. package/dist/operations/modeling/predicate-bindings.js +122 -0
  179. package/dist/operations/modeling/predicate-catalog-2.d.ts.map +1 -1
  180. package/dist/operations/modeling/predicate-catalog-2.js +18 -2
  181. package/dist/operations/modeling/predicate-catalog-3.d.ts.map +1 -1
  182. package/dist/operations/modeling/predicate-catalog-3.js +17 -1
  183. package/dist/operations/modeling/predicate-catalog-4.d.ts.map +1 -1
  184. package/dist/operations/modeling/predicate-catalog-4.js +155 -0
  185. package/dist/operations/modeling/predicate-catalog-5.d.ts +10 -0
  186. package/dist/operations/modeling/predicate-catalog-5.d.ts.map +1 -0
  187. package/dist/operations/modeling/predicate-catalog-5.js +291 -0
  188. package/dist/operations/modeling/predicate-catalog.d.ts.map +1 -1
  189. package/dist/operations/modeling/predicate-catalog.js +4 -0
  190. package/dist/operations/modeling/predicate-inference-1.d.ts.map +1 -1
  191. package/dist/operations/modeling/predicate-inference-1.js +8 -0
  192. package/dist/operations/modeling/predicate-inference-launcher.d.ts +10 -0
  193. package/dist/operations/modeling/predicate-inference-launcher.d.ts.map +1 -0
  194. package/dist/operations/modeling/predicate-inference-launcher.js +13 -0
  195. package/dist/operations/modeling/predicate-inference.d.ts.map +1 -1
  196. package/dist/operations/modeling/predicate-inference.js +4 -0
  197. package/dist/operations/modeling/predicate-loader.d.ts +1 -0
  198. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
  199. package/dist/operations/modeling/predicate-loader.js +11 -3
  200. package/dist/operations/modeling/predicate-ranker.d.ts +8 -1
  201. package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
  202. package/dist/operations/modeling/predicate-ranker.js +159 -24
  203. package/dist/operations/modeling/predicate-score-3.d.ts.map +1 -1
  204. package/dist/operations/modeling/predicate-score-3.js +6 -0
  205. package/dist/operations/modeling/predicate-types.d.ts +35 -1
  206. package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
  207. package/dist/operations/modeling/predicate-usage-hints-3.d.ts.map +1 -1
  208. package/dist/operations/modeling/predicate-usage-hints-3.js +40 -0
  209. package/dist/operations/modeling/predicate-usage-hints-4.d.ts +3 -0
  210. package/dist/operations/modeling/predicate-usage-hints-4.d.ts.map +1 -0
  211. package/dist/operations/modeling/predicate-usage-hints-4.js +84 -0
  212. package/dist/operations/modeling/predicate-utils.d.ts.map +1 -1
  213. package/dist/operations/modeling/predicate-utils.js +2 -0
  214. package/dist/operations/modeling/suggest-predicates.d.ts +4 -2
  215. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
  216. package/dist/operations/modeling/suggest-predicates.js +203 -32
  217. package/dist/operations/mutation/contradictions.d.ts +2 -1
  218. package/dist/operations/mutation/contradictions.d.ts.map +1 -1
  219. package/dist/operations/mutation/contradictions.js +26 -5
  220. package/dist/operations/mutation/delete.d.ts +3 -0
  221. package/dist/operations/mutation/delete.d.ts.map +1 -1
  222. package/dist/operations/mutation/delete.js +483 -19
  223. package/dist/operations/mutation/entity-projection.d.ts +11 -0
  224. package/dist/operations/mutation/entity-projection.d.ts.map +1 -0
  225. package/dist/operations/mutation/entity-projection.js +14 -0
  226. package/dist/operations/mutation/relationships.d.ts +11 -0
  227. package/dist/operations/mutation/relationships.d.ts.map +1 -1
  228. package/dist/operations/mutation/relationships.js +77 -5
  229. package/dist/operations/mutation/saga.d.ts +51 -0
  230. package/dist/operations/mutation/saga.d.ts.map +1 -0
  231. package/dist/operations/mutation/saga.js +67 -0
  232. package/dist/operations/mutation/serialization.d.ts.map +1 -1
  233. package/dist/operations/mutation/serialization.js +3 -1
  234. package/dist/operations/mutation/source-authoring.d.ts +65 -0
  235. package/dist/operations/mutation/source-authoring.d.ts.map +1 -0
  236. package/dist/operations/mutation/source-authoring.js +576 -0
  237. package/dist/operations/mutation/strict-fact.d.ts +1 -0
  238. package/dist/operations/mutation/strict-fact.d.ts.map +1 -1
  239. package/dist/operations/mutation/strict-fact.js +8 -5
  240. package/dist/operations/mutation/symbol-compiler-lock.d.ts +54 -0
  241. package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -0
  242. package/dist/operations/mutation/symbol-compiler-lock.js +337 -0
  243. package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
  244. package/dist/operations/mutation/symbol-granularity.js +35 -4
  245. package/dist/operations/mutation/symbol-refresh.d.ts +19 -1
  246. package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
  247. package/dist/operations/mutation/symbol-refresh.js +227 -63
  248. package/dist/operations/mutation/types.d.ts +57 -1
  249. package/dist/operations/mutation/types.d.ts.map +1 -1
  250. package/dist/operations/mutation/upsert.d.ts +18 -2
  251. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  252. package/dist/operations/mutation/upsert.js +403 -32
  253. package/dist/operations/mutation/validate-upsert.js +2 -2
  254. package/dist/operations/mutation/validation.d.ts.map +1 -1
  255. package/dist/operations/mutation/validation.js +47 -4
  256. package/dist/operations/mutation/warnings.d.ts +1 -0
  257. package/dist/operations/mutation/warnings.d.ts.map +1 -1
  258. package/dist/operations/mutation/warnings.js +7 -5
  259. package/dist/operations/mutation/workspace-mutation-lock.d.ts +60 -0
  260. package/dist/operations/mutation/workspace-mutation-lock.d.ts.map +1 -0
  261. package/dist/operations/mutation/workspace-mutation-lock.js +362 -0
  262. package/dist/operations/planning/apply-plan.d.ts +19 -0
  263. package/dist/operations/planning/apply-plan.d.ts.map +1 -0
  264. package/dist/operations/planning/apply-plan.js +1514 -0
  265. package/dist/operations/planning/compile-intent.d.ts +108 -0
  266. package/dist/operations/planning/compile-intent.d.ts.map +1 -0
  267. package/dist/operations/planning/compile-intent.js +618 -0
  268. package/dist/operations/proof/ingest-proof.d.ts +34 -0
  269. package/dist/operations/proof/ingest-proof.d.ts.map +1 -0
  270. package/dist/operations/proof/ingest-proof.js +307 -0
  271. package/dist/operations/proof/migrate-legacy-receipts.d.ts +30 -0
  272. package/dist/operations/proof/migrate-legacy-receipts.d.ts.map +1 -0
  273. package/dist/operations/proof/migrate-legacy-receipts.js +88 -0
  274. package/dist/operations/proof/prune-receipts.d.ts +35 -0
  275. package/dist/operations/proof/prune-receipts.d.ts.map +1 -0
  276. package/dist/operations/proof/prune-receipts.js +91 -0
  277. package/dist/operations/proof/receipt-document.d.ts +29 -0
  278. package/dist/operations/proof/receipt-document.d.ts.map +1 -0
  279. package/dist/operations/proof/receipt-document.js +117 -0
  280. package/dist/operations/semantic-advisor/analyze-prose.d.ts +1 -0
  281. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  282. package/dist/operations/semantic-advisor/analyze-prose.js +52 -28
  283. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
  284. package/dist/operations/semantic-advisor/clauses.js +35 -9
  285. package/dist/operations/semantic-advisor/ingestion-boundary.d.ts.map +1 -1
  286. package/dist/operations/semantic-advisor/ingestion-boundary.js +7 -3
  287. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts +51 -0
  288. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts.map +1 -0
  289. package/dist/operations/semantic-advisor/predicate-rules-launcher.js +96 -0
  290. package/dist/operations/semantic-advisor/strict-count-rules.d.ts +2 -0
  291. package/dist/operations/semantic-advisor/strict-count-rules.d.ts.map +1 -1
  292. package/dist/operations/semantic-advisor/strict-count-rules.js +40 -25
  293. package/dist/operations/semantic-advisor/types.d.ts +13 -5
  294. package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
  295. package/dist/prolog/codec.d.ts +13 -1
  296. package/dist/prolog/codec.d.ts.map +1 -1
  297. package/dist/prolog/codec.js +269 -153
  298. package/dist/prolog/error-terms.d.ts +47 -0
  299. package/dist/prolog/error-terms.d.ts.map +1 -0
  300. package/dist/prolog/error-terms.js +334 -0
  301. package/dist/prolog/janitor.d.ts +50 -0
  302. package/dist/prolog/janitor.d.ts.map +1 -0
  303. package/dist/prolog/janitor.js +154 -0
  304. package/dist/prolog/store-lock.d.ts +45 -0
  305. package/dist/prolog/store-lock.d.ts.map +1 -0
  306. package/dist/prolog/store-lock.js +195 -0
  307. package/dist/prolog.d.ts +7 -0
  308. package/dist/prolog.d.ts.map +1 -1
  309. package/dist/prolog.js +82 -25
  310. package/dist/proof/evaluate.d.ts +27 -0
  311. package/dist/proof/evaluate.d.ts.map +1 -0
  312. package/dist/proof/evaluate.js +151 -0
  313. package/dist/proof/inspect.d.ts +12 -0
  314. package/dist/proof/inspect.d.ts.map +1 -0
  315. package/dist/proof/inspect.js +236 -0
  316. package/dist/proof/integrations.d.ts +35 -0
  317. package/dist/proof/integrations.d.ts.map +1 -0
  318. package/dist/proof/integrations.js +123 -0
  319. package/dist/proof/producers/junit-adapter.d.ts +26 -0
  320. package/dist/proof/producers/junit-adapter.d.ts.map +1 -0
  321. package/dist/proof/producers/junit-adapter.js +186 -0
  322. package/dist/proof/producers/playwright-case-id.d.ts +8 -0
  323. package/dist/proof/producers/playwright-case-id.d.ts.map +1 -0
  324. package/dist/proof/producers/playwright-case-id.js +25 -0
  325. package/dist/proof/producers/playwright-reporter.d.ts +27 -0
  326. package/dist/proof/producers/playwright-reporter.d.ts.map +1 -0
  327. package/dist/proof/producers/playwright-reporter.js +138 -0
  328. package/dist/proof/producers/tap-adapter.d.ts +10 -0
  329. package/dist/proof/producers/tap-adapter.d.ts.map +1 -0
  330. package/dist/proof/producers/tap-adapter.js +200 -0
  331. package/dist/proof/receipt-outcome.d.ts +2 -0
  332. package/dist/proof/receipt-outcome.d.ts.map +1 -0
  333. package/dist/proof/receipt-outcome.js +1 -0
  334. package/dist/public/branch-resolver.d.ts +1 -0
  335. package/dist/public/branch-resolver.d.ts.map +1 -1
  336. package/dist/public/branch-resolver.js +1 -0
  337. package/dist/public/check-types.d.ts +2 -2
  338. package/dist/public/check-types.d.ts.map +1 -1
  339. package/dist/public/check-types.js +16 -16
  340. package/dist/public/diagnostic-usage.d.ts.map +1 -1
  341. package/dist/public/diagnostic-usage.js +74 -6
  342. package/dist/public/distribution-parity.d.ts +7 -1
  343. package/dist/public/distribution-parity.d.ts.map +1 -1
  344. package/dist/public/distribution-parity.js +15 -9
  345. package/dist/public/ignore-policy.d.ts.map +1 -1
  346. package/dist/public/ignore-policy.js +16 -4
  347. package/dist/public/impact/coverage-depth-quality.d.ts +7 -1
  348. package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
  349. package/dist/public/impact/coverage-depth-quality.js +22 -4
  350. package/dist/public/impact/diagnostics.d.ts.map +1 -1
  351. package/dist/public/impact/diagnostics.js +2 -2
  352. package/dist/public/impact/diff-meaning.d.ts +1 -0
  353. package/dist/public/impact/diff-meaning.d.ts.map +1 -1
  354. package/dist/public/impact/diff-meaning.js +5 -2
  355. package/dist/public/impact/full-kb-quality.d.ts +7 -2
  356. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  357. package/dist/public/impact/full-kb-quality.js +364 -39
  358. package/dist/public/impact/manifest.d.ts.map +1 -1
  359. package/dist/public/impact/manifest.js +2 -5
  360. package/dist/public/operational-artifacts.d.ts.map +1 -1
  361. package/dist/public/operational-artifacts.js +7 -1
  362. package/dist/public/operations/catalog.d.ts +900 -34
  363. package/dist/public/operations/catalog.d.ts.map +1 -1
  364. package/dist/public/operations/catalog.js +130 -6
  365. package/dist/public/operations/check-executor.d.ts +2 -2
  366. package/dist/public/operations/check-executor.d.ts.map +1 -1
  367. package/dist/public/operations/check-executor.js +68 -13
  368. package/dist/public/operations/check-format-shared.d.ts +3 -0
  369. package/dist/public/operations/check-format-shared.d.ts.map +1 -1
  370. package/dist/public/operations/check-format-shared.js +3 -0
  371. package/dist/public/operations/check-helpers.d.ts +27 -2
  372. package/dist/public/operations/check-helpers.d.ts.map +1 -1
  373. package/dist/public/operations/check-helpers.js +62 -26
  374. package/dist/public/operations/contracts.d.ts +18 -0
  375. package/dist/public/operations/contracts.d.ts.map +1 -0
  376. package/dist/public/operations/contracts.js +334 -0
  377. package/dist/public/operations/discovery-entities.d.ts +3 -0
  378. package/dist/public/operations/discovery-entities.d.ts.map +1 -1
  379. package/dist/public/operations/discovery-entities.js +4 -0
  380. package/dist/public/operations/discovery-executors.d.ts +43 -7
  381. package/dist/public/operations/discovery-executors.d.ts.map +1 -1
  382. package/dist/public/operations/discovery-executors.js +216 -13
  383. package/dist/public/operations/index.d.ts +9 -4
  384. package/dist/public/operations/index.d.ts.map +1 -1
  385. package/dist/public/operations/index.js +8 -3
  386. package/dist/public/operations/migration-plan.d.ts +102 -0
  387. package/dist/public/operations/migration-plan.d.ts.map +1 -0
  388. package/dist/public/operations/migration-plan.js +539 -0
  389. package/dist/public/operations/node-ports.d.ts.map +1 -1
  390. package/dist/public/operations/node-ports.js +71 -11
  391. package/dist/public/operations/prolog-json.d.ts +14 -0
  392. package/dist/public/operations/prolog-json.d.ts.map +1 -1
  393. package/dist/public/operations/prolog-json.js +44 -5
  394. package/dist/public/operations/repair-plan.d.ts +3 -3
  395. package/dist/public/operations/repair-plan.d.ts.map +1 -1
  396. package/dist/public/operations/repair-plan.js +49 -18
  397. package/dist/public/operations/result-envelope.d.ts +14 -0
  398. package/dist/public/operations/result-envelope.d.ts.map +1 -0
  399. package/dist/public/operations/result-envelope.js +106 -0
  400. package/dist/public/operations/runtime-types.d.ts +102 -7
  401. package/dist/public/operations/runtime-types.d.ts.map +1 -1
  402. package/dist/public/operations/source-relationship-parity.d.ts +13 -0
  403. package/dist/public/operations/source-relationship-parity.d.ts.map +1 -0
  404. package/dist/public/operations/source-relationship-parity.js +162 -0
  405. package/dist/public/operations/specs/{autopilot.d.ts → bootstrap.d.ts} +9 -9
  406. package/dist/public/operations/specs/bootstrap.d.ts.map +1 -0
  407. package/dist/public/operations/specs/{autopilot.js → bootstrap.js} +8 -7
  408. package/dist/public/operations/specs/check-rules.generated.d.ts +5 -0
  409. package/dist/public/operations/specs/check-rules.generated.d.ts.map +1 -0
  410. package/dist/public/operations/specs/check-rules.generated.js +34 -0
  411. package/dist/public/operations/specs/check.d.ts +9 -4
  412. package/dist/public/operations/specs/check.d.ts.map +1 -1
  413. package/dist/public/operations/specs/check.js +10 -21
  414. package/dist/public/operations/specs/discovery.d.ts +87 -3
  415. package/dist/public/operations/specs/discovery.d.ts.map +1 -1
  416. package/dist/public/operations/specs/discovery.js +53 -3
  417. package/dist/public/operations/specs/modeling.d.ts +3 -3
  418. package/dist/public/operations/specs/modeling.js +3 -3
  419. package/dist/public/operations/specs/mutation-schemas.d.ts +251 -14
  420. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  421. package/dist/public/operations/specs/mutation-schemas.js +16 -6
  422. package/dist/public/operations/specs/mutation.d.ts +42 -2
  423. package/dist/public/operations/specs/mutation.d.ts.map +1 -1
  424. package/dist/public/operations/specs/mutation.js +26 -2
  425. package/dist/public/operations/specs/planning.d.ts +279 -0
  426. package/dist/public/operations/specs/planning.d.ts.map +1 -0
  427. package/dist/public/operations/specs/planning.js +197 -0
  428. package/dist/public/operations/specs/proof.d.ts +212 -0
  429. package/dist/public/operations/specs/proof.d.ts.map +1 -0
  430. package/dist/public/operations/specs/proof.js +30 -0
  431. package/dist/public/operations/specs/reporting.d.ts +23 -1
  432. package/dist/public/operations/specs/reporting.d.ts.map +1 -1
  433. package/dist/public/operations/specs/reporting.js +156 -11
  434. package/dist/public/operations/specs/upsert.d.ts +265 -14
  435. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  436. package/dist/public/operations/specs/upsert.js +9 -0
  437. package/dist/public/operations/symbol-repair-plan.d.ts +22 -0
  438. package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -0
  439. package/dist/public/operations/symbol-repair-plan.js +238 -0
  440. package/dist/public/operations/types.d.ts +52 -1
  441. package/dist/public/operations/types.d.ts.map +1 -1
  442. package/dist/public/proof-fingerprint.d.ts +54 -0
  443. package/dist/public/proof-fingerprint.d.ts.map +1 -0
  444. package/dist/public/proof-fingerprint.js +141 -0
  445. package/dist/public/proof-protocol.d.ts +354 -0
  446. package/dist/public/proof-protocol.d.ts.map +1 -0
  447. package/dist/public/proof-protocol.js +454 -0
  448. package/dist/public/proof-receipt.d.ts +279 -0
  449. package/dist/public/proof-receipt.d.ts.map +1 -0
  450. package/dist/public/proof-receipt.js +377 -0
  451. package/dist/public/schemas/entity.d.ts.map +1 -1
  452. package/dist/public/schemas/entity.js +22 -6
  453. package/dist/public/skills/kibi-bootstrap/SKILL.md +58 -0
  454. package/dist/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
  455. package/dist/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
  456. package/dist/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
  457. package/dist/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
  458. package/dist/public/skills/kibi-freshness/SKILL.md +39 -9
  459. package/dist/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
  460. package/dist/public/skills/kibi-freshness/resources/operation-access.md +6 -0
  461. package/dist/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
  462. package/dist/public/skills/kibi-traceability/SKILL.md +47 -47
  463. package/dist/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
  464. package/dist/public/skills/kibi-traceability/resources/operation-access.md +5 -0
  465. package/dist/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
  466. package/dist/public/skills/kibi-traceability/resources/traceability.md +8 -0
  467. package/dist/public/skills/kibi-usage/SKILL.md +136 -231
  468. package/dist/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
  469. package/dist/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
  470. package/dist/public/skills/kibi-usage/resources/operation-access.md +36 -38
  471. package/dist/public/skills/kibi-usage/resources/proof.md +105 -0
  472. package/dist/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
  473. package/dist/public/skills/kibi-usage/resources/source-authoring.md +31 -0
  474. package/dist/public/skills/kibi-usage/resources/workflows.md +57 -4
  475. package/dist/public/symbol-granularity.d.ts +3 -14
  476. package/dist/public/symbol-granularity.d.ts.map +1 -1
  477. package/dist/public/symbol-granularity.generated.d.ts +16 -0
  478. package/dist/public/symbol-granularity.generated.d.ts.map +1 -0
  479. package/dist/public/symbol-granularity.generated.js +20 -0
  480. package/dist/public/symbol-granularity.js +6 -46
  481. package/dist/public/telemetry-acceptance.d.ts +3 -70
  482. package/dist/public/telemetry-acceptance.d.ts.map +1 -1
  483. package/dist/public/telemetry-acceptance.js +11 -2
  484. package/dist/public/telemetry-remediation.js +1 -1
  485. package/dist/relationships/shards.d.ts +16 -0
  486. package/dist/relationships/shards.d.ts.map +1 -1
  487. package/dist/relationships/shards.js +87 -2
  488. package/dist/report/brand.d.ts +19 -0
  489. package/dist/report/brand.d.ts.map +1 -0
  490. package/dist/report/brand.js +112 -0
  491. package/dist/report/html-report.css +282 -0
  492. package/dist/report/html-report.d.ts +21 -0
  493. package/dist/report/html-report.d.ts.map +1 -0
  494. package/dist/report/html-report.js +700 -0
  495. package/dist/report/relative-time.d.ts +4 -0
  496. package/dist/report/relative-time.d.ts.map +1 -0
  497. package/dist/report/relative-time.js +46 -0
  498. package/dist/report/report-view.d.ts +17 -0
  499. package/dist/report/report-view.d.ts.map +1 -0
  500. package/dist/report/report-view.js +33 -0
  501. package/dist/report/repository.d.ts +35 -0
  502. package/dist/report/repository.d.ts.map +1 -0
  503. package/dist/report/repository.js +151 -0
  504. package/dist/runtime/cli-runtime.d.ts +2 -0
  505. package/dist/runtime/cli-runtime.d.ts.map +1 -1
  506. package/dist/runtime/cli-runtime.js +90 -23
  507. package/dist/schemas/entity.schema.json +1254 -239
  508. package/dist/search-ranking.d.ts +1 -0
  509. package/dist/search-ranking.d.ts.map +1 -1
  510. package/dist/search-ranking.js +3 -0
  511. package/dist/traceability/evidence-model.d.ts +30 -2
  512. package/dist/traceability/evidence-model.d.ts.map +1 -1
  513. package/dist/traceability/evidence-model.js +2 -2
  514. package/dist/traceability/git-staged.d.ts +20 -0
  515. package/dist/traceability/git-staged.d.ts.map +1 -1
  516. package/dist/traceability/git-staged.js +156 -37
  517. package/dist/traceability/markdown-validate.d.ts.map +1 -1
  518. package/dist/traceability/markdown-validate.js +12 -7
  519. package/dist/traceability/staged-diagnostics.d.ts +7 -0
  520. package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
  521. package/dist/traceability/staged-diagnostics.js +78 -7
  522. package/dist/traceability/staged-file-coverage.d.ts +33 -0
  523. package/dist/traceability/staged-file-coverage.d.ts.map +1 -0
  524. package/dist/traceability/staged-file-coverage.js +284 -0
  525. package/dist/traceability/staged-impact-contract.d.ts +3 -3
  526. package/dist/traceability/staged-impact-contract.d.ts.map +1 -1
  527. package/dist/traceability/staged-impact-contract.js +12 -40
  528. package/dist/traceability/staged-symbols-manifest.d.ts +13 -0
  529. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  530. package/dist/traceability/staged-symbols-manifest.js +142 -26
  531. package/dist/traceability/symbol-extract.d.ts +5 -0
  532. package/dist/traceability/symbol-extract.d.ts.map +1 -1
  533. package/dist/traceability/symbol-extract.js +1 -1
  534. package/dist/traceability/temp-kb.d.ts +2 -0
  535. package/dist/traceability/temp-kb.d.ts.map +1 -1
  536. package/dist/traceability/temp-kb.js +14 -2
  537. package/dist/types/entities.d.ts +5 -0
  538. package/dist/types/entities.d.ts.map +1 -1
  539. package/dist/utils/branch-resolver.d.ts +25 -10
  540. package/dist/utils/branch-resolver.d.ts.map +1 -1
  541. package/dist/utils/branch-resolver.js +124 -38
  542. package/dist/utils/branch-store-locator.d.ts +23 -0
  543. package/dist/utils/branch-store-locator.d.ts.map +1 -0
  544. package/dist/utils/branch-store-locator.js +90 -0
  545. package/dist/utils/branch-store.d.ts +21 -0
  546. package/dist/utils/branch-store.d.ts.map +1 -0
  547. package/dist/utils/branch-store.js +157 -0
  548. package/dist/utils/config.d.ts +39 -37
  549. package/dist/utils/config.d.ts.map +1 -1
  550. package/dist/utils/config.js +107 -119
  551. package/dist/utils/kb-manifest.d.ts +35 -0
  552. package/dist/utils/kb-manifest.d.ts.map +1 -0
  553. package/dist/utils/kb-manifest.js +154 -0
  554. package/dist/utils/kb-paths.d.ts +54 -0
  555. package/dist/utils/kb-paths.d.ts.map +1 -0
  556. package/dist/utils/kb-paths.js +125 -0
  557. package/dist/utils/manifest-paths.d.ts +4 -4
  558. package/dist/utils/manifest-paths.d.ts.map +1 -1
  559. package/dist/utils/manifest-paths.js +8 -56
  560. package/dist/utils/rule-registry.d.ts +42 -24
  561. package/dist/utils/rule-registry.d.ts.map +1 -1
  562. package/dist/utils/rule-registry.generated.d.ts +97 -0
  563. package/dist/utils/rule-registry.generated.d.ts.map +1 -0
  564. package/dist/utils/rule-registry.generated.js +125 -0
  565. package/dist/utils/rule-registry.js +52 -148
  566. package/dist/utils/schema-version.d.ts +5 -5
  567. package/dist/utils/schema-version.d.ts.map +1 -1
  568. package/dist/utils/schema-version.js +26 -6
  569. package/dist/utils/strict-modeling.d.ts +1 -4
  570. package/dist/utils/strict-modeling.d.ts.map +1 -1
  571. package/dist/utils/strict-modeling.js +8 -9
  572. package/package.json +47 -11
  573. package/schema/config.json +2 -2
  574. package/schema/manifest.json +26 -0
  575. package/src/public/branch-resolver.ts +1 -0
  576. package/src/public/check-types.ts +22 -19
  577. package/src/public/diagnostic-usage.ts +84 -6
  578. package/src/public/distribution-parity.ts +17 -9
  579. package/src/public/ignore-policy.ts +16 -10
  580. package/src/public/impact/coverage-depth-quality.ts +37 -1
  581. package/src/public/impact/diagnostics.ts +2 -1
  582. package/src/public/impact/diff-meaning.ts +11 -4
  583. package/src/public/impact/full-kb-quality.ts +545 -41
  584. package/src/public/impact/manifest.ts +2 -4
  585. package/src/public/operational-artifacts.ts +9 -1
  586. package/src/public/operations/catalog.ts +153 -10
  587. package/src/public/operations/check-executor.ts +98 -15
  588. package/src/public/operations/check-format-shared.ts +6 -0
  589. package/src/public/operations/check-helpers.ts +74 -35
  590. package/src/public/operations/contracts.ts +382 -0
  591. package/src/public/operations/discovery-entities.ts +7 -0
  592. package/src/public/operations/discovery-executors.ts +315 -25
  593. package/src/public/operations/index.ts +9 -4
  594. package/src/public/operations/migration-plan.ts +747 -0
  595. package/src/public/operations/node-ports.ts +87 -13
  596. package/src/public/operations/prolog-json.ts +60 -5
  597. package/src/public/operations/repair-plan.ts +60 -22
  598. package/src/public/operations/result-envelope.ts +141 -0
  599. package/src/public/operations/runtime-types.ts +96 -5
  600. package/src/public/operations/source-relationship-parity.ts +226 -0
  601. package/src/public/operations/specs/{autopilot.ts → bootstrap.ts} +17 -16
  602. package/src/public/operations/specs/check-rules.generated.ts +37 -0
  603. package/src/public/operations/specs/check.ts +14 -22
  604. package/src/public/operations/specs/discovery.ts +57 -3
  605. package/src/public/operations/specs/modeling.ts +3 -3
  606. package/src/public/operations/specs/mutation-schemas.ts +24 -6
  607. package/src/public/operations/specs/mutation.ts +27 -2
  608. package/src/public/operations/specs/planning.ts +241 -0
  609. package/src/public/operations/specs/proof.ts +43 -0
  610. package/src/public/operations/specs/reporting.ts +193 -12
  611. package/src/public/operations/specs/upsert.ts +10 -0
  612. package/src/public/operations/symbol-repair-plan.ts +324 -0
  613. package/src/public/operations/types.ts +62 -1
  614. package/src/public/proof-fingerprint.ts +216 -0
  615. package/src/public/proof-protocol-types.d.ts +96 -0
  616. package/src/public/proof-protocol.ts +589 -0
  617. package/src/public/proof-receipt.ts +499 -0
  618. package/src/public/schemas/entity.ts +27 -6
  619. package/src/public/skills/kibi-bootstrap/SKILL.md +58 -0
  620. package/src/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
  621. package/src/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
  622. package/src/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
  623. package/src/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
  624. package/src/public/skills/kibi-freshness/SKILL.md +39 -9
  625. package/src/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
  626. package/src/public/skills/kibi-freshness/resources/operation-access.md +6 -0
  627. package/src/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
  628. package/src/public/skills/kibi-traceability/SKILL.md +47 -47
  629. package/src/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
  630. package/src/public/skills/kibi-traceability/resources/operation-access.md +5 -0
  631. package/src/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
  632. package/src/public/skills/kibi-traceability/resources/traceability.md +8 -0
  633. package/src/public/skills/kibi-usage/SKILL.md +136 -231
  634. package/src/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
  635. package/src/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
  636. package/src/public/skills/kibi-usage/resources/operation-access.md +36 -38
  637. package/src/public/skills/kibi-usage/resources/proof.md +105 -0
  638. package/src/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
  639. package/src/public/skills/kibi-usage/resources/source-authoring.md +31 -0
  640. package/src/public/skills/kibi-usage/resources/workflows.md +57 -4
  641. package/src/public/symbol-granularity.generated.ts +41 -0
  642. package/src/public/symbol-granularity.ts +35 -59
  643. package/src/public/telemetry-acceptance-types.d.ts +98 -0
  644. package/src/public/telemetry-acceptance.ts +30 -93
  645. package/src/public/telemetry-remediation.ts +1 -1
  646. package/src/schemas/entity.schema.json +1254 -239
  647. package/templates/github/kibi-badge.yml +86 -0
  648. package/templates/github/kibi-report.yml +84 -0
  649. package/dist/operations/autopilot/activation.d.ts +0 -4
  650. package/dist/operations/autopilot/activation.d.ts.map +0 -1
  651. package/dist/operations/autopilot/candidates.d.ts +0 -4
  652. package/dist/operations/autopilot/discovery.d.ts.map +0 -1
  653. package/dist/operations/autopilot/generate.d.ts +0 -8
  654. package/dist/operations/autopilot/generate.d.ts.map +0 -1
  655. package/dist/operations/autopilot/generate.js +0 -112
  656. package/dist/operations/autopilot/guidance.d.ts.map +0 -1
  657. package/dist/operations/autopilot/presentation.d.ts +0 -13
  658. package/dist/operations/autopilot/presentation.d.ts.map +0 -1
  659. package/dist/operations/autopilot/presentation.js +0 -91
  660. package/dist/operations/autopilot/types.d.ts.map +0 -1
  661. package/dist/operations/autopilot/types.js +0 -8
  662. package/dist/public/operations/specs/autopilot.d.ts.map +0 -1
  663. package/dist/public/skills/init-kibi/SKILL.md +0 -62
  664. package/dist/public/verification-receipt.d.ts +0 -75
  665. package/dist/public/verification-receipt.d.ts.map +0 -1
  666. package/dist/public/verification-receipt.js +0 -129
  667. package/src/public/skills/init-kibi/SKILL.md +0 -62
  668. package/src/public/verification-receipt.ts +0 -170
  669. /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts +0 -0
  670. /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.js +0 -0
  671. /package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts +0 -0
  672. /package/dist/operations/{autopilot → bootstrap}/requirement-claims.js +0 -0
@@ -1,33 +1,391 @@
1
- import { parseEntityFromList, parseListOfLists } from "../../prolog/codec.js";
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
3
+ import path from "node:path";
4
+ import { InputError, OperationError } from "../../cli-errors.js";
5
+ import { parseEntityFromList, parseListOfLists, toPrologAtom, } from "../../prolog/codec.js";
6
+ import { listShards, readAllShards, removeRelationshipsFromShards, } from "../../relationships/shards.js";
7
+ import { resolveBranchAttachment } from "../../utils/branch-resolver.js";
2
8
  import { buildEntityDeleteAuditGoal } from "./audit.js";
3
- import { dependentRelationshipsGoal } from "./relationships.js";
9
+ import { RELATIONSHIP_TYPES, dependentRelationshipsGoal, } from "./relationships.js";
4
10
  import { saveAtomicMutation, saveMutation } from "./save.js";
11
+ import { normalizeAuthoredSourcePath, renderMarkdownRelationshipDeletion, renderSourceDeletion, renderYamlRelationshipDeletion, resolveContainedSourcePath, writePendingSourceReceipt, } from "./source-authoring.js";
12
+ import { acquireWorkspaceMutationLock, classifySourceMutationFailure, releaseWorkspaceMutationLock, } from "./workspace-mutation-lock.js";
5
13
  function requireProlog(context) {
6
- if (context.prolog === undefined) {
14
+ if (context.prolog === undefined)
7
15
  throw new Error("Delete operation requires a Prolog runtime");
8
- }
9
16
  return context.prolog;
10
17
  }
18
+ export function assertFilesystemCapableRuntime(fs) {
19
+ if (!fs) {
20
+ throw new Error("Relationship source patch requires a filesystem-capable runtime");
21
+ }
22
+ }
11
23
  async function loadEntity(prolog, id) {
12
24
  const safeId = id.replaceAll("'", "''");
13
25
  const result = await prolog.query(`findall(['${safeId}',Type,Props], kb_entity('${safeId}', Type, Props), Results)`);
14
- if (!result.success) {
26
+ if (!result.success)
15
27
  throw new Error(`Failed to load metadata for entity ${id}: ${result.error ?? "Unknown error"}`);
16
- }
17
28
  const rows = parseListOfLists(result.bindings.Results ?? "[]");
18
- if (rows.length === 0) {
29
+ if (rows.length === 0)
19
30
  throw new Error(`Failed to load metadata for entity ${id}: Entity not found`);
20
- }
21
31
  return { ...parseEntityFromList(rows[0] ?? []), id };
22
32
  }
33
+ function isSelector(value) {
34
+ if (value === null || typeof value !== "object" || Array.isArray(value))
35
+ return false;
36
+ const row = value;
37
+ return ["type", "from", "to"].every((key) => typeof row[key] === "string" && row[key].trim().length > 0);
38
+ }
39
+ function sourceIsAuthored(source) {
40
+ const normalized = source.replaceAll("\\", "/");
41
+ if (/^[A-Za-z][A-Za-z0-9+.-]*:\/\//.test(normalized))
42
+ return false;
43
+ return /\.(?:md|mdx|ya?ml)$/i.test(normalized);
44
+ }
45
+ function fileHash(pathname) {
46
+ if (!existsSync(pathname))
47
+ return null;
48
+ return createHash("sha256").update(readFileSync(pathname)).digest("hex");
49
+ }
50
+ // implements REQ-011
51
+ // covered_by TEST-cli-source-relationship-parity-unit
52
+ async function executeRelationshipDeleteUnlocked(selectors, context, onCommitted = () => undefined) {
53
+ const prolog = requireProlog(context);
54
+ const allowed = new Set(RELATIONSHIP_TYPES);
55
+ const errors = [];
56
+ const errorCodes = [];
57
+ const seenSelectors = new Set();
58
+ const attachment = context.branchAttachment ?? resolveBranchAttachment(context.workspaceRoot);
59
+ if ("error" in attachment)
60
+ throw new Error(attachment.error);
61
+ if (attachment.migrationRequired &&
62
+ (context.branchAttachment !== undefined || context.fs !== undefined)) {
63
+ throw new Error(`Delete blocked: migrate legacy branch storage first with 'kibi branch migrate --from ${attachment.kbBranch} --to ${attachment.gitBranch} --apply'`);
64
+ }
65
+ // Relationship YAML shards are canonical tracked sources. Never patch the
66
+ // hashed compiled branch store here; sync will rebuild derived state.
67
+ const shardRoot = path.join(context.workspaceRoot, ".kb");
68
+ let shardRecords = [];
69
+ try {
70
+ shardRecords = readAllShards(shardRoot);
71
+ }
72
+ catch (error) {
73
+ throw new Error(`Relationship deletion preflight failed while reading legacy shards: ${error instanceof Error ? error.message : String(error)}`);
74
+ }
75
+ const preflight = [];
76
+ const liveByKey = new Map();
77
+ const sourcePatches = new Map();
78
+ for (const selector of selectors) {
79
+ const selectorKey = `${selector.type}\0${selector.from}\0${selector.to}`;
80
+ if (seenSelectors.has(selectorKey)) {
81
+ errors.push(`Duplicate relationship selector: ${selector.type} ${selector.from}->${selector.to}`);
82
+ errorCodes.push({ code: "duplicate_relationship_selector", selector });
83
+ continue;
84
+ }
85
+ seenSelectors.add(selectorKey);
86
+ if (!allowed.has(selector.type)) {
87
+ errors.push(`Unsupported relationship type '${selector.type}'`);
88
+ errorCodes.push({ code: "unsupported_relationship_type", selector });
89
+ continue;
90
+ }
91
+ const matchingShard = shardRecords.filter((record) => record.type === selector.type &&
92
+ record.from === selector.from &&
93
+ record.to === selector.to);
94
+ const liveResult = await prolog.query(`once(kb_relationship(${toPrologAtom(selector.type)}, ${toPrologAtom(selector.from)}, ${toPrologAtom(selector.to)}))`);
95
+ let sourceRemoved = false;
96
+ let authoredSourceKind;
97
+ if (context.fs) {
98
+ // Authored YAML symbol relationships remain authoritative even when the
99
+ // compiled edge or relationship shard is present. Patch the source first
100
+ // so the next sync cannot recreate a relationship the caller deleted.
101
+ // Legacy Markdown declarations are authoritative by the same rule.
102
+ try {
103
+ const entity = await loadEntity(prolog, selector.from);
104
+ const source = typeof entity.source === "string" ? entity.source : "";
105
+ if (sourceIsAuthored(source)) {
106
+ authoredSourceKind = /\.(?:ya?ml)$/i.test(source.replaceAll("\\", "/"))
107
+ ? "YAML"
108
+ : "Markdown";
109
+ const relative = normalizeAuthoredSourcePath(context.workspaceRoot, source);
110
+ const absolute = resolveContainedSourcePath(context.workspaceRoot, relative);
111
+ const isYaml = /\.(?:ya?ml)$/i.test(relative);
112
+ const previous = sourcePatches.get(relative);
113
+ const before = previous?.before ?? (await context.fs.readFile(absolute));
114
+ const current = previous?.after ?? before;
115
+ const rendered = isYaml
116
+ ? renderYamlRelationshipDeletion(relative, current, selector)
117
+ : renderMarkdownRelationshipDeletion(relative, current, selector);
118
+ if (rendered.removed) {
119
+ sourcePatches.set(relative, {
120
+ before,
121
+ after: rendered.body,
122
+ });
123
+ sourceRemoved = true;
124
+ }
125
+ }
126
+ }
127
+ catch (error) {
128
+ if (authoredSourceKind !== undefined) {
129
+ throw new Error(`Authored ${authoredSourceKind} relationship deletion failed for ${selector.from}: ${error instanceof Error ? error.message : String(error)}`);
130
+ }
131
+ // The normal typed preflight below reports a deterministic not-found
132
+ // or inspection error when no authored source can prove the edge.
133
+ }
134
+ }
135
+ // A canonical shard is authoritative even when the compiled store cannot
136
+ // materialize the edge (for example, because one endpoint was deleted or
137
+ // the previous sync reported a dangling relationship). Such a record is
138
+ // still safely removable through the public relationship-delete operation.
139
+ // Only fail preflight when neither the compiled edge nor a canonical shard
140
+ // record can prove that the requested relationship exists.
141
+ if (!liveResult.success &&
142
+ liveResult.error &&
143
+ matchingShard.length === 0 &&
144
+ !sourceRemoved) {
145
+ errors.push(`Failed to inspect ${selector.type} ${selector.from}->${selector.to}: ${liveResult.error ?? "Query failed"}`);
146
+ errorCodes.push({ code: "relationship_preflight_failed", selector });
147
+ continue;
148
+ }
149
+ const liveExists = liveResult.success;
150
+ if (!liveExists && matchingShard.length === 0 && !sourceRemoved) {
151
+ errors.push(`Relationship does not exist: ${selector.type} ${selector.from}->${selector.to}`);
152
+ errorCodes.push({ code: "relationship_not_found", selector });
153
+ continue;
154
+ }
155
+ liveByKey.set(selectorKey, liveExists);
156
+ preflight.push(selector);
157
+ }
158
+ if (errors.length > 0)
159
+ return {
160
+ deleted: 0,
161
+ relationships_deleted: 0,
162
+ skipped: errors.length,
163
+ errors,
164
+ error_codes: errorCodes,
165
+ relationship_results: [],
166
+ };
167
+ // Keep byte-level before-images for rollback. Re-serializing parsed records
168
+ // would silently discard comments, ordering, and CST trivia from unrelated
169
+ // shard records after a later compiled-store failure.
170
+ const originalShardBytes = new Map(listShards(shardRoot).map((shardPath) => [
171
+ shardPath,
172
+ readFileSync(shardPath, "utf8"),
173
+ ]));
174
+ const originalShardHashes = new Map(listShards(shardRoot).map((shardPath) => [shardPath, fileHash(shardPath)]));
175
+ let shardRemovals;
176
+ try {
177
+ shardRemovals = removeRelationshipsFromShards(shardRoot, preflight);
178
+ }
179
+ catch (error) {
180
+ // A shard publication can fail after one of the deterministic renames.
181
+ // Restore every preflight image before surfacing the error so canonical
182
+ // source remains authoritative even when the compiled retract never ran.
183
+ try {
184
+ for (const [shardPath, body] of originalShardBytes) {
185
+ writeFileSync(shardPath, body, "utf8");
186
+ }
187
+ }
188
+ catch (rollbackError) {
189
+ throw new Error(`reconciliation_required: relationship shard preflight failed and rollback failed (${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)})`);
190
+ }
191
+ throw new Error(`Relationship shard update failed before compiled mutation: ${error instanceof Error ? error.message : String(error)}`);
192
+ }
193
+ const writeSourcePatch = async (relative, body) => {
194
+ assertFilesystemCapableRuntime(context.fs);
195
+ const absolute = resolveContainedSourcePath(context.workspaceRoot, relative);
196
+ await context.fs.mkdir(path.dirname(absolute));
197
+ const temporary = `${absolute}.kibi-relationship-${process.pid}-${randomUUID()}`;
198
+ try {
199
+ await context.fs.writeFile(temporary, body);
200
+ if (context.fs.rename)
201
+ await context.fs.rename(temporary, absolute);
202
+ else {
203
+ await context.fs.writeFile(absolute, body);
204
+ await context.fs.unlink?.(temporary).catch(() => undefined);
205
+ }
206
+ }
207
+ catch (error) {
208
+ // A failed rename must not leak the unique temp file into the authored
209
+ // tree; the published target (if any) is untouched at this point.
210
+ await context.fs.unlink?.(temporary).catch(() => undefined);
211
+ throw error;
212
+ }
213
+ };
214
+ try {
215
+ for (const [relative, patch] of sourcePatches) {
216
+ await writeSourcePatch(relative, patch.after);
217
+ }
218
+ }
219
+ catch (error) {
220
+ for (const [relative, patch] of sourcePatches) {
221
+ try {
222
+ await writeSourcePatch(relative, patch.before);
223
+ }
224
+ catch {
225
+ // Preserve the original error; the caller can recover from the
226
+ // hash-bound source state on the next invocation.
227
+ }
228
+ }
229
+ throw new Error(`Relationship source update failed before compiled mutation: ${error instanceof Error ? error.message : String(error)}`);
230
+ }
231
+ let retracted = 0;
232
+ try {
233
+ for (const selector of preflight) {
234
+ const selectorKey = `${selector.type}\0${selector.from}\0${selector.to}`;
235
+ if (liveByKey.get(selectorKey) !== true)
236
+ continue;
237
+ const result = await prolog.query(`kb_retract_relationship(${toPrologAtom(selector.type)}, ${toPrologAtom(selector.from)}, ${toPrologAtom(selector.to)})`);
238
+ if (!result.success)
239
+ throw new Error(result.error ?? "Query failed");
240
+ retracted += 1;
241
+ }
242
+ if (retracted > 0)
243
+ await saveMutation(prolog, "delete");
244
+ // The compiled mutation is now authoritative. Receipt publication below
245
+ // must not make the enclosing operation look retryable.
246
+ onCommitted();
247
+ }
248
+ catch (error) {
249
+ const paths = [
250
+ ...new Set(shardRemovals.flatMap((item) => item.shardPaths)),
251
+ ];
252
+ try {
253
+ for (const [shardPath, body] of originalShardBytes)
254
+ writeFileSync(shardPath, body, "utf8");
255
+ for (const [relative, patch] of sourcePatches) {
256
+ await writeSourcePatch(relative, patch.before);
257
+ }
258
+ }
259
+ catch (rollbackError) {
260
+ throw new Error(`reconciliation_required: compiled relationship retraction failed and shard rollback failed (${paths.join(", ")}): ${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)}`);
261
+ }
262
+ throw new Error(`Relationship retraction failed; canonical relationship shards were restored (${paths.join(", ")}): ${error instanceof Error ? error.message : String(error)}`);
263
+ }
264
+ const sourceWrites = Array.from(new Set(shardRemovals.flatMap((item) => item.shardPaths))).flatMap((shardPath) => {
265
+ const before = originalShardHashes.get(shardPath) ?? null;
266
+ const after = fileHash(shardPath);
267
+ if (before === after)
268
+ return [];
269
+ const relative = path
270
+ .relative(context.workspaceRoot, shardPath)
271
+ .replaceAll("\\", "/");
272
+ if (after !== null) {
273
+ writePendingSourceReceipt(context.workspaceRoot, relative, after);
274
+ }
275
+ return [
276
+ {
277
+ path: relative,
278
+ mode: "write",
279
+ beforeHash: before,
280
+ afterHash: after,
281
+ created: false,
282
+ },
283
+ ];
284
+ });
285
+ sourceWrites.push(...Array.from(sourcePatches, ([relative, patch]) => {
286
+ const beforeHash = createHash("sha256")
287
+ .update(patch.before)
288
+ .digest("hex");
289
+ const afterHash = createHash("sha256").update(patch.after).digest("hex");
290
+ writePendingSourceReceipt(context.workspaceRoot, relative, afterHash);
291
+ return {
292
+ path: relative,
293
+ mode: "write",
294
+ beforeHash,
295
+ afterHash,
296
+ created: false,
297
+ };
298
+ }));
299
+ return {
300
+ deleted: 0,
301
+ relationships_deleted: retracted,
302
+ skipped: 0,
303
+ errors: [],
304
+ error_codes: [],
305
+ relationship_results: preflight.map((selector, index) => ({
306
+ ...selector,
307
+ deleted: true,
308
+ shard_records_removed: shardRemovals[index]?.removed ?? false,
309
+ compiled_edge_retracted: liveByKey.get(`${selector.type}\0${selector.from}\0${selector.to}`) ===
310
+ true,
311
+ })),
312
+ sync_required: shardRemovals.some((item) => item.removed) || sourcePatches.size > 0,
313
+ ...(sourceWrites.length > 0 ? { sourceWrites } : {}),
314
+ };
315
+ }
316
+ export async function executeRelationshipDelete(selectors, context, onCommitted = () => undefined) {
317
+ if (!context.fs || context.sourceMutationLockHeld === true)
318
+ return executeRelationshipDeleteUnlocked(selectors, context, onCommitted);
319
+ const lock = await acquireWorkspaceMutationLock(context.workspaceRoot);
320
+ let operationFailure;
321
+ let committed = false;
322
+ try {
323
+ const result = await executeRelationshipDeleteUnlocked(selectors, context, () => {
324
+ committed = true;
325
+ onCommitted();
326
+ });
327
+ committed = true;
328
+ return result;
329
+ }
330
+ catch (error) {
331
+ const failure = classifySourceMutationFailure("Relationship delete", error, committed);
332
+ operationFailure = { error: failure };
333
+ throw failure;
334
+ }
335
+ finally {
336
+ releaseWorkspaceMutationLock(lock, operationFailure, committed);
337
+ }
338
+ }
23
339
  export async function executeDelete(input, context) {
340
+ const branchAttachment = context.branchAttachment ?? resolveBranchAttachment(context.workspaceRoot);
341
+ if ("error" in branchAttachment) {
342
+ throw new Error(`Unable to resolve KB branch: ${branchAttachment.error}`);
343
+ }
344
+ if (branchAttachment.migrationRequired &&
345
+ (context.branchAttachment !== undefined || context.fs !== undefined)) {
346
+ throw new Error(`Delete blocked: KB is attached through legacy branch storage (${branchAttachment.gitBranch} -> ${branchAttachment.kbBranch}). Run 'kibi branch migrate --from ${branchAttachment.kbBranch} --to ${branchAttachment.gitBranch} --apply' first.`);
347
+ }
24
348
  const prolog = requireProlog(context);
25
- if (input.ids.length === 0)
26
- throw new Error("At least one ID required for delete");
349
+ let sourceMutationLock;
350
+ let committed = false;
351
+ let operationFailure;
27
352
  try {
353
+ if (context.fs && context.sourceMutationLockHeld !== true) {
354
+ sourceMutationLock = await acquireWorkspaceMutationLock(context.workspaceRoot);
355
+ }
356
+ const ids = input.ids ?? [];
357
+ const relationships = input.relationships ?? [];
358
+ if ((ids.length === 0) === (relationships.length === 0))
359
+ throw new Error("Delete requires exactly one non-empty input: ids or relationships");
360
+ if (relationships.length > 0) {
361
+ if (relationships.some((value) => !isSelector(value)))
362
+ throw new Error("Each relationship selector requires non-empty type, from, and to strings");
363
+ const payload = await executeRelationshipDelete(relationships, { ...context, sourceMutationLockHeld: true }, () => {
364
+ committed = true;
365
+ });
366
+ return {
367
+ content: [
368
+ {
369
+ type: "text",
370
+ text: `Deleted ${payload.relationships_deleted ?? 0} relationships. Skipped ${payload.skipped}.${payload.sync_required ? " Run kibi sync to reconcile the relationship shard." : ""}`,
371
+ },
372
+ ],
373
+ structuredContent: payload,
374
+ };
375
+ }
28
376
  const errors = [];
29
377
  const goals = [];
30
- for (const id of input.ids) {
378
+ const authoredIds = [];
379
+ const authoredRequirementIds = [];
380
+ const sourceHashes = {};
381
+ // Keep the original body for rollback, while applying each deletion to the
382
+ // body produced by the previous deletion. A deletion plan must contain one
383
+ // hash-bound write per authored path; otherwise apply-plan's last write can
384
+ // resurrect an earlier record when multiple IDs share one manifest.
385
+ const sourceBodies = new Map();
386
+ const evolvingSourceBodies = new Map();
387
+ const sourcePlansByPath = new Map();
388
+ for (const id of ids) {
31
389
  const safeId = id.replaceAll("'", "''");
32
390
  const exists = await prolog.query(`once(kb_entity('${safeId}', _, _))`);
33
391
  if (!exists.success) {
@@ -43,13 +401,102 @@ export async function executeDelete(input, context) {
43
401
  errors.push(`Cannot delete entity ${id}: has dependents (other entities reference it)`);
44
402
  continue;
45
403
  }
46
- goals.push(buildEntityDeleteAuditGoal(await loadEntity(prolog, id)));
404
+ const entity = await loadEntity(prolog, id);
405
+ const source = typeof entity.source === "string" ? entity.source : "";
406
+ if (sourceIsAuthored(source)) {
407
+ authoredIds.push(id);
408
+ if (entity.type === "req")
409
+ authoredRequirementIds.push(id);
410
+ if (context.fs) {
411
+ const relativeSource = normalizeAuthoredSourcePath(context.workspaceRoot, source);
412
+ const sourcePath = path.join(context.workspaceRoot, relativeSource);
413
+ try {
414
+ const original = sourceBodies.get(relativeSource) ??
415
+ (await context.fs.readFile(sourcePath));
416
+ if (!sourceBodies.has(relativeSource)) {
417
+ sourceBodies.set(relativeSource, original);
418
+ }
419
+ const contents = evolvingSourceBodies.has(relativeSource)
420
+ ? evolvingSourceBodies.get(relativeSource)
421
+ : original;
422
+ if (contents === undefined) {
423
+ throw new Error(`Authored document ${relativeSource} no longer contains ${id}`);
424
+ }
425
+ const deletion = renderSourceDeletion(relativeSource, id, String(entity.type), contents);
426
+ evolvingSourceBodies.set(relativeSource, deletion.mode === "write" ? deletion.body : undefined);
427
+ const beforeHash = createHash("sha256")
428
+ .update(original)
429
+ .digest("hex");
430
+ const afterHash = deletion.body === undefined
431
+ ? null
432
+ : createHash("sha256").update(deletion.body).digest("hex");
433
+ sourceHashes[relativeSource] = beforeHash;
434
+ sourcePlansByPath.set(relativeSource, {
435
+ path: relativeSource,
436
+ mode: deletion.mode,
437
+ beforeHash,
438
+ afterHash,
439
+ ...(deletion.body === undefined ? {} : { body: deletion.body }),
440
+ });
441
+ }
442
+ catch {
443
+ sourceHashes[relativeSource] = null;
444
+ }
445
+ }
446
+ }
447
+ goals.push(buildEntityDeleteAuditGoal(entity));
47
448
  }
48
- if (goals.length > 0)
49
- await saveAtomicMutation(prolog, goals, "delete");
50
- else
51
- await saveMutation(prolog, "delete");
52
- const payload = { deleted: goals.length, skipped: errors.length, errors };
449
+ if (authoredIds.length > 0 && context.sourcePlanApplication !== true) {
450
+ const supersessionRequired = authoredRequirementIds.length > 0;
451
+ const sourcePlans = [...sourcePlansByPath.values()];
452
+ const planBody = {
453
+ version: "kibi.entity-deletion-plan.v1",
454
+ entityIds: authoredIds,
455
+ sourceHashes,
456
+ sourceWrites: sourcePlans,
457
+ supersessionRequired,
458
+ };
459
+ const planHash = createHash("sha256")
460
+ .update(JSON.stringify(planBody))
461
+ .digest("hex");
462
+ const payload = {
463
+ deleted: 0,
464
+ skipped: authoredIds.length,
465
+ errors: [
466
+ supersessionRequired
467
+ ? "Authored requirements require an explicit supersession plan; no direct delete is performed."
468
+ : "Authored entity deletion returns a hash-bound plan for kb_apply_plan.",
469
+ ],
470
+ deletionPlan: { ...planBody, planHash },
471
+ };
472
+ return {
473
+ content: [
474
+ {
475
+ type: "text",
476
+ text: `Deletion plan ${planHash.slice(0, 12)} must be applied through kb_apply_plan.`,
477
+ },
478
+ ],
479
+ structuredContent: payload,
480
+ };
481
+ }
482
+ try {
483
+ if (goals.length > 0)
484
+ await saveAtomicMutation(prolog, goals, "delete");
485
+ else
486
+ await saveMutation(prolog, "delete");
487
+ committed = true;
488
+ }
489
+ catch (error) {
490
+ for (const [source, body] of sourceBodies) {
491
+ await context.fs?.writeFile(resolveContainedSourcePath(context.workspaceRoot, source), body);
492
+ }
493
+ throw error;
494
+ }
495
+ const payload = {
496
+ deleted: goals.length,
497
+ skipped: errors.length,
498
+ errors,
499
+ };
53
500
  return {
54
501
  content: [
55
502
  {
@@ -61,7 +508,24 @@ export async function executeDelete(input, context) {
61
508
  };
62
509
  }
63
510
  catch (error) {
64
- const message = error instanceof Error ? error.message : String(error);
65
- throw new Error(`Delete execution failed: ${message}`);
511
+ // Typed operation errors keep their code and retryability. After the
512
+ // commit milestone, a generic failure is already a committed mutation:
513
+ // wrap it as non-retryable immediately instead of only when lock release
514
+ // also fails.
515
+ if (error instanceof OperationError || error instanceof InputError) {
516
+ operationFailure = { error };
517
+ throw error;
518
+ }
519
+ if (committed) {
520
+ const failure = classifySourceMutationFailure("Delete", error, true);
521
+ operationFailure = { error: failure };
522
+ throw failure;
523
+ }
524
+ const failure = new Error(`Delete execution failed: ${error instanceof Error ? error.message : String(error)}`);
525
+ operationFailure = { error: failure };
526
+ throw failure;
527
+ }
528
+ finally {
529
+ releaseWorkspaceMutationLock(sourceMutationLock, operationFailure, committed);
66
530
  }
67
531
  }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Convert a query-shaped entity back into writable properties.
3
+ *
4
+ * Discovery queries project relationship predicates alongside entity
5
+ * properties for convenience. Feeding that projection back to an upsert would
6
+ * accidentally treat those predicates as authored properties and can create
7
+ * duplicate or stale edges. Keep this helper shared by every query-to-write
8
+ * path so relationship history remains owned by the relationship input lane.
9
+ */
10
+ export declare function projectEntityProperties(entity: Readonly<Record<string, unknown>>): Record<string, unknown>;
11
+ //# sourceMappingURL=entity-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-projection.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/entity-projection.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACxC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB"}
@@ -0,0 +1,14 @@
1
+ import { RELATIONSHIP_TYPES } from "./relationships.js";
2
+ /**
3
+ * Convert a query-shaped entity back into writable properties.
4
+ *
5
+ * Discovery queries project relationship predicates alongside entity
6
+ * properties for convenience. Feeding that projection back to an upsert would
7
+ * accidentally treat those predicates as authored properties and can create
8
+ * duplicate or stale edges. Keep this helper shared by every query-to-write
9
+ * path so relationship history remains owned by the relationship input lane.
10
+ */
11
+ export function projectEntityProperties(entity) {
12
+ const relationshipKeys = new Set(RELATIONSHIP_TYPES);
13
+ return Object.fromEntries(Object.entries(entity).filter(([key]) => key !== "id" && key !== "type" && !relationshipKeys.has(key)));
14
+ }
@@ -1,5 +1,8 @@
1
1
  import type { PrologPort } from "../../public/operations/runtime-types.js";
2
2
  import type { RelationshipInput } from "./types.js";
3
+ export declare const RELATIONSHIP_TYPES: readonly ["depends_on", "specified_by", "verified_by", "validates", "implements", "covered_by", "executable_for", "constrained_by", "constrains", "requires_property", "requires_predicate", "requires_rule", "guards", "publishes", "consumes", "supersedes", "relates_to"];
4
+ export type RelationshipType = (typeof RELATIONSHIP_TYPES)[number];
5
+ export declare function wrongKindRelationshipError(type: string, target: string, wrongKind: string): Error;
3
6
  export declare function dependentRelationshipsGoal(entityId: string): string;
4
7
  type RelationshipTuple = {
5
8
  readonly relType: string;
@@ -9,6 +12,14 @@ type RelationshipTuple = {
9
12
  export declare function formatInvalidRelationshipTuple(tuple: RelationshipTuple): string;
10
13
  export declare function formatInvalidRelationshipError(raw: string): string | null;
11
14
  export declare function validateRelationshipSources(entityId: string, relationships: readonly RelationshipInput[]): void;
15
+ type SupersedesHistory = "valid" | "reversed" | "unknown";
16
+ type SupersedesHistoryDeps = Readonly<{
17
+ firstAdditionCommit: (workspaceRoot: string, source: string) => string | null;
18
+ isAncestor: (workspaceRoot: string, ancestor: string, descendant: string) => boolean | null;
19
+ }>;
20
+ export declare function firstGitAdditionCommit(workspaceRoot: string, source: string): string | null;
21
+ export declare function classifySupersedesHistory(workspaceRoot: string, sourceCommit: string | null, targetCommit: string | null, deps?: Pick<SupersedesHistoryDeps, "isAncestor">): SupersedesHistory;
22
+ export declare function validateSupersedesSourceHistory(prolog: PrologPort, entity: Readonly<Record<string, unknown>>, relationships: readonly RelationshipInput[], workspaceRoot: string, deps?: SupersedesHistoryDeps): Promise<void>;
12
23
  export declare function formatRelationshipSourceMismatch(entityId: string, relationship: RelationshipInput): string;
13
24
  export declare function validateLiveRelationshipTargets(prolog: PrologPort, entity: Readonly<Record<string, unknown>>, relationships: readonly RelationshipInput[]): Promise<void>;
14
25
  export declare function validateStrictLanePairing(prolog: PrologPort, relationships: readonly RelationshipInput[]): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/relationships.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAsBpD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAgCF,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,iBAAiB,GACvB,MAAM,CAER;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAczE;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,SAAS,iBAAiB,EAAE,GAC1C,IAAI,CAMN;AAED,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,iBAAiB,GAC9B,MAAM,CAIR;AAuBD,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,aAAa,EAAE,SAAS,iBAAiB,EAAE,GAC1C,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,SAAS,iBAAiB,EAAE,GAC1C,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAevC"}
1
+ {"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/relationships.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,eAAO,MAAM,kBAAkB,8QAkBrB,CAAC;AACX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,KAAK,CAKP;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAgCF,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,iBAAiB,GACvB,MAAM,CAER;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAczE;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,SAAS,iBAAiB,EAAE,GAC1C,IAAI,CAMN;AAED,KAAK,iBAAiB,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1D,KAAK,qBAAqB,GAAG,QAAQ,CAAC;IACpC,mBAAmB,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC9E,UAAU,EAAE,CACV,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,KACf,OAAO,GAAG,IAAI,CAAC;CACrB,CAAC,CAAC;AAMH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAef;AAsBD,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,IAAI,GAAE,IAAI,CACR,qBAAqB,EACrB,YAAY,CACqB,GAClC,iBAAiB,CAenB;AAGD,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,aAAa,EAAE,SAAS,iBAAiB,EAAE,EAC3C,aAAa,EAAE,MAAM,EACrB,IAAI,GAAE,qBAAuD,GAC5D,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,iBAAiB,GAC9B,MAAM,CAIR;AAuBD,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,aAAa,EAAE,SAAS,iBAAiB,EAAE,GAC1C,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,SAAS,iBAAiB,EAAE,GAC1C,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAevC"}