@oscharko-dev/keiko 0.2.0-beta.4 → 0.2.0-beta.6

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 (682) hide show
  1. package/README.md +39 -14
  2. package/dist/ui/csp-hashes.json +16 -21
  3. package/dist/ui/static/404.html +1 -1
  4. package/dist/ui/static/__next.__PAGE__.txt +2 -2
  5. package/dist/ui/static/__next._full.txt +3 -3
  6. package/dist/ui/static/__next._head.txt +1 -1
  7. package/dist/ui/static/__next._index.txt +2 -2
  8. package/dist/ui/static/__next._tree.txt +2 -2
  9. package/dist/ui/static/_next/static/chunks/0-qhhdvxg2j_y.js +1 -0
  10. package/dist/ui/static/_next/static/chunks/0ke4ratkgvcxo.css +1 -0
  11. package/dist/ui/static/_next/static/chunks/0xhu-pfsyvbmx.js +5 -0
  12. package/dist/ui/static/_next/static/chunks/3vf3oh2-sl2nc.js +1 -0
  13. package/dist/ui/static/_next/static/chunks/3wmd4-2vznp2g.js +106 -0
  14. package/dist/ui/static/_next/static/chunks/turbopack-18q50fp2-1qbt.js +1 -0
  15. package/dist/ui/static/_not-found/__next._full.txt +2 -2
  16. package/dist/ui/static/_not-found/__next._head.txt +1 -1
  17. package/dist/ui/static/_not-found/__next._index.txt +2 -2
  18. package/dist/ui/static/_not-found/__next._not-found.__PAGE__.txt +1 -1
  19. package/dist/ui/static/_not-found/__next._not-found.txt +1 -1
  20. package/dist/ui/static/_not-found/__next._tree.txt +2 -2
  21. package/dist/ui/static/_not-found.html +1 -1
  22. package/dist/ui/static/_not-found.txt +2 -2
  23. package/dist/ui/static/index.html +1 -1
  24. package/dist/ui/static/index.txt +3 -3
  25. package/dist/ui/static/launch/__next._full.txt +3 -3
  26. package/dist/ui/static/launch/__next._head.txt +1 -1
  27. package/dist/ui/static/launch/__next._index.txt +2 -2
  28. package/dist/ui/static/launch/__next._tree.txt +2 -2
  29. package/dist/ui/static/launch/__next.launch.__PAGE__.txt +2 -2
  30. package/dist/ui/static/launch/__next.launch.txt +1 -1
  31. package/dist/ui/static/launch.html +1 -1
  32. package/dist/ui/static/launch.txt +3 -3
  33. package/dist/ui/static/local-knowledge/__next._full.txt +3 -3
  34. package/dist/ui/static/local-knowledge/__next._head.txt +1 -1
  35. package/dist/ui/static/local-knowledge/__next._index.txt +2 -2
  36. package/dist/ui/static/local-knowledge/__next._tree.txt +2 -2
  37. package/dist/ui/static/local-knowledge/__next.local-knowledge.__PAGE__.txt +2 -2
  38. package/dist/ui/static/local-knowledge/__next.local-knowledge.txt +1 -1
  39. package/dist/ui/static/local-knowledge/capsule/__next._full.txt +3 -3
  40. package/dist/ui/static/local-knowledge/capsule/__next._head.txt +1 -1
  41. package/dist/ui/static/local-knowledge/capsule/__next._index.txt +2 -2
  42. package/dist/ui/static/local-knowledge/capsule/__next._tree.txt +2 -2
  43. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.__PAGE__.txt +2 -2
  44. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.txt +1 -1
  45. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.txt +1 -1
  46. package/dist/ui/static/local-knowledge/capsule.html +1 -1
  47. package/dist/ui/static/local-knowledge/capsule.txt +3 -3
  48. package/dist/ui/static/local-knowledge.html +1 -1
  49. package/dist/ui/static/local-knowledge.txt +3 -3
  50. package/dist/ui/static/memoriaviva/__next._full.txt +6 -6
  51. package/dist/ui/static/memoriaviva/__next._head.txt +1 -1
  52. package/dist/ui/static/memoriaviva/__next._index.txt +2 -2
  53. package/dist/ui/static/memoriaviva/__next._tree.txt +2 -2
  54. package/dist/ui/static/memoriaviva/__next.memoriaviva.__PAGE__.txt +4 -4
  55. package/dist/ui/static/memoriaviva/__next.memoriaviva.txt +1 -1
  56. package/dist/ui/static/memoriaviva/consolidation/__next._full.txt +4 -4
  57. package/dist/ui/static/memoriaviva/consolidation/__next._head.txt +1 -1
  58. package/dist/ui/static/memoriaviva/consolidation/__next._index.txt +2 -2
  59. package/dist/ui/static/memoriaviva/consolidation/__next._tree.txt +2 -2
  60. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.__PAGE__.txt +2 -2
  61. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.txt +1 -1
  62. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.txt +1 -1
  63. package/dist/ui/static/memoriaviva/consolidation.html +1 -1
  64. package/dist/ui/static/memoriaviva/consolidation.txt +4 -4
  65. package/dist/ui/static/memoriaviva/detail/__next._full.txt +6 -6
  66. package/dist/ui/static/memoriaviva/detail/__next._head.txt +1 -1
  67. package/dist/ui/static/memoriaviva/detail/__next._index.txt +2 -2
  68. package/dist/ui/static/memoriaviva/detail/__next._tree.txt +2 -2
  69. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.__PAGE__.txt +4 -4
  70. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.txt +1 -1
  71. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.txt +1 -1
  72. package/dist/ui/static/memoriaviva/detail.html +1 -1
  73. package/dist/ui/static/memoriaviva/detail.txt +6 -6
  74. package/dist/ui/static/memoriaviva/review-queue/__next._full.txt +4 -4
  75. package/dist/ui/static/memoriaviva/review-queue/__next._head.txt +1 -1
  76. package/dist/ui/static/memoriaviva/review-queue/__next._index.txt +2 -2
  77. package/dist/ui/static/memoriaviva/review-queue/__next._tree.txt +2 -2
  78. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.__PAGE__.txt +2 -2
  79. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.txt +1 -1
  80. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.txt +1 -1
  81. package/dist/ui/static/memoriaviva/review-queue.html +1 -1
  82. package/dist/ui/static/memoriaviva/review-queue.txt +4 -4
  83. package/dist/ui/static/memoriaviva.html +1 -1
  84. package/dist/ui/static/memoriaviva.txt +6 -6
  85. package/node_modules/@oscharko-dev/keiko-cli/dist/.tsbuildinfo +1 -1
  86. package/node_modules/@oscharko-dev/keiko-cli/dist/doctor.d.ts +24 -0
  87. package/node_modules/@oscharko-dev/keiko-cli/dist/doctor.d.ts.map +1 -0
  88. package/node_modules/@oscharko-dev/keiko-cli/dist/doctor.js +108 -0
  89. package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.d.ts.map +1 -1
  90. package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.js +7 -4
  91. package/node_modules/@oscharko-dev/keiko-cli/dist/index.d.ts +1 -0
  92. package/node_modules/@oscharko-dev/keiko-cli/dist/index.d.ts.map +1 -1
  93. package/node_modules/@oscharko-dev/keiko-cli/dist/index.js +1 -0
  94. package/node_modules/@oscharko-dev/keiko-cli/dist/init.d.ts +2 -2
  95. package/node_modules/@oscharko-dev/keiko-cli/dist/init.d.ts.map +1 -1
  96. package/node_modules/@oscharko-dev/keiko-cli/dist/init.js +4 -4
  97. package/node_modules/@oscharko-dev/keiko-cli/dist/install-layout.d.ts +6 -0
  98. package/node_modules/@oscharko-dev/keiko-cli/dist/install-layout.d.ts.map +1 -0
  99. package/node_modules/@oscharko-dev/keiko-cli/dist/install-layout.js +24 -0
  100. package/node_modules/@oscharko-dev/keiko-cli/dist/launcher.d.ts.map +1 -1
  101. package/node_modules/@oscharko-dev/keiko-cli/dist/launcher.js +5 -7
  102. package/node_modules/@oscharko-dev/keiko-cli/dist/lifecycle.d.ts +1 -0
  103. package/node_modules/@oscharko-dev/keiko-cli/dist/lifecycle.d.ts.map +1 -1
  104. package/node_modules/@oscharko-dev/keiko-cli/dist/lifecycle.js +75 -30
  105. package/node_modules/@oscharko-dev/keiko-cli/dist/memory.d.ts +3 -0
  106. package/node_modules/@oscharko-dev/keiko-cli/dist/memory.d.ts.map +1 -1
  107. package/node_modules/@oscharko-dev/keiko-cli/dist/memory.js +76 -7
  108. package/node_modules/@oscharko-dev/keiko-cli/dist/run.d.ts +3 -1
  109. package/node_modules/@oscharko-dev/keiko-cli/dist/run.d.ts.map +1 -1
  110. package/node_modules/@oscharko-dev/keiko-cli/dist/run.js +123 -43
  111. package/node_modules/@oscharko-dev/keiko-cli/dist/runner.d.ts.map +1 -1
  112. package/node_modules/@oscharko-dev/keiko-cli/dist/runner.js +20 -4
  113. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts +1 -1
  114. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts.map +1 -1
  115. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.js +17 -14
  116. package/node_modules/@oscharko-dev/keiko-cli/package.json +1 -1
  117. package/node_modules/@oscharko-dev/keiko-contracts/dist/.tsbuildinfo +1 -1
  118. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts +7 -0
  119. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts.map +1 -1
  120. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts.map +1 -1
  121. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.js +1 -2
  122. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts +1 -0
  123. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts.map +1 -1
  124. package/node_modules/@oscharko-dev/keiko-contracts/dist/gateway.d.ts +12 -0
  125. package/node_modules/@oscharko-dev/keiko-contracts/dist/gateway.d.ts.map +1 -1
  126. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts +4 -2
  127. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts.map +1 -1
  128. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.js +4 -1
  129. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts.map +1 -1
  130. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-audit-events.d.ts +13 -1
  131. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-audit-events.d.ts.map +1 -1
  132. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-audit-events.js +7 -6
  133. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-internal.d.ts.map +1 -1
  134. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-internal.js +1 -1
  135. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-operations.d.ts.map +1 -1
  136. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-workflow-port.d.ts.map +1 -1
  137. package/node_modules/@oscharko-dev/keiko-contracts/dist/memory-workflow-port.js +1 -1
  138. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts +23 -4
  139. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts.map +1 -1
  140. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts +1 -0
  141. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts.map +1 -1
  142. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.js +1 -0
  143. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts +1 -0
  144. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts.map +1 -1
  145. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.js +26 -0
  146. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/testQualityRubric.d.ts +5 -3
  147. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/testQualityRubric.d.ts.map +1 -1
  148. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/testQualityRubric.js +29 -3
  149. package/node_modules/@oscharko-dev/keiko-contracts/dist/text-safety.d.ts +7 -0
  150. package/node_modules/@oscharko-dev/keiko-contracts/dist/text-safety.d.ts.map +1 -0
  151. package/node_modules/@oscharko-dev/keiko-contracts/dist/text-safety.js +58 -0
  152. package/node_modules/@oscharko-dev/keiko-contracts/package.json +5 -1
  153. package/node_modules/@oscharko-dev/keiko-evaluations/dist/.tsbuildinfo +1 -1
  154. package/node_modules/@oscharko-dev/keiko-evaluations/dist/surface-parity.d.ts.map +1 -1
  155. package/node_modules/@oscharko-dev/keiko-evaluations/package.json +1 -1
  156. package/node_modules/@oscharko-dev/keiko-evidence/dist/.tsbuildinfo +1 -1
  157. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts +1 -1
  158. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts.map +1 -1
  159. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.js +1 -1
  160. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts +7 -0
  161. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts.map +1 -1
  162. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.js +62 -13
  163. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts +3 -3
  164. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts.map +1 -1
  165. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.js +31 -11
  166. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts +35 -3
  167. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts.map +1 -1
  168. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.js +107 -3
  169. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts +15 -1
  170. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts.map +1 -1
  171. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.js +248 -36
  172. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts +4 -4
  173. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts.map +1 -1
  174. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.js +1 -1
  175. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts +33 -2
  176. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts.map +1 -1
  177. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts +34 -1
  178. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts.map +1 -1
  179. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.js +95 -22
  180. package/node_modules/@oscharko-dev/keiko-evidence/dist/side-file.d.ts.map +1 -1
  181. package/node_modules/@oscharko-dev/keiko-evidence/dist/side-file.js +17 -5
  182. package/node_modules/@oscharko-dev/keiko-evidence/dist/store.d.ts.map +1 -1
  183. package/node_modules/@oscharko-dev/keiko-evidence/dist/store.js +128 -12
  184. package/node_modules/@oscharko-dev/keiko-evidence/dist/workflow-evidence.d.ts.map +1 -1
  185. package/node_modules/@oscharko-dev/keiko-evidence/dist/workflow-evidence.js +1 -3
  186. package/node_modules/@oscharko-dev/keiko-evidence/package.json +1 -1
  187. package/node_modules/@oscharko-dev/keiko-harness/dist/.tsbuildinfo +1 -1
  188. package/node_modules/@oscharko-dev/keiko-harness/package.json +1 -1
  189. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/.tsbuildinfo +1 -1
  190. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts.map +1 -1
  191. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.js +1 -2
  192. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts.map +1 -1
  193. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.js +1 -1
  194. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.d.ts +0 -1
  195. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.d.ts.map +1 -1
  196. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.js +0 -1
  197. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts.map +1 -1
  198. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.js +7 -1
  199. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/types.d.ts.map +1 -1
  200. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/types.js +2 -3
  201. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts.map +1 -1
  202. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.js +45 -21
  203. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/media-type.d.ts.map +1 -1
  204. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/media-type.js +1 -0
  205. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.d.ts.map +1 -1
  206. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.js +11 -3
  207. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/dimensions.d.ts +2 -0
  208. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/dimensions.d.ts.map +1 -1
  209. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/dimensions.js +42 -0
  210. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts.map +1 -1
  211. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.js +34 -0
  212. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts +1 -1
  213. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts.map +1 -1
  214. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.js +1 -1
  215. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/report.d.ts.map +1 -1
  216. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/report.js +7 -6
  217. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner.d.ts.map +1 -1
  218. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner.js +7 -1
  219. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/types.d.ts +4 -0
  220. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/types.d.ts.map +1 -1
  221. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/types.js +2 -0
  222. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts +1 -1
  223. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts.map +1 -1
  224. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.js +1 -1
  225. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.d.ts.map +1 -1
  226. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.js +121 -3
  227. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.d.ts.map +1 -1
  228. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.js +34 -4
  229. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts +1 -0
  230. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts.map +1 -1
  231. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.js +63 -0
  232. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.d.ts.map +1 -1
  233. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.js +4 -7
  234. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/html-parser.d.ts.map +1 -1
  235. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/html-parser.js +67 -11
  236. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts +1 -0
  237. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts.map +1 -1
  238. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.js +3 -0
  239. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.d.ts.map +1 -1
  240. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.js +39 -3
  241. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/ocr/null-ocr-adapter.d.ts.map +1 -1
  242. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/ocr/ocr-pipeline-parser.d.ts.map +1 -1
  243. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/ocr/ocr-pipeline-parser.js +46 -11
  244. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/parser-test-fixtures.d.ts +2 -0
  245. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/parser-test-fixtures.d.ts.map +1 -1
  246. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/parser-test-fixtures.js +2 -0
  247. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts.map +1 -1
  248. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.js +114 -0
  249. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/xlsx-parser.d.ts +3 -0
  250. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/xlsx-parser.d.ts.map +1 -0
  251. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/xlsx-parser.js +425 -0
  252. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.d.ts.map +1 -1
  253. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/qualityIntelligence/capsuleCorpus.d.ts +9 -4
  254. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/qualityIntelligence/capsuleCorpus.d.ts.map +1 -1
  255. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/qualityIntelligence/capsuleCorpus.js +11 -6
  256. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/retrieval-runner.js +15 -2
  257. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts +1 -0
  258. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts.map +1 -1
  259. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.js +220 -7
  260. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/types.d.ts +2 -1
  261. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/types.d.ts.map +1 -1
  262. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts.map +1 -1
  263. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.js +3 -1
  264. package/node_modules/@oscharko-dev/keiko-local-knowledge/package.json +4 -2
  265. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/.tsbuildinfo +1 -1
  266. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/capture-safety.d.ts +4 -0
  267. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/capture-safety.d.ts.map +1 -0
  268. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/capture-safety.js +17 -0
  269. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/errors.d.ts +1 -1
  270. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/errors.d.ts.map +1 -1
  271. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/index.d.ts +1 -0
  272. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/index.d.ts.map +1 -1
  273. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/index.js +1 -0
  274. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/salience.js +1 -1
  275. package/node_modules/@oscharko-dev/keiko-memory-capture/package.json +1 -1
  276. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/.tsbuildinfo +1 -1
  277. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/_constants.d.ts +3 -0
  278. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/_constants.d.ts.map +1 -1
  279. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/_constants.js +5 -0
  280. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/consolidate.d.ts.map +1 -1
  281. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/consolidate.js +93 -30
  282. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/stale.d.ts.map +1 -1
  283. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/stale.js +3 -1
  284. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/types.d.ts +5 -0
  285. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/types.d.ts.map +1 -1
  286. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/types.js +1 -1
  287. package/node_modules/@oscharko-dev/keiko-memory-consolidation/package.json +2 -2
  288. package/node_modules/@oscharko-dev/keiko-memory-governance/dist/.tsbuildinfo +1 -1
  289. package/node_modules/@oscharko-dev/keiko-memory-governance/dist/forget.js +1 -1
  290. package/node_modules/@oscharko-dev/keiko-memory-governance/dist/types.js +1 -1
  291. package/node_modules/@oscharko-dev/keiko-memory-governance/package.json +2 -2
  292. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/.tsbuildinfo +1 -1
  293. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/context.d.ts.map +1 -1
  294. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/context.js +61 -18
  295. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/ranking.d.ts.map +1 -1
  296. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/ranking.js +3 -1
  297. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/retrieve.d.ts.map +1 -1
  298. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/retrieve.js +26 -4
  299. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/types.d.ts +9 -1
  300. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/types.d.ts.map +1 -1
  301. package/node_modules/@oscharko-dev/keiko-memory-retrieval/package.json +1 -1
  302. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/.tsbuildinfo +1 -1
  303. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/embeddings.d.ts +1 -0
  304. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/embeddings.d.ts.map +1 -1
  305. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/embeddings.js +21 -0
  306. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/index.d.ts +1 -1
  307. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/index.d.ts.map +1 -1
  308. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/migrate-encrypt.d.ts.map +1 -1
  309. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/migrate-encrypt.js +24 -4
  310. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/schema.d.ts +1 -1
  311. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/schema.d.ts.map +1 -1
  312. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/schema.js +27 -4
  313. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/tombstones.d.ts +1 -0
  314. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/tombstones.d.ts.map +1 -1
  315. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/tombstones.js +21 -4
  316. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/types.d.ts +22 -1
  317. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/types.d.ts.map +1 -1
  318. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/validate.d.ts.map +1 -1
  319. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/validate.js +3 -0
  320. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/vault.d.ts.map +1 -1
  321. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/vault.js +105 -28
  322. package/node_modules/@oscharko-dev/keiko-memory-vault/package.json +1 -1
  323. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/.tsbuildinfo +1 -1
  324. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts +2 -0
  325. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts.map +1 -1
  326. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.js +83 -69
  327. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/embedding.d.ts +3 -2
  328. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/embedding.d.ts.map +1 -1
  329. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/embedding.js +20 -16
  330. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/gateway.d.ts.map +1 -1
  331. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/gateway.js +9 -3
  332. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts.map +1 -1
  333. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.js +29 -3
  334. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/index.d.ts +4 -4
  335. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/index.d.ts.map +1 -1
  336. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/index.js +3 -3
  337. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.d.ts +1 -0
  338. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.d.ts.map +1 -1
  339. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.js +22 -1
  340. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.d.ts.map +1 -1
  341. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.js +69 -10
  342. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-embedding-adapter.d.ts +20 -1
  343. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-embedding-adapter.d.ts.map +1 -1
  344. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-embedding-adapter.js +122 -7
  345. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityGate.d.ts +10 -1
  346. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityGate.d.ts.map +1 -1
  347. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityGate.js +33 -11
  348. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityMapping.d.ts +4 -0
  349. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityMapping.d.ts.map +1 -0
  350. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/capabilityMapping.js +21 -0
  351. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/index.d.ts +1 -1
  352. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/index.d.ts.map +1 -1
  353. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/index.js +1 -1
  354. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/routing.d.ts.map +1 -1
  355. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/routing.js +2 -13
  356. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/resilience.d.ts +1 -0
  357. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/resilience.d.ts.map +1 -1
  358. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/resilience.js +18 -2
  359. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/types.d.ts +5 -1
  360. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/types.d.ts.map +1 -1
  361. package/node_modules/@oscharko-dev/keiko-model-gateway/package.json +1 -1
  362. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/.tsbuildinfo +1 -1
  363. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/assertions.d.ts +35 -0
  364. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/assertions.d.ts.map +1 -1
  365. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/assertions.js +74 -0
  366. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/deduplication.d.ts.map +1 -1
  367. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/deduplication.js +6 -2
  368. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.d.ts.map +1 -1
  369. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.js +64 -19
  370. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/cleanToScreenIr.d.ts.map +1 -1
  371. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/cleanToScreenIr.js +3 -0
  372. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/color.d.ts +6 -1
  373. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/color.d.ts.map +1 -1
  374. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/color.js +22 -9
  375. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts +4 -1
  376. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts.map +1 -1
  377. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.js +28 -12
  378. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts.map +1 -1
  379. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.js +123 -33
  380. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/index.d.ts +2 -2
  381. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/index.d.ts.map +1 -1
  382. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts +7 -4
  383. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts.map +1 -1
  384. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.d.ts.map +1 -1
  385. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.js +13 -17
  386. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts.map +1 -1
  387. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.js +35 -12
  388. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.d.ts.map +1 -1
  389. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.js +54 -6
  390. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts +4 -0
  391. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts.map +1 -1
  392. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.js +29 -10
  393. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.d.ts.map +1 -1
  394. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.js +10 -4
  395. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/requirementExcerpt.d.ts.map +1 -1
  396. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/requirementExcerpt.js +15 -6
  397. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/staleness.d.ts +4 -0
  398. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/staleness.d.ts.map +1 -1
  399. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/staleness.js +162 -6
  400. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.d.ts +14 -2
  401. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.d.ts.map +1 -1
  402. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.js +50 -12
  403. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.d.ts.map +1 -1
  404. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.js +4 -2
  405. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/alm.d.ts.map +1 -1
  406. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/alm.js +29 -30
  407. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.d.ts.map +1 -1
  408. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.js +34 -5
  409. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/qtest.d.ts.map +1 -1
  410. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/qtest.js +29 -29
  411. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.d.ts +2 -1
  412. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.d.ts.map +1 -1
  413. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.js +40 -2
  414. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/traceability.d.ts.map +1 -1
  415. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/traceability.js +12 -9
  416. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/xray.d.ts.map +1 -1
  417. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/xray.js +6 -2
  418. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/textSafety.d.ts +7 -0
  419. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/textSafety.d.ts.map +1 -1
  420. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/textSafety.js +7 -0
  421. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/candidateBounds.d.ts +10 -0
  422. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/candidateBounds.d.ts.map +1 -0
  423. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/candidateBounds.js +14 -0
  424. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/index.d.ts.map +1 -1
  425. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/index.js +3 -2
  426. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/parseGeneratedCandidates.d.ts.map +1 -1
  427. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/parseGeneratedCandidates.js +97 -50
  428. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/prompt.d.ts.map +1 -1
  429. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/prompt.js +35 -7
  430. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.d.ts +2 -2
  431. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.d.ts.map +1 -1
  432. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.js +2 -2
  433. package/node_modules/@oscharko-dev/keiko-quality-intelligence/package.json +1 -1
  434. package/node_modules/@oscharko-dev/keiko-sdk/dist/.tsbuildinfo +1 -1
  435. package/node_modules/@oscharko-dev/keiko-sdk/package.json +1 -1
  436. package/node_modules/@oscharko-dev/keiko-security/dist/.tsbuildinfo +1 -1
  437. package/node_modules/@oscharko-dev/keiko-security/dist/errors/gateway.d.ts +11 -0
  438. package/node_modules/@oscharko-dev/keiko-security/dist/errors/gateway.d.ts.map +1 -1
  439. package/node_modules/@oscharko-dev/keiko-security/dist/errors/gateway.js +13 -0
  440. package/node_modules/@oscharko-dev/keiko-security/package.json +1 -1
  441. package/node_modules/@oscharko-dev/keiko-server/dist/.tsbuildinfo +1 -1
  442. package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.d.ts +6 -0
  443. package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.d.ts.map +1 -0
  444. package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.js +12 -0
  445. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts +1 -1
  446. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts.map +1 -1
  447. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.js +61 -16
  448. package/node_modules/@oscharko-dev/keiko-server/dist/chat-stream-handlers.d.ts.map +1 -1
  449. package/node_modules/@oscharko-dev/keiko-server/dist/chat-stream-handlers.js +11 -9
  450. package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.d.ts +1 -0
  451. package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.d.ts.map +1 -1
  452. package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.js +3 -0
  453. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts +4 -2
  454. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts.map +1 -1
  455. package/node_modules/@oscharko-dev/keiko-server/dist/deps.js +44 -69
  456. package/node_modules/@oscharko-dev/keiko-server/dist/gateway-setup.d.ts.map +1 -1
  457. package/node_modules/@oscharko-dev/keiko-server/dist/gateway-setup.js +120 -28
  458. package/node_modules/@oscharko-dev/keiko-server/dist/governed-workflow.d.ts.map +1 -1
  459. package/node_modules/@oscharko-dev/keiko-server/dist/governed-workflow.js +4 -1
  460. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.d.ts.map +1 -1
  461. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.js +2 -0
  462. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts +0 -1
  463. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts.map +1 -1
  464. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.js +222 -18
  465. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts.map +1 -1
  466. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.js +118 -23
  467. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts.map +1 -1
  468. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.js +57 -22
  469. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts.map +1 -1
  470. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.js +14 -5
  471. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts +1 -0
  472. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts.map +1 -1
  473. package/node_modules/@oscharko-dev/keiko-server/dist/index.js +1 -0
  474. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts.map +1 -1
  475. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.js +11 -4
  476. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.d.ts.map +1 -1
  477. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.js +26 -14
  478. package/node_modules/@oscharko-dev/keiko-server/dist/memory-audit-handler.d.ts +1 -0
  479. package/node_modules/@oscharko-dev/keiko-server/dist/memory-audit-handler.d.ts.map +1 -1
  480. package/node_modules/@oscharko-dev/keiko-server/dist/memory-audit-handler.js +52 -27
  481. package/node_modules/@oscharko-dev/keiko-server/dist/memory-capture-policy.d.ts +10 -0
  482. package/node_modules/@oscharko-dev/keiko-server/dist/memory-capture-policy.d.ts.map +1 -0
  483. package/node_modules/@oscharko-dev/keiko-server/dist/memory-capture-policy.js +44 -0
  484. package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-handlers.d.ts.map +1 -1
  485. package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-handlers.js +79 -57
  486. package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-registry.d.ts +1 -0
  487. package/node_modules/@oscharko-dev/keiko-server/dist/memory-consolidation-registry.d.ts.map +1 -1
  488. package/node_modules/@oscharko-dev/keiko-server/dist/memory-conv-handlers.d.ts.map +1 -1
  489. package/node_modules/@oscharko-dev/keiko-server/dist/memory-conv-handlers.js +6 -4
  490. package/node_modules/@oscharko-dev/keiko-server/dist/memory-conversation-context.d.ts.map +1 -1
  491. package/node_modules/@oscharko-dev/keiko-server/dist/memory-diagnostics.d.ts.map +1 -1
  492. package/node_modules/@oscharko-dev/keiko-server/dist/memory-diagnostics.js +16 -9
  493. package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.d.ts +3 -1
  494. package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.d.ts.map +1 -1
  495. package/node_modules/@oscharko-dev/keiko-server/dist/memory-handlers.js +538 -87
  496. package/node_modules/@oscharko-dev/keiko-server/dist/memory-maintenance-handlers.d.ts +6 -1
  497. package/node_modules/@oscharko-dev/keiko-server/dist/memory-maintenance-handlers.d.ts.map +1 -1
  498. package/node_modules/@oscharko-dev/keiko-server/dist/memory-maintenance-handlers.js +17 -38
  499. package/node_modules/@oscharko-dev/keiko-server/dist/memory-retention.d.ts.map +1 -1
  500. package/node_modules/@oscharko-dev/keiko-server/dist/memory-retention.js +7 -15
  501. package/node_modules/@oscharko-dev/keiko-server/dist/memory-salience.d.ts.map +1 -1
  502. package/node_modules/@oscharko-dev/keiko-server/dist/memory-salience.js +17 -2
  503. package/node_modules/@oscharko-dev/keiko-server/dist/memory-scope-sanitizer.d.ts.map +1 -1
  504. package/node_modules/@oscharko-dev/keiko-server/dist/memory-scope-sanitizer.js +19 -0
  505. package/node_modules/@oscharko-dev/keiko-server/dist/memory-target-resolver.d.ts.map +1 -1
  506. package/node_modules/@oscharko-dev/keiko-server/dist/memory-target-resolver.js +4 -1
  507. package/node_modules/@oscharko-dev/keiko-server/dist/memory-workflow-port.d.ts +1 -0
  508. package/node_modules/@oscharko-dev/keiko-server/dist/memory-workflow-port.d.ts.map +1 -1
  509. package/node_modules/@oscharko-dev/keiko-server/dist/memory-workflow-port.js +108 -27
  510. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/capsuleAdapter.d.ts +4 -0
  511. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/capsuleAdapter.d.ts.map +1 -1
  512. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/capsuleAdapter.js +3 -0
  513. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/connectorErrors.d.ts.map +1 -1
  514. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/connectorErrors.js +11 -8
  515. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.d.ts.map +1 -1
  516. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.js +62 -7
  517. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/exportRoutes.d.ts.map +1 -1
  518. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/exportRoutes.js +98 -33
  519. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConcurrency.d.ts.map +1 -1
  520. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConcurrency.js +2 -1
  521. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.d.ts +6 -0
  522. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.d.ts.map +1 -1
  523. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.js +16 -3
  524. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorAudit.d.ts +7 -0
  525. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorAudit.d.ts.map +1 -1
  526. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts +1 -1
  527. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts.map +1 -1
  528. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.js +3 -1
  529. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConsent.d.ts +2 -2
  530. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConsent.d.ts.map +1 -1
  531. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConsent.js +3 -3
  532. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaObservedActions.d.ts +5 -0
  533. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaObservedActions.d.ts.map +1 -1
  534. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaObservedActions.js +10 -8
  535. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaReadiness.d.ts.map +1 -1
  536. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaReadiness.js +11 -5
  537. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts.map +1 -1
  538. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.js +1 -0
  539. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.d.ts +3 -0
  540. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.d.ts.map +1 -1
  541. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.js +71 -10
  542. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts +2 -0
  543. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts.map +1 -1
  544. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.js +86 -23
  545. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts +1 -1
  546. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts.map +1 -1
  547. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaTokenSource.d.ts.map +1 -1
  548. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaTokenSource.js +4 -3
  549. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaUrl.d.ts.map +1 -1
  550. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaUrl.js +2 -0
  551. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/index.d.ts +1 -1
  552. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/index.d.ts.map +1 -1
  553. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/index.js +1 -1
  554. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaCodegenRoutes.d.ts.map +1 -1
  555. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaCodegenRoutes.js +60 -20
  556. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts +11 -6
  557. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts.map +1 -1
  558. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.js +144 -6
  559. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts +9 -0
  560. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts.map +1 -1
  561. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.js +84 -15
  562. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +9 -7
  563. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -1
  564. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.js +206 -42
  565. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.d.ts.map +1 -1
  566. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.js +12 -1
  567. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.d.ts +1 -1
  568. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.d.ts.map +1 -1
  569. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.js +1 -0
  570. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffRoutes.d.ts.map +1 -1
  571. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffRoutes.js +41 -9
  572. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.d.ts +1 -0
  573. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.d.ts.map +1 -1
  574. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.js +2 -0
  575. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts +3 -1
  576. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts.map +1 -1
  577. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.js +86 -68
  578. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.d.ts +15 -1
  579. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.d.ts.map +1 -1
  580. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.js +56 -39
  581. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts +1 -1
  582. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts.map +1 -1
  583. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.js +382 -75
  584. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.d.ts +5 -0
  585. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.d.ts.map +1 -0
  586. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.js +70 -0
  587. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.d.ts.map +1 -1
  588. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.js +20 -8
  589. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.d.ts +25 -4
  590. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.d.ts.map +1 -1
  591. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.js +72 -9
  592. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runExecution.d.ts +3 -2
  593. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runExecution.d.ts.map +1 -1
  594. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runExecution.js +44 -16
  595. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts +7 -0
  596. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts.map +1 -1
  597. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.js +370 -38
  598. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRegistry.d.ts.map +1 -1
  599. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRegistry.js +2 -0
  600. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts.map +1 -1
  601. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.js +15 -5
  602. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/traceabilityRoutes.d.ts.map +1 -1
  603. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/traceabilityRoutes.js +36 -4
  604. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.d.ts.map +1 -1
  605. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.js +73 -8
  606. package/node_modules/@oscharko-dev/keiko-server/dist/routes.d.ts.map +1 -1
  607. package/node_modules/@oscharko-dev/keiko-server/dist/routes.js +20 -6
  608. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.d.ts +1 -0
  609. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.d.ts.map +1 -1
  610. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.js +3 -0
  611. package/node_modules/@oscharko-dev/keiko-server/dist/run-handlers.d.ts.map +1 -1
  612. package/node_modules/@oscharko-dev/keiko-server/dist/run-handlers.js +2 -0
  613. package/node_modules/@oscharko-dev/keiko-server/dist/sse-write.d.ts +9 -0
  614. package/node_modules/@oscharko-dev/keiko-server/dist/sse-write.d.ts.map +1 -0
  615. package/node_modules/@oscharko-dev/keiko-server/dist/sse-write.js +26 -0
  616. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts.map +1 -1
  617. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.js +16 -8
  618. package/node_modules/@oscharko-dev/keiko-server/dist/store/messages.d.ts.map +1 -1
  619. package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.d.ts.map +1 -1
  620. package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.js +4 -1
  621. package/node_modules/@oscharko-dev/keiko-server/dist/terminal.d.ts.map +1 -1
  622. package/node_modules/@oscharko-dev/keiko-server/package.json +1 -1
  623. package/node_modules/@oscharko-dev/keiko-tools/dist/.tsbuildinfo +1 -1
  624. package/node_modules/@oscharko-dev/keiko-tools/dist/patch-normalize.d.ts.map +1 -1
  625. package/node_modules/@oscharko-dev/keiko-tools/dist/patch-normalize.js +13 -7
  626. package/node_modules/@oscharko-dev/keiko-tools/package.json +1 -1
  627. package/node_modules/@oscharko-dev/keiko-verification/dist/.tsbuildinfo +1 -1
  628. package/node_modules/@oscharko-dev/keiko-verification/package.json +1 -1
  629. package/node_modules/@oscharko-dev/keiko-workflows/dist/.tsbuildinfo +1 -1
  630. package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/memory.d.ts +2 -2
  631. package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/memory.d.ts.map +1 -1
  632. package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/memory.js +16 -18
  633. package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/prompt.d.ts.map +1 -1
  634. package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/prompt.js +6 -1
  635. package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/workflow.d.ts.map +1 -1
  636. package/node_modules/@oscharko-dev/keiko-workflows/dist/bug-investigation/workflow.js +3 -3
  637. package/node_modules/@oscharko-dev/keiko-workflows/dist/governed-handoff.d.ts.map +1 -1
  638. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/anchors.d.ts.map +1 -1
  639. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/anchors.js +68 -0
  640. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/descriptors.d.ts +2 -2
  641. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts +18 -2
  642. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts.map +1 -1
  643. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.js +209 -54
  644. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.d.ts +4 -4
  645. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.d.ts.map +1 -1
  646. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.js +4 -1
  647. package/node_modules/@oscharko-dev/keiko-workflows/dist/unit-tests/target-guard.d.ts.map +1 -1
  648. package/node_modules/@oscharko-dev/keiko-workflows/package.json +1 -1
  649. package/node_modules/@oscharko-dev/keiko-workspace/dist/.tsbuildinfo +1 -1
  650. package/node_modules/@oscharko-dev/keiko-workspace/dist/discovery.d.ts.map +1 -1
  651. package/node_modules/@oscharko-dev/keiko-workspace/dist/discovery.js +34 -2
  652. package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.d.ts +1 -0
  653. package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.d.ts.map +1 -1
  654. package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.js +2 -2
  655. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts.map +1 -1
  656. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.js +1 -2
  657. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts.map +1 -1
  658. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.js +2 -1
  659. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.d.ts.map +1 -1
  660. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.js +74 -2
  661. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts.map +1 -1
  662. package/node_modules/@oscharko-dev/keiko-workspace/package.json +1 -1
  663. package/package.json +23 -6
  664. package/dist/ui/static/_next/static/chunks/082obv3v03b-9.js +0 -2
  665. package/dist/ui/static/_next/static/chunks/0uifns067thv8.js +0 -1
  666. package/dist/ui/static/_next/static/chunks/0x31-j53ab1tt.js +0 -1
  667. package/dist/ui/static/_next/static/chunks/1t04tfgin0v_g.js +0 -106
  668. package/dist/ui/static/_next/static/chunks/1v4hrxrm_6_rw.js +0 -1
  669. package/dist/ui/static/_next/static/chunks/27jktro2p5rq9.js +0 -4
  670. package/dist/ui/static/_next/static/chunks/2lypy3ewh0r04.js +0 -1
  671. package/dist/ui/static/_next/static/chunks/32573pyyglqxl.js +0 -1
  672. package/dist/ui/static/_next/static/chunks/3_t_pzet29qtn.js +0 -1
  673. package/dist/ui/static/_next/static/chunks/3jgg_oe0iok0l.js +0 -1
  674. package/dist/ui/static/_next/static/chunks/3o_oia3vsam60.js +0 -1
  675. package/dist/ui/static/_next/static/chunks/3wr_35f2vg6sd.css +0 -1
  676. package/dist/ui/static/_next/static/chunks/turbopack-2lg1g6kbsfm0x.js +0 -1
  677. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.d.ts +0 -6
  678. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.d.ts.map +0 -1
  679. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.js +0 -49
  680. /package/dist/ui/static/_next/static/{Hb6brrvZY2nZtizQlYhVt → fQMXe8UmV01bh25WOoIt3}/_buildManifest.js +0 -0
  681. /package/dist/ui/static/_next/static/{Hb6brrvZY2nZtizQlYhVt → fQMXe8UmV01bh25WOoIt3}/_clientMiddlewareManifest.js +0 -0
  682. /package/dist/ui/static/_next/static/{Hb6brrvZY2nZtizQlYhVt → fQMXe8UmV01bh25WOoIt3}/_ssgManifest.js +0 -0
