kibi-cli 1.0.1 → 2.1.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 (548) 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.js +3 -3
  8. package/dist/cli-operation-metadata.d.ts +4 -3
  9. package/dist/cli-operation-metadata.d.ts.map +1 -1
  10. package/dist/cli-operation-metadata.js +7 -5
  11. package/dist/cli-protocol.js +1 -1
  12. package/dist/cli-register-maintenance.d.ts.map +1 -1
  13. package/dist/cli-register-maintenance.js +7 -0
  14. package/dist/cli-register-proof.d.ts +3 -0
  15. package/dist/cli-register-proof.d.ts.map +1 -0
  16. package/dist/cli-register-proof.js +127 -0
  17. package/dist/cli-register-reporting.d.ts.map +1 -1
  18. package/dist/cli-register-reporting.js +7 -0
  19. package/dist/cli.d.ts +4 -0
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +19 -10
  22. package/dist/commands/branch.d.ts +1 -0
  23. package/dist/commands/branch.d.ts.map +1 -1
  24. package/dist/commands/branch.js +8 -4
  25. package/dist/commands/check-generated.d.ts +7 -0
  26. package/dist/commands/check-generated.d.ts.map +1 -0
  27. package/dist/commands/check-generated.js +192 -0
  28. package/dist/commands/check.d.ts +14 -0
  29. package/dist/commands/check.d.ts.map +1 -1
  30. package/dist/commands/check.js +193 -46
  31. package/dist/commands/coverage.d.ts +1 -0
  32. package/dist/commands/coverage.d.ts.map +1 -1
  33. package/dist/commands/coverage.js +6 -0
  34. package/dist/commands/doctor.d.ts +22 -0
  35. package/dist/commands/doctor.d.ts.map +1 -1
  36. package/dist/commands/doctor.js +170 -23
  37. package/dist/commands/engine.d.ts +12 -0
  38. package/dist/commands/engine.d.ts.map +1 -1
  39. package/dist/commands/engine.js +42 -0
  40. package/dist/commands/github-init.d.ts +1 -0
  41. package/dist/commands/github-init.d.ts.map +1 -1
  42. package/dist/commands/github-init.js +9 -5
  43. package/dist/commands/init-helpers.d.ts.map +1 -1
  44. package/dist/commands/init-helpers.js +49 -10
  45. package/dist/commands/migrate.d.ts +4 -0
  46. package/dist/commands/migrate.d.ts.map +1 -1
  47. package/dist/commands/migrate.js +7 -7
  48. package/dist/commands/proof-explain.d.ts +10 -0
  49. package/dist/commands/proof-explain.d.ts.map +1 -0
  50. package/dist/commands/proof-explain.js +45 -0
  51. package/dist/commands/proof-impact.d.ts +7 -0
  52. package/dist/commands/proof-impact.d.ts.map +1 -0
  53. package/dist/commands/proof-impact.js +39 -0
  54. package/dist/commands/proof-migrate-legacy.d.ts +7 -0
  55. package/dist/commands/proof-migrate-legacy.d.ts.map +1 -0
  56. package/dist/commands/proof-migrate-legacy.js +45 -0
  57. package/dist/commands/proof-prune.d.ts +8 -0
  58. package/dist/commands/proof-prune.d.ts.map +1 -0
  59. package/dist/commands/proof-prune.js +53 -0
  60. package/dist/commands/prove.d.ts +37 -0
  61. package/dist/commands/prove.d.ts.map +1 -0
  62. package/dist/commands/prove.js +470 -0
  63. package/dist/commands/report.d.ts.map +1 -1
  64. package/dist/commands/report.js +18 -3
  65. package/dist/commands/sync/discovery.d.ts +3 -0
  66. package/dist/commands/sync/discovery.d.ts.map +1 -1
  67. package/dist/commands/sync/discovery.js +36 -28
  68. package/dist/commands/sync/manifest.d.ts +2 -1
  69. package/dist/commands/sync/manifest.d.ts.map +1 -1
  70. package/dist/commands/sync/manifest.js +55 -21
  71. package/dist/commands/sync/persistence.d.ts +4 -1
  72. package/dist/commands/sync/persistence.d.ts.map +1 -1
  73. package/dist/commands/sync/persistence.js +31 -14
  74. package/dist/commands/sync/staging.d.ts +1 -0
  75. package/dist/commands/sync/staging.d.ts.map +1 -1
  76. package/dist/commands/sync/staging.js +5 -2
  77. package/dist/commands/sync/untracked-targets.d.ts +24 -0
  78. package/dist/commands/sync/untracked-targets.d.ts.map +1 -0
  79. package/dist/commands/sync/untracked-targets.js +108 -0
  80. package/dist/commands/sync.d.ts +11 -1
  81. package/dist/commands/sync.d.ts.map +1 -1
  82. package/dist/commands/sync.js +74 -30
  83. package/dist/engine-daemon.d.ts +3 -1
  84. package/dist/engine-daemon.d.ts.map +1 -1
  85. package/dist/engine-daemon.js +49 -20
  86. package/dist/engine.d.ts +17 -77
  87. package/dist/engine.d.ts.map +1 -1
  88. package/dist/engine.js +331 -91
  89. package/dist/env/bootstrap.d.ts +84 -0
  90. package/dist/env/bootstrap.d.ts.map +1 -0
  91. package/dist/env/bootstrap.js +310 -0
  92. package/dist/extractors/manifest.d.ts +5 -0
  93. package/dist/extractors/manifest.d.ts.map +1 -1
  94. package/dist/extractors/manifest.js +46 -1
  95. package/dist/extractors/markdown.d.ts +7 -3
  96. package/dist/extractors/markdown.d.ts.map +1 -1
  97. package/dist/extractors/markdown.js +60 -24
  98. package/dist/extractors/playwright-cases.js +1 -1
  99. package/dist/extractors/relationships.d.ts +6 -0
  100. package/dist/extractors/relationships.d.ts.map +1 -1
  101. package/dist/extractors/relationships.js +1 -1
  102. package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
  103. package/dist/extractors/symbols-coordinator.d.ts +8 -0
  104. package/dist/extractors/symbols-coordinator.d.ts.map +1 -1
  105. package/dist/extractors/symbols-coordinator.js +40 -0
  106. package/dist/extractors/symbols-ts.d.ts +9 -19
  107. package/dist/extractors/symbols-ts.d.ts.map +1 -1
  108. package/dist/extractors/symbols-ts.js +34 -429
  109. package/dist/intent-search.d.ts +1 -0
  110. package/dist/intent-search.d.ts.map +1 -1
  111. package/dist/intent-search.js +11 -8
  112. package/dist/logic/ir.d.ts +1 -0
  113. package/dist/logic/ir.d.ts.map +1 -1
  114. package/dist/logic/ir.js +1 -1
  115. package/dist/operations/bootstrap/activation.d.ts +2 -1
  116. package/dist/operations/bootstrap/activation.d.ts.map +1 -1
  117. package/dist/operations/bootstrap/activation.js +11 -3
  118. package/dist/operations/bootstrap/generate.d.ts +2 -1
  119. package/dist/operations/bootstrap/generate.d.ts.map +1 -1
  120. package/dist/operations/bootstrap/generate.js +6 -3
  121. package/dist/operations/bootstrap/guidance.d.ts +1 -0
  122. package/dist/operations/bootstrap/guidance.d.ts.map +1 -1
  123. package/dist/operations/bootstrap/guidance.js +1 -1
  124. package/dist/operations/modeling/model-requirement.d.ts +5 -0
  125. package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
  126. package/dist/operations/modeling/model-requirement.js +57 -46
  127. package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -1
  128. package/dist/operations/modeling/predicate-applicability.js +103 -4
  129. package/dist/operations/modeling/predicate-catalog-2.d.ts.map +1 -1
  130. package/dist/operations/modeling/predicate-catalog-2.js +18 -2
  131. package/dist/operations/modeling/predicate-catalog-3.d.ts.map +1 -1
  132. package/dist/operations/modeling/predicate-catalog-3.js +17 -1
  133. package/dist/operations/modeling/predicate-catalog-5.d.ts +10 -0
  134. package/dist/operations/modeling/predicate-catalog-5.d.ts.map +1 -0
  135. package/dist/operations/modeling/predicate-catalog-5.js +291 -0
  136. package/dist/operations/modeling/predicate-catalog.d.ts.map +1 -1
  137. package/dist/operations/modeling/predicate-catalog.js +4 -0
  138. package/dist/operations/modeling/predicate-loader.d.ts +1 -0
  139. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
  140. package/dist/operations/modeling/predicate-loader.js +4 -3
  141. package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
  142. package/dist/operations/modeling/predicate-ranker.js +4 -1
  143. package/dist/operations/modeling/predicate-types.d.ts +1 -1
  144. package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
  145. package/dist/operations/modeling/predicate-usage-hints-4.d.ts +3 -0
  146. package/dist/operations/modeling/predicate-usage-hints-4.d.ts.map +1 -0
  147. package/dist/operations/modeling/predicate-usage-hints-4.js +84 -0
  148. package/dist/operations/modeling/suggest-predicates.d.ts +4 -2
  149. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
  150. package/dist/operations/modeling/suggest-predicates.js +82 -22
  151. package/dist/operations/mutation/contradictions.d.ts +2 -1
  152. package/dist/operations/mutation/contradictions.d.ts.map +1 -1
  153. package/dist/operations/mutation/contradictions.js +26 -5
  154. package/dist/operations/mutation/delete.d.ts +3 -0
  155. package/dist/operations/mutation/delete.d.ts.map +1 -1
  156. package/dist/operations/mutation/delete.js +100 -32
  157. package/dist/operations/mutation/relationships.d.ts +1 -0
  158. package/dist/operations/mutation/relationships.d.ts.map +1 -1
  159. package/dist/operations/mutation/relationships.js +6 -4
  160. package/dist/operations/mutation/saga.d.ts +51 -0
  161. package/dist/operations/mutation/saga.d.ts.map +1 -0
  162. package/dist/operations/mutation/saga.js +67 -0
  163. package/dist/operations/mutation/serialization.d.ts.map +1 -1
  164. package/dist/operations/mutation/serialization.js +3 -2
  165. package/dist/operations/mutation/source-authoring.d.ts +5 -1
  166. package/dist/operations/mutation/source-authoring.d.ts.map +1 -1
  167. package/dist/operations/mutation/source-authoring.js +79 -46
  168. package/dist/operations/mutation/strict-fact.d.ts +1 -0
  169. package/dist/operations/mutation/strict-fact.d.ts.map +1 -1
  170. package/dist/operations/mutation/strict-fact.js +8 -5
  171. package/dist/operations/mutation/symbol-compiler-lock.d.ts +5 -2
  172. package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -1
  173. package/dist/operations/mutation/symbol-compiler-lock.js +65 -2
  174. package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
  175. package/dist/operations/mutation/symbol-granularity.js +11 -89
  176. package/dist/operations/mutation/symbol-refresh.d.ts +1 -0
  177. package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
  178. package/dist/operations/mutation/symbol-refresh.js +10 -8
  179. package/dist/operations/mutation/upsert.d.ts +18 -2
  180. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  181. package/dist/operations/mutation/upsert.js +86 -54
  182. package/dist/operations/mutation/validate-upsert.js +2 -2
  183. package/dist/operations/mutation/validation.d.ts.map +1 -1
  184. package/dist/operations/mutation/validation.js +46 -4
  185. package/dist/operations/mutation/warnings.d.ts +1 -0
  186. package/dist/operations/mutation/warnings.d.ts.map +1 -1
  187. package/dist/operations/mutation/warnings.js +7 -5
  188. package/dist/operations/mutation/workspace-mutation-lock.d.ts +60 -0
  189. package/dist/operations/mutation/workspace-mutation-lock.d.ts.map +1 -0
  190. package/dist/operations/mutation/workspace-mutation-lock.js +362 -0
  191. package/dist/operations/planning/apply-plan.d.ts +8 -106
  192. package/dist/operations/planning/apply-plan.d.ts.map +1 -1
  193. package/dist/operations/planning/apply-plan.js +113 -36
  194. package/dist/operations/planning/compile-intent.d.ts +51 -0
  195. package/dist/operations/planning/compile-intent.d.ts.map +1 -1
  196. package/dist/operations/planning/compile-intent.js +133 -17
  197. package/dist/operations/proof/baseline-diff.d.ts +41 -0
  198. package/dist/operations/proof/baseline-diff.d.ts.map +1 -0
  199. package/dist/operations/proof/baseline-diff.js +153 -0
  200. package/dist/operations/proof/explain.d.ts +75 -0
  201. package/dist/operations/proof/explain.d.ts.map +1 -0
  202. package/dist/operations/proof/explain.js +294 -0
  203. package/dist/operations/proof/impact.d.ts +45 -0
  204. package/dist/operations/proof/impact.d.ts.map +1 -0
  205. package/dist/operations/proof/impact.js +118 -0
  206. package/dist/operations/proof/ingest-proof.d.ts +34 -0
  207. package/dist/operations/proof/ingest-proof.d.ts.map +1 -0
  208. package/dist/operations/proof/ingest-proof.js +348 -0
  209. package/dist/operations/proof/migrate-legacy-receipts.d.ts +30 -0
  210. package/dist/operations/proof/migrate-legacy-receipts.d.ts.map +1 -0
  211. package/dist/operations/proof/migrate-legacy-receipts.js +92 -0
  212. package/dist/operations/proof/prune-receipts.d.ts +35 -0
  213. package/dist/operations/proof/prune-receipts.d.ts.map +1 -0
  214. package/dist/operations/proof/prune-receipts.js +91 -0
  215. package/dist/operations/proof/receipt-document.d.ts +29 -0
  216. package/dist/operations/proof/receipt-document.d.ts.map +1 -0
  217. package/dist/operations/proof/receipt-document.js +117 -0
  218. package/dist/operations/semantic-advisor/analysis-receipt.d.ts.map +1 -1
  219. package/dist/operations/semantic-advisor/analysis-receipt.js +3 -9
  220. package/dist/operations/semantic-advisor/analyze-prose.d.ts +1 -0
  221. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  222. package/dist/operations/semantic-advisor/analyze-prose.js +64 -93
  223. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
  224. package/dist/operations/semantic-advisor/clauses.js +20 -7
  225. package/dist/operations/semantic-advisor/plugin-orchestration.d.ts +63 -0
  226. package/dist/operations/semantic-advisor/plugin-orchestration.d.ts.map +1 -0
  227. package/dist/operations/semantic-advisor/plugin-orchestration.js +489 -0
  228. package/dist/operations/semantic-advisor/predicate-rules-core.d.ts +15 -2
  229. package/dist/operations/semantic-advisor/predicate-rules-core.d.ts.map +1 -1
  230. package/dist/operations/semantic-advisor/predicate-rules-core.js +7 -140
  231. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts +11 -12
  232. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts.map +1 -1
  233. package/dist/operations/semantic-advisor/predicate-rules-launcher.js +6 -94
  234. package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts +16 -0
  235. package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts.map +1 -1
  236. package/dist/operations/semantic-advisor/predicate-rules-policy.js +7 -150
  237. package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts +9 -0
  238. package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts.map +1 -1
  239. package/dist/operations/semantic-advisor/predicate-rules-product-tail.js +7 -102
  240. package/dist/operations/semantic-advisor/predicate-rules-product.d.ts +13 -0
  241. package/dist/operations/semantic-advisor/predicate-rules-product.d.ts.map +1 -1
  242. package/dist/operations/semantic-advisor/predicate-rules-product.js +7 -133
  243. package/dist/operations/semantic-advisor/strict-count-rules.d.ts +2 -0
  244. package/dist/operations/semantic-advisor/strict-count-rules.d.ts.map +1 -1
  245. package/dist/operations/semantic-advisor/strict-count-rules.js +40 -25
  246. package/dist/operations/semantic-advisor/types.d.ts +1 -0
  247. package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
  248. package/dist/plugins/compose-ontology-packs.d.ts +51 -0
  249. package/dist/plugins/compose-ontology-packs.d.ts.map +1 -0
  250. package/dist/plugins/compose-ontology-packs.js +257 -0
  251. package/dist/plugins/compose-semantic-classifier.d.ts +42 -0
  252. package/dist/plugins/compose-semantic-classifier.d.ts.map +1 -0
  253. package/dist/plugins/compose-semantic-classifier.js +211 -0
  254. package/dist/plugins/external-allowlist.d.ts +10 -0
  255. package/dist/plugins/external-allowlist.d.ts.map +1 -0
  256. package/dist/plugins/external-allowlist.js +16 -0
  257. package/dist/plugins/index.d.ts +9 -0
  258. package/dist/plugins/index.d.ts.map +1 -0
  259. package/dist/plugins/index.js +33 -0
  260. package/dist/plugins/load-plugin.d.ts +19 -0
  261. package/dist/plugins/load-plugin.d.ts.map +1 -0
  262. package/dist/plugins/load-plugin.js +59 -0
  263. package/dist/plugins/project-config.d.ts +28 -0
  264. package/dist/plugins/project-config.d.ts.map +1 -0
  265. package/dist/plugins/project-config.js +90 -0
  266. package/dist/plugins/registry.d.ts +93 -0
  267. package/dist/plugins/registry.d.ts.map +1 -0
  268. package/dist/plugins/registry.js +338 -0
  269. package/dist/plugins/resolve-package.d.ts +47 -0
  270. package/dist/plugins/resolve-package.d.ts.map +1 -0
  271. package/dist/plugins/resolve-package.js +262 -0
  272. package/dist/plugins/source-analysis-service.d.ts +44 -0
  273. package/dist/plugins/source-analysis-service.d.ts.map +1 -0
  274. package/dist/plugins/source-analysis-service.js +232 -0
  275. package/dist/prolog/codec.d.ts +13 -1
  276. package/dist/prolog/codec.d.ts.map +1 -1
  277. package/dist/prolog/codec.js +269 -154
  278. package/dist/prolog/error-terms.d.ts +47 -0
  279. package/dist/prolog/error-terms.d.ts.map +1 -0
  280. package/dist/prolog/error-terms.js +334 -0
  281. package/dist/prolog/janitor.d.ts +50 -0
  282. package/dist/prolog/janitor.d.ts.map +1 -0
  283. package/dist/prolog/janitor.js +154 -0
  284. package/dist/prolog/store-lock.d.ts +45 -0
  285. package/dist/prolog/store-lock.d.ts.map +1 -0
  286. package/dist/prolog/store-lock.js +195 -0
  287. package/dist/prolog.d.ts +7 -0
  288. package/dist/prolog.d.ts.map +1 -1
  289. package/dist/prolog.js +55 -17
  290. package/dist/proof/evaluate.d.ts +27 -0
  291. package/dist/proof/evaluate.d.ts.map +1 -0
  292. package/dist/proof/evaluate.js +151 -0
  293. package/dist/proof/inspect.d.ts +12 -0
  294. package/dist/proof/inspect.d.ts.map +1 -0
  295. package/dist/proof/inspect.js +236 -0
  296. package/dist/proof/integrations.d.ts +35 -0
  297. package/dist/proof/integrations.d.ts.map +1 -0
  298. package/dist/proof/integrations.js +123 -0
  299. package/dist/proof/producers/junit-adapter.d.ts +26 -0
  300. package/dist/proof/producers/junit-adapter.d.ts.map +1 -0
  301. package/dist/proof/producers/junit-adapter.js +186 -0
  302. package/dist/{public → proof/producers}/playwright-case-id.d.ts +1 -1
  303. package/dist/proof/producers/playwright-case-id.d.ts.map +1 -0
  304. package/dist/{public → proof/producers}/playwright-case-id.js +1 -1
  305. package/dist/proof/producers/playwright-reporter.d.ts +27 -0
  306. package/dist/proof/producers/playwright-reporter.d.ts.map +1 -0
  307. package/dist/proof/producers/playwright-reporter.js +138 -0
  308. package/dist/proof/producers/tap-adapter.d.ts +10 -0
  309. package/dist/proof/producers/tap-adapter.d.ts.map +1 -0
  310. package/dist/proof/producers/tap-adapter.js +200 -0
  311. package/dist/proof/receipt-outcome.d.ts +2 -0
  312. package/dist/proof/receipt-outcome.d.ts.map +1 -0
  313. package/dist/proof/receipt-outcome.js +1 -0
  314. package/dist/public/diagnostic-usage.js +6 -6
  315. package/dist/public/distribution-parity.d.ts +7 -1
  316. package/dist/public/distribution-parity.d.ts.map +1 -1
  317. package/dist/public/distribution-parity.js +15 -10
  318. package/dist/public/extractors/symbols-coordinator.d.ts +1 -1
  319. package/dist/public/extractors/symbols-coordinator.d.ts.map +1 -1
  320. package/dist/public/extractors/symbols-coordinator.js +1 -1
  321. package/dist/public/impact/analyzer.d.ts +1 -1
  322. package/dist/public/impact/analyzer.d.ts.map +1 -1
  323. package/dist/public/impact/analyzer.js +6 -4
  324. package/dist/public/impact/coverage-depth-quality.d.ts +1 -0
  325. package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
  326. package/dist/public/impact/coverage-depth-quality.js +1 -1
  327. package/dist/public/impact/diagnostics.d.ts.map +1 -1
  328. package/dist/public/impact/diagnostics.js +2 -2
  329. package/dist/public/impact/diff-meaning.d.ts +1 -0
  330. package/dist/public/impact/diff-meaning.d.ts.map +1 -1
  331. package/dist/public/impact/diff-meaning.js +5 -2
  332. package/dist/public/impact/full-kb-quality.d.ts +5 -2
  333. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  334. package/dist/public/impact/full-kb-quality.js +329 -64
  335. package/dist/public/operations/catalog.d.ts +450 -196
  336. package/dist/public/operations/catalog.d.ts.map +1 -1
  337. package/dist/public/operations/catalog.js +6 -4
  338. package/dist/public/operations/check-executor.d.ts.map +1 -1
  339. package/dist/public/operations/check-executor.js +4 -8
  340. package/dist/public/operations/check-helpers.d.ts +1 -1
  341. package/dist/public/operations/check-helpers.d.ts.map +1 -1
  342. package/dist/public/operations/check-helpers.js +1 -1
  343. package/dist/public/operations/contracts.d.ts +7 -0
  344. package/dist/public/operations/contracts.d.ts.map +1 -1
  345. package/dist/public/operations/contracts.js +66 -34
  346. package/dist/public/operations/discovery-entities.d.ts +15 -0
  347. package/dist/public/operations/discovery-entities.d.ts.map +1 -1
  348. package/dist/public/operations/discovery-entities.js +38 -0
  349. package/dist/public/operations/discovery-executors.d.ts +9 -9
  350. package/dist/public/operations/discovery-executors.d.ts.map +1 -1
  351. package/dist/public/operations/discovery-executors.js +39 -31
  352. package/dist/public/operations/index.d.ts +1 -1
  353. package/dist/public/operations/index.d.ts.map +1 -1
  354. package/dist/public/operations/index.js +1 -1
  355. package/dist/public/operations/migration-plan.d.ts +4 -3
  356. package/dist/public/operations/migration-plan.d.ts.map +1 -1
  357. package/dist/public/operations/migration-plan.js +23 -21
  358. package/dist/public/operations/node-ports.js +6 -6
  359. package/dist/public/operations/prolog-json.d.ts +1 -1
  360. package/dist/public/operations/prolog-json.d.ts.map +1 -1
  361. package/dist/public/operations/prolog-json.js +7 -7
  362. package/dist/public/operations/repair-plan.d.ts +3 -3
  363. package/dist/public/operations/repair-plan.d.ts.map +1 -1
  364. package/dist/public/operations/repair-plan.js +49 -19
  365. package/dist/public/operations/result-envelope.d.ts +1 -0
  366. package/dist/public/operations/result-envelope.d.ts.map +1 -1
  367. package/dist/public/operations/result-envelope.js +12 -10
  368. package/dist/public/operations/runtime-types.d.ts +21 -1
  369. package/dist/public/operations/runtime-types.d.ts.map +1 -1
  370. package/dist/public/operations/specs/check-rules.generated.d.ts +5 -0
  371. package/dist/public/operations/specs/check-rules.generated.d.ts.map +1 -0
  372. package/dist/public/operations/specs/check-rules.generated.js +35 -0
  373. package/dist/public/operations/specs/check.d.ts +7 -2
  374. package/dist/public/operations/specs/check.d.ts.map +1 -1
  375. package/dist/public/operations/specs/check.js +8 -20
  376. package/dist/public/operations/specs/discovery.d.ts +3 -0
  377. package/dist/public/operations/specs/discovery.d.ts.map +1 -1
  378. package/dist/public/operations/specs/discovery.js +3 -0
  379. package/dist/public/operations/specs/mutation-schemas.d.ts +257 -163
  380. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  381. package/dist/public/operations/specs/mutation-schemas.js +15 -7
  382. package/dist/public/operations/specs/planning.d.ts +9 -0
  383. package/dist/public/operations/specs/planning.d.ts.map +1 -1
  384. package/dist/public/operations/specs/planning.js +6 -0
  385. package/dist/public/operations/specs/proof.d.ts +212 -0
  386. package/dist/public/operations/specs/proof.d.ts.map +1 -0
  387. package/dist/public/operations/specs/proof.js +30 -0
  388. package/dist/public/operations/specs/reporting.d.ts +20 -0
  389. package/dist/public/operations/specs/reporting.d.ts.map +1 -1
  390. package/dist/public/operations/specs/reporting.js +112 -12
  391. package/dist/public/operations/specs/semantic.d.ts +1 -1
  392. package/dist/public/operations/specs/semantic.d.ts.map +1 -1
  393. package/dist/public/operations/specs/semantic.js +54 -4
  394. package/dist/public/operations/specs/upsert.d.ts +257 -163
  395. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  396. package/dist/public/operations/symbol-repair-plan.d.ts +11 -0
  397. package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -1
  398. package/dist/public/operations/symbol-repair-plan.js +121 -4
  399. package/dist/public/operations/types.d.ts +6 -1
  400. package/dist/public/operations/types.d.ts.map +1 -1
  401. package/dist/public/proof-fingerprint.d.ts +54 -0
  402. package/dist/public/proof-fingerprint.d.ts.map +1 -0
  403. package/dist/public/proof-fingerprint.js +141 -0
  404. package/dist/public/proof-protocol.d.ts +354 -0
  405. package/dist/public/proof-protocol.d.ts.map +1 -0
  406. package/dist/public/proof-protocol.js +454 -0
  407. package/dist/public/proof-receipt.d.ts +279 -0
  408. package/dist/public/proof-receipt.d.ts.map +1 -0
  409. package/dist/public/proof-receipt.js +377 -0
  410. package/dist/public/schemas/entity.d.ts.map +1 -1
  411. package/dist/public/schemas/entity.js +21 -7
  412. package/dist/public/skills/kibi-freshness/SKILL.md +1 -1
  413. package/dist/public/skills/kibi-usage/SKILL.md +44 -12
  414. package/dist/public/skills/kibi-usage/resources/operation-access.md +1 -1
  415. package/dist/public/skills/kibi-usage/resources/proof.md +150 -0
  416. package/dist/public/skills/kibi-usage/resources/workflows.md +6 -6
  417. package/dist/public/symbol-granularity.d.ts +3 -14
  418. package/dist/public/symbol-granularity.d.ts.map +1 -1
  419. package/dist/public/symbol-granularity.generated.d.ts +16 -0
  420. package/dist/public/symbol-granularity.generated.d.ts.map +1 -0
  421. package/dist/public/symbol-granularity.generated.js +53 -0
  422. package/dist/public/symbol-granularity.js +6 -47
  423. package/dist/public/telemetry-acceptance.d.ts +3 -77
  424. package/dist/public/telemetry-acceptance.d.ts.map +1 -1
  425. package/dist/public/telemetry-acceptance.js +4 -2
  426. package/dist/public/telemetry-remediation.js +1 -1
  427. package/dist/report/html-report.css +1240 -0
  428. package/dist/report/html-report.d.ts +4 -2
  429. package/dist/report/html-report.d.ts.map +1 -1
  430. package/dist/report/html-report.js +37 -300
  431. package/dist/runtime/cli-runtime.d.ts +2 -0
  432. package/dist/runtime/cli-runtime.d.ts.map +1 -1
  433. package/dist/runtime/cli-runtime.js +32 -7
  434. package/dist/schemas/entity.schema.json +355 -215
  435. package/dist/search-ranking.d.ts +1 -0
  436. package/dist/search-ranking.d.ts.map +1 -1
  437. package/dist/search-ranking.js +3 -0
  438. package/dist/traceability/evidence-model.d.ts +28 -0
  439. package/dist/traceability/evidence-model.d.ts.map +1 -1
  440. package/dist/traceability/git-staged.d.ts +20 -0
  441. package/dist/traceability/git-staged.d.ts.map +1 -1
  442. package/dist/traceability/git-staged.js +145 -1
  443. package/dist/traceability/staged-diagnostics.d.ts +7 -0
  444. package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
  445. package/dist/traceability/staged-diagnostics.js +78 -7
  446. package/dist/traceability/staged-file-coverage.d.ts +33 -0
  447. package/dist/traceability/staged-file-coverage.d.ts.map +1 -0
  448. package/dist/traceability/staged-file-coverage.js +284 -0
  449. package/dist/traceability/staged-impact-contract.js +4 -4
  450. package/dist/traceability/staged-symbols-manifest.d.ts +13 -0
  451. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  452. package/dist/traceability/staged-symbols-manifest.js +138 -27
  453. package/dist/traceability/symbol-extract.d.ts +24 -2
  454. package/dist/traceability/symbol-extract.d.ts.map +1 -1
  455. package/dist/traceability/symbol-extract.js +64 -208
  456. package/dist/traceability/temp-kb.d.ts +2 -0
  457. package/dist/traceability/temp-kb.d.ts.map +1 -1
  458. package/dist/traceability/temp-kb.js +13 -4
  459. package/dist/types/entities.d.ts +5 -3
  460. package/dist/types/entities.d.ts.map +1 -1
  461. package/dist/utils/branch-resolver.d.ts +1 -0
  462. package/dist/utils/branch-resolver.d.ts.map +1 -1
  463. package/dist/utils/branch-resolver.js +7 -4
  464. package/dist/utils/branch-store.d.ts +6 -0
  465. package/dist/utils/branch-store.d.ts.map +1 -1
  466. package/dist/utils/branch-store.js +27 -0
  467. package/dist/utils/kb-paths.d.ts +1 -1
  468. package/dist/utils/kb-paths.d.ts.map +1 -1
  469. package/dist/utils/kb-paths.js +1 -1
  470. package/dist/utils/rule-registry.d.ts +1 -11
  471. package/dist/utils/rule-registry.d.ts.map +1 -1
  472. package/dist/utils/rule-registry.generated.d.ts +102 -0
  473. package/dist/utils/rule-registry.generated.d.ts.map +1 -0
  474. package/dist/utils/rule-registry.generated.js +131 -0
  475. package/dist/utils/rule-registry.js +12 -113
  476. package/dist/utils/strict-modeling.d.ts +1 -0
  477. package/dist/utils/strict-modeling.d.ts.map +1 -1
  478. package/dist/utils/strict-modeling.js +1 -1
  479. package/package.json +20 -20
  480. package/src/public/diagnostic-usage.ts +6 -6
  481. package/src/public/distribution-parity.ts +17 -10
  482. package/src/public/extractors/symbols-coordinator.ts +1 -0
  483. package/src/public/impact/analyzer.ts +15 -12
  484. package/src/public/impact/coverage-depth-quality.ts +1 -1
  485. package/src/public/impact/diagnostics.ts +2 -1
  486. package/src/public/impact/diff-meaning.ts +11 -4
  487. package/src/public/impact/full-kb-quality.ts +463 -72
  488. package/src/public/operations/catalog.ts +10 -4
  489. package/src/public/operations/check-executor.ts +4 -8
  490. package/src/public/operations/check-helpers.ts +2 -2
  491. package/src/public/operations/contracts.ts +78 -34
  492. package/src/public/operations/discovery-entities.ts +53 -0
  493. package/src/public/operations/discovery-executors.ts +64 -48
  494. package/src/public/operations/index.ts +1 -1
  495. package/src/public/operations/migration-plan.ts +32 -25
  496. package/src/public/operations/node-ports.ts +6 -6
  497. package/src/public/operations/prolog-json.ts +13 -5
  498. package/src/public/operations/repair-plan.ts +60 -23
  499. package/src/public/operations/result-envelope.ts +15 -10
  500. package/src/public/operations/runtime-types.ts +26 -2
  501. package/src/public/operations/specs/check-rules.generated.ts +38 -0
  502. package/src/public/operations/specs/check.ts +12 -21
  503. package/src/public/operations/specs/discovery.ts +3 -0
  504. package/src/public/operations/specs/mutation-schemas.ts +22 -9
  505. package/src/public/operations/specs/planning.ts +7 -0
  506. package/src/public/operations/specs/proof.ts +43 -0
  507. package/src/public/operations/specs/reporting.ts +140 -13
  508. package/src/public/operations/specs/semantic.ts +79 -17
  509. package/src/public/operations/symbol-repair-plan.ts +166 -7
  510. package/src/public/operations/types.ts +6 -1
  511. package/src/public/proof-fingerprint.ts +216 -0
  512. package/src/public/proof-protocol-types.d.ts +96 -0
  513. package/src/public/proof-protocol.ts +589 -0
  514. package/src/public/proof-receipt.ts +499 -0
  515. package/src/public/schemas/entity.ts +26 -10
  516. package/src/public/skills/kibi-freshness/SKILL.md +1 -1
  517. package/src/public/skills/kibi-usage/SKILL.md +44 -12
  518. package/src/public/skills/kibi-usage/resources/operation-access.md +1 -1
  519. package/src/public/skills/kibi-usage/resources/proof.md +150 -0
  520. package/src/public/skills/kibi-usage/resources/workflows.md +6 -6
  521. package/src/public/symbol-granularity.generated.ts +74 -0
  522. package/src/public/symbol-granularity.ts +34 -59
  523. package/src/public/telemetry-acceptance-types.d.ts +98 -0
  524. package/src/public/telemetry-acceptance.ts +22 -100
  525. package/src/public/telemetry-remediation.ts +1 -1
  526. package/src/schemas/entity.schema.json +355 -215
  527. package/dist/cli-register-verification.d.ts +0 -3
  528. package/dist/cli-register-verification.d.ts.map +0 -1
  529. package/dist/cli-register-verification.js +0 -16
  530. package/dist/commands/verify.d.ts +0 -10
  531. package/dist/commands/verify.d.ts.map +0 -1
  532. package/dist/commands/verify.js +0 -126
  533. package/dist/operations/verification/ingest-verification.d.ts +0 -29
  534. package/dist/operations/verification/ingest-verification.d.ts.map +0 -1
  535. package/dist/operations/verification/ingest-verification.js +0 -192
  536. package/dist/public/operations/specs/verification.d.ts +0 -78
  537. package/dist/public/operations/specs/verification.d.ts.map +0 -1
  538. package/dist/public/operations/specs/verification.js +0 -62
  539. package/dist/public/playwright-case-id.d.ts.map +0 -1
  540. package/dist/public/verification-receipt.d.ts +0 -242
  541. package/dist/public/verification-receipt.d.ts.map +0 -1
  542. package/dist/public/verification-receipt.js +0 -296
  543. package/dist/verification/playwright-reporter.d.ts +0 -21
  544. package/dist/verification/playwright-reporter.d.ts.map +0 -1
  545. package/dist/verification/playwright-reporter.js +0 -114
  546. package/src/public/operations/specs/verification.ts +0 -78
  547. package/src/public/playwright-case-id.ts +0 -35
  548. package/src/public/verification-receipt.ts +0 -412
