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
@@ -0,0 +1,117 @@
1
+ /*
2
+ Kibi — repo-local, per-branch, queryable long-term memory for software projects
3
+ Copyright (C) 2026 Piotr Franczyk
4
+
5
+ This program is free software: you can redistribute it and/or modify
6
+ it under the terms of the GNU Affero General Public License as published by
7
+ the Free Software Foundation, either version 3 of the License, or
8
+ (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU Affero General Public License for more details.
14
+
15
+ You should have received a copy of the GNU Affero General Public License
16
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { dump as dumpYaml } from "js-yaml";
19
+ /**
20
+ * Remove a top-level frontmatter block (`key:` plus its nested lines) from a
21
+ * markdown document, leaving every other byte untouched. Returns the patched
22
+ * content, or null when the content is not a well-formed frontmatter
23
+ * document the remover can safely splice.
24
+ *
25
+ * Used by proof maintenance to drop legacy `verification_receipts` blocks
26
+ * once a `proof_contract` exists, without canonicalizing the document.
27
+ */
28
+ // implements REQ-kibi-proof-evidence-protocol
29
+ export function removeFrontmatterBlock(content, key) {
30
+ const lines = content.match(/[^\n]*\n|[^\n]+$/g) ?? [];
31
+ if (lines.length === 0 || lines[0]?.trim() !== "---")
32
+ return null;
33
+ let closingIndex = -1;
34
+ for (let index = 1; index < lines.length; index++) {
35
+ if (lines[index]?.trim() === "---") {
36
+ closingIndex = index;
37
+ break;
38
+ }
39
+ }
40
+ if (closingIndex === -1)
41
+ return null;
42
+ let blockStart = -1;
43
+ let blockEnd = closingIndex;
44
+ for (let index = 1; index < closingIndex; index++) {
45
+ if (new RegExp(`^${key}\\s*:`).test(lines[index] ?? "")) {
46
+ blockStart = index;
47
+ break;
48
+ }
49
+ }
50
+ if (blockStart === -1)
51
+ return null;
52
+ for (let index = blockStart + 1; index < closingIndex; index++) {
53
+ const line = lines[index] ?? "";
54
+ if (/^[A-Za-z_][A-Za-z0-9_-]*\s*:/.test(line)) {
55
+ blockEnd = index;
56
+ break;
57
+ }
58
+ }
59
+ return [...lines.slice(0, blockStart), ...lines.slice(blockEnd)].join("");
60
+ }
61
+ /**
62
+ * Patch the `proof_receipts` frontmatter block of an authored test document
63
+ * without re-rendering anything else.
64
+ *
65
+ * Receipt ingest used to route every append through the canonical entity
66
+ * renderer, which re-dumps the whole frontmatter: inline tag lists became
67
+ * block lists, timestamps gained milliseconds, and so on. Those non-receipt
68
+ * edits are not stripped by the workspace snapshotter, so the snapshot hash
69
+ * changed on the first ingest that touched a hand-authored document and every
70
+ * later integration in the same `kibi prove --all` run refused with
71
+ * "changed the tracked workspace". This patcher splices ONLY the receipts
72
+ * block, leaving the rest of the document byte-for-byte identical.
73
+ *
74
+ * Returns null when the content is not a well-formed frontmatter document the
75
+ * patcher can safely splice; the caller then falls back to the canonical
76
+ * render.
77
+ */
78
+ // implements REQ-kibi-proof-evidence-protocol
79
+ export function patchReceiptsIntoDocument(content, receipts) {
80
+ const lines = content.match(/[^\n]*\n|[^\n]+$/g) ?? [];
81
+ if (lines.length === 0 || lines[0]?.trim() !== "---")
82
+ return null;
83
+ let closingIndex = -1;
84
+ for (let index = 1; index < lines.length; index++) {
85
+ if (lines[index]?.trim() === "---") {
86
+ closingIndex = index;
87
+ break;
88
+ }
89
+ }
90
+ if (closingIndex === -1)
91
+ return null;
92
+ let receiptsStart = -1;
93
+ let receiptsEnd = closingIndex;
94
+ for (let index = 1; index < closingIndex; index++) {
95
+ if (/^proof_receipts\s*:/.test(lines[index] ?? "")) {
96
+ receiptsStart = index;
97
+ break;
98
+ }
99
+ }
100
+ if (receiptsStart !== -1) {
101
+ for (let index = receiptsStart + 1; index < closingIndex; index++) {
102
+ const line = lines[index] ?? "";
103
+ if (/^[A-Za-z_][A-Za-z0-9_-]*\s*:/.test(line)) {
104
+ receiptsEnd = index;
105
+ break;
106
+ }
107
+ }
108
+ }
109
+ const block = dumpYaml({ proof_receipts: receipts.map((receipt) => ({ ...receipt })) }, { noRefs: true, lineWidth: -1, sortKeys: false });
110
+ const blockLines = block.match(/[^\n]*\n|[^\n]+$/g) ?? [];
111
+ const spliced = [
112
+ ...lines.slice(0, receiptsStart === -1 ? closingIndex : receiptsStart),
113
+ ...blockLines,
114
+ ...lines.slice(receiptsEnd),
115
+ ];
116
+ return spliced.join("");
117
+ }
@@ -1,5 +1,6 @@
1
1
  import type { SemanticAdvisorAnalysisResult, SemanticAdvisorInput } from "./types.js";