@@ -6,13 +6,15 @@
6
6
  //
7
7
  // POST /api/figma/snapshots — trigger a bounded snapshot-build from a board link
8
8
  // GET /api/figma/snapshots/:runId — load a stored snapshot summary for display
9
+ // GET /api/figma/snapshots/:runId/screens/:screenIndex/image
10
+ // — stream a stored, token-free PNG side-file
9
11
  //
10
12
  // Trigger route:
11
13
  // 1. Parses board link → (fileKey, nodeId) — rejects malformed / missing node-id links.
12
14
  // 2. Resolves the read-only PAT server-side (vault > config > FIGMA_ACCESS_TOKEN env).
13
15
  // 3. Builds a runId, runs connector → cleanScopedNodesToScreenIr → buildFigmaSnapshot → store.
14
16
  // 4. Returns a minimal summary (runId, screenCount, skippedCount, reduction hint).
15
- // No token, no raw IR bytes, no render bytes reach the browser.
17
+ // No token, no raw IR bytes, no render bytes are embedded in the JSON response.
16
18
  //
17
19
  // Load route reads the stored immutable evidence record and returns a browser-safe
18
20
  // projection. No re-contact with Figma.
@@ -42,25 +44,31 @@
42
44
  // The coalesced build continues — other waiters (if any) are unaffected and will
