kibi-cli 0.14.0 → 0.16.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 (432) hide show
  1. package/bin/kibi +3 -1
  2. package/dist/cli-command.d.ts +5 -0
  3. package/dist/cli-command.d.ts.map +1 -0
  4. package/dist/cli-command.js +9 -0
  5. package/dist/cli-errors.d.ts +13 -0
  6. package/dist/cli-errors.d.ts.map +1 -0
  7. package/dist/cli-errors.js +26 -0
  8. package/dist/cli-input.d.ts +6 -0
  9. package/dist/cli-input.d.ts.map +1 -0
  10. package/dist/cli-input.js +54 -0
  11. package/dist/cli-json-command.d.ts +14 -0
  12. package/dist/cli-json-command.d.ts.map +1 -0
  13. package/dist/cli-json-command.js +96 -0
  14. package/dist/cli-protocol.d.ts +12 -0
  15. package/dist/cli-protocol.d.ts.map +1 -0
  16. package/dist/cli-protocol.js +37 -0
  17. package/dist/cli-register-foundation.d.ts +3 -0
  18. package/dist/cli-register-foundation.d.ts.map +1 -0
  19. package/dist/cli-register-foundation.js +90 -0
  20. package/dist/cli-register-maintenance.d.ts +3 -0
  21. package/dist/cli-register-maintenance.d.ts.map +1 -0
  22. package/dist/cli-register-maintenance.js +36 -0
  23. package/dist/cli-register-reporting.d.ts +3 -0
  24. package/dist/cli-register-reporting.d.ts.map +1 -0
  25. package/dist/cli-register-reporting.js +101 -0
  26. package/dist/cli-register-skills.d.ts +3 -0
  27. package/dist/cli-register-skills.d.ts.map +1 -0
  28. package/dist/cli-register-skills.js +71 -0
  29. package/dist/cli-validate.d.ts +18 -0
  30. package/dist/cli-validate.d.ts.map +1 -0
  31. package/dist/cli-validate.js +45 -0
  32. package/dist/cli.d.ts +4 -4
  33. package/dist/cli.d.ts.map +1 -1
  34. package/dist/cli.js +48 -211
  35. package/dist/commands/aggregated-checks.d.ts +1 -1
  36. package/dist/commands/aggregated-checks.d.ts.map +1 -1
  37. package/dist/commands/aggregated-checks.js +28 -34
  38. package/dist/commands/check.d.ts +1 -1
  39. package/dist/commands/check.d.ts.map +1 -1
  40. package/dist/commands/check.js +52 -94
  41. package/dist/commands/coverage.d.ts.map +1 -1
  42. package/dist/commands/coverage.js +12 -17
  43. package/dist/commands/discovery-shared.d.ts +2 -1
  44. package/dist/commands/discovery-shared.d.ts.map +1 -1
  45. package/dist/commands/discovery-shared.js +6 -18
  46. package/dist/commands/gaps.d.ts.map +1 -1
  47. package/dist/commands/gaps.js +15 -19
  48. package/dist/commands/graph.d.ts.map +1 -1
  49. package/dist/commands/graph.js +15 -21
  50. package/dist/commands/query.d.ts +7 -7
  51. package/dist/commands/query.d.ts.map +1 -1
  52. package/dist/commands/query.js +98 -204
  53. package/dist/commands/search.d.ts +4 -4
  54. package/dist/commands/search.d.ts.map +1 -1
  55. package/dist/commands/search.js +14 -27
  56. package/dist/commands/status.d.ts +1 -1
  57. package/dist/commands/status.d.ts.map +1 -1
  58. package/dist/commands/status.js +6 -7
  59. package/dist/commands/sync/manifest.d.ts +1 -1
  60. package/dist/commands/sync/manifest.d.ts.map +1 -1
  61. package/dist/commands/sync/manifest.js +9 -17
  62. package/dist/commands/sync/persistence.d.ts.map +1 -1
  63. package/dist/commands/sync/persistence.js +22 -1
  64. package/dist/extractors/markdown.d.ts +14 -2
  65. package/dist/extractors/markdown.d.ts.map +1 -1
  66. package/dist/extractors/markdown.js +38 -1
  67. package/dist/extractors/symbols-ts.d.ts.map +1 -1
  68. package/dist/extractors/symbols-ts.js +11 -1
  69. package/dist/operations/autopilot/activation.d.ts +4 -0
  70. package/dist/operations/autopilot/activation.d.ts.map +1 -0
  71. package/dist/operations/autopilot/activation.js +130 -0
  72. package/dist/operations/autopilot/candidate-helpers.d.ts +13 -0
  73. package/dist/operations/autopilot/candidate-helpers.d.ts.map +1 -0
  74. package/dist/operations/autopilot/candidate-helpers.js +55 -0
  75. package/dist/operations/autopilot/candidates.d.ts +4 -0
  76. package/dist/operations/autopilot/candidates.d.ts.map +1 -0
  77. package/dist/operations/autopilot/candidates.js +114 -0
  78. package/dist/operations/autopilot/discovery-evidence.d.ts +10 -0
  79. package/dist/operations/autopilot/discovery-evidence.d.ts.map +1 -0
  80. package/dist/operations/autopilot/discovery-evidence.js +158 -0
  81. package/dist/operations/autopilot/discovery.d.ts +4 -0
  82. package/dist/operations/autopilot/discovery.d.ts.map +1 -0
  83. package/dist/operations/autopilot/discovery.js +100 -0
  84. package/dist/operations/autopilot/generate.d.ts +8 -0
  85. package/dist/operations/autopilot/generate.d.ts.map +1 -0
  86. package/dist/operations/autopilot/generate.js +112 -0
  87. package/dist/operations/autopilot/guidance-actions.d.ts +3 -0
  88. package/dist/operations/autopilot/guidance-actions.d.ts.map +1 -0
  89. package/dist/operations/autopilot/guidance-actions.js +79 -0
  90. package/dist/operations/autopilot/guidance.d.ts +14 -0
  91. package/dist/operations/autopilot/guidance.d.ts.map +1 -0
  92. package/dist/operations/autopilot/guidance.js +124 -0
  93. package/dist/operations/autopilot/markdown-candidates.d.ts +7 -0
  94. package/dist/operations/autopilot/markdown-candidates.d.ts.map +1 -0
  95. package/dist/operations/autopilot/markdown-candidates.js +134 -0
  96. package/dist/operations/autopilot/presentation.d.ts +13 -0
  97. package/dist/operations/autopilot/presentation.d.ts.map +1 -0
  98. package/dist/operations/autopilot/presentation.js +91 -0
  99. package/dist/operations/autopilot/requirement-claims.d.ts +3 -0
  100. package/dist/operations/autopilot/requirement-claims.d.ts.map +1 -0
  101. package/dist/operations/autopilot/requirement-claims.js +48 -0
  102. package/dist/operations/autopilot/types.d.ts +117 -0
  103. package/dist/operations/autopilot/types.d.ts.map +1 -0
  104. package/dist/operations/autopilot/types.js +8 -0
  105. package/dist/operations/modeling/model-requirement.d.ts +10 -0
  106. package/dist/operations/modeling/model-requirement.d.ts.map +1 -0
  107. package/dist/operations/modeling/model-requirement.js +108 -0
  108. package/dist/operations/modeling/predicate-applyplan.d.ts +6 -0
  109. package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -0
  110. package/dist/operations/modeling/predicate-applyplan.js +104 -0
  111. package/dist/operations/modeling/predicate-catalog-1.d.ts +3 -0
  112. package/dist/operations/modeling/predicate-catalog-1.d.ts.map +1 -0
  113. package/dist/operations/modeling/predicate-catalog-1.js +200 -0
  114. package/dist/operations/modeling/predicate-catalog-2.d.ts +3 -0
  115. package/dist/operations/modeling/predicate-catalog-2.d.ts.map +1 -0
  116. package/dist/operations/modeling/predicate-catalog-2.js +197 -0
  117. package/dist/operations/modeling/predicate-catalog-3.d.ts +3 -0
  118. package/dist/operations/modeling/predicate-catalog-3.d.ts.map +1 -0
  119. package/dist/operations/modeling/predicate-catalog-3.js +193 -0
  120. package/dist/operations/modeling/predicate-catalog-4.d.ts +3 -0
  121. package/dist/operations/modeling/predicate-catalog-4.d.ts.map +1 -0
  122. package/dist/operations/modeling/predicate-catalog-4.js +149 -0
  123. package/dist/operations/modeling/predicate-catalog.d.ts +5 -0
  124. package/dist/operations/modeling/predicate-catalog.d.ts.map +1 -0
  125. package/dist/operations/modeling/predicate-catalog.js +29 -0
  126. package/dist/operations/modeling/predicate-inference-1.d.ts +16 -0
  127. package/dist/operations/modeling/predicate-inference-1.d.ts.map +1 -0
  128. package/dist/operations/modeling/predicate-inference-1.js +161 -0
  129. package/dist/operations/modeling/predicate-inference-2.d.ts +19 -0
  130. package/dist/operations/modeling/predicate-inference-2.d.ts.map +1 -0
  131. package/dist/operations/modeling/predicate-inference-2.js +169 -0
  132. package/dist/operations/modeling/predicate-inference-3.d.ts +15 -0
  133. package/dist/operations/modeling/predicate-inference-3.d.ts.map +1 -0
  134. package/dist/operations/modeling/predicate-inference-3.js +163 -0
  135. package/dist/operations/modeling/predicate-inference.d.ts +5 -0
  136. package/dist/operations/modeling/predicate-inference.d.ts.map +1 -0
  137. package/dist/operations/modeling/predicate-inference.js +148 -0
  138. package/dist/operations/modeling/predicate-loader.d.ts +10 -0
  139. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -0
  140. package/dist/operations/modeling/predicate-loader.js +88 -0
  141. package/dist/operations/modeling/predicate-ranker.d.ts +3 -0
  142. package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -0
  143. package/dist/operations/modeling/predicate-ranker.js +24 -0
  144. package/dist/operations/modeling/predicate-score-1.d.ts +3 -0
  145. package/dist/operations/modeling/predicate-score-1.d.ts.map +1 -0
  146. package/dist/operations/modeling/predicate-score-1.js +121 -0
  147. package/dist/operations/modeling/predicate-score-2.d.ts +3 -0
  148. package/dist/operations/modeling/predicate-score-2.d.ts.map +1 -0
  149. package/dist/operations/modeling/predicate-score-2.js +122 -0
  150. package/dist/operations/modeling/predicate-score-3.d.ts +3 -0
  151. package/dist/operations/modeling/predicate-score-3.d.ts.map +1 -0
  152. package/dist/operations/modeling/predicate-score-3.js +54 -0
  153. package/dist/operations/modeling/predicate-types.d.ts +61 -0
  154. package/dist/operations/modeling/predicate-types.d.ts.map +1 -0
  155. package/dist/operations/modeling/predicate-types.js +1 -0
  156. package/dist/operations/modeling/predicate-usage-hints-1.d.ts +3 -0
  157. package/dist/operations/modeling/predicate-usage-hints-1.d.ts.map +1 -0
  158. package/dist/operations/modeling/predicate-usage-hints-1.js +211 -0
  159. package/dist/operations/modeling/predicate-usage-hints-2.d.ts +3 -0
  160. package/dist/operations/modeling/predicate-usage-hints-2.d.ts.map +1 -0
  161. package/dist/operations/modeling/predicate-usage-hints-2.js +209 -0
  162. package/dist/operations/modeling/predicate-usage-hints-3.d.ts +3 -0
  163. package/dist/operations/modeling/predicate-usage-hints-3.d.ts.map +1 -0
  164. package/dist/operations/modeling/predicate-usage-hints-3.js +45 -0
  165. package/dist/operations/modeling/predicate-utils.d.ts +23 -0
  166. package/dist/operations/modeling/predicate-utils.d.ts.map +1 -0
  167. package/dist/operations/modeling/predicate-utils.js +187 -0
  168. package/dist/operations/modeling/requirement-applyplan.d.ts +4 -0
  169. package/dist/operations/modeling/requirement-applyplan.d.ts.map +1 -0
  170. package/dist/operations/modeling/requirement-applyplan.js +44 -0
  171. package/dist/operations/modeling/requirement-heuristics.d.ts +4 -0
  172. package/dist/operations/modeling/requirement-heuristics.d.ts.map +1 -0
  173. package/dist/operations/modeling/requirement-heuristics.js +114 -0
  174. package/dist/operations/modeling/requirement-modeler.d.ts +8 -0
  175. package/dist/operations/modeling/requirement-modeler.d.ts.map +1 -0
  176. package/dist/operations/modeling/requirement-modeler.js +70 -0
  177. package/dist/operations/modeling/requirement-types.d.ts +49 -0
  178. package/dist/operations/modeling/requirement-types.d.ts.map +1 -0
  179. package/dist/operations/modeling/requirement-types.js +1 -0
  180. package/dist/operations/modeling/requirement-utils.d.ts +10 -0
  181. package/dist/operations/modeling/requirement-utils.d.ts.map +1 -0
  182. package/dist/operations/modeling/requirement-utils.js +65 -0
  183. package/dist/operations/modeling/suggest-predicates.d.ts +6 -0
  184. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -0
  185. package/dist/operations/modeling/suggest-predicates.js +64 -0
  186. package/dist/operations/mutation/audit.d.ts +6 -0
  187. package/dist/operations/mutation/audit.d.ts.map +1 -0
  188. package/dist/operations/mutation/audit.js +22 -0
  189. package/dist/operations/mutation/contradictions.d.ts +10 -0
  190. package/dist/operations/mutation/contradictions.d.ts.map +1 -0
  191. package/dist/operations/mutation/contradictions.js +40 -0
  192. package/dist/operations/mutation/delete.d.ts +5 -0
  193. package/dist/operations/mutation/delete.d.ts.map +1 -0
  194. package/dist/operations/mutation/delete.js +67 -0
  195. package/dist/operations/mutation/relationships.d.ts +17 -0
  196. package/dist/operations/mutation/relationships.d.ts.map +1 -0
  197. package/dist/operations/mutation/relationships.js +134 -0
  198. package/dist/operations/mutation/save.d.ts +4 -0
  199. package/dist/operations/mutation/save.d.ts.map +1 -0
  200. package/dist/operations/mutation/save.js +14 -0
  201. package/dist/operations/mutation/serialization.d.ts +5 -0
  202. package/dist/operations/mutation/serialization.d.ts.map +1 -0
  203. package/dist/operations/mutation/serialization.js +85 -0
  204. package/dist/operations/mutation/strict-fact.d.ts +4 -0
  205. package/dist/operations/mutation/strict-fact.d.ts.map +1 -0
  206. package/dist/operations/mutation/strict-fact.js +67 -0
  207. package/dist/operations/mutation/symbol-granularity.d.ts +4 -0
  208. package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -0
  209. package/dist/operations/mutation/symbol-granularity.js +109 -0
  210. package/dist/operations/mutation/symbol-refresh.d.ts +10 -0
  211. package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -0
  212. package/dist/operations/mutation/symbol-refresh.js +105 -0
  213. package/dist/operations/mutation/types.d.ts +43 -0
  214. package/dist/operations/mutation/types.d.ts.map +1 -0
  215. package/dist/operations/mutation/types.js +1 -0
  216. package/dist/operations/mutation/upsert.d.ts +5 -0
  217. package/dist/operations/mutation/upsert.d.ts.map +1 -0
  218. package/dist/operations/mutation/upsert.js +103 -0
  219. package/dist/operations/mutation/validate-upsert.d.ts +5 -0
  220. package/dist/operations/mutation/validate-upsert.d.ts.map +1 -0
  221. package/dist/operations/mutation/validate-upsert.js +50 -0
  222. package/dist/operations/mutation/validation.d.ts +5 -0
  223. package/dist/operations/mutation/validation.d.ts.map +1 -0
  224. package/dist/operations/mutation/validation.js +107 -0
  225. package/dist/operations/mutation/warnings.d.ts +4 -0
  226. package/dist/operations/mutation/warnings.d.ts.map +1 -0
  227. package/dist/operations/mutation/warnings.js +17 -0
  228. package/dist/operations/semantic-advisor/analysis-receipt.d.ts +5 -0
  229. package/dist/operations/semantic-advisor/analysis-receipt.d.ts.map +1 -0
  230. package/dist/operations/semantic-advisor/analysis-receipt.js +112 -0
  231. package/dist/operations/semantic-advisor/analyze-prose.d.ts +5 -0
  232. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -0
  233. package/dist/operations/semantic-advisor/analyze-prose.js +271 -0
  234. package/dist/operations/semantic-advisor/clauses.d.ts +10 -0
  235. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -0
  236. package/dist/operations/semantic-advisor/clauses.js +43 -0
  237. package/dist/operations/semantic-advisor/observation-plan.d.ts +3 -0
  238. package/dist/operations/semantic-advisor/observation-plan.d.ts.map +1 -0
  239. package/dist/operations/semantic-advisor/observation-plan.js +19 -0
  240. package/dist/operations/semantic-advisor/predicate-rule.d.ts +14 -0
  241. package/dist/operations/semantic-advisor/predicate-rule.d.ts.map +1 -0
  242. package/dist/operations/semantic-advisor/predicate-rule.js +22 -0
  243. package/dist/operations/semantic-advisor/predicate-rules-core.d.ts +79 -0
  244. package/dist/operations/semantic-advisor/predicate-rules-core.d.ts.map +1 -0
  245. package/dist/operations/semantic-advisor/predicate-rules-core.js +140 -0
  246. package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts +83 -0
  247. package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts.map +1 -0
  248. package/dist/operations/semantic-advisor/predicate-rules-policy.js +150 -0
  249. package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts +48 -0
  250. package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts.map +1 -0
  251. package/dist/operations/semantic-advisor/predicate-rules-product-tail.js +102 -0
  252. package/dist/operations/semantic-advisor/predicate-rules-product.d.ts +71 -0
  253. package/dist/operations/semantic-advisor/predicate-rules-product.d.ts.map +1 -0
  254. package/dist/operations/semantic-advisor/predicate-rules-product.js +133 -0
  255. package/dist/operations/semantic-advisor/prose-coverage-evaluator.d.ts +29 -0
  256. package/dist/operations/semantic-advisor/prose-coverage-evaluator.d.ts.map +1 -0
  257. package/dist/operations/semantic-advisor/prose-coverage-evaluator.js +54 -0
  258. package/dist/operations/semantic-advisor/shared.d.ts +18 -0
  259. package/dist/operations/semantic-advisor/shared.d.ts.map +1 -0
  260. package/dist/operations/semantic-advisor/shared.js +209 -0
  261. package/dist/operations/semantic-advisor/strict-count-rules.d.ts +4 -0
  262. package/dist/operations/semantic-advisor/strict-count-rules.d.ts.map +1 -0
  263. package/dist/operations/semantic-advisor/strict-count-rules.js +62 -0
  264. package/dist/operations/semantic-advisor/strict-rules.d.ts +4 -0
  265. package/dist/operations/semantic-advisor/strict-rules.d.ts.map +1 -0
  266. package/dist/operations/semantic-advisor/strict-rules.js +106 -0
  267. package/dist/operations/semantic-advisor/types.d.ts +135 -0
  268. package/dist/operations/semantic-advisor/types.d.ts.map +1 -0
  269. package/dist/operations/semantic-advisor/types.js +1 -0
  270. package/dist/prolog/codec.d.ts.map +1 -1
  271. package/dist/prolog/codec.js +9 -2
  272. package/dist/prolog.d.ts +5 -0
  273. package/dist/prolog.d.ts.map +1 -1
  274. package/dist/prolog.js +82 -30
  275. package/dist/public/impact/diagnostics.d.ts.map +1 -1
  276. package/dist/public/impact/diagnostics.js +8 -4
  277. package/dist/public/impact/full-kb-quality.d.ts +1 -1
  278. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  279. package/dist/public/impact/full-kb-quality.js +34 -1
  280. package/dist/public/impact/requirement-quality.d.ts.map +1 -1
  281. package/dist/public/impact/requirement-quality.js +6 -23
  282. package/dist/public/operations/catalog.d.ts +907 -0
  283. package/dist/public/operations/catalog.d.ts.map +1 -0
  284. package/dist/public/operations/catalog.js +42 -0
  285. package/dist/public/operations/check-executor.d.ts +21 -0
  286. package/dist/public/operations/check-executor.d.ts.map +1 -0
  287. package/dist/public/operations/check-executor.js +111 -0
  288. package/dist/public/operations/check-format-shared.d.ts +36 -0
  289. package/dist/public/operations/check-format-shared.d.ts.map +1 -0
  290. package/dist/public/operations/check-format-shared.js +107 -0
  291. package/dist/public/operations/check-helpers.d.ts +10 -0
  292. package/dist/public/operations/check-helpers.d.ts.map +1 -0
  293. package/dist/public/operations/check-helpers.js +107 -0
  294. package/dist/public/operations/discovery-entities.d.ts +14 -0
  295. package/dist/public/operations/discovery-entities.d.ts.map +1 -0
  296. package/dist/public/operations/discovery-entities.js +91 -0
  297. package/dist/public/operations/discovery-executors.d.ts +39 -0
  298. package/dist/public/operations/discovery-executors.d.ts.map +1 -0
  299. package/dist/public/operations/discovery-executors.js +101 -0
  300. package/dist/public/operations/index.d.ts +20 -0
  301. package/dist/public/operations/index.d.ts.map +1 -0
  302. package/dist/public/operations/index.js +18 -0
  303. package/dist/public/operations/node-ports.d.ts +15 -0
  304. package/dist/public/operations/node-ports.d.ts.map +1 -0
  305. package/dist/public/operations/node-ports.js +57 -0
  306. package/dist/public/operations/prolog-json.d.ts +5 -0
  307. package/dist/public/operations/prolog-json.d.ts.map +1 -0
  308. package/dist/public/operations/prolog-json.js +44 -0
  309. package/dist/public/operations/runtime-types.d.ts +69 -0
  310. package/dist/public/operations/runtime-types.d.ts.map +1 -0
  311. package/dist/public/operations/runtime-types.js +17 -0
  312. package/dist/public/operations/specs/autopilot.d.ts +82 -0
  313. package/dist/public/operations/specs/autopilot.d.ts.map +1 -0
  314. package/dist/public/operations/specs/autopilot.js +72 -0
  315. package/dist/public/operations/specs/check.d.ts +51 -0
  316. package/dist/public/operations/specs/check.d.ts.map +1 -0
  317. package/dist/public/operations/specs/check.js +62 -0
  318. package/dist/public/operations/specs/discovery.d.ts +94 -0
  319. package/dist/public/operations/specs/discovery.d.ts.map +1 -0
  320. package/dist/public/operations/specs/discovery.js +98 -0
  321. package/dist/public/operations/specs/modeling.d.ts +126 -0
  322. package/dist/public/operations/specs/modeling.d.ts.map +1 -0
  323. package/dist/public/operations/specs/modeling.js +117 -0
  324. package/dist/public/operations/specs/mutation-schemas.d.ts +233 -0
  325. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -0
  326. package/dist/public/operations/specs/mutation-schemas.js +267 -0
  327. package/dist/public/operations/specs/mutation.d.ts +56 -0
  328. package/dist/public/operations/specs/mutation.d.ts.map +1 -0
  329. package/dist/public/operations/specs/mutation.js +44 -0
  330. package/dist/public/operations/specs/reporting.d.ts +185 -0
  331. package/dist/public/operations/specs/reporting.d.ts.map +1 -0
  332. package/dist/public/operations/specs/reporting.js +158 -0
  333. package/dist/public/operations/specs/semantic.d.ts +53 -0
  334. package/dist/public/operations/specs/semantic.d.ts.map +1 -0
  335. package/dist/public/operations/specs/semantic.js +105 -0
  336. package/dist/public/operations/specs/skills.d.ts +70 -0
  337. package/dist/public/operations/specs/skills.d.ts.map +1 -0
  338. package/dist/public/operations/specs/skills.js +107 -0
  339. package/dist/public/operations/specs/sparql.d.ts +39 -0
  340. package/dist/public/operations/specs/sparql.d.ts.map +1 -0
  341. package/dist/public/operations/specs/sparql.js +121 -0
  342. package/dist/public/operations/specs/upsert.d.ts +256 -0
  343. package/dist/public/operations/specs/upsert.d.ts.map +1 -0
  344. package/dist/public/operations/specs/upsert.js +27 -0
  345. package/dist/public/operations/types.d.ts +24 -0
  346. package/dist/public/operations/types.d.ts.map +1 -0
  347. package/dist/public/operations/types.js +1 -0
  348. package/dist/public/schemas/entity.d.ts.map +1 -1
  349. package/dist/public/schemas/entity.js +27 -0
  350. package/dist/public/skill-system/errors.d.ts +19 -0
  351. package/dist/public/skill-system/errors.d.ts.map +1 -0
  352. package/dist/public/skill-system/errors.js +36 -0
  353. package/dist/public/skill-system/loader.d.ts +9 -0
  354. package/dist/public/skill-system/loader.d.ts.map +1 -0
  355. package/dist/public/skill-system/loader.js +76 -0
  356. package/dist/public/skill-system/paths.d.ts +6 -0
  357. package/dist/public/skill-system/paths.d.ts.map +1 -0
  358. package/dist/public/skill-system/paths.js +25 -0
  359. package/dist/public/skill-system/types.d.ts +15 -0
  360. package/dist/public/skill-system/types.d.ts.map +1 -0
  361. package/dist/public/skill-system/types.js +1 -0
  362. package/dist/public/skill-system/validation.d.ts +10 -0
  363. package/dist/public/skill-system/validation.d.ts.map +1 -0
  364. package/dist/public/skill-system/validation.js +119 -0
  365. package/dist/public/skills/init-kibi/SKILL.md +62 -0
  366. package/dist/public/skills/kibi-freshness/SKILL.md +44 -0
  367. package/dist/public/skills/kibi-traceability/SKILL.md +54 -0
  368. package/dist/public/skills/kibi-usage/SKILL.md +119 -99
  369. package/dist/public/skills/kibi-usage/resources/fact-lanes.md +102 -0
  370. package/dist/public/skills/kibi-usage/resources/operation-access.md +44 -0
  371. package/dist/public/skills/kibi-usage/resources/workflows.md +26 -3
  372. package/dist/public/skills.d.ts +4 -41
  373. package/dist/public/skills.d.ts.map +1 -1
  374. package/dist/public/skills.js +3 -270
  375. package/dist/runtime/cli-runtime.d.ts +3 -0
  376. package/dist/runtime/cli-runtime.d.ts.map +1 -0
  377. package/dist/runtime/cli-runtime.js +96 -0
  378. package/dist/schemas/entity.schema.json +23 -0
  379. package/dist/traceability/staged-diagnostics.d.ts +1 -1
  380. package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
  381. package/dist/traceability/staged-symbols-manifest.d.ts +1 -0
  382. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  383. package/dist/traceability/staged-symbols-manifest.js +38 -27
  384. package/dist/traceability/symbol-extract.d.ts.map +1 -1
  385. package/dist/traceability/symbol-extract.js +17 -1
  386. package/dist/traceability/temp-kb.d.ts.map +1 -1
  387. package/dist/traceability/temp-kb.js +34 -1
  388. package/dist/types/entities.d.ts +3 -0
  389. package/dist/types/entities.d.ts.map +1 -1
  390. package/dist/utils/rule-registry.d.ts.map +1 -1
  391. package/dist/utils/rule-registry.js +6 -0
  392. package/package.json +56 -2
  393. package/src/public/impact/diagnostics.ts +18 -11
  394. package/src/public/impact/full-kb-quality.ts +30 -3
  395. package/src/public/impact/requirement-quality.ts +6 -26
  396. package/src/public/operations/catalog.ts +60 -0
  397. package/src/public/operations/check-executor.ts +185 -0
  398. package/src/public/operations/check-format-shared.ts +178 -0
  399. package/src/public/operations/check-helpers.ts +141 -0
  400. package/src/public/operations/discovery-entities.ts +122 -0
  401. package/src/public/operations/discovery-executors.ts +176 -0
  402. package/src/public/operations/index.ts +19 -0
  403. package/src/public/operations/node-ports.ts +78 -0
  404. package/src/public/operations/prolog-json.ts +71 -0
  405. package/src/public/operations/runtime-types.ts +106 -0
  406. package/src/public/operations/specs/autopilot.ts +98 -0
  407. package/src/public/operations/specs/check.ts +72 -0
  408. package/src/public/operations/specs/discovery.ts +126 -0
  409. package/src/public/operations/specs/modeling.ts +154 -0
  410. package/src/public/operations/specs/mutation-schemas.ts +296 -0
  411. package/src/public/operations/specs/mutation.ts +58 -0
  412. package/src/public/operations/specs/reporting.ts +249 -0
  413. package/src/public/operations/specs/semantic.ts +135 -0
  414. package/src/public/operations/specs/skills.ts +142 -0
  415. package/src/public/operations/specs/sparql.ts +149 -0
  416. package/src/public/operations/specs/upsert.ts +40 -0
  417. package/src/public/operations/types.ts +57 -0
  418. package/src/public/schemas/entity.ts +27 -0
  419. package/src/public/skill-system/errors.ts +38 -0
  420. package/src/public/skill-system/loader.ts +108 -0
  421. package/src/public/skill-system/paths.ts +27 -0
  422. package/src/public/skill-system/types.ts +14 -0
  423. package/src/public/skill-system/validation.ts +175 -0
  424. package/src/public/skills/init-kibi/SKILL.md +62 -0
  425. package/src/public/skills/kibi-freshness/SKILL.md +44 -0
  426. package/src/public/skills/kibi-traceability/SKILL.md +54 -0
  427. package/src/public/skills/kibi-usage/SKILL.md +119 -99
  428. package/src/public/skills/kibi-usage/resources/fact-lanes.md +102 -0
  429. package/src/public/skills/kibi-usage/resources/operation-access.md +44 -0
  430. package/src/public/skills/kibi-usage/resources/workflows.md +26 -3
  431. package/src/public/skills.ts +18 -427
  432. package/src/schemas/entity.schema.json +23 -0
