kibi-cli 0.18.1 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (539) hide show
  1. package/dist/cli-json-command.d.ts +1 -2
  2. package/dist/cli-json-command.d.ts.map +1 -1
  3. package/dist/cli-json-command.js +2 -34
  4. package/dist/cli-operation-loader.d.ts +3 -0
  5. package/dist/cli-operation-loader.d.ts.map +1 -0
  6. package/dist/cli-operation-loader.js +91 -0
  7. package/dist/cli-operation-metadata.d.ts +94 -0
  8. package/dist/cli-operation-metadata.d.ts.map +1 -0
  9. package/dist/cli-operation-metadata.js +121 -0
  10. package/dist/cli-protocol.d.ts +1 -1
  11. package/dist/cli-protocol.d.ts.map +1 -1
  12. package/dist/cli-protocol.js +42 -11
  13. package/dist/cli-register-foundation.d.ts.map +1 -1
  14. package/dist/cli-register-foundation.js +28 -19
  15. package/dist/cli-register-json.d.ts +3 -0
  16. package/dist/cli-register-json.d.ts.map +1 -0
  17. package/dist/cli-register-json.js +35 -0
  18. package/dist/cli-register-maintenance.d.ts.map +1 -1
  19. package/dist/cli-register-maintenance.js +60 -13
  20. package/dist/cli-register-reporting.d.ts.map +1 -1
  21. package/dist/cli-register-reporting.js +23 -14
  22. package/dist/cli-register-skills.d.ts.map +1 -1
  23. package/dist/cli-register-skills.js +8 -6
  24. package/dist/cli-register-verification.d.ts +3 -0
  25. package/dist/cli-register-verification.d.ts.map +1 -0
  26. package/dist/cli-register-verification.js +16 -0
  27. package/dist/cli.d.ts.map +1 -1
  28. package/dist/cli.js +3 -1
  29. package/dist/commands/aggregated-checks.d.ts +1 -2
  30. package/dist/commands/aggregated-checks.d.ts.map +1 -1
  31. package/dist/commands/aggregated-checks.js +14 -9
  32. package/dist/commands/branch.d.ts +36 -0
  33. package/dist/commands/branch.d.ts.map +1 -1
  34. package/dist/commands/branch.js +371 -40
  35. package/dist/commands/check.d.ts.map +1 -1
  36. package/dist/commands/check.js +48 -77
  37. package/dist/commands/coverage.js +1 -1
  38. package/dist/commands/discovery-shared.d.ts +2 -1
  39. package/dist/commands/discovery-shared.d.ts.map +1 -1
  40. package/dist/commands/discovery-shared.js +38 -25
  41. package/dist/commands/doctor.d.ts +4 -1
  42. package/dist/commands/doctor.d.ts.map +1 -1
  43. package/dist/commands/doctor.js +259 -24
  44. package/dist/commands/engine.d.ts +8 -0
  45. package/dist/commands/engine.d.ts.map +1 -0
  46. package/dist/commands/engine.js +103 -0
  47. package/dist/commands/gaps.js +1 -1
  48. package/dist/commands/gc.d.ts +5 -2
  49. package/dist/commands/gc.d.ts.map +1 -1
  50. package/dist/commands/gc.js +140 -71
  51. package/dist/commands/github-init.d.ts +56 -0
  52. package/dist/commands/github-init.d.ts.map +1 -0
  53. package/dist/commands/github-init.js +310 -0
  54. package/dist/commands/graph.js +1 -1
  55. package/dist/commands/init-helpers.d.ts +1 -1
  56. package/dist/commands/init-helpers.d.ts.map +1 -1
  57. package/dist/commands/init-helpers.js +73 -25
  58. package/dist/commands/init.d.ts +2 -0
  59. package/dist/commands/init.d.ts.map +1 -1
  60. package/dist/commands/init.js +79 -24
  61. package/dist/commands/legacy-storage-migration.d.ts +54 -0
  62. package/dist/commands/legacy-storage-migration.d.ts.map +1 -0
  63. package/dist/commands/legacy-storage-migration.js +277 -0
  64. package/dist/commands/migrate.d.ts +7 -0
  65. package/dist/commands/migrate.d.ts.map +1 -1
  66. package/dist/commands/migrate.js +244 -91
  67. package/dist/commands/query.d.ts.map +1 -1
  68. package/dist/commands/query.js +3 -1
  69. package/dist/commands/report.d.ts +24 -0
  70. package/dist/commands/report.d.ts.map +1 -0
  71. package/dist/commands/report.js +191 -0
  72. package/dist/commands/search.d.ts.map +1 -1
  73. package/dist/commands/search.js +3 -1
  74. package/dist/commands/status.d.ts.map +1 -1
  75. package/dist/commands/status.js +2 -1
  76. package/dist/commands/sync/cache.d.ts +26 -3
  77. package/dist/commands/sync/cache.d.ts.map +1 -1
  78. package/dist/commands/sync/cache.js +141 -5
  79. package/dist/commands/sync/discovery.d.ts +23 -2
  80. package/dist/commands/sync/discovery.d.ts.map +1 -1
  81. package/dist/commands/sync/discovery.js +196 -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 +8 -5
  86. package/dist/commands/sync/manifest.d.ts.map +1 -1
  87. package/dist/commands/sync/manifest.js +142 -39
  88. package/dist/commands/sync/persistence.d.ts +10 -1
  89. package/dist/commands/sync/persistence.d.ts.map +1 -1
  90. package/dist/commands/sync/persistence.js +223 -44
  91. package/dist/commands/sync/staging.d.ts +10 -1
  92. package/dist/commands/sync/staging.d.ts.map +1 -1
  93. package/dist/commands/sync/staging.js +84 -1
  94. package/dist/commands/sync.d.ts +6 -0
  95. package/dist/commands/sync.d.ts.map +1 -1
  96. package/dist/commands/sync.js +710 -48
  97. package/dist/commands/verify.d.ts +10 -0
  98. package/dist/commands/verify.d.ts.map +1 -0
  99. package/dist/commands/verify.js +126 -0
  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 -0
  103. package/dist/engine-daemon.d.ts.map +1 -0
  104. package/dist/engine-daemon.js +34 -0
  105. package/dist/engine.d.ts +156 -0
  106. package/dist/engine.d.ts.map +1 -0
  107. package/dist/engine.js +1625 -0
  108. package/dist/env.d.ts.map +1 -1
  109. package/dist/env.js +5 -6
  110. package/dist/extractors/manifest.d.ts +8 -1
  111. package/dist/extractors/manifest.d.ts.map +1 -1
  112. package/dist/extractors/manifest.js +51 -9
  113. package/dist/extractors/markdown.d.ts +2 -1
  114. package/dist/extractors/markdown.d.ts.map +1 -1
  115. package/dist/extractors/markdown.js +21 -3
  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 +2 -0
  120. package/dist/extractors/relationships.d.ts.map +1 -1
  121. package/dist/extractors/relationships.js +16 -17
  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/intent-search.d.ts +60 -0
  127. package/dist/intent-search.d.ts.map +1 -0
  128. package/dist/intent-search.js +433 -0
  129. package/dist/operations/bootstrap/activation.d.ts.map +1 -0
  130. package/dist/operations/{autopilot → bootstrap}/activation.js +48 -31
  131. package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts.map +1 -1
  132. package/dist/operations/bootstrap/candidates.d.ts +4 -0
  133. package/dist/operations/{autopilot → bootstrap}/candidates.d.ts.map +1 -1
  134. package/dist/operations/{autopilot → bootstrap}/candidates.js +22 -8
  135. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts +2 -2
  136. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts.map +1 -1
  137. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.js +46 -6
  138. package/dist/operations/{autopilot → bootstrap}/discovery.d.ts +1 -1
  139. package/dist/operations/bootstrap/discovery.d.ts.map +1 -0
  140. package/dist/operations/{autopilot → bootstrap}/discovery.js +21 -14
  141. package/dist/operations/bootstrap/generate.d.ts +8 -0
  142. package/dist/operations/bootstrap/generate.d.ts.map +1 -0
  143. package/dist/operations/bootstrap/generate.js +204 -0
  144. package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts +2 -2
  145. package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts.map +1 -1
  146. package/dist/operations/{autopilot → bootstrap}/guidance-actions.js +4 -4
  147. package/dist/operations/{autopilot → bootstrap}/guidance.d.ts +2 -2
  148. package/dist/operations/{autopilot → bootstrap}/guidance.d.ts.map +1 -1
  149. package/dist/operations/{autopilot → bootstrap}/guidance.js +2 -0
  150. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts +2 -2
  151. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts.map +1 -1
  152. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.js +4 -3
  153. package/dist/operations/bootstrap/presentation.d.ts +15 -0
  154. package/dist/operations/bootstrap/presentation.d.ts.map +1 -0
  155. package/dist/operations/bootstrap/presentation.js +177 -0
  156. package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts.map +1 -1
  157. package/dist/operations/{autopilot → bootstrap}/types.d.ts +63 -21
  158. package/dist/operations/bootstrap/types.d.ts.map +1 -0
  159. package/dist/operations/bootstrap/types.js +25 -0
  160. package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
  161. package/dist/operations/modeling/model-requirement.js +4 -17
  162. package/dist/operations/modeling/predicate-applicability.d.ts +16 -0
  163. package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -0
  164. package/dist/operations/modeling/predicate-applicability.js +276 -0
  165. package/dist/operations/modeling/predicate-applyplan.d.ts +13 -2
  166. package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
  167. package/dist/operations/modeling/predicate-applyplan.js +100 -3
  168. package/dist/operations/modeling/predicate-bindings.d.ts +6 -0
  169. package/dist/operations/modeling/predicate-bindings.d.ts.map +1 -0
  170. package/dist/operations/modeling/predicate-bindings.js +122 -0
  171. package/dist/operations/modeling/predicate-catalog-4.d.ts.map +1 -1
  172. package/dist/operations/modeling/predicate-catalog-4.js +155 -0
  173. package/dist/operations/modeling/predicate-inference-1.d.ts.map +1 -1
  174. package/dist/operations/modeling/predicate-inference-1.js +8 -0
  175. package/dist/operations/modeling/predicate-inference-launcher.d.ts +10 -0
  176. package/dist/operations/modeling/predicate-inference-launcher.d.ts.map +1 -0
  177. package/dist/operations/modeling/predicate-inference-launcher.js +13 -0
  178. package/dist/operations/modeling/predicate-inference.d.ts.map +1 -1
  179. package/dist/operations/modeling/predicate-inference.js +4 -0
  180. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
  181. package/dist/operations/modeling/predicate-loader.js +7 -0
  182. package/dist/operations/modeling/predicate-ranker.d.ts +8 -1
  183. package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
  184. package/dist/operations/modeling/predicate-ranker.js +156 -24
  185. package/dist/operations/modeling/predicate-score-3.d.ts.map +1 -1
  186. package/dist/operations/modeling/predicate-score-3.js +6 -0
  187. package/dist/operations/modeling/predicate-types.d.ts +34 -0
  188. package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
  189. package/dist/operations/modeling/predicate-usage-hints-3.d.ts.map +1 -1
  190. package/dist/operations/modeling/predicate-usage-hints-3.js +40 -0
  191. package/dist/operations/modeling/predicate-utils.d.ts.map +1 -1
  192. package/dist/operations/modeling/predicate-utils.js +2 -0
  193. package/dist/operations/modeling/suggest-predicates.d.ts +1 -1
  194. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
  195. package/dist/operations/modeling/suggest-predicates.js +170 -32
  196. package/dist/operations/mutation/delete.d.ts.map +1 -1
  197. package/dist/operations/mutation/delete.js +415 -19
  198. package/dist/operations/mutation/entity-projection.d.ts +11 -0
  199. package/dist/operations/mutation/entity-projection.d.ts.map +1 -0
  200. package/dist/operations/mutation/entity-projection.js +14 -0
  201. package/dist/operations/mutation/relationships.d.ts +10 -0
  202. package/dist/operations/mutation/relationships.d.ts.map +1 -1
  203. package/dist/operations/mutation/relationships.js +71 -1
  204. package/dist/operations/mutation/serialization.d.ts.map +1 -1
  205. package/dist/operations/mutation/serialization.js +1 -0
  206. package/dist/operations/mutation/source-authoring.d.ts +61 -0
  207. package/dist/operations/mutation/source-authoring.d.ts.map +1 -0
  208. package/dist/operations/mutation/source-authoring.js +543 -0
  209. package/dist/operations/mutation/symbol-compiler-lock.d.ts +51 -0
  210. package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -0
  211. package/dist/operations/mutation/symbol-compiler-lock.js +274 -0
  212. package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
  213. package/dist/operations/mutation/symbol-granularity.js +34 -3
  214. package/dist/operations/mutation/symbol-refresh.d.ts +18 -1
  215. package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
  216. package/dist/operations/mutation/symbol-refresh.js +225 -63
  217. package/dist/operations/mutation/types.d.ts +57 -1
  218. package/dist/operations/mutation/types.d.ts.map +1 -1
  219. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  220. package/dist/operations/mutation/upsert.js +363 -24
  221. package/dist/operations/mutation/validation.d.ts.map +1 -1
  222. package/dist/operations/mutation/validation.js +1 -0
  223. package/dist/operations/planning/apply-plan.d.ts +117 -0
  224. package/dist/operations/planning/apply-plan.d.ts.map +1 -0
  225. package/dist/operations/planning/apply-plan.js +1437 -0
  226. package/dist/operations/planning/compile-intent.d.ts +106 -0
  227. package/dist/operations/planning/compile-intent.d.ts.map +1 -0
  228. package/dist/operations/planning/compile-intent.js +562 -0
  229. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  230. package/dist/operations/semantic-advisor/analyze-prose.js +6 -2
  231. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
  232. package/dist/operations/semantic-advisor/clauses.js +15 -2
  233. package/dist/operations/semantic-advisor/ingestion-boundary.d.ts.map +1 -1
  234. package/dist/operations/semantic-advisor/ingestion-boundary.js +7 -3
  235. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts +51 -0
  236. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts.map +1 -0
  237. package/dist/operations/semantic-advisor/predicate-rules-launcher.js +96 -0
  238. package/dist/operations/semantic-advisor/types.d.ts +13 -5
  239. package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
  240. package/dist/operations/verification/ingest-verification.d.ts +29 -0
  241. package/dist/operations/verification/ingest-verification.d.ts.map +1 -0
  242. package/dist/operations/verification/ingest-verification.js +192 -0
  243. package/dist/prolog/codec.d.ts.map +1 -1
  244. package/dist/prolog/codec.js +2 -1
  245. package/dist/prolog.d.ts +8 -0
  246. package/dist/prolog.d.ts.map +1 -1
  247. package/dist/prolog.js +66 -16
  248. package/dist/public/branch-resolver.d.ts +1 -0
  249. package/dist/public/branch-resolver.d.ts.map +1 -1
  250. package/dist/public/branch-resolver.js +1 -0
  251. package/dist/public/check-types.d.ts +2 -2
  252. package/dist/public/check-types.d.ts.map +1 -1
  253. package/dist/public/check-types.js +16 -16
  254. package/dist/public/diagnostic-usage.d.ts.map +1 -1
  255. package/dist/public/diagnostic-usage.js +69 -1
  256. package/dist/public/distribution-parity.d.ts +1 -1
  257. package/dist/public/distribution-parity.d.ts.map +1 -1
  258. package/dist/public/distribution-parity.js +1 -0
  259. package/dist/public/ignore-policy.d.ts.map +1 -1
  260. package/dist/public/ignore-policy.js +16 -4
  261. package/dist/public/impact/coverage-depth-quality.d.ts +6 -1
  262. package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
  263. package/dist/public/impact/coverage-depth-quality.js +21 -3
  264. package/dist/public/impact/full-kb-quality.d.ts +4 -2
  265. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  266. package/dist/public/impact/full-kb-quality.js +61 -1
  267. package/dist/public/impact/manifest.d.ts.map +1 -1
  268. package/dist/public/impact/manifest.js +2 -5
  269. package/dist/public/operational-artifacts.d.ts.map +1 -1
  270. package/dist/public/operational-artifacts.js +7 -1
  271. package/dist/public/operations/catalog.d.ts +682 -67
  272. package/dist/public/operations/catalog.d.ts.map +1 -1
  273. package/dist/public/operations/catalog.js +126 -4
  274. package/dist/public/operations/check-executor.d.ts +2 -2
  275. package/dist/public/operations/check-executor.d.ts.map +1 -1
  276. package/dist/public/operations/check-executor.js +72 -13
  277. package/dist/public/operations/check-format-shared.d.ts +3 -0
  278. package/dist/public/operations/check-format-shared.d.ts.map +1 -1
  279. package/dist/public/operations/check-format-shared.js +3 -0
  280. package/dist/public/operations/check-helpers.d.ts +27 -2
  281. package/dist/public/operations/check-helpers.d.ts.map +1 -1
  282. package/dist/public/operations/check-helpers.js +62 -26
  283. package/dist/public/operations/contracts.d.ts +11 -0
  284. package/dist/public/operations/contracts.d.ts.map +1 -0
  285. package/dist/public/operations/contracts.js +325 -0
  286. package/dist/public/operations/discovery-entities.d.ts.map +1 -1
  287. package/dist/public/operations/discovery-entities.js +3 -2
  288. package/dist/public/operations/discovery-executors.d.ts +37 -1
  289. package/dist/public/operations/discovery-executors.d.ts.map +1 -1
  290. package/dist/public/operations/discovery-executors.js +246 -9
  291. package/dist/public/operations/index.d.ts +9 -4
  292. package/dist/public/operations/index.d.ts.map +1 -1
  293. package/dist/public/operations/index.js +8 -3
  294. package/dist/public/operations/migration-plan.d.ts +101 -0
  295. package/dist/public/operations/migration-plan.d.ts.map +1 -0
  296. package/dist/public/operations/migration-plan.js +537 -0
  297. package/dist/public/operations/node-ports.d.ts.map +1 -1
  298. package/dist/public/operations/node-ports.js +68 -8
  299. package/dist/public/operations/prolog-json.d.ts +14 -0
  300. package/dist/public/operations/prolog-json.d.ts.map +1 -1
  301. package/dist/public/operations/prolog-json.js +55 -6
  302. package/dist/public/operations/repair-plan.d.ts.map +1 -1
  303. package/dist/public/operations/repair-plan.js +1 -0
  304. package/dist/public/operations/result-envelope.d.ts +13 -0
  305. package/dist/public/operations/result-envelope.d.ts.map +1 -0
  306. package/dist/public/operations/result-envelope.js +104 -0
  307. package/dist/public/operations/runtime-types.d.ts +126 -5
  308. package/dist/public/operations/runtime-types.d.ts.map +1 -1
  309. package/dist/public/operations/source-relationship-parity.d.ts +13 -0
  310. package/dist/public/operations/source-relationship-parity.d.ts.map +1 -0
  311. package/dist/public/operations/source-relationship-parity.js +162 -0
  312. package/dist/public/operations/specs/{autopilot.d.ts → bootstrap.d.ts} +9 -9
  313. package/dist/public/operations/specs/bootstrap.d.ts.map +1 -0
  314. package/dist/public/operations/specs/{autopilot.js → bootstrap.js} +8 -7
  315. package/dist/public/operations/specs/check.d.ts +4 -4
  316. package/dist/public/operations/specs/check.d.ts.map +1 -1
  317. package/dist/public/operations/specs/check.js +4 -3
  318. package/dist/public/operations/specs/discovery.d.ts +87 -3
  319. package/dist/public/operations/specs/discovery.d.ts.map +1 -1
  320. package/dist/public/operations/specs/discovery.js +53 -3
  321. package/dist/public/operations/specs/modeling.d.ts +3 -3
  322. package/dist/public/operations/specs/modeling.js +3 -3
  323. package/dist/public/operations/specs/mutation-schemas.d.ts +190 -47
  324. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  325. package/dist/public/operations/specs/mutation-schemas.js +3 -1
  326. package/dist/public/operations/specs/mutation.d.ts +42 -2
  327. package/dist/public/operations/specs/mutation.d.ts.map +1 -1
  328. package/dist/public/operations/specs/mutation.js +26 -2
  329. package/dist/public/operations/specs/planning.d.ts +270 -0
  330. package/dist/public/operations/specs/planning.d.ts.map +1 -0
  331. package/dist/public/operations/specs/planning.js +191 -0
  332. package/dist/public/operations/specs/reporting.d.ts +4 -1
  333. package/dist/public/operations/specs/reporting.d.ts.map +1 -1
  334. package/dist/public/operations/specs/reporting.js +46 -1
  335. package/dist/public/operations/specs/upsert.d.ts +204 -47
  336. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  337. package/dist/public/operations/specs/upsert.js +9 -0
  338. package/dist/public/operations/specs/verification.d.ts +78 -0
  339. package/dist/public/operations/specs/verification.d.ts.map +1 -0
  340. package/dist/public/operations/specs/verification.js +62 -0
  341. package/dist/public/operations/symbol-repair-plan.d.ts +11 -0
  342. package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -0
  343. package/dist/public/operations/symbol-repair-plan.js +123 -0
  344. package/dist/public/operations/types.d.ts +52 -1
  345. package/dist/public/operations/types.d.ts.map +1 -1
  346. package/dist/public/playwright-case-id.d.ts +8 -0
  347. package/dist/public/playwright-case-id.d.ts.map +1 -0
  348. package/dist/public/playwright-case-id.js +25 -0
  349. package/dist/public/schemas/entity.d.ts.map +1 -1
  350. package/dist/public/schemas/entity.js +4 -2
  351. package/dist/public/skills/kibi-bootstrap/SKILL.md +58 -0
  352. package/dist/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
  353. package/dist/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
  354. package/dist/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
  355. package/dist/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
  356. package/dist/public/skills/kibi-freshness/SKILL.md +40 -10
  357. package/dist/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
  358. package/dist/public/skills/kibi-freshness/resources/operation-access.md +6 -0
  359. package/dist/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
  360. package/dist/public/skills/kibi-traceability/SKILL.md +47 -47
  361. package/dist/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
  362. package/dist/public/skills/kibi-traceability/resources/operation-access.md +5 -0
  363. package/dist/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
  364. package/dist/public/skills/kibi-traceability/resources/traceability.md +8 -0
  365. package/dist/public/skills/kibi-usage/SKILL.md +115 -239
  366. package/dist/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
  367. package/dist/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
  368. package/dist/public/skills/kibi-usage/resources/operation-access.md +36 -38
  369. package/dist/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
  370. package/dist/public/skills/kibi-usage/resources/source-authoring.md +31 -0
  371. package/dist/public/skills/kibi-usage/resources/workflows.md +56 -3
  372. package/dist/public/symbol-granularity.d.ts +1 -1
  373. package/dist/public/symbol-granularity.d.ts.map +1 -1
  374. package/dist/public/symbol-granularity.js +1 -0
  375. package/dist/public/telemetry-acceptance.d.ts +7 -0
  376. package/dist/public/telemetry-acceptance.d.ts.map +1 -1
  377. package/dist/public/telemetry-acceptance.js +8 -1
  378. package/dist/public/telemetry-remediation.js +1 -1
  379. package/dist/public/verification-receipt.d.ts +206 -39
  380. package/dist/public/verification-receipt.d.ts.map +1 -1
  381. package/dist/public/verification-receipt.js +171 -4
  382. package/dist/relationships/shards.d.ts +16 -0
  383. package/dist/relationships/shards.d.ts.map +1 -1
  384. package/dist/relationships/shards.js +87 -2
  385. package/dist/report/brand.d.ts +19 -0
  386. package/dist/report/brand.d.ts.map +1 -0
  387. package/dist/report/brand.js +112 -0
  388. package/dist/report/html-report.d.ts +19 -0
  389. package/dist/report/html-report.d.ts.map +1 -0
  390. package/dist/report/html-report.js +963 -0
  391. package/dist/report/relative-time.d.ts +4 -0
  392. package/dist/report/relative-time.d.ts.map +1 -0
  393. package/dist/report/relative-time.js +46 -0
  394. package/dist/report/report-view.d.ts +17 -0
  395. package/dist/report/report-view.d.ts.map +1 -0
  396. package/dist/report/report-view.js +33 -0
  397. package/dist/report/repository.d.ts +35 -0
  398. package/dist/report/repository.d.ts.map +1 -0
  399. package/dist/report/repository.js +151 -0
  400. package/dist/runtime/cli-runtime.d.ts.map +1 -1
  401. package/dist/runtime/cli-runtime.js +98 -42
  402. package/dist/schemas/entity.schema.json +1148 -273
  403. package/dist/traceability/evidence-model.d.ts +2 -2
  404. package/dist/traceability/evidence-model.d.ts.map +1 -1
  405. package/dist/traceability/evidence-model.js +2 -2
  406. package/dist/traceability/git-staged.d.ts.map +1 -1
  407. package/dist/traceability/git-staged.js +15 -40
  408. package/dist/traceability/markdown-validate.d.ts.map +1 -1
  409. package/dist/traceability/markdown-validate.js +12 -7
  410. package/dist/traceability/staged-impact-contract.d.ts +3 -3
  411. package/dist/traceability/staged-impact-contract.d.ts.map +1 -1
  412. package/dist/traceability/staged-impact-contract.js +10 -38
  413. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  414. package/dist/traceability/staged-symbols-manifest.js +8 -3
  415. package/dist/traceability/temp-kb.d.ts.map +1 -1
  416. package/dist/traceability/temp-kb.js +3 -0
  417. package/dist/types/entities.d.ts +3 -0
  418. package/dist/types/entities.d.ts.map +1 -1
  419. package/dist/utils/branch-resolver.d.ts +24 -10
  420. package/dist/utils/branch-resolver.d.ts.map +1 -1
  421. package/dist/utils/branch-resolver.js +121 -38
  422. package/dist/utils/branch-store-locator.d.ts +23 -0
  423. package/dist/utils/branch-store-locator.d.ts.map +1 -0
  424. package/dist/utils/branch-store-locator.js +90 -0
  425. package/dist/utils/branch-store.d.ts +15 -0
  426. package/dist/utils/branch-store.d.ts.map +1 -0
  427. package/dist/utils/branch-store.js +130 -0
  428. package/dist/utils/config.d.ts +39 -37
  429. package/dist/utils/config.d.ts.map +1 -1
  430. package/dist/utils/config.js +107 -119
  431. package/dist/utils/kb-manifest.d.ts +35 -0
  432. package/dist/utils/kb-manifest.d.ts.map +1 -0
  433. package/dist/utils/kb-manifest.js +154 -0
  434. package/dist/utils/kb-paths.d.ts +54 -0
  435. package/dist/utils/kb-paths.d.ts.map +1 -0
  436. package/dist/utils/kb-paths.js +125 -0
  437. package/dist/utils/manifest-paths.d.ts +4 -4
  438. package/dist/utils/manifest-paths.d.ts.map +1 -1
  439. package/dist/utils/manifest-paths.js +8 -56
  440. package/dist/utils/rule-registry.d.ts +48 -20
  441. package/dist/utils/rule-registry.d.ts.map +1 -1
  442. package/dist/utils/rule-registry.js +82 -77
  443. package/dist/utils/schema-version.d.ts +5 -5
  444. package/dist/utils/schema-version.d.ts.map +1 -1
  445. package/dist/utils/schema-version.js +26 -6
  446. package/dist/utils/strict-modeling.d.ts +0 -4
  447. package/dist/utils/strict-modeling.d.ts.map +1 -1
  448. package/dist/utils/strict-modeling.js +7 -8
  449. package/dist/verification/playwright-reporter.d.ts +21 -0
  450. package/dist/verification/playwright-reporter.d.ts.map +1 -0
  451. package/dist/verification/playwright-reporter.js +114 -0
  452. package/package.json +51 -8
  453. package/schema/config.json +2 -2
  454. package/schema/manifest.json +26 -0
  455. package/src/public/branch-resolver.ts +1 -0
  456. package/src/public/check-types.ts +22 -19
  457. package/src/public/diagnostic-usage.ts +79 -1
  458. package/src/public/distribution-parity.ts +1 -0
  459. package/src/public/ignore-policy.ts +16 -10
  460. package/src/public/impact/coverage-depth-quality.ts +36 -0
  461. package/src/public/impact/full-kb-quality.ts +118 -5
  462. package/src/public/impact/manifest.ts +2 -4
  463. package/src/public/operational-artifacts.ts +9 -1
  464. package/src/public/operations/catalog.ts +146 -9
  465. package/src/public/operations/check-executor.ts +102 -15
  466. package/src/public/operations/check-format-shared.ts +6 -0
  467. package/src/public/operations/check-helpers.ts +74 -35
  468. package/src/public/operations/contracts.ts +366 -0
  469. package/src/public/operations/discovery-entities.ts +3 -2
  470. package/src/public/operations/discovery-executors.ts +343 -15
  471. package/src/public/operations/index.ts +9 -4
  472. package/src/public/operations/migration-plan.ts +740 -0
  473. package/src/public/operations/node-ports.ts +84 -10
  474. package/src/public/operations/prolog-json.ts +73 -6
  475. package/src/public/operations/repair-plan.ts +1 -0
  476. package/src/public/operations/result-envelope.ts +136 -0
  477. package/src/public/operations/runtime-types.ts +130 -5
  478. package/src/public/operations/source-relationship-parity.ts +226 -0
  479. package/src/public/operations/specs/{autopilot.ts → bootstrap.ts} +17 -16
  480. package/src/public/operations/specs/check.ts +4 -3
  481. package/src/public/operations/specs/discovery.ts +57 -3
  482. package/src/public/operations/specs/modeling.ts +3 -3
  483. package/src/public/operations/specs/mutation-schemas.ts +6 -1
  484. package/src/public/operations/specs/mutation.ts +27 -2
  485. package/src/public/operations/specs/planning.ts +234 -0
  486. package/src/public/operations/specs/reporting.ts +55 -1
  487. package/src/public/operations/specs/upsert.ts +10 -0
  488. package/src/public/operations/specs/verification.ts +78 -0
  489. package/src/public/operations/symbol-repair-plan.ts +164 -0
  490. package/src/public/operations/types.ts +62 -1
  491. package/src/public/playwright-case-id.ts +35 -0
  492. package/src/public/schemas/entity.ts +7 -2
  493. package/src/public/skills/kibi-bootstrap/SKILL.md +58 -0
  494. package/src/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
  495. package/src/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
  496. package/src/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
  497. package/src/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
  498. package/src/public/skills/kibi-freshness/SKILL.md +40 -10
  499. package/src/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
  500. package/src/public/skills/kibi-freshness/resources/operation-access.md +6 -0
  501. package/src/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
  502. package/src/public/skills/kibi-traceability/SKILL.md +47 -47
  503. package/src/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
  504. package/src/public/skills/kibi-traceability/resources/operation-access.md +5 -0
  505. package/src/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
  506. package/src/public/skills/kibi-traceability/resources/traceability.md +8 -0
  507. package/src/public/skills/kibi-usage/SKILL.md +115 -239
  508. package/src/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
  509. package/src/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
  510. package/src/public/skills/kibi-usage/resources/operation-access.md +36 -38
  511. package/src/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
  512. package/src/public/skills/kibi-usage/resources/source-authoring.md +31 -0
  513. package/src/public/skills/kibi-usage/resources/workflows.md +56 -3
  514. package/src/public/symbol-granularity.ts +1 -0
  515. package/src/public/telemetry-acceptance.ts +16 -1
  516. package/src/public/telemetry-remediation.ts +1 -1
  517. package/src/public/verification-receipt.ts +248 -6
  518. package/src/schemas/entity.schema.json +1148 -273
  519. package/templates/github/kibi-badge.yml +86 -0
  520. package/templates/github/kibi-report.yml +84 -0
  521. package/dist/operations/autopilot/activation.d.ts.map +0 -1
  522. package/dist/operations/autopilot/candidates.d.ts +0 -4
  523. package/dist/operations/autopilot/discovery.d.ts.map +0 -1
  524. package/dist/operations/autopilot/generate.d.ts +0 -8
  525. package/dist/operations/autopilot/generate.d.ts.map +0 -1
  526. package/dist/operations/autopilot/generate.js +0 -112
  527. package/dist/operations/autopilot/presentation.d.ts +0 -13
  528. package/dist/operations/autopilot/presentation.d.ts.map +0 -1
  529. package/dist/operations/autopilot/presentation.js +0 -91
  530. package/dist/operations/autopilot/types.d.ts.map +0 -1
  531. package/dist/operations/autopilot/types.js +0 -8
  532. package/dist/public/operations/specs/autopilot.d.ts.map +0 -1
  533. package/dist/public/skills/init-kibi/SKILL.md +0 -62
  534. package/src/public/skills/init-kibi/SKILL.md +0 -62
  535. /package/dist/operations/{autopilot → bootstrap}/activation.d.ts +0 -0
  536. /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts +0 -0
  537. /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.js +0 -0
  538. /package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts +0 -0
  539. /package/dist/operations/{autopilot → bootstrap}/requirement-claims.js +0 -0
