kibi-cli 0.18.1 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (539) hide show
  1. package/dist/cli-json-command.d.ts +1 -2
  2. package/dist/cli-json-command.d.ts.map +1 -1
  3. package/dist/cli-json-command.js +2 -34
  4. package/dist/cli-operation-loader.d.ts +3 -0
  5. package/dist/cli-operation-loader.d.ts.map +1 -0
  6. package/dist/cli-operation-loader.js +91 -0
  7. package/dist/cli-operation-metadata.d.ts +94 -0
  8. package/dist/cli-operation-metadata.d.ts.map +1 -0
  9. package/dist/cli-operation-metadata.js +121 -0
  10. package/dist/cli-protocol.d.ts +1 -1
  11. package/dist/cli-protocol.d.ts.map +1 -1
  12. package/dist/cli-protocol.js +42 -11
  13. package/dist/cli-register-foundation.d.ts.map +1 -1
  14. package/dist/cli-register-foundation.js +28 -19
  15. package/dist/cli-register-json.d.ts +3 -0
  16. package/dist/cli-register-json.d.ts.map +1 -0
  17. package/dist/cli-register-json.js +35 -0
  18. package/dist/cli-register-maintenance.d.ts.map +1 -1
  19. package/dist/cli-register-maintenance.js +60 -13
  20. package/dist/cli-register-reporting.d.ts.map +1 -1
  21. package/dist/cli-register-reporting.js +23 -14
  22. package/dist/cli-register-skills.d.ts.map +1 -1
  23. package/dist/cli-register-skills.js +8 -6
  24. package/dist/cli-register-verification.d.ts +3 -0
  25. package/dist/cli-register-verification.d.ts.map +1 -0
  26. package/dist/cli-register-verification.js +16 -0
  27. package/dist/cli.d.ts.map +1 -1
  28. package/dist/cli.js +3 -1
  29. package/dist/commands/aggregated-checks.d.ts +1 -2
  30. package/dist/commands/aggregated-checks.d.ts.map +1 -1
  31. package/dist/commands/aggregated-checks.js +14 -9
  32. package/dist/commands/branch.d.ts +36 -0
  33. package/dist/commands/branch.d.ts.map +1 -1
  34. package/dist/commands/branch.js +371 -40
  35. package/dist/commands/check.d.ts.map +1 -1
  36. package/dist/commands/check.js +48 -77
  37. package/dist/commands/coverage.js +1 -1
  38. package/dist/commands/discovery-shared.d.ts +2 -1
  39. package/dist/commands/discovery-shared.d.ts.map +1 -1
  40. package/dist/commands/discovery-shared.js +38 -25
  41. package/dist/commands/doctor.d.ts +4 -1
  42. package/dist/commands/doctor.d.ts.map +1 -1
  43. package/dist/commands/doctor.js +259 -24
  44. package/dist/commands/engine.d.ts +8 -0
  45. package/dist/commands/engine.d.ts.map +1 -0
  46. package/dist/commands/engine.js +103 -0
  47. package/dist/commands/gaps.js +1 -1
  48. package/dist/commands/gc.d.ts +5 -2
  49. package/dist/commands/gc.d.ts.map +1 -1
  50. package/dist/commands/gc.js +140 -71
  51. package/dist/commands/github-init.d.ts +56 -0
  52. package/dist/commands/github-init.d.ts.map +1 -0
  53. package/dist/commands/github-init.js +310 -0
  54. package/dist/commands/graph.js +1 -1
  55. package/dist/commands/init-helpers.d.ts +1 -1
  56. package/dist/commands/init-helpers.d.ts.map +1 -1
  57. package/dist/commands/init-helpers.js +73 -25
  58. package/dist/commands/init.d.ts +2 -0
  59. package/dist/commands/init.d.ts.map +1 -1
  60. package/dist/commands/init.js +79 -24
  61. package/dist/commands/legacy-storage-migration.d.ts +54 -0
  62. package/dist/commands/legacy-storage-migration.d.ts.map +1 -0
  63. package/dist/commands/legacy-storage-migration.js +277 -0
  64. package/dist/commands/migrate.d.ts +7 -0
  65. package/dist/commands/migrate.d.ts.map +1 -1
  66. package/dist/commands/migrate.js +244 -91
  67. package/dist/commands/query.d.ts.map +1 -1
  68. package/dist/commands/query.js +3 -1
  69. package/dist/commands/report.d.ts +24 -0
  70. package/dist/commands/report.d.ts.map +1 -0
  71. package/dist/commands/report.js +191 -0
  72. package/dist/commands/search.d.ts.map +1 -1
  73. package/dist/commands/search.js +3 -1
  74. package/dist/commands/status.d.ts.map +1 -1
  75. package/dist/commands/status.js +2 -1
  76. package/dist/commands/sync/cache.d.ts +26 -3
  77. package/dist/commands/sync/cache.d.ts.map +1 -1
  78. package/dist/commands/sync/cache.js +141 -5
  79. package/dist/commands/sync/discovery.d.ts +23 -2
  80. package/dist/commands/sync/discovery.d.ts.map +1 -1
  81. package/dist/commands/sync/discovery.js +196 -15
  82. package/dist/commands/sync/extraction.d.ts +8 -1
  83. package/dist/commands/sync/extraction.d.ts.map +1 -1
  84. package/dist/commands/sync/extraction.js +38 -4
  85. package/dist/commands/sync/manifest.d.ts +8 -5
  86. package/dist/commands/sync/manifest.d.ts.map +1 -1
  87. package/dist/commands/sync/manifest.js +142 -39
  88. package/dist/commands/sync/persistence.d.ts +10 -1
  89. package/dist/commands/sync/persistence.d.ts.map +1 -1
  90. package/dist/commands/sync/persistence.js +223 -44
  91. package/dist/commands/sync/staging.d.ts +10 -1
  92. package/dist/commands/sync/staging.d.ts.map +1 -1
  93. package/dist/commands/sync/staging.js +84 -1
  94. package/dist/commands/sync.d.ts +6 -0
  95. package/dist/commands/sync.d.ts.map +1 -1
  96. package/dist/commands/sync.js +710 -48
  97. package/dist/commands/verify.d.ts +10 -0
  98. package/dist/commands/verify.d.ts.map +1 -0
  99. package/dist/commands/verify.js +126 -0
  100. package/dist/diagnostics.d.ts +1 -1
  101. package/dist/diagnostics.d.ts.map +1 -1
  102. package/dist/engine-daemon.d.ts +3 -0
  103. package/dist/engine-daemon.d.ts.map +1 -0
  104. package/dist/engine-daemon.js +34 -0
  105. package/dist/engine.d.ts +156 -0
  106. package/dist/engine.d.ts.map +1 -0
  107. package/dist/engine.js +1625 -0
  108. package/dist/env.d.ts.map +1 -1
  109. package/dist/env.js +5 -6
  110. package/dist/extractors/manifest.d.ts +8 -1
  111. package/dist/extractors/manifest.d.ts.map +1 -1
  112. package/dist/extractors/manifest.js +51 -9
  113. package/dist/extractors/markdown.d.ts +2 -1
  114. package/dist/extractors/markdown.d.ts.map +1 -1
  115. package/dist/extractors/markdown.js +21 -3
  116. package/dist/extractors/playwright-cases.d.ts +24 -0
  117. package/dist/extractors/playwright-cases.d.ts.map +1 -0
  118. package/dist/extractors/playwright-cases.js +126 -0
  119. package/dist/extractors/relationships.d.ts +2 -0
  120. package/dist/extractors/relationships.d.ts.map +1 -1
  121. package/dist/extractors/relationships.js +16 -17
  122. package/dist/extractors/symbol-coordinates.d.ts +81 -3
  123. package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
  124. package/dist/extractors/symbol-coordinates.js +389 -51
  125. package/dist/extractors/symbols-coordinator.js +11 -1
  126. package/dist/intent-search.d.ts +60 -0
  127. package/dist/intent-search.d.ts.map +1 -0
  128. package/dist/intent-search.js +433 -0
  129. package/dist/operations/bootstrap/activation.d.ts.map +1 -0
  130. package/dist/operations/{autopilot → bootstrap}/activation.js +48 -31
  131. package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts.map +1 -1
  132. package/dist/operations/bootstrap/candidates.d.ts +4 -0
  133. package/dist/operations/{autopilot → bootstrap}/candidates.d.ts.map +1 -1
  134. package/dist/operations/{autopilot → bootstrap}/candidates.js +22 -8
  135. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts +2 -2
  136. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts.map +1 -1
  137. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.js +46 -6
  138. package/dist/operations/{autopilot → bootstrap}/discovery.d.ts +1 -1
  139. package/dist/operations/bootstrap/discovery.d.ts.map +1 -0
  140. package/dist/operations/{autopilot → bootstrap}/discovery.js +21 -14
  141. package/dist/operations/bootstrap/generate.d.ts +8 -0
  142. package/dist/operations/bootstrap/generate.d.ts.map +1 -0
  143. package/dist/operations/bootstrap/generate.js +204 -0
  144. package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts +2 -2
  145. package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts.map +1 -1
  146. package/dist/operations/{autopilot → bootstrap}/guidance-actions.js +4 -4
  147. package/dist/operations/{autopilot → bootstrap}/guidance.d.ts +2 -2
  148. package/dist/operations/{autopilot → bootstrap}/guidance.d.ts.map +1 -1
  149. package/dist/operations/{autopilot → bootstrap}/guidance.js +2 -0
  150. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts +2 -2
  151. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts.map +1 -1
  152. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.js +4 -3
  153. package/dist/operations/bootstrap/presentation.d.ts +15 -0
  154. package/dist/operations/bootstrap/presentation.d.ts.map +1 -0
  155. package/dist/operations/bootstrap/presentation.js +177 -0
  156. package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts.map +1 -1
  157. package/dist/operations/{autopilot → bootstrap}/types.d.ts +63 -21
  158. package/dist/operations/bootstrap/types.d.ts.map +1 -0
  159. package/dist/operations/bootstrap/types.js +25 -0
  160. package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
  161. package/dist/operations/modeling/model-requirement.js +4 -17
  162. package/dist/operations/modeling/predicate-applicability.d.ts +16 -0
  163. package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -0
  164. package/dist/operations/modeling/predicate-applicability.js +276 -0
  165. package/dist/operations/modeling/predicate-applyplan.d.ts +13 -2
  166. package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
  167. package/dist/operations/modeling/predicate-applyplan.js +100 -3
  168. package/dist/operations/modeling/predicate-bindings.d.ts +6 -0
  169. package/dist/operations/modeling/predicate-bindings.d.ts.map +1 -0
  170. package/dist/operations/modeling/predicate-bindings.js +122 -0
  171. package/dist/operations/modeling/predicate-catalog-4.d.ts.map +1 -1
  172. package/dist/operations/modeling/predicate-catalog-4.js +155 -0
  173. package/dist/operations/modeling/predicate-inference-1.d.ts.map +1 -1
  174. package/dist/operations/modeling/predicate-inference-1.js +8 -0
  175. package/dist/operations/modeling/predicate-inference-launcher.d.ts +10 -0
  176. package/dist/operations/modeling/predicate-inference-launcher.d.ts.map +1 -0
  177. package/dist/operations/modeling/predicate-inference-launcher.js +13 -0
  178. package/dist/operations/modeling/predicate-inference.d.ts.map +1 -1
  179. package/dist/operations/modeling/predicate-inference.js +4 -0
  180. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
  181. package/dist/operations/modeling/predicate-loader.js +7 -0
  182. package/dist/operations/modeling/predicate-ranker.d.ts +8 -1
  183. package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
  184. package/dist/operations/modeling/predicate-ranker.js +156 -24
  185. package/dist/operations/modeling/predicate-score-3.d.ts.map +1 -1
  186. package/dist/operations/modeling/predicate-score-3.js +6 -0
  187. package/dist/operations/modeling/predicate-types.d.ts +34 -0
  188. package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
  189. package/dist/operations/modeling/predicate-usage-hints-3.d.ts.map +1 -1
  190. package/dist/operations/modeling/predicate-usage-hints-3.js +40 -0
  191. package/dist/operations/modeling/predicate-utils.d.ts.map +1 -1
  192. package/dist/operations/modeling/predicate-utils.js +2 -0
  193. package/dist/operations/modeling/suggest-predicates.d.ts +1 -1
  194. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
  195. package/dist/operations/modeling/suggest-predicates.js +170 -32
  196. package/dist/operations/mutation/delete.d.ts.map +1 -1
  197. package/dist/operations/mutation/delete.js +415 -19
  198. package/dist/operations/mutation/entity-projection.d.ts +11 -0
  199. package/dist/operations/mutation/entity-projection.d.ts.map +1 -0
  200. package/dist/operations/mutation/entity-projection.js +14 -0
  201. package/dist/operations/mutation/relationships.d.ts +10 -0
  202. package/dist/operations/mutation/relationships.d.ts.map +1 -1
  203. package/dist/operations/mutation/relationships.js +71 -1
  204. package/dist/operations/mutation/serialization.d.ts.map +1 -1
  205. package/dist/operations/mutation/serialization.js +1 -0
  206. package/dist/operations/mutation/source-authoring.d.ts +61 -0
  207. package/dist/operations/mutation/source-authoring.d.ts.map +1 -0
  208. package/dist/operations/mutation/source-authoring.js +543 -0
  209. package/dist/operations/mutation/symbol-compiler-lock.d.ts +51 -0
  210. package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -0
  211. package/dist/operations/mutation/symbol-compiler-lock.js +274 -0
  212. package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
  213. package/dist/operations/mutation/symbol-granularity.js +34 -3
  214. package/dist/operations/mutation/symbol-refresh.d.ts +18 -1
  215. package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
  216. package/dist/operations/mutation/symbol-refresh.js +225 -63
  217. package/dist/operations/mutation/types.d.ts +57 -1
  218. package/dist/operations/mutation/types.d.ts.map +1 -1
  219. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  220. package/dist/operations/mutation/upsert.js +363 -24
  221. package/dist/operations/mutation/validation.d.ts.map +1 -1
  222. package/dist/operations/mutation/validation.js +1 -0
  223. package/dist/operations/planning/apply-plan.d.ts +117 -0
  224. package/dist/operations/planning/apply-plan.d.ts.map +1 -0
  225. package/dist/operations/planning/apply-plan.js +1437 -0
  226. package/dist/operations/planning/compile-intent.d.ts +106 -0
  227. package/dist/operations/planning/compile-intent.d.ts.map +1 -0
  228. package/dist/operations/planning/compile-intent.js +562 -0
  229. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  230. package/dist/operations/semantic-advisor/analyze-prose.js +6 -2
  231. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
  232. package/dist/operations/semantic-advisor/clauses.js +15 -2
  233. package/dist/operations/semantic-advisor/ingestion-boundary.d.ts.map +1 -1
  234. package/dist/operations/semantic-advisor/ingestion-boundary.js +7 -3
  235. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts +51 -0
  236. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts.map +1 -0
  237. package/dist/operations/semantic-advisor/predicate-rules-launcher.js +96 -0
  238. package/dist/operations/semantic-advisor/types.d.ts +13 -5
  239. package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
  240. package/dist/operations/verification/ingest-verification.d.ts +29 -0
  241. package/dist/operations/verification/ingest-verification.d.ts.map +1 -0
  242. package/dist/operations/verification/ingest-verification.js +192 -0
  243. package/dist/prolog/codec.d.ts.map +1 -1
  244. package/dist/prolog/codec.js +2 -1
  245. package/dist/prolog.d.ts +8 -0
  246. package/dist/prolog.d.ts.map +1 -1
  247. package/dist/prolog.js +66 -16
  248. package/dist/public/branch-resolver.d.ts +1 -0
  249. package/dist/public/branch-resolver.d.ts.map +1 -1
  250. package/dist/public/branch-resolver.js +1 -0
  251. package/dist/public/check-types.d.ts +2 -2
  252. package/dist/public/check-types.d.ts.map +1 -1
  253. package/dist/public/check-types.js +16 -16
  254. package/dist/public/diagnostic-usage.d.ts.map +1 -1
  255. package/dist/public/diagnostic-usage.js +69 -1
  256. package/dist/public/distribution-parity.d.ts +1 -1
  257. package/dist/public/distribution-parity.d.ts.map +1 -1
  258. package/dist/public/distribution-parity.js +1 -0
  259. package/dist/public/ignore-policy.d.ts.map +1 -1
  260. package/dist/public/ignore-policy.js +16 -4
  261. package/dist/public/impact/coverage-depth-quality.d.ts +6 -1
  262. package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
  263. package/dist/public/impact/coverage-depth-quality.js +21 -3
  264. package/dist/public/impact/full-kb-quality.d.ts +4 -2
  265. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  266. package/dist/public/impact/full-kb-quality.js +61 -1
  267. package/dist/public/impact/manifest.d.ts.map +1 -1
  268. package/dist/public/impact/manifest.js +2 -5
  269. package/dist/public/operational-artifacts.d.ts.map +1 -1
  270. package/dist/public/operational-artifacts.js +7 -1
  271. package/dist/public/operations/catalog.d.ts +682 -67
  272. package/dist/public/operations/catalog.d.ts.map +1 -1
  273. package/dist/public/operations/catalog.js +126 -4
  274. package/dist/public/operations/check-executor.d.ts +2 -2
  275. package/dist/public/operations/check-executor.d.ts.map +1 -1
  276. package/dist/public/operations/check-executor.js +72 -13
  277. package/dist/public/operations/check-format-shared.d.ts +3 -0
  278. package/dist/public/operations/check-format-shared.d.ts.map +1 -1
  279. package/dist/public/operations/check-format-shared.js +3 -0
  280. package/dist/public/operations/check-helpers.d.ts +27 -2
  281. package/dist/public/operations/check-helpers.d.ts.map +1 -1
  282. package/dist/public/operations/check-helpers.js +62 -26
  283. package/dist/public/operations/contracts.d.ts +11 -0
  284. package/dist/public/operations/contracts.d.ts.map +1 -0
  285. package/dist/public/operations/contracts.js +325 -0
  286. package/dist/public/operations/discovery-entities.d.ts.map +1 -1
  287. package/dist/public/operations/discovery-entities.js +3 -2
  288. package/dist/public/operations/discovery-executors.d.ts +37 -1
  289. package/dist/public/operations/discovery-executors.d.ts.map +1 -1
  290. package/dist/public/operations/discovery-executors.js +246 -9
  291. package/dist/public/operations/index.d.ts +9 -4
  292. package/dist/public/operations/index.d.ts.map +1 -1
  293. package/dist/public/operations/index.js +8 -3
  294. package/dist/public/operations/migration-plan.d.ts +101 -0
  295. package/dist/public/operations/migration-plan.d.ts.map +1 -0
  296. package/dist/public/operations/migration-plan.js +537 -0
  297. package/dist/public/operations/node-ports.d.ts.map +1 -1
  298. package/dist/public/operations/node-ports.js +68 -8
  299. package/dist/public/operations/prolog-json.d.ts +14 -0
  300. package/dist/public/operations/prolog-json.d.ts.map +1 -1
  301. package/dist/public/operations/prolog-json.js +55 -6
  302. package/dist/public/operations/repair-plan.d.ts.map +1 -1
  303. package/dist/public/operations/repair-plan.js +1 -0
  304. package/dist/public/operations/result-envelope.d.ts +13 -0
  305. package/dist/public/operations/result-envelope.d.ts.map +1 -0
  306. package/dist/public/operations/result-envelope.js +104 -0
  307. package/dist/public/operations/runtime-types.d.ts +126 -5
  308. package/dist/public/operations/runtime-types.d.ts.map +1 -1
  309. package/dist/public/operations/source-relationship-parity.d.ts +13 -0
  310. package/dist/public/operations/source-relationship-parity.d.ts.map +1 -0
  311. package/dist/public/operations/source-relationship-parity.js +162 -0
  312. package/dist/public/operations/specs/{autopilot.d.ts → bootstrap.d.ts} +9 -9
  313. package/dist/public/operations/specs/bootstrap.d.ts.map +1 -0
  314. package/dist/public/operations/specs/{autopilot.js → bootstrap.js} +8 -7
  315. package/dist/public/operations/specs/check.d.ts +4 -4
  316. package/dist/public/operations/specs/check.d.ts.map +1 -1
  317. package/dist/public/operations/specs/check.js +4 -3
  318. package/dist/public/operations/specs/discovery.d.ts +87 -3
  319. package/dist/public/operations/specs/discovery.d.ts.map +1 -1
  320. package/dist/public/operations/specs/discovery.js +53 -3
  321. package/dist/public/operations/specs/modeling.d.ts +3 -3
  322. package/dist/public/operations/specs/modeling.js +3 -3
  323. package/dist/public/operations/specs/mutation-schemas.d.ts +190 -47
  324. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  325. package/dist/public/operations/specs/mutation-schemas.js +3 -1
  326. package/dist/public/operations/specs/mutation.d.ts +42 -2
  327. package/dist/public/operations/specs/mutation.d.ts.map +1 -1
  328. package/dist/public/operations/specs/mutation.js +26 -2
  329. package/dist/public/operations/specs/planning.d.ts +270 -0
  330. package/dist/public/operations/specs/planning.d.ts.map +1 -0
  331. package/dist/public/operations/specs/planning.js +191 -0
  332. package/dist/public/operations/specs/reporting.d.ts +4 -1
  333. package/dist/public/operations/specs/reporting.d.ts.map +1 -1
  334. package/dist/public/operations/specs/reporting.js +46 -1
  335. package/dist/public/operations/specs/upsert.d.ts +204 -47
  336. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  337. package/dist/public/operations/specs/upsert.js +9 -0
  338. package/dist/public/operations/specs/verification.d.ts +78 -0
  339. package/dist/public/operations/specs/verification.d.ts.map +1 -0
  340. package/dist/public/operations/specs/verification.js +62 -0
  341. package/dist/public/operations/symbol-repair-plan.d.ts +11 -0
  342. package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -0
  343. package/dist/public/operations/symbol-repair-plan.js +123 -0
  344. package/dist/public/operations/types.d.ts +52 -1
  345. package/dist/public/operations/types.d.ts.map +1 -1
  346. package/dist/public/playwright-case-id.d.ts +8 -0
  347. package/dist/public/playwright-case-id.d.ts.map +1 -0
  348. package/dist/public/playwright-case-id.js +25 -0
  349. package/dist/public/schemas/entity.d.ts.map +1 -1
  350. package/dist/public/schemas/entity.js +4 -2
  351. package/dist/public/skills/kibi-bootstrap/SKILL.md +58 -0
  352. package/dist/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
  353. package/dist/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
  354. package/dist/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
  355. package/dist/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
  356. package/dist/public/skills/kibi-freshness/SKILL.md +40 -10
  357. package/dist/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
  358. package/dist/public/skills/kibi-freshness/resources/operation-access.md +6 -0
  359. package/dist/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
  360. package/dist/public/skills/kibi-traceability/SKILL.md +47 -47
  361. package/dist/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
  362. package/dist/public/skills/kibi-traceability/resources/operation-access.md +5 -0
  363. package/dist/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
  364. package/dist/public/skills/kibi-traceability/resources/traceability.md +8 -0
  365. package/dist/public/skills/kibi-usage/SKILL.md +115 -239
  366. package/dist/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
  367. package/dist/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
  368. package/dist/public/skills/kibi-usage/resources/operation-access.md +36 -38
  369. package/dist/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
  370. package/dist/public/skills/kibi-usage/resources/source-authoring.md +31 -0
  371. package/dist/public/skills/kibi-usage/resources/workflows.md +56 -3
  372. package/dist/public/symbol-granularity.d.ts +1 -1
  373. package/dist/public/symbol-granularity.d.ts.map +1 -1
  374. package/dist/public/symbol-granularity.js +1 -0
  375. package/dist/public/telemetry-acceptance.d.ts +7 -0
  376. package/dist/public/telemetry-acceptance.d.ts.map +1 -1
  377. package/dist/public/telemetry-acceptance.js +8 -1
  378. package/dist/public/telemetry-remediation.js +1 -1
  379. package/dist/public/verification-receipt.d.ts +206 -39
  380. package/dist/public/verification-receipt.d.ts.map +1 -1
  381. package/dist/public/verification-receipt.js +171 -4
  382. package/dist/relationships/shards.d.ts +16 -0
  383. package/dist/relationships/shards.d.ts.map +1 -1
  384. package/dist/relationships/shards.js +87 -2
  385. package/dist/report/brand.d.ts +19 -0
  386. package/dist/report/brand.d.ts.map +1 -0
  387. package/dist/report/brand.js +112 -0
  388. package/dist/report/html-report.d.ts +19 -0
  389. package/dist/report/html-report.d.ts.map +1 -0
  390. package/dist/report/html-report.js +963 -0
  391. package/dist/report/relative-time.d.ts +4 -0
  392. package/dist/report/relative-time.d.ts.map +1 -0
  393. package/dist/report/relative-time.js +46 -0
  394. package/dist/report/report-view.d.ts +17 -0
  395. package/dist/report/report-view.d.ts.map +1 -0
  396. package/dist/report/report-view.js +33 -0
  397. package/dist/report/repository.d.ts +35 -0
  398. package/dist/report/repository.d.ts.map +1 -0
  399. package/dist/report/repository.js +151 -0
  400. package/dist/runtime/cli-runtime.d.ts.map +1 -1
  401. package/dist/runtime/cli-runtime.js +98 -42
  402. package/dist/schemas/entity.schema.json +1148 -273
  403. package/dist/traceability/evidence-model.d.ts +2 -2
  404. package/dist/traceability/evidence-model.d.ts.map +1 -1
  405. package/dist/traceability/evidence-model.js +2 -2
  406. package/dist/traceability/git-staged.d.ts.map +1 -1
  407. package/dist/traceability/git-staged.js +15 -40
  408. package/dist/traceability/markdown-validate.d.ts.map +1 -1
  409. package/dist/traceability/markdown-validate.js +12 -7
  410. package/dist/traceability/staged-impact-contract.d.ts +3 -3
  411. package/dist/traceability/staged-impact-contract.d.ts.map +1 -1
  412. package/dist/traceability/staged-impact-contract.js +10 -38
  413. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  414. package/dist/traceability/staged-symbols-manifest.js +8 -3
  415. package/dist/traceability/temp-kb.d.ts.map +1 -1
  416. package/dist/traceability/temp-kb.js +3 -0
  417. package/dist/types/entities.d.ts +3 -0
  418. package/dist/types/entities.d.ts.map +1 -1
  419. package/dist/utils/branch-resolver.d.ts +24 -10
  420. package/dist/utils/branch-resolver.d.ts.map +1 -1
  421. package/dist/utils/branch-resolver.js +121 -38
  422. package/dist/utils/branch-store-locator.d.ts +23 -0
  423. package/dist/utils/branch-store-locator.d.ts.map +1 -0
  424. package/dist/utils/branch-store-locator.js +90 -0
  425. package/dist/utils/branch-store.d.ts +15 -0
  426. package/dist/utils/branch-store.d.ts.map +1 -0
  427. package/dist/utils/branch-store.js +130 -0
  428. package/dist/utils/config.d.ts +39 -37
  429. package/dist/utils/config.d.ts.map +1 -1
  430. package/dist/utils/config.js +107 -119
  431. package/dist/utils/kb-manifest.d.ts +35 -0
  432. package/dist/utils/kb-manifest.d.ts.map +1 -0
  433. package/dist/utils/kb-manifest.js +154 -0
  434. package/dist/utils/kb-paths.d.ts +54 -0
  435. package/dist/utils/kb-paths.d.ts.map +1 -0
  436. package/dist/utils/kb-paths.js +125 -0
  437. package/dist/utils/manifest-paths.d.ts +4 -4
  438. package/dist/utils/manifest-paths.d.ts.map +1 -1
  439. package/dist/utils/manifest-paths.js +8 -56
  440. package/dist/utils/rule-registry.d.ts +48 -20
  441. package/dist/utils/rule-registry.d.ts.map +1 -1
  442. package/dist/utils/rule-registry.js +82 -77
  443. package/dist/utils/schema-version.d.ts +5 -5
  444. package/dist/utils/schema-version.d.ts.map +1 -1
  445. package/dist/utils/schema-version.js +26 -6
  446. package/dist/utils/strict-modeling.d.ts +0 -4
  447. package/dist/utils/strict-modeling.d.ts.map +1 -1
  448. package/dist/utils/strict-modeling.js +7 -8
  449. package/dist/verification/playwright-reporter.d.ts +21 -0
  450. package/dist/verification/playwright-reporter.d.ts.map +1 -0
  451. package/dist/verification/playwright-reporter.js +114 -0
  452. package/package.json +51 -8
  453. package/schema/config.json +2 -2
  454. package/schema/manifest.json +26 -0
  455. package/src/public/branch-resolver.ts +1 -0
  456. package/src/public/check-types.ts +22 -19
  457. package/src/public/diagnostic-usage.ts +79 -1
  458. package/src/public/distribution-parity.ts +1 -0
  459. package/src/public/ignore-policy.ts +16 -10
  460. package/src/public/impact/coverage-depth-quality.ts +36 -0
  461. package/src/public/impact/full-kb-quality.ts +118 -5
  462. package/src/public/impact/manifest.ts +2 -4
  463. package/src/public/operational-artifacts.ts +9 -1
  464. package/src/public/operations/catalog.ts +146 -9
  465. package/src/public/operations/check-executor.ts +102 -15
  466. package/src/public/operations/check-format-shared.ts +6 -0
  467. package/src/public/operations/check-helpers.ts +74 -35
  468. package/src/public/operations/contracts.ts +366 -0
  469. package/src/public/operations/discovery-entities.ts +3 -2
  470. package/src/public/operations/discovery-executors.ts +343 -15
  471. package/src/public/operations/index.ts +9 -4
  472. package/src/public/operations/migration-plan.ts +740 -0
  473. package/src/public/operations/node-ports.ts +84 -10
  474. package/src/public/operations/prolog-json.ts +73 -6
  475. package/src/public/operations/repair-plan.ts +1 -0
  476. package/src/public/operations/result-envelope.ts +136 -0
  477. package/src/public/operations/runtime-types.ts +130 -5
  478. package/src/public/operations/source-relationship-parity.ts +226 -0
  479. package/src/public/operations/specs/{autopilot.ts → bootstrap.ts} +17 -16
  480. package/src/public/operations/specs/check.ts +4 -3
  481. package/src/public/operations/specs/discovery.ts +57 -3
  482. package/src/public/operations/specs/modeling.ts +3 -3
  483. package/src/public/operations/specs/mutation-schemas.ts +6 -1
  484. package/src/public/operations/specs/mutation.ts +27 -2
  485. package/src/public/operations/specs/planning.ts +234 -0
  486. package/src/public/operations/specs/reporting.ts +55 -1
  487. package/src/public/operations/specs/upsert.ts +10 -0
  488. package/src/public/operations/specs/verification.ts +78 -0
  489. package/src/public/operations/symbol-repair-plan.ts +164 -0
  490. package/src/public/operations/types.ts +62 -1
  491. package/src/public/playwright-case-id.ts +35 -0
  492. package/src/public/schemas/entity.ts +7 -2
  493. package/src/public/skills/kibi-bootstrap/SKILL.md +58 -0
  494. package/src/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
  495. package/src/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
  496. package/src/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
  497. package/src/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
  498. package/src/public/skills/kibi-freshness/SKILL.md +40 -10
  499. package/src/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
  500. package/src/public/skills/kibi-freshness/resources/operation-access.md +6 -0
  501. package/src/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
  502. package/src/public/skills/kibi-traceability/SKILL.md +47 -47
  503. package/src/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
  504. package/src/public/skills/kibi-traceability/resources/operation-access.md +5 -0
  505. package/src/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
  506. package/src/public/skills/kibi-traceability/resources/traceability.md +8 -0
  507. package/src/public/skills/kibi-usage/SKILL.md +115 -239
  508. package/src/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
  509. package/src/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
  510. package/src/public/skills/kibi-usage/resources/operation-access.md +36 -38
  511. package/src/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
  512. package/src/public/skills/kibi-usage/resources/source-authoring.md +31 -0
  513. package/src/public/skills/kibi-usage/resources/workflows.md +56 -3
  514. package/src/public/symbol-granularity.ts +1 -0
  515. package/src/public/telemetry-acceptance.ts +16 -1
  516. package/src/public/telemetry-remediation.ts +1 -1
  517. package/src/public/verification-receipt.ts +248 -6
  518. package/src/schemas/entity.schema.json +1148 -273
  519. package/templates/github/kibi-badge.yml +86 -0
  520. package/templates/github/kibi-report.yml +84 -0
  521. package/dist/operations/autopilot/activation.d.ts.map +0 -1
  522. package/dist/operations/autopilot/candidates.d.ts +0 -4
  523. package/dist/operations/autopilot/discovery.d.ts.map +0 -1
  524. package/dist/operations/autopilot/generate.d.ts +0 -8
  525. package/dist/operations/autopilot/generate.d.ts.map +0 -1
  526. package/dist/operations/autopilot/generate.js +0 -112
  527. package/dist/operations/autopilot/presentation.d.ts +0 -13
  528. package/dist/operations/autopilot/presentation.d.ts.map +0 -1
  529. package/dist/operations/autopilot/presentation.js +0 -91
  530. package/dist/operations/autopilot/types.d.ts.map +0 -1
  531. package/dist/operations/autopilot/types.js +0 -8
  532. package/dist/public/operations/specs/autopilot.d.ts.map +0 -1
  533. package/dist/public/skills/init-kibi/SKILL.md +0 -62
  534. package/src/public/skills/init-kibi/SKILL.md +0 -62
  535. /package/dist/operations/{autopilot → bootstrap}/activation.d.ts +0 -0
  536. /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts +0 -0
  537. /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.js +0 -0
  538. /package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts +0 -0
  539. /package/dist/operations/{autopilot → bootstrap}/requirement-claims.js +0 -0
