kibi-cli 1.0.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (450) 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 +103 -0
  17. package/dist/cli-register-reporting.d.ts.map +1 -1
  18. package/dist/cli-register-reporting.js +1 -0
  19. package/dist/cli.d.ts +4 -0
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +17 -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.d.ts +14 -0
  26. package/dist/commands/check.d.ts.map +1 -1
  27. package/dist/commands/check.js +190 -44
  28. package/dist/commands/coverage.d.ts +1 -0
  29. package/dist/commands/coverage.d.ts.map +1 -1
  30. package/dist/commands/coverage.js +6 -0
  31. package/dist/commands/doctor.d.ts +22 -0
  32. package/dist/commands/doctor.d.ts.map +1 -1
  33. package/dist/commands/doctor.js +48 -22
  34. package/dist/commands/engine.d.ts +12 -0
  35. package/dist/commands/engine.d.ts.map +1 -1
  36. package/dist/commands/engine.js +40 -0
  37. package/dist/commands/github-init.d.ts +1 -0
  38. package/dist/commands/github-init.d.ts.map +1 -1
  39. package/dist/commands/github-init.js +9 -5
  40. package/dist/commands/init-helpers.d.ts.map +1 -1
  41. package/dist/commands/init-helpers.js +38 -5
  42. package/dist/commands/migrate.d.ts +4 -0
  43. package/dist/commands/migrate.d.ts.map +1 -1
  44. package/dist/commands/migrate.js +7 -7
  45. package/dist/commands/proof-migrate-legacy.d.ts +7 -0
  46. package/dist/commands/proof-migrate-legacy.d.ts.map +1 -0
  47. package/dist/commands/proof-migrate-legacy.js +45 -0
  48. package/dist/commands/proof-prune.d.ts +8 -0
  49. package/dist/commands/proof-prune.d.ts.map +1 -0
  50. package/dist/commands/proof-prune.js +53 -0
  51. package/dist/commands/prove.d.ts +37 -0
  52. package/dist/commands/prove.d.ts.map +1 -0
  53. package/dist/commands/prove.js +470 -0
  54. package/dist/commands/report.js +1 -1
  55. package/dist/commands/sync/discovery.d.ts +3 -0
  56. package/dist/commands/sync/discovery.d.ts.map +1 -1
  57. package/dist/commands/sync/discovery.js +36 -28
  58. package/dist/commands/sync/manifest.d.ts +1 -1
  59. package/dist/commands/sync/manifest.d.ts.map +1 -1
  60. package/dist/commands/sync/manifest.js +53 -21
  61. package/dist/commands/sync/persistence.d.ts +4 -1
  62. package/dist/commands/sync/persistence.d.ts.map +1 -1
  63. package/dist/commands/sync/persistence.js +25 -14
  64. package/dist/commands/sync/staging.d.ts +1 -0
  65. package/dist/commands/sync/staging.d.ts.map +1 -1
  66. package/dist/commands/sync/staging.js +5 -2
  67. package/dist/commands/sync/untracked-targets.d.ts +24 -0
  68. package/dist/commands/sync/untracked-targets.d.ts.map +1 -0
  69. package/dist/commands/sync/untracked-targets.js +108 -0
  70. package/dist/commands/sync.d.ts +11 -1
  71. package/dist/commands/sync.d.ts.map +1 -1
  72. package/dist/commands/sync.js +74 -30
  73. package/dist/engine-daemon.d.ts +3 -1
  74. package/dist/engine-daemon.d.ts.map +1 -1
  75. package/dist/engine-daemon.js +49 -20
  76. package/dist/engine.d.ts +14 -76
  77. package/dist/engine.d.ts.map +1 -1
  78. package/dist/engine.js +197 -30
  79. package/dist/extractors/manifest.d.ts +5 -0
  80. package/dist/extractors/manifest.d.ts.map +1 -1
  81. package/dist/extractors/manifest.js +46 -1
  82. package/dist/extractors/markdown.d.ts +5 -3
  83. package/dist/extractors/markdown.d.ts.map +1 -1
  84. package/dist/extractors/markdown.js +41 -24
  85. package/dist/extractors/playwright-cases.js +1 -1
  86. package/dist/extractors/relationships.d.ts +6 -0
  87. package/dist/extractors/relationships.d.ts.map +1 -1
  88. package/dist/extractors/relationships.js +1 -1
  89. package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
  90. package/dist/extractors/symbols-ts.d.ts +1 -0
  91. package/dist/extractors/symbols-ts.d.ts.map +1 -1
  92. package/dist/extractors/symbols-ts.js +142 -67
  93. package/dist/intent-search.d.ts +1 -0
  94. package/dist/intent-search.d.ts.map +1 -1
  95. package/dist/intent-search.js +7 -3
  96. package/dist/logic/ir.d.ts +1 -0
  97. package/dist/logic/ir.d.ts.map +1 -1
  98. package/dist/logic/ir.js +1 -1
  99. package/dist/operations/bootstrap/activation.d.ts +2 -1
  100. package/dist/operations/bootstrap/activation.d.ts.map +1 -1
  101. package/dist/operations/bootstrap/activation.js +11 -3
  102. package/dist/operations/bootstrap/generate.d.ts +2 -1
  103. package/dist/operations/bootstrap/generate.d.ts.map +1 -1
  104. package/dist/operations/bootstrap/generate.js +6 -3
  105. package/dist/operations/bootstrap/guidance.d.ts +1 -0
  106. package/dist/operations/bootstrap/guidance.d.ts.map +1 -1
  107. package/dist/operations/bootstrap/guidance.js +1 -1
  108. package/dist/operations/modeling/model-requirement.d.ts +5 -0
  109. package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
  110. package/dist/operations/modeling/model-requirement.js +53 -46
  111. package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -1
  112. package/dist/operations/modeling/predicate-applicability.js +103 -4
  113. package/dist/operations/modeling/predicate-catalog-2.d.ts.map +1 -1
  114. package/dist/operations/modeling/predicate-catalog-2.js +18 -2
  115. package/dist/operations/modeling/predicate-catalog-3.d.ts.map +1 -1
  116. package/dist/operations/modeling/predicate-catalog-3.js +17 -1
  117. package/dist/operations/modeling/predicate-catalog-5.d.ts +10 -0
  118. package/dist/operations/modeling/predicate-catalog-5.d.ts.map +1 -0
  119. package/dist/operations/modeling/predicate-catalog-5.js +291 -0
  120. package/dist/operations/modeling/predicate-catalog.d.ts.map +1 -1
  121. package/dist/operations/modeling/predicate-catalog.js +4 -0
  122. package/dist/operations/modeling/predicate-loader.d.ts +1 -0
  123. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
  124. package/dist/operations/modeling/predicate-loader.js +4 -3
  125. package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
  126. package/dist/operations/modeling/predicate-ranker.js +4 -1
  127. package/dist/operations/modeling/predicate-types.d.ts +1 -1
  128. package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
  129. package/dist/operations/modeling/predicate-usage-hints-4.d.ts +3 -0
  130. package/dist/operations/modeling/predicate-usage-hints-4.d.ts.map +1 -0
  131. package/dist/operations/modeling/predicate-usage-hints-4.js +84 -0
  132. package/dist/operations/modeling/suggest-predicates.d.ts +3 -1
  133. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
  134. package/dist/operations/modeling/suggest-predicates.js +52 -19
  135. package/dist/operations/mutation/contradictions.d.ts +2 -1
  136. package/dist/operations/mutation/contradictions.d.ts.map +1 -1
  137. package/dist/operations/mutation/contradictions.js +26 -5
  138. package/dist/operations/mutation/delete.d.ts +3 -0
  139. package/dist/operations/mutation/delete.d.ts.map +1 -1
  140. package/dist/operations/mutation/delete.js +100 -32
  141. package/dist/operations/mutation/relationships.d.ts +1 -0
  142. package/dist/operations/mutation/relationships.d.ts.map +1 -1
  143. package/dist/operations/mutation/relationships.js +6 -4
  144. package/dist/operations/mutation/saga.d.ts +51 -0
  145. package/dist/operations/mutation/saga.d.ts.map +1 -0
  146. package/dist/operations/mutation/saga.js +67 -0
  147. package/dist/operations/mutation/serialization.d.ts.map +1 -1
  148. package/dist/operations/mutation/serialization.js +3 -2
  149. package/dist/operations/mutation/source-authoring.d.ts +5 -1
  150. package/dist/operations/mutation/source-authoring.d.ts.map +1 -1
  151. package/dist/operations/mutation/source-authoring.js +79 -46
  152. package/dist/operations/mutation/strict-fact.d.ts +1 -0
  153. package/dist/operations/mutation/strict-fact.d.ts.map +1 -1
  154. package/dist/operations/mutation/strict-fact.js +8 -5
  155. package/dist/operations/mutation/symbol-compiler-lock.d.ts +5 -2
  156. package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -1
  157. package/dist/operations/mutation/symbol-compiler-lock.js +65 -2
  158. package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
  159. package/dist/operations/mutation/symbol-granularity.js +2 -2
  160. package/dist/operations/mutation/symbol-refresh.d.ts +1 -0
  161. package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
  162. package/dist/operations/mutation/symbol-refresh.js +10 -8
  163. package/dist/operations/mutation/upsert.d.ts +18 -2
  164. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  165. package/dist/operations/mutation/upsert.js +86 -54
  166. package/dist/operations/mutation/validate-upsert.js +2 -2
  167. package/dist/operations/mutation/validation.d.ts.map +1 -1
  168. package/dist/operations/mutation/validation.js +46 -4
  169. package/dist/operations/mutation/warnings.d.ts +1 -0
  170. package/dist/operations/mutation/warnings.d.ts.map +1 -1
  171. package/dist/operations/mutation/warnings.js +7 -5
  172. package/dist/operations/mutation/workspace-mutation-lock.d.ts +60 -0
  173. package/dist/operations/mutation/workspace-mutation-lock.d.ts.map +1 -0
  174. package/dist/operations/mutation/workspace-mutation-lock.js +362 -0
  175. package/dist/operations/planning/apply-plan.d.ts +8 -106
  176. package/dist/operations/planning/apply-plan.d.ts.map +1 -1
  177. package/dist/operations/planning/apply-plan.js +113 -36
  178. package/dist/operations/planning/compile-intent.d.ts +2 -0
  179. package/dist/operations/planning/compile-intent.d.ts.map +1 -1
  180. package/dist/operations/planning/compile-intent.js +70 -14
  181. package/dist/operations/proof/ingest-proof.d.ts +34 -0
  182. package/dist/operations/proof/ingest-proof.d.ts.map +1 -0
  183. package/dist/operations/proof/ingest-proof.js +307 -0
  184. package/dist/operations/proof/migrate-legacy-receipts.d.ts +30 -0
  185. package/dist/operations/proof/migrate-legacy-receipts.d.ts.map +1 -0
  186. package/dist/operations/proof/migrate-legacy-receipts.js +88 -0
  187. package/dist/operations/proof/prune-receipts.d.ts +35 -0
  188. package/dist/operations/proof/prune-receipts.d.ts.map +1 -0
  189. package/dist/operations/proof/prune-receipts.js +91 -0
  190. package/dist/operations/proof/receipt-document.d.ts +29 -0
  191. package/dist/operations/proof/receipt-document.d.ts.map +1 -0
  192. package/dist/operations/proof/receipt-document.js +117 -0
  193. package/dist/operations/semantic-advisor/analyze-prose.d.ts +1 -0
  194. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  195. package/dist/operations/semantic-advisor/analyze-prose.js +46 -26
  196. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
  197. package/dist/operations/semantic-advisor/clauses.js +20 -7
  198. package/dist/operations/semantic-advisor/strict-count-rules.d.ts +2 -0
  199. package/dist/operations/semantic-advisor/strict-count-rules.d.ts.map +1 -1
  200. package/dist/operations/semantic-advisor/strict-count-rules.js +40 -25
  201. package/dist/prolog/codec.d.ts +13 -1
  202. package/dist/prolog/codec.d.ts.map +1 -1
  203. package/dist/prolog/codec.js +269 -154
  204. package/dist/prolog/error-terms.d.ts +47 -0
  205. package/dist/prolog/error-terms.d.ts.map +1 -0
  206. package/dist/prolog/error-terms.js +334 -0
  207. package/dist/prolog/janitor.d.ts +50 -0
  208. package/dist/prolog/janitor.d.ts.map +1 -0
  209. package/dist/prolog/janitor.js +154 -0
  210. package/dist/prolog/store-lock.d.ts +45 -0
  211. package/dist/prolog/store-lock.d.ts.map +1 -0
  212. package/dist/prolog/store-lock.js +195 -0
  213. package/dist/prolog.d.ts +7 -0
  214. package/dist/prolog.d.ts.map +1 -1
  215. package/dist/prolog.js +55 -17
  216. package/dist/proof/evaluate.d.ts +27 -0
  217. package/dist/proof/evaluate.d.ts.map +1 -0
  218. package/dist/proof/evaluate.js +151 -0
  219. package/dist/proof/inspect.d.ts +12 -0
  220. package/dist/proof/inspect.d.ts.map +1 -0
  221. package/dist/proof/inspect.js +236 -0
  222. package/dist/proof/integrations.d.ts +35 -0
  223. package/dist/proof/integrations.d.ts.map +1 -0
  224. package/dist/proof/integrations.js +123 -0
  225. package/dist/proof/producers/junit-adapter.d.ts +26 -0
  226. package/dist/proof/producers/junit-adapter.d.ts.map +1 -0
  227. package/dist/proof/producers/junit-adapter.js +186 -0
  228. package/dist/{public → proof/producers}/playwright-case-id.d.ts +1 -1
  229. package/dist/proof/producers/playwright-case-id.d.ts.map +1 -0
  230. package/dist/{public → proof/producers}/playwright-case-id.js +3 -3
  231. package/dist/proof/producers/playwright-reporter.d.ts +27 -0
  232. package/dist/proof/producers/playwright-reporter.d.ts.map +1 -0
  233. package/dist/proof/producers/playwright-reporter.js +138 -0
  234. package/dist/proof/producers/tap-adapter.d.ts +10 -0
  235. package/dist/proof/producers/tap-adapter.d.ts.map +1 -0
  236. package/dist/proof/producers/tap-adapter.js +200 -0
  237. package/dist/proof/receipt-outcome.d.ts +2 -0
  238. package/dist/proof/receipt-outcome.d.ts.map +1 -0
  239. package/dist/proof/receipt-outcome.js +1 -0
  240. package/dist/public/diagnostic-usage.js +6 -6
  241. package/dist/public/distribution-parity.d.ts +7 -1
  242. package/dist/public/distribution-parity.d.ts.map +1 -1
  243. package/dist/public/distribution-parity.js +15 -10
  244. package/dist/public/impact/coverage-depth-quality.d.ts +1 -0
  245. package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
  246. package/dist/public/impact/coverage-depth-quality.js +1 -1
  247. package/dist/public/impact/diagnostics.d.ts.map +1 -1
  248. package/dist/public/impact/diagnostics.js +2 -2
  249. package/dist/public/impact/diff-meaning.d.ts +1 -0
  250. package/dist/public/impact/diff-meaning.d.ts.map +1 -1
  251. package/dist/public/impact/diff-meaning.js +5 -2
  252. package/dist/public/impact/full-kb-quality.d.ts +5 -2
  253. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  254. package/dist/public/impact/full-kb-quality.js +329 -64
  255. package/dist/public/operations/catalog.d.ts +447 -196
  256. package/dist/public/operations/catalog.d.ts.map +1 -1
  257. package/dist/public/operations/catalog.js +6 -4
  258. package/dist/public/operations/check-executor.d.ts.map +1 -1
  259. package/dist/public/operations/check-executor.js +3 -7
  260. package/dist/public/operations/contracts.d.ts +7 -0
  261. package/dist/public/operations/contracts.d.ts.map +1 -1
  262. package/dist/public/operations/contracts.js +31 -22
  263. package/dist/public/operations/discovery-entities.d.ts +3 -0
  264. package/dist/public/operations/discovery-entities.d.ts.map +1 -1
  265. package/dist/public/operations/discovery-entities.js +4 -0
  266. package/dist/public/operations/discovery-executors.d.ts +9 -9
  267. package/dist/public/operations/discovery-executors.d.ts.map +1 -1
  268. package/dist/public/operations/discovery-executors.js +17 -14
  269. package/dist/public/operations/index.d.ts +1 -1
  270. package/dist/public/operations/index.d.ts.map +1 -1
  271. package/dist/public/operations/index.js +1 -1
  272. package/dist/public/operations/migration-plan.d.ts +4 -3
  273. package/dist/public/operations/migration-plan.d.ts.map +1 -1
  274. package/dist/public/operations/migration-plan.js +23 -21
  275. package/dist/public/operations/node-ports.js +6 -6
  276. package/dist/public/operations/repair-plan.d.ts +3 -3
  277. package/dist/public/operations/repair-plan.d.ts.map +1 -1
  278. package/dist/public/operations/repair-plan.js +49 -19
  279. package/dist/public/operations/result-envelope.d.ts +1 -0
  280. package/dist/public/operations/result-envelope.d.ts.map +1 -1
  281. package/dist/public/operations/result-envelope.js +12 -10
  282. package/dist/public/operations/runtime-types.d.ts +5 -0
  283. package/dist/public/operations/runtime-types.d.ts.map +1 -1
  284. package/dist/public/operations/specs/check-rules.generated.d.ts +5 -0
  285. package/dist/public/operations/specs/check-rules.generated.d.ts.map +1 -0
  286. package/dist/public/operations/specs/check-rules.generated.js +34 -0
  287. package/dist/public/operations/specs/check.d.ts +7 -2
  288. package/dist/public/operations/specs/check.d.ts.map +1 -1
  289. package/dist/public/operations/specs/check.js +8 -20
  290. package/dist/public/operations/specs/mutation-schemas.d.ts +257 -163
  291. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  292. package/dist/public/operations/specs/mutation-schemas.js +15 -7
  293. package/dist/public/operations/specs/planning.d.ts +9 -0
  294. package/dist/public/operations/specs/planning.d.ts.map +1 -1
  295. package/dist/public/operations/specs/planning.js +6 -0
  296. package/dist/public/operations/specs/proof.d.ts +212 -0
  297. package/dist/public/operations/specs/proof.d.ts.map +1 -0
  298. package/dist/public/operations/specs/proof.js +30 -0
  299. package/dist/public/operations/specs/reporting.d.ts +19 -0
  300. package/dist/public/operations/specs/reporting.d.ts.map +1 -1
  301. package/dist/public/operations/specs/reporting.js +112 -12
  302. package/dist/public/operations/specs/upsert.d.ts +257 -163
  303. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  304. package/dist/public/operations/symbol-repair-plan.d.ts +11 -0
  305. package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -1
  306. package/dist/public/operations/symbol-repair-plan.js +118 -3
  307. package/dist/public/operations/types.d.ts +1 -1
  308. package/dist/public/operations/types.d.ts.map +1 -1
  309. package/dist/public/proof-fingerprint.d.ts +54 -0
  310. package/dist/public/proof-fingerprint.d.ts.map +1 -0
  311. package/dist/public/proof-fingerprint.js +141 -0
  312. package/dist/public/proof-protocol.d.ts +354 -0
  313. package/dist/public/proof-protocol.d.ts.map +1 -0
  314. package/dist/public/proof-protocol.js +454 -0
  315. package/dist/public/proof-receipt.d.ts +279 -0
  316. package/dist/public/proof-receipt.d.ts.map +1 -0
  317. package/dist/public/proof-receipt.js +377 -0
  318. package/dist/public/schemas/entity.d.ts.map +1 -1
  319. package/dist/public/schemas/entity.js +21 -7
  320. package/dist/public/skills/kibi-freshness/SKILL.md +1 -1
  321. package/dist/public/skills/kibi-usage/SKILL.md +41 -12
  322. package/dist/public/skills/kibi-usage/resources/operation-access.md +1 -1
  323. package/dist/public/skills/kibi-usage/resources/proof.md +105 -0
  324. package/dist/public/skills/kibi-usage/resources/workflows.md +6 -6
  325. package/dist/public/symbol-granularity.d.ts +3 -14
  326. package/dist/public/symbol-granularity.d.ts.map +1 -1
  327. package/dist/public/symbol-granularity.generated.d.ts +16 -0
  328. package/dist/public/symbol-granularity.generated.d.ts.map +1 -0
  329. package/dist/public/symbol-granularity.generated.js +20 -0
  330. package/dist/public/symbol-granularity.js +6 -47
  331. package/dist/public/telemetry-acceptance.d.ts +3 -77
  332. package/dist/public/telemetry-acceptance.d.ts.map +1 -1
  333. package/dist/public/telemetry-acceptance.js +4 -2
  334. package/dist/public/telemetry-remediation.js +1 -1
  335. package/dist/report/html-report.css +282 -0
  336. package/dist/report/html-report.d.ts +4 -2
  337. package/dist/report/html-report.d.ts.map +1 -1
  338. package/dist/report/html-report.js +37 -300
  339. package/dist/runtime/cli-runtime.d.ts +2 -0
  340. package/dist/runtime/cli-runtime.d.ts.map +1 -1
  341. package/dist/runtime/cli-runtime.js +14 -7
  342. package/dist/schemas/entity.schema.json +355 -215
  343. package/dist/search-ranking.d.ts +1 -0
  344. package/dist/search-ranking.d.ts.map +1 -1
  345. package/dist/search-ranking.js +3 -0
  346. package/dist/traceability/evidence-model.d.ts +28 -0
  347. package/dist/traceability/evidence-model.d.ts.map +1 -1
  348. package/dist/traceability/git-staged.d.ts +20 -0
  349. package/dist/traceability/git-staged.d.ts.map +1 -1
  350. package/dist/traceability/git-staged.js +145 -1
  351. package/dist/traceability/staged-diagnostics.d.ts +7 -0
  352. package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
  353. package/dist/traceability/staged-diagnostics.js +78 -7
  354. package/dist/traceability/staged-file-coverage.d.ts +33 -0
  355. package/dist/traceability/staged-file-coverage.d.ts.map +1 -0
  356. package/dist/traceability/staged-file-coverage.js +284 -0
  357. package/dist/traceability/staged-impact-contract.js +4 -4
  358. package/dist/traceability/staged-symbols-manifest.d.ts +13 -0
  359. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  360. package/dist/traceability/staged-symbols-manifest.js +138 -27
  361. package/dist/traceability/symbol-extract.d.ts +5 -0
  362. package/dist/traceability/symbol-extract.d.ts.map +1 -1
  363. package/dist/traceability/symbol-extract.js +1 -1
  364. package/dist/traceability/temp-kb.d.ts +2 -0
  365. package/dist/traceability/temp-kb.d.ts.map +1 -1
  366. package/dist/traceability/temp-kb.js +13 -4
  367. package/dist/types/entities.d.ts +5 -3
  368. package/dist/types/entities.d.ts.map +1 -1
  369. package/dist/utils/branch-resolver.d.ts +1 -0
  370. package/dist/utils/branch-resolver.d.ts.map +1 -1
  371. package/dist/utils/branch-resolver.js +7 -4
  372. package/dist/utils/branch-store.d.ts +6 -0
  373. package/dist/utils/branch-store.d.ts.map +1 -1
  374. package/dist/utils/branch-store.js +27 -0
  375. package/dist/utils/kb-paths.d.ts +1 -1
  376. package/dist/utils/kb-paths.d.ts.map +1 -1
  377. package/dist/utils/kb-paths.js +1 -1
  378. package/dist/utils/rule-registry.d.ts +1 -11
  379. package/dist/utils/rule-registry.d.ts.map +1 -1
  380. package/dist/utils/rule-registry.generated.d.ts +97 -0
  381. package/dist/utils/rule-registry.generated.d.ts.map +1 -0
  382. package/dist/utils/rule-registry.generated.js +125 -0
  383. package/dist/utils/rule-registry.js +12 -113
  384. package/dist/utils/strict-modeling.d.ts +1 -0
  385. package/dist/utils/strict-modeling.d.ts.map +1 -1
  386. package/dist/utils/strict-modeling.js +1 -1
  387. package/package.json +8 -11
  388. package/src/public/diagnostic-usage.ts +6 -6
  389. package/src/public/distribution-parity.ts +17 -10
  390. package/src/public/impact/coverage-depth-quality.ts +1 -1
  391. package/src/public/impact/diagnostics.ts +2 -1
  392. package/src/public/impact/diff-meaning.ts +11 -4
  393. package/src/public/impact/full-kb-quality.ts +463 -72
  394. package/src/public/operations/catalog.ts +10 -4
  395. package/src/public/operations/check-executor.ts +3 -7
  396. package/src/public/operations/contracts.ts +38 -22
  397. package/src/public/operations/discovery-entities.ts +7 -0
  398. package/src/public/operations/discovery-executors.ts +26 -23
  399. package/src/public/operations/index.ts +1 -1
  400. package/src/public/operations/migration-plan.ts +32 -25
  401. package/src/public/operations/node-ports.ts +6 -6
  402. package/src/public/operations/repair-plan.ts +60 -23
  403. package/src/public/operations/result-envelope.ts +15 -10
  404. package/src/public/operations/runtime-types.ts +5 -0
  405. package/src/public/operations/specs/check-rules.generated.ts +37 -0
  406. package/src/public/operations/specs/check.ts +12 -21
  407. package/src/public/operations/specs/mutation-schemas.ts +22 -9
  408. package/src/public/operations/specs/planning.ts +7 -0
  409. package/src/public/operations/specs/proof.ts +43 -0
  410. package/src/public/operations/specs/reporting.ts +140 -13
  411. package/src/public/operations/symbol-repair-plan.ts +163 -3
  412. package/src/public/operations/types.ts +1 -1
  413. package/src/public/proof-fingerprint.ts +216 -0
  414. package/src/public/proof-protocol-types.d.ts +96 -0
  415. package/src/public/proof-protocol.ts +589 -0
  416. package/src/public/proof-receipt.ts +499 -0
  417. package/src/public/schemas/entity.ts +26 -10
  418. package/src/public/skills/kibi-freshness/SKILL.md +1 -1
  419. package/src/public/skills/kibi-usage/SKILL.md +41 -12
  420. package/src/public/skills/kibi-usage/resources/operation-access.md +1 -1
  421. package/src/public/skills/kibi-usage/resources/proof.md +105 -0
  422. package/src/public/skills/kibi-usage/resources/workflows.md +6 -6
  423. package/src/public/symbol-granularity.generated.ts +41 -0
  424. package/src/public/symbol-granularity.ts +35 -60
  425. package/src/public/telemetry-acceptance-types.d.ts +98 -0
  426. package/src/public/telemetry-acceptance.ts +22 -100
  427. package/src/public/telemetry-remediation.ts +1 -1
  428. package/src/schemas/entity.schema.json +355 -215
  429. package/dist/cli-register-verification.d.ts +0 -3
  430. package/dist/cli-register-verification.d.ts.map +0 -1
  431. package/dist/cli-register-verification.js +0 -16
  432. package/dist/commands/verify.d.ts +0 -10
  433. package/dist/commands/verify.d.ts.map +0 -1
  434. package/dist/commands/verify.js +0 -126
  435. package/dist/operations/verification/ingest-verification.d.ts +0 -29
  436. package/dist/operations/verification/ingest-verification.d.ts.map +0 -1
  437. package/dist/operations/verification/ingest-verification.js +0 -192
  438. package/dist/public/operations/specs/verification.d.ts +0 -78
  439. package/dist/public/operations/specs/verification.d.ts.map +0 -1
  440. package/dist/public/operations/specs/verification.js +0 -62
  441. package/dist/public/playwright-case-id.d.ts.map +0 -1
  442. package/dist/public/verification-receipt.d.ts +0 -242
  443. package/dist/public/verification-receipt.d.ts.map +0 -1
  444. package/dist/public/verification-receipt.js +0 -296
  445. package/dist/verification/playwright-reporter.d.ts +0 -21
  446. package/dist/verification/playwright-reporter.d.ts.map +0 -1
  447. package/dist/verification/playwright-reporter.js +0 -114
  448. package/src/public/operations/specs/verification.ts +0 -78
  449. package/src/public/playwright-case-id.ts +0 -35
  450. package/src/public/verification-receipt.ts +0 -412