@@ -0,0 +1,362 @@
1
+ import { mkdirSync, readFileSync, rmdirSync, unlinkSync, writeFileSync, } from "node:fs";
2
+ import * as path from "node:path";
3
+ import { InputError, OperationError } from "../../cli-errors.js";
4
+ /**
5
+ * Portable cooperative mutex for Kibi source mutations. The lock protects
6
+ * cooperating Kibi writers; arbitrary external processes remain outside this
7
+ * protocol and cannot be CAS-protected by it.
8
+ */
9
+ const DEFAULT_LOCK_FILE_RELATIVE = path.join(".kb", "recovery", "source-authoring.lock");
10
+ const OWNER_FILE = "owner.json";
11
+ const DEFAULT_TIMEOUT_MS = 15_000;
12
+ const RETRY_INTERVAL_MS = 25;
13
+ const MAX_RELEASE_FILESYSTEM_ATTEMPTS = 3;
14
+ /** Bounded rereads for the transient mkdir->owner and unlink->rmdir windows. */
15
+ const MAX_MISSING_OWNER_REREADS = 4;
16
+ const NODE_FILE_SYSTEM = {
17
+ mkdirSync: (target, options) => {
18
+ mkdirSync(target, options);
19
+ },
20
+ readFileSync: (target) => readFileSync(target, "utf8"),
21
+ writeFileSync: (target, data, options) => {
22
+ writeFileSync(target, data, options);
23
+ },
24
+ unlinkSync: (target) => unlinkSync(target),
25
+ rmdirSync: (target) => rmdirSync(target),
26
+ };
27
+ // implements REQ-generated-coordinate-persistence
28
+ export class WorkspaceMutationLockError extends Error {
29
+ name = "WorkspaceMutationLockError";
30
+ }
31
+ function lockPath(workspaceRoot, lockFileRelative) {
32
+ return path.join(workspaceRoot, lockFileRelative);
33
+ }
34
+ function randomToken() {
35
+ return `${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
36
+ }
37
+ function readLockRecord(content) {
38
+ try {
39
+ const parsed = JSON.parse(content);
40
+ if (typeof parsed !== "object" ||
41
+ parsed === null ||
42
+ typeof parsed.pid !== "number" ||
43
+ typeof parsed.token !== "string" ||
44
+ typeof parsed.acquiredAt !== "number") {
45
+ return null;
46
+ }
47
+ return parsed;
48
+ }
49
+ catch {
50
+ return null;
51
+ }
52
+ }
53
+ function errorDetail(error) {
54
+ if (!(error instanceof Error))
55
+ return String(error);
56
+ const code = error.code;
57
+ return code === undefined ? error.message : `${code}: ${error.message}`;
58
+ }
59
+ function errorCode(error) {
60
+ if (typeof error !== "object" || error === null)
61
+ return undefined;
62
+ return error.code;
63
+ }
64
+ function isTransientFilesystemError(error) {
65
+ if (typeof error !== "object" || error === null)
66
+ return false;
67
+ const code = error.code;
68
+ return (code === "EBUSY" ||
69
+ code === "EAGAIN" ||
70
+ code === "EINTR" ||
71
+ code === "EPERM");
72
+ }
73
+ function retryTransientFilesystemOperation(operation, canRetry = () => true) {
74
+ let attempts = 0;
75
+ while (attempts < MAX_RELEASE_FILESYSTEM_ATTEMPTS) {
76
+ attempts += 1;
77
+ try {
78
+ return { ok: true, value: operation(), attempts };
79
+ }
80
+ catch (error) {
81
+ if (!isTransientFilesystemError(error) ||
82
+ attempts === MAX_RELEASE_FILESYSTEM_ATTEMPTS ||
83
+ !canRetry(error)) {
84
+ return { ok: false, error, attempts };
85
+ }
86
+ }
87
+ }
88
+ throw new Error("unreachable retry state");
89
+ }
90
+ function manualCleanupGuidance(target, ownerPath) {
91
+ return `To clean it manually, verify no operation is active, verify ${ownerPath} and ${target}, then remove ${target}`;
92
+ }
93
+ function removeLockDirectory(fileSystem, target) {
94
+ const result = retryTransientFilesystemOperation(() => fileSystem.rmdirSync(target));
95
+ if (result.ok)
96
+ return;
97
+ const ownerPath = path.join(target, OWNER_FILE);
98
+ throw new WorkspaceMutationLockError(`failed to remove workspace mutation lock directory at ${target} after ${result.attempts} attempt(s): ${errorDetail(result.error)}; lock remains fail-closed. ${manualCleanupGuidance(target, ownerPath)}`);
99
+ }
100
+ function removeLockOwner(fileSystem, target, ownerPath, ignoreMissing) {
101
+ const result = retryTransientFilesystemOperation(() => fileSystem.unlinkSync(ownerPath));
102
+ if (result.ok)
103
+ return;
104
+ const code = errorCode(result.error);
105
+ if (ignoreMissing && code === "ENOENT")
106
+ return;
107
+ throw new WorkspaceMutationLockError(`failed to remove workspace mutation lock owner at ${ownerPath} after ${result.attempts} attempt(s): ${errorDetail(result.error)}; lock remains fail-closed. ${manualCleanupGuidance(target, ownerPath)}`);
108
+ }
109
+ function observeExistingLock(fileSystem, target, ownerPath, isProcessAlive) {
110
+ let record = null;
111
+ let source = "lock owner metadata";
112
+ let ownerMissing = false;
113
+ try {
114
+ record = readLockRecord(fileSystem.readFileSync(ownerPath));
115
+ }
116
+ catch (ownerError) {
117
+ ownerMissing = errorCode(ownerError) === "ENOENT";
118
+ try {
119
+ source = "legacy lock metadata";
120
+ record = readLockRecord(fileSystem.readFileSync(target));
121
+ }
122
+ catch {
123
+ // A lock directory without readable owner metadata is the normal
124
+ // mkdir->owner-publish window (and the unlink->rmdir release window):
125
+ // callers reread it a bounded number of times before failing closed.
126
+ // Any other owner read failure is not a creation gap.
127
+ if (ownerMissing) {
128
+ return {
129
+ kind: "missing",
130
+ description: "lock owner metadata is missing",
131
+ };
132
+ }
133
+ return {
134
+ kind: "recovery",
135
+ description: "lock owner metadata is missing or unverifiable",
136
+ };
137
+ }
138
+ }
139
+ if (record === null) {
140
+ return {
141
+ kind: "recovery",
142
+ description: `${source} is corrupt or unverifiable`,
143
+ };
144
+ }
145
+ try {
146
+ if (isProcessAlive(record.pid)) {
147
+ return { kind: "live", description: `held by pid ${record.pid}` };
148
+ }
149
+ }
150
+ catch {
151
+ return {
152
+ kind: "recovery",
153
+ description: `holder pid ${record.pid} could not be verified as live`,
154
+ };
155
+ }
156
+ return {
157
+ kind: "recovery",
158
+ description: `holder pid ${record.pid} is not live`,
159
+ };
160
+ }
161
+ function defaultIsProcessAlive(pid) {
162
+ try {
163
+ process.kill(pid, 0);
164
+ return true;
165
+ }
166
+ catch (error) {
167
+ if (error instanceof Error &&
168
+ "code" in error &&
169
+ error.code === "ESRCH")
170
+ return false;
171
+ throw error;
172
+ }
173
+ }
174
+ async function defaultSleep(ms) {
175
+ await new Promise((resolvePromise) => setTimeout(resolvePromise, ms));
176
+ }
177
+ // implements REQ-generated-coordinate-persistence
178
+ export function releaseWorkspaceMutationLock(handle, operationFailure, committed = false) {
179
+ if (handle === undefined)
180
+ return;
181
+ try {
182
+ handle.release();
183
+ }
184
+ catch (releaseError) {
185
+ if (committed) {
186
+ throw new OperationError("SOURCE_MUTATION_LOCK_RELEASE_FAILED", `Mutation committed, but workspace source lock release failed: ${errorDetail(releaseError)}; do not retry the mutation until the lock is manually verified and released`, false);
187
+ }
188
+ if (operationFailure !== undefined) {
189
+ throw new AggregateError([operationFailure.error, releaseError], "Operation failed and workspace mutation lock release failed");
190
+ }
191
+ throw releaseError;
192
+ }
193
+ }
194
+ /**
195
+ * Classify the failure of an operation whose authoritative commit already
196
+ * happened. Typed operation errors keep their code and retryability; generic
197
+ * failures are wrapped immediately as non-retryable so callers never read a
198
+ * committed mutation as an invitation to retry.
199
+ */
200
+ export function classifySourceMutationFailure(operation, error, committed) {
201
+ if (!committed)
202
+ return error;
203
+ if (error instanceof OperationError || error instanceof InputError) {
204
+ return error;
205
+ }
206
+ const detail = error instanceof Error ? error.message : String(error);
207
+ return new OperationError("SOURCE_MUTATION_POST_COMMIT_FAILED", `${operation} committed, but a postcommit step failed: ${detail}; do not retry the original mutation; inspect the committed snapshot and recovery metadata before repairing`, false);
208
+ }
209
+ /**
210
+ * Acquire the workspace workspace mutation lock without a callback shape, for
211
+ * operations whose lock must span several awaits (source publication,
212
+ * coordinate refresh, canonical re-extraction, and the RDF commit).
213
+ */
214
+ // implements REQ-generated-coordinate-persistence
215
+ export async function acquireWorkspaceMutationLock(workspaceRoot, options = {}) {
216
+ const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
217
+ const now = options.now ?? Date.now;
218
+ const sleep = options.sleep ?? defaultSleep;
219
+ const fileSystem = options.fileSystem ?? NODE_FILE_SYSTEM;
220
+ const isProcessAlive = options.isProcessAlive ?? defaultIsProcessAlive;
221
+ const target = lockPath(workspaceRoot, options.lockFileRelative ?? DEFAULT_LOCK_FILE_RELATIVE);
222
+ const ownerPath = path.join(target, OWNER_FILE);
223
+ const token = randomToken();
224
+ const deadline = now() + timeoutMs;
225
+ const parentPath = path.dirname(target);
226
+ const parentResult = retryTransientFilesystemOperation(() => fileSystem.mkdirSync(parentPath, { recursive: true }));
227
+ if (!parentResult.ok) {
228
+ throw new WorkspaceMutationLockError(`failed to create workspace mutation lock parent at ${parentPath} after ${parentResult.attempts} attempt(s): ${errorDetail(parentResult.error)}`);
229
+ }
230
+ let acquired = false;
231
+ let lastBlocker = "unknown";
232
+ let lastObservationMissing = false;
233
+ let missingOwnerRereads = 0;
234
+ while (now() < deadline) {
235
+ const targetResult = retryTransientFilesystemOperation(() => {
236
+ // Directory creation is the sole atomic lock authority.
237
+ fileSystem.mkdirSync(target);
238
+ });
239
+ if (targetResult.ok) {
240
+ acquired = true;
241
+ break;
242
+ }
243
+ if (errorCode(targetResult.error) !== "EEXIST") {
244
+ throw new WorkspaceMutationLockError(`failed to acquire workspace mutation lock directory at ${target} after ${targetResult.attempts} attempt(s): ${errorDetail(targetResult.error)}`);
245
+ }
246
+ const observation = observeExistingLock(fileSystem, target, ownerPath, isProcessAlive);
247
+ lastBlocker = observation.description;
248
+ lastObservationMissing = observation.kind === "missing";
249
+ if (observation.kind === "missing") {
250
+ // A missing owner is usually another holder's transient
251
+ // mkdir->owner-publish or unlink->rmdir window. Reread a bounded number
252
+ // of times; never reclaim the lock automatically.
253
+ if (missingOwnerRereads < MAX_MISSING_OWNER_REREADS) {
254
+ missingOwnerRereads += 1;
255
+ await sleep(RETRY_INTERVAL_MS);
256
+ continue;
257
+ }
258
+ throw new OperationError("SOURCE_MUTATION_LOCK_RECOVERY_REQUIRED", `workspace mutation lock at ${target} requires operator recovery: ${observation.description} after ${missingOwnerRereads} reread(s). Quiesce all Kibi and source-mutating writers, then manually verify the owner metadata and remove the lock only after confirming no operation is active`, false);
259
+ }
260
+ if (observation.kind === "recovery") {
261
+ throw new OperationError("SOURCE_MUTATION_LOCK_RECOVERY_REQUIRED", `workspace mutation lock at ${target} requires operator recovery: ${observation.description}. Quiesce all Kibi and source-mutating writers, then manually verify the owner metadata and remove the lock only after confirming no operation is active`, false);
262
+ }
263
+ await sleep(RETRY_INTERVAL_MS);
264
+ }
265
+ if (!acquired) {
266
+ if (lastObservationMissing) {
267
+ // The deadline expired inside a sustained missing-owner window: that is
268
+ // a fail-closed recovery state, not a busy holder.
269
+ throw new OperationError("SOURCE_MUTATION_LOCK_RECOVERY_REQUIRED", `workspace mutation lock at ${target} requires operator recovery: ${lastBlocker} for the whole acquisition window. Quiesce all Kibi and source-mutating writers, then manually verify the owner metadata and remove the lock only after confirming no operation is active`, false);
270
+ }
271
+ throw new OperationError("SOURCE_MUTATION_LOCK_TIMEOUT", `workspace mutation lock is ${lastBlocker}; acquisition timed out after ${timeoutMs}ms while the live owner remained in place; retry after the owner releases the lock to avoid a lost update`, true);
272
+ }
273
+ const payload = `${JSON.stringify({
274
+ pid: process.pid,
275
+ token,
276
+ acquiredAt: now(),
277
+ })}\n`;
278
+ try {
279
+ const ownerResult = retryTransientFilesystemOperation(() => fileSystem.writeFileSync(ownerPath, payload, {
280
+ encoding: "utf8",
281
+ flag: "wx",
282
+ }), () => {
283
+ try {
284
+ fileSystem.readFileSync(ownerPath);
285
+ return false;
286
+ }
287
+ catch (probeError) {
288
+ return errorCode(probeError) === "ENOENT";
289
+ }
290
+ });
291
+ if (!ownerResult.ok)
292
+ throw ownerResult.error;
293
+ }
294
+ catch (error) {
295
+ const cleanupFailures = [];
296
+ try {
297
+ removeLockOwner(fileSystem, target, ownerPath, true);
298
+ }
299
+ catch (cleanupError) {
300
+ cleanupFailures.push(`owner cleanup: ${errorDetail(cleanupError)}`);
301
+ }
302
+ try {
303
+ removeLockDirectory(fileSystem, target);
304
+ }
305
+ catch (cleanupError) {
306
+ cleanupFailures.push(`directory cleanup: ${errorDetail(cleanupError)}`);
307
+ }
308
+ const cleanupContext = cleanupFailures.length === 0
309
+ ? "lock directory cleanup completed"
310
+ : `lock remains fail-closed at ${target}; ${cleanupFailures.join("; ")}`;
311
+ throw new WorkspaceMutationLockError(`failed to initialize workspace mutation lock owner at ${ownerPath}: ${errorDetail(error)}; ${cleanupContext}`);
312
+ }
313
+ let releaseState = "owned";
314
+ return {
315
+ release: () => {
316
+ if (releaseState === "released")
317
+ return;
318
+ if (releaseState === "owned") {
319
+ const readResult = retryTransientFilesystemOperation(() => fileSystem.readFileSync(ownerPath));
320
+ if (!readResult.ok) {
321
+ throw new WorkspaceMutationLockError(`failed to validate workspace mutation lock owner at ${ownerPath} after ${readResult.attempts} attempt(s): ${errorDetail(readResult.error)}; lock remains fail-closed. ${manualCleanupGuidance(target, ownerPath)}`);
322
+ }
323
+ const record = readLockRecord(readResult.value);
324
+ if (record === null) {
325
+ throw new WorkspaceMutationLockError(`refused to release workspace mutation lock with corrupt owner metadata at ${ownerPath}; lock remains fail-closed. ${manualCleanupGuidance(target, ownerPath)}`);
326
+ }
327
+ if (record.token !== token) {
328
+ releaseState = "released";
329
+ return;
330
+ }
331
+ removeLockOwner(fileSystem, target, ownerPath, false);
332
+ releaseState = "owner-removed";
333
+ }
334
+ removeLockDirectory(fileSystem, target);
335
+ releaseState = "released";
336
+ },
337
+ };
338
+ }
339
+ /**
340
+ * Run `operation` while holding the workspace mutation lock.
341
+ *
342
+ * Atomic directory creation is the sole lock authority. Owner metadata is
343
+ * release authorization and diagnostics. Every existing target, including a
344
+ * legacy file or a directory with missing/corrupt metadata, blocks or fails
345
+ * closed without mutating the lock path. Release failures propagate so
346
+ * successful work is never reported unlocked.
347
+ */
348
+ // implements REQ-generated-coordinate-persistence
349
+ export async function withWorkspaceMutationLock(workspaceRoot, operation, options = {}) {
350
+ const handle = await acquireWorkspaceMutationLock(workspaceRoot, options);
351
+ let operationFailure;
352
+ try {
353
+ return await operation();
354
+ }
355
+ catch (error) {
356
+ operationFailure = { error };
357
+ throw error;
358
+ }
359
+ finally {
360
+ releaseWorkspaceMutationLock(handle, operationFailure);
361
+ }
362
+ }
@@ -1,110 +1,13 @@
1
- import { type MigrationPlan } from "../../public/operations/migration-plan.js";
2
1
  import type { OperationContext } from "../../public/operations/runtime-types.js";
3
- import { type BootstrapAction, type BootstrapPlanV1 } from "../bootstrap/types.js";
4
- import { type CompilePlanV1, type SourceWritePlan } from "./compile-intent.js";
2
+ import { type BootstrapAction } from "../bootstrap/types.js";
3
+ import type { ApplyPlanArgs, ApplyPlanResult } from "./apply-plan-types.js";
4
+ export type { ApplyPlanArgs, ApplyPlanResult, EntityDeletionPlan, } from "./apply-plan-types.js";
5
5
  export declare const PLAN_APPLY_RESULT_VERSION: "kibi.plan-apply-result.v1";
6
- export type ApplyPlanArgs = Readonly<{
7
- plan: BootstrapPlanV1;
8
- approvedPlanHash: string;
9
- }> | Readonly<{
10
- plan: CompilePlanV1;
11
- approvedPlanHash: string;
12
- }> | Readonly<{
13
- plan: MigrationPlan;
14
- approvedPlanHash: string;
15
- approvedActionIds: readonly string[];
16
- }> | Readonly<{
17
- plan: EntityDeletionPlan;
18
- approvedPlanHash: string;
19
- }> | Readonly<{
20
- recoveryJournalId: string;
21
- }>;
22
- export type EntityDeletionPlan = Readonly<{
23
- version: "kibi.entity-deletion-plan.v1";
24
- planHash: string;
25
- entityIds: readonly string[];
26
- sourceHashes: Readonly<Record<string, string | null>>;
27
- sourceWrites?: readonly SourceWritePlan[];
28
- supersessionRequired: boolean;
29
- }>;
30
- type BootstrapActionResult = Readonly<{
31
- actionId: string;
32
- outcome: "applied" | "failed" | "skipped";
33
- detail: string;
34
- }>;
35
- export type ApplyPlanResult = Readonly<{
36
- version: typeof PLAN_APPLY_RESULT_VERSION;
37
- outcome: "applied" | "replayed" | "partially_applied";
38
- planHash: string;
39
- actionResults: readonly BootstrapActionResult[];
40
- changedEntities: number;
41
- changedRelationships: number;
42
- finalSnapshots: {
43
- branch: string;
44
- kbSnapshotId: string;
45
- workspaceSnapshot: string;
46
- };
47
- recoveryJournalId: string | null;
48
- changedPaths?: readonly string[];
49
- validationSummary?: Readonly<Record<string, unknown>>;
50
- status?: "committed_with_repairs";
51
- effectFailures?: readonly Readonly<Record<string, unknown>>[];
52
- nextActions?: readonly Readonly<Record<string, unknown>>[];
53
- }> | Readonly<{
54
- version: typeof PLAN_APPLY_RESULT_VERSION;
55
- outcome: "applied" | "replayed";
56
- planHash: string;
57
- changedEntities: number;
58
- changedRelationships: number;
59
- changedPaths: readonly string[];
60
- finalSnapshots: {
61
- branch: string;
62
- kbSnapshotId: string;
63
- workspaceSnapshot: string;
64
- };
65
- validationSummary: {
66
- stepsValidated: number;
67
- stepsApplied: number;
68
- sourceHashesChecked: number;
69
- notes: readonly string[];
70
- };
71
- recoveryJournalId: string | null;
72
- status?: "committed_with_repairs";
73
- effectFailures?: readonly Readonly<Record<string, unknown>>[];
74
- nextActions?: readonly Readonly<Record<string, unknown>>[];
75
- }> | Readonly<{
76
- version: "kibi.entity-deletion-apply-result.v1";
77
- outcome: "applied";
78
- planHash: string;
79
- deleted: number;
80
- sourcePaths: readonly string[];
81
- recoveryJournalId?: string | null;
82
- status?: "committed_with_repairs";
83
- nextActions?: readonly Readonly<Record<string, unknown>>[];
84
- }> | Readonly<{
85
- version: "kibi.migration-apply-result.v1";
86
- outcome: "applied" | "partially_applied" | "replayed" | "reconciliation_required";
87
- planHash: string;
88
- actionResults: readonly Readonly<{
89
- actionId: string;
90
- outcome: "applied" | "failed" | "skipped";
91
- detail: string;
92
- }>[];
93
- finalSnapshots: {
94
- branch: string;
95
- kbSnapshotId: string;
96
- workspaceSnapshot: string;
97
- };
98
- notes: readonly string[];
99
- remainingPlan?: MigrationPlan;
100
- closeout?: {
101
- taskOutcome: "complete" | "interim" | "blocked";
102
- kbState: "clean_fresh" | "stale" | "dirty" | "legacy_compat" | "not_evaluated";
103
- verificationState: "fresh" | "dirty" | "unavailable" | "not_evaluated";
104
- proofState: "proven" | "mixed" | "unresolved" | "not_evaluated";
105
- limitationDisposition: "none" | "accepted" | "unaccepted" | "not_applicable";
106
- };
107
- }>;
6
+ export declare function assertSourceWriteStaysInWorkspace(root: string, absolute: string, writePath: string): void;
7
+ export declare function assertBootstrapRecoveryDependencies(remaining: readonly {
8
+ id: string;
9
+ dependsOn?: readonly string[];
10
+ }[], applied: ReadonlySet<string>): void;
108
11
  export declare function orderBootstrapActions(actions: readonly BootstrapAction[], completed?: Set<string>): BootstrapAction[];
109
12
  export declare function executeApplyPlan(args: ApplyPlanArgs, context: OperationContext): Promise<{
110
13
  content: Array<{
@@ -113,5 +16,4 @@ export declare function executeApplyPlan(args: ApplyPlanArgs, context: Operation
113
16
  }>;
114
17
  structuredContent: ApplyPlanResult;
115
18
  }>;
116
- export {};
117
19
  //# sourceMappingURL=apply-plan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"apply-plan.d.ts","sourceRoot":"","sources":["../../../src/operations/planning/apply-plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply-plan.d.ts","sourceRoot":"","sources":["../../../src/operations/planning/apply-plan.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAGjF,OAAO,EACL,KAAK,eAAe,EAIrB,MAAM,uBAAuB,CAAC;AAqB/B,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EAGhB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAG/B,eAAO,MAAM,yBAAyB,EAAG,2BAAoC,CAAC;AA6G9E,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,IAAI,CAMN;AAED,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,EAAE,EACnE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3B,IAAI,CAaN;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,SAAS,cAAoB,GAC5B,eAAe,EAAE,CA2CnB;AAggDD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC;IACT,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,iBAAiB,EAAE,eAAe,CAAC;CACpC,CAAC,CA2BD"}