@@ -1,4 +1,18 @@
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import * as path from "node:path";
1
4
  import { dump as dumpYAML, load as parseYAML } from "js-yaml";
5
+ /**
6
+ * Format version of the generated coordinate artifact. Version 2 binds every
7
+ * record to the extraction identity that produced it so stale coordinates can
8
+ * never silently overlay a changed symbol.
9
+ */
10
+ // implements REQ-generated-coordinate-persistence
11
+ export const SYMBOL_COORDINATES_FORMAT_VERSION = 2;
12
+ // implements REQ-generated-coordinate-persistence
13
+ export class CoordinateArtifactError extends Error {
14
+ name = "CoordinateArtifactError";
15
+ }
2
16
  const SYMBOL_COORDINATES_COMMENT_BLOCK = `# symbol-coordinates.yaml
3
17
  # GENERATED coordinate artifact — do not edit manually.
4
18
  # Run \`kibi sync --refresh-symbol-coordinates\` to refresh.
@@ -6,78 +20,402 @@ const SYMBOL_COORDINATES_COMMENT_BLOCK = `# symbol-coordinates.yaml
6
20
  function isRecord(value) {
7
21
  return typeof value === "object" && value !== null && !Array.isArray(value);
8
22
  }
9
- function normalizeCoordinateRecord(value) {
10
- if (!isRecord(value)) {
11
- return null;
23
+ function canonicalIdentityValue(value) {
24
+ return typeof value === "string" ? value : "";
25
+ }
26
+ /** Deterministic canonical identity string for a symbol extraction state. */
27
+ // implements REQ-generated-coordinate-persistence
28
+ export function coordinateIdentityKey(identity) {
29
+ return [
30
+ identity.id,
31
+ canonicalIdentityValue(identity.title),
32
+ canonicalIdentityValue(identity.sourceFile),
33
+ canonicalIdentityValue(identity.granularity_reason),
34
+ ].join("\u0000");
35
+ }
36
+ /** Stable hash binding a generated coordinate record to its extraction identity. */
37
+ // implements REQ-generated-coordinate-persistence
38
+ export function coordinateIdentityHash(identity) {
39
+ return createHash("sha256")
40
+ .update(coordinateIdentityKey(identity))
41
+ .digest("hex");
42
+ }
43
+ /** Stable hash of the exact source text used to generate a coordinate span. */
44
+ // implements REQ-generated-coordinate-persistence
45
+ export function coordinateSourceHash(sourceText) {
46
+ return createHash("sha256").update(sourceText).digest("hex");
47
+ }
48
+ /** Select a stable coarse anchor, preferring a title match over the whole file. */
49
+ // implements REQ-generated-coordinate-persistence
50
+ export function coarseCoordinateSpan(sourceFile, title, content) {
51
+ if (title.length > 0) {
52
+ const escaped = title.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
53
+ const pattern = new RegExp(`\\b${escaped}\\b`);
54
+ const lines = content.split(/\r?\n/);
55
+ for (let index = 0; index < lines.length; index++) {
56
+ const line = lines[index];
57
+ if (line === undefined)
58
+ continue;
59
+ const match = pattern.exec(line);
60
+ if (!match || match.index < 0)
61
+ continue;
62
+ return {
63
+ sourceFile,
64
+ sourceLine: index + 1,
65
+ sourceColumn: match.index,
66
+ sourceEndLine: index + 1,
67
+ sourceEndColumn: match.index + title.length,
68
+ };
69
+ }
12
70
  }
13
- const { sourceColumn, sourceEndColumn, sourceEndLine, sourceFile, sourceLine, } = value;
14
- if (typeof sourceFile !== "string" ||
15
- typeof sourceLine !== "number" ||
16
- typeof sourceColumn !== "number" ||
17
- typeof sourceEndLine !== "number" ||
18
- typeof sourceEndColumn !== "number") {
71
+ const lines = content.split(/\r?\n/);
72
+ const lastLine = lines[lines.length - 1] ?? "";
73
+ return {
74
+ sourceFile,
75
+ sourceLine: 1,
76
+ sourceColumn: 0,
77
+ sourceEndLine: Math.max(1, lines.length),
78
+ sourceEndColumn: lastLine.length,
79
+ };
80
+ }
81
+ function isSha256Hash(value) {
82
+ return typeof value === "string" && /^[a-f0-9]{64}$/.test(value);
83
+ }
84
+ /**
85
+ * Validate a coordinate span against the same rules requirement proof enforces:
86
+ * nonempty source file, sourceLine >= 1, columns >= 0, endLine >= sourceLine.
87
+ */
88
+ // implements REQ-generated-coordinate-persistence
89
+ export function isValidCoordinateSpan(value) {
90
+ if (!isRecord(value))
91
+ return false;
92
+ const { sourceFile, sourceLine, sourceColumn, sourceEndLine, sourceEndColumn, } = value;
93
+ return (typeof sourceFile === "string" &&
94
+ sourceFile.length > 0 &&
95
+ typeof sourceLine === "number" &&
96
+ Number.isInteger(sourceLine) &&
97
+ sourceLine >= 1 &&
98
+ typeof sourceColumn === "number" &&
99
+ Number.isInteger(sourceColumn) &&
100
+ sourceColumn >= 0 &&
101
+ typeof sourceEndLine === "number" &&
102
+ Number.isInteger(sourceEndLine) &&
103
+ sourceEndLine >= sourceLine &&
104
+ typeof sourceEndColumn === "number" &&
105
+ Number.isInteger(sourceEndColumn) &&
106
+ sourceEndColumn >= 0);
107
+ }
108
+ function normalizeRawEntry(value) {
109
+ if (!isRecord(value))
110
+ return null;
111
+ const { identityHash, sourceHash, ...rest } = value;
112
+ if (!isValidCoordinateSpan(rest))
113
+ return null;
114
+ if (("identityHash" in value && !isSha256Hash(identityHash)) ||
115
+ ("sourceHash" in value && !isSha256Hash(sourceHash))) {
19
116
  return null;
20
117
  }
21
118
  return {
22
- sourceFile,
23
- sourceLine,
24
- sourceColumn,
25
- sourceEndLine,
26
- sourceEndColumn,
119
+ span: {
120
+ sourceFile: rest.sourceFile,
121
+ sourceLine: rest.sourceLine,
122
+ sourceColumn: rest.sourceColumn,
123
+ sourceEndLine: rest.sourceEndLine,
124
+ sourceEndColumn: rest.sourceEndColumn,
125
+ },
126
+ ...(typeof identityHash === "string" && identityHash.length > 0
127
+ ? { identityHash }
128
+ : {}),
129
+ ...(typeof sourceHash === "string" && sourceHash.length > 0
130
+ ? { sourceHash }
131
+ : {}),
27
132
  };
28
133
  }
29
- function sortCoordinates(coordinates) {
30
- const sortedCoordinates = {};
31
- for (const symbolId of Object.keys(coordinates).sort((left, right) => left.localeCompare(right))) {
32
- const record = normalizeCoordinateRecord(coordinates[symbolId]);
33
- if (!record) {
34
- continue;
134
+ /**
135
+ * Strictly parse a generated coordinate artifact. Records failing span
136
+ * validation make the whole artifact invalid; consumers must fail closed
137
+ * instead of silently dropping evidence.
138
+ */
139
+ // implements REQ-generated-coordinate-persistence
140
+ export function parseCoordinateArtifact(content) {
141
+ let parsed;
142
+ try {
143
+ parsed = parseYAML(content);
144
+ }
145
+ catch (error) {
146
+ return {
147
+ status: "invalid",
148
+ reason: error instanceof Error ? error.message : String(error),
149
+ };
150
+ }
151
+ if (parsed === null || parsed === undefined) {
152
+ return { status: "legacy", coordinates: {} };
153
+ }
154
+ if (!isRecord(parsed)) {
155
+ return { status: "invalid", reason: "artifact root is not a mapping" };
156
+ }
157
+ const rawCoordinates = parsed.coordinates ?? {};
158
+ if (!isRecord(rawCoordinates)) {
159
+ return { status: "invalid", reason: "coordinates is not a mapping" };
160
+ }
161
+ const declaredVersion = parsed.version;
162
+ const entries = {};
163
+ for (const [id, value] of Object.entries(rawCoordinates)) {
164
+ const entry = normalizeRawEntry(value);
165
+ if (entry === null) {
166
+ return {
167
+ status: "invalid",
168
+ reason: `record '${id}' has an invalid coordinate span`,
169
+ };
35
170
  }
36
- sortedCoordinates[symbolId] = record;
171
+ entries[id] = entry;
37
172
  }
38
- return sortedCoordinates;
39
- }
40
- // implements REQ-core-extractors
41
- export function readCoordinateArtifact(content) {
42
- const parsed = parseYAML(content);
43
- if (!isRecord(parsed) || !isRecord(parsed.coordinates)) {
44
- return { coordinates: {} };
173
+ if (declaredVersion === undefined) {
174
+ const legacy = {};
175
+ for (const [id, entry] of Object.entries(entries)) {
176
+ legacy[id] = entry.span;
177
+ }
178
+ return { status: "legacy", coordinates: legacy };
45
179
  }
46
- const coordinates = {};
47
- for (const [symbolId, record] of Object.entries(parsed.coordinates)) {
48
- const normalizedRecord = normalizeCoordinateRecord(record);
49
- if (!normalizedRecord) {
50
- continue;
180
+ if (declaredVersion !== SYMBOL_COORDINATES_FORMAT_VERSION) {
181
+ return {
182
+ status: "invalid",
183
+ reason: `unsupported or missing artifact version: ${String(declaredVersion)}`,
184
+ };
185
+ }
186
+ if (declaredVersion === SYMBOL_COORDINATES_FORMAT_VERSION) {
187
+ const bound = {};
188
+ for (const [id, entry] of Object.entries(entries)) {
189
+ const identityHash = entry.identityHash;
190
+ const sourceHash = entry.sourceHash;
191
+ if (identityHash === undefined || sourceHash === undefined) {
192
+ return {
193
+ status: "invalid",
194
+ reason: `record '${id}' is missing its identity or source binding in a versioned artifact`,
195
+ };
196
+ }
197
+ bound[id] = { ...entry.span, identityHash, sourceHash };
51
198
  }
52
- coordinates[symbolId] = normalizedRecord;
199
+ return {
200
+ status: "parsed",
201
+ formatVersion: SYMBOL_COORDINATES_FORMAT_VERSION,
202
+ coordinates: bound,
203
+ };
53
204
  }
54
- return { coordinates };
205
+ return { status: "invalid", reason: "unreachable artifact parser state" };
55
206
  }
56
- // implements REQ-core-extractors
57
- export function writeCoordinateArtifact(coordinates) {
207
+ /**
208
+ * Serialize the generated artifact as a version 2 document. Every record is
209
+ * bound to both its manifest identity and exact source content.
210
+ * Key order is deterministic without relying on YAML sortKeys so the
211
+ * human-readable header stays first.
212
+ */
213
+ // implements REQ-generated-coordinate-persistence
214
+ export function writeCoordinateArtifact(entries) {
215
+ const coordinates = {};
216
+ for (const id of Object.keys(entries).sort((left, right) => left.localeCompare(right))) {
217
+ const entry = entries[id];
218
+ if (entry === undefined || !isValidCoordinateSpan(entry)) {
219
+ throw new CoordinateArtifactError(`refusing to publish an invalid or missing coordinate span${id === undefined ? "" : ` for ${id}`}`);
220
+ }
221
+ if (!isSha256Hash(entry.identityHash) || !isSha256Hash(entry.sourceHash)) {
222
+ throw new CoordinateArtifactError(`refusing to publish an invalid or missing identityHash/sourceHash binding for ${id}`);
223
+ }
224
+ coordinates[id] = {
225
+ identityHash: entry.identityHash,
226
+ sourceHash: entry.sourceHash,
227
+ sourceColumn: entry.sourceColumn,
228
+ sourceEndColumn: entry.sourceEndColumn,
229
+ sourceEndLine: entry.sourceEndLine,
230
+ sourceFile: entry.sourceFile,
231
+ sourceLine: entry.sourceLine,
232
+ };
233
+ }
58
234
  const artifact = {
59
- coordinates: sortCoordinates(coordinates),
235
+ version: SYMBOL_COORDINATES_FORMAT_VERSION,
236
+ coordinates,
60
237
  };
61
238
  return `${SYMBOL_COORDINATES_COMMENT_BLOCK}${dumpYAML(artifact, {
62
239
  lineWidth: -1,
63
240
  noRefs: true,
64
- sortKeys: true,
65
241
  })}`;
66
242
  }
67
- // implements REQ-core-extractors
68
- export function mergeCoordinatesWithManifest(symbolRecords, coordinateArtifact) {
69
- const coordinates = coordinateArtifact?.coordinates ?? {};
243
+ /** Serialize a legacy artifact without introducing v2 bindings or metadata. */
244
+ // implements REQ-generated-coordinate-persistence
245
+ export function writeLegacyCoordinateArtifact(entries) {
246
+ const coordinates = {};
247
+ for (const id of Object.keys(entries).sort((left, right) => left.localeCompare(right))) {
248
+ const entry = entries[id];
249
+ if (entry === undefined || !isValidCoordinateSpan(entry)) {
250
+ throw new CoordinateArtifactError(`refusing to publish an invalid or missing legacy coordinate span for ${id}`);
251
+ }
252
+ coordinates[id] = {
253
+ sourceColumn: entry.sourceColumn,
254
+ sourceEndColumn: entry.sourceEndColumn,
255
+ sourceEndLine: entry.sourceEndLine,
256
+ sourceFile: entry.sourceFile,
257
+ sourceLine: entry.sourceLine,
258
+ };
259
+ }
260
+ return `${SYMBOL_COORDINATES_COMMENT_BLOCK}${dumpYAML({ coordinates }, { lineWidth: -1, noRefs: true })}`;
261
+ }
262
+ /**
263
+ * Reader kept for diff/traceability surfaces. Legacy records remain available
264
+ * as spans while v2 records retain their bindings.
265
+ */
266
+ // implements REQ-generated-coordinate-persistence
267
+ export function readCoordinateArtifact(content) {
268
+ const parsed = parseCoordinateArtifact(content);
269
+ if (parsed.status === "invalid") {
270
+ throw new CoordinateArtifactError(parsed.reason);
271
+ }
272
+ const coordinates = {};
273
+ for (const [id, record] of Object.entries(parsed.coordinates)) {
274
+ coordinates[id] = record;
275
+ }
276
+ return { coordinates };
277
+ }
278
+ const GENERATED_MANIFEST_FIELDS = [
279
+ "sourceLine",
280
+ "sourceColumn",
281
+ "sourceEndLine",
282
+ "sourceEndColumn",
283
+ "coordinatesGeneratedAt",
284
+ ];
285
+ function stripGeneratedFields(record) {
286
+ const next = { ...record };
287
+ for (const field of GENERATED_MANIFEST_FIELDS) {
288
+ delete next[field];
289
+ }
290
+ return next;
291
+ }
292
+ function manifestSourceFile(record) {
293
+ if (typeof record.sourceFile === "string" && record.sourceFile.length > 0) {
294
+ return record.sourceFile;
295
+ }
296
+ if (typeof record.source === "string" && record.source.length > 0) {
297
+ return record.source;
298
+ }
299
+ return undefined;
300
+ }
301
+ function defaultResolveSourceText(sourceFile) {
302
+ const absolute = path.isAbsolute(sourceFile)
303
+ ? sourceFile
304
+ : path.resolve(process.cwd(), sourceFile);
305
+ if (!existsSync(absolute))
306
+ return null;
307
+ try {
308
+ const content = readFileSync(absolute, "utf8");
309
+ return typeof content === "string" ? content : null;
310
+ }
311
+ catch {
312
+ return null;
313
+ }
314
+ }
315
+ function overlaySpan(stripped, span) {
316
+ return {
317
+ ...stripped,
318
+ sourceFile: span.sourceFile,
319
+ sourceLine: span.sourceLine,
320
+ sourceColumn: span.sourceColumn,
321
+ sourceEndLine: span.sourceEndLine,
322
+ sourceEndColumn: span.sourceEndColumn,
323
+ };
324
+ }
325
+ /**
326
+ * Overlay generated coordinates onto authored manifest records.
327
+ *
328
+ * Generated fields are always stripped first so stale spans can never reach
329
+ * compiled state. Bound v2 records apply only when both their identity hash
330
+ * and exact source-content hash match the current manifest and source. Legacy
331
+ * records and inline coordinates are accepted only after live declaration
332
+ * validation.
333
+ */
334
+ export function mergeCoordinatesWithManifest(symbolRecords, coordinateArtifact, options = {}) {
335
+ if (coordinateArtifact !== null && "status" in coordinateArtifact) {
336
+ if (coordinateArtifact.status === "invalid") {
337
+ throw new CoordinateArtifactError(coordinateArtifact.reason);
338
+ }
339
+ }
340
+ const resolveSourceText = options.resolveSourceText ?? defaultResolveSourceText;
341
+ const rawCoordinates = coordinateArtifact?.coordinates ?? {};
70
342
  return symbolRecords.map((symbolRecord) => {
71
- const legacyRecord = { ...symbolRecord };
343
+ const stripped = stripGeneratedFields(symbolRecord);
72
344
  const symbolId = typeof symbolRecord.id === "string" ? symbolRecord.id : undefined;
73
- const coordinateRecord = symbolId ? coordinates[symbolId] : undefined;
74
- if (!coordinateRecord) {
75
- return legacyRecord;
345
+ if (symbolId === undefined)
346
+ return stripped;
347
+ const entry = rawCoordinates[symbolId];
348
+ const candidate = entry ??
349
+ (coordinateArtifact === null ? inlineSpanOf(symbolRecord) : undefined);
350
+ if (candidate === undefined)
351
+ return stripped;
352
+ const identityHash = candidate.identityHash;
353
+ const sourceHash = candidate.sourceHash;
354
+ if (identityHash !== undefined || sourceHash !== undefined) {
355
+ const recordSourceFile = manifestSourceFile(symbolRecord);
356
+ const expected = coordinateIdentityHash({
357
+ id: symbolId,
358
+ ...(symbolRecord.title === undefined
359
+ ? {}
360
+ : { title: symbolRecord.title }),
361
+ ...(recordSourceFile === undefined
362
+ ? {}
363
+ : { sourceFile: recordSourceFile }),
364
+ ...(typeof symbolRecord.granularity_reason === "string"
365
+ ? { granularity_reason: symbolRecord.granularity_reason }
366
+ : {}),
367
+ });
368
+ if (!isSha256Hash(identityHash) ||
369
+ !isSha256Hash(sourceHash) ||
370
+ identityHash !== expected ||
371
+ !isValidCoordinateSpan(candidate) ||
372
+ recordSourceFile === undefined ||
373
+ candidate.sourceFile !== recordSourceFile) {
374
+ return stripped;
375
+ }
376
+ const sourceText = resolveSourceText(candidate.sourceFile);
377
+ if (sourceText === null ||
378
+ coordinateSourceHash(sourceText) !== sourceHash) {
379
+ return stripped;
380
+ }
381
+ return overlaySpan(stripped, candidate);
76
382
  }
77
- const { coordinatesGeneratedAt: _coordinatesGeneratedAt, ...mergedRecord } = legacyRecord;
78
- return {
79
- ...mergedRecord,
80
- ...coordinateRecord,
81
- };
383
+ if (!isValidCoordinateSpan(candidate))
384
+ return stripped;
385
+ if (!legacyRecordMatchesCurrentExtraction(symbolRecord, candidate, resolveSourceText)) {
386
+ return stripped;
387
+ }
388
+ return overlaySpan(stripped, candidate);
82
389
  });
83
390
  }
391
+ function legacyRecordMatchesCurrentExtraction(record, entry, resolveSourceText) {
392
+ const sourceFile = manifestSourceFile(record);
393
+ if (sourceFile === undefined || entry.sourceFile !== sourceFile)
394
+ return false;
395
+ const title = typeof record.title === "string" ? record.title : "";
396
+ const declarationName = title.slice(title.lastIndexOf(".") + 1);
397
+ if (declarationName.length === 0)
398
+ return false;
399
+ const content = resolveSourceText(entry.sourceFile);
400
+ if (content === null)
401
+ return false;
402
+ const lines = content.split(/\r?\n/);
403
+ const lineText = lines[entry.sourceLine - 1];
404
+ if (lineText === undefined)
405
+ return false;
406
+ if (entry.sourceColumn > lineText.length - declarationName.length) {
407
+ return false;
408
+ }
409
+ return (lineText.slice(entry.sourceColumn, entry.sourceColumn + declarationName.length) === declarationName);
410
+ }
411
+ function inlineSpanOf(record) {
412
+ const sourceFile = manifestSourceFile(record) ?? "";
413
+ const span = {
414
+ sourceFile,
415
+ sourceLine: typeof record.sourceLine === "number" ? record.sourceLine : -1,
416
+ sourceColumn: typeof record.sourceColumn === "number" ? record.sourceColumn : -1,
417
+ sourceEndLine: typeof record.sourceEndLine === "number" ? record.sourceEndLine : -1,
418
+ sourceEndColumn: typeof record.sourceEndColumn === "number" ? record.sourceEndColumn : -1,
419
+ };
420
+ return isValidCoordinateSpan(span) ? span : undefined;
421
+ }
@@ -77,7 +77,7 @@ export function analyzeSourceText(filePathOrEntries, contentOrWorkspaceRoot, opt
77
77
  export async function enrichSymbolCoordinates(entries, workspaceRoot, deps) {
78
78
  // implements REQ-vscode-traceability
79
79
  const enrichTsCoordinates = deps?.enrichTsCoordinates ?? enrichSymbolCoordinatesWithTsMorph;
80
- const output = entries.map((entry) => ({ ...entry }));
80
+ const output = entries.map((entry) => withoutGeneratedCoordinates(entry));
81
81
  const tsIndices = [];
82
82
  const tsEntries = [];
83
83
  for (let index = 0; index < output.length; index++) {
@@ -107,6 +107,16 @@ export async function enrichSymbolCoordinates(entries, workspaceRoot, deps) {
107
107
  }
108
108
  return output;
109
109
  }
110
+ function withoutGeneratedCoordinates(entry) {
111
+ const generatedFields = new Set([
112
+ "sourceLine",
113
+ "sourceColumn",
114
+ "sourceEndLine",
115
+ "sourceEndColumn",
116
+ "coordinatesGeneratedAt",
117
+ ]);
118
+ return Object.fromEntries(Object.entries(entry).filter(([field]) => !generatedFields.has(field)));
119
+ }
110
120
  function enrichWithRegexHeuristic(entry, absolutePath) {
111
121
  try {
112
122
  const content = fs.readFileSync(absolutePath, "utf8");
@@ -0,0 +1,60 @@
1
+ import { type VALID_ENTITY_TYPES } from "./public/operations/discovery-entities.js";
2
+ import type { PrologPort } from "./public/operations/runtime-types.js";
3
+ import type { SearchMatch } from "./search-ranking.js";
4
+ export type IntentSearchFacetName = "actors" | "actions" | "objects" | "constraints" | "aliases";
5
+ export type IntentSearchFacets = Readonly<Partial<Record<IntentSearchFacetName, readonly string[]>>>;
6
+ export type SourceLocation = Readonly<{
7
+ path: string;
8
+ line?: number;
9
+ column?: number;
10
+ symbol?: string;
11
+ }>;
12
+ export type IntentSearchOptions = Readonly<{
13
+ query: string;
14
+ type?: (typeof VALID_ENTITY_TYPES)[number] | string;
15
+ semanticFacets?: IntentSearchFacets;
16
+ sourceLocations?: readonly SourceLocation[];
17
+ minScore?: number;
18
+ }>;
19
+ export type IntentSourceMatch = Readonly<{
20
+ path: string;
21
+ symbolId?: string;
22
+ distance?: number;
23
+ }>;
24
+ export type IntentGraphPath = Readonly<{
25
+ from: string;
26
+ relationships: readonly string[];
27
+ to: string;
28
+ }>;
29
+ export type IntentSearchEvidence = Readonly<{
30
+ normalizedScore: number;
31
+ matchedFacets: readonly string[];
32
+ sourceMatches: readonly IntentSourceMatch[];
33
+ graphPaths: readonly IntentGraphPath[];
34
+ abstentionEligible: boolean;
35
+ }>;
36
+ export type IntentSearchMatch = SearchMatch & {
37
+ readonly evidence: IntentSearchEvidence;
38
+ };
39
+ export type IntentSearchAnalysis = Readonly<{
40
+ rankingMode: "intent-v1";
41
+ candidateCount: number;
42
+ acceptedCount: number;
43
+ topScore: number | null;
44
+ topTwoMargin: number | null;
45
+ abstained: boolean;
46
+ }>;
47
+ export type IntentSearchResult = Readonly<{
48
+ matches: readonly IntentSearchMatch[];
49
+ analysis: IntentSearchAnalysis;
50
+ }>;
51
+ type GraphEdge = Readonly<{
52
+ relationship: string;
53
+ from: string;
54
+ to: string;
55
+ }>;
56
+ export declare function rankIntentEntities(entities: readonly Record<string, unknown>[], options: IntentSearchOptions, workspaceRoot: string, graphEdges?: readonly GraphEdge[]): Promise<IntentSearchResult>;
57
+ export declare function executeIntentSearch(options: IntentSearchOptions, prolog: PrologPort, workspaceRoot: string): Promise<IntentSearchResult>;
58
+ export declare function validateIntentSearchInput(input: IntentSearchOptions): void;
59
+ export {};
60
+ //# sourceMappingURL=intent-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-search.d.ts","sourceRoot":"","sources":["../src/intent-search.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,MAAM,MAAM,qBAAqB,GAC7B,QAAQ,GACR,SAAS,GACT,SAAS,GACT,aAAa,GACb,SAAS,CAAC;AAGd,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CACvC,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAC1D,CAAC;AAGF,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAGH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IACpD,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,eAAe,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC,CAAC;AAGH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC,CAAC;AAGH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC,CAAC;AAGH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC5C,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;IACvC,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC,CAAC;AAGH,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC5C,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;CACzC,CAAC;AAGF,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AAGH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACtC,QAAQ,EAAE,oBAAoB,CAAC;CAChC,CAAC,CAAC;AAEH,KAAK,SAAS,GAAG,QAAQ,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC,CAAC;AA+RH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC5C,OAAO,EAAE,mBAAmB,EAC5B,aAAa,EAAE,MAAM,EACrB,UAAU,GAAE,SAAS,SAAS,EAAO,GACpC,OAAO,CAAC,kBAAkB,CAAC,CA8F7B;AAyFD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,kBAAkB,CAAC,CAuC7B;AAGD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CA0C1E"}