@@ -13,11 +13,21 @@
13
13
  */
14
14
  /**
15
15
  * Escape a string for use as a Prolog atom.
16
- * Doubles single-quote characters per ISO Prolog standard.
16
+ * Escapes backslashes/control characters and doubles single quotes per ISO
17
+ * Prolog syntax.
17
18
  */
18
19
  export function escapeAtom(value) {
19
20
  // implements REQ-009
20
- return value.replace(/'/g, "''");
21
+ return value
22
+ .replaceAll("\\", "\\\\")
23
+ .replaceAll("\u0007", "\\a")
24
+ .replaceAll("\u0008", "\\b")
25
+ .replaceAll("\u000c", "\\f")
26
+ .replaceAll("\n", "\\n")
27
+ .replaceAll("\r", "\\r")
28
+ .replaceAll("\t", "\\t")
29
+ .replaceAll("\u000b", "\\v")
30
+ .replaceAll("'", "''");
21
31
  }
22
32
  /**
23
33
  * Convert a string to a Prolog atom, quoting if necessary.
@@ -26,9 +36,7 @@ export function escapeAtom(value) {
26
36
  export function toPrologAtom(value) {
27
37
  // implements REQ-009
28
38
  const simplePrologAtom = /^[a-z][a-zA-Z0-9_]*$/;
29
- return simplePrologAtom.test(value)
30
- ? value
31
- : `'${value.replace(/'/g, "''")}'`;
39
+ return simplePrologAtom.test(value) ? value : `'${escapeAtom(value)}'`;
32
40
  }
33
41
  /**
34
42
  * Escape a string value for use inside a Prolog double-quoted string literal.
@@ -51,75 +59,99 @@ export function toPrologString(value) {
51
59
  */
52
60
  export function escapeAtomContent(value) {
53
61
  // implements REQ-009
54
- return value.replace(/'/g, "''");
62
+ return escapeAtom(value);
55
63
  }
64
+ /**
65
+ * Parse a Prolog list of list rows without decoding or normalizing columns.
66
+ * Malformed outer collections fail closed rather than returning a partial
67
+ * projection.
68
+ */
56
69
  export function parseListOfLists(listStr) {
57
70
  // implements REQ-009
58
- const cleaned = listStr.trim().replace(/^\[/, "").replace(/\]$/, "");
59
- if (cleaned === "") {
60
- return [];
71
+ return parseListRows(listStr).flatMap((row) => {
72
+ const scanned = scanTopLevelGeneral(row, ",");
73
+ if (!scanned.balanced)
74
+ return [];
75
+ const columns = scanned.parts.map((column) => column.trim());
76
+ return columns.length === 0 || (columns.length === 1 && columns[0] === "")
77
+ ? []
78
+ : [columns];
79
+ });
80
+ }
81
+ export function firstTwoDefinedParts(parts) {
82
+ const first = parts[0];
83
+ const second = parts[1];
84
+ if (first === undefined || second === undefined) {
85
+ return undefined;
61
86
  }
62
- const results = [];
63
- let depth = 0;
64
- let current = "";
65
- let currentList = [];
66
- for (let i = 0; i < cleaned.length; i++) {
67
- const char = cleaned[i];
68
- if (char === "[") {
69
- depth++;
70
- if (depth > 1)
71
- current += char;
72
- }
73
- else if (char === "]") {
74
- depth--;
75
- if (depth === 0) {
76
- if (current) {
77
- currentList.push(current.trim());
78
- current = "";
79
- }
80
- if (currentList.length > 0) {
81
- results.push(currentList);
82
- currentList = [];
83
- }
84
- }
85
- else {
86
- current += char;
87
- }
88
- }
89
- else if (char === "," && depth === 1) {
90
- if (current) {
91
- currentList.push(current.trim());
92
- current = "";
93
- }
94
- }
95
- else if (char === "," && depth === 0) {
96
- // Skip comma between lists
97
- }
98
- else {
99
- current += char;
87
+ return [first, second];
88
+ }
89
+ export function fallbackWhenPairMissing(pair, fallback) {
90
+ return pair === undefined ? fallback : null;
91
+ }
92
+ // implements REQ-core-persistence
93
+ // covered_by TEST-cli-prolog-codec
94
+ export function typedLiteralFromParts(parts, original) {
95
+ const pair = firstTwoDefinedParts(parts);
96
+ if (!pair) {
97
+ return original;
98
+ }
99
+ const [literalPart, datatypePart] = pair;
100
+ let literalValue = literalPart.trim();
101
+ const datatype = datatypePart.trim();
102
+ const decodedLiteral = decodePrologQuotedLiteral(literalValue, '"');
103
+ if (decodedLiteral !== undefined) {
104
+ literalValue = decodedLiteral;
105
+ }
106
+ else if (literalValue.startsWith('"') && literalValue.endsWith('"')) {
107
+ literalValue = literalValue.substring(1, literalValue.length - 1);
108
+ }
109
+ if (datatype.includes("#integer")) {
110
+ return Number.parseInt(literalValue, 10);
111
+ }
112
+ if (datatype.includes("#decimal") || datatype.includes("#double")) {
113
+ return Number.parseFloat(literalValue);
114
+ }
115
+ if (datatype.includes("#boolean")) {
116
+ return literalValue === "true";
117
+ }
118
+ if (literalValue.startsWith("[") && literalValue.endsWith("]")) {
119
+ const listContent = literalValue.substring(1, literalValue.length - 1);
120
+ if (listContent === "") {
121
+ return [];
100
122
  }
123
+ return splitTopLevelGeneral(listContent, ",").map((item) => item.trim());
101
124
  }
102
- return results;
125
+ return literalValue;
103
126
  }
104
- export function parseEntityFromBinding(
105
- // implements REQ-009
106
- bindingStr) {
107
- const cleaned = bindingStr.trim().replace(/^\[/, "").replace(/\]$/, "");
108
- const parts = splitTopLevelGeneral(cleaned, ",");
127
+ export function fileUriLeaf(value) {
128
+ const lastSlash = value.lastIndexOf("/");
129
+ if (lastSlash !== -1) {
130
+ return value.substring(lastSlash + 1);
131
+ }
132
+ return value;
133
+ }
134
+ export function entityFromBindingParts(parts) {
109
135
  if (parts.length < 3) {
110
136
  return {};
111
137
  }
112
- const idPart = parts[0];
113
- const typePart = parts[1];
114
- if (idPart === undefined || typePart === undefined) {
138
+ const pair = firstTwoDefinedParts(parts);
139
+ if (!pair) {
115
140
  return {};
116
141
  }
142
+ const [idPart, typePart] = pair;
117
143
  const id = idPart.trim();
118
144
  const type = typePart.trim();
119
145
  const propsStr = parts.slice(2).join(",").trim();
120
146
  const props = parsePropertyList(propsStr);
121
147
  return { ...props, id: normalizeEntityId(stripOuterQuotes(id)), type };
122
148
  }
149
+ export function parseEntityFromBinding(
150
+ // implements REQ-009
151
+ bindingStr) {
152
+ const cleaned = bindingStr.trim().replace(/^\[/, "").replace(/\]$/, "");
153
+ return entityFromBindingParts(splitTopLevelGeneral(cleaned, ","));
154
+ }
123
155
  export function parseEntityFromList(data) {
124
156
  // implements REQ-009
125
157
  if (data.length < 3) {
@@ -160,8 +192,9 @@ export function parsePropertyList(propsStr) {
160
192
  let parsed = parsePrologValue(value);
161
193
  if ((key === "rule_ir" ||
162
194
  key === "semantic_inventory" ||
163
- key === "verification_receipts" ||
164
- key === "verification_contract") &&
195
+ key === "proof_receipts" ||
196
+ key === "proof_contract" ||
197
+ key === "proof_bindings") &&
165
198
  typeof parsed === "string") {
166
199
  try {
167
200
  parsed = JSON.parse(parsed);
@@ -204,57 +237,22 @@ export function parsePrologValue(valueInput) {
204
237
  const innerContent = value.substring(innerStart, innerEnd);
205
238
  const parts = splitTopLevelGeneral(innerContent, ",");
206
239
  if (parts.length >= 2) {
207
- const literalPart = parts[0];
208
- const datatypePart = parts[1];
209
- if (literalPart === undefined || datatypePart === undefined) {
210
- return value;
211
- }
212
- let literalValue = literalPart.trim();
213
- const datatype = datatypePart.trim();
214
- if (literalValue.startsWith('"') && literalValue.endsWith('"')) {
215
- literalValue = literalValue.substring(1, literalValue.length - 1);
216
- }
217
- // Parse typed literals based on datatype
218
- if (datatype.includes("#integer")) {
219
- return Number.parseInt(literalValue, 10);
220
- }
221
- if (datatype.includes("#decimal") || datatype.includes("#double")) {
222
- return Number.parseFloat(literalValue);
223
- }
224
- if (datatype.includes("#boolean")) {
225
- return literalValue === "true";
226
- }
227
- // Handle array notation for string values
228
- if (literalValue.startsWith("[") && literalValue.endsWith("]")) {
229
- const listContent = literalValue.substring(1, literalValue.length - 1);
230
- if (listContent === "") {
231
- return [];
232
- }
233
- return splitTopLevelGeneral(listContent, ",").map((item) => item.trim());
234
- }
235
- return literalValue;
240
+ return typedLiteralFromParts(parts, value);
236
241
  }
237
242
  }
238
243
  // Handle URI
239
244
  if (value.startsWith("file:///")) {
240
- const lastSlash = value.lastIndexOf("/");
241
- if (lastSlash !== -1) {
242
- return value.substring(lastSlash + 1);
243
- }
244
- return value;
245
+ return fileUriLeaf(value);
245
246
  }
246
247
  // Handle quoted string
247
248
  if (value.startsWith('"') && value.endsWith('"')) {
248
- try {
249
- return JSON.parse(value);
250
- }
251
- catch {
252
- return value.substring(1, value.length - 1);
253
- }
249
+ return (decodePrologQuotedLiteral(value, '"') ??
250
+ value.substring(1, value.length - 1));
254
251
  }
255
252
  // Handle quoted atom
256
253
  if (value.startsWith("'") && value.endsWith("'")) {
257
- return value.substring(1, value.length - 1);
254
+ return (decodePrologQuotedLiteral(value, "'") ??
255
+ value.substring(1, value.length - 1));
258
256
  }
259
257
  // Handle list
260
258
  if (value.startsWith("[") && value.endsWith("]")) {
@@ -271,42 +269,66 @@ export function parsePrologValue(valueInput) {
271
269
  }
272
270
  export function splitTopLevelGeneral(str, delimiter) {
273
271
  // implements REQ-009
272
+ return scanTopLevelGeneral(str, delimiter).parts;
273
+ }
274
+ function scanTopLevelGeneral(str, delimiter) {
274
275
  const results = [];
275
276
  let current = "";
276
- let depth = 0;
277
- let inDoubleQuotes = false;
278
- let inSingleQuotes = false;
277
+ let quote = null;
278
+ const delimiters = [];
279
+ let balanced = true;
279
280
  for (let i = 0; i < str.length; i++) {
280
281
  const char = str[i];
281
- const prevChar = i > 0 ? str[i - 1] : "";
282
- if (char === '"' && !inSingleQuotes && prevChar !== "\\") {
283
- inDoubleQuotes = !inDoubleQuotes;
282
+ if (quote !== null) {
284
283
  current += char;
284
+ if (char === "\\") {
285
+ const escaped = str[i + 1];
286
+ if (escaped !== undefined) {
287
+ current += escaped;
288
+ i++;
289
+ }
290
+ }
291
+ else if (char === quote) {
292
+ const doubledPrologQuote = quote === "'" && str[i + 1] === "'";
293
+ if (doubledPrologQuote) {
294
+ current += str[i + 1] ?? "";
295
+ i++;
296
+ }
297
+ else {
298
+ quote = null;
299
+ }
300
+ }
301
+ continue;
285
302
  }
286
- else if (char === "'" && !inDoubleQuotes && prevChar !== "\\") {
287
- inSingleQuotes = !inSingleQuotes;
303
+ if (char === "'" || char === '"') {
304
+ quote = char;
288
305
  current += char;
306
+ continue;
289
307
  }
290
- else if (!inDoubleQuotes &&
291
- !inSingleQuotes &&
292
- (char === "[" || char === "(")) {
293
- depth++;
308
+ if (char === "[" || char === "(" || char === "{") {
309
+ delimiters.push(char);
294
310
  current += char;
311
+ continue;
295
312
  }
296
- else if (!inDoubleQuotes &&
297
- !inSingleQuotes &&
298
- (char === "]" || char === ")")) {
299
- depth--;
313
+ if (char === "]" || char === ")" || char === "}") {
314
+ const expectedOpening = char === "]" ? "[" : char === ")" ? "(" : "{";
315
+ if (delimiters.at(-1) !== expectedOpening) {
316
+ balanced = false;
317
+ }
318
+ else {
319
+ delimiters.pop();
320
+ }
300
321
  current += char;
322
+ continue;
301
323
  }
302
- else if (!inDoubleQuotes &&
303
- !inSingleQuotes &&
304
- depth === 0 &&
305
- char === delimiter) {
324
+ if (delimiters.length === 0 &&
325
+ delimiter.length > 0 &&
326
+ str.startsWith(delimiter, i)) {
306
327
  if (current) {
307
328
  results.push(current);
308
329
  current = "";
309
330
  }
331
+ i += delimiter.length - 1;
310
332
  }
311
333
  else {
312
334
  current += char;
@@ -315,7 +337,10 @@ export function splitTopLevelGeneral(str, delimiter) {
315
337
  if (current) {
316
338
  results.push(current);
317
339
  }
318
- return results;
340
+ return {
341
+ parts: results,
342
+ balanced: balanced && quote === null && delimiters.length === 0,
343
+ };
319
344
  }
320
345
  export function splitTopLevel(str, delimiter) {
321
346
  // implements REQ-009
@@ -323,14 +348,17 @@ export function splitTopLevel(str, delimiter) {
323
348
  }
324
349
  function stripOuterQuotes(value) {
325
350
  if (value.startsWith("'") && value.endsWith("'")) {
326
- return value.slice(1, -1);
351
+ return decodePrologQuotedLiteral(value, "'") ?? value.slice(1, -1);
327
352
  }
328
353
  if (value.startsWith('"') && value.endsWith('"')) {
329
- return value.slice(1, -1);
354
+ return decodePrologQuotedLiteral(value, '"') ?? value.slice(1, -1);
330
355
  }
331
356
  return value;
332
357
  }
333
- function normalizeEntityId(value) {
358
+ export function normalizeEntityId(value) {
359
+ if (value.startsWith("kb:entity/")) {
360
+ return value.slice("kb:entity/".length);
361
+ }
334
362
  if (!value.startsWith("file:///")) {
335
363
  return value;
336
364
  }
@@ -389,37 +417,26 @@ function parseListRows(raw) {
389
417
  if (trimmed === "[]" || trimmed.length === 0) {
390
418
  return [];
391
419
  }
420
+ if (!trimmed.startsWith("[") || !trimmed.endsWith("]")) {
421
+ return [];
422
+ }
392
423
  const content = unwrapList(trimmed);
393
424
  if (content.length === 0) {
394
425
  return [];
395
426
  }
427
+ const scanned = scanTopLevelGeneral(content, ",");
428
+ if (!scanned.balanced) {
429
+ return [];
430
+ }
396
431
  const rows = [];
397
- let depth = 0;
398
- let current = "";
399
- for (let i = 0; i < content.length; i++) {
400
- const ch = content[i];
401
- if (ch === "[") {
402
- depth++;
403
- if (depth > 1) {
404
- current += ch;
405
- }
406
- continue;
407
- }
408
- if (ch === "]") {
409
- depth--;
410
- if (depth === 0) {
411
- rows.push(current.trim());
412
- current = "";
413
- }
414
- else {
415
- current += ch;
416
- }
417
- continue;
418
- }
419
- if (ch === "," && depth === 0) {
432
+ for (const term of scanned.parts) {
433
+ const row = term.trim();
434
+ if (row.length === 0)
420
435
  continue;
436
+ if (!row.startsWith("[") || !row.endsWith("]")) {
437
+ return [];
421
438
  }
422
- current += ch;
439
+ rows.push(row.slice(1, -1).trim());
423
440
  }
424
441
  return rows;
425
442
  }
@@ -462,12 +479,12 @@ export function parseViolationRows(raw) {
462
479
  suggestionPart === undefined) {
463
480
  continue;
464
481
  }
465
- const rule = rulePart.trim().replace(/^'|'$/g, "");
466
- const entityId = entityIdPart.trim().replace(/^'|'$/g, "");
467
- const description = descriptionPart.trim().replace(/^"|"$/g, "");
468
- const suggestion = suggestionPart.trim().replace(/^"|"$/g, "");
482
+ const rule = stripQuotes(rulePart.trim());
483
+ const entityId = stripQuotes(entityIdPart.trim());
484
+ const description = stripQuotes(descriptionPart.trim());
485
+ const suggestion = stripQuotes(suggestionPart.trim());
469
486
  const source = parts.length >= 5
470
- ? parts[4]?.trim().replace(/^'|'$/g, "") || undefined
487
+ ? stripQuotes(parts[4]?.trim() ?? "") || undefined
471
488
  : undefined;
472
489
  violations.push({
473
490
  rule,
@@ -481,10 +498,108 @@ export function parseViolationRows(raw) {
481
498
  }
482
499
  function stripQuotes(value) {
483
500
  if (value.startsWith("'") && value.endsWith("'")) {
484
- return value.slice(1, -1);
501
+ return decodePrologQuotedLiteral(value, "'") ?? value.slice(1, -1);
485
502
  }
486
503
  if (value.startsWith('"') && value.endsWith('"')) {
487
- return value.slice(1, -1);
504
+ return decodePrologQuotedLiteral(value, '"') ?? value.slice(1, -1);
488
505
  }
489
506
  return value;
490
507
  }
508
+ /** Decode one Prolog quoted literal without decoding an escaped value twice. */
509
+ function decodePrologQuotedLiteral(value, quote) {
510
+ if (!value.startsWith(quote) || !value.endsWith(quote) || value.length < 2) {
511
+ return undefined;
512
+ }
513
+ const content = value.slice(1, -1);
514
+ let decoded = "";
515
+ for (let index = 0; index < content.length; index++) {
516
+ const char = content[index];
517
+ if (char === undefined)
518
+ continue;
519
+ if (quote === "'" && char === "'") {
520
+ if (content[index + 1] !== "'")
521
+ return undefined;
522
+ decoded += "'";
523
+ index++;
524
+ continue;
525
+ }
526
+ if (char !== "\\") {
527
+ decoded += char;
528
+ continue;
529
+ }
530
+ const escaped = content[index + 1];
531
+ if (escaped === undefined)
532
+ return undefined;
533
+ index++;
534
+ switch (escaped) {
535
+ case "a":
536
+ decoded += "\u0007";
537
+ break;
538
+ case "b":
539
+ decoded += "\b";
540
+ break;
541
+ case "e":
542
+ decoded += "\u001b";
543
+ break;
544
+ case "f":
545
+ decoded += "\f";
546
+ break;
547
+ case "n":
548
+ decoded += "\n";
549
+ break;
550
+ case "r":
551
+ decoded += "\r";
552
+ break;
553
+ case "t":
554
+ decoded += "\t";
555
+ break;
556
+ case "v":
557
+ decoded += "\u000b";
558
+ break;
559
+ case "\\":
560
+ decoded += "\\";
561
+ break;
562
+ case "'":
563
+ decoded += "'";
564
+ break;
565
+ case '"':
566
+ decoded += '"';
567
+ break;
568
+ case "u": {
569
+ const code = content.slice(index + 1, index + 5);
570
+ if (!/^[0-9A-Fa-f]{4}$/.test(code))
571
+ return undefined;
572
+ decoded += String.fromCodePoint(Number.parseInt(code, 16));
573
+ index += 4;
574
+ break;
575
+ }
576
+ case "U": {
577
+ const code = content.slice(index + 1, index + 9);
578
+ if (!/^[0-9A-Fa-f]{8}$/.test(code))
579
+ return undefined;
580
+ const codePoint = Number.parseInt(code, 16);
581
+ if (codePoint > 0x10ffff)
582
+ return undefined;
583
+ decoded += String.fromCodePoint(codePoint);
584
+ index += 8;
585
+ break;
586
+ }
587
+ case "x": {
588
+ let end = index + 1;
589
+ while (/[0-9A-Fa-f]/.test(content[end] ?? ""))
590
+ end++;
591
+ if (end === index + 1 || content[end] !== "\\")
592
+ return undefined;
593
+ const codePoint = Number.parseInt(content.slice(index + 1, end), 16);
594
+ if (codePoint > 0x10ffff)
595
+ return undefined;
596
+ decoded += String.fromCodePoint(codePoint);
597
+ index = end;
598
+ break;
599
+ }
600
+ default:
601
+ return undefined;
602
+ }
603
+ }
604
+ return decoded;
605
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Structured transport for Prolog errors.
3
+ *
4
+ * kb.pl throws ISO-style terms (`error(permission_error(save, kb,
5
+ * stale_snapshot), Context)`). The query wrappers in prolog.ts write the
6
+ * thrown term — quoted, depth-bounded — to stderr behind this sentinel so
7
+ * TypeScript can classify the term structurally instead of re-parsing SWI's
8
+ * human-readable print_message output. Text heuristics remain only as a
9
+ * fallback for errors that never pass through a wrapper (startup failures,
10
+ * older kibi-core versions).
11
+ */
12
+ export declare const PROLOG_ERROR_TERM_PREFIX = "__KIBI_ERROR__:";
13
+ export type PrologErrorCode = "stale_snapshot" | "audit_locked" | "permission_denied" | "entity_not_found" | "invalid_relationship" | "contradiction" | "validation_error";
14
+ export type PrologErrorRelationship = Readonly<{
15
+ relType: string;
16
+ fromType: string;
17
+ toType: string;
18
+ }>;
19
+ export type PrologErrorConflict = Readonly<{
20
+ reason: string;
21
+ otherId: string;
22
+ }>;
23
+ export type PrologStoreLockOwner = Readonly<{
24
+ pid?: number;
25
+ workspaceRoot?: string;
26
+ bootId?: string;
27
+ startedAt?: string;
28
+ }>;
29
+ export type PrologStoreLockedDetail = Readonly<{
30
+ owner: PrologStoreLockOwner | null;
31
+ lockDirectory: string;
32
+ originalError?: string;
33
+ }>;
34
+ export type PrologErrorRecord = Readonly<{
35
+ code: PrologErrorCode;
36
+ message: string;
37
+ entityId?: string;
38
+ role?: "source" | "target";
39
+ relationship?: PrologErrorRelationship;
40
+ conflicts?: readonly PrologErrorConflict[];
41
+ storeLocked?: PrologStoreLockedDetail;
42
+ }>;
43
+ /** Extract the first structured error term line from raw stderr text. */
44
+ export declare function extractPrologErrorRecord(text: string): PrologErrorRecord | null;
45
+ /** Parse a written error term such as `error(permission_error(...), Context)`. */
46
+ export declare function parsePrologErrorTerm(termText: string): PrologErrorRecord | null;
47
+ //# sourceMappingURL=error-terms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-terms.d.ts","sourceRoot":"","sources":["../../src/prolog/error-terms.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,wBAAwB,oBAAoB,CAAC;AAG1D,MAAM,MAAM,eAAe,GACvB,gBAAgB,GAChB,cAAc,GACd,mBAAmB,GACnB,kBAAkB,GAClB,sBAAsB,GACtB,eAAe,GACf,kBAAkB,CAAC;AAGvB,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAGH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAGH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3B,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC,SAAS,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC3C,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEH,yEAAyE;AAEzE,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,GACX,iBAAiB,GAAG,IAAI,CAK1B;AAED,kFAAkF;AAElF,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,GACf,iBAAiB,GAAG,IAAI,CAsG1B"}