@@ -1,12 +1,22 @@
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync, readFileSync, realpathSync, unlinkSync, writeFileSync, } from "node:fs";
3
+ import path from "node:path";
4
+ import { OperationError } from "../../cli-errors.js";
5
+ import { readManifestWithCoordinateOverlay } from "../../extractors/manifest.js";
6
+ import { extractManifestSymbolRecords } from "../../extractors/manifest.js";
1
7
  import { escapeAtom } from "../../prolog/codec.js";
2
8
  import { loadEntities } from "../../public/operations/discovery-entities.js";
3
9
  import { appendOnlyVerificationReceiptHistoryErrors } from "../../public/verification-receipt.js";
10
+ import { appendRelationship, computeShardPath, } from "../../relationships/shards.js";
11
+ import { resolveBranchAttachment } from "../../utils/branch-resolver.js";
4
12
  import { analyzeSemanticAdvisorInput } from "../semantic-advisor/analyze-prose.js";
5
13
  import { assertLogicalGroundingClaimKeys, assertSemanticInventoryBoundary, } from "../semantic-advisor/ingestion-boundary.js";
6
14
  import { buildUpsertCommitGoal, formatUpsertError } from "./contradictions.js";
7
- import { existingRelationships, validateLiveRelationshipTargets, validateRelationshipSources, validateStrictLanePairing, } from "./relationships.js";
15
+ import { existingRelationships, validateLiveRelationshipTargets, validateRelationshipSources, validateStrictLanePairing, validateSupersedesSourceHistory, } from "./relationships.js";
16
+ import { writePendingSourceReceipt, writeSourceForUpsert, } from "./source-authoring.js";
17
+ import { acquireSymbolCompilerLock, releaseSymbolCompilerLock, } from "./symbol-compiler-lock.js";
8
18
  import { validateSymbolGranularity } from "./symbol-granularity.js";