@@ -1,270 +1,3 @@
1
- import { existsSync, readFileSync, readdirSync, realpathSync, statSync, } from "node:fs";
2
- import { dirname, isAbsolute, join, normalize, relative, resolve, } from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- import matter from "gray-matter";
5
- const SKILL_MARKDOWN_MAX_BYTES = 256 * 1024;
6
- const RESOURCE_MAX_BYTES = 128 * 1024;
7
- const SKILL_FILE_NAME = "SKILL.md";
8
- const moduleDir = dirname(fileURLToPath(import.meta.url));
9
- let bundledSkillsDir = resolve(moduleDir, "skills");
10
- const defaultBundledSkillsDir = bundledSkillsDir;
11
- export function setBundledSkillsDir(dir) {
12
- bundledSkillsDir = dir;
13
- }
14
- export function resetBundledSkillsDir() {
15
- bundledSkillsDir = defaultBundledSkillsDir;
16
- }
17
- export class SkillNotFoundError extends Error {
18
- constructor(id) {
19
- super(`Skill not found: ${id}`);
20
- this.name = "SkillNotFoundError";
21
- }
22
- }
23
- export class SkillResourceNotFoundError extends Error {
24
- constructor(id, resourcePath) {
25
- super(`Skill resource not found: ${id}/${resourcePath}`);
26
- this.name = "SkillResourceNotFoundError";
27
- }
28
- }
29
- export class SkillResourceOutOfBoundsError extends Error {
30
- constructor(id, resourcePath) {
31
- super(`Skill resource escapes bundle root: ${id}/${resourcePath}`);
32
- this.name = "SkillResourceOutOfBoundsError";
33
- }
34
- }
35
- export class SkillValidationError extends Error {
36
- field;
37
- constructor(field, message) {
38
- super(message);
39
- this.name = "SkillValidationError";
40
- this.field = field;
41
- }
42
- }
43
- export class SkillOversizeError extends Error {
44
- maxBytes;
45
- actualBytes;
46
- constructor(pathLike, maxBytes, actualBytes) {
47
- super(`Skill file exceeds ${maxBytes} bytes: ${pathLike} (${actualBytes} bytes)`);
48
- this.name = "SkillOversizeError";
49
- this.maxBytes = maxBytes;
50
- this.actualBytes = actualBytes;
51
- }
52
- }
53
- export function listBundledSkills() {
54
- // implements REQ-001
55
- if (!existsSync(bundledSkillsDir)) {
56
- return [];
57
- }
58
- return readdirSync(bundledSkillsDir, { withFileTypes: true })
59
- .filter((entry) => entry.isDirectory())
60
- .map((entry) => join(bundledSkillsDir, entry.name))
61
- .filter((rootDir) => existsSync(join(rootDir, SKILL_FILE_NAME)))
62
- .map((rootDir) => parseSkillBundle(rootDir).manifest)
63
- .sort((left, right) => left.id.localeCompare(right.id));
64
- }
65
- export function loadBundledSkill(id) {
66
- // implements REQ-001
67
- const rootDir = findBundledSkillRoot(id);
68
- if (!rootDir) {
69
- throw new SkillNotFoundError(id);
70
- }
71
- return parseSkillBundle(rootDir);
72
- }
73
- export function readBundledSkillResource(id, resourcePath) {
74
- // implements REQ-001
75
- const bundle = loadBundledSkill(id);
76
- const declaredResource = normalizeResourcePath(resourcePath);
77
- if (!declaredResource || isPathOutOfBounds(resourcePath)) {
78
- throw new SkillResourceOutOfBoundsError(id, resourcePath);
79
- }
80
- if (!isDeclaredResource(bundle.manifest, declaredResource)) {
81
- throw new SkillResourceNotFoundError(id, resourcePath);
82
- }
83
- const candidatePath = resolve(bundle.rootDir, declaredResource);
84
- let realResourcePath;
85
- let realRootDir;
86
- try {
87
- realResourcePath = realpathSync(candidatePath);
88
- realRootDir = realpathSync(bundle.rootDir);
89
- }
90
- catch {
91
- throw new SkillResourceNotFoundError(id, resourcePath);
92
- }
93
- if (!isWithinRoot(realRootDir, realResourcePath)) {
94
- throw new SkillResourceOutOfBoundsError(id, resourcePath);
95
- }
96
- assertMaxBytes(candidatePath, RESOURCE_MAX_BYTES);
97
- return readFileSync(candidatePath, "utf8");
98
- }
99
- export function validateSkillBundle(pathLike) {
100
- // implements REQ-001
101
- const skillFilePath = resolveSkillFilePath(pathLike);
102
- const errors = [];
103
- if (!existsSync(skillFilePath)) {
104
- errors.push(new SkillValidationError("SKILL.md", `Missing ${SKILL_FILE_NAME}`));
105
- return { valid: false, errors };
106
- }
107
- const parsed = matter(readFileSync(skillFilePath, "utf8"));
108
- errors.push(...validateManifestData(parsed.data));
109
- if (errors.length === 0) {
110
- validateBundleContents(skillFilePath, coerceManifest(parsed.data), errors);
111
- }
112
- return { valid: errors.length === 0, errors };
113
- }
114
- function validateBundleContents(skillFilePath, manifest, errors) {
115
- try {
116
- assertMaxBytes(skillFilePath, SKILL_MARKDOWN_MAX_BYTES);
117
- }
118
- catch (error) {
119
- errors.push(new SkillValidationError("SKILL.md", error instanceof Error ? error.message : String(error)));
120
- }
121
- const rootDir = dirname(skillFilePath);
122
- let realRootDir;
123
- try {
124
- realRootDir = realpathSync(rootDir);
125
- }
126
- catch (error) {
127
- errors.push(new SkillValidationError("SKILL.md", error instanceof Error ? error.message : String(error)));
128
- return;
129
- }
130
- for (const resource of manifest.resources ?? []) {
131
- const resourcePath = resolve(rootDir, resource);
132
- try {
133
- if (!existsSync(resourcePath)) {
134
- errors.push(new SkillValidationError("resources", `Missing skill resource: ${resource}`));
135
- continue;
136
- }
137
- const realResourcePath = realpathSync(resourcePath);
138
- if (!isWithinRoot(realRootDir, realResourcePath)) {
139
- errors.push(new SkillValidationError("resources", `Skill resource escapes bundle root: ${resource}`));
140
- continue;
141
- }
142
- assertMaxBytes(resourcePath, RESOURCE_MAX_BYTES);
143
- }
144
- catch (error) {
145
- errors.push(new SkillValidationError("resources", error instanceof Error ? error.message : String(error)));
146
- }
147
- }
148
- }
149
- function findBundledSkillRoot(id) {
150
- if (!existsSync(bundledSkillsDir)) {
151
- return undefined;
152
- }
153
- for (const entry of readdirSync(bundledSkillsDir, { withFileTypes: true })) {
154
- if (!entry.isDirectory()) {
155
- continue;
156
- }
157
- const rootDir = join(bundledSkillsDir, entry.name);
158
- const skillFilePath = join(rootDir, SKILL_FILE_NAME);
159
- if (!existsSync(skillFilePath)) {
160
- continue;
161
- }
162
- const manifest = parseSkillBundle(rootDir).manifest;
163
- if (manifest.id === id) {
164
- return rootDir;
165
- }
166
- }
167
- return undefined;
168
- }
169
- function parseSkillBundle(rootDir) {
170
- const skillFilePath = join(rootDir, SKILL_FILE_NAME);
171
- assertMaxBytes(skillFilePath, SKILL_MARKDOWN_MAX_BYTES);
172
- const parsed = matter(readFileSync(skillFilePath, "utf8"));
173
- const errors = validateManifestData(parsed.data);
174
- if (errors.length > 0) {
175
- throw errors[0];
176
- }
177
- return {
178
- manifest: coerceManifest(parsed.data),
179
- body: parsed.content,
180
- rootDir: resolve(rootDir),
181
- };
182
- }
183
- function validateManifestData(data) {
184
- const errors = [];
185
- const requiredFields = [
186
- "id",
187
- "name",
188
- "description",
189
- "version",
190
- "kibiCompatibility",
191
- ];
192
- for (const field of requiredFields) {
193
- if (typeof data[field] !== "string" || data[field].trim() === "") {
194
- errors.push(new SkillValidationError(field, `Missing required skill field: ${field}`));
195
- }
196
- }
197
- if (typeof data.version === "string" &&
198
- !/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/.test(data.version)) {
199
- errors.push(new SkillValidationError("version", `Invalid skill version: ${data.version}`));
200
- }
201
- if (data.tags !== undefined && !isStringArray(data.tags)) {
202
- errors.push(new SkillValidationError("tags", "Skill tags must be strings"));
203
- }
204
- if (data.resources !== undefined) {
205
- if (!isStringArray(data.resources)) {
206
- errors.push(new SkillValidationError("resources", "Skill resources must be strings"));
207
- }
208
- else {
209
- for (const resource of data.resources) {
210
- const normalized = normalizeResourcePath(resource);
211
- if (!normalized || isPathOutOfBounds(resource)) {
212
- errors.push(new SkillValidationError("resources", `Invalid skill resource: ${resource}`));
213
- }
214
- }
215
- }
216
- }
217
- return errors;
218
- }
219
- function coerceManifest(data) {
220
- const manifest = {
221
- id: String(data.id),
222
- name: String(data.name),
223
- description: String(data.description),
224
- version: String(data.version),
225
- kibiCompatibility: String(data.kibiCompatibility),
226
- };
227
- if (isStringArray(data.tags)) {
228
- manifest.tags = data.tags;
229
- }
230
- if (isStringArray(data.resources)) {
231
- manifest.resources = data.resources.map((resource) => normalizeResourcePath(resource));
232
- }
233
- return manifest;
234
- }
235
- function isStringArray(value) {
236
- return (Array.isArray(value) && value.every((item) => typeof item === "string"));
237
- }
238
- function normalizeResourcePath(pathLike) {
239
- return normalize(pathLike).replaceAll("\\", "/");
240
- }
241
- function isPathOutOfBounds(pathLike) {
242
- const normalized = normalizeResourcePath(pathLike);
243
- return (isAbsolute(pathLike) ||
244
- normalized === ".." ||
245
- normalized.startsWith("../") ||
246
- normalized.includes("/../"));
247
- }
248
- function isDeclaredResource(manifest, resourcePath) {
249
- return (manifest.resources ?? []).some((declared) => normalizeResourcePath(declared) === resourcePath);
250
- }
251
- function isWithinRoot(rootDir, candidatePath) {
252
- const relativePath = relative(rootDir, candidatePath);
253
- return (relativePath === "" ||
254
- (!relativePath.startsWith("..") && !isAbsolute(relativePath)));
255
- }
256
- function assertMaxBytes(pathLike, maxBytes) {
257
- const size = statSync(pathLike).size;
258
- if (size > maxBytes) {
259
- throw new SkillOversizeError(pathLike, maxBytes, size);
260
- }
261
- }
262
- function resolveSkillFilePath(pathLike) {
263
- const resolved = resolve(pathLike);
264
- if (existsSync(resolved) && statSync(resolved).isDirectory()) {
265
- return join(resolved, SKILL_FILE_NAME);
266
- }
267
- return resolved.endsWith(SKILL_FILE_NAME)
268
- ? resolved
269
- : join(resolved, SKILL_FILE_NAME);
270
- }
1
+ export { SkillNotFoundError, SkillOversizeError, SkillResourceNotFoundError, SkillResourceOutOfBoundsError, SkillValidationError, } from "./skill-system/errors.js";
2
+ export { listBundledSkills, loadBundledSkill, loadBundledSkillFrom, readBundledSkillResource, readBundledSkillResourceFrom, resetBundledSkillsDir, setBundledSkillsDir, } from "./skill-system/loader.js";
3
+ export { validateSkillBundle } from "./skill-system/validation.js";
@@ -0,0 +1,3 @@
1
+ import type { OperationRuntime, RuntimeOptions } from "../public/operations/runtime-types.js";
2
+ export declare function createCliRuntime(options?: RuntimeOptions): OperationRuntime;
3
+ //# sourceMappingURL=cli-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/cli-runtime.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAEV,gBAAgB,EAGhB,cAAc,EACf,MAAM,uCAAuC,CAAC;AAwC/C,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,cAAmB,GAC3B,gBAAgB,CAoElB"}
@@ -0,0 +1,96 @@
1
+ import path from "node:path";
2
+ import { PrologProcess } from "../prolog.js";
3
+ import { nodeFilesystem, nodeGit, nodeNetwork, } from "../public/operations/node-ports.js";
4
+ import { resolveActiveBranch } from "../utils/branch-resolver.js";
5
+ function createDefaultProlog() {
6
+ const process = new PrologProcess({ timeout: 120_000 });
7
+ let lastResult = null;
8
+ return {
9
+ start: () => process.start(),
10
+ query: async (goal) => {
11
+ lastResult = await process.query(goal);
12
+ return lastResult;
13
+ },
14
+ nextSolution: async () => {
15
+ const result = lastResult;
16
+ lastResult = null;
17
+ return result;
18
+ },
19
+ save: () => process.query("kb_save"),
20
+ terminate: () => process.terminate(),
21
+ };
22
+ }
23
+ function workspaceRoot(options) {
24
+ const envRoot = process.env.KIBI_WORKSPACE ??
25
+ process.env.KIBI_PROJECT_ROOT ??
26
+ process.env.KIBI_ROOT;
27
+ return path.resolve(options.workspaceRoot ?? envRoot ?? process.cwd());
28
+ }
29
+ function quoteProlog(value) {
30
+ return value.replaceAll("'", "''");
31
+ }
32
+ // implements REQ-kibi-operation-interface-parity
33
+ export function createCliRuntime(options = {}) {
34
+ const ownedPrologs = new WeakMap();
35
+ return {
36
+ open: async (spec, invocationOptions = {}) => {
37
+ const merged = {
38
+ ...options,
39
+ ...invocationOptions,
40
+ };
41
+ const root = workspaceRoot(merged);
42
+ const signal = merged.signal ?? new AbortController().signal;
43
+ const clock = merged.clock ?? (() => new Date());
44
+ const git = merged.git ?? nodeGit;
45
+ const contextBase = {
46
+ workspaceRoot: root,
47
+ signal,
48
+ clock,
49
+ fs: merged.fs ?? nodeFilesystem,
50
+ git,
51
+ net: merged.net ?? nodeNetwork,
52
+ };
53
+ if (!spec.requiresProlog) {
54
+ return contextBase;
55
+ }
56
+ const prolog = merged.prolog ?? createDefaultProlog();
57
+ try {
58
+ await prolog.start?.();
59
+ let branch = process.env.KIBI_BRANCH?.trim();
60
+ if (!branch) {
61
+ const resolved = resolveActiveBranch(root);
62
+ if ("error" in resolved) {
63
+ const isNonGitContext = resolved.code === "NOT_A_GIT_REPO" ||
64
+ resolved.code === "GIT_NOT_AVAILABLE";
65
+ if (isNonGitContext) {
66
+ branch = "main";
67
+ }
68
+ else {
69
+ throw new Error(`Failed to resolve active branch: ${resolved.error}`);
70
+ }
71
+ }
72
+ else {
73
+ branch = resolved.branch;
74
+ }
75
+ }
76
+ const kbPath = path.join(root, ".kb", "branches", branch);
77
+ const attached = await prolog.query(`kb_attach('${quoteProlog(kbPath)}')`);
78
+ if (!attached.success) {
79
+ throw new Error(attached.error ?? "Failed to attach branch KB");
80
+ }
81
+ const context = { ...contextBase, prolog };
82
+ ownedPrologs.set(context, prolog);
83
+ return context;
84
+ }
85
+ catch (error) {
86
+ await prolog.terminate?.();
87
+ throw error;
88
+ }
89
+ },
90
+ afterSuccess: async () => undefined,
91
+ close: async (context) => {
92
+ await ownedPrologs.get(context)?.terminate?.();
93
+ ownedPrologs.delete(context);
94
+ },
95
+ };
96
+ }
@@ -38,6 +38,12 @@
38
38
  "severity": { "type": "string" },
