@oscharko-dev/keiko 0.2.0-beta.3 → 0.2.0-beta.5

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 (573) hide show
  1. package/README.md +139 -1
  2. package/dist/ui/csp-hashes.json +33 -39
  3. package/dist/ui/static/404.html +1 -1
  4. package/dist/ui/static/__next.__PAGE__.txt +9 -0
  5. package/dist/ui/static/__next._full.txt +18 -0
  6. package/dist/ui/static/__next._head.txt +6 -0
  7. package/dist/ui/static/__next._index.txt +5 -0
  8. package/dist/ui/static/__next._tree.txt +2 -0
  9. package/dist/ui/static/_next/static/chunks/05-c3ty_6dwfk.js +1 -0
  10. package/dist/ui/static/_next/static/chunks/082obv3v03b-9.js +2 -0
  11. package/dist/ui/static/_next/static/chunks/0iq1i69206cyl.js +31 -0
  12. package/dist/ui/static/_next/static/chunks/0uifns067thv8.js +1 -0
  13. package/dist/ui/static/_next/static/chunks/0x31-j53ab1tt.js +1 -0
  14. package/dist/ui/static/_next/static/chunks/14mrh2-p_w84d.js +1 -0
  15. package/dist/ui/static/_next/static/chunks/1m-kvwm6_90_3.css +1 -0
  16. package/dist/ui/static/_next/static/chunks/1v4hrxrm_6_rw.js +1 -0
  17. package/dist/ui/static/_next/static/chunks/27jktro2p5rq9.js +4 -0
  18. package/dist/ui/static/_next/static/chunks/2lypy3ewh0r04.js +1 -0
  19. package/dist/ui/static/_next/static/chunks/2ngm8iwdb1cbv.js +106 -0
  20. package/dist/ui/static/_next/static/chunks/32573pyyglqxl.js +1 -0
  21. package/dist/ui/static/_next/static/chunks/3_t_pzet29qtn.js +1 -0
  22. package/dist/ui/static/_next/static/chunks/3jgg_oe0iok0l.js +1 -0
  23. package/dist/ui/static/_next/static/chunks/3o_oia3vsam60.js +1 -0
  24. package/dist/ui/static/_next/static/chunks/3peubv2924kx4.js +1 -0
  25. package/dist/ui/static/_next/static/chunks/turbopack-2lg1g6kbsfm0x.js +1 -0
  26. package/dist/ui/static/_next/static/hR2gBQqCDKdPdSxBqZhqv/_buildManifest.js +11 -0
  27. package/dist/ui/static/_next/static/hR2gBQqCDKdPdSxBqZhqv/_clientMiddlewareManifest.js +1 -0
  28. package/dist/ui/static/_not-found/__next._full.txt +16 -0
  29. package/dist/ui/static/_not-found/__next._head.txt +6 -0
  30. package/dist/ui/static/_not-found/__next._index.txt +5 -0
  31. package/dist/ui/static/_not-found/__next._not-found.__PAGE__.txt +5 -0
  32. package/dist/ui/static/_not-found/__next._not-found.txt +5 -0
  33. package/dist/ui/static/_not-found/__next._tree.txt +2 -0
  34. package/dist/ui/static/_not-found.html +1 -0
  35. package/dist/ui/static/_not-found.txt +16 -0
  36. package/dist/ui/static/index.html +1 -1
  37. package/dist/ui/static/index.txt +16 -18
  38. package/dist/ui/static/launch/__next._full.txt +20 -0
  39. package/dist/ui/static/launch/__next._head.txt +6 -0
  40. package/dist/ui/static/launch/__next._index.txt +5 -0
  41. package/dist/ui/static/launch/__next._tree.txt +2 -0
  42. package/dist/ui/static/launch/__next.launch.__PAGE__.txt +9 -0
  43. package/dist/ui/static/launch/__next.launch.txt +5 -0
  44. package/dist/ui/static/launch.html +1 -1
  45. package/dist/ui/static/launch.txt +17 -17
  46. package/dist/ui/static/local-knowledge/__next._full.txt +20 -0
  47. package/dist/ui/static/local-knowledge/__next._head.txt +6 -0
  48. package/dist/ui/static/local-knowledge/__next._index.txt +5 -0
  49. package/dist/ui/static/local-knowledge/__next._tree.txt +2 -0
  50. package/dist/ui/static/local-knowledge/__next.local-knowledge.__PAGE__.txt +9 -0
  51. package/dist/ui/static/local-knowledge/__next.local-knowledge.txt +5 -0
  52. package/dist/ui/static/local-knowledge/capsule/__next._full.txt +17 -0
  53. package/dist/ui/static/local-knowledge/capsule/__next._head.txt +6 -0
  54. package/dist/ui/static/local-knowledge/capsule/__next._index.txt +5 -0
  55. package/dist/ui/static/local-knowledge/capsule/__next._tree.txt +2 -0
  56. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.__PAGE__.txt +6 -0
  57. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.txt +5 -0
  58. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.txt +5 -0
  59. package/dist/ui/static/local-knowledge/capsule.html +1 -1
  60. package/dist/ui/static/local-knowledge/capsule.txt +14 -14
  61. package/dist/ui/static/local-knowledge.html +1 -1
  62. package/dist/ui/static/local-knowledge.txt +19 -16
  63. package/dist/ui/static/memoriaviva/__next._full.txt +17 -0
  64. package/dist/ui/static/memoriaviva/__next._head.txt +6 -0
  65. package/dist/ui/static/memoriaviva/__next._index.txt +5 -0
  66. package/dist/ui/static/memoriaviva/__next._tree.txt +2 -0
  67. package/dist/ui/static/memoriaviva/__next.memoriaviva.__PAGE__.txt +6 -0
  68. package/dist/ui/static/memoriaviva/__next.memoriaviva.txt +5 -0
  69. package/dist/ui/static/memoriaviva/consolidation/__next._full.txt +17 -0
  70. package/dist/ui/static/memoriaviva/consolidation/__next._head.txt +6 -0
  71. package/dist/ui/static/memoriaviva/consolidation/__next._index.txt +5 -0
  72. package/dist/ui/static/memoriaviva/consolidation/__next._tree.txt +2 -0
  73. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.__PAGE__.txt +6 -0
  74. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.txt +5 -0
  75. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.txt +5 -0
  76. package/dist/ui/static/memoriaviva/consolidation.html +1 -1
  77. package/dist/ui/static/memoriaviva/consolidation.txt +15 -15
  78. package/dist/ui/static/memoriaviva/detail/__next._full.txt +17 -0
  79. package/dist/ui/static/memoriaviva/detail/__next._head.txt +6 -0
  80. package/dist/ui/static/memoriaviva/detail/__next._index.txt +5 -0
  81. package/dist/ui/static/memoriaviva/detail/__next._tree.txt +2 -0
  82. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.__PAGE__.txt +6 -0
  83. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.txt +5 -0
  84. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.txt +5 -0
  85. package/dist/ui/static/memoriaviva/detail.html +1 -1
  86. package/dist/ui/static/memoriaviva/detail.txt +14 -14
  87. package/dist/ui/static/memoriaviva/review-queue/__next._full.txt +17 -0
  88. package/dist/ui/static/memoriaviva/review-queue/__next._head.txt +6 -0
  89. package/dist/ui/static/memoriaviva/review-queue/__next._index.txt +5 -0
  90. package/dist/ui/static/memoriaviva/review-queue/__next._tree.txt +2 -0
  91. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.__PAGE__.txt +6 -0
  92. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.txt +5 -0
  93. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.txt +5 -0
  94. package/dist/ui/static/memoriaviva/review-queue.html +1 -1
  95. package/dist/ui/static/memoriaviva/review-queue.txt +15 -15
  96. package/dist/ui/static/memoriaviva.html +1 -1
  97. package/dist/ui/static/memoriaviva.txt +14 -14
  98. package/node_modules/@oscharko-dev/keiko-cli/dist/.tsbuildinfo +1 -1
  99. package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.d.ts.map +1 -1
  100. package/node_modules/@oscharko-dev/keiko-cli/dist/evaluate.js +61 -2
  101. package/node_modules/@oscharko-dev/keiko-cli/dist/evidence.d.ts.map +1 -1
  102. package/node_modules/@oscharko-dev/keiko-cli/dist/evidence.js +65 -21
  103. package/node_modules/@oscharko-dev/keiko-cli/dist/launcher-platforms.js +3 -3
  104. package/node_modules/@oscharko-dev/keiko-cli/dist/run.d.ts +3 -1
  105. package/node_modules/@oscharko-dev/keiko-cli/dist/run.d.ts.map +1 -1
  106. package/node_modules/@oscharko-dev/keiko-cli/dist/run.js +73 -41
  107. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.d.ts.map +1 -1
  108. package/node_modules/@oscharko-dev/keiko-cli/dist/ui.js +36 -11
  109. package/node_modules/@oscharko-dev/keiko-cli/package.json +2 -2
  110. package/node_modules/@oscharko-dev/keiko-contracts/dist/.tsbuildinfo +1 -1
  111. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts +20 -1
  112. package/node_modules/@oscharko-dev/keiko-contracts/dist/bff-wire.d.ts.map +1 -1
  113. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts +1 -1
  114. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.d.ts.map +1 -1
  115. package/node_modules/@oscharko-dev/keiko-contracts/dist/connected-context.js +256 -75
  116. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts +11 -0
  117. package/node_modules/@oscharko-dev/keiko-contracts/dist/evidence.d.ts.map +1 -1
  118. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts +6 -6
  119. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts.map +1 -1
  120. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.js +4 -4
  121. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.d.ts +11 -0
  122. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.d.ts.map +1 -1
  123. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-records.js +4 -0
  124. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.d.ts +1 -1
  125. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.d.ts.map +1 -1
  126. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-schema.js +109 -4
  127. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts +2 -0
  128. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.d.ts.map +1 -1
  129. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge-validation.js +94 -7
  130. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge.d.ts +5 -0
  131. package/node_modules/@oscharko-dev/keiko-contracts/dist/local-knowledge.d.ts.map +1 -1
  132. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts +2 -0
  133. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts.map +1 -1
  134. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/ids.d.ts.map +1 -1
  135. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/ids.js +3 -0
  136. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts +14 -0
  137. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.d.ts.map +1 -1
  138. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/sourceEnvelope.js +53 -5
  139. package/node_modules/@oscharko-dev/keiko-contracts/package.json +2 -2
  140. package/node_modules/@oscharko-dev/keiko-evaluations/dist/.tsbuildinfo +1 -1
  141. package/node_modules/@oscharko-dev/keiko-evaluations/dist/runner.d.ts.map +1 -1
  142. package/node_modules/@oscharko-dev/keiko-evaluations/dist/runner.js +11 -3
  143. package/node_modules/@oscharko-dev/keiko-evaluations/package.json +2 -2
  144. package/node_modules/@oscharko-dev/keiko-evidence/dist/.tsbuildinfo +1 -1
  145. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.d.ts +20 -1
  146. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.d.ts.map +1 -1
  147. package/node_modules/@oscharko-dev/keiko-evidence/dist/connected-context-evidence.js +34 -2
  148. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts +1 -1
  149. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts.map +1 -1
  150. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.js +1 -1
  151. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts +1 -0
  152. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.d.ts.map +1 -1
  153. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/candidatesArtifact.js +3 -1
  154. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts +17 -0
  155. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.d.ts.map +1 -1
  156. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/companionStore.js +19 -0
  157. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts +5 -1
  158. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts.map +1 -1
  159. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts +32 -2
  160. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts.map +1 -1
  161. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.js +259 -40
  162. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts +3 -3
  163. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts.map +1 -1
  164. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.js +1 -1
  165. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts +18 -1
  166. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/manifestSchema.d.ts.map +1 -1
  167. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.d.ts +3 -0
  168. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.d.ts.map +1 -1
  169. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/retention.js +48 -5
  170. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts +33 -0
  171. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.d.ts.map +1 -1
  172. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/store.js +99 -13
  173. package/node_modules/@oscharko-dev/keiko-evidence/dist/types.d.ts +1 -1
  174. package/node_modules/@oscharko-dev/keiko-evidence/dist/types.d.ts.map +1 -1
  175. package/node_modules/@oscharko-dev/keiko-evidence/package.json +2 -2
  176. package/node_modules/@oscharko-dev/keiko-harness/dist/.tsbuildinfo +1 -1
  177. package/node_modules/@oscharko-dev/keiko-harness/package.json +2 -2
  178. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/.tsbuildinfo +1 -1
  179. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-lifecycle.d.ts.map +1 -1
  180. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-lifecycle.js +25 -1
  181. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts +1 -1
  182. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.d.ts.map +1 -1
  183. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/capsule-set-lifecycle.js +16 -0
  184. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.d.ts +3 -1
  185. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.d.ts.map +1 -1
  186. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-persist.js +9 -5
  187. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-runner.d.ts.map +1 -1
  188. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker-runner.js +22 -7
  189. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.d.ts +4 -1
  190. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.d.ts.map +1 -1
  191. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/chunker.js +61 -9
  192. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/citation-mapper.d.ts.map +1 -1
  193. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/citation-mapper.js +64 -36
  194. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.d.ts +2 -2
  195. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.d.ts.map +1 -1
  196. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/index.js +2 -2
  197. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.d.ts +7 -1
  198. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.d.ts.map +1 -1
  199. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/chunking/types.js +5 -1
  200. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts +1 -1
  201. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.d.ts.map +1 -1
  202. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/composition.js +27 -4
  203. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.d.ts +0 -1
  204. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.d.ts.map +1 -1
  205. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/index.js +0 -1
  206. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts +5 -1
  207. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.d.ts.map +1 -1
  208. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/model-gateway-answer-generator.js +25 -6
  209. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/types.d.ts.map +1 -1
  210. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/types.js +2 -3
  211. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/discovery-runner.d.ts.map +1 -1
  212. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/discovery-runner.js +10 -1
  213. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts +4 -1
  214. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.d.ts.map +1 -1
  215. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/extract.js +370 -45
  216. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.d.ts +2 -0
  217. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.d.ts.map +1 -1
  218. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/test-support.js +8 -4
  219. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.d.ts +1 -1
  220. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.d.ts.map +1 -1
  221. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/types.js +10 -5
  222. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.d.ts.map +1 -1
  223. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/discovery/walk.js +65 -20
  224. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts +1 -0
  225. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.d.ts.map +1 -1
  226. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/fixtures.js +79 -0
  227. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts +1 -1
  228. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.d.ts.map +1 -1
  229. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/index.js +1 -1
  230. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner-seed.d.ts.map +1 -1
  231. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/evaluations/runner-seed.js +4 -0
  232. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts +6 -5
  233. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.d.ts.map +1 -1
  234. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/index.js +4 -4
  235. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.d.ts.map +1 -1
  236. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/embedding-batcher.js +71 -29
  237. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.d.ts.map +1 -1
  238. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/orchestrator.js +253 -131
  239. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/types.d.ts +12 -0
  240. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/types.d.ts.map +1 -1
  241. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/vector-persist.d.ts.map +1 -1
  242. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/indexing/vector-persist.js +9 -0
  243. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts +3 -1
  244. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.d.ts.map +1 -1
  245. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/_internal.js +13 -1
  246. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.d.ts.map +1 -1
  247. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/docx-parser.js +86 -46
  248. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts +1 -1
  249. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.d.ts.map +1 -1
  250. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/index.js +1 -1
  251. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.d.ts.map +1 -1
  252. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/json-parser.js +50 -22
  253. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts +21 -1
  254. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.d.ts.map +1 -1
  255. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/pdf-parser.js +90 -13
  256. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/registry.d.ts.map +1 -1
  257. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/registry.js +3 -1
  258. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.d.ts +7 -2
  259. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.d.ts.map +1 -1
  260. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/parsers/types.js +7 -3
  261. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/audit-emitter.js +8 -0
  262. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/diagnostic-redactor.d.ts.map +1 -1
  263. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/diagnostic-redactor.js +17 -10
  264. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.d.ts.map +1 -1
  265. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/retention-applier.js +7 -0
  266. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/types.d.ts +4 -0
  267. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/privacy/types.d.ts.map +1 -1
  268. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/retrieval-runner.js +1 -1
  269. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts +1 -0
  270. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.d.ts.map +1 -1
  271. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/retrieval/scoped-vector-search.js +318 -32
  272. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts +1 -1
  273. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.d.ts.map +1 -1
  274. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/source-lifecycle.js +46 -16
  275. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.d.ts +14 -0
  276. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.d.ts.map +1 -1
  277. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/store.js +26 -1
  278. package/node_modules/@oscharko-dev/keiko-local-knowledge/package.json +10 -5
  279. package/node_modules/@oscharko-dev/keiko-memory-capture/dist/.tsbuildinfo +1 -1
  280. package/node_modules/@oscharko-dev/keiko-memory-capture/package.json +2 -2
  281. package/node_modules/@oscharko-dev/keiko-memory-consolidation/dist/.tsbuildinfo +1 -1
  282. package/node_modules/@oscharko-dev/keiko-memory-consolidation/package.json +2 -2
  283. package/node_modules/@oscharko-dev/keiko-memory-governance/dist/.tsbuildinfo +1 -1
  284. package/node_modules/@oscharko-dev/keiko-memory-governance/package.json +2 -2
  285. package/node_modules/@oscharko-dev/keiko-memory-retrieval/dist/.tsbuildinfo +1 -1
  286. package/node_modules/@oscharko-dev/keiko-memory-retrieval/package.json +2 -2
  287. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/.tsbuildinfo +1 -1
  288. package/node_modules/@oscharko-dev/keiko-memory-vault/package.json +2 -2
  289. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/.tsbuildinfo +1 -1
  290. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts +2 -1
  291. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.d.ts.map +1 -1
  292. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/config.js +50 -0
  293. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts +3 -0
  294. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.d.ts.map +1 -1
  295. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/http.js +114 -44
  296. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.d.ts +1 -0
  297. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.d.ts.map +1 -1
  298. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/normalize.js +22 -1
  299. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.d.ts.map +1 -1
  300. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/openai-adapter.js +18 -4
  301. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.d.ts +14 -0
  302. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.d.ts.map +1 -1
  303. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/qualityIntelligence/dispatcher.js +14 -0
  304. package/node_modules/@oscharko-dev/keiko-model-gateway/package.json +2 -2
  305. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/.tsbuildinfo +1 -1
  306. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.d.ts.map +1 -1
  307. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/a11yBaseline.js +9 -2
  308. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/cleanToScreenIr.js +1 -1
  309. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts +9 -1
  310. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.d.ts.map +1 -1
  311. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/emissionPlan.js +9 -1
  312. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts +5 -0
  313. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.d.ts.map +1 -1
  314. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/htmlCssAdapter.js +229 -33
  315. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts +62 -0
  316. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/irTypes.d.ts.map +1 -1
  317. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.d.ts.map +1 -1
  318. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/links.js +24 -4
  319. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts +4 -2
  320. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.d.ts.map +1 -1
  321. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/navGraph.js +0 -0
  322. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.d.ts.map +1 -1
  323. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/normalize.js +119 -5
  324. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.d.ts +2 -1
  325. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.d.ts.map +1 -1
  326. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/prune.js +26 -11
  327. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts.map +1 -1
  328. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.js +86 -9
  329. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.d.ts.map +1 -1
  330. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/tokens.js +10 -3
  331. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.d.ts.map +1 -1
  332. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.js +14 -12
  333. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/alm.d.ts.map +1 -1
  334. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/alm.js +29 -30
  335. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.d.ts.map +1 -1
  336. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/markdown.js +29 -5
  337. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/qtest.d.ts.map +1 -1
  338. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/qtest.js +29 -29
  339. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.d.ts +2 -1
  340. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.d.ts.map +1 -1
  341. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/spreadsheetSafeCsv.js +40 -2
  342. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/xray.d.ts.map +1 -1
  343. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/export/adapters/xray.js +6 -2
  344. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/sourceMixPlanning.js +0 -0
  345. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.d.ts +1 -1
  346. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.d.ts.map +1 -1
  347. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/ingestion/untrustedContentNormalisation.js +9 -1
  348. package/node_modules/@oscharko-dev/keiko-quality-intelligence/package.json +2 -2
  349. package/node_modules/@oscharko-dev/keiko-sdk/dist/.tsbuildinfo +1 -1
  350. package/node_modules/@oscharko-dev/keiko-sdk/package.json +2 -2
  351. package/node_modules/@oscharko-dev/keiko-security/dist/.tsbuildinfo +1 -1
  352. package/node_modules/@oscharko-dev/keiko-security/dist/redaction.d.ts.map +1 -1
  353. package/node_modules/@oscharko-dev/keiko-security/dist/redaction.js +4 -2
  354. package/node_modules/@oscharko-dev/keiko-security/package.json +2 -2
  355. package/node_modules/@oscharko-dev/keiko-server/dist/.tsbuildinfo +1 -1
  356. package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.d.ts +6 -0
  357. package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.d.ts.map +1 -0
  358. package/node_modules/@oscharko-dev/keiko-server/dist/assistant-response.js +12 -0
  359. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts +1 -1
  360. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.d.ts.map +1 -1
  361. package/node_modules/@oscharko-dev/keiko-server/dist/chat-handlers.js +17 -5
  362. package/node_modules/@oscharko-dev/keiko-server/dist/chat-stream-handlers.js +1 -1
  363. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts +2 -0
  364. package/node_modules/@oscharko-dev/keiko-server/dist/deps.d.ts.map +1 -1
  365. package/node_modules/@oscharko-dev/keiko-server/dist/deps.js +59 -9
  366. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.d.ts +1 -1
  367. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.d.ts.map +1 -1
  368. package/node_modules/@oscharko-dev/keiko-server/dist/evidence.js +4 -3
  369. package/node_modules/@oscharko-dev/keiko-server/dist/files.d.ts +18 -3
  370. package/node_modules/@oscharko-dev/keiko-server/dist/files.d.ts.map +1 -1
  371. package/node_modules/@oscharko-dev/keiko-server/dist/files.js +208 -72
  372. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-answer.d.ts.map +1 -1
  373. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-answer.js +7 -2
  374. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.d.ts +3 -0
  375. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.d.ts.map +1 -1
  376. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-context-index.js +27 -4
  377. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.d.ts.map +1 -1
  378. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-handoff.js +46 -14
  379. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts +1 -1
  380. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts.map +1 -1
  381. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.js +651 -45
  382. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.d.ts.map +1 -1
  383. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.js +5 -3
  384. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts +9 -0
  385. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts.map +1 -1
  386. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.js +197 -46
  387. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts +4 -0
  388. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.d.ts.map +1 -1
  389. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.js +103 -25
  390. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts +7 -0
  391. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts.map +1 -1
  392. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.js +199 -21
  393. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-turn-registry.d.ts.map +1 -1
  394. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-turn-registry.js +21 -1
  395. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts +1 -1
  396. package/node_modules/@oscharko-dev/keiko-server/dist/index.d.ts.map +1 -1
  397. package/node_modules/@oscharko-dev/keiko-server/dist/index.js +1 -1
  398. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts +9 -6
  399. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts.map +1 -1
  400. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.js +193 -67
  401. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.d.ts.map +1 -1
  402. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-handlers.js +189 -72
  403. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/connectorErrors.d.ts.map +1 -1
  404. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/connectorErrors.js +11 -8
  405. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.d.ts.map +1 -1
  406. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/editRoutes.js +1 -0
  407. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/exportRoutes.d.ts.map +1 -1
  408. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/exportRoutes.js +89 -30
  409. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts +10 -2
  410. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts.map +1 -1
  411. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnectorErrors.js +110 -30
  412. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.d.ts +13 -4
  413. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.d.ts.map +1 -1
  414. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaHttpPort.js +29 -17
  415. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts +13 -3
  416. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.d.ts.map +1 -1
  417. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaRenderPort.js +54 -5
  418. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts.map +1 -1
  419. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.js +84 -12
  420. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.d.ts.map +1 -1
  421. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.js +16 -8
  422. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts +6 -2
  423. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts.map +1 -1
  424. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts +13 -1
  425. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts.map +1 -1
  426. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotAdapter.js +15 -2
  427. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts +9 -0
  428. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts.map +1 -1
  429. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotOrchestration.js +2 -2
  430. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +9 -1
  431. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -1
  432. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.js +138 -19
  433. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.d.ts.map +1 -1
  434. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/generationPort.js +38 -8
  435. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.d.ts +1 -1
  436. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.d.ts.map +1 -1
  437. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffErrors.js +1 -0
  438. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffRoutes.d.ts.map +1 -1
  439. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/handoffRoutes.js +41 -9
  440. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.d.ts +1 -0
  441. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.d.ts.map +1 -1
  442. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/index.js +2 -0
  443. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts.map +1 -1
  444. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.js +43 -10
  445. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts.map +1 -1
  446. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.js +3 -1
  447. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.d.ts +5 -0
  448. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.d.ts.map +1 -0
  449. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/retentionRoutes.js +70 -0
  450. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.d.ts.map +1 -1
  451. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewRoutes.js +6 -2
  452. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.d.ts +25 -4
  453. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.d.ts.map +1 -1
  454. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reviewStore.js +72 -9
  455. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts.map +1 -1
  456. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.js +97 -18
  457. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRegistry.d.ts.map +1 -1
  458. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRegistry.js +2 -0
  459. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts +4 -1
  460. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts.map +1 -1
  461. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.js +17 -3
  462. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.d.ts.map +1 -1
  463. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/uiRoutes.js +18 -4
  464. package/node_modules/@oscharko-dev/keiko-server/dist/routes.d.ts.map +1 -1
  465. package/node_modules/@oscharko-dev/keiko-server/dist/routes.js +8 -3
  466. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.d.ts.map +1 -1
  467. package/node_modules/@oscharko-dev/keiko-server/dist/run-engine.js +6 -1
  468. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts +2 -2
  469. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.d.ts.map +1 -1
  470. package/node_modules/@oscharko-dev/keiko-server/dist/store/chats.js +84 -8
  471. package/node_modules/@oscharko-dev/keiko-server/dist/store/db.d.ts.map +1 -1
  472. package/node_modules/@oscharko-dev/keiko-server/dist/store/db.js +4 -2
  473. package/node_modules/@oscharko-dev/keiko-server/dist/store/index.d.ts +1 -1
  474. package/node_modules/@oscharko-dev/keiko-server/dist/store/index.d.ts.map +1 -1
  475. package/node_modules/@oscharko-dev/keiko-server/dist/store/types.d.ts +5 -1
  476. package/node_modules/@oscharko-dev/keiko-server/dist/store/types.d.ts.map +1 -1
  477. package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.d.ts.map +1 -1
  478. package/node_modules/@oscharko-dev/keiko-server/dist/store-handlers.js +71 -15
  479. package/node_modules/@oscharko-dev/keiko-server/package.json +2 -2
  480. package/node_modules/@oscharko-dev/keiko-tools/dist/.tsbuildinfo +1 -1
  481. package/node_modules/@oscharko-dev/keiko-tools/package.json +2 -2
  482. package/node_modules/@oscharko-dev/keiko-verification/dist/.tsbuildinfo +1 -1
  483. package/node_modules/@oscharko-dev/keiko-verification/package.json +2 -2
  484. package/node_modules/@oscharko-dev/keiko-workflows/dist/.tsbuildinfo +1 -1
  485. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.d.ts +2 -0
  486. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.d.ts.map +1 -1
  487. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/assemble.js +45 -10
  488. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.d.ts +1 -1
  489. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.d.ts.map +1 -1
  490. package/node_modules/@oscharko-dev/keiko-workflows/dist/contextpack/index.js +1 -1
  491. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/anchors.d.ts.map +1 -1
  492. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/anchors.js +68 -0
  493. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.d.ts.map +1 -1
  494. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.js +4 -6
  495. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.d.ts +30 -0
  496. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.d.ts.map +1 -0
  497. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/__tests__/fixtures/runEntryFixtures.js +114 -0
  498. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts.map +1 -1
  499. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.js +20 -7
  500. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runEntries.d.ts.map +1 -1
  501. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runEntries.js +15 -7
  502. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.d.ts.map +1 -1
  503. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/runtimeCommon.js +28 -4
  504. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.d.ts.map +1 -1
  505. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.js +51 -1
  506. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/signals.d.ts.map +1 -1
  507. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/signals.js +8 -3
  508. package/node_modules/@oscharko-dev/keiko-workflows/package.json +2 -2
  509. package/node_modules/@oscharko-dev/keiko-workspace/dist/.tsbuildinfo +1 -1
  510. package/node_modules/@oscharko-dev/keiko-workspace/dist/discovery.d.ts.map +1 -1
  511. package/node_modules/@oscharko-dev/keiko-workspace/dist/discovery.js +34 -2
  512. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.d.ts +1 -0
  513. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.d.ts.map +1 -1
  514. package/node_modules/@oscharko-dev/keiko-workspace/dist/fs.js +1 -0
  515. package/node_modules/@oscharko-dev/keiko-workspace/dist/gitHistory.d.ts.map +1 -1
  516. package/node_modules/@oscharko-dev/keiko-workspace/dist/gitHistory.js +84 -27
  517. package/node_modules/@oscharko-dev/keiko-workspace/dist/ignore.d.ts.map +1 -1
  518. package/node_modules/@oscharko-dev/keiko-workspace/dist/ignore.js +19 -0
  519. package/node_modules/@oscharko-dev/keiko-workspace/dist/importGraph.d.ts.map +1 -1
  520. package/node_modules/@oscharko-dev/keiko-workspace/dist/importGraph.js +6 -3
  521. package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.d.ts +1 -0
  522. package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.d.ts.map +1 -1
  523. package/node_modules/@oscharko-dev/keiko-workspace/dist/realpath.js +2 -2
  524. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.d.ts.map +1 -1
  525. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.js +72 -25
  526. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts +15 -0
  527. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.d.ts.map +1 -0
  528. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchEntries.js +107 -0
  529. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts +18 -0
  530. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.d.ts.map +1 -0
  531. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchLineSelection.js +42 -0
  532. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.d.ts.map +1 -1
  533. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.js +72 -11
  534. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts +2 -0
  535. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.d.ts.map +1 -0
  536. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchRegexSafety.js +15 -0
  537. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts +2 -2
  538. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts.map +1 -1
  539. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.js +89 -75
  540. package/node_modules/@oscharko-dev/keiko-workspace/package.json +2 -2
  541. package/node_modules/@types/node/README.md +1 -1
  542. package/node_modules/@types/node/http2.d.ts +1 -0
  543. package/node_modules/@types/node/package.json +2 -2
  544. package/package.json +3 -1
  545. package/dist/ui/static/_next/static/RAzN8WLtYaktD-ZePowXl/_buildManifest.js +0 -1
  546. package/dist/ui/static/_next/static/chunks/18-ac3e3551b4e0ce8a.js +0 -1
  547. package/dist/ui/static/_next/static/chunks/258-e3b5ee46b0669967.js +0 -1
  548. package/dist/ui/static/_next/static/chunks/422-4c94c107b90d3ccc.js +0 -1
  549. package/dist/ui/static/_next/static/chunks/664-6d821dc1aacb6b48.js +0 -1
  550. package/dist/ui/static/_next/static/chunks/87c73c54-24122e7b92478d00.js +0 -1
  551. package/dist/ui/static/_next/static/chunks/982-abc19630e6305864.js +0 -1
  552. package/dist/ui/static/_next/static/chunks/app/_not-found/page-c4d800f366186be0.js +0 -1
  553. package/dist/ui/static/_next/static/chunks/app/launch/page-17ca39367f25f372.js +0 -1
  554. package/dist/ui/static/_next/static/chunks/app/layout-0f75a39edc90325d.js +0 -1
  555. package/dist/ui/static/_next/static/chunks/app/local-knowledge/capsule/page-87a2ea239308ed34.js +0 -1
  556. package/dist/ui/static/_next/static/chunks/app/local-knowledge/page-98bb7704fc7fd0ad.js +0 -1
  557. package/dist/ui/static/_next/static/chunks/app/memoriaviva/consolidation/page-f912263f1ee5d2dd.js +0 -1
  558. package/dist/ui/static/_next/static/chunks/app/memoriaviva/detail/page-fa590f135356e0af.js +0 -1
  559. package/dist/ui/static/_next/static/chunks/app/memoriaviva/page-b8555600c1113f14.js +0 -1
  560. package/dist/ui/static/_next/static/chunks/app/memoriaviva/review-queue/page-85cfbeb3598c0a36.js +0 -1
  561. package/dist/ui/static/_next/static/chunks/app/page-2881856ad25d9935.js +0 -1
  562. package/dist/ui/static/_next/static/chunks/framework-d8f01f7e25201916.js +0 -1
  563. package/dist/ui/static/_next/static/chunks/main-app-5b043f6c611974ae.js +0 -1
  564. package/dist/ui/static/_next/static/chunks/main-bc552b04f2b6dbe2.js +0 -1
  565. package/dist/ui/static/_next/static/chunks/pages/_app-2e239ff05bfdf6d6.js +0 -1
  566. package/dist/ui/static/_next/static/chunks/pages/_error-bda15e7831eec981.js +0 -1
  567. package/dist/ui/static/_next/static/chunks/webpack-0cfe6f51555ca84e.js +0 -1
  568. package/dist/ui/static/_next/static/css/eac94895f3edc5a5.css +0 -1
  569. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.d.ts +0 -6
  570. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.d.ts.map +0 -1
  571. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/conversation/scripted-answer-generator.js +0 -49
  572. /package/dist/ui/static/_next/static/chunks/{polyfills-42372ed130431b0a.js → 0cz1d0mv5g_q7.js} +0 -0
  573. /package/dist/ui/static/_next/static/{RAzN8WLtYaktD-ZePowXl → hR2gBQqCDKdPdSxBqZhqv}/_ssgManifest.js +0 -0
