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,9 @@
1
+ import { createHash } from "node:crypto";
1
2
  export const VERIFICATION_RECEIPT_VERSION = "kibi.verification-receipt.v1";
3
+ // implements REQ-kibi-verification-evidence-contract
4
+ export const VERIFICATION_RECEIPT_V2_VERSION = "kibi.verification-receipt.v2";
5
+ // implements REQ-kibi-verification-evidence-contract
6
+ export const VERIFICATION_CONTRACT_VERSION = "kibi.verification-contract.v1";
2
7
  export const VERIFICATION_RECEIPT_MAX_AGE_SECONDS = 7 * 24 * 60 * 60;
3
8
  export const VERIFICATION_RECEIPT_OUTCOMES = [
4
9
  "passed",
@@ -6,8 +11,10 @@ export const VERIFICATION_RECEIPT_OUTCOMES = [
6
11
  "errored",
7
12
  "cancelled",
8
13
  "skipped",
14
+ "timed_out",
15
+ "interrupted",
9
16
  ];
10
- export const VERIFICATION_RECEIPT_SCHEMA = {
17
+ const VERIFICATION_RECEIPT_V1_SCHEMA = {
11
18
  type: "object",
12
19
  required: [
13
20
  "version",
@@ -42,6 +49,84 @@ export const VERIFICATION_RECEIPT_SCHEMA = {
42
49
  },
43
50
  additionalProperties: false,
44
51
  };
52
+ // implements REQ-kibi-verification-evidence-contract
53
+ export const VERIFICATION_CONTRACT_SCHEMA = {
54
+ type: "object",
55
+ required: [
56
+ "version",
57
+ "runner",
58
+ "command_argv",
59
+ "required_case_symbols",
60
+ "required_projects",
61
+ "success_policy",
62
+ ],
63
+ properties: {
64
+ version: { type: "string", const: VERIFICATION_CONTRACT_VERSION },
65
+ runner: { type: "string", minLength: 1 },
66
+ command_argv: {
67
+ type: "array",
68
+ minItems: 1,
69
+ items: { type: "string", minLength: 1 },
70
+ },
71
+ required_case_symbols: {
72
+ type: "array",
73
+ items: { type: "string", minLength: 1 },
74
+ uniqueItems: true,
75
+ },
76
+ required_projects: {
77
+ type: "array",
78
+ items: { type: "string", minLength: 1 },
79
+ uniqueItems: true,
80
+ },
81
+ success_policy: {
82
+ type: "string",
83
+ const: "all_required_cases_first_attempt",
84
+ },
85
+ },
86
+ additionalProperties: false,
87
+ };
88
+ const VERIFICATION_RECEIPT_V2_SCHEMA = {
89
+ ...VERIFICATION_RECEIPT_V1_SCHEMA,
90
+ required: [
91
+ ...VERIFICATION_RECEIPT_V1_SCHEMA.required,
92
+ "command_argv",
93
+ "contract_hash",
94
+ "case_results",
95
+ ],
96
+ properties: {
97
+ ...VERIFICATION_RECEIPT_V1_SCHEMA.properties,
98
+ version: { type: "string", const: VERIFICATION_RECEIPT_V2_VERSION },
99
+ command_argv: {
100
+ type: "array",
101
+ minItems: 1,
102
+ items: { type: "string", minLength: 1 },
103
+ },
104
+ contract_hash: { type: "string", pattern: "^[a-f0-9]{64}$" },
105
+ case_results: {
106
+ type: "array",
107
+ minItems: 1,
108
+ maxItems: 1000,
109
+ items: {
110
+ type: "object",
111
+ required: ["symbol_id", "project", "outcome", "retries", "duration_ms"],
112
+ properties: {
113
+ symbol_id: { type: "string", minLength: 1 },
114
+ project: { type: "string", minLength: 1 },
115
+ outcome: {
116
+ type: "string",
117
+ enum: ["passed", "failed", "timed_out", "skipped", "interrupted"],
118
+ },
119
+ retries: { type: "integer", minimum: 0 },
120
+ duration_ms: { type: "integer", minimum: 0 },
121
+ },
122
+ additionalProperties: false,
123
+ },
124
+ },
125
+ },
126
+ };
127
+ export const VERIFICATION_RECEIPT_SCHEMA = {
128
+ oneOf: [VERIFICATION_RECEIPT_V1_SCHEMA, VERIFICATION_RECEIPT_V2_SCHEMA],
129
+ };
45
130
  function timestamp(value) {
46
131
  if (typeof value !== "string")
47
132
  return null;
@@ -70,9 +155,8 @@ export function verificationReceiptHistoryErrors(testId, verificationScope, rece
70
155
  if (receipt.test_id !== testId) {
71
156
  errors.push(`${prefix}.test_id must equal '${testId}'`);
72
157
  }
73
- if (typeof verificationScope === "string" &&
74
- receipt.scope !== verificationScope) {
75
- errors.push(`${prefix}.scope must equal the test verification_scope '${verificationScope}'`);
158
+ if (!["unit", "integration", "end_to_end"].includes(receipt.scope)) {
159
+ errors.push(`${prefix}.scope must be a supported verification scope`);
76
160
  }
77
161
  const startedAt = timestamp(receipt.started_at);
78
162
  const finishedAt = timestamp(receipt.finished_at);
@@ -90,6 +174,85 @@ export function verificationReceiptHistoryErrors(testId, verificationScope, rece
90
174
  }
91
175
  if (finishedAt !== null)
92
176
  previousFinishedAt = finishedAt;
177
+ if (receipt.version === VERIFICATION_RECEIPT_V2_VERSION) {
178
+ if (!Array.isArray(receipt.command_argv) ||
179
+ receipt.command_argv.length === 0 ||
180
+ receipt.command_argv.some((argument) => typeof argument !== "string" || argument.trim() === "")) {
181
+ errors.push(`${prefix}.command_argv must be a non-empty argv of strings`);
182
+ }
183
+ if (typeof receipt.contract_hash !== "string" ||
184
+ !/^[a-f0-9]{64}$/.test(receipt.contract_hash)) {
185
+ errors.push(`${prefix}.contract_hash must be a SHA-256 hex digest`);
186
+ }
187
+ const caseResults = receipt.case_results;
188
+ if (!Array.isArray(caseResults) || caseResults.length === 0) {
189
+ errors.push(`${prefix}.case_results must contain at least one contracted case`);
190
+ }
191
+ else {
192
+ const seenCases = new Set();
193
+ for (const [caseIndex, caseResult] of caseResults.entries()) {
194
+ if (!caseResult ||
195
+ typeof caseResult !== "object" ||
196
+ Array.isArray(caseResult)) {
197
+ errors.push(`${prefix}.case_results[${caseIndex}] must be an object`);
198
+ continue;
199
+ }
200
+ const row = caseResult;
201
+ if (typeof row.symbol_id !== "string" ||
202
+ row.symbol_id.trim() === "" ||
203
+ typeof row.project !== "string" ||
204
+ row.project.trim() === "") {
205
+ errors.push(`${prefix}.case_results[${caseIndex}] requires non-empty symbol_id and project`);
206
+ }
207
+ if (![
208
+ "passed",
209
+ "failed",
210
+ "timed_out",
211
+ "skipped",
212
+ "interrupted",
213
+ ].includes(String(row.outcome))) {
214
+ errors.push(`${prefix}.case_results[${caseIndex}].outcome is not a supported result`);
215
+ }
216
+ const key = `${String(row.project ?? "")}\0${String(row.symbol_id ?? "")}`;
217
+ if (seenCases.has(key))
218
+ errors.push(`${prefix}.case_results duplicates '${key.replace("\0", "/")}'`);
219
+ seenCases.add(key);
220
+ if (typeof row.retries !== "number" ||
221
+ !Number.isInteger(row.retries) ||
222
+ row.retries < 0)
223
+ errors.push(`${prefix}.case_results[${caseIndex}].retries must be a non-negative integer`);
224
+ if (typeof row.duration_ms !== "number" ||
225
+ !Number.isInteger(row.duration_ms) ||
226
+ row.duration_ms < 0)
227
+ errors.push(`${prefix}.case_results[${caseIndex}].duration_ms must be a non-negative integer`);
228
+ }
229
+ }
230
+ }
231
+ }
232
+ return errors;
233
+ }
234
+ // implements REQ-kibi-verification-evidence-contract
235
+ export function verificationReceiptCurrentBindingErrors(testId, verificationScope, receipt, contract) {
236
+ const errors = [];
237
+ if (receipt.test_id !== testId) {
238
+ errors.push(`verification receipt test_id must equal '${testId}'`);
239
+ }
240
+ if (typeof verificationScope !== "string") {
241
+ errors.push("verification_scope is required for current receipt evidence");
242
+ }
243
+ else if (receipt.scope !== verificationScope) {
244
+ errors.push(`verification receipt scope must equal the current verification_scope '${verificationScope}'`);
245
+ }
246
+ if (contract !== undefined) {
247
+ if (receipt.version !== VERIFICATION_RECEIPT_V2_VERSION) {
248
+ errors.push("the current verification_contract requires a kibi.verification-receipt.v2");
249
+ }
250
+ else if (typeof receipt.contract_hash === "string") {
251
+ const expectedHash = verificationContractHash(contract);
252
+ if (receipt.contract_hash !== expectedHash) {
253
+ errors.push("verification receipt contract_hash does not match the current verification_contract");
254
+ }
255
+ }
93
256
  }
94
257
  return errors;
95
258
  }
@@ -105,6 +268,10 @@ function canonicalJson(value) {
105
268
  }
106
269
  return JSON.stringify(value);
107
270
  }
271
+ // implements REQ-kibi-verification-evidence-contract
272
+ export function verificationContractHash(contract) {
273
+ return createHash("sha256").update(canonicalJson(contract)).digest("hex");
274
+ }
108
275
  export function appendOnlyVerificationReceiptHistoryErrors(previous, next) {
109
276
  if (previous.length === 0)
110
277
  return [];
@@ -35,6 +35,22 @@ export declare function readShard(shardPath: string): RelationshipRecord[];
35
35
  * Creates parent directories if needed.
36
36
  */
37
37
  export declare function writeShard(shardPath: string, records: RelationshipRecord[]): void;
38
+ export type RelationshipSelector = Readonly<{
39
+ type: string;
40
+ from: string;
41
+ to: string;
42
+ }>;
43
+ export type RemovedRelationshipRecords = Readonly<{
44
+ selector: RelationshipSelector;
45
+ shardPaths: readonly string[];
46
+ sources: readonly string[];
47
+ removed: boolean;
48
+ }>;
49
+ /**
50
+ * Remove exact legacy-shard relationships using an atomic temp-file rename.
51
+ * The caller is responsible for retracting the compiled RDF edge afterwards.
52
+ */
53
+ export declare function removeRelationshipsFromShards(kbRoot: string, selectors: readonly RelationshipSelector[]): RemovedRelationshipRecords[];
38
54
  /**
39
55
  * Appends a relationship to the appropriate shard.
40
56
  * Returns the shard path and record ID.
@@ -1 +1 @@
1
- {"version":3,"file":"shards.d.ts","sourceRoot":"","sources":["../../src/relationships/shards.ts"],"names":[],"mappings":"AAuBA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGzE;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAsFjE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB,EAAE,GAC5B,IAAI,CAoBN;AAqCD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,GAC3C;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CA4BzC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAUnD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAUlE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAC1B,kBAAkB,EAAE,CAKtB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,MAAM,CAMR;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAE1B,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,QAAQ,EAAE,kBAAkB,EAAE,GAC7B,kBAAkB,EAAE,CAgCtB"}
1
+ {"version":3,"file":"shards.d.ts","sourceRoot":"","sources":["../../src/relationships/shards.ts"],"names":[],"mappings":"AAwBA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGzE;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAsFjE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB,EAAE,GAC5B,IAAI,CAoBN;AAwBD,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAChD,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC,CAAC;AAEH;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,oBAAoB,EAAE,GACzC,0BAA0B,EAAE,CAwD9B;AAqCD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,GAC3C;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAwCzC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAUnD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAUlE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAC1B,kBAAkB,EAAE,CAKtB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,MAAM,CAMR;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAE1B,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,QAAQ,EAAE,kBAAkB,EAAE,GAC7B,kBAAkB,EAAE,CAgCtB"}
@@ -19,6 +19,7 @@ import * as crypto from "node:crypto";
19
19
  import * as fs from "node:fs";
20
20
  import * as path from "node:path";
21
21
  import { load as parseYAML } from "js-yaml";
22
+ import { parseDocument } from "yaml";
22
23
  /**
23
24
  * Gets the path to the relationships directory for a given KB root.
24
25
  */
@@ -132,7 +133,80 @@ export function writeShard(shardPath, records) {
132
133
  unique.push(record);
133
134
  }
134
135
  const yamlContent = serializeToYAML(unique);
135
- fs.writeFileSync(shardPath, yamlContent, "utf8");
136
+ atomicWriteText(shardPath, yamlContent);
137
+ }
138
+ /**
139
+ * Publish one canonical shard replacement atomically. Relationship shards are
140
+ * authored source, so a torn write must never leave a half-valid YAML file
141
+ * for the next sync or Git operation.
142
+ */
143
+ function atomicWriteText(targetPath, body) {
144
+ const temporary = `${targetPath}.kibi-write-${process.pid}-${Date.now()}-${Math.random()
145
+ .toString(16)
146
+ .slice(2)}`;
147
+ try {
148
+ fs.writeFileSync(temporary, body, { encoding: "utf8", mode: 0o600 });
149
+ fs.renameSync(temporary, targetPath);
150
+ }
151
+ catch (error) {
152
+ try {
153
+ if (fs.existsSync(temporary))
154
+ fs.unlinkSync(temporary);
155
+ }
156
+ catch {
157
+ // Preserve the original publication failure.
158
+ }
159
+ throw error;
160
+ }
161
+ }
162
+ /**
163
+ * Remove exact legacy-shard relationships using an atomic temp-file rename.
164
+ * The caller is responsible for retracting the compiled RDF edge afterwards.
165
+ */
166
+ export function removeRelationshipsFromShards(kbRoot, selectors) {
167
+ const wanted = new Set(selectors.map((selector) => `${selector.type}\0${selector.from}\0${selector.to}`));
168
+ const removed = new Map();
169
+ for (const shardPath of listShards(kbRoot)) {
170
+ const records = readShard(shardPath);
171
+ const matching = records.filter((record) => wanted.has(`${record.type}\0${record.from}\0${record.to}`));
172
+ if (matching.length === 0)
173
+ continue;
174
+ // Patch the YAML sequence in place so comments, ordering, and unrelated
175
+ // records survive a relationship deletion. The compiled store is never
176
+ // the mutation target; this shard remains the canonical source artifact.
177
+ const document = parseDocument(fs.readFileSync(shardPath, "utf8"));
178
+ const sequence = document.get("relationships", true);
179
+ if (!sequence || typeof sequence !== "object" || !("items" in sequence)) {
180
+ throw new Error(`Invalid shard file: missing 'relationships' array at ${shardPath}`);
181
+ }
182
+ const items = sequence.items;
183
+ for (let index = items.length - 1; index >= 0; index -= 1) {
184
+ const item = items[index];
185
+ if (!item || typeof item !== "object" || !("get" in item))
186
+ continue;
187
+ const get = item.get.bind(item);
188
+ if (wanted.has(`${String(get("type"))}\0${String(get("from"))}\0${String(get("to"))}`)) {
189
+ document.deleteIn(["relationships", index]);
190
+ }
191
+ }
192
+ atomicWriteText(shardPath, document.toString());
193
+ for (const record of matching) {
194
+ const key = `${record.type}\0${record.from}\0${record.to}`;
195
+ const entry = removed.get(key) ?? { paths: [], sources: [] };
196
+ entry.paths.push(shardPath);
197
+ entry.sources.push(record.source);
198
+ removed.set(key, entry);
199
+ }
200
+ }
201
+ return selectors.map((selector) => {
202
+ const entry = removed.get(`${selector.type}\0${selector.from}\0${selector.to}`);
203
+ return {
204
+ selector,
205
+ shardPaths: entry?.paths ?? [],
206
+ sources: entry?.sources ?? [],
207
+ removed: entry !== undefined,
208
+ };
209
+ });
136
210
  }
137
211
  /**
138
212
  * Serializes records to YAML format.
@@ -185,7 +259,18 @@ export function appendRelationship(kbRoot, relationship) {
185
259
  ...relationship,
186
260
  id: recordId,
187
261
  };
188
- writeShard(shardPath, [...existing, newRecord]);
262
+ if (fs.existsSync(shardPath)) {
263
+ const document = parseDocument(fs.readFileSync(shardPath, "utf8"));
264
+ const sequence = document.get("relationships", true);
265
+ if (!sequence || typeof sequence !== "object" || !("items" in sequence)) {
266
+ throw new Error(`Invalid shard file: missing 'relationships' array at ${shardPath}`);
267
+ }
268
+ sequence.items.push(newRecord);
269
+ atomicWriteText(shardPath, document.toString());
270
+ }
271
+ else {
272
+ writeShard(shardPath, [newRecord]);
273
+ }
189
274
  }
190
275
  return { shardPath, recordId };
191
276
  }
@@ -0,0 +1,19 @@
1
+ export declare const KIBI_BRAND: {
2
+ readonly carbon: "#1d1e23";
3
+ readonly deepCarbon: "#111318";
4
+ readonly panel: "#191c22";
5
+ readonly ice: "#a2d3f4";
6
+ readonly signal: "#3e8ed6";
7
+ readonly snow: "#f4f8fb";
8
+ readonly mist: "#aab8c2";
9
+ readonly rail: "#34434f";
10
+ readonly success: "#63c99a";
11
+ readonly warning: "#f2b84b";
12
+ readonly danger: "#f07178";
13
+ };
14
+ export declare function renderKibiLogo(className?: string): string;
15
+ export declare function renderKibiWordmark(className?: string): string;
16
+ export declare function renderKibiFaviconSvg(): string;
17
+ export declare function renderKibiFaviconDataUri(): string;
18
+ export declare function renderKibiBadge(message: string, statusColor: string): string;
19
+ //# sourceMappingURL=brand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/report/brand.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;CAYb,CAAC;AAmBX,wBAAgB,cAAc,CAAC,SAAS,SAAK,GAAG,MAAM,CAErD;AAGD,wBAAgB,kBAAkB,CAAC,SAAS,SAAK,GAAG,MAAM,CAEzD;AAGD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAGD,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAgDD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CA+B5E"}
@@ -0,0 +1,112 @@
1
+ export const KIBI_BRAND = {
2
+ carbon: "#1d1e23",
3
+ deepCarbon: "#111318",
4
+ panel: "#191c22",
5
+ ice: "#a2d3f4",
6
+ signal: "#3e8ed6",
7
+ snow: "#f4f8fb",
8
+ mist: "#aab8c2",
9
+ rail: "#34434f",
10
+ success: "#63c99a",
11
+ warning: "#f2b84b",
12
+ danger: "#f07178",
13
+ };
14
+ // Visible path/ellipse markup from assets/logo.svg and assets/wordmark.svg.
15
+ // Packed reports stay self-contained; the e2e fingerprint compares these marks
16
+ // to the canonical files, so keep the geometry in lockstep with those assets.
17
+ const LOGO_BODY = `<path d="M59.403564453125,0.548828125C67.20257568359375,-0.47119140625,80.16162109375,0.2437744140625,88.4605712890625,0.24078369140625L146.50048828125,0.227783203125L214.8255615234375,0.23577880859375C240.16748046875,0.2437744140625,262.236572265625,-2.67620849609375,283.3775634765625,14.2947998046875C311.0205078125,36.48480224609375,307.6495361328125,66.8988037109375,307.671630859375,98.5548095703125L307.6895751953125,162.74783325195312L307.66552734375,217.54684448242188C307.6585693359375,226.07479858398438,307.653564453125,234.5628662109375,307.504638671875,243.0877685546875C306.8895263671875,278.2227783203125,283.66259765625,304.5137939453125,248.32958984375,308.1297607421875C240.6875,308.9278564453125,226.1695556640625,308.5008544921875,217.8525390625,308.4927978515625L161.468505859375,308.4508056640625L93.9794921875,308.5028076171875C68.57257080078125,308.5147705078125,46.83258056640625,311.5418701171875,25.39654541015625,295.0338134765625C-2.66644287109375,273.423828125,0.13555908203125,245.0108642578125,0.10955810546875,213.40182495117188L0.0855712890625,154.30581665039062L0.10357666015625,95.5968017578125C0.112548828125,81.48980712890625,-0.62841796875,66.85577392578125,1.7275390625,52.96478271484375C6.78955078125,23.11376953125,30.14154052734375,3.88580322265625,59.403564453125,0.548828125Z" fill="${KIBI_BRAND.carbon}"/><ellipse cx="113.3257670641164" cy="150.86303791579667" rx="51.325767064116405" ry="51.52454059083652" fill="${KIBI_BRAND.ice}"/><path d="M228.05255126953125,197.78256225585938L227.611572265625,165.51681518554688L156.5028076171875,165.69512939453125L95.43316650390625,165.28231811523438L95.4334716796875,135.09622192382812L156.503173828125,135.26748657226562L227.535888671875,135.08938598632812L227.53631591796875,101.200927734375L252.20697021484375,101.20071411132812L252.20599365234375,197.78225708007812" fill="${KIBI_BRAND.ice}"/>`;
18
+ const WORDMARK_BODY = `<ellipse cx="337.16000366210943" cy="30.99999999999997" rx="20.000000000000057" ry="19.99999999999997" fill="${KIBI_BRAND.signal}"/><path d="M381.8653869628906,49.212493896484375L381.6935119628906,36.688079833984375L353.9847106933594,36.757293701171875L330.1878356933594,36.5970458984375L330.1879577636719,24.8798828125L353.9848327636719,24.94635009765625L381.6640319824219,24.877227783203125L381.6641540527344,11.722930908203125L391.2775573730469,11.72283935546875L391.2771301269531,49.212371826171875" fill="${KIBI_BRAND.signal}"/><path d="M0,155.33001708984375L0,22.1300048828125L19.6199951171875,22.1300048828125L19.6199951171875,102.58999633789062L20.519989013671875,102.58999633789062L35.100006103515625,87.6500244140625L61.20001220703125,62.45001220703125L84.42001342773438,62.45001220703125L46.800018310546875,98.989990234375L88.55999755859375,155.33001708984375L64.98001098632812,155.33001708984375L32.579986572265625,110.1500244140625L19.6199951171875,122.21002197265625L19.6199951171875,155.33001708984375L0,155.33001708984375L0,155.33001708984375M110.33999633789062,155.33001708984375L110.33999633789062,139.49002075195312L132.01998901367188,139.49002075195312L132.01998901367188,78.28997802734375L100.33999633789062,78.28997802734375L100.33999633789062,62.45001220703125L151.63998413085938,62.45001220703125L151.63998413085938,139.49002075195312L171.33999633789062,139.49002075195312L171.33999633789062,155.33001708984375L110.33999633789062,155.33001708984375L110.33999633789062,155.33001708984375M194.3800048828125,155.33001708984375L194.3800048828125,22.1300048828125L214,22.1300048828125L214.08001708984375,70L215.16000366210938,70C221.16000366210938,65,220.16000366210938,66,224.16000366210938,64C229.1324462890625,61.513824462890625,236.32000732421875,60.28997802734375,243.16000366210938,60.28997802734375L243.16000366210938,60.28997802734375C254.08004760742188,60.28997802734375,262.7799987792969,64.3699951171875,269.2599792480469,72.52999877929688C275.7399597167969,80.69000244140625,278.9800109863281,92.80999755859375,278.9800109863281,108.8900146484375L278.9800109863281,108.8900146484375C278.9800109863281,124.97000122070312,275.7399597167969,137.08999633789062,269.2599792480469,145.25C262.7799987792969,153.41000366210938,254.08004760742188,157.49002075195312,243.16000366210938,157.49002075195312L243.16000366210938,157.49002075195312C236.32000732421875,157.49002075195312,227.92709350585938,156.8602294921875,223.16000366210938,154C218.16000366210938,151,219.16000366210938,152,215.16000366210938,147L215.16000366210938,147L214.08001708984375,147L214,155.33001708984375L194.3800048828125,155.33001708984375L194.3800048828125,155.33001708984375M235.05999755859375,141.47000122070312L235.05999755859375,141.47000122070312C242.5,141.47000122070312,248.23001098632812,139.19000244140625,252.24996948242188,134.6300048828125C256.2699890136719,130.07000732421875,258.2799987792969,124.010009765625,258.2799987792969,116.45001220703125L258.2799987792969,116.45001220703125L258.2799987792969,101.33001708984375C258.2799987792969,93.77001953125,256.2699890136719,87.71002197265625,252.24996948242188,83.1500244140625C248.23001098632812,78.59002685546875,242.5,76.30999755859375,235.05999755859375,76.30999755859375L235.05999755859375,76.30999755859375C232.18002319335938,76.30999755859375,229.48001098632812,76.66998291015625,226.95999145507812,77.3900146484375C224.44000244140625,78.1099853515625,222.22000122070312,79.19000244140625,220.30001831054688,80.6300048828125C218.3800048828125,82.07000732421875,216.85000610351562,83.84002685546875,215.70999145507812,85.94000244140625C214.57000732421875,88.03997802734375,214,90.52999877929688,214,93.41000366210938L214,93.41000366210938L214,124.3699951171875C214,127.25,214.57000732421875,129.74002075195312,215.70999145507812,131.83999633789062C216.85000610351562,133.94000244140625,218.3800048828125,135.70999145507812,220.30001831054688,137.14999389648438C222.22000122070312,138.58999633789062,224.44000244140625,139.67001342773438,226.95999145507812,140.3900146484375C229.48001098632812,141.11001586914062,232.18002319335938,141.47000122070312,235.05999755859375,141.47000122070312L235.05999755859375,141.47000122070312M306.3399963378906,155.33001708984375L306.3399963378906,139.49002075195312L328.0199890136719,139.49002075195312L328.0199890136719,78.28997802734375L296.3399963378906,78.28997802734375L296.3399963378906,62.45001220703125L347.6399841308594,62.45001220703125L347.6399841308594,139.49002075195312L367.3399963378906,139.49002075195312L367.3399963378906,155.33001708984375L306.3399963378906,155.33001708984375L306.3399963378906,155.33001708984375" fill="${KIBI_BRAND.ice}"/><ellipse cx="141.66000366210938" cy="31.5" rx="12.5" ry="12.5" fill="${KIBI_BRAND.ice}"/>`;
19
+ function xml(value) {
20
+ return value
21
+ .replaceAll("&", "&amp;")
22
+ .replaceAll("<", "&lt;")
23
+ .replaceAll(">", "&gt;")
24
+ .replaceAll('"', "&quot;")
25
+ .replaceAll("'", "&apos;");
26
+ }
27
+ // implements REQ-kibi-branded-health-report
28
+ export function renderKibiLogo(className = "") {
29
+ return `<svg${className ? ` class="${xml(className)}"` : ""} viewBox="0 0 308 309" role="img" aria-label="Kibi logo">${LOGO_BODY}</svg>`;
30
+ }
31
+ // implements REQ-kibi-branded-health-report
32
+ export function renderKibiWordmark(className = "") {
33
+ return `<svg${className ? ` class="${xml(className)}"` : ""} viewBox="-2 10 395 148" role="img" aria-label="Kibi">${WORDMARK_BODY}</svg>`;
34
+ }
35
+ // implements REQ-kibi-branded-health-report
36
+ export function renderKibiFaviconSvg() {
37
+ return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 308 309">${LOGO_BODY}</svg>`;
38
+ }
39
+ // implements REQ-kibi-branded-health-report
40
+ export function renderKibiFaviconDataUri() {
41
+ return `data:image/svg+xml;utf8,${encodeURIComponent(renderKibiFaviconSvg())}`;
42
+ }
43
+ const BADGE_HEIGHT = 20;
44
+ const BADGE_LABEL = "kibi";
45
+ const BADGE_FONT = "DejaVu Sans,Verdana,Geneva,sans-serif";
46
+ const BADGE_LOGO = 14;
47
+ const BADGE_LOGO_LEFT = 5;
48
+ const BADGE_LOGO_GAP = 3;
49
+ const BADGE_TEXT_PAD = 8;
50
+ const BADGE_LABEL_FILL = "#555";
51
+ const BADGE_TEXT_FILL = "#fff";
52
+ const BADGE_TEXT_SHADOW = "#010101";
53
+ const BADGE_LOGO_BODY = LOGO_BODY.replaceAll(`fill="${KIBI_BRAND.carbon}"`, `fill="${BADGE_LABEL_FILL}"`);
54
+ function badgeTextWidth(text) {
55
+ let width = 0;
56
+ for (const char of text) {
57
+ if (char === " ")
58
+ width += 4;
59
+ else if (char === "%")
60
+ width += 9;
61
+ else
62
+ width += 7;
63
+ }
64
+ return Math.ceil(width);
65
+ }
66
+ function badgeLabelWidth(label) {
67
+ return (BADGE_LOGO_LEFT +
68
+ BADGE_LOGO +
69
+ BADGE_LOGO_GAP +
70
+ badgeTextWidth(label) +
71
+ BADGE_TEXT_PAD);
72
+ }
73
+ function badgeMessageWidth(message) {
74
+ return BADGE_TEXT_PAD + badgeTextWidth(message) + BADGE_TEXT_PAD;
75
+ }
76
+ function badgeCaption(x, text) {
77
+ const safe = xml(text);
78
+ return `<text x="${x}" y="15" fill="${BADGE_TEXT_SHADOW}" fill-opacity=".3">${safe}</text>
79
+ <text x="${x}" y="14" fill="${BADGE_TEXT_FILL}">${safe}</text>`;
80
+ }
81
+ // implements REQ-kibi-branded-health-report
82
+ export function renderKibiBadge(message, statusColor) {
83
+ const accessible = `Kibi requirement health: ${message}`;
84
+ const labelWidth = badgeLabelWidth(BADGE_LABEL);
85
+ const messageWidth = badgeMessageWidth(message);
86
+ const width = labelWidth + messageWidth;
87
+ const logoX = BADGE_LOGO_LEFT;
88
+ const logoY = (BADGE_HEIGHT - BADGE_LOGO) / 2;
89
+ const labelTextX = BADGE_LOGO_LEFT +
90
+ BADGE_LOGO +
91
+ BADGE_LOGO_GAP +
92
+ badgeTextWidth(BADGE_LABEL) / 2;
93
+ const messageTextX = labelWidth + messageWidth / 2;
94
+ return `<svg xmlns="http://www.w3.org/2000/svg" role="img" aria-label="${xml(accessible)}" width="${width}" height="${BADGE_HEIGHT}" viewBox="0 0 ${width} ${BADGE_HEIGHT}">
95
+ <title>${xml(accessible)}</title>
96
+ <linearGradient id="kibi-badge-s" x2="0" y2="100%">
97
+ <stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
98
+ <stop offset="1" stop-opacity=".1"/>
99
+ </linearGradient>
100
+ <clipPath id="kibi-badge"><rect width="${width}" height="${BADGE_HEIGHT}" rx="3" fill="#fff"/></clipPath>
101
+ <g clip-path="url(#kibi-badge)">
102
+ <rect width="${labelWidth}" height="${BADGE_HEIGHT}" fill="${BADGE_LABEL_FILL}"/>
103
+ <rect x="${labelWidth}" width="${messageWidth}" height="${BADGE_HEIGHT}" fill="${xml(statusColor)}"/>
104
+ <rect width="${width}" height="${BADGE_HEIGHT}" fill="url(#kibi-badge-s)"/>
105
+ </g>
106
+ <g fill="${BADGE_TEXT_FILL}" text-anchor="middle" font-family="${BADGE_FONT}" font-size="11">
107
+ ${badgeCaption(labelTextX, BADGE_LABEL)}
108
+ ${badgeCaption(messageTextX, message)}
109
+ </g>
110
+ <svg x="${logoX}" y="${logoY}" width="${BADGE_LOGO}" height="${BADGE_LOGO}" viewBox="0 0 308 309" aria-hidden="true">${BADGE_LOGO_BODY}</svg>
111
+ </svg>`;
112
+ }
@@ -0,0 +1,19 @@
1
+ import { type ReportRepository } from "./repository.js";
2
+ type UnknownRecord = Readonly<Record<string, unknown>>;
3
+ export declare const REPORT_CSP = "default-src 'none'; img-src data:; style-src 'unsafe-inline'; script-src 'unsafe-inline'";
4
+ export declare const KIBI_GETTING_STARTED_URL = "https://github.com/Looted/kibi/blob/develop/docs/install.md";
5
+ export type HtmlReportCoverage = Readonly<{
6
+ summary: UnknownRecord;
7
+ rows: readonly UnknownRecord[];
8
+ meta?: UnknownRecord;
9
+ }>;
10
+ export type HtmlReportInput = Readonly<{
11
+ requirements: HtmlReportCoverage;
12
+ symbols: HtmlReportCoverage;
13
+ branch: string;
14
+ generatedAt: Date;
15
+ repository?: ReportRepository;
16
+ }>;
17
+ export declare function renderHtmlReport(input: HtmlReportInput): string;
18
+ export {};
19
+ //# sourceMappingURL=html-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-report.d.ts","sourceRoot":"","sources":["../../src/report/html-report.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,gBAAgB,EAMtB,MAAM,iBAAiB,CAAC;AAEzB,KAAK,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAGvD,eAAO,MAAM,UAAU,6FACqE,CAAC;AAG7F,eAAO,MAAM,wBAAwB,gEAC0B,CAAC;AAEhE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,YAAY,EAAE,kBAAkB,CAAC;IACjC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,IAAI,CAAC;IAClB,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B,CAAC,CAAC;AA8lBH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAke/D"}