9
- import { refreshSymbolCoordinates } from "./symbol-refresh.js";
19
+ import { refreshSymbolCoordinatesForManifest } from "./symbol-refresh.js";
10
20
  import { validateUpsertInput } from "./validation.js";
11
21
  import { scenarioCoverageWarnings } from "./warnings.js";
12
22
  function requireProlog(context) {
@@ -28,6 +38,58 @@ function parseChangeKind(value) {
28
38
  ? normalized
29
39
  : null;
30
40
  }
41
+ function fileHash(pathname) {
42
+ if (!existsSync(pathname))
43
+ return null;
44
+ return createHash("sha256").update(readFileSync(pathname)).digest("hex");
45
+ }
46
+ function textHash(value) {
47
+ return createHash("sha256").update(value).digest("hex");
48
+ }
49
+ function assertRelationshipShardContained(workspaceRoot, shardPath) {
50
+ const root = path.resolve(workspaceRoot);
51
+ const relationshipRoot = path.resolve(root, ".kb", "relationships");
52
+ const absolute = path.resolve(shardPath);
53
+ if (!absolute.startsWith(`${relationshipRoot}${path.sep}`)) {
54
+ throw new OperationError("SOURCE_PATH_INVALID", `Relationship shard escapes the canonical workspace lane: ${shardPath}`);
55
+ }
56
+ let existing = absolute;
57
+ while (!existsSync(existing) && path.dirname(existing) !== existing) {
58
+ existing = path.dirname(existing);
59
+ }
60
+ const real = realpathSync.native(existing);
61
+ if (real !== root && !real.startsWith(`${root}${path.sep}`)) {
62
+ throw new OperationError("SOURCE_PATH_INVALID", `Relationship shard follows a symlink outside the workspace: ${shardPath}`);
63
+ }
64
+ }
65
+ function restoreRelationshipShard(shardPath, before, expectedAfterHash) {
66
+ // Compare before restore: a concurrent writer may have replaced the shard
67
+ // after our append. Never clobber newer bytes; the next check/sync reports
68
+ // any canonical source path that needs reconciliation.
69
+ if (expectedAfterHash !== null) {
70
+ let currentHash = null;
71
+ try {
72
+ currentHash = fileHash(shardPath);
73
+ }
74
+ catch {
75
+ currentHash = null;
76
+ }
77
+ if (currentHash !== expectedAfterHash) {
78
+ console.warn(`Skipped relationship shard rollback for ${path.relative(process.cwd(), shardPath)}: shard changed after the Kibi write.`);
79
+ return;
80
+ }
81
+ }
82
+ if (before === null) {
83
+ try {
84
+ unlinkSync(shardPath);
85
+ }
86
+ catch {
87
+ // The file may already be absent after an interrupted atomic replace.
88
+ }
89
+ return;
90
+ }
91
+ writeFileSync(shardPath, before, "utf8");
92
+ }
31
93
  export async function validateAppendOnlyVerificationReceipts(entity, context) {
32
94
  if (entity.type !== "test")
33
95
  return;
@@ -45,16 +107,23 @@ export async function validateAppendOnlyVerificationReceipts(entity, context) {
45
107
  }
46
108
  }
47
109
  export async function effectiveRelationships(input, entity, relationships, context) {
48
- if (input.relationships !== undefined && input.relationships.length > 0) {
49
- return relationships;
50
- }
51
110
  const prolog = requireProlog(context);
52
111
  const exists = await prolog.query(`once(kb_entity('${escapeAtom(input.id)}', _, _))`);
53
112
  if (!exists.success)
54
113
  return relationships;
55
114
  try {
56
- const current = await existingRelationships(prolog, String(entity.id));
57
- return current.length > 0 ? current : relationships;
115
+ const current = (await existingRelationships(prolog, String(entity.id)))
116
+ // An upsert owns only relationships whose source is the upserted entity.
117
+ // Incoming relationships must not be copied into its validation or
118
+ // canonical source projection.
119
+ .filter((relationship) => relationship.from === input.id);
120
+ const merged = new Map();
121
+ for (const relationship of [...current, ...relationships]) {
122
+ const key = `${String(relationship.type)}\u0000${String(relationship.from)}\u0000${String(relationship.to)}`;
123
+ // The explicit input wins so any supplied metadata is retained.
124
+ merged.set(key, relationship);
125
+ }
126
+ return [...merged.values()];
58
127
  }
59
128
  catch (error) {
60
129
  if (error instanceof Error)
@@ -62,55 +131,243 @@ export async function effectiveRelationships(input, entity, relationships, conte
62
131
  throw error;
63
132
  }
64
133
  }
134
+ /**
135
+ * Re-extract one complete canonical symbol entity from the authored manifest
136
+ * plus the freshly published generated coordinate artifact. Source-first
137
+ * commits must match exactly what the next sync would compile, instead of
138
+ * hand-merging generated fields into the caller's partial payload.
139
+ */
140
+ function reextractCanonicalSymbolEntity(symbolId, authoredRelativePath, workspaceRoot) {
141
+ const absoluteManifest = path.resolve(workspaceRoot, authoredRelativePath);
142
+ let records;
143
+ try {
144
+ records = readManifestWithCoordinateOverlay(absoluteManifest);
145
+ }
146
+ catch (error) {
147
+ throw new Error(`Canonical symbol manifest ${authoredRelativePath} could not be compiled after coordinate refresh: ${error instanceof Error ? error.message : String(error)}`);
148
+ }
149
+ const mine = records.find((candidate) => candidate.id === symbolId);
150
+ if (mine === undefined)
151
+ return null;
152
+ const [result] = extractManifestSymbolRecords([mine], absoluteManifest);
153
+ if (result === undefined)
154
+ return null;
155
+ return {
156
+ ...result.entity,
157
+ ...(result.sourceFile === undefined
158
+ ? {}
159
+ : { sourceFile: result.sourceFile }),
160
+ };
161
+ }
65
162
  export async function executeUpsert(input, context) {
163
+ const branchAttachment = context.branchAttachment ?? resolveBranchAttachment(context.workspaceRoot);
164
+ if ("error" in branchAttachment) {
165
+ throw new Error(`Unable to resolve KB branch: ${branchAttachment.error}`);
166
+ }
167
+ if (branchAttachment.migrationRequired &&
168
+ (context.branchAttachment !== undefined || context.fs !== undefined)) {
169
+ throw new Error(`Upsert blocked: KB is attached through legacy branch storage (${branchAttachment.gitBranch} -> ${branchAttachment.kbBranch}). Run 'kibi branch migrate --from ${branchAttachment.kbBranch} --to ${branchAttachment.gitBranch} --apply' first.`);
170
+ }
66
171
  const prolog = requireProlog(context);
172
+ let sourceWrite = null;
173
+ let commitEntity;
174
+ let sourceRolledBack = false;
175
+ let compiledCommitted = false;
176
+ let relationshipCount = 0;
177
+ let changeKind = null;
178
+ let semanticAdvisor;
179
+ let compilerLock;
180
+ let coordinatePublication;
181
+ let operationFailure;
182
+ const relationshipShardBefore = new Map();
183
+ const relationshipShardAfterHash = new Map();
184
+ const holdsSymbolCompilerLock = input.type === "symbol" &&
185
+ context.fs !== undefined &&
186
+ context.sourceFirst !== false;
67
187
  try {
188
+ if (holdsSymbolCompilerLock) {
189
+ // Symbol source publication, coordinate refresh, canonical
190
+ // re-extraction, and the RDF commit form one read-modify-write cycle.
191
+ // Serialize the whole cycle so concurrent full refreshes or sibling
192
+ // upserts cannot lose updates.
193
+ compilerLock = await acquireSymbolCompilerLock(context.workspaceRoot);
194
+ }
68
195
  const validated = validateUpsertInput(input, context.clock());
69
196
  await validateAppendOnlyVerificationReceipts(validated.entity, context);
70
197
  validateRelationshipSources(input.id, validated.relationships);
71
198
  await validateSymbolGranularity(validated.entity, validated.relationships, context);
72
199
  const relationships = await effectiveRelationships(input, validated.entity, validated.relationships, context);
73
- await validateStrictLanePairing(prolog, relationships);
74
- await validateLiveRelationshipTargets(prolog, validated.entity, relationships);
200
+ relationshipCount = validated.relationships.length;
201
+ await validateStrictLanePairing(prolog, validated.relationships);
202
+ await validateLiveRelationshipTargets(prolog, validated.entity, validated.relationships);
203
+ await validateSupersedesSourceHistory(prolog, validated.entity, validated.relationships, context.workspaceRoot);
75
204
  const semantic = analyzeSemanticAdvisorInput({
76
205
  payload: { ...input, relationships },
77
206
  });
207
+ semanticAdvisor = semantic.receipt;
78
208
  assertSemanticInventoryBoundary({ ...input, relationships }, relationships, semantic.receipt);
79
209
  await assertLogicalGroundingClaimKeys(prolog, { ...input, relationships }, relationships);
210
+ if (context.fs !== undefined && context.sourceFirst !== false) {
211
+ const existingRows = await loadEntities(prolog, {
212
+ id: input.id,
213
+ type: input.type,
214
+ });
215
+ const existing = existingRows[0];
216
+ const existingSource = existing !== undefined && typeof existing.source === "string"
217
+ ? existing.source
218
+ : undefined;
219
+ // Existing non-authored runtime sources (mcp://, test://, etc.) have no
220
+ // tracked document to update unless the caller explicitly supplies one;
221
+ // new entities are required to choose a source target in this
222
+ // filesystem-capable context.
223
+ if (input.document !== undefined ||
224
+ existingSource?.match(/\.(?:md|mdx|ya?ml|json)$/i) ||
225
+ // A filesystem-capable runtime is source-first for every new entity.
226
+ // writeSourceForUpsert emits the typed DOCUMENT_PATH_REQUIRED request
227
+ // when configuration has zero or multiple writable targets, rather
228
+ // than silently creating compiled-only state.
229
+ existing === undefined) {
230
+ sourceWrite = await writeSourceForUpsert(input, validated.entity, existing, context);
231
+ if (sourceWrite !== null) {
232
+ // The authored path is the entity's canonical identity. Runtime
233
+ // transport provenance (mcp://...) must never survive a source-first
234
+ // write or a later delete/sync cycle.
235
+ commitEntity = {
236
+ ...validated.entity,
237
+ source: sourceWrite.receipt.path,
238
+ };
239
+ }
240
+ }
241
+ }
242
+ // Relationship shards are canonical source artifacts. Patch them before
243
+ // the compiled transaction so a failed commit can restore exact bytes and
244
+ // a successful commit never leaves a compiled-only relationship behind.
245
+ if (context.fs !== undefined && validated.relationships.length > 0) {
246
+ for (const relationship of validated.relationships) {
247
+ const type = typeof relationship.type === "string" ? relationship.type : "";
248
+ const from = typeof relationship.from === "string" ? relationship.from : input.id;
249
+ const to = typeof relationship.to === "string" ? relationship.to : "";
250
+ if (!type || !from || !to)
251
+ continue;
252
+ const shardPath = computeShardPath(path.join(context.workspaceRoot, ".kb"), from);
253
+ assertRelationshipShardContained(context.workspaceRoot, shardPath);
254
+ if (!relationshipShardBefore.has(shardPath)) {
255
+ relationshipShardBefore.set(shardPath, existsSync(shardPath) ? readFileSync(shardPath, "utf8") : null);
256
+ }
257
+ appendRelationship(path.join(context.workspaceRoot, ".kb"), {
258
+ type,
259
+ from,
260
+ to,
261
+ created_at: context.clock().toISOString(),
262
+ created_by: "kibi/upsert",
263
+ source: "mcp://kibi/upsert",
264
+ });
265
+ relationshipShardAfterHash.set(shardPath, fileHash(shardPath));
266
+ }
267
+ }
268
+ // Coordinates are generated compiler state owned by
269
+ // `.kb/symbol-coordinates.yaml`. Refresh the target's generated record
270
+ // from current extraction (we hold the symbol compiler lock), then commit
271
+ // the complete canonical entity the next sync would compile. Failures
272
+ // abort before the RDF transaction so source and shard rollbacks keep all
273
+ // surfaces consistent; stale coordinates are never reused as a fallback.
274
+ if (input.type === "symbol" &&
275
+ context.fs !== undefined &&
276
+ context.sourceFirst !== false &&
277
+ sourceWrite !== null) {
278
+ const refresh = await refreshSymbolCoordinatesForManifest(input.id, path.resolve(context.workspaceRoot, sourceWrite.receipt.path), context);
279
+ coordinatePublication = refresh.publication;
280
+ if (!refresh.found || refresh.outcome === "removed") {
281
+ throw new Error(`Coordinate refresh could not find ${input.id} in the authored symbol manifest`);
282
+ }
283
+ const canonical = reextractCanonicalSymbolEntity(input.id, sourceWrite.receipt.path, context.workspaceRoot);
284
+ if (canonical === null) {
285
+ throw new Error(`Canonical symbol manifest ${sourceWrite.receipt.path} no longer contains ${input.id} after coordinate refresh`);
286
+ }
287
+ // The authored path is the entity's canonical identity. Runtime
288
+ // transport provenance (mcp://...) must never survive a source-first
289
+ // write or a later delete/sync cycle.
290
+ commitEntity = {
291
+ ...canonical,
292
+ source: sourceWrite.receipt.path,
293
+ };
294
+ }
80
295
  const transaction = buildUpsertCommitGoal({
81
- entity: validated.entity,
82
- relationships,
296
+ entity: commitEntity ?? validated.entity,
297
+ relationships: validated.relationships,
83
298
  skipContradictionCheck: input._skipContradictionCheck === true,
84
299
  });
85
300
  const written = await prolog.query(transaction);
86
301
  if (!written.success) {
302
+ await sourceWrite?.rollback();
303
+ sourceRolledBack = sourceWrite !== null;
304
+ for (const [shardPath, before] of relationshipShardBefore) {
305
+ restoreRelationshipShard(shardPath, before, relationshipShardAfterHash.get(shardPath) ?? null);
306
+ }
87
307
  throw new Error(formatUpsertError(input.id, written.error));
88
308
  }
309
+ compiledCommitted = true;
89
310
  // The combined commit is the sole mutation boundary. Invalidate reads only
90
311
  // after Prolog reports success so a failed/rolled-back commit does not
91
312
  // disturb callers' view of the current snapshot.
92
313
  prolog.invalidateCache?.();
93
- const changeKind = parseChangeKind(written.bindings.ChangeKind);
314
+ changeKind = parseChangeKind(written.bindings.ChangeKind);
94
315
  if (changeKind === null) {
95
316
  throw new Error(`Upsert commit completed without a created/updated result for ${input.id}`);
96
317
  }
97
- if (input.type === "symbol") {
98
- try {
99
- await refreshSymbolCoordinates(input.id, context);
100
- }
101
- catch (error) {
102
- if (!(error instanceof Error))
103
- throw error;
104
- }
105
- }
106
318
  const coverage = await scenarioCoverageWarnings(prolog, validated.relationships, input.type, input.id);
107
319
  const created = changeKind === "created" ? 1 : 0;
320
+ const shardWarnings = [];
321
+ const relationshipSourceWrites = [];
322
+ for (const [shardPath, before] of relationshipShardBefore) {
323
+ const afterHash = fileHash(shardPath);
324
+ const beforeHash = before === null ? null : textHash(before);
325
+ if (afterHash === null || afterHash === beforeHash)
326
+ continue;
327
+ const relative = path
328
+ .relative(context.workspaceRoot, shardPath)
329
+ .replaceAll("\\", "/");
330
+ writePendingSourceReceipt(context.workspaceRoot, relative, afterHash);
331
+ relationshipSourceWrites.push({
332
+ path: relative,
333
+ mode: "write",
334
+ beforeHash,
335
+ afterHash,
336
+ created: before === null,
337
+ });
338
+ }
108
339
  const payload = {
109
340
  created,
110
341
  updated: changeKind === "updated" ? 1 : 0,
111
- relationships_created: relationships.length,
112
- warnings: [...semantic.warnings, ...coverage],
342
+ relationships_created: validated.relationships.length,
343
+ warnings: [...semantic.warnings, ...coverage, ...shardWarnings],
113
344
  semanticAdvisor: semantic.receipt,
345
+ ...(shardWarnings.length > 0
346
+ ? {
347
+ status: "committed_with_repairs",
348
+ effectFailures: shardWarnings.map((detail) => ({
349
+ kind: "workspace-write",
350
+ errorCode: "RELATIONSHIP_SHARD_WRITE_FAILED",
351
+ detail,
352
+ })),
353
+ nextActions: [
354
+ {
355
+ operation: "kb_check",
356
+ reason: "Relationship shard publication failed after the KB commit; inspect the shard diagnostics and repair the canonical YAML before syncing.",
357
+ required: true,
358
+ },
359
+ ],
360
+ }
361
+ : {}),
362
+ ...(sourceWrite ? { sourceWrites: [sourceWrite.receipt] } : {}),
363
+ ...(relationshipSourceWrites.length > 0
364
+ ? {
365
+ sourceWrites: [
366
+ ...(sourceWrite ? [sourceWrite.receipt] : []),
367
+ ...relationshipSourceWrites,
368
+ ],
369
+ }
370
+ : {}),
114
371
  ...(input.type === "req"
115
372
  ? {
116
373
  contradictionCheck: {
@@ -136,7 +393,89 @@ export async function executeUpsert(input, context) {
136
393
  };
137
394
  }
138
395
  catch (error) {
396
+ let coordinateRollbackError;
397
+ if (!compiledCommitted && coordinatePublication !== undefined) {
398
+ try {
399
+ coordinatePublication.rollback();
400
+ }
401
+ catch (rollbackError) {
402
+ coordinateRollbackError = rollbackError;
403
+ }
404
+ }
405
+ if (!compiledCommitted) {
406
+ for (const [shardPath, before] of relationshipShardBefore) {
407
+ try {
408
+ restoreRelationshipShard(shardPath, before, relationshipShardAfterHash.get(shardPath) ?? null);
409
+ }
410
+ catch {
411
+ // Preserve the original failure; the next check/sync reports any
412
+ // canonical source path that could not be restored.
413
+ }
414
+ }
415
+ }
416
+ if (!compiledCommitted && sourceWrite !== null && !sourceRolledBack) {
417
+ try {
418
+ await sourceWrite.rollback();
419
+ sourceRolledBack = true;
420
+ }
421
+ catch {
422
+ // Preserve the original mutation error; the recovery journal can
423
+ // reconcile a failed source rollback on the next sync.
424
+ }
425
+ }
426
+ if (compiledCommitted) {
427
+ const detail = error instanceof Error ? error.message : String(error);
428
+ return {
429
+ content: [
430
+ {
431
+ type: "text",
432
+ text: `Upserted ${input.id}, but a derived effect requires repair.`,
433
+ },
434
+ ],
435
+ structuredContent: {
436
+ created: changeKind === "created" ? 1 : 0,
437
+ updated: changeKind === "updated" ? 1 : 0,
438
+ relationships_created: relationshipCount,
439
+ warnings: [detail],
440
+ semanticAdvisor: semanticAdvisor,
441
+ status: "committed_with_repairs",
442
+ effectFailures: [
443
+ {
444
+ kind: "derived-effect",
445
+ errorCode: "POST_COMMIT_EFFECT_FAILED",
446
+ detail,
447
+ },
448
+ ],
449
+ nextActions: [
450
+ {
451
+ operation: "kb_status",
452
+ reason: "The compiled mutation committed; inspect the authoritative source and derived status before repairing.",
453
+ required: true,
454
+ },
455
+ {
456
+ operation: "kb_sync",
457
+ reason: "Recompile canonical source files after the committed derived effect failure; do not retry the original upsert.",
458
+ required: true,
459
+ },
460
+ ],
461
+ },
462
+ };
463
+ }
464
+ if (coordinateRollbackError !== undefined) {
465
+ const failure = new AggregateError([error, coordinateRollbackError], `Upsert failed and coordinate artifact rollback failed for ${input.id}`);
466
+ operationFailure = { error: failure };
467
+ throw failure;
468
+ }
469
+ if (error instanceof OperationError) {
470
+ operationFailure = { error };
471
+ throw error;
472
+ }
139
473
  const message = error instanceof Error ? error.message : String(error);
140
- throw new Error(`Upsert execution failed: ${message}`);
474
+ const failure = new Error(`Upsert execution failed: ${message}`);
475
+ operationFailure = { error: failure };
476
+ throw failure;
477
+ }
478
+ finally {
479
+ releaseSymbolCompilerLock(compilerLock, operationFailure);
141
480
  }
142
481
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/validation.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAQ5C,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAiF/D,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,IAAI,GACR,eAAe,CAwDjB;AAED,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/operations/mutation/validation.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAQ5C,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAkF/D,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,IAAI,GACR,eAAe,CAwDjB;AAED,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
@@ -22,6 +22,7 @@ const validateEntity = ajv.compile({
22
22
  "module-level-behavior",
23
23
  "extractor-miss",
24
24
  "legacy-link",
25
+ "test-suite",
25
26
  ],
26
27
  },
27
28
  symbol_role: { type: "string", enum: [...SYMBOL_ROLES] },
@@ -0,0 +1,117 @@
1
+ import { type MigrationPlan } from "../../public/operations/migration-plan.js";
2
+ 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";
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
+ }>;
108
+ export declare function orderBootstrapActions(actions: readonly BootstrapAction[], completed?: Set<string>): BootstrapAction[];
109
+ export declare function executeApplyPlan(args: ApplyPlanArgs, context: OperationContext): Promise<{
110
+ content: Array<{
111
+ type: "text";
112
+ text: string;
113
+ }>;
114
+ structuredContent: ApplyPlanResult;
115
+ }>;
116
+ export {};
117
+ //# sourceMappingURL=apply-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-plan.d.ts","sourceRoot":"","sources":["../../../src/operations/planning/apply-plan.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAGjF,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EAGrB,MAAM,uBAAuB,CAAC;AAS/B,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,eAAe,EAErB,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,yBAAyB,EAAG,2BAAoC,CAAC;AAG9E,MAAM,MAAM,aAAa,GACrB,QAAQ,CAAC;IACP,IAAI,EAAE,eAAe,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC,GACF,QAAQ,CAAC;IACP,IAAI,EAAE,aAAa,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC,GACF,QAAQ,CAAC;IACP,IAAI,EAAE,aAAa,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC,CAAC,GACF,QAAQ,CAAC;IACP,IAAI,EAAE,kBAAkB,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC,GACF,QAAQ,CAAC;IACP,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC,CAAC;AAEP,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,OAAO,EAAE,8BAA8B,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACtD,YAAY,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC1C,oBAAoB,EAAE,OAAO,CAAC;CAC/B,CAAC,CAAC;AAEH,KAAK,qBAAqB,GAAG,QAAQ,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAGH,MAAM,MAAM,eAAe,GACvB,QAAQ,CAAC;IACP,OAAO,EAAE,OAAO,yBAAyB,CAAC;IAC1C,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,mBAAmB,CAAC;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAClC,cAAc,CAAC,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;IAC9D,WAAW,CAAC,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;CAC5D,CAAC,GACF,QAAQ,CAAC;IACP,OAAO,EAAE,OAAO,yBAAyB,CAAC;IAC1C,OAAO,EAAE,SAAS,GAAG,UAAU,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,iBAAiB,EAAE;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAClC,cAAc,CAAC,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;IAC9D,WAAW,CAAC,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;CAC5D,CAAC,GACF,QAAQ,CAAC;IACP,OAAO,EAAE,sCAAsC,CAAC;IAChD,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAClC,WAAW,CAAC,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;CAC5D,CAAC,GACF,QAAQ,CAAC;IACP,OAAO,EAAE,gCAAgC,CAAC;IAC1C,OAAO,EACH,SAAS,GACT,mBAAmB,GACnB,UAAU,GACV,yBAAyB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,SAAS,QAAQ,CAAC;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;QAC1C,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,EAAE,CAAC;IACL,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE;QACT,WAAW,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;QAChD,OAAO,EACH,aAAa,GACb,OAAO,GACP,OAAO,GACP,eAAe,GACf,eAAe,CAAC;QACpB,iBAAiB,EAAE,OAAO,GAAG,OAAO,GAAG,aAAa,GAAG,eAAe,CAAC;QACvE,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,eAAe,CAAC;QAChE,qBAAqB,EACjB,MAAM,GACN,UAAU,GACV,YAAY,GACZ,gBAAgB,CAAC;KACtB,CAAC;CACH,CAAC,CAAC;AA6GP,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,SAAS,cAAoB,GAC5B,eAAe,EAAE,CA2CnB;AA6jCD,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,CAwYD"}