@@ -11,6 +11,29 @@
11
11
  // `tokens.css` (the `:root` custom-property table), and one `screens/<id>.html` per screen. Pure: no
12
12
  // IO, no model, no Date — a given plan yields a byte-identical artifact. All text and attribute values
13
13
  // are HTML-escaped so the reviewable artifact cannot inject markup.
14
+ //
15
+ // CSS value handling: fontFamily tokens are emitted as quoted strings with embedded double-quotes
16
+ // escaped and control/injection characters ('{', '}', ';', '</', '*/', newlines) stripped, so a
17
+ // hostile font name cannot break out of the custom-property declaration. Color tokens are validated
18
+ // against /^#[0-9a-fA-F]{3,8}$/ and numeric tokens as finite numbers; invalid values are dropped
19
+ // rather than emitted.
20
+ //
21
+ // Screen file names: Figma ids may contain ':' (Windows-invalid) and ';' (URI scheme risk in hrefs).
22
+ // sanitizeScreenFileName replaces /[:;]/g with '-'. Collisions after substitution are resolved by a
23
+ // numeric suffix. All relative hrefs inside screen HTML are prefixed with './' so they are relative
24
+ // to the screens/ directory, not ambiguous URI-scheme fragments. The raw screen id is preserved in
25
+ // the data-screen-id attribute.
26
+ //
27
+ // Layout / sizing / cornerRadius / typography (from IrNode, threaded through EmissionElement):
28
+ // For nodes with auto-layout, a deterministic CSS class is emitted (name = "n-" + sanitized node id)
29
+ // carrying display:flex, flex-direction, gap, padding, and border-radius. TEXT nodes with typography
30
+ // matching a tokens.css entry reference var(--font-N). fill-sized nodes emit flex:1 / width:100% on
31
+ // the relevant axis; hug is the default (no output).
32
+ //
33
+ // What IS reproduced: auto-layout direction, gap, padding, border-radius, font (via token var or
34
+ // inline).
35
+ // What is NOT reproduced: absolute positioning, constraints, effects (shadows/blur), image fills
36
+ // beyond refs, grid layout, overflow, z-ordering, component variants.
14
37
  const ADAPTER_NAME = "html-css";