39
39
  "links": { "type": "array", "items": { "type": "string" } },
40
40
  "text_ref": { "type": "string" },
41
+ "logic_claims": {
42
+ "type": "array",
43
+ "minItems": 1,
44
+ "uniqueItems": true,
45
+ "items": { "type": "string", "pattern": "^CLAIM-[A-F0-9]{16}$" }
46
+ },
41
47
  "sourceFile": { "type": "string" },
42
48
  "granularity_reason": {
43
49
  "type": "string",
@@ -115,6 +121,8 @@
115
121
  "valid_from": { "type": "string" },
116
122
  "valid_to": { "type": "string" },
117
123
  "canonical_key": { "type": "string" },
124
+ "claim_key": { "type": "string", "pattern": "^CLAIM-[A-F0-9]{16}$" },
125
+ "claim_text": { "type": "string" },
118
126
  "predicate_name": { "type": "string" },
119
127
  "predicate_namespace": { "type": "string" },
120
128
  "predicate_arity": { "type": "integer", "minimum": 1 },
@@ -138,6 +146,19 @@
138
146
  "type"
139
147
  ],
140
148
  "allOf": [
149
+ {
150
+ "if": {
151
+ "properties": { "type": { "const": "req" } }
152
+ },
153
+ "then": {},
154
+ "else": { "not": { "required": ["logic_claims"] } }
155
+ },
156
+ {
157
+ "if": {
158
+ "anyOf": [{ "required": ["claim_key"] }, { "required": ["claim_text"] }]
159
+ },
160
+ "then": { "required": ["claim_key", "claim_text"] }
161
+ },
141
162
  {
142
163
  "if": {
143
164
  "properties": { "type": { "const": "test" } }
@@ -176,6 +197,8 @@
176
197
  { "required": ["valid_from"] },
177
198
  { "required": ["valid_to"] },
178
199
  { "required": ["canonical_key"] },
200
+ { "required": ["claim_key"] },
201
+ { "required": ["claim_text"] },
179
202
  { "required": ["predicate_name"] },
180
203
  { "required": ["predicate_namespace"] },
181
204
  { "required": ["predicate_arity"] },
@@ -1,6 +1,6 @@
1
1
  import type { QualityDiagnostic } from "../public/impact/types.js";
2
2
  import { type KibiImpactEvidence } from "./evidence-model.js";
3
- export type KibiImpactDiagnosticId = "kibi_impact_evidence_missing" | "symbols_manifest_stale" | "symbol_granularity_violation" | "symbol_semantic_review_needed" | "multi_requirement_symbol_review" | "duplicate_symbol_coordinate_review" | "component_mixed_purpose_review" | "broad_requirement_review" | "requirement_status_review" | "strict_fact_modeling_review" | "kibi_impact_override_missing_rationale";
3
+ export type KibiImpactDiagnosticId = "kibi_impact_evidence_missing" | "symbols_manifest_stale" | "symbol_granularity_violation" | "symbol_semantic_review_needed" | "multi_requirement_symbol_review" | "duplicate_symbol_coordinate_review" | "component_mixed_purpose_review" | "broad_requirement_review" | "requirement_status_review" | "strict_fact_modeling_review" | "logical_coverage_review" | "kibi_impact_override_missing_rationale";
4
4
  export interface KibiImpactDiagnostic extends QualityDiagnostic {
5
5
  /** Stable staged-enforcement diagnostic identifier. */
6
6
  id: KibiImpactDiagnosticId;
@@ -1 +1 @@
1
- {"version":3,"file":"staged-diagnostics.d.ts","sourceRoot":"","sources":["../../src/traceability/staged-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAIL,KAAK,kBAAkB,EAIxB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,sBAAsB,GAC9B,8BAA8B,GAC9B,wBAAwB,GACxB,8BAA8B,GAC9B,+BAA+B,GAC/B,iCAAiC,GACjC,oCAAoC,GACpC,gCAAgC,GAChC,0BAA0B,GAC1B,2BAA2B,GAC3B,6BAA6B,GAC7B,wCAAwC,CAAC;AAE7C,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,uDAAuD;IACvD,EAAE,EAAE,sBAAsB,CAAC;IAC3B,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,iEAAiE;IACjE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,gDAAgD;IAChD,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;CACpB;AA4DD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,kBAAkB,GAC3B,oBAAoB,EAAE,CAoCxB"}
1
+ {"version":3,"file":"staged-diagnostics.d.ts","sourceRoot":"","sources":["../../src/traceability/staged-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAIL,KAAK,kBAAkB,EAIxB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,sBAAsB,GAC9B,8BAA8B,GAC9B,wBAAwB,GACxB,8BAA8B,GAC9B,+BAA+B,GAC/B,iCAAiC,GACjC,oCAAoC,GACpC,gCAAgC,GAChC,0BAA0B,GAC1B,2BAA2B,GAC3B,6BAA6B,GAC7B,yBAAyB,GACzB,wCAAwC,CAAC;AAE7C,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,uDAAuD;IACvD,EAAE,EAAE,sBAAsB,CAAC;IAC3B,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,iEAAiE;IACjE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,gDAAgD;IAChD,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;CACpB;AA4DD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,kBAAkB,GAC3B,oBAAoB,EAAE,CAoCxB"}
@@ -10,6 +10,7 @@ export interface StagedAuthoredSymbolsManifestEvidence {
10
10
  sourcePath: string;
11
11
  entityIds: string[];
12
12
  }>;
13
+ changedEntityIds: string[];
13
14
  }
14
15
  export declare function assessStagedSymbolsManifest(options: {
15
16
  symbolsManifestPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"staged-symbols-manifest.d.ts","sourceRoot":"","sources":["../../src/traceability/staged-symbols-manifest.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA+BlD,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,cAAc,CAAC;IACtD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qCAAqC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CAC7D;AA+SD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,GAAG,+BAA+B,CA8ElC;AAoBD,wBAAgB,4CAA4C,CAAC,OAAO,EAAE;IACpE,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,GAAG,qCAAqC,CAgDxC"}
1
+ {"version":3,"file":"staged-symbols-manifest.d.ts","sourceRoot":"","sources":["../../src/traceability/staged-symbols-manifest.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA+BlD,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,cAAc,CAAC;IACtD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qCAAqC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC5D,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AA2TD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,GAAG,+BAA+B,CAmFlC;AAED,wBAAgB,4CAA4C,CAAC,OAAO,EAAE;IACpE,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,GAAG,qCAAqC,CAmExC"}
@@ -97,9 +97,17 @@ function normalizeRelationships(relationships) {
97
97
  })
98
98
  .sort((left, right) => JSON.stringify(left).localeCompare(JSON.stringify(right)));
99
99
  }
100
- function normalizeManifestSymbolsForSourceFile(records, sourceFile) {
100
+ function normalizeManifestSymbolsForSourceFile(records, sourceFile, expectedTitles) {
101
101
  return records
102
102
  .filter((record) => {
103
+ const title = typeof record.title === "string" ? record.title : null;
104
+ const isDocumentedModuleSymbol = typeof record.granularity_reason === "string" &&
105
+ record.granularity_reason.length > 0;
106
+ if (title !== null &&
107
+ isDocumentedModuleSymbol &&
108
+ !expectedTitles.has(title)) {
109
+ return false;
110
+ }
103
111
  const recordSource = typeof record.sourceFile === "string"
104
112
  ? record.sourceFile
105
113
  : typeof record.source === "string"
@@ -227,7 +235,8 @@ export function assessStagedSymbolsManifest(options) {
227
235
  const freshPaths = new Set();
228
236
  for (const sourceFile of sourceFiles) {
229
237
  const expectedSymbols = normalizeExpectedSymbolsForStagedFile(sourceFile);
230
- const baselineSymbols = normalizeManifestSymbolsForSourceFile(baselineMergedRecords, sourceFile.path);
238
+ const expectedTitles = new Set(expectedSymbols.map((symbol) => symbol.title));
239
+ const baselineSymbols = normalizeManifestSymbolsForSourceFile(baselineMergedRecords, sourceFile.path, expectedTitles);
231
240
  if (signaturesEqual(expectedSymbols, baselineSymbols)) {
232
241
  continue;
233
242
  }
@@ -235,7 +244,7 @@ export function assessStagedSymbolsManifest(options) {
235
244
  if (!stagedCoordinatesFile || stagedCoordinateArtifact === null) {
236
245
  continue;
237
246
  }
238
- const stagedSymbols = normalizeManifestSymbolsForSourceFile(stagedMergedRecords, sourceFile.path);
247
+ const stagedSymbols = normalizeManifestSymbolsForSourceFile(stagedMergedRecords, sourceFile.path, expectedTitles);
239
248
  if (signaturesEqual(expectedSymbols, stagedSymbols)) {
240
249
  freshPaths.add(sourceFile.path);
241
250
  }
@@ -256,42 +265,44 @@ export function assessStagedSymbolsManifest(options) {
256
265
  }
257
266
  return { state: "stale", sourcePaths, path: paths.coordinatesPath };
258
267
  }
259
- function getEntityIdsForSourceFile(records, sourceFile) {
260
- return records
261
- .filter((record) => {
262
- const recordSource = typeof record.sourceFile === "string"
263
- ? record.sourceFile
264
- : typeof record.source === "string"
265
- ? record.source
266
- : null;
267
- return recordSource === sourceFile && typeof record.id === "string";
268
- })
269
- .map((record) => record.id)
270
- .sort();
271
- }
272
268
  export function collectStagedAuthoredSymbolsManifestEvidence(options) {
273
269
  const { sourceFiles, stagedFiles } = options;
274
270
  const paths = resolveRelativeManifestPaths();
275
271
  const stagedManifestFile = stagedFiles.find((file) => file.path === paths.symbolsPath);
276
272
  if (!stagedManifestFile) {
277
- return { path: paths.symbolsPath, entries: [] };
273
+ return { path: paths.symbolsPath, entries: [], changedEntityIds: [] };
278
274
  }
279
275
  const headManifestRecords = parseManifestRecords(readHeadFileContent(paths.symbolsPath), paths.symbolsPath) ?? [];
280
276
  const stagedManifestRecords = parseManifestRecords(stagedManifestFile.content, paths.symbolsPath);
281
277
  if (stagedManifestRecords === null) {
282
- return { path: paths.symbolsPath, entries: [] };
278
+ return { path: paths.symbolsPath, entries: [], changedEntityIds: [] };
283
279
  }
280
+ const sourcePaths = uniqueSorted([...headManifestRecords, ...stagedManifestRecords].flatMap((record) => {
281
+ const sourceFile = typeof record.sourceFile === "string"
282
+ ? record.sourceFile
283
+ : typeof record.source === "string"
284
+ ? record.source
285
+ : null;
286
+ return sourceFile === null ? [] : [sourceFile];
287
+ }));
288
+ const changedEntityIdsBySourcePath = new Map(sourcePaths.map((sourcePath) => {
289
+ const headSymbols = normalizeAuthoredManifestSymbolsForSourceFile(headManifestRecords, sourcePath);
290
+ const stagedSymbols = normalizeAuthoredManifestSymbolsForSourceFile(stagedManifestRecords, sourcePath);
291
+ return [
292
+ sourcePath,
293
+ getChangedAuthoredEntityIds(headSymbols, stagedSymbols),
294
+ ];
295
+ }));
284
296
  const entries = [];
285
297
  for (const sourceFile of sourceFiles) {
286
- const headSymbols = normalizeAuthoredManifestSymbolsForSourceFile(headManifestRecords, sourceFile.path);
287
- const stagedSymbols = normalizeAuthoredManifestSymbolsForSourceFile(stagedManifestRecords, sourceFile.path);
288
- if (signaturesEqual(headSymbols, stagedSymbols)) {
298
+ const entityIds = changedEntityIdsBySourcePath.get(sourceFile.path) ?? [];
299
+ if (entityIds.length === 0)
289
300
  continue;
290
- }
291
- entries.push({
292
- sourcePath: sourceFile.path,
293
- entityIds: getChangedAuthoredEntityIds(headSymbols, stagedSymbols),
294
- });
301
+ entries.push({ sourcePath: sourceFile.path, entityIds });
295
302
  }
296
- return { path: paths.symbolsPath, entries };
303
+ return {
304
+ path: paths.symbolsPath,
305
+ entries,
306
+ changedEntityIds: uniqueSorted(Array.from(changedEntityIdsBySourcePath.values()).flat()),
307
+ };
297
308
  }
@@ -1 +1 @@
1
- {"version":3,"file":"symbol-extract.d.ts","sourceRoot":"","sources":["../../src/traceability/symbol-extract.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EAEhB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D,KAAK,wBAAwB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAU7D,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC5C;AAED,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAE9D,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAG5E;AAmOD,wBAAgB,4BAA4B,CAE1C,UAAU,EAAE,UAAU,EACtB,cAAc,CAAC,EAAE,cAAc,GAC9B,eAAe,EAAE,CAwSnB"}
1
+ {"version":3,"file":"symbol-extract.d.ts","sourceRoot":"","sources":["../../src/traceability/symbol-extract.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EAEhB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D,KAAK,wBAAwB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAU7D,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,wBAAwB,EAAE,CAAC;CAC5C;AAED,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAE9D,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAG5E;AAmOD,wBAAgB,4BAA4B,CAE1C,UAAU,EAAE,UAAU,EACtB,cAAc,CAAC,EAAE,cAAc,GAC9B,eAAe,EAAE,CA2SnB"}
@@ -1,5 +1,5 @@
1
1
  import { createHash } from "node:crypto";
2
- import { Project, ScriptKind } from "ts-morph";
2
+ import { Project, Scope, ScriptKind } from "ts-morph";
3
3
  import { readManifestWithCoordinateOverlay } from "../extractors/manifest.js";
4
4
  import { inferSymbolRole, } from "../public/symbol-granularity.js";
5
5
  const TRACEABILITY_RELATIONSHIP_TYPES = new Set([
@@ -241,6 +241,8 @@ stagedFile, manifestLookup) {
241
241
  ? cls.getMethods()
242
242
  : []) {
243
243
  try {
244
+ if (isPrivateClassMember(method))
245
+ continue;
244
246
  const name = formatMethodSymbolName(cls.getName(), method.getName());
245
247
  const start = method.getNameNode()?.getStart() ?? method.getStart();
246
248
  const end = method.getEnd();
@@ -259,6 +261,8 @@ stagedFile, manifestLookup) {
259
261
  ? cls.getProperties()
260
262
  : []) {
261
263
  try {
264
+ if (isPrivateClassMember(property))
265
+ continue;
262
266
  const name = formatMethodSymbolName(cls.getName(), property.getName());
263
267
  const start = property.getNameNode()?.getStart() ?? property.getStart();
264
268
  const end = property.getEnd();
@@ -282,6 +286,8 @@ stagedFile, manifestLookup) {
282
286
  : []),
283
287
  ]) {
284
288
  try {
289
+ if (isPrivateClassMember(accessor))
290
+ continue;
285
291
  const name = formatMethodSymbolName(cls.getName(), accessor.getName());
286
292
  const start = accessor.getNameNode()?.getStart() ?? accessor.getStart();
287
293
  const end = accessor.getEnd();
@@ -373,6 +379,16 @@ stagedFile, manifestLookup) {
373
379
  }
374
380
  return results;
375
381
  }
382
+ function isPrivateClassMember(member) {
383
+ const name = typeof member.getName === "function" ? member.getName() : "";
384
+ if (name.startsWith("#")) {
385
+ return true;
386
+ }
387
+ if (typeof member.getScope === "function") {
388
+ return member.getScope() === Scope.Private;
389
+ }
390
+ return false;
391
+ }
376
392
  function formatMethodSymbolName(className, methodName) {
377
393
  return className ? `${className}.${methodName}` : methodName;
378
394
  }
@@ -1 +1 @@
1
- {"version":3,"file":"temp-kb.d.ts","sourceRoot":"","sources":["../../src/traceability/temp-kb.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;CACvB;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CASvC;AAOD;;;GAGG;AACH,wBAAgB,iBAAiB,CAE/B,OAAO,EAAE,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAAK,aAAa,GACpD,IAAI,CAEN;AA4ID,iBAAe,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/D;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAG1B,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,gBAAgB,EAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA6C7E;AAGD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,CAkBrE;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BlE"}
1
+ {"version":3,"file":"temp-kb.d.ts","sourceRoot":"","sources":["../../src/traceability/temp-kb.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;CACvB;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CASvC;AAOD;;;GAGG;AACH,wBAAgB,iBAAiB,CAE/B,OAAO,EAAE,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAAK,aAAa,GACpD,IAAI,CAEN;AAuLD,iBAAe,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/D;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAG1B,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,gBAAgB,EAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA6C7E;AAGD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,CAkBrE;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BlE"}