43
45
  // receive the result when the build settles.
44
46
  import { randomUUID } from "node:crypto";
45
- import { currentGatewayEgressConfig } from "../deps.js";
46
- import { parseFigmaTarget, deriveFigmaScopeRef, observeFigmaRevoke, EXPECTED_FIGMA_SCOPES, FigmaConnectorError, } from "./figma/index.js";
47
+ import { STREAMING } from "../routes.js";
48
+ import { currentGatewayConfig, currentGatewayEgressConfig, currentRedactionSecrets, } from "../deps.js";
49
+ import { redact } from "@oscharko-dev/keiko-security";
50
+ import { appendFigmaConnectorAudit, parseFigmaTarget, deriveFigmaScopeRef, observeFigmaRevoke, EXPECTED_FIGMA_SCOPES, FigmaConnectorError, resolveScopedPaginationLimits, } from "./figma/index.js";
47
51
  import { governedSnapshotBuild, figmaTokenStoreFor, } from "./figmaSnapshotOrchestration.js";
48
52
  import { createNodeFigmaSnapshotStore, } from "@oscharko-dev/keiko-evidence";
49
53
  // ─── Error helpers ─────────────────────────────────────────────────────────────
54
+ // Operator-facing scope hint, derived from the single source of truth (figmaConsent.EXPECTED_FIGMA_SCOPES)
55
+ // so the re-key guidance can never drift from the scopes the consent ledger records (#758 AC2).
56
+ const READ_ONLY_SCOPE_HINT = EXPECTED_FIGMA_SCOPES.join(", ");
50
57
  const FIGMA_ROUTE_ERROR_MESSAGES = {
51
- FIGMA_TOKEN_MISSING: "No Figma PAT is configured. Set FIGMA_ACCESS_TOKEN in the server environment (read-only scopes: file_read, files:read).",
58
+ FIGMA_TOKEN_MISSING: `No Figma PAT is configured. Add one in Keiko config, vault, or FIGMA_ACCESS_TOKEN (read-only scopes: ${READ_ONLY_SCOPE_HINT}).`,
52
59
  FIGMA_TOKEN_INVALID: "The configured Figma PAT is invalid. Please rotate the token.",
53
60
  FIGMA_TOKEN_EXPIRED: "The configured Figma PAT has expired. Please rotate the token.",
54
61
  FIGMA_TOKEN_REVOKED: "The configured Figma PAT has been revoked. Please mint a new token.",
55
- FIGMA_INSUFFICIENT_SCOPE: "The configured Figma PAT lacks the required read-only scopes (file_read, files:read).",
62
+ FIGMA_INSUFFICIENT_SCOPE: `The configured Figma PAT lacks the required read-only scopes (${READ_ONLY_SCOPE_HINT}).`,
56
63
  FIGMA_NOT_FOUND: "The Figma board was not found. Check the link and that the PAT can access this file.",
64
+ FIGMA_NOT_READY: "The selected Figma scope is not release-ready. Pin a Figma version, select a Release section, or mark the frame Ready for dev before snapshotting.",
57
65
  FIGMA_UPSTREAM_UNAVAILABLE: "Figma API is temporarily unavailable. Please try again.",
58
66
  FIGMA_PROXY_EGRESS_FAILED: "The forward proxy rejected the Figma egress request. Check proxy configuration.",
59
67
  FIGMA_PROXY_UNREACHABLE: "The configured forward proxy is unreachable. Check proxy host and port settings.",
60
68
  FIGMA_PROXY_AUTH_REQUIRED: "The forward proxy requires authentication. Configure proxy credentials or an allow rule.",
61
69
  FIGMA_PROXY_BLOCKED_BY_POLICY: "The forward proxy blocked the Figma egress request. Ask the proxy operator to allow api.figma.com.",
62
70
  FIGMA_TLS_CA_FAILURE: "The Figma egress TLS certificate could not be verified. Check the configured CA bundle.",
63
- FIGMA_RATE_LIMITED: "Figma rate-limited the snapshot-build. Please wait a moment and try again.",
71
+ FIGMA_RATE_LIMITED: "Figma rate-limited the snapshot-build. Retry with a narrower Release section or lower the Figma fetch limits before re-running.",
64
72
  FIGMA_OVERSIZED_SCOPE: "The selected Figma board section is too large. Select a smaller section (frame or page).",
65
73
  FIGMA_RESPONSE_TOO_LARGE: "The Figma API response exceeded the size limit. Select a smaller section.",
66
74
  FIGMA_NETWORK_UNREACHABLE: "The outbound request to Figma failed. Check network connectivity and egress policy.",
@@ -71,6 +79,7 @@ const FIGMA_ROUTE_ERROR_MESSAGES = {
71
79
  FIGMA_BAD_LINK: "The board link is not a valid Figma URL, or it is missing a node-id " +
72
80
  "(section/frame anchor required).",
73
81
  FIGMA_SNAPSHOT_NOT_FOUND: "No snapshot was found for this run id.",
82
+ FIGMA_SCREEN_NOT_FOUND: "No captured screen image was found for this snapshot.",
74
83
  FIGMA_NO_EVIDENCE_DIR: "The evidence directory is not configured; snapshots cannot be stored.",
75
84
  FIGMA_CONSENT_REQUIRED: "Acknowledge the read-only, least-privilege Figma scope before the first snapshot for this board.",
76
85
  FIGMA_TOKEN_REVOKED_OK: "The stored Figma PAT was removed.",
@@ -107,6 +116,8 @@ function figmaStatusForCode(code) {
107
116
  return 502;
108
117
  if (code === "FIGMA_NOT_FOUND")
109
118
  return 404;
119
+ if (code === "FIGMA_NOT_READY")
120
+ return 412;
110
121
  if (code === "FIGMA_RATE_LIMITED")
111
122
  return 429;
112
123
  if (code === "FIGMA_OVERSIZED_SCOPE")
@@ -226,43 +237,100 @@ function recordToSummary(record, coverage, metrics) {
226
237
  })),
227
238
  };