15
38
  const INDENT = " ";
16
39
  const HTML_ESCAPES = {
@@ -22,8 +45,41 @@ const HTML_ESCAPES = {
22
45
  };
23
46
  const escapeHtml = (value) => value.replace(/[&<>"']/gu, (char) => HTML_ESCAPES[char] ?? char);
24
47
  const indent = (depth) => INDENT.repeat(depth);
25
- // Map a target-neutral element role to a semantic HTML tag. Containers become <section>; everything
26
- // else is the closest semantic element. No role yields a framework component.
48
+ // ─── Fix #7: safe screen file names ──────────────────────────────────────────
49
+ //
50
+ // Figma ids contain ':' (invalid on Windows file paths) and INSTANCE ids contain ';' which is
51
+ // parsed as a URI scheme separator in sibling hrefs (e.g. "I123:456;789:12.html" → opaque URI).
52
+ // We replace /[:;]/g with '-'; ids are unique before substitution so collisions are rare, but a
53
+ // numeric suffix is appended defensively.
54
+ function buildSafeNameIndex(screens) {
55
+ const seen = new Map();
56
+ const result = new Map();
57
+ for (const screen of screens) {
58
+ const base = screen.screenId.replace(/[:;]/gu, "-");
59
+ const count = seen.get(base) ?? 0;
60
+ seen.set(base, count + 1);
61
+ result.set(screen.screenId, count === 0 ? base : `${base}-${String(count)}`);
62
+ }
63
+ return result;
64
+ }
65
+ // ─── Fix #8: CSS value sanitization ──────────────────────────────────────────
66
+ //
67
+ // fontFamily is emitted as a CSS quoted string. Embedded double-quotes are escaped as \\22 (the
68
+ // CSS hex escape for ") and injection sequences ('{', '}', ';', '</', '*/', newlines, control
69
+ // chars) are stripped, so a hostile font name cannot break out of the declaration.
70
+ // Unicode escapes for control characters (U+0000-U+001F) and DEL (U+007F) avoid the no-control-regex
71
+ // lint rule while matching the same character set at runtime.
72
+ // eslint-disable-next-line no-control-regex
73
+ const CSS_INJECTION_RE = /[{};]|<\/|\*\/|[\u0000-\u001f\u007f]/gu;
74
+ const safeFontFamily = (family) => {
75
+ const cleaned = family.replace(CSS_INJECTION_RE, "").replace(/"/gu, "\\22 ");
76
+ return `"${cleaned}"`;
77
+ };
78
+ // Valid CSS hex color: 3, 4, 6, or 8 hex digits.
79
+ const HEX_COLOR_RE = /^#[0-9a-fA-F]{3,8}$/u;
80
+ const isSafeColor = (value) => HEX_COLOR_RE.test(value);
81
+ // ─── Map a target-neutral element role to a semantic HTML tag ─────────────────
82
+ // Containers become <section>; everything else is the closest semantic element.
27
83
  const TAG_BY_ROLE = {
28
84
  button: "button",
29
85
  input: "input",
@@ -34,11 +90,113 @@ const TAG_BY_ROLE = {
34
90
  };
35
91
  // Roles that render as void (self-closing) elements with no children/text.
36
92
  const VOID_ROLES = new Set(["input", "image"]);
37
- function elementAttributes(element) {
93
+ const colorVar = (index) => `--color-${String(index + 1)}`;
94
+ const spaceVar = (index) => `--space-${String(index + 1)}`;
95
+ const radiusVar = (index) => `--radius-${String(index + 1)}`;
96
+ const fontVar = (index) => `--font-${String(index + 1)}`;
97
+ // Typography key used to match per-node typography against the global token table.
98
+ const typographyKey = (t) => `${t.fontFamily}|${String(t.fontSize)}|${String(t.fontWeight)}`;
99
+ const typographyTokenKey = (t) => `${t.fontFamily}|${String(t.fontSize)}|${String(t.fontWeight)}`;
100
+ const buildTokenLookups = (tokens) => {
101
+ const colorMap = new Map();
102
+ tokens.colors.forEach((token, i) => {
103
+ colorMap.set(token.value, colorVar(i));
104
+ });
105
+ const fontMap = new Map();
106
+ tokens.typography.forEach((token, i) => {
107
+ fontMap.set(typographyTokenKey(token), fontVar(i));
108
+ });
109
+ return { colorVar: colorMap, fontVar: fontMap };
110
+ };
111
+ // ─── Per-node CSS class generation ───────────────────────────────────────────
112
+ //
113
+ // A deterministic class name is derived from the node id by replacing non-alphanumeric characters
114
+ // with "-" and prefixing "n-". This is stable: same id → same class name every run.
115
+ const sanitizeIdForClass = (id) => id.replace(/[^a-zA-Z0-9]/gu, "-");
116
+ const nodeClass = (id) => `n-${sanitizeIdForClass(id)}`;
117
+ const ALIGN_CSS = {
118
+ start: "flex-start",
119
+ center: "center",
120
+ end: "flex-end",
121
+ "space-between": "space-between",
122
+ };
123
+ // Build CSS declarations for a layout node. Returns undefined when nothing would be emitted.
124
+ const layoutDeclarations = (layout) => {
125
+ const decls = ["display: flex;", `flex-direction: ${layout.mode};`];
126
+ if (layout.itemSpacing !== undefined && Number.isFinite(layout.itemSpacing)) {
127
+ decls.push(`gap: ${String(layout.itemSpacing)}px;`);
128
+ }
129
+ if (layout.padding !== undefined) {
130
+ const [top, right, bottom, left] = layout.padding;
131
+ decls.push(`padding: ${String(top)}px ${String(right)}px ${String(bottom)}px ${String(left)}px;`);
132
+ }
133
+ if (layout.primaryAlign !== undefined) {
134
+ decls.push(`justify-content: ${ALIGN_CSS[layout.primaryAlign]};`);
135
+ }
136
+ if (layout.counterAlign !== undefined) {
137
+ decls.push(`align-items: ${ALIGN_CSS[layout.counterAlign]};`);
138
+ }
139
+ return decls;
140
+ };
141
+ // Build CSS declarations for sizing (fill = flex:1, hug = nothing [default], fixed = nothing here).
142
+ const sizingDeclarations = (sizing) => {
143
+ const decls = [];
144
+ if (sizing.horizontal === "fill")
145
+ decls.push("width: 100%;");
146
+ if (sizing.vertical === "fill")
147
+ decls.push("flex: 1;");
148
+ return decls;
149
+ };
150
+ // Build CSS declarations for typography. Prefer token var when matched; inline otherwise.
151
+ const typographyDeclarations = (typo, lookups) => {
152
+ const fontVarName = lookups.fontVar.get(typographyKey(typo));
153
+ if (fontVarName !== undefined) {
154
+ return [`font: var(${fontVarName});`];
155
+ }
156
+ // Inline fallback: validate each value before emitting.
157
+ const decls = [];
158
+ if (Number.isFinite(typo.fontWeight))
159
+ decls.push(`font-weight: ${String(typo.fontWeight)};`);
160
+ if (Number.isFinite(typo.fontSize))
161
+ decls.push(`font-size: ${String(typo.fontSize)}px;`);
162
+ if (typo.fontFamily.length > 0)
163
+ decls.push(`font-family: ${safeFontFamily(typo.fontFamily)};`);
164
+ return decls;
165
+ };
166
+ // Walk the element tree, collect CSS rules, populate classMap.
167
+ const collectStyles = (element, ctx) => {
168
+ const decls = [
169
+ ...(element.layout !== undefined ? layoutDeclarations(element.layout) : []),
170
+ ...(element.sizing !== undefined ? sizingDeclarations(element.sizing) : []),
171
+ ...(element.cornerRadius !== undefined && Number.isFinite(element.cornerRadius)
172
+ ? [`border-radius: ${String(element.cornerRadius)}px;`]
173
+ : []),
174
+ ...(element.typography !== undefined
175
+ ? typographyDeclarations(element.typography, ctx.lookups)
176
+ : []),
177
+ ];
178
+ if (decls.length > 0) {
179
+ const cls = nodeClass(element.id);
180
+ ctx.classMap.set(element.id, cls);
181
+ ctx.rules.push(`.${cls} {`);
182
+ for (const decl of decls)
183
+ ctx.rules.push(` ${decl}`);
184
+ ctx.rules.push("}");
185
+ }
186
+ for (const child of element.children)
187
+ collectStyles(child, ctx);
188
+ };
189
+ // ─── HTML element rendering ───────────────────────────────────────────────────
190
+ // Fix #6: additionally emit data-node-id so the element's IR origin is traceable in the HTML output.
191
+ function elementAttributes(element, classMap) {
38
192
  const parts = [
39
193
  `data-role="${escapeHtml(element.role)}"`,
40
194
  `data-name="${escapeHtml(element.displayName)}"`,
195
+ `data-node-id="${escapeHtml(element.id)}"`,
41
196
  ];
197
+ const cls = classMap.get(element.id);
198
+ if (cls !== undefined)
199
+ parts.push(`class="${escapeHtml(cls)}"`);
42
200
  if (element.role === "link")
43
201
  parts.push('href="#"');
44
202
  if (element.role === "input")
@@ -47,9 +205,9 @@ function elementAttributes(element) {
47
205
  parts.push(`alt="${escapeHtml(element.displayName)}"`);
48
206
  return parts.join(" ");
49
207
  }
50
- function renderElement(element, depth) {
208
+ function renderElement(element, depth, classMap) {
51
209
  const tag = TAG_BY_ROLE[element.role];
52
- const attributes = elementAttributes(element);
210
+ const attributes = elementAttributes(element, classMap);
53
211
  if (VOID_ROLES.has(element.role)) {
54
212
  return [`${indent(depth)}<${tag} ${attributes} />`];
55
213
  }
@@ -57,16 +215,19 @@ function renderElement(element, depth) {
57
215
  if (element.text !== undefined)
58
216
  lines.push(`${indent(depth + 1)}${escapeHtml(element.text)}`);
59
217
  for (const child of element.children)
60
- lines.push(...renderElement(child, depth + 1));
218
+ lines.push(...renderElement(child, depth + 1, classMap));
61
219
  lines.push(`${indent(depth)}</${tag}>`);
62
220
  return lines;
63
221
  }
64
- function renderNav(navTargets, depth) {
222
+ // Fix #7: hrefs use the sanitized name and are prefixed with './' so they resolve relative to the
223
+ // screens/ directory and cannot be misinterpreted as URI schemes.
224
+ function renderNav(navTargets, safeNames, depth) {
65
225
  if (navTargets.length === 0)
66
226
  return [];
67
227
  const lines = [`${indent(depth)}<nav aria-label="Screen navigation">`];
68
228
  for (const target of navTargets) {
69
- const href = `${escapeHtml(target.toScreenId)}.html`;
229
+ const safeName = safeNames.get(target.toScreenId) ?? target.toScreenId.replace(/[:;]/gu, "-");
230
+ const href = `./${escapeHtml(safeName)}.html`;
70
231
  const trigger = escapeHtml(target.trigger);
71
232
  const label = escapeHtml(target.toScreenName);
72
233
  lines.push(`${indent(depth + 1)}<a href="${href}" data-trigger="${trigger}">${label}</a>`);
@@ -74,12 +235,23 @@ function renderNav(navTargets, depth) {
74
235
  lines.push(`${indent(depth)}</nav>`);
75
236
  return lines;
76
237
  }
77
- function renderScreenHtml(screen) {
238
+ // Fix #7: screen file uses safe name; raw id is preserved in data-screen-id for traceability.
239
+ function renderScreenHtml(screen, safeNames, lookups) {
240
+ // Collect per-node styles first so classMap is populated before HTML rendering.
241
+ const ctx = { lookups, classMap: new Map(), rules: [] };
242
+ collectStyles(screen.root, ctx);
243
+ const styleBlock = ctx.rules.length > 0
244
+ ? [
245
+ `${indent(2)}<style>`,
246
+ ...ctx.rules.map((line) => `${indent(2)}${line}`),
247
+ `${indent(2)}</style>`,
248
+ ]
249
+ : [];
78
250
  const title = escapeHtml(screen.screenName);
79
251
  const body = [
80
- ...renderNav(screen.navTargets, 3),
252
+ ...renderNav(screen.navTargets, safeNames, 3),
81
253
  `${indent(3)}<main data-screen-id="${escapeHtml(screen.screenId)}">`,
82
- ...renderElement(screen.root, 4),
254
+ ...renderElement(screen.root, 4, ctx.classMap),
83
255
  `${indent(3)}</main>`,
84
256
  ];
85
257
  return [
@@ -89,6 +261,7 @@ function renderScreenHtml(screen) {
89
261
  `${indent(2)}<meta charset="utf-8" />`,
90
262
  `${indent(2)}<title>${title}</title>`,
91
263
  `${indent(2)}<link rel="stylesheet" href="../tokens.css" />`,
264
+ ...styleBlock,
92
265
  `${indent(1)}</head>`,
93
266
  `${indent(1)}<body>`,
94
267
  ...body,
@@ -97,9 +270,13 @@ function renderScreenHtml(screen) {
97
270
  "",
98
271
  ].join("\n");
99
272
  }
100
- function renderIndexHtml(screens) {
101
- const links = screens.map((screen) => `${indent(3)}<li><a href="screens/${escapeHtml(screen.screenId)}.html">` +
102
- `${escapeHtml(screen.screenName)}</a></li>`);
273
+ // Fix #7: index links use safe names for the href path but display the human-readable screen name.
274
+ function renderIndexHtml(screens, safeNames) {
275
+ const links = screens.map((screen) => {
276
+ const safeName = safeNames.get(screen.screenId) ?? screen.screenId.replace(/[:;]/gu, "-");
277
+ return (`${indent(3)}<li><a href="screens/${escapeHtml(safeName)}.html">` +
278
+ `${escapeHtml(screen.screenName)}</a></li>`);
279
+ });
103
280
  return [
104
281
  "<!doctype html>",
105
282
  '<html lang="en">',
@@ -119,22 +296,31 @@ function renderIndexHtml(screens) {
119
296
  "",
120
297
  ].join("\n");
121
298
  }
122
- const colorVar = (index) => `--color-${String(index + 1)}`;
123
- const spaceVar = (index) => `--space-${String(index + 1)}`;
124
- const radiusVar = (index) => `--radius-${String(index + 1)}`;
125
- const fontVar = (index) => `--font-${String(index + 1)}`;
126
- const colorLine = (token, index) => `${indent(1)}${colorVar(index)}: ${token.value};`;
127
- const spaceLine = (token, index) => `${indent(1)}${spaceVar(index)}: ${String(token.value)}px;`;
128
- const radiusLine = (token, index) => `${indent(1)}${radiusVar(index)}: ${String(token.value)}px;`;
129
- // A typography token becomes a font-shorthand-style custom property referencing its family + size.
130
- const fontLine = (token, index) => `${indent(1)}${fontVar(index)}: ${String(token.fontWeight)} ${String(token.fontSize)}px/` +
131
- `${String(token.lineHeight)}px ${token.fontFamily};`;
299
+ // Fix #8: validate color before emit; drop invalid tokens rather than emitting them.
300
+ const colorLine = (token, index) => isSafeColor(token.value) ? `${indent(1)}${colorVar(index)}: ${token.value};` : undefined;
301
+ const spaceLine = (token, index) => Number.isFinite(token.value)
302
+ ? `${indent(1)}${spaceVar(index)}: ${String(token.value)}px;`
303
+ : undefined;
304
+ const radiusLine = (token, index) => Number.isFinite(token.value)
305
+ ? `${indent(1)}${radiusVar(index)}: ${String(token.value)}px;`
306
+ : undefined;
307
+ // Fix #8: fontFamily is sanitized via safeFontFamily (quoted + injection chars stripped).
308
+ // Weight, size, lineHeight are validated as finite numbers before emit.
309
+ const fontLine = (token, index) => {
310
+ if (!Number.isFinite(token.fontWeight) ||
311
+ !Number.isFinite(token.fontSize) ||
312
+ !Number.isFinite(token.lineHeight)) {
313
+ return undefined;
314
+ }
315
+ return (`${indent(1)}${fontVar(index)}: ${String(token.fontWeight)} ${String(token.fontSize)}px/` +
316
+ `${String(token.lineHeight)}px ${safeFontFamily(token.fontFamily)};`);
317
+ };
132
318
  function renderTokensCss(tokens) {
133
319
  const lines = [
134
- ...tokens.colors.map(colorLine),
135
- ...tokens.spacing.map(spaceLine),
136
- ...tokens.radius.map(radiusLine),
137
- ...tokens.typography.map(fontLine),
320
+ ...tokens.colors.map(colorLine).filter((l) => l !== undefined),
321
+ ...tokens.spacing.map(spaceLine).filter((l) => l !== undefined),
322
+ ...tokens.radius.map(radiusLine).filter((l) => l !== undefined),
323
+ ...tokens.typography.map(fontLine).filter((l) => l !== undefined),
138
324
  ];
139
325
  return [
140
326
  "/* Design tokens (deterministic, from the Figma Snapshot Screen-IR). */",
@@ -145,13 +331,18 @@ function renderTokensCss(tokens) {
145
331
  ].join("\n");
146
332
  }
147
333
  function emitHtmlCss(plan) {
334
+ const safeNames = buildSafeNameIndex(plan.screens);
335
+ const lookups = buildTokenLookups(plan.tokens);
148
336
  const files = [
149
- { path: "index.html", contents: renderIndexHtml(plan.screens) },
337
+ { path: "index.html", contents: renderIndexHtml(plan.screens, safeNames) },
150
338
  { path: "tokens.css", contents: renderTokensCss(plan.tokens) },
151
- ...plan.screens.map((screen) => ({
152
- path: `screens/${screen.screenId}.html`,
153
- contents: renderScreenHtml(screen),
154
- })),
339
+ ...plan.screens.map((screen) => {
340
+ const safeName = safeNames.get(screen.screenId) ?? screen.screenId.replace(/[:;]/gu, "-");
341
+ return {
342
+ path: `screens/${safeName}.html`,
343
+ contents: renderScreenHtml(screen, safeNames, lookups),
344
+ };
345
+ }),
155
346
  ];
156
347
  return { adapterName: ADAPTER_NAME, files };
157
348
  }
@@ -159,6 +350,11 @@ function emitHtmlCss(plan) {
159
350
  * The framework-agnostic HTML/CSS adapter — the only adapter shipped in the first slice. Renders the
160
351
  * target-neutral plan to semantic HTML per screen, a `tokens.css` custom-property table, and an
161
352
  * `index.html`. Pure and deterministic: a given plan yields a byte-identical artifact.
353
+ *
354
+ * Layout fidelity: nodes with auto-layout emit display:flex + direction + gap + padding + radius in a
355
+ * per-screen `<style>` block; TEXT nodes with matching typography tokens emit var(--font-N); fill-sized
356
+ * nodes emit flex:1 / width:100%. Absolute positioning, constraints, effects, and image content are
357
+ * not reproduced.
162
358
  */
163
359
  export const htmlCssAdapter = {
164
360
  name: ADAPTER_NAME,
@@ -10,6 +10,48 @@ export interface BoundingBox {
10
10
  export interface ImageFillRef {
11
11
  readonly imageRef: string;
12
12
  }
13
+ /** Auto-layout direction for a flex container. */
14
+ export type LayoutMode = "row" | "column";
15
+ /** Simplified alignment shorthand for a flex axis. */
16
+ export type AlignItems = "start" | "center" | "end" | "space-between";
17
+ /**
18
+ * Auto-layout properties for a FRAME/COMPONENT/INSTANCE that has `layoutMode` set. Optional and
19
+ * additive: absent when the node has no auto-layout. NEVER folded into the snapshot integrity hash
20
+ * (#753/#735) — it is codegen metadata, not structural drift identity.
21
+ */
22
+ export interface IrLayout {
23
+ /** Flex direction derived from Figma `layoutMode` (HORIZONTAL → row, VERTICAL → column). */
24
+ readonly mode: LayoutMode;
25
+ /** Gap between children, from `itemSpacing`. */
26
+ readonly itemSpacing?: number;
27
+ /** Padding: [top, right, bottom, left]. Absent when all four are zero/absent. */
28
+ readonly padding?: readonly [number, number, number, number];
29
+ /** Primary-axis alignment (Figma `primaryAxisAlignItems`). */
30
+ readonly primaryAlign?: AlignItems;
31
+ /** Cross-axis alignment (Figma `counterAxisAlignItems`). */
32
+ readonly counterAlign?: AlignItems;
33
+ }
34
+ /** Whether a dimension is fixed, fills available space, or hugs content. */
35
+ export type LayoutSizing = "fixed" | "hug" | "fill";
36
+ /**
37
+ * Per-axis sizing mode (Figma `layoutSizingHorizontal` / `layoutSizingVertical`). Optional and
38
+ * additive; absent when the node has no auto-layout parent or when sizing is not explicitly set.
39
+ * Hash-neutral like {@link IrLayout}.
40
+ */
41
+ export interface IrSizing {
42
+ readonly horizontal?: LayoutSizing;
43
+ readonly vertical?: LayoutSizing;
44
+ }
45
+ /**
46
+ * Per-TEXT-node typography properties, only present on TEXT nodes. Matches what `tokens.ts`
47
+ * already extracts globally (fontFamily, fontSize, fontWeight). Optional and additive; absent for
48
+ * non-TEXT nodes or when the `style` block is missing. Hash-neutral like {@link IrLayout}.
49
+ */
50
+ export interface IrTypography {
51
+ readonly fontFamily: string;
52
+ readonly fontSize: number;
53
+ readonly fontWeight: number;
54
+ }
13
55
  /** A kept node in a screen's normalized structural tree. */
14
56
  export interface IrNode {
15
57
  readonly id: string;
@@ -30,6 +72,26 @@ export interface IrNode {
30
72
  * additive, and hash-neutral like {@link IrNode.textColor}.
31
73
  */
32
74
  readonly backgroundColor?: string;
75
+ /**
76
+ * Auto-layout properties (direction, gap, padding, alignment). Optional and additive: absent when
77
+ * the node has no auto-layout. Hash-neutral — codegen metadata, not structural drift identity.
78
+ */
79
+ readonly layout?: IrLayout;
80
+ /**
81
+ * Per-axis sizing mode. Optional and additive: absent when no sizing context exists.
82
+ * Hash-neutral like {@link IrNode.layout}.
83
+ */
84
+ readonly sizing?: IrSizing;
85
+ /**
86
+ * Corner radius in pixels. Optional and additive: absent when zero or absent from source.
87
+ * Hash-neutral like {@link IrNode.layout}.
88
+ */
89
+ readonly cornerRadius?: number;
90
+ /**
91
+ * Per-TEXT typography (fontFamily, fontSize, fontWeight). Optional and additive: absent for
92
+ * non-TEXT nodes or when the style block is missing. Hash-neutral like {@link IrNode.layout}.
93
+ */
94
+ readonly typography?: IrTypography;
33
95
  readonly imageFills: readonly ImageFillRef[];
34
96
  readonly children: readonly IrNode[];
35
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"irTypes.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/irTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"irTypes.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/irTypes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/links.ts"],"names":[],"mappings":"AAcA,OAAO,EAAyC,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAmE7C,sGAAsG;AACtG,eAAO,MAAM,uBAAuB,GAClC,SAAS,eAAe,EACxB,SAAS,SAAS,UAAU,EAAE,KAC7B,SAAS,eAAe,EAQ1B,CAAC"}
1
+ {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/links.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAyC,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAmF7C,sGAAsG;AACtG,eAAO,MAAM,uBAAuB,GAClC,SAAS,eAAe,EACxB,SAAS,SAAS,UAAU,EAAE,KAC7B,SAAS,eAAe,EAS1B,CAAC"}
@@ -9,11 +9,25 @@
9
9
  // 3. CANVAS `flowStartingPoints[]` + `prototypeStartNodeID` — flow entry points, emitted as
10
10
  // `{ sourceNodeId: <canvasId>, trigger: "FLOW_START", targetNodeId }`.
11
11
  //
12
+ // URL actions (type=URL, url=<href>) are surfaced with targetNodeId `url:<href>` so they appear in
13
+ // `unresolvedLinks` downstream (no screen owns a `url:` node id) rather than being silently dropped.
14
+ //
12
15
  // Links come from the pruned tree (hidden/dropped nodes emit nothing) plus the raw root for flow
13
16
  // entry points. The output is sorted by a stable structural key so order never depends on traversal.
14
17
  import { asNode, nodeId, readArray, readString } from "./sourceNode.js";
15
18
  const FLOW_START = "FLOW_START";
16
19
  const UNKNOWN_TRIGGER = "UNKNOWN";
20
+ // Shared constant — see prune.ts for rationale. Must stay in sync with every other recursive walk.
21
+ const MAX_TREE_DEPTH = 512;
22
+ // URL actions carry type="URL" and a url field instead of a destinationId. We surface them with the
23
+ // synthetic target `url:<href>` so they appear in unresolvedLinks downstream (no screen owns a node
24
+ // with that id) rather than being silently dropped. Board-content URLs are acceptable here.
25
+ const readUrlAction = (action) => {
26
+ if (readString(action.type) !== "URL")
27
+ return undefined;
28
+ const url = readString(action.url);
29
+ return url !== undefined ? `url:${url}` : undefined;
30
+ };
17
31
  const readDestination = (action) => {
18
32
  const direct = readString(action.destinationId);
19
33
  if (direct !== undefined)
@@ -21,7 +35,7 @@ const readDestination = (action) => {
21
35
  const nav = asNode(action.navigation);
22
36
  if (nav !== undefined)
23
37
  return readString(nav.destinationId);
24
- return undefined;
38
+ return readUrlAction(action);
25
39
  };
26
40
  const triggerType = (entry) => {
27
41
  const trigger = asNode(entry.trigger);
@@ -55,10 +69,15 @@ const collectInteractions = (node, out) => {
55
69
  collectFromActions(sourceNodeId, triggerType(record), [action], out);
56
70
  }
57
71
  };
58
- const visit = (pruned, out) => {
72
+ function visitAt(pruned, out, depth) {
73
+ if (depth > MAX_TREE_DEPTH)
74
+ return;
59
75
  collectInteractions(pruned.source, out);
60
76
  for (const child of pruned.children)
61
- visit(child, out);
77
+ visitAt(child, out, depth + 1);
78
+ }
79
+ const visit = (pruned, out) => {
80
+ visitAt(pruned, out, 0);
62
81
  };
63
82
  const collectFlowEntries = (root, out) => {
64
83
  const sourceNodeId = nodeId(root);
@@ -82,5 +101,6 @@ export const extractInterScreenLinks = (rawRoot, screens) => {
82
101
  const byKey = new Map();
83
102
  for (const link of collected)
84
103
  byKey.set(linkKey(link), link);
85
- return [...byKey.values()].sort((a, b) => linkKey(a).localeCompare(linkKey(b)));
104
+ const byCode = (x, y) => (x < y ? -1 : x > y ? 1 : 0);
105
+ return [...byKey.values()].sort((a, b) => byCode(linkKey(a), linkKey(b)));
86
106
  };
@@ -52,7 +52,8 @@ export declare function deriveNavGraph(ir: ScreenIrResult): NavGraph;
52
52
  /**
53
53
  * Derive bounded, acyclic multi-step flow paths from the graph's entry screens. `maxDepth` caps the
54
54
  * number of screens per path (default {@link DEFAULT_MAX_FLOW_DEPTH}); the per-path visited set makes
55
- * every path acyclic, so a cycle or self-loop never yields an unbounded path set. Stable-sorted.
55
+ * every path acyclic, so a cycle or self-loop never yields an unbounded path set. Total flows are
56
+ * capped at {@link MAX_NAV_FLOWS} so a dense fully-connected graph cannot exhaust memory. Stable-sorted.
56
57
  */
57
58
  export declare function deriveNavFlows(graph: NavGraph, maxDepth?: number): readonly NavFlow[];
58
59
  /**
@@ -66,7 +67,8 @@ export declare function deriveRoutingHints(graph: NavGraph): readonly RoutingHin
66
67
  * Reuses #754's StructuralTestItem shape so the items compose additively through
67
68
  * `deriveScreenTestBaseline(screen, extraItems)`. Every edge → a navigation item on its source
68
69
  * screen; every multi-step flow → a flow item on its entry screen; every unreachable/dead-end screen
69
- * → a coverage-notice item. Deterministic: items are emitted in the graph's stable order.
70
+ * → a coverage-notice item. When flow enumeration is truncated by MAX_NAV_FLOWS, one additional
71
+ * coverage-notice records the omission. Deterministic: items are emitted in the graph's stable order.
70
72
  */
71
73
  export declare function deriveNavTestItemsByScreen(graph: NavGraph, maxFlowDepth?: number): ReadonlyMap<string, readonly StructuralTestItem[]>;
72
74
  //# sourceMappingURL=navGraph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"navGraph.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/navGraph.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAqC,cAAc,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAKpE,gCAAgC;AAChC,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,+EAA+E;AAC/E,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,qGAAqG;AACrG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,qEAAqE;AACrE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IACpD,gGAAgG;IAChG,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,4DAA4D;IAC5D,QAAQ,CAAC,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;IACjD,8DAA8D;IAC9D,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED,4DAA4D;AAC5D,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,kFAAkF;AAClF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5F;AA0FD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,QAAQ,CA0B3D;AA6BD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,QAAQ,EACf,QAAQ,GAAE,MAA+B,GACxC,SAAS,OAAO,EAAE,CAMpB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,WAAW,EAAE,CAQ1E;AAiED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,QAAQ,EACf,YAAY,GAAE,MAA+B,GAC5C,WAAW,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAQpD"}
1
+ {"version":3,"file":"navGraph.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/navGraph.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAqC,cAAc,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AASpE,gCAAgC;AAChC,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,+EAA+E;AAC/E,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,qGAAqG;AACrG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,qEAAqE;AACrE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IACpD,gGAAgG;IAChG,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,4DAA4D;IAC5D,QAAQ,CAAC,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;IACjD,8DAA8D;IAC9D,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED,4DAA4D;AAC5D,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,kFAAkF;AAClF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5F;AA+FD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,QAAQ,CA0B3D;AA+CD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,QAAQ,EACf,QAAQ,GAAE,MAA+B,GACxC,SAAS,OAAO,EAAE,CAWpB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,WAAW,EAAE,CAU1E;AA+ED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,QAAQ,EACf,YAAY,GAAE,MAA+B,GAC5C,WAAW,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAYpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/normalize.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAA8C,MAAM,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA2E7C,8FAA8F;AAC9F,eAAO,MAAM,mBAAmB,GAAI,QAAQ,UAAU,KAAG,MAA2B,CAAC;AAErF,6EAA6E;AAC7E,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAC4B,CAAC"}
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/domain/figma/normalize.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAMV,MAAM,EAKP,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAqL7C,8FAA8F;AAC9F,eAAO,MAAM,mBAAmB,GAAI,QAAQ,UAAU,KAAG,MAAgC,CAAC;AAO1F,6EAA6E;AAC7E,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAAiC,CAAC"}