2
2
  export declare const SEMANTIC_ADVISOR_VERSION = "semantic-advisor-v2";
3
3
  export { semanticClaimKey } from "./clauses.js";
4
+ export declare function stringLogicClaims(value: unknown): string[];
4
5
  export declare function analyzeSemanticAdvisorInput(input: SemanticAdvisorInput): SemanticAdvisorAnalysisResult;
5
6
  //# sourceMappingURL=analyze-prose.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-prose.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/analyze-prose.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EACV,6BAA6B,EAC7B,oBAAoB,EAWrB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AA81BhD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,oBAAoB,GAC1B,6BAA6B,CA+D/B"}
1
+ {"version":3,"file":"analyze-prose.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/analyze-prose.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EACV,6BAA6B,EAC7B,oBAAoB,EAWrB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAI1D;AAo3BD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,oBAAoB,GAC1B,6BAA6B,CA+D/B"}
@@ -13,6 +13,11 @@ import { isRecord, payloadHash, propertiesOf, relationship, semanticClausesOf, s
13
13
  import { detectStrictSuggestion } from "./strict-rules.js";
14
14
  export const SEMANTIC_ADVISOR_VERSION = "semantic-advisor-v2";
15
15
  export { semanticClaimKey } from "./clauses.js";
16
+ export function stringLogicClaims(value) {
17
+ return Array.isArray(value)
18
+ ? value.filter((entry) => typeof entry === "string")
19
+ : [];
20
+ }
16
21
  const SIGNAL_PATTERNS = [
17
22
  {
18
23
  kind: "numeric_cardinality",
@@ -289,8 +294,9 @@ function modelingSuggestions(payload, modeled, clauses, interpretations) {
289
294
  return suggestions;
290
295
  }
291
296
  function withClauseProvenance(suggestion, clause, clauses, expectedClaimKeys, statement, sourceField) {
292
- const clauseOffset = statement.indexOf(clause.text);
293
- const clauseSpan = utf8Span(statement || clause.text, clauseOffset >= 0 ? clauseOffset : 0, clauseOffset >= 0 ? clauseOffset + clause.text.length : clause.text.length);
297
+ const clauseLocation = propositionSpan(statement, clause, 0);
298
+ const clauseText = clauseLocation.sourceText;
299
+ const clauseSpan = clauseLocation.span;
294
300
  const status = suggestion.kind === "ambiguity_observation"
295
301
  ? "ambiguous"
296
302
  : suggestion.kind === "ontology_gap"
@@ -309,7 +315,7 @@ function withClauseProvenance(suggestion, clause, clauses, expectedClaimKeys, st
309
315
  : "missing";
310
316
  return {
311
317
  claim_key: entry.claim_key,
312
- claim_text: entry.text,
318
+ claim_text: located.sourceText,
313
319
  role,
314
320
  status: entryStatus,
315
321
  span: located.span,
@@ -334,9 +340,7 @@ function withClauseProvenance(suggestion, clause, clauses, expectedClaimKeys, st
334
340
  if (properties === null)
335
341
  return step;
336
342
  if (step.type === "req") {
337
- const existing = Array.isArray(properties.logic_claims)
338
- ? properties.logic_claims.filter((value) => typeof value === "string")
339
- : [];
343
+ const existing = stringLogicClaims(properties.logic_claims);
340
344
  return {
341
345
  ...step,
342
346
  properties: {
@@ -357,7 +361,7 @@ function withClauseProvenance(suggestion, clause, clauses, expectedClaimKeys, st
357
361
  properties: {
358
362
  ...properties,
359
363
  claim_key: clause.claim_key,
360
- claim_text: clause.text,
364
+ claim_text: clauseText,
361
365
  claim_span_start: clauseSpan.start,
362
366
  claim_span_end: clauseSpan.end,
363
367
  },
@@ -366,14 +370,14 @@ function withClauseProvenance(suggestion, clause, clauses, expectedClaimKeys, st
366
370
  return {
367
371
  ...suggestion,
368
372
  claim_key: clause.claim_key,
369
- claim_text: clause.text,
373
+ claim_text: clauseText,
370
374
  applyPlan,
371
375
  ...(suggestion.kind === "predicate" && suggestion.relationshipPlan !== null
372
376
  ? {
373
377
  relationshipPlan: {
374
378
  ...suggestion.relationshipPlan,
375
379
  claimKey: clause.claim_key,
376
- claimText: clause.text,
380
+ claimText: clauseText,
377
381
  logicClaims: expectedClaimKeys,
378
382
  semanticClauses: clauses.map(({ text }) => text),
379
383
  semanticInventory,
@@ -387,7 +391,7 @@ function withClauseProvenance(suggestion, clause, clauses, expectedClaimKeys, st
387
391
  relationshipPlan: {
388
392
  ...suggestion.relationshipPlan,
389
393
  claimKey: clause.claim_key,
390
- claimText: clause.text,
394
+ claimText: clauseText,
391
395
  logicClaims: expectedClaimKeys,
392
396
  semanticClauses: clauses.map(({ text }) => text),
393
397
  semanticInventory,
@@ -554,12 +558,36 @@ function shadowAnalysis(text, interpretations) {
554
558
  }));
555
559
  }
556
560
  function propositionSpan(text, clause, cursor) {
557
- const exact = text.indexOf(clause.text, cursor);
561
+ const located = locateSourceText(text, clause.text, cursor);
562
+ return {
563
+ span: utf8Span(text, located.start, located.end),
564
+ next: Math.max(cursor, located.end),
565
+ sourceText: text.slice(located.start, located.end),
566
+ };
567
+ }
568
+ function escapeRegExp(value) {
569
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
570
+ }
571
+ /**
572
+ * Locate canonical claim text while accepting source-only whitespace layout.
573
+ * The caller receives the authored slice so strict ingestion can compare the
574
+ * span with the claim text without rewriting the source document.
575
+ */
576
+ function locateSourceText(source, claimText, cursor) {
577
+ const canonicalPattern = escapeRegExp(claimText).replace(/\s+/g, "\\s+");
578
+ const match = new RegExp(canonicalPattern).exec(source.slice(cursor));
579
+ if (match?.index !== undefined) {
580
+ const start = cursor + match.index;
581
+ return { start, end: start + match[0].length };
582
+ }
583
+ const exact = source.indexOf(claimText, cursor);
558
584
  const start = exact >= 0 ? exact : cursor;
559
- const end = exact >= 0
560
- ? exact + clause.text.length
561
- : Math.min(text.length, start + clause.text.length);
562
- return { span: utf8Span(text, start, end), next: Math.max(cursor, end) };
585
+ return {
586
+ start,
587
+ end: exact >= 0
588
+ ? exact + claimText.length
589
+ : Math.min(source.length, start + claimText.length),
590
+ };
563
591
  }
564
592
  function interpretationResults(interpretations, clauses, statement) {
565
593
  if (interpretations === undefined)
@@ -582,16 +610,8 @@ function interpretationResults(interpretations, clauses, statement) {
582
610
  (candidate.span.start < 0 || candidate.span.end < candidate.span.start))
583
611
  errors.push("interpretation span is invalid");
584
612
  if (clause && candidate.span) {
585
- const candidateStart = statement.indexOf(candidate.claim_text);
586
- const clauseStart = statement.indexOf(clause.text);
587
- const sourceStart = candidateStart >= 0 ? candidateStart : clauseStart;
588
- const sourceEnd = sourceStart >= 0
589
- ? sourceStart +
590
- (candidateStart >= 0
591
- ? candidate.claim_text.length
592
- : clause.text.length)
593
- : 0;
594
- const expectedSpan = utf8Span(statement, Math.max(0, sourceStart), Math.max(0, sourceEnd));
613
+ const candidateLocation = locateSourceText(statement, candidate.claim_text, 0);
614
+ const expectedSpan = utf8Span(statement, candidateLocation.start, candidateLocation.end);
595
615
  if (candidate.span.start !== expectedSpan.start ||
596
616
  candidate.span.end !== expectedSpan.end)
597
617
  errors.push(`interpretation span for ${candidate.claim_key} does not match the exact UTF-8 proposition span`);
@@ -671,7 +691,7 @@ function propositionInventory(statement, clauses, suggestions, interpretations,
671
691
  }
672
692
  return {
673
693
  claim_key: clause.claim_key,
674
- claim_text: clause.text,
694
+ claim_text: located.sourceText,
675
695
  role,
676
696
  status,
677
697
  span: located.span,
@@ -1 +1 @@
1
- {"version":3,"file":"clauses.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/clauses.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;CACjC,CAAC,CAAC;AAKH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAW7D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AA4BD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAClC,SAAS,cAAc,EAAE,CAgB3B"}
1
+ {"version":3,"file":"clauses.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/clauses.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;CACjC,CAAC,CAAC;AAKH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAW7D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AA4BD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAClC,SAAS,cAAc,EAAE,CA4B3B"}
@@ -46,11 +46,24 @@ export function extractSemanticClauses(text, suppliedClauses) {
46
46
  if (suppliedClauses !== undefined && normalized.length === 0) {
47
47
  throw new Error("Semantic advisor clauses must contain at least one non-empty atomic claim");
48
48
  }
49
- return normalized.map((clause, index) => ({
50
- claim_key: semanticClaimKey(clause),
51
- text: clause,
52
- index,
53
- normative: NORMATIVE_PATTERN.test(clause),
54
- source,
55
- }));
49
+ // A repeated sentence has one logical identity. Keep the first source
50
+ // occurrence for its source span and provenance; retaining repeated claim
51
+ // keys would make the inventory impossible to persist because logic_claims
52
+ // is a set-like manifest and grounding is one-to-one.
53
+ const seen = new Set();
54
+ return normalized.flatMap((clause, index) => {
55
+ const identity = clause.toLowerCase();
56
+ if (seen.has(identity))
57
+ return [];
58
+ seen.add(identity);
59
+ return [
60
+ {
61
+ claim_key: semanticClaimKey(clause),
62
+ text: clause,
63
+ index,
64
+ normative: NORMATIVE_PATTERN.test(clause),
65
+ source,
66
+ },
67
+ ];
68
+ });
56
69
  }
@@ -1,4 +1,6 @@
1
1
  import { type Payload } from "./shared.js";
2
2
  import type { SemanticModelingSuggestion } from "./types.js";
3
+ export declare function numberToken(value: string): number | null;
4
+ export declare function whenParsedNumber<T>(value: number | null, then: (value: number) => T): T | null;
3
5
  export declare function detectCountStrictSuggestion(payload: Payload, statement: string): SemanticModelingSuggestion | null;
4
6
  //# sourceMappingURL=strict-count-rules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"strict-count-rules.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/strict-count-rules.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAKb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAuB7D,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,GAChB,0BAA0B,GAAG,IAAI,CA4DnC"}
1
+ {"version":3,"file":"strict-count-rules.d.ts","sourceRoot":"","sources":["../../../src/operations/semantic-advisor/strict-count-rules.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAKb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAgB7D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIxD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GACzB,CAAC,GAAG,IAAI,CAGV;AAGD,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,GAChB,0BAA0B,GAAG,IAAI,CAsEnC"}
@@ -12,51 +12,66 @@ const NUMBER_WORDS = new Map([
12
12
  ["nine", 9],
13
13
  ["ten", 10],
14
14
  ]);
15
- function numberToken(value) {
15
+ export function numberToken(value) {
16
16
  return /^\d+$/.test(value)
17
17
  ? Number(value)
18
18
  : (NUMBER_WORDS.get(value.toLowerCase()) ?? null);
19
19
  }
20
+ export function whenParsedNumber(value, then) {
21
+ if (value === null)
22
+ return null;
23
+ return then(value);
24
+ }
20
25
  // implements REQ-mcp-semantic-advisor-preflight
21
26
  export function detectCountStrictSuggestion(payload, statement) {
22
27
  const cardinality = statement.match(/\b(?<operator>at\s+most|at\s+least|exactly|no\s+more\s+than|up\s+to)\s+(?<value>\d+|zero|one|two|three|four|five|six|seven|eight|nine|ten)\s+(?<resource>[a-z][a-z\s_-]*?)\.?$/i);
23
- if (cardinality?.groups?.operator &&
24
- cardinality.groups.value &&
25
- cardinality.groups.resource) {
26
- const value = numberToken(cardinality.groups.value);
27
- if (value !== null) {
28
- const normalized = normalizeKey(cardinality.groups.resource);
28
+ const cardinalityGroups = cardinality?.groups;
29
+ if (cardinalityGroups?.operator &&
30
+ cardinalityGroups.value &&
31
+ cardinalityGroups.resource) {
32
+ const operatorText = cardinalityGroups.operator;
33
+ const valueText = cardinalityGroups.value;
34
+ const resourceText = cardinalityGroups.resource;
35
+ const value = numberToken(valueText);
36
+ const suggestion = whenParsedNumber(value, (parsed) => {
37
+ const normalized = normalizeKey(resourceText);
29
38
  const tail = singularize(normalized.split("_").at(-1) ?? normalized);
30
- const operator = /at\s+least/i.test(cardinality.groups.operator)
39
+ const operator = /at\s+least/i.test(operatorText)
31
40
  ? "gte"
32
- : /exactly/i.test(cardinality.groups.operator)
41
+ : /exactly/i.test(operatorText)
33
42
  ? "eq"
34
43
  : "lte";
35
- return strictSuggestion(payload, `${cardinality.groups.operator} ${cardinality.groups.value}`, {
44
+ return strictSuggestion(payload, `${operatorText} ${valueText}`, {
36
45
  subject_key: tail === "session" ? "user.session" : normalized.replace(/_/g, "."),
37
46
  property_key: normalized.includes("active_session")
38
47
  ? "active_count"
39
48
  : "count",
40
49
  operator,
41
50
  value_type: "int",
42
- value_int: value,
51
+ value_int: parsed,
43
52
  }, "Bounded cardinality is a strict numeric property and should be modeled explicitly.", 0.9);
44
- }
53
+ });
54
+ if (suggestion)
55
+ return suggestion;
45
56
  }
46
57
  const capped = statement.match(/^(?<subject>.+?)\s+cap(?:s|ped)?\s+at\s+(?:(?<property>[a-z][a-z\s_-]*?)\s+)?(?<value>\d+|zero|one|two|three|four|five|six|seven|eight|nine|ten)\.?$/i);
47
- if (capped?.groups?.subject && capped.groups.value) {
48
- const value = numberToken(capped.groups.value);
49
- if (value !== null) {
50
- return strictSuggestion(payload, `cap at ${capped.groups.value}`, {
51
- subject_key: normalizeSubjectKey(capped.groups.subject),
52
- property_key: capped.groups.property
53
- ? `${normalizeKey(capped.groups.property)}_cap`
54
- : "count",
55
- operator: "lte",
56
- value_type: "int",
57
- value_int: value,
58
- }, "Cap-at prose is an upper-bound strict property and should be modeled explicitly.", 0.9);
59
- }
58
+ const cappedGroups = capped?.groups;
59
+ if (cappedGroups?.subject && cappedGroups.value) {
60
+ const subjectText = cappedGroups.subject;
61
+ const valueText = cappedGroups.value;
62
+ const propertyText = cappedGroups.property;
63
+ const value = numberToken(valueText);
64
+ const suggestion = whenParsedNumber(value, (parsed) => strictSuggestion(payload, `cap at ${valueText}`, {
65
+ subject_key: normalizeSubjectKey(subjectText),
66
+ property_key: propertyText
67
+ ? `${normalizeKey(propertyText)}_cap`
68
+ : "count",
69
+ operator: "lte",
70
+ value_type: "int",
71
+ value_int: parsed,
72
+ }, "Cap-at prose is an upper-bound strict property and should be modeled explicitly.", 0.9));
73
+ if (suggestion)
74
+ return suggestion;
60
75
  }
61
76
  return null;
62
77
  }
@@ -4,7 +4,8 @@
4
4
  */
5
5
  /**
6
6
  * Escape a string for use as a Prolog atom.
7
- * Doubles single-quote characters per ISO Prolog standard.
7
+ * Escapes backslashes/control characters and doubles single quotes per ISO
8
+ * Prolog syntax.
8
9
  */
9
10
  export declare function escapeAtom(value: string): string;
10
11
  /**
@@ -23,13 +24,24 @@ export declare function toPrologString(value: string): string;
23
24
  * Alias for escapeAtom for semantic clarity.
24
25
  */
25
26
  export declare function escapeAtomContent(value: string): string;
27
+ /**
28
+ * Parse a Prolog list of list rows without decoding or normalizing columns.
29
+ * Malformed outer collections fail closed rather than returning a partial
30
+ * projection.
31
+ */
26
32
  export declare function parseListOfLists(listStr: string): string[][];
33
+ export declare function firstTwoDefinedParts(parts: readonly (string | undefined)[]): [string, string] | undefined;
34
+ export declare function fallbackWhenPairMissing<T>(pair: [string, string] | undefined, fallback: T): T | null;
35
+ export declare function typedLiteralFromParts(parts: readonly (string | undefined)[], original: string): unknown;
36
+ export declare function fileUriLeaf(value: string): string;
37
+ export declare function entityFromBindingParts(parts: readonly (string | undefined)[]): Record<string, unknown>;
27
38
  export declare function parseEntityFromBinding(bindingStr: string): Record<string, unknown>;
28
39
  export declare function parseEntityFromList(data: string[]): Record<string, unknown>;
29
40
  export declare function parsePropertyList(propsStr: string): Record<string, unknown>;
30
41
  export declare function parsePrologValue(valueInput: string): unknown;
31
42
  export declare function splitTopLevelGeneral(str: string, delimiter: string): string[];
32
43
  export declare function splitTopLevel(str: string, delimiter: string): string[];
44
+ export declare function normalizeEntityId(value: string): string;
33
45
  export declare function parseAtomList(raw: string): string[];
34
46
  export declare function parsePairList(raw: string): Array<[string, string]>;
35
47
  export declare function parseTriples(raw: string): Array<[string, string, string]>;
@@ -1 +1 @@
1
- {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/prolog/codec.ts"],"names":[],"mappings":"AAUA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASpD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CA8C5D;AAED,wBAAgB,sBAAsB,CAEpC,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBzB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqB3E;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmD3E;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAkG5D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAoD7E;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAGtE;AAqBD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAenD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAmBlE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAoBzE;AAuDD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,CA6DjE"}
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/prolog/codec.ts"],"names":[],"mappings":"AAUA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYhD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASpD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAU5D;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GACrC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAO9B;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EACvC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAClC,QAAQ,EAAE,CAAC,GACV,CAAC,GAAG,IAAI,CAEV;AAID,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAoCT;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBzB;AAED,wBAAgB,sBAAsB,CAEpC,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqB3E;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoD3E;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CA6D5D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAG7E;AAuFD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAGtE;AAYD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUvD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAenD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAmBlE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAoBzE;AAyCD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,CA6DjE"}