228
239
  }
240
+ function persistedAuditCounts(record, metrics) {
241
+ return {
242
+ screens: metrics.screenCount,
243
+ renders: metrics.renderCount,
244
+ skipped: record.skippedScreens.length,
245
+ designTokens: metrics.designTokenCount,
246
+ ...(metrics.navGraph !== undefined ? { navTransitions: metrics.navGraph.transitions } : {}),
247
+ };
248
+ }
249
+ function appendPersistedSnapshotAudit(evidenceDir, result, record, isResnapshot) {
250
+ appendFigmaConnectorAudit({
251
+ scopeRef: result.scopeRef,
252
+ evidenceDir,
253
+ action: isResnapshot ? "resnapshot" : "snapshot",
254
+ outcome: "ok",
255
+ counts: persistedAuditCounts(record, result.metrics),
256
+ now: result.provenance.fetchedAt,
257
+ });
258
+ }
259
+ function appendSnapshotRouteFailureAudit(evidenceDir, result, isResnapshot, errorCode) {
260
+ appendFigmaConnectorAudit({
261
+ scopeRef: result.scopeRef,
262
+ evidenceDir,
263
+ action: isResnapshot ? "resnapshot" : "snapshot",
264
+ outcome: "error",
265
+ errorCode,
266
+ now: result.provenance.fetchedAt,
267
+ });
268
+ }
229
269
  // ─── POST /api/figma/snapshots — parse + validate ─────────────────────────────
230
- /** Reads and validates the POST body, returning the board link or an error result. */
231
- async function parseTriggerBody(req) {
232
- let raw;
270
+ function parseTriggerJson(raw) {
271
+ let parsed;
233
272
  try {
234
- raw = await readBody(req);
273
+ parsed = JSON.parse(raw);
235
274
  }
236
275
  catch {
237
- return { status: 400, body: figmaErrorBody("FIGMA_BAD_LINK") };
276
+ return undefined;
238
277
  }
239
- let parsed;
278
+ return typeof parsed === "object" && parsed !== null
279
+ ? parsed
280
+ : undefined;
281
+ }
282
+ function parseTriggerBoardLink(body) {
283
+ const boardLink = typeof body.boardLink === "string" ? body.boardLink.trim() : "";
284
+ return boardLink.length > 0 && parseFigmaTarget(boardLink) !== null ? boardLink : undefined;
285
+ }
286
+ /** Reads and validates the POST body, returning the board link or an error result. */
287
+ async function parseTriggerBody(req) {
288
+ let raw;
240
289
  try {
241
- parsed = JSON.parse(raw);
290
+ raw = await readBody(req);
242
291
  }
243
292
  catch {
244
293
  return { status: 400, body: figmaErrorBody("FIGMA_BAD_LINK") };
245
294
  }
246
- if (typeof parsed !== "object" || parsed === null) {
295
+ const body = parseTriggerJson(raw);
296
+ if (body === undefined) {
247
297
  return { status: 400, body: figmaErrorBody("FIGMA_BAD_LINK") };
248
298
  }
249
- const body = parsed;
250
- const boardLink = typeof body.boardLink === "string" ? body.boardLink.trim() : "";
251
- if (boardLink.length === 0 || parseFigmaTarget(boardLink) === null) {
299
+ const boardLink = parseTriggerBoardLink(body);
300
+ if (boardLink === undefined) {
252
301
  return { status: 400, body: figmaErrorBody("FIGMA_BAD_LINK") };
253
302
  }
303
+ const requestedVersion = typeof body.version === "string" ? parseFigmaVersion(body.version) : undefined;
304
+ const linkVersion = parseFigmaVersionFromLink(boardLink);
305
+ const version = requestedVersion ?? linkVersion;
254
306
  return {
255
307
  boardLink,
308
+ ...(version !== undefined ? { version } : {}),
256
309
  // Explicit read-only-scope acknowledgement (#760): records consent BEFORE the first fetch.
257
310
  acknowledgeReadOnly: body.acknowledgeReadOnly === true,
258
311
  // Audited as a re-snapshot (#759): a fresh, explicit, full scoped re-fetch — never a delta.
259
312
  isResnapshot: body.isResnapshot === true,
260
313
  };
261
314
  }
315
+ const FIGMA_VERSION_PATTERN = /^[A-Za-z0-9._:-]{1,256}$/u;
316
+ function parseFigmaVersion(raw) {
317
+ const value = raw.trim();
318
+ return FIGMA_VERSION_PATTERN.test(value) ? value : undefined;
319
+ }
320
+ function parseFigmaVersionFromLink(boardLink) {
321
+ try {
322
+ const url = new URL(boardLink);
323
+ const raw = url.searchParams.get("version-id") ?? url.searchParams.get("version");
324
+ return raw === null ? undefined : parseFigmaVersion(raw);
325
+ }
326
+ catch {
327
+ return undefined;
328
+ }
329
+ }
262
330
  // Deployment-overridable deep scoped-pagination budgets (#837). Operators on a tighter Figma plan can
263
331
  // dial concurrency/depth/screen-count down (or up) via env without a code change; an unset or
264
332
  // non-positive value falls back to the connector default. Mirrors the #532 KEIKO_GROUNDING_* pattern.
265
- function figmaPaginationFromEnv(env) {
333
+ export function figmaPaginationFromEnv(env) {
266
334
  const readPositiveInt = (raw) => {
267
335
  if (raw === undefined)
268
336
  return undefined;
@@ -280,7 +348,7 @@ function figmaPaginationFromEnv(env) {
280
348
  apply("maxFetchesPerScreen", "KEIKO_FIGMA_MAX_FETCHES_PER_SCREEN");
281
349
  apply("maxScreensDeep", "KEIKO_FIGMA_MAX_SCREENS_DEEP");
282
350
  apply("fetchConcurrency", "KEIKO_FIGMA_FETCH_CONCURRENCY");
283
- return overrides;
351
+ return resolveScopedPaginationLimits(overrides);
284
352
  }
285
353
  /** Default total snapshot-build deadline in milliseconds (10 minutes). */
286
354
  const DEFAULT_BUILD_DEADLINE_MS = 600_000;
@@ -301,12 +369,27 @@ function figmaBuildDeadlineMsFromEnv(env) {
301
369
  function figmaRequestTimeoutMsFromEnv(env) {
302
370
  return readPositiveIntEnv(env.KEIKO_FIGMA_REQUEST_TIMEOUT_MS, DEFAULT_REQUEST_TIMEOUT_MS);
303
371
  }
372
+ // F9 observability: a `FIGMA_INTERNAL` 500 is the catch-all for an UNEXPECTED build/persist failure;
373
+ // the coded body is content-free, so on its own an operator cannot tell a transient render-body
374
+ // malformation from a filesystem failure from a genuine bug. Log the redacted cause (class + message,
375
+ // secrets scrubbed) so the incident is diagnosable without ever leaking a token or provider body.
376
+ // Matches the redacted-console.error convention (memory-salience.ts). Only fires for FIGMA_INTERNAL —
377
+ // expected coded errors (consent/auth/rate-limit) stay quiet (they are already audited).
378
+ function logFigmaInternal(stage, err, deps) {
379
+ const name = err instanceof Error ? err.constructor.name : typeof err;
380
+ const message = err instanceof Error ? err.message : String(err);
381
+ // eslint-disable-next-line no-console
382
+ console.error(`figma snapshot-build failed (${stage}): ${name}`, redact(message, currentRedactionSecrets(deps)));
383
+ }
304
384
  // Map a thrown error from the governed build to a coded route result: a coded connector error maps to
305
385
  // its status (consent-required → 428, auth → 502, rate-limit → 429, …); anything else is a safe 500.
306
- function figmaErrorResult(err) {
386
+ function figmaErrorResult(err, deps) {
307
387
  if (err instanceof FigmaConnectorError) {
388
+ if (err.code === "FIGMA_INTERNAL")
389
+ logFigmaInternal("build", err, deps);
308
390
  return { status: figmaStatusForCode(err.code), body: figmaErrorBody(err.code) };
309
391
  }
392
+ logFigmaInternal("build", err, deps);
310
393
  return { status: 500, body: figmaErrorBody("FIGMA_INTERNAL") };
311
394
  }
312
395
  /**
@@ -314,7 +397,7 @@ function figmaErrorResult(err) {
314
397
  * transitions (#811 navigation graph) and the deterministic design-tokens artifact (#752, consumed by
315
398
  * design-to-code #755) — both hash-neutral and both previously dropped by the route.
316
399
  */
317
- function persistSnapshot(evidenceDir, runId, result) {
400
+ function persistSnapshot(evidenceDir, runId, result, deps) {
318
401
  const store = createNodeFigmaSnapshotStore(evidenceDir);
319
402
  try {
320
403
  store.record({
@@ -333,12 +416,21 @@ function persistSnapshot(evidenceDir, runId, result) {
333
416
  })),
334
417
  ...(result.snapshot.links !== undefined ? { links: result.snapshot.links } : {}),
335
418
  tokens: result.ir.tokens,
419
+ metrics: result.metrics,
336
420
  });
337
421
  }
338
- catch {
422
+ catch (e) {
423
+ logFigmaInternal("persist.record", e, deps);
424
+ return { status: 500, body: figmaErrorBody("FIGMA_INTERNAL") };
425
+ }
426
+ let record;
427
+ try {
428
+ record = store.load(runId);
429
+ }
430
+ catch (e) {
431
+ logFigmaInternal("persist.load", e, deps);
339
432
  return { status: 500, body: figmaErrorBody("FIGMA_INTERNAL") };
340
433
  }
341
- const record = store.load(runId);
342
434
  if (record === undefined)
343
435
  return { status: 500, body: figmaErrorBody("FIGMA_INTERNAL") };
344
436
  return record;
@@ -354,12 +446,12 @@ export function makeInFlightMap() {
354
446
  export function resetInFlightMap() {
355
447
  defaultInFlightMap = new Map();
356
448
  }
357
- /** Derive the scope key (fileKey:nodeId) for the in-flight map. */
358
- function scopeKeyFor(boardLink) {
449
+ /** Derive the coalescing key (fileKey:nodeId:operation:consent) for the in-flight map. */
450
+ function coalescingKeyFor(boardLink, acknowledgeReadOnly, isResnapshot, version) {
359
451
  const target = parseFigmaTarget(boardLink);
360
452
  if (target === null)
361
453
  return undefined;
362
- return `${target.fileKey}:${target.nodeId}`;
454
+ return `${target.fileKey}:${target.nodeId}:${version ?? "latest"}:${isResnapshot ? "resnapshot" : "snapshot"}:${acknowledgeReadOnly ? "ack" : "noack"}`;
363
455
  }
364
456
  // Starts the governed build + persist and removes the map entry on settle.
365
457
  // Persist is INSIDE this chain: if a caller's deadline fires but the build later completes,
@@ -376,19 +468,25 @@ function startCoalescedBuild(scopeKey, inFlight, boardLink, body, evidenceDir, d
376
468
  env: deps.env,
377
469
  now: new Date().toISOString(),
378
470
  acknowledgeReadOnly: body.acknowledgeReadOnly,
471
+ version: body.version,
379
472
  pagination: figmaPaginationFromEnv(deps.env),
380
473
  egress: currentGatewayEgressConfig(deps),
474
+ configToken: currentGatewayConfig(deps)?.figma?.accessToken,
381
475
  portOptions: { timeoutMs: figmaRequestTimeoutMsFromEnv(deps.env) },
476
+ deferSuccessAudit: true,
382
477
  }, body.isResnapshot);
383
478
  }
384
479
  catch (err) {
385
- return figmaErrorResult(err);
480
+ return figmaErrorResult(err, deps);
386
481
  }
387
482
  const runId = `fs-${randomUUID()}`;
388
- const stored = persistSnapshot(evidenceDir, runId, result);
389
- if ("status" in stored)
483
+ const stored = persistSnapshot(evidenceDir, runId, result, deps);
484
+ if ("status" in stored) {
485
+ appendSnapshotRouteFailureAudit(evidenceDir, result, body.isResnapshot, "FIGMA_INTERNAL");
390
486
  return stored;
391
- return { status: 201, body: recordToSummary(stored, result.coverage, result.metrics) };
487
+ }
488
+ appendPersistedSnapshotAudit(evidenceDir, result, stored, body.isResnapshot);
489
+ return { status: 201, body: recordToSummary(stored, result.coverage, stored.metrics) };
392
490
  };
393
491
  const promise = buildAndPersist().finally(() => {
394
492
  inFlight.delete(scopeKey);
@@ -396,13 +494,20 @@ function startCoalescedBuild(scopeKey, inFlight, boardLink, body, evidenceDir, d
396
494
  inFlight.set(scopeKey, { promise });
397
495
  return promise;
398
496
  }
399
- // Returns a promise that rejects with a FIGMA_BUILD_TIMEOUT error after `ms` milliseconds.
400
- function deadlineRejection(ms) {
401
- return new Promise((_resolve, reject) => {
402
- setTimeout(() => {
497
+ function makeDeadline(ms) {
498
+ let timerId;
499
+ const promise = new Promise((_resolve, reject) => {
500
+ timerId = setTimeout(() => {
403
501
  reject(new FigmaConnectorError("FIGMA_BUILD_TIMEOUT"));
404
502
  }, ms);
503
+ timerId.unref();
405
504
  });
505
+ return {
506
+ promise,
507
+ clear: () => {
508
+ clearTimeout(timerId);
509
+ },
510
+ };
406
511
  }
407
512
  // ─── POST /api/figma/snapshots ─────────────────────────────────────────────────
408
513
  export async function handleFigmaTriggerSnapshot(ctx, deps, inFlight = defaultInFlightMap) {
@@ -414,7 +519,7 @@ export async function handleFigmaTriggerSnapshot(ctx, deps, inFlight = defaultIn
414
519
  if ("status" in bodyResult)
415
520
  return bodyResult;
416
521
  const body = bodyResult;
417
- const scopeKey = scopeKeyFor(body.boardLink);
522
+ const scopeKey = coalescingKeyFor(body.boardLink, body.acknowledgeReadOnly, body.isResnapshot, body.version);
418
523
  if (scopeKey === undefined) {
419
524
  // parseTriggerBody already validates the board link; this is a belt-and-suspenders guard.
420
525
  return { status: 400, body: figmaErrorBody("FIGMA_BAD_LINK") };
@@ -425,18 +530,26 @@ export async function handleFigmaTriggerSnapshot(ctx, deps, inFlight = defaultIn
425
530
  ? existing.promise
426
531
  : startCoalescedBuild(scopeKey, inFlight, body.boardLink, body, evidenceDir, deps);
427
532
  const deadlineMs = figmaBuildDeadlineMsFromEnv(deps.env);
533
+ const deadline = makeDeadline(deadlineMs);
428
534
  // Per-waiter race: deadline + client-disconnect both resolve this waiter promptly while the
429
535
  // coalesced build (and its persist) continues uninterrupted for other waiters.
536
+ // Named handler so removeListener can target it precisely in the finally block.
537
+ let onClose;
430
538
  const disconnectPromise = new Promise((_resolve, reject) => {
431
- ctx.req.once("close", () => {
539
+ onClose = () => {
432
540
  reject(new FigmaConnectorError("FIGMA_BUILD_TIMEOUT"));
433
- });
541
+ };
542
+ ctx.req.once("close", onClose);
434
543
  });
435
544
  try {
436
- return await Promise.race([buildPromise, deadlineRejection(deadlineMs), disconnectPromise]);
545
+ return await Promise.race([buildPromise, deadline.promise, disconnectPromise]);
437
546
  }
438
547
  catch (err) {
439
- return figmaErrorResult(err);
548
+ return figmaErrorResult(err, deps);
549
+ }
550
+ finally {
551
+ deadline.clear();
552
+ ctx.req.removeListener("close", onClose);
440
553
  }
441
554
  }
442
555
  // ─── DELETE /api/figma/token — revoke the stored PAT (#758 rotation/revocation, #760 audit) ───
@@ -460,7 +573,7 @@ export function handleFigmaRevokeToken(ctx, deps) {
460
573
  });
461
574
  }
462
575
  catch (err) {
463
- return figmaErrorResult(err);
576
+ return figmaErrorResult(err, deps);
464
577
  }
465
578
  return {
466
579
  status: 200,
@@ -483,7 +596,7 @@ export function handleFigmaLoadSnapshot(ctx, deps) {
483
596
  const store = createNodeFigmaSnapshotStore(evidenceDir);
484
597
  let record;
485
598
  try {
486
- record = store.load(runId);
599
+ record = store.loadMetadata(runId);
487
600
  }
488
601
  catch {
489
602
  return { status: 500, body: figmaErrorBody("FIGMA_INTERNAL") };
@@ -491,5 +604,56 @@ export function handleFigmaLoadSnapshot(ctx, deps) {
491
604
  if (record === undefined) {
492
605
  return { status: 404, body: figmaErrorBody("FIGMA_SNAPSHOT_NOT_FOUND") };
493
606
  }
494
- return { status: 200, body: recordToSummary(record) };
607
+ return { status: 200, body: recordToSummary(record, undefined, record.metrics) };
608
+ }
609
+ // ─── GET /api/figma/snapshots/:runId/screens/:screenIndex/image ──────────────
610
+ function parseScreenIndex(raw) {
611
+ if (raw === undefined || raw.length === 0)
612
+ return undefined;
613
+ const parsed = Number(raw);
614
+ return Number.isInteger(parsed) && parsed >= 0 && String(parsed) === raw ? parsed : undefined;
615
+ }
616
+ function loadSnapshotRecordForImage(evidenceDir, runId) {
617
+ const store = createNodeFigmaSnapshotStore(evidenceDir);
618
+ let record;
619
+ try {
620
+ record = store.load(runId);
621
+ }
622
+ catch {
623
+ return { status: 500, body: figmaErrorBody("FIGMA_INTERNAL") };
624
+ }
625
+ return record === undefined
626
+ ? { status: 404, body: figmaErrorBody("FIGMA_SCREEN_NOT_FOUND") }
627
+ : { store, record };
628
+ }
629
+ export function handleFigmaLoadSnapshotImage(ctx, deps) {
630
+ const evidenceDir = deps.evidenceDir;
631
+ if (evidenceDir === undefined || evidenceDir.length === 0) {
632
+ return { status: 503, body: figmaErrorBody("FIGMA_NO_EVIDENCE_DIR") };
633
+ }
634
+ const runId = ctx.params.runId ?? "";
635
+ const screenIndex = parseScreenIndex(ctx.params.screenIndex);
636
+ if (runId.length === 0 || screenIndex === undefined) {
637
+ return { status: 404, body: figmaErrorBody("FIGMA_SCREEN_NOT_FOUND") };
638
+ }
639
+ const loaded = loadSnapshotRecordForImage(evidenceDir, runId);
640
+ if ("status" in loaded)
641
+ return loaded;
642
+ const screen = loaded.record.screens[screenIndex];
643
+ if (screen === undefined) {
644
+ return { status: 404, body: figmaErrorBody("FIGMA_SCREEN_NOT_FOUND") };
645
+ }
646
+ try {
647
+ const image = loaded.store.loadImage(runId, screen.image);
648
+ ctx.res.statusCode = 200;
649
+ ctx.res.setHeader("Content-Type", image.mimeType);
650
+ ctx.res.setHeader("Content-Length", String(image.byteLength));
651
+ ctx.res.setHeader("Cache-Control", "no-store");
652
+ ctx.res.setHeader("ETag", `"sha256-${image.sha256}"`);
653
+ ctx.res.end(image.bytes);
654
+ return STREAMING;
655
+ }
656
+ catch {
657
+ return { status: 500, body: figmaErrorBody("FIGMA_INTERNAL") };
658
+ }
495
659
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generationPort.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/generationPort.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EACV,iCAAiC,EAGlC,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,SAAgB,IAAI,EAAE,MAAM,CAAC;gBACjB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAwFD,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C,CAAC;AAsHN,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,kBAAkB,GACzB,iCAAiC,CAMnC"}
1
+ {"version":3,"file":"generationPort.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/generationPort.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EACV,iCAAiC,EAGlC,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,SAAgB,IAAI,EAAE,MAAM,CAAC;gBACjB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAmGD,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C,CAAC;AAsHN,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,kBAAkB,GACzB,iCAAiC,CAMnC"}
@@ -59,11 +59,22 @@ function scrubEvidenceText(text) {
59
59
  }
60
60
  return out.replace(/<\/?qi-evidence/giu, "[evidence]");
61
61
  }
62
+ // Second line of defence behind the structural fence (Issue #284 AC1: "Untrusted content cannot
63
+ // override system or workflow instructions"). After scrubbing, run the natural-language
64
+ // prompt-injection scanner on each evidence block: a detected imperative ("ignore previous
65
+ // instructions", a `system:` role line, a jailbreak token, …) is NOT silently passed through — the
66
+ // block is tagged with the matched pattern names so the model sees the evidence is suspect (it is
67
+ // already DATA, never instructions, per the system prompt). Non-blocking by design: a requirement
68
+ // that legitimately quotes such a phrase must still produce a run, so detection annotates the block
69
+ // rather than failing the run. The pattern names are corpus slugs (`[a-z-]`), inert in an attribute.
62
70
  function buildEvidenceBlocks(evidence) {
63
71
  return evidence
64
72
  .map((e) => {
65
73
  const kind = e.kind.replace(/[^a-z0-9-]/giu, "");
66
- return `<qi-evidence index="${String(e.index)}" kind="${kind}">\n${scrubEvidenceText(e.text)}\n</qi-evidence>`;
74
+ const scrubbed = scrubEvidenceText(e.text);
75
+ const scan = QualityIntelligenceHardening.scanForPromptInjections(scrubbed);
76
+ const flagged = scan.safe ? "" : ` flagged="prompt-injection:${scan.injections.join(",")}"`;
77
+ return `<qi-evidence index="${String(e.index)}" kind="${kind}"${flagged}>\n${scrubbed}\n</qi-evidence>`;
67
78
  })
68
79
  .join("\n");
69
80
  }
@@ -1,4 +1,4 @@
1
- export type QiHandoffErrorCode = "QI_HANDOFF_BAD_REQUEST" | "QI_HANDOFF_UNKNOWN_CHAT_MESSAGE" | "QI_HANDOFF_FORBIDDEN_PAYLOAD" | "QI_HANDOFF_INTERNAL";
1
+ export type QiHandoffErrorCode = "QI_HANDOFF_BAD_REQUEST" | "QI_HANDOFF_PAYLOAD_TOO_LARGE" | "QI_HANDOFF_UNKNOWN_CHAT_MESSAGE" | "QI_HANDOFF_FORBIDDEN_PAYLOAD" | "QI_HANDOFF_INTERNAL";
2
2
  export interface QiHandoffErrorBody {
3
3
  readonly error: {
4
4
  readonly code: QiHandoffErrorCode;
@@ -1 +1 @@
1
- {"version":3,"file":"handoffErrors.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/handoffErrors.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,kBAAkB,GAC1B,wBAAwB,GACxB,iCAAiC,GACjC,8BAA8B,GAC9B,qBAAqB,CAAC;AAE1B,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACjF;AAWD,eAAO,MAAM,kBAAkB,GAAI,MAAM,kBAAkB,KAAG,kBAE5D,CAAC"}
1
+ {"version":3,"file":"handoffErrors.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/handoffErrors.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,kBAAkB,GAC1B,wBAAwB,GACxB,8BAA8B,GAC9B,iCAAiC,GACjC,8BAA8B,GAC9B,qBAAqB,CAAC;AAE1B,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACjF;AAaD,eAAO,MAAM,kBAAkB,GAAI,MAAM,kBAAkB,KAAG,kBAE5D,CAAC"}
@@ -11,6 +11,7 @@
11
11
  // concerns. Test parity with the connector error tests is enforced in `__tests__/`.
12
12
  const SAFE_MESSAGES = {
13
13
  QI_HANDOFF_BAD_REQUEST: "The request body is not a valid Quality Intelligence handoff envelope.",
14
+ QI_HANDOFF_PAYLOAD_TOO_LARGE: "The Quality Intelligence handoff envelope exceeds the maximum permitted size.",
14
15
  QI_HANDOFF_UNKNOWN_CHAT_MESSAGE: "The referenced Conversation Center chat message could not be located.",
15
16
  QI_HANDOFF_FORBIDDEN_PAYLOAD: "The handoff envelope contained a forbidden field. Handoff envelopes may not carry chat content, credentials, headers, or URLs.",
16
17
  QI_HANDOFF_INTERNAL: "The Quality Intelligence handoff route could not service the request.",
@@ -1 +1 @@
1
- {"version":3,"file":"handoffRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/handoffRoutes.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA6RhD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,qBAAqB,GAChC,UAAS,qBAA0B,KAClC,CAAC,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,WAAW,CAAC,CAwCnE,CAAC;AAEF,eAAO,MAAM,eAAe,QA1ClB,YAAY,QAAQ,aAAa,KAAK,OAAO,CAAC,WAAW,CA0Cb,CAAC;AAKvD,eAAO,MAAM,sBAAsB,EAAE,SAAS,eAAe,EAM5D,CAAC"}
1
+ {"version":3,"file":"handoffRoutes.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/handoffRoutes.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAiUhD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,qBAAqB,GAChC,UAAS,qBAA0B,KAClC,CAAC,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,WAAW,CAAC,CAwCnE,CAAC;AAEF,eAAO,MAAM,eAAe,QA1ClB,YAAY,QAAQ,aAAa,KAAK,OAAO,CAAC,WAAW,CA0Cb,CAAC;AAKvD,eAAO,MAAM,sBAAsB,EAAE,SAAS,eAAe,EAM5D,CAAC"}
@@ -108,7 +108,7 @@ const isAllowedAction = (value) => {
108
108
  };
109
109
  const fail = (code = "QI_HANDOFF_BAD_REQUEST") => ({
110
110
  kind: "err",
111
- result: errResult(code === "QI_HANDOFF_FORBIDDEN_PAYLOAD" ? 400 : 400, code),
111
+ result: errResult(400, code),
112
112
  });
113
113
  const hasOnlyAllowedKeys = (obj, allowed) => {
114
114
  for (const key of Object.keys(obj)) {
@@ -213,18 +213,34 @@ const buildHandoffMessage = (resolved, envelope, now, linkedRunId) => ({
213
213
  taskType: HANDOFF_TASK_TYPE,
214
214
  });
215
215
  // For a "design-tests" handoff, start a model-routed QI run in the BACKGROUND from the chat's
216
- // connected workspace folder. Fire-and-forget: the run registers with the in-flight registry (so it
216
+ // connected workspace context. Fire-and-forget: the run registers with the in-flight registry (so it
217
217
  // surfaces in the run list) and persists to evidence on completion; the handoff returns the run id
218
218
  // immediately so the Conversation Center can link + poll it. The run goes through the Keiko Model
219
219
  // Gateway + Harness like any QI run — this is the governed workflow handoff (Issue #281), not a
220
220
  // parallel chat/agent/model path.
221
- const startHandoffRun = (deps, root) => {
221
+ //
222
+ // Multi-source (Epic #532/#729): a chat may connect more than one folder. The run ingests EVERY
223
+ // connected workspace root so the QI run covers the full context the user connected — not just the
224
+ // first folder. `executeQiRun` already applies the per-run source cap, deny-list guard, and byte
225
+ // budget over the source list.
226
+ //
227
+ // `envelope.payloadRef.sourceEnvelopeIds` are reserved for a future capability that narrows the run
228
+ // to a user-selected SUBSET of the connected context; until that resolver exists the run faithfully
229
+ // ingests the chat's whole connected workspace context, so an empty (or any) id list is honoured by
230
+ // using the connected scopes.
231
+ const startHandoffRun = (deps, roots) => {
222
232
  const runId = `qi-run-${randomUUID()}`;
223
233
  const registeredAt = new Date().toISOString();
224
234
  const controller = qiRunRegistry.register(runId, registeredAt);
225
235
  const totals = { candidates: 0, findings: 0, exports: 0 };
226
236
  void executeQiRun({
227
- request: { sources: [{ kind: "workspace", label: "Conversation Center", path: root }] },
237
+ request: {
238
+ sources: roots.map((path) => ({
239
+ kind: "workspace",
240
+ label: "Conversation Center",
241
+ path,
242
+ })),
243
+ },
228
244
  runId,
229
245
  deps,
230
246
  registeredAt,
@@ -246,15 +262,31 @@ const startHandoffRun = (deps, root) => {
246
262
  });
247
263
  return runId;
248
264
  };
265
+ // Collect the distinct, non-empty absolute roots of a chat's connected workspace context. Prefers
266
+ // the canonical multi-source `connectedScopes` list (Epic #532); falls back to the legacy singular
267
+ // `connectedScope` for older chats. Non-folder scopes (no `root`) are skipped — the handoff run
268
+ // ingests workspace folders only. Order-preserving exact-string de-duplication.
269
+ const collectConnectedRoots = (chat) => {
270
+ const scopes = chat?.connectedScopes ?? (chat?.connectedScope !== undefined ? [chat.connectedScope] : []);
271
+ const roots = [];
272
+ for (const scope of scopes) {
273
+ const root = scope.root;
274
+ if (typeof root === "string" && root.length > 0 && !roots.includes(root)) {
275
+ roots.push(root);
276
+ }
277
+ }
278
+ return roots;
279
+ };
249
280
  // Resolve the run id linked to a handoff: a "design-tests" handoff over a chat with a connected
250
- // folder starts a background run; otherwise it falls back to any run id the envelope already carried.
281
+ // workspace context starts a background run; otherwise it falls back to any run id the envelope
282
+ // already carried.
251
283
  const resolveHandoffRunId = (deps, envelope, chatId) => {
252
284
  if (envelope.promptedAction !== "design-tests")
253
285
  return envelope.runId;
254
286
  const chat = deps.store.findChatById(chatId);
255
- const root = chat?.connectedScope?.root;
256
- if (root !== undefined && root.length > 0)
257
- return startHandoffRun(deps, root);
287
+ const roots = collectConnectedRoots(chat);
288
+ if (roots.length > 0)
289
+ return startHandoffRun(deps, roots);
258
290
  return envelope.runId;
259
291
  };
260
292
  export const createHandleQiHandoff = (options = {}) => {
@@ -266,7 +298,7 @@ export const createHandleQiHandoff = (options = {}) => {
266
298
  }
267
299
  catch (e) {
268
300
  if (e instanceof BodyTooLargeError) {
269
- return errResult(413, "QI_HANDOFF_BAD_REQUEST");
301
+ return errResult(413, "QI_HANDOFF_PAYLOAD_TOO_LARGE");
270
302
  }
271
303
  return errResult(400, "QI_HANDOFF_BAD_REQUEST");
272
304
  }
@@ -11,6 +11,7 @@ export { applyReviewDecision, appendEditAudit, loadRunReviewState, runReviewStat
11
11
  export { QI_REVIEW_ROUTE_GROUP, handleQiReview } from "./reviewRoutes.js";
12
12
  export { QI_EXPORT_ROUTE_GROUP, handleQiExport } from "./exportRoutes.js";
13
13
  export { QI_EDIT_ROUTE_GROUP, handleQiEditCandidate } from "./editRoutes.js";
14
+ export { QI_RETENTION_ROUTE_GROUP, handleQiDeleteRun } from "./retentionRoutes.js";
14
15
  export { QI_TRACEABILITY_ROUTE_GROUP, handleQiTraceabilityExport } from "./traceabilityRoutes.js";
15
16
  export { QI_RECHECK_ROUTE_GROUP, handleQiReCheck, handleQiRegenerateStale, } from "./reCheckRoutes.js";
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,gCAAgC,EAChC,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,mCAAmC,EACnC,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtF,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,qBAAqB,GAC3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,OAAO,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAElG,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,uBAAuB,GACxB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,gCAAgC,EAChC,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,mCAAmC,EACnC,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtF,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,qBAAqB,GAC3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAElG,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,uBAAuB,GACxB,MAAM,oBAAoB,CAAC"}
@@ -28,6 +28,8 @@ export { QI_REVIEW_ROUTE_GROUP, handleQiReview } from "./reviewRoutes.js";
28
28
  export { QI_EXPORT_ROUTE_GROUP, handleQiExport } from "./exportRoutes.js";
29
29
  // Issue #726 (Epic #712) — inline-edit route group.
30
30
  export { QI_EDIT_ROUTE_GROUP, handleQiEditCandidate } from "./editRoutes.js";
31
+ // Issue #282 follow-up — run-deletion control route group (DELETE /runs/:id, ADR-0023 D8).
32
+ export { QI_RETENTION_ROUTE_GROUP, handleQiDeleteRun } from "./retentionRoutes.js";
31
33
  // Issue #740 (Epic #734) — requirement↔test traceability matrix export route group.
32
34
  export { QI_TRACEABILITY_ROUTE_GROUP, handleQiTraceabilityExport } from "./traceabilityRoutes.js";
33
35
  // Issue #743 (Epic #735) — drift re-check + targeted regeneration route group.
@@ -17,7 +17,9 @@ export declare function scrubCandidateText(text: string): string;
17
17
  export declare function buildJudgePrompt(candidateText: string, sourceContext?: readonly JudgeSourceContext[]): readonly ChatMessage[];
18
18
  export declare function parseJudgeVerdict(rawText: string): TestQualityJudgeVerdict;
19
19
  export interface QiJudgePort {
20
- readonly judge: (input: JudgePromptInput, signal?: AbortSignal) => Promise<TestQualityJudgeVerdict>;
20
+ readonly judge: (input: JudgePromptInput, signal?: AbortSignal) => Promise<TestQualityJudgeVerdict & {
21
+ readonly gatewayCallCount: number;
22
+ }>;
21
23
  }
22
24
  /**
23
25
  * Build a judge port bound to one model id. Applies the qi:judge-logic capability gate
@@ -1 +1 @@
1
- {"version":3,"file":"judgePort.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/judgePort.ts"],"names":[],"mappings":"AAUA,OAAO,EAKL,KAAK,WAAW,EAGjB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAEV,uBAAuB,EAExB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,IAAI,EAAE,MAAM,CAAC;gBACjB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAQD,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACvD;AAgCD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASvD;AA8CD,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,aAAa,GAAE,SAAS,kBAAkB,EAAO,GAChD,SAAS,WAAW,EAAE,CAoBxB;AAkID,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,CAW1E;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,CACd,KAAK,EAAE,gBAAgB,EACvB,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CA6CnF"}
1
+ {"version":3,"file":"judgePort.d.ts","sourceRoot":"","sources":["../../src/qualityIntelligence/judgePort.ts"],"names":[],"mappings":"AAUA,OAAO,EAKL,KAAK,WAAW,EAGjB,MAAM,mCAAmC,CAAC;AAM3C,OAAO,KAAK,EAEV,uBAAuB,EAExB,MAAM,+BAA+B,CAAC;AAKvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,IAAI,EAAE,MAAM,CAAC;gBACjB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAQD,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACvD;AAgCD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASvD;AAyBD,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,aAAa,GAAE,SAAS,kBAAkB,EAAO,GAChD,SAAS,WAAW,EAAE,CAqBxB;AAkKD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,CAW1E;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,CACd,KAAK,EAAE,gBAAgB,EACvB,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,uBAAuB,GAAG;QAAE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAqDnF"}