@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
@@ -1,106 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,88143,(e,t,n)=>{"use strict";function a({widthInt:e,heightInt:t,blurWidth:n,blurHeight:l,blurDataURL:s,objectFit:i}){let r=n?40*n:e,o=l?40*l:t,c=r&&o?`viewBox='0 0 ${r} ${o}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${c}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${c?"none":"contain"===i?"xMidYMid":"cover"===i?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${s}'/%3E%3C/svg%3E`}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"getImageBlurSvg",{enumerable:!0,get:function(){return a}})},87690,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a={VALID_LOADERS:function(){return s},imageConfigDefault:function(){return i}};for(var l in a)Object.defineProperty(n,l,{enumerable:!0,get:a[l]});let s=["default","imgix","cloudinary","akamai","custom"],i={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumRedirects:3,maximumResponseBody:5e7,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1,customCacheHandler:!1}},8927,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"getImgProps",{enumerable:!0,get:function(){return c}}),e.r(33525);let a=e.r(43369),l=e.r(88143),s=e.r(87690),i=["-moz-initial","fill","none","scale-down",void 0];function r(e){return void 0!==e.default}function o(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function c({src:e,sizes:t,unoptimized:n=!1,priority:d=!1,preload:u=!1,loading:h,className:p,quality:m,width:f,height:g,fill:v=!1,style:x,overrideSrc:b,onLoad:y,onLoadingComplete:j,placeholder:w="empty",blurDataURL:k,fetchPriority:N,decoding:S="async",layout:C,objectFit:I,objectPosition:E,lazyBoundary:R,lazyRoot:$,...T},A){var L;let q,P,M,{imgConf:D,showAltText:F,blurComplete:z,defaultLoader:O}=A,K=D||s.imageConfigDefault;if("allSizes"in K)q=K;else{let e=[...K.deviceSizes,...K.imageSizes].sort((e,t)=>e-t),t=K.deviceSizes.sort((e,t)=>e-t),n=K.qualities?.sort((e,t)=>e-t);q={...K,allSizes:e,deviceSizes:t,qualities:n}}if(void 0===O)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let _=T.loader||O;delete T.loader,delete T.srcSet;let B="__next_img_default"in _;if(B){if("custom"===q.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
2
- Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=_;_=t=>{let{config:n,...a}=t;return e(a)}}if(C){"fill"===C&&(v=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[C];e&&(x={...x,...e});let n={responsive:"100vw",fill:"100vw"}[C];n&&!t&&(t=n)}let U="",W=o(f),H=o(g);if((L=e)&&"object"==typeof L&&(r(L)||void 0!==L.src)){let t=r(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(P=t.blurWidth,M=t.blurHeight,k=k||t.blurDataURL,U=t.src,!v)if(W||H){if(W&&!H){let e=W/t.width;H=Math.round(t.height*e)}else if(!W&&H){let e=H/t.height;W=Math.round(t.width*e)}}else W=t.width,H=t.height}let G=!d&&!u&&("lazy"===h||void 0===h);(!(e="string"==typeof e?e:U)||e.startsWith("data:")||e.startsWith("blob:"))&&(n=!0,G=!1),q.unoptimized&&(n=!0),B&&!q.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(n=!0);let Y=o(m),V=Object.assign(v?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:I,objectPosition:E}:{},F?{}:{color:"transparent"},x),Q=z||"empty"===w?null:"blur"===w?`url("data:image/svg+xml;charset=utf-8,${(0,l.getImageBlurSvg)({widthInt:W,heightInt:H,blurWidth:P,blurHeight:M,blurDataURL:k||"",objectFit:V.objectFit})}")`:`url("${w}")`,X=i.includes(V.objectFit)?"fill"===V.objectFit?"100% 100%":"cover":V.objectFit,J=Q?{backgroundSize:X,backgroundPosition:V.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:Q}:{},Z=function({config:e,src:t,unoptimized:n,width:l,quality:s,sizes:i,loader:r}){if(n){if(t.startsWith("/")&&!t.startsWith("//")){let e=(0,a.getDeploymentId)();if(e){let n=t.indexOf("?");if(-1!==n){let a=new URLSearchParams(t.slice(n+1));a.get("dpl")||(a.append("dpl",e),t=t.slice(0,n)+"?"+a.toString())}else t+=`?dpl=${e}`}}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:o,kind:c}=function({deviceSizes:e,allSizes:t},n,a){if(a){let n=/(^|\s)(1?\d?\d)vw/g,l=[];for(let e;e=n.exec(a);)l.push(parseInt(e[2]));if(l.length){let n=.01*Math.min(...l);return{widths:t.filter(t=>t>=e[0]*n),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof n?{widths:e,kind:"w"}:{widths:[...new Set([n,2*n].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,l,i),d=o.length-1;return{sizes:i||"w"!==c?i:"100vw",srcSet:o.map((n,a)=>`${r({config:e,src:t,quality:s,width:n})} ${"w"===c?n:a+1}${c}`).join(", "),src:r({config:e,src:t,quality:s,width:o[d]})}}({config:q,src:e,unoptimized:n,width:W,quality:Y,sizes:t,loader:_}),ee=G?"lazy":h;return{props:{...T,loading:ee,fetchPriority:N,width:W,height:H,decoding:S,className:p,style:{...V,...J},sizes:Z.sizes,srcSet:Z.srcSet,src:b||Z.src},meta:{unoptimized:n,preload:u||d,placeholder:w,fill:v}}}},98879,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return r}});let a=e.r(71645),l="u"<typeof window,s=l?()=>{}:a.useLayoutEffect,i=l?()=>{}:a.useEffect;function r(e){let{headManager:t,reduceComponentsToState:n}=e;function r(){if(t&&t.mountedInstances){let e=a.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(n(e))}}return l&&(t?.mountedInstances?.add(e.children),r()),s(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),s(()=>(t&&(t._pendingUpdate=r),()=>{t&&(t._pendingUpdate=r)})),i(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},25633,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a={default:function(){return f},defaultHead:function(){return u}};for(var l in a)Object.defineProperty(n,l,{enumerable:!0,get:a[l]});let s=e.r(55682),i=e.r(90809),r=e.r(43476),o=i._(e.r(71645)),c=s._(e.r(98879)),d=e.r(42732);function u(){return[(0,r.jsx)("meta",{charSet:"utf-8"},"charset"),(0,r.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function h(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===o.default.Fragment?e.concat(o.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(33525);let p=["name","httpEquiv","charSet","itemProp"];function m(e){let t,n,a,l;return e.reduce(h,[]).reverse().concat(u().reverse()).filter((t=new Set,n=new Set,a=new Set,l={},e=>{let s=!0,i=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){i=!0;let n=e.key.slice(e.key.indexOf("$")+1);t.has(n)?s=!1:t.add(n)}switch(e.type){case"title":case"base":n.has(e.type)?s=!1:n.add(e.type);break;case"meta":for(let t=0,n=p.length;t<n;t++){let n=p[t];if(e.props.hasOwnProperty(n))if("charSet"===n)a.has(n)?s=!1:a.add(n);else{let t=e.props[n],a=l[n]||new Set;("name"!==n||!i)&&a.has(t)?s=!1:(a.add(t),l[n]=a)}}}return s})).reverse().map((e,t)=>{let n=e.key||t;return o.default.cloneElement(e,{key:n})})}let f=function({children:e}){let t=(0,o.useContext)(d.HeadManagerContext);return(0,r.jsx)(c.default,{reduceComponentsToState:m,headManager:t,children:e})};("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},18556,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"ImageConfigContext",{enumerable:!0,get:function(){return s}});let a=e.r(55682)._(e.r(71645)),l=e.r(87690),s=a.default.createContext(l.imageConfigDefault)},65856,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"RouterContext",{enumerable:!0,get:function(){return a}});let a=e.r(55682)._(e.r(71645)).default.createContext(null)},70965,(e,t,n)=>{"use strict";function a(e,t){let n=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-n)<Math.abs(e-n)?t:e,t.qualities[0]):n}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"findClosestQuality",{enumerable:!0,get:function(){return a}})},1948,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return i}});let a=e.r(70965),l=e.r(43369);function s({config:e,src:t,width:n,quality:i}){let r=(0,l.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//")){let e=t.indexOf("?");if(-1!==e){let n=new URLSearchParams(t.slice(e+1)),a=n.get("dpl");if(a){r=a,n.delete("dpl");let l=n.toString();t=t.slice(0,e)+(l?"?"+l:"")}}}if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns.
3
- Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let o=(0,a.findClosestQuality)(i,e);return`${e.path}?url=${encodeURIComponent(t)}&w=${n}&q=${o}${t.startsWith("/")&&r?`&dpl=${r}`:""}`}s.__next_img_default=!0;let i=s},5500,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"Image",{enumerable:!0,get:function(){return y}});let a=e.r(55682),l=e.r(90809),s=e.r(43476),i=l._(e.r(71645)),r=a._(e.r(74080)),o=a._(e.r(25633)),c=e.r(8927),d=e.r(87690),u=e.r(18556);e.r(33525);let h=e.r(65856),p=a._(e.r(1948)),m=e.r(18581),f={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0};function g(e,t,n,a,l,s,i){let r=e?.src;e&&e["data-loaded-src"]!==r&&(e["data-loaded-src"]=r,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&l(!0),n?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let a=!1,l=!1;n.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>a,isPropagationStopped:()=>l,persist:()=>{},preventDefault:()=>{a=!0,t.preventDefault()},stopPropagation:()=>{l=!0,t.stopPropagation()}})}a?.current&&a.current(e)}}))}function v(e){return i.use?{fetchPriority:e}:{fetchpriority:e}}"u"<typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let x=(0,i.forwardRef)(({src:e,srcSet:t,sizes:n,height:a,width:l,decoding:r,className:o,style:c,fetchPriority:d,placeholder:u,loading:h,unoptimized:p,fill:f,onLoadRef:x,onLoadingCompleteRef:b,setBlurComplete:y,setShowAltText:j,sizesInput:w,onLoad:k,onError:N,...S},C)=>{let I=(0,i.useCallback)(e=>{e&&(N&&(e.src=e.src),e.complete&&g(e,u,x,b,y,p,w))},[e,u,x,b,y,N,p,w]),E=(0,m.useMergedRef)(C,I);return(0,s.jsx)("img",{...S,...v(d),loading:h,width:l,height:a,decoding:r,"data-nimg":f?"fill":"1",className:o,style:c,sizes:n,srcSet:t,src:e,ref:E,onLoad:e=>{g(e.currentTarget,u,x,b,y,p,w)},onError:e=>{j(!0),"empty"!==u&&y(!0),N&&N(e)}})});function b({isAppRouter:e,imgAttributes:t}){let n={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...v(t.fetchPriority)};return e&&r.default.preload?(r.default.preload(t.src,n),null):(0,s.jsx)(o.default,{children:(0,s.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...n},"__nimg-"+t.src+t.srcSet+t.sizes)})}let y=(0,i.forwardRef)((e,t)=>{let n=(0,i.useContext)(h.RouterContext),a=(0,i.useContext)(u.ImageConfigContext),l=(0,i.useMemo)(()=>{let e=f||a||d.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),n=e.deviceSizes.sort((e,t)=>e-t),l=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:n,qualities:l,localPatterns:"u"<typeof window?a?.localPatterns:e.localPatterns}},[a]),{onLoad:r,onLoadingComplete:o}=e,m=(0,i.useRef)(r);(0,i.useEffect)(()=>{m.current=r},[r]);let g=(0,i.useRef)(o);(0,i.useEffect)(()=>{g.current=o},[o]);let[v,y]=(0,i.useState)(!1),[j,w]=(0,i.useState)(!1),{props:k,meta:N}=(0,c.getImgProps)(e,{defaultLoader:p.default,imgConf:l,blurComplete:v,showAltText:j});return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(x,{...k,unoptimized:N.unoptimized,placeholder:N.placeholder,fill:N.fill,onLoadRef:m,onLoadingCompleteRef:g,setBlurComplete:y,setShowAltText:w,sizesInput:e.sizes,ref:t}),N.preload?(0,s.jsx)(b,{isAppRouter:!n,imgAttributes:k}):null]})});("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},94909,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a={default:function(){return d},getImageProps:function(){return c}};for(var l in a)Object.defineProperty(n,l,{enumerable:!0,get:a[l]});let s=e.r(55682),i=e.r(8927),r=e.r(5500),o=s._(e.r(1948));function c(e){let{props:t}=(0,i.getImgProps)(e,{defaultLoader:o.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[e,n]of Object.entries(t))void 0===n&&delete t[e];return{props:t}}let d=r.Image},57688,(e,t,n)=>{t.exports=e.r(94909)},89199,e=>{"use strict";let t;var n=e.i(43476),a=e.i(71645);let l=(0,a.createContext)(null);function s({value:e,children:t}){return(0,n.jsx)(l.Provider,{value:e,children:t})}function i(){let e=(0,a.useContext)(l);if(null===e)throw Error("useChatSessionContext must be used inside ChatSessionProvider");return e}function r(){return(0,a.useContext)(l)}let o=[{id:"read",action:"Read files",scope:"workspace",decision:"allow"},{id:"write",action:"Write files",scope:"src/** · docs/**",decision:"allow"},{id:"write-prod",action:"Write files",scope:"prod/** · infra/**",decision:"deny"},{id:"command",action:"Run commands",scope:"test · build · lint",decision:"allow"},{id:"command-danger",action:"Run commands",scope:"deploy · rm · db",decision:"ask"},{id:"network",action:"Network / fetch",scope:"allowlist",decision:"ask"},{id:"pr",action:"Open pull request",scope:"feature branches",decision:"allow"},{id:"mail",action:"Mail / calendar",scope:"any",decision:"ask"}],c=["Prefers TypeScript + functional React","Writes Conventional Commits","Always reviews diffs before merge","Never touches infra without explicit ok","Deep-work mornings (CET), async afternoons"],d={calendar:!0,mail:!1,jira:!0,docs:!0},u="keiko.twin.mode",h="keiko.twin.persona",p="keiko.twin.policy",m="keiko.twin.memory",f="keiko.twin.bridges",g=(0,a.createContext)(null);function v(e,t){try{let n=window.localStorage.getItem(e);if(null===n)return t;let a=JSON.parse(n);return null==a?t:a}catch{return t}}function x(e,t){try{window.localStorage.setItem(e,t)}catch{}}function b(e,t){try{window.localStorage.setItem(e,JSON.stringify(t))}catch{}}function y({children:e}){let[t,l]=(0,a.useState)("manual"),[s,i]=(0,a.useState)("Developer"),[r,j]=(0,a.useState)(o),[w,k]=(0,a.useState)(c),[N,S]=(0,a.useState)(d),[C,I]=(0,a.useState)(!1);(0,a.useEffect)(()=>{l(function(){try{let e=window.localStorage.getItem(u);return"manual"===e||"autonomous"===e?e:"manual"}catch{return"manual"}}()),i(function(){try{let e=window.localStorage.getItem(h);if("Developer"===e||"Product Owner"===e||"Designer"===e)return e;return"Developer"}catch{return"Developer"}}()),j(v(p,o)),k(v(m,c)),S(v(f,d)),I(!0)},[]),(0,a.useEffect)(()=>{C&&x(u,t)},[t,C]),(0,a.useEffect)(()=>{C&&x(h,s)},[s,C]),(0,a.useEffect)(()=>{C&&b(p,r)},[r,C]),(0,a.useEffect)(()=>{C&&b(m,w)},[w,C]),(0,a.useEffect)(()=>{C&&b(f,N)},[N,C]);let E=(0,a.useCallback)((e,t)=>{let n;return n=e=>r.find(t=>t.id===e)?.decision??null,"write"===e?"high"===t?n("write-prod")??"deny":n("write")??"allow":"command"===e?"high"===t?n("command-danger")??"ask":n("command")??"allow":"git"===e?n("pr")??"allow":"mail"===e?n("mail")??"ask":"network"===e?n("network")??"ask":"ask"},[r]),R=(0,a.useMemo)(()=>({mode:t,setMode:l,persona:s,setPersona:i,policy:r,setPolicy:j,memory:w,setMemory:k,bridges:N,setBridges:S,decide:E}),[t,s,r,w,N,E]);return(0,n.jsx)(g.Provider,{value:R,children:e})}function j(){let e=(0,a.useContext)(g);if(null===e)throw Error("useTwin must be used inside <TwinProvider>");return e}let w=(0,a.createContext)({wins:[],active:null,winCount:0});var k=e.i(17161);function N({winCount:e,mode:t,selectedModel:a,projectName:l,branchLabel:s,shellStatusLabel:i,evidenceStatusLabel:r,statusRef:o}){let c=a??"No model selected";return(0,n.jsxs)("footer",{ref:o,className:"footer mono",tabIndex:-1,"aria-label":"Workspace status","aria-live":"polite",children:[(0,n.jsxs)("span",{className:"ft-seg ft-gov","data-mode":t,"aria-atomic":"true",title:"autonomous"===t?"Governance mode: Keiko governs agents per your policy":"Governance mode: you approve every privileged action",children:["autonomous"===t?(0,n.jsx)("img",{className:"ft-orca",src:"/assets/keiko-logo.svg",alt:""}):(0,n.jsx)("span",{className:"ft-you","aria-hidden":"true",children:(0,n.jsx)(k.Icons.user,{size:10})}),"autonomous"===t?"Keiko governing":"You · manual"]}),(0,n.jsxs)("span",{className:"ft-seg ft-opt2","aria-atomic":"true",title:`Active project: ${l}`,children:[(0,n.jsx)(k.Icons.folder,{size:13}),(0,n.jsx)("span",{className:"ft-val",children:l})]}),(0,n.jsxs)("span",{className:"ft-seg ft-opt1","aria-atomic":"true",title:`Git branch: ${s}`,children:[(0,n.jsx)(k.Icons.branch,{size:13}),(0,n.jsx)("span",{className:"ft-val",children:s})]}),(0,n.jsxs)("span",{className:"ft-seg ft-opt2","aria-atomic":"true",title:`Shell status: ${i}`,children:[(0,n.jsx)(k.Icons.cube,{size:13})," ",i]}),(0,n.jsx)("span",{className:"spacer"}),(0,n.jsxs)("span",{className:"ft-seg ft-accent","aria-atomic":"true",title:"Open windows in the workspace",children:[(0,n.jsx)(k.Icons.tile,{size:13})," ",e," ",1===e?"window":"windows"]}),(0,n.jsxs)("span",{className:"ft-seg ft-opt2","aria-atomic":"true",title:`Selected model: ${c}`,children:[(0,n.jsx)(k.Icons.bolt,{size:13,style:{color:"var(--accent-text)"}}),(0,n.jsx)("span",{className:"ft-val",children:c})]}),(0,n.jsxs)("span",{className:"ft-seg ft-accent","aria-atomic":"true",title:`Review evidence status: ${r}`,children:[(0,n.jsx)(k.Icons.review,{size:13})," ",r]})]})}let S=[{id:"finder",name:"Finder",tile:"finder"},{id:"terminal",name:"Terminal",tile:"terminal"},{id:"vscode",name:"VS Code",img:"/assets/editors/vscode.svg"},{id:"intellij",name:"IntelliJ IDEA",img:"/assets/editors/intellij.svg"},{id:"goland",name:"GoLand",img:"/assets/editors/goland.svg"},{id:"rustrover",name:"RustRover",img:"/assets/editors/rustrover.svg"},{id:"pycharm",name:"PyCharm",img:"/assets/editors/pycharm.svg"},{id:"webstorm",name:"WebStorm",img:"/assets/editors/webstorm.svg"}],C="keiko.editor",I="intellij";function E(){try{return window.localStorage.getItem(C)??I}catch{return I}}function R({ed:e,size:t=20}){if(void 0!==e.img)return(0,n.jsx)("img",{className:"ed-img",src:e.img,width:t,height:t,alt:""});let a=Math.round(.27*t);return"terminal"===e.tile?(0,n.jsx)("span",{className:"ed-tile",style:{width:t,height:t,borderRadius:a,background:"#2a2c33"},children:(0,n.jsx)("span",{className:"ed-mark mono",style:{color:"#4ee08d",fontSize:.42*t},children:">_"})}):(0,n.jsx)("span",{className:"ed-tile",style:{width:t,height:t,borderRadius:a,background:"linear-gradient(180deg,#36c4ff,#1e7cf0)"},children:(0,n.jsx)(k.Icons.folder,{size:.56*t,style:{color:"#fff"}})})}function $({project:e}){let[t,l]=(0,a.useState)(!1),[s,i]=(0,a.useState)(E),r=(0,a.useRef)(null),o=(0,a.useRef)(null),c=S.find(e=>e.id===s)??S[3],d=`Editor: ${c.name}`,u=`Preferred editor for ${e}: ${c.name}`;(0,a.useEffect)(()=>{try{window.localStorage.setItem(C,s)}catch{}},[s]),(0,a.useEffect)(()=>{if(!t)return;let e=o.current;if(null===e)return;let n=e.querySelector('.edm-item[data-sel="true"]')??e.querySelector(".edm-item");n?.focus()},[t]);let h=()=>{l(!1),r.current?.focus()};return(0,n.jsxs)("div",{className:"edm",children:[(0,n.jsxs)("button",{type:"button",ref:r,className:"edm-trigger",onClick:()=>l(e=>!e),title:u,"aria-label":u,"aria-haspopup":"menu","aria-expanded":t,children:[(0,n.jsx)(R,{ed:c,size:20}),(0,n.jsx)("span",{className:"edm-trigger-label",children:d}),(0,n.jsx)(k.Icons.chevron,{size:13,style:{color:"var(--fg-faint)"}})]}),t?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"edm-backdrop",onClick:()=>l(!1),"aria-hidden":"true",role:"presentation"}),(0,n.jsxs)("div",{className:"edm-menu",role:"menu",tabIndex:-1,ref:o,onKeyDown:e=>{var t,n;if("Escape"===e.key){e.preventDefault(),e.stopPropagation(),h();return}if(!["ArrowDown","ArrowUp","Home","End"].includes(e.key))return;let a=o.current;if(null===a)return;let l=Array.from(a.querySelectorAll(".edm-item"));if(0===l.length)return;e.preventDefault();let s=l.findIndex(e=>e===document.activeElement);l[t=e.key,n=l.length,"ArrowDown"===t?s<0?0:(s+1)%n:"ArrowUp"===t?s<0?n-1:(s-1+n)%n:"Home"===t?0:n-1]?.focus()},children:[(0,n.jsxs)("div",{className:"edm-head mono",children:["Preferred editor for “",e,"”"]}),S.map(e=>(0,n.jsxs)("button",{type:"button",className:"edm-item","data-sel":e.id===s,onClick:()=>{i(e.id),h()},role:"menuitemradio","aria-checked":e.id===s,children:[(0,n.jsx)(R,{ed:e,size:24}),(0,n.jsx)("span",{className:"edm-name",children:e.name}),e.id===s?(0,n.jsx)(k.Icons.check,{size:14,style:{color:"var(--accent)"}}):null]},e.id))]})]}):null]})}function T({mode:e,onChange:t}){return(0,n.jsxs)("div",{className:"modesw","data-mode":e,role:"group","aria-label":"Agent mode",children:[(0,n.jsxs)("button",{type:"button",className:"modesw-opt","data-on":"manual"===e,"aria-pressed":"manual"===e,onClick:()=>t("manual"),title:"You approve every privileged action",children:[(0,n.jsx)("span",{className:"modesw-av","aria-hidden":"true",children:"M"})," ","You"]}),(0,n.jsxs)("button",{type:"button",className:"modesw-opt","data-on":"autonomous"===e,"aria-pressed":"autonomous"===e,onClick:()=>t("autonomous"),title:"Keiko governs agents per your policy",children:[(0,n.jsx)("img",{className:"modesw-orca",src:"/assets/keiko-logo.svg",alt:""})," Keiko"]})]})}function A({mode:e,projectName:t,statusLabel:a,statusTone:l,onModeChange:s,openPalette:i,openCommandPalette:r,onTileAll:o,onSplitFront:c,onCascade:d,onExpandFront:u,onRestoreFront:h}){return(0,n.jsxs)("header",{className:"header",children:[(0,n.jsxs)("div",{className:"hd-brand",children:[(0,n.jsx)("img",{className:"hd-logo",src:"/assets/keiko-logo.svg",alt:""}),(0,n.jsx)("span",{className:"hd-wordmark",children:"Keiko"})]}),(0,n.jsx)("div",{className:"tb-tabs",children:(0,n.jsx)("div",{className:"tb-tab","data-active":"true",title:t,children:(0,n.jsx)("span",{children:t})})}),(0,n.jsx)("span",{className:"spacer"}),(0,n.jsxs)("div",{className:"hd-tools",children:[(0,n.jsxs)("button",{type:"button",className:"hd-tool hd-tool-cta",onClick:i,title:"New window — press Ctrl/⌘K for all commands",children:[(0,n.jsx)(k.Icons.add,{size:16}),(0,n.jsx)("span",{children:"New"})]}),(0,n.jsx)("button",{type:"button",className:"hd-tool hd-tool-kbd",onClick:r,title:"Open the command palette (Ctrl/⌘K)","aria-label":"Open the command palette (Ctrl/⌘K)",children:(0,n.jsx)("span",{className:"kbd","aria-hidden":"true",children:"⌘K"})}),(0,n.jsx)("span",{className:"hd-div"}),(0,n.jsx)($,{project:t}),(0,n.jsx)("span",{className:"hd-div"}),(0,n.jsx)("button",{type:"button",className:"hd-tool",onClick:o,title:"Tile all windows","aria-label":"Tile all windows",children:(0,n.jsx)(k.Icons.tile,{size:16})}),(0,n.jsx)("button",{type:"button",className:"hd-tool",onClick:c,title:"Split front windows","aria-label":"Split front windows",children:(0,n.jsx)(k.Icons.split,{size:16})}),(0,n.jsx)("button",{type:"button",className:"hd-tool",onClick:d,title:"Cascade windows","aria-label":"Cascade windows",children:(0,n.jsx)(k.Icons.cascade,{size:16})})]}),(0,n.jsx)("span",{className:"hd-div"}),(0,n.jsx)(T,{mode:e,onChange:s}),(0,n.jsxs)("div",{className:"tb-status mono",role:"status",children:[(0,n.jsx)("span",{className:"dot","data-tone":l})," ",a]}),(0,n.jsx)("button",{type:"button",className:"tb-btn",onClick:u,title:"Expand the front window","aria-label":"Expand window",children:(0,n.jsx)(k.Icons.expand,{size:16})}),(0,n.jsx)("button",{type:"button",className:"tb-btn",onClick:h,title:"Restore the front window","aria-label":"Restore window",children:(0,n.jsx)(k.Icons.minimize,{size:16})})]})}var L=e.i(22016);let q=[{id:"keiko",icon:"spark",label:"Keiko",img:"/assets/keiko-logo.svg"},{id:"chatHistory",icon:"archive",label:"Chat History"},{id:"project",icon:"folder",label:"Project"},{id:"search",icon:"search",label:"Search"},{id:"plugins",icon:"plugins",label:"Plugins"}],P=[{id:"automations",icon:"automations",label:"Automations"},{id:"mobile",icon:"mobile",label:"Keiko Mobile"}];function M({tool:e,active:t,onClick:a}){let l=k.Icons[e.icon];return(0,n.jsx)("button",{type:"button",className:"rail-btn","data-active":t?"true":"false","data-side":"left","aria-label":e.label,"aria-pressed":t,"data-tip":e.label,onClick:a,children:void 0!==e.img?(0,n.jsx)("img",{className:"rail-img",src:e.img,alt:""}):(0,n.jsx)(l,{size:19})})}function D({openTools:e,onTool:t,onNewChat:a,theme:l,onToggleTheme:s}){return(0,n.jsxs)("nav",{className:"rail rail-left","aria-label":"Primary workspace navigation",children:[(0,n.jsx)("button",{type:"button",className:"rail-new",onClick:a,"data-side":"left","aria-label":"New chat","data-tip":"New chat",children:(0,n.jsx)(k.Icons.newChat,{size:18})}),(0,n.jsx)("div",{className:"rail-div"}),(0,n.jsx)("div",{className:"rail-group",children:q.map(a=>(0,n.jsx)(M,{tool:a,active:e.has(a.id),onClick:()=>t(a.id)},a.id))}),(0,n.jsx)("span",{className:"spacer"}),(0,n.jsxs)("div",{className:"rail-group",children:[P.map(a=>(0,n.jsx)(M,{tool:a,active:e.has(a.id),onClick:()=>t(a.id)},a.id)),(0,n.jsx)(L.default,{href:"/memoriaviva",className:"rail-btn","data-active":"false","data-side":"left","aria-label":"MemoriaViva","data-tip":"MemoriaViva",children:(0,n.jsx)(k.Icons.brain,{size:19})}),(0,n.jsx)("button",{type:"button",className:"rail-btn","data-side":"left","data-active":e.has("quality")?"true":"false","aria-label":"Quality Intelligence","aria-pressed":e.has("quality"),"data-tip":"Quality Intelligence",onClick:()=>t("quality"),children:(0,n.jsx)(k.Icons.check,{size:19})}),(0,n.jsx)("button",{type:"button",className:"rail-btn","data-side":"left","data-active":e.has("localKnowledge")?"true":"false","aria-label":"Local Knowledge","aria-pressed":e.has("localKnowledge"),"data-tip":"Local Knowledge",onClick:()=>t("localKnowledge"),children:(0,n.jsx)(k.Icons.localKnowledge,{size:19})}),(0,n.jsx)("button",{type:"button",className:"rail-btn","data-side":"left","data-active":e.has("relationships")?"true":"false","aria-label":"Relationships","aria-pressed":e.has("relationships"),"data-tip":"Relationships",onClick:()=>t("relationships"),children:(0,n.jsx)(k.Icons.branch,{size:19})})]}),(0,n.jsx)("div",{className:"rail-div"}),(0,n.jsx)("button",{type:"button",className:"rail-btn","data-side":"left","aria-label":"light"===l?"Dark mode":"Light mode","data-tip":"light"===l?"Dark mode":"Light mode",onClick:s,children:"light"===l?(0,n.jsx)(k.Icons.moon,{size:19}):(0,n.jsx)(k.Icons.sun,{size:19})}),(0,n.jsx)("button",{type:"button",className:"rail-btn","data-side":"left","data-active":e.has("settings")?"true":"false","aria-label":"Settings","aria-pressed":e.has("settings"),"data-tip":"Settings",onClick:()=>t("settings"),children:(0,n.jsx)(k.Icons.settings,{size:19})}),(0,n.jsx)("button",{type:"button",className:"rail-avatar","data-side":"left","aria-label":"Account","data-tip":"Account",onClick:()=>t("settings"),children:(0,n.jsx)(k.Icons.user,{size:15})})]})}let F=[{id:"inspector",label:"Inspector",icon:"layers"},{id:"activity",label:"Activity",icon:"activity"},{id:"notifications",label:"Notifications",icon:"bell"},{id:"resources",label:"Resources",icon:"cube"}];function z({openTools:e,onTool:t}){return(0,n.jsx)("aside",{className:"rail rail-right","aria-label":"Workspace utilities",children:(0,n.jsx)("div",{className:"rail-group",children:F.map(a=>{let l=k.Icons[a.icon];return(0,n.jsx)("button",{type:"button",className:"rail-btn","data-active":e.has(a.id),"data-side":"right","data-tip":a.label,"aria-label":a.label,"aria-pressed":e.has(a.id),onClick:()=>t(a.id),children:(0,n.jsx)(l,{size:19})},a.id)})})})}let O=`
4
- attribute vec2 aPos;
5
- void main(){ gl_Position = vec4(aPos, 0.0, 1.0); }
6
- `,K=`
7
- precision highp float;
8
- uniform vec2 uRes;
9
- uniform float uTime;
10
- uniform vec2 uMouse; // 0..1, y up
11
- uniform float uLight; // 1 = light theme, 0 = dark; WebGL default 0 keeps failure mode dark
12
- uniform vec2 uRip[4]; // ripple origins (0..1, y up)
13
- uniform float uRipT[4]; // seconds since each ripple fired (large = inactive)
14
-
15
- float hash(vec2 p){
16
- p = fract(p * vec2(123.34, 456.21));
17
- p += dot(p, p + 45.32);
18
- return fract(p.x * p.y);
19
- }
20
- float vnoise(vec2 p){
21
- vec2 i = floor(p), f = fract(p);
22
- vec2 u = f * f * (3.0 - 2.0 * f);
23
- float a = hash(i), b = hash(i + vec2(1.,0.));
24
- float c = hash(i + vec2(0.,1.)), d = hash(i + vec2(1.,1.));
25
- return mix(mix(a,b,u.x), mix(c,d,u.x), u.y);
26
- }
27
- float fbm(vec2 p){
28
- float v = 0.0, a = 0.5;
29
- mat2 m = mat2(1.6, 1.2, -1.2, 1.6);
30
- for(int i = 0; i < 5; i++){ v += a * vnoise(p); p = m * p; a *= 0.5; }
31
- return v;
32
- }
33
-
34
- void main(){
35
- vec2 uv = gl_FragCoord.xy / uRes.xy;
36
- float aspect = uRes.x / uRes.y;
37
- vec2 p = vec2(uv.x * aspect, uv.y);
38
- vec2 m = vec2(uMouse.x * aspect, uMouse.y);
39
-
40
- float t = uTime * 0.06;
41
-
42
- // --- click ripples ---------------------------------------------------
43
- float rip = 0.0;
44
- for(int i = 0; i < 4; i++){
45
- float age = uRipT[i];
46
- if(age < 2.4){
47
- vec2 rc = vec2(uRip[i].x * aspect, uRip[i].y);
48
- float d = distance(p, rc);
49
- float ring = sin(d * 15.0 - age * 9.0);
50
- float env = exp(-d * 3.6) * exp(-age * 2.1);
51
- rip += ring * env;
52
- }
53
- }
54
-
55
- // --- liquid domain warp ---------------------------------------------
56
- vec2 warp = vec2(
57
- fbm(p * 2.1 + vec2(0.0, t)),
58
- fbm(p * 2.1 + vec2(t, 4.7))
59
- );
60
- // mouse bends the flow toward the cursor
61
- vec2 toM = m - p;
62
- float md = exp(-length(toM) * 2.2);
63
- warp += toM * md * 0.28;
64
- warp += rip * 0.07;
65
-
66
- float f = fbm(p * 2.4 + warp * 1.7 + vec2(t * 0.6, 0.0));
67
-
68
- // --- chrome banding (sharp metallic streaks) ------------------------
69
- float bands = abs(sin((f * 4.0 + warp.x * 2.0) * 3.14159 + t * 1.4));
70
- float chrome = pow(bands, 2.6);
71
-
72
- // --- palette (brand) -------------------------------------------------
73
- vec3 baseD = vec3(0.072, 0.085, 0.079); // warm near-black ~ --bg
74
- vec3 metalD = vec3(0.205, 0.230, 0.216); // chrome mid grey
75
- vec3 baseL = vec3(0.930, 0.942, 0.935); // near-white
76
- vec3 metalL = vec3(0.795, 0.835, 0.812); // soft grey
77
- vec3 green = vec3(0.306, 0.729, 0.529); // #4EBA87
78
-
79
- vec3 base = mix(baseD, baseL, uLight);
80
- vec3 metal = mix(metalD, metalL, uLight);
81
-
82
- vec3 col = mix(base, metal, chrome * 0.85);
83
-
84
- // orca-green sheen on the brightest specular ridges
85
- float spec = smoothstep(0.80, 1.0, bands);
86
- col += green * spec * mix(0.16, 0.085, uLight);
87
-
88
- // soft green glow trailing the cursor — fun to fidget with
89
- col += green * md * 0.085;
90
-
91
- // ripple highlight
92
- vec3 ripCol = mix(vec3(1.0), green, uLight);
93
- col += ripCol * max(rip, 0.0) * 0.032;
94
-
95
- // keep it dezent — pull back toward base
96
- col = mix(base, col, 0.84);
97
-
98
- gl_FragColor = vec4(col, 1.0);
99
- }
100
- `;function _(e,t,n){let a=e.createShader(t);return null===a?null:(e.shaderSource(a,n),e.compileShader(a),e.getShaderParameter(a,e.COMPILE_STATUS))?a:(e.deleteShader(a),null)}function B(){let e=window.localStorage.getItem("keiko.wallpaper.opacity");if(null===e)return 1;let t=Number.parseInt(e,10);return Number.isFinite(t)?Math.max(0,Math.min(100,t))/100:1}function U(){let e=(0,a.useRef)(null);return(0,a.useEffect)(()=>{let t,n=e.current;if(null===n)return;let a=n.parentElement;if(null===a)return;let l=window.matchMedia("(prefers-reduced-motion: reduce)"),s=()=>{l.matches?(t?.(),t=void 0):void 0===t&&(t=function(e,t){t.style.opacity=String(B());let n=e=>{let n=e.detail,a="number"==typeof n?n:100*B();t.style.opacity=String(Math.max(0,Math.min(100,a))/100)};window.addEventListener("keiko:wallpaper-opacity",n);let a=null;try{a=t.getContext("webgl",{antialias:!1,alpha:!1,premultipliedAlpha:!1,depth:!1})}catch{a=null}if(null===a)return()=>{window.removeEventListener("keiko:wallpaper-opacity",n)};let l=_(a,a.VERTEX_SHADER,O),s=_(a,a.FRAGMENT_SHADER,K);if(null===l||null===s)return()=>{window.removeEventListener("keiko:wallpaper-opacity",n)};let i=a.createProgram();if(null===i||(a.attachShader(i,l),a.attachShader(i,s),a.linkProgram(i),!a.getProgramParameter(i,a.LINK_STATUS)))return()=>{window.removeEventListener("keiko:wallpaper-opacity",n)};a.useProgram(i);let r=a.createBuffer();a.bindBuffer(a.ARRAY_BUFFER,r),a.bufferData(a.ARRAY_BUFFER,new Float32Array([-1,-1,3,-1,-1,3]),a.STATIC_DRAW);let o=a.getAttribLocation(i,"aPos");a.enableVertexAttribArray(o),a.vertexAttribPointer(o,2,a.FLOAT,!1,0,0);let c=a.getUniformLocation(i,"uRes"),d=a.getUniformLocation(i,"uTime"),u=a.getUniformLocation(i,"uMouse"),h=a.getUniformLocation(i,"uLight"),p=a.getUniformLocation(i,"uRip"),m=a.getUniformLocation(i,"uRipT"),f=1,g=1,v=Math.min(window.devicePixelRatio??1,1.5),x={tx:.5,ty:.5,x:.5,y:.5},b=new Float32Array(8),y=[,,,,].fill(-1/0),j=0;function w(){let n=e.getBoundingClientRect();f=Math.max(1,Math.round(n.width)),g=Math.max(1,Math.round(n.height)),t.width=Math.round(f*v),t.height=Math.round(g*v),t.style.width=`${String(f)}px`,t.style.height=`${String(g)}px`,null!==a&&a.viewport(0,0,t.width,t.height)}w();let k="u">typeof ResizeObserver?new ResizeObserver(w):null;null!==k?k.observe(e):window.addEventListener("resize",w);let N=t=>{let n=e.getBoundingClientRect();x.tx=(t.clientX-n.left)/Math.max(1,n.width),x.ty=1-(t.clientY-n.top)/Math.max(1,n.height)},S=t=>{let n=e.getBoundingClientRect(),a=(t.clientX-n.left)/Math.max(1,n.width),l=1-(t.clientY-n.top)/Math.max(1,n.height);a<0||a>1||l<0||l>1||(b[2*j]=a,b[2*j+1]=l,y[j]=performance.now(),j=(j+1)%4)};e.addEventListener("pointermove",N),e.addEventListener("pointerdown",S);let C=performance.now(),I=0,E=!0,R=new Float32Array(4);function $(){if(!E)return;let e=performance.now();x.x+=(x.tx-x.x)*.06,x.y+=(x.ty-x.y)*.06;for(let t=0;t<4;t++)R[t]=(e-(y[t]??-1/0))/1e3;let n=+("light"===document.documentElement.dataset.theme);null!==a&&(a.uniform2f(c,t.width,t.height),a.uniform1f(d,(e-C)/1e3),a.uniform2f(u,x.x,x.y),a.uniform1f(h,n),a.uniform2fv(p,b),a.uniform1fv(m,R),a.drawArrays(a.TRIANGLES,0,3)),I=requestAnimationFrame($)}I=requestAnimationFrame($);let T=()=>{document.hidden?(E=!1,cancelAnimationFrame(I)):E||(E=!0,I=requestAnimationFrame($))};return document.addEventListener("visibilitychange",T),()=>{E=!1,cancelAnimationFrame(I),document.removeEventListener("visibilitychange",T),window.removeEventListener("keiko:wallpaper-opacity",n),e.removeEventListener("pointermove",N),e.removeEventListener("pointerdown",S),null!==k?k.disconnect():window.removeEventListener("resize",w),null!==a&&(a.deleteBuffer(r),a.deleteProgram(i),a.deleteShader(l),a.deleteShader(s))}}(a,n))};return s(),l.addEventListener("change",s),()=>{l.removeEventListener("change",s),t?.()}},[]),(0,n.jsx)("canvas",{ref:e,className:"ws-shader","aria-hidden":"true"})}let W={agents:["files","terminal","plugins","review","browser","agents","keiko"],chat:["files","browser","plugins","keiko","connector"],files:["agents","chat","quality"],terminal:["agents"],plugins:["agents","chat"],review:["agents"],browser:["agents","chat"],keiko:["agents","chat"],connector:["chat","quality"],quality:["files","connector","figma"],figma:["quality"]};function H(e,t){return void 0!==e&&void 0!==t&&e!==t&&((W[e]??[]).includes(t)||(W[t]??[]).includes(e))}function G(e,t){let n="files"===e.type?e:"files"===t.type?t:null,a=null===n?null:n===e?t:e;if(null!==n&&null!==a&&("chat"===a.type||"agents"===a.type||"quality"===a.type)){let e=function(e){if(void 0===e)return null;let t=e.resolvedRoot;if("string"==typeof t&&t.length>0)return t;let n=e.root;return"string"==typeof n&&n.length>0?n:null}(n.cfg);return null===e?"no folder selected":`uses ${function(e,t){let n=e?.activeFilePath;if("string"==typeof n&&n.length>0)return n.split(/[/\\]/u).filter(Boolean).pop()??n;let a=e?.activeDirectoryPath;return"string"==typeof a&&a.length>0?`${a.split(/[/\\]/u).filter(Boolean).pop()??a}/`:`${t.split(/[/\\]/u).filter(Boolean).pop()??t}/`}(n.cfg,e)}`}let l=[e.type,t.type];return l.includes("connector")?"uses knowledge":l.includes("figma")?"uses snapshot":l.includes("keiko")?"governed by":"agents"===l[0]&&"agents"===l[1]?"delegates":l.includes("terminal")?"runs in":l.includes("plugins")?"uses tools":l.includes("review")?"reviews":l.includes("browser")?"browses":"connected"}function Y(e){return{left:{x:e.x,y:e.y,w:e.w/2,h:e.h},right:{x:e.x+e.w/2,y:e.y,w:e.w/2,h:e.h},maxi:{x:e.x,y:e.y,w:e.w,h:e.h},tl:{x:e.x,y:e.y,w:e.w/2,h:e.h/2},tr:{x:e.x+e.w/2,y:e.y,w:e.w/2,h:e.h/2},bl:{x:e.x,y:e.y+e.h/2,w:e.w/2,h:e.h/2},br:{x:e.x+e.w/2,y:e.y+e.h/2,w:e.w/2,h:e.h/2}}}let V=new Set(["files","connector","browser","plugins","agents","quality"]);function Q(e,t){return e>=4||t>=8192}function X({pathId:e,intensity:t}){let a="heavy"===t?3:1,l="heavy"===t?1.1:2.2;return(0,n.jsx)(n.Fragment,{children:Array.from({length:a},(s,i)=>(0,n.jsx)("circle",{className:"conn-particle",r:"heavy"===t?3:2.4,"aria-hidden":"true",children:(0,n.jsx)("animateMotion",{dur:`${String(l)}s`,repeatCount:"indefinite",begin:`${String(l/a*i)}s`,rotate:"auto",keyPoints:"0;1",keyTimes:"0;1",calcMode:"linear",children:(0,n.jsx)("mpath",{href:`#${e}`})})},i))})}function J({wins:e,conns:t,connecting:l,api:s}){let i=r(),o=function(){let[e,t]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let e=window.matchMedia("(prefers-reduced-motion: reduce)");t(e.matches);let n=e=>t(e.matches);return e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}(),{armedId:c,arm:d,disarm:u}=function(){let[e,t]=(0,a.useState)(null);return(0,a.useEffect)(()=>{if(null===e)return;let n=setTimeout(()=>t(null),3e3);return()=>clearTimeout(n)},[e]),{armedId:e,arm:e=>t(e),disarm:()=>t(null)}}(),{flowing:h,intensity:p}=function(e,t){let[n,l]=(0,a.useState)("light"),[s,i]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{if(void 0===t)return;l(function(e){switch(e.groundingKind){case"connected-context":return Q(e.contextPack.usage.filesRead,e.contextPack.usage.excerptBytes)?"heavy":"light";case"hybrid":return Q(e.contextPack.folder.usage.filesRead,e.contextPack.folder.usage.excerptBytes)||e.contextPack.knowledge.referencesUsed>=4?"heavy":"light";case"local-knowledge":return e.contextPack.referencesUsed>=4?"heavy":"light";default:return"light"}}(t)),i(!0);let e=setTimeout(()=>i(!1),2500);return()=>clearTimeout(e)},[t]),{flowing:e||s,intensity:n}}(i?.sending===!0,i?.latestGrounded),m=function(e,t){let n=new Map(e.map(e=>[e.id,e])),a=[];for(let e of t){let t=n.get(e.a),l=n.get(e.b);if(void 0===t||void 0===l)continue;let s=function(e,t){let n,a,l,s,i={x:e.x+e.w/2,y:e.y+e.h/2},r={x:t.x+t.w/2,y:t.y+t.h/2},o=r.x-i.x,c=r.y-i.y;if(Math.abs(o)>=Math.abs(c)){n=o>=0?{x:e.x+e.w,y:i.y}:{x:e.x,y:i.y};let c=Math.max(40,Math.abs((a=o>=0?{x:t.x,y:r.y}:{x:t.x+t.w,y:r.y}).x-n.x)/2),d=o>=0?1:-1;l={x:n.x+d*c,y:n.y},s={x:a.x-d*c,y:a.y}}else{n=c>=0?{x:i.x,y:e.y+e.h}:{x:i.x,y:e.y};let o=Math.max(40,Math.abs((a=c>=0?{x:r.x,y:t.y}:{x:r.x,y:t.y+t.h}).y-n.y)/2),d=c>=0?1:-1;l={x:n.x,y:n.y+d*o},s={x:a.x,y:a.y-d*o}}let d={x:(n.x+3*l.x+3*s.x+a.x)/8,y:(n.y+3*l.y+3*s.y+a.y)/8};return{d:`M${String(n.x)},${String(n.y)} C${String(l.x)},${String(l.y)} ${String(s.x)},${String(s.y)} ${String(a.x)},${String(a.y)}`,mid:d}}(t,l);a.push({c:e,d:s.d,mid:s.mid,label:G(t,l),dataChannel:function(e,t){let n=[e.type,t.type].includes("chat"),a="chat"===e.type?V.has(t.type):V.has(e.type);return n&&a}(t,l)})}return a}(e,t),f=null!==l?function(e,t){let n=t.find(t=>t.id===e.from);if(void 0===n)return null;let a={x:n.x+n.w/2,y:n.y+n.h/2},l=e.x-a.x,s=e.y-a.y,i=Math.abs(l)>=Math.abs(s),r=i?{x:l>=0?n.x+n.w:n.x,y:a.y}:{x:a.x,y:s>=0?n.y+n.h:n.y},o=Math.max(40,Math.abs(i?l:s)/2),c=i?{x:r.x+(l>=0?o:-o),y:r.y}:{x:r.x,y:r.y+(s>=0?o:-o)},d=e.x,u=e.y;return{d:`M${String(r.x)},${String(r.y)} C${String(c.x)},${String(c.y)} ${String(d)},${String(u)} ${String(d)},${String(u)}`,ex:d,ey:u}}(l,e):null;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"conn-layer",children:(0,n.jsxs)("svg",{className:"conn-svg",viewBox:"-10000 -10000 20000 20000",preserveAspectRatio:"xMidYMid meet",children:[m.map(e=>{let t=h&&e.dataChannel,a=`conn-path-${e.c.id}`;return(0,n.jsxs)("g",{children:[(0,n.jsx)("path",{id:a,className:"conn-path",d:e.d,"data-active":t?"true":void 0,"data-intensity":t?p:void 0,"data-reduced-motion":t&&o?"true":void 0}),t&&!o?(0,n.jsx)(X,{pathId:a,intensity:p}):null]},e.c.id)}),null!==f?(0,n.jsx)("path",{className:"conn-path conn-temp",d:f.d}):null,null!==f?(0,n.jsx)("circle",{className:"conn-dot",cx:f.ex,cy:f.ey,r:"5"}):null]})}),(0,n.jsx)("div",{className:"conn-badge-layer",children:m.map(e=>{let t,a=h&&e.dataChannel,l=c===e.c.id,i=(t=[`Connection: ${e.label}`],void 0!==e.c.boundRoot&&t.push(`Root: ${e.c.boundRoot}`),void 0!==e.c.boundScopeKind&&t.push(`Scope: ${e.c.boundScopeKind}`),void 0!==e.c.boundRelativePath&&e.c.boundRelativePath.length>0&&t.push(`Path: ${e.c.boundRelativePath}`),void 0!==e.c.boundConnectorKind&&void 0!==e.c.boundConnectorId&&t.push(`Knowledge: ${e.c.boundConnectorKind} ${e.c.boundConnectorId}`),t.join("\n"));return(0,n.jsxs)("button",{type:"button",className:"conn-badge","data-active":a?"true":void 0,"data-intensity":a?p:void 0,"data-armed":l?"true":void 0,style:{left:e.mid.x,top:e.mid.y},onClick:()=>{l?(u(),s.removeConn(e.c.id)):d(e.c.id)},onBlur:()=>{l&&u()},title:l?`Click again to remove: ${e.label}
101
-
102
- ${i}`:`${i}
103
-
104
- Click once to arm removal.`,"aria-label":l?`Confirm removal of connection: ${e.label}. Activate again to remove.`:a?`${e.label} — ${p} data exchange in progress. Activate to remove connection.`:`Remove connection: ${e.label}`,children:[(0,n.jsx)(k.Icons.git,{size:11})," ",(0,n.jsx)("span",{children:l?"Remove?":e.label}),a&&!l?(0,n.jsx)("span",{className:"conn-flow-tag","aria-hidden":"true",children:"heavy"===p?"⇶":"→"}):null]},e.c.id)})})]})}let Z={w:150,h:110},ee={w:290,h:190},et={chat:{title:"Chat",icon:"newChat",accent:!0,desc:"Talk to Keiko",w:480,h:480,min:{w:300,h:260},config:[{key:"title",label:"Title",type:"text",def:"New chat",optional:!0,placeholder:"Name this conversation"}]},chatHistory:{title:"Chat History",icon:"archive",desc:"Manage conversations",w:380,h:560,min:{w:300,h:320},tiny:{w:260,h:220},tool:!0,singleton:!0},files:{title:"Files",icon:"files",accent:!0,desc:"Browse a folder",w:290,h:340,tiny:{w:200,h:150},config:[{key:"root",label:"Folder",type:"directory",def:""}]},editor:{title:"Editor",icon:"editor",desc:"Edit a text file",w:480,h:360,config:[{key:"file",label:"File path",type:"text",def:"",optional:!0,placeholder:"src/app.ts"},{key:"root",label:"Root",type:"directory",def:"",optional:!0}]},browser:{title:"Browser",icon:"browser",desc:"Open a URL",w:460,h:340,config:[{key:"url",label:"URL",type:"text",def:"",optional:!0,placeholder:"https://…"}]},terminal:{title:"Terminal",icon:"terminal",accent:!0,desc:"Run commands",w:460,h:250,tiny:{w:250,h:140},config:[{key:"projectPath",label:"Project path",type:"text",def:""},{key:"cwd",label:"Working directory",type:"directory",def:""}]},review:{title:"Review",icon:"review",desc:"Review a proposed diff",w:520,h:420,config:[{key:"runId",label:"Run ID",type:"text",def:"",optional:!0,placeholder:"e.g. r-2026-06-01-…"}]},agents:{title:"Agents",icon:"agents",desc:"Run a BFF workflow",w:520,h:560,tiny:{w:250,h:140},cta:"Start agent",config:[]},integ:{title:"Integrations",icon:"plugins",desc:"Connect apps",w:320,h:300,config:[{key:"provider",label:"Provider",type:"select",options:["GitHub","Linear","Slack","Sentry"],def:"GitHub"}]},keiko:{title:"Keiko",icon:"spark",desc:"Keiko twin",w:344,h:520,tool:!0,singleton:!0},settings:{title:"Settings",icon:"settings",desc:"Preferences",w:470,h:560,tool:!0,singleton:!0},project:{title:"Project",icon:"folder",desc:"Project tree",w:304,h:440,tool:!0,singleton:!0},search:{title:"Search",icon:"search",desc:"Search the workspace",w:320,h:500,tool:!0,singleton:!0},plugins:{title:"Plugins",icon:"plugins",desc:"Plugins & tools",w:320,h:470,tool:!0,singleton:!0},automations:{title:"Automations",icon:"automations",desc:"Workflow automations",w:320,h:300,tool:!0,singleton:!0},mobile:{title:"Keiko Mobile",icon:"mobile",desc:"Mobile companion",w:300,h:380,tool:!0,singleton:!0},inspector:{title:"Inspector",icon:"layers",desc:"Inspect the workspace",w:290,h:440,tool:!0,singleton:!0},activity:{title:"Activity",icon:"activity",desc:"Activity timeline",w:322,h:460,tool:!0,singleton:!0},notifications:{title:"Notifications",icon:"bell",desc:"Review alerts & updates",w:300,h:360,tool:!0,singleton:!0},resources:{title:"Resources",icon:"cube",desc:"System resources",w:300,h:320,tool:!0,singleton:!0},connector:{title:"Knowledge Connector",icon:"server",accent:!0,desc:"Pick a Local Knowledge connector",w:320,h:380,min:{w:220,h:180},config:[],cta:"Select connector"},localKnowledge:{title:"Local Knowledge",icon:"localKnowledge",accent:!0,desc:"Manage knowledge capsules",w:720,h:560,min:{w:360,h:320},tiny:{w:300,h:220},tool:!0,singleton:!0},quality:{title:"Quality Intelligence",icon:"check",accent:!0,desc:"Design & review test cases",w:384,h:580,min:{w:300,h:320},tiny:{w:260,h:200},tool:!0,singleton:!0},qiRun:{title:"QI Run",icon:"check",desc:"Generated test cases",w:760,h:660,min:{w:320,h:280},tiny:{w:280,h:200},config:[{key:"runId",label:"Run ID",type:"text",def:""}]},relationships:{title:"Relationships",icon:"branch",accent:!0,desc:"Inspect the relationship graph",w:760,h:600,min:{w:360,h:320},tiny:{w:300,h:220},tool:!0,singleton:!0},figma:{title:"Figma Snapshot",icon:"layers",accent:!0,desc:"Capture a Figma board snapshot",w:420,h:540,min:{w:320,h:360},tiny:{w:280,h:240}}},en=new Map;function ea(e,t){en.set(e,t)}let el=(t={},Object.keys(et).forEach(e=>{var n;let a,l;t[e]=(a={title:(n=et[e]).title,icon:n.icon,desc:n.desc,w:n.w,h:n.h,min:n.min??Z,tiny:n.tiny??ee,render:(t,n)=>{let a=en.get(e);return void 0!==a?a(t,n):null}},l={},!0===n.accent&&(l.accent=!0),!0===n.tool&&(l.tool=!0),!0===n.singleton&&(l.singleton=!0),void 0!==n.config&&(l.config=n.config),void 0!==n.cta&&(l.cta=n.cta),{...a,...l})}),t),es=["n","s","e","w","ne","nw","se","sw"],ei=["t","r","b","l"];function er({icon:e,label:t}){let a=k.Icons[e];return(0,n.jsxs)("div",{className:"too-small",children:[(0,n.jsx)("div",{className:"ts-ico",children:(0,n.jsx)(a,{size:28})}),(0,n.jsxs)("div",{className:"ts-title",children:["Too small to show ",t]}),(0,n.jsx)("div",{className:"ts-sub",children:"Enlarge the window or zoom its content out"}),(0,n.jsx)("div",{className:"ts-arrow","aria-hidden":"true",children:(0,n.jsx)("svg",{width:"22",height:"22",viewBox:"0 0 22 22",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M8 8l8 8M16 11v5h-5"})})})]})}function eo({win:e,top:t,connState:l,view:s,api:i,wsRef:r}){var o;let c=el[e.type],d=void 0!==(o=e.type)&&((W[o]??[]).length>0||Object.values(W).some(e=>e.includes(o))),u=k.Icons[c.icon],h=e.zoom??1,p="chat"===e.type||"agents"===e.type||"quality"===e.type?i.linkedFilesRoot(e.id):null,m="agents"===e.type||"quality"===e.type?i.linkedFilesContext(e.id)?.activeFilePath:void 0,f="quality"===e.type?i.linkedAllFilesRoots(e.id):null!==p?[p]:[],g="quality"===e.type?i.linkedConnectorCapsuleIds(e.id):[],v="quality"===e.type?i.linkedConnectorCapsuleSetIds(e.id):[],x="quality"===e.type?i.linkedFigmaSnapshotRunIds(e.id):[],b=e.w/h,y=e.h/h,j=(0,a.useCallback)(t=>{i.update(e.id,{cfg:{...e.cfg,...t}})},[i,e.cfg,e.id]),w=(0,a.useCallback)((e,t)=>i.add(e,t),[i]),{mode:N,node:S}=function(e,t,a,l,s,i,r,o,c,d,u,h){let p=el[e];if("chat"===e){let e=t<430||a<430;return{mode:e?"mini":"full",node:p.render(l,{mini:e,linkedRoot:s,linkedFilePath:i,linkedRoots:r,linkedCapsuleIds:o,linkedCapsuleSetIds:c,linkedFigmaSnapshotRunIds:d,updateCfg:u,openWindow:h})}}return t<p.tiny.w||a<p.tiny.h?{mode:"tiny",node:(0,n.jsx)(er,{icon:p.icon,label:p.title})}:{mode:"full",node:p.render(l,{linkedRoot:s,linkedFilePath:i,linkedRoots:r,linkedCapsuleIds:o,linkedCapsuleSetIds:c,linkedFigmaSnapshotRunIds:d,updateCfg:u,openWindow:h})}}(e.type,b,y,e.cfg,p,m,f,g,v,x,j,w),C=(0,a.useCallback)(t=>i.update(e.id,{zoom:Math.max(.5,Math.min(2,Math.round(10*t)/10))}),[i,e.id]),I=(0,a.useCallback)(t=>{var n,a;let o,c,d,u;if(0!==t.button||"valid"===l)return;t.preventDefault(),i.focus(e.id);let h=r.current;if(null===h)return;let p=(n=h.getBoundingClientRect(),{z:o=s.zoom,vpx0:-s.x/o,vpy0:-s.y/o,vpw:n.width/o,vph:n.height/o,toWX:e=>(e-n.left-s.x)/o,toWY:e=>(e-n.top-s.y)/o}),m=e.max,f=m?e.prev?.w??480:e.w,g=m?e.prev?.h??360:e.h,v=m?f/2:p.toWX(t.clientX)-e.x,x=m?18:p.toWY(t.clientY)-e.y;m&&i.update(e.id,{max:!1,w:f,h:g}),a={winId:e.id,offX:v,offY:x,W:f},c=30/p.z,d=e=>{let t,n,l,s,r=p.toWX(e.clientX),o=p.toWY(e.clientY),d=r-a.offX,u=o-a.offY;d=Math.max(p.vpx0-(a.W-120),Math.min(p.vpx0+p.vpw-120,d)),u=Math.max(p.vpy0,Math.min(p.vpy0+p.vph-38,u)),i.setSnap((t=r-p.vpx0<c,n=p.vpx0+p.vpw-r<c,l=o-p.vpy0<c,s=p.vpy0+p.vph-o<c,l&&t?"tl":l&&n?"tr":s&&t?"bl":s&&n?"br":t?"left":n?"right":l?"maxi":null)),i.update(a.winId,{x:d,y:u})},u=()=>{window.removeEventListener("pointermove",d),window.removeEventListener("pointerup",u),i.commitSnap(a.winId),document.body.style.cursor=""},document.body.style.cursor="grabbing",window.addEventListener("pointermove",d),window.addEventListener("pointerup",u)},[i,e.id,e.x,e.y,e.w,e.h,e.max,e.prev,s,r,l]),E=(0,a.useCallback)(t=>n=>{n.preventDefault(),n.stopPropagation(),i.focus(e.id);let a={x:e.x,y:e.y,w:e.w,h:e.h},l=n.clientX,r=n.clientY,o=s.zoom,c=n=>{let s=function(e,t,n,a,l){let{x:s,y:i,w:r,h:o}=e;t.includes("e")&&(r=e.w+n),t.includes("s")&&(o=e.h+a),t.includes("w")&&(r=e.w-n,s=e.x+n),t.includes("n")&&(o=e.h-a,i=e.y+a);let c=el[l].min,d=c.w>0?c.w:240,u=c.h>0?c.h:150;return r<d&&(t.includes("w")&&(s-=d-r),r=d),o<u&&(t.includes("n")&&(i-=u-o),o=u),{x:s,y:i,w:r,h:o}}(a,t,(n.clientX-l)/o,(n.clientY-r)/o,e.type);i.update(e.id,{...s,max:!1})},d=()=>{window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",d),document.body.style.cursor=""};document.body.style.cursor="n"===t||"s"===t?"ns-resize":"e"===t||"w"===t?"ew-resize":"ne"===t||"sw"===t?"nesw-resize":"nwse-resize",window.addEventListener("pointermove",c),window.addEventListener("pointerup",d)},[i,e.id,e.x,e.y,e.w,e.h,e.type,s.zoom]),R=(0,a.useCallback)((t,n)=>{let a=t.getBoundingClientRect();i.startConnect(e.id,{clientX:"clientX"in n?n.clientX:a.left+a.width/2,clientY:"clientY"in n?n.clientY:a.top+a.height/2,preventDefault:()=>n.preventDefault(),stopPropagation:()=>n.stopPropagation()})},[i,e.id]),$=(0,a.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),R(e.currentTarget,e)},[R]),T=(0,a.useCallback)(t=>{if("Enter"===t.key||" "===t.key||"Spacebar"===t.key){if("valid"===l)return void i.confirmConnect(e.id,{preventDefault:()=>t.preventDefault(),stopPropagation:()=>t.stopPropagation()});t.preventDefault(),t.stopPropagation(),R(t.currentTarget,t)}},[R,l,i,e.id]),A=(0,a.useCallback)(()=>{i.close(e.id),requestAnimationFrame(()=>{let e=document.querySelector('.window[data-top="true"]')??document.querySelector(".ws-fab");e?.focus({preventScroll:!0})})},[i,e.id]),L="full"===N?function(e,t){if(void 0===t)return null;let n=e=>{let n=t[e];return"string"==typeof n&&n.length>0?n:null};switch(e){case"files":return n("root");case"browser":return n("url");case"editor":return n("file");case"terminal":return n("cwd");case"review":{let e=n("base"),t=n("head");return null!==e&&null!==t?`${e} → ${t}`:null}case"agents":return n("role");case"chat":{let e=n("title");return null!==e&&"New chat"!==e?e:null}default:return null}}(e.type,e.cfg):null,q={left:e.x,top:e.y,width:e.w,height:e.h,zIndex:e.z};return(0,n.jsxs)("section",{className:"window","aria-label":null!==L?`${c.title} — ${L}`:c.title,"aria-roledescription":"window","data-top":t?"true":"false","data-max":e.max?"true":"false","data-conn":l??void 0,"data-window-id":e.id,style:q,tabIndex:-1,onPointerDown:t=>{"valid"===l&&i.confirmConnect(e.id,t),i.focus(e.id)},onFocusCapture:()=>{t||i.focus(e.id)},children:[(0,n.jsxs)("header",{className:"win-head",onPointerDown:I,onDoubleClick:()=>i.maximize(e.id),children:[(0,n.jsx)("span",{className:"win-ico",style:{color:!0===c.accent?"var(--accent)":"var(--fg-muted)"},children:(0,n.jsx)(u,{size:14})}),(0,n.jsx)("span",{className:"win-title",children:c.title}),null!==L?(0,n.jsx)("span",{className:"win-sub mono",title:L,children:L}):null,(0,n.jsx)("span",{className:"spacer"}),(0,n.jsxs)("div",{className:"win-zoom",children:[(0,n.jsx)("button",{type:"button",className:"win-zbtn",title:"Zoom content out","aria-label":`Zoom ${c.title} content out`,disabled:h<=.5,onPointerDown:e=>e.stopPropagation(),onClick:()=>C(h-.1),children:(0,n.jsx)(k.Icons.zoomOut,{size:13})}),(0,n.jsxs)("button",{type:"button",className:"win-zpct",title:"Reset content zoom to 100%","aria-label":`${String(Math.round(100*h))}% — reset ${c.title} content zoom`,onPointerDown:e=>e.stopPropagation(),onClick:()=>i.update(e.id,{zoom:1}),children:[Math.round(100*h),"%"]}),(0,n.jsx)("button",{type:"button",className:"win-zbtn",title:"Zoom content in","aria-label":`Zoom ${c.title} content in`,disabled:h>=2,onPointerDown:e=>e.stopPropagation(),onClick:()=>C(h+.1),children:(0,n.jsx)(k.Icons.zoomIn,{size:13})})]}),(0,n.jsx)("button",{type:"button",className:"win-btn",title:e.max?"Restore":"Maximize","aria-label":e.max?`Restore ${c.title} window`:`Maximize ${c.title} window`,onPointerDown:e=>e.stopPropagation(),onClick:()=>i.maximize(e.id),children:e.max?(0,n.jsx)(k.Icons.restore,{size:13}):(0,n.jsx)(k.Icons.maximize,{size:13})}),(0,n.jsx)("button",{type:"button",className:"win-btn win-close",title:"Close","aria-label":`Close ${c.title} window`,onPointerDown:e=>e.stopPropagation(),onClick:A,children:(0,n.jsx)(k.Icons.close,{size:14})})]}),(0,n.jsx)("div",{className:"win-body","data-mode":N,style:"tiny"===N?{}:{zoom:h},children:S}),e.max?null:es.map(e=>(0,n.jsx)("div",{className:`wz wz-${e}`,onPointerDown:E(e)},e)),!e.max&&d?ei.map(e=>(0,n.jsx)("div",{className:`win-port wp-${e}`,title:"Click to connect to another window","aria-label":`Connect ${c.title} from ${"t"===e?"top":"r"===e?"right":"b"===e?"bottom":"left"} edge`,role:"button",tabIndex:0,onPointerDown:$,onKeyDown:T},`p${e}`)):null]})}let ec=[/\bsk-[A-Za-z0-9_-]{20,}\b/,/\bAKIA[0-9A-Z]{16}\b/,/\bgh[pousr]_[A-Za-z0-9]{36,}\b/,/\bxox[abporsu]-[A-Za-z0-9-]{10,}\b/,/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\b/,/-----BEGIN [A-Z ]*PRIVATE KEY-----/],ed=/\b(?:\d[ -]?){13,19}\b/g;e.i(47167);let eu={chat:{lifecycle:["draft","streaming","final","archived"],trustBoundary:["ui","model","evidence"],authority:"user-confirm",persistence:"durable.ui"},chatHistory:{lifecycle:["live","archived"],trustBoundary:["ui"],authority:"user-confirm",persistence:"durable.ui"},files:{lifecycle:["connecting","connected","degraded","disconnected","error"],trustBoundary:["ui","fs"],authority:"user",persistence:"fs-reference"},connector:{lifecycle:["connecting","connected","degraded","disconnected","error"],trustBoundary:["ui","fs"],authority:"user",persistence:"fs-reference"},localKnowledge:{lifecycle:["idle","connecting","connected","degraded","disconnected","error"],trustBoundary:["ui","fs","model"],authority:"user-confirm",persistence:"durable.ui"},editor:{lifecycle:["viewing","editing","unsaved","saved","error"],trustBoundary:["ui","fs"],authority:"user",persistence:"fs-reference"},browser:{lifecycle:["idle","live","error"],trustBoundary:["ui","network"],authority:"user-confirm",persistence:"transient"},terminal:{lifecycle:["idle","running","blocked","cancelled","error"],trustBoundary:["ui","tool"],authority:"user-confirm",persistence:"transient"},review:{lifecycle:["proposed","needs-review","applied","reverted","archived"],trustBoundary:["ui","evidence"],authority:"user-confirm",persistence:"evidence-reference"},agents:{lifecycle:["proposed","running","blocked","needs-review","verified","cancelled"],trustBoundary:["ui","model","tool","evidence"],authority:"user-confirm",persistence:"durable.ui"},integ:{lifecycle:["idle","connecting","connected","degraded","disconnected","error"],trustBoundary:["ui","network"],authority:"user-confirm",persistence:"durable.config"},keiko:{lifecycle:["live"],trustBoundary:["ui","memory"],authority:"user",persistence:"memory-reference"},settings:{lifecycle:["viewing","editing","saved"],trustBoundary:["ui"],authority:"user",persistence:"durable.config"},project:{lifecycle:["none","connecting","connected","disconnected"],trustBoundary:["ui","fs"],authority:"user",persistence:"durable.config"},search:{lifecycle:["idle","searching","results","error"],trustBoundary:["ui","fs"],authority:"read-only",persistence:"transient"},plugins:{lifecycle:["idle","installed","disabled","enabled"],trustBoundary:["ui"],authority:"user",persistence:"durable.config"},automations:{lifecycle:["idle","enabled","disabled"],trustBoundary:["ui"],authority:"user",persistence:"durable.config"},mobile:{lifecycle:["paired","unpaired","error"],trustBoundary:["ui","network"],authority:"user-confirm",persistence:"durable.config"},inspector:{lifecycle:["empty","focused"],trustBoundary:["ui"],authority:"ui-only",persistence:"transient"},activity:{lifecycle:["live","archived"],trustBoundary:["ui"],authority:"read-only",persistence:"transient"},notifications:{lifecycle:["unread","read","dismissed"],trustBoundary:["ui"],authority:"ui-only",persistence:"transient"},resources:{lifecycle:["live"],trustBoundary:["ui"],authority:"read-only",persistence:"transient"},quality:{lifecycle:["idle","running","results","error"],trustBoundary:["ui","model","evidence"],authority:"user-confirm",persistence:"evidence-reference"},qiRun:{lifecycle:["running","final","needs-review","verified","failed","cancelled"],trustBoundary:["ui","model","evidence"],authority:"user-confirm",persistence:"evidence-reference"},relationships:{lifecycle:["idle","live","degraded","blocked","error"],trustBoundary:["ui","evidence"],authority:"user-confirm",persistence:"durable.ui"},figma:{lifecycle:["idle","running","results","error"],trustBoundary:["ui","evidence","network"],authority:"user-confirm",persistence:"evidence-reference"}},eh=["apikey","accesskey","clientsecret","credential","password","privatekey","secret","token"],ep=["api_key=","apikey=","client_secret=","clientsecret=","credential=","authorization:","password=","secret=","token="],em=[".env",".env.local",".env.development",".env.test",".env.production"],ef={chat:["chatId"],files:["activeFilePath","activeDirectoryPath","resolvedRoot"]};function eg(e){return"number"==typeof e&&Number.isFinite(e)}function ev(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function ex(e){let t=e.trim();if(0===t.length)return!1;let n=t.toLowerCase();return function(e){for(let t of ec)if(t.test(e))return!0;for(let t of e.matchAll(ed)){let e=t[0].replaceAll(/[ -]/g,"");if(e.length>=13&&e.length<=19&&function(e){let t=0,n=!1;for(let a=e.length-1;a>=0;a-=1){let l=Number(e[a]);n&&(l*=2)>9&&(l-=9),t+=l,n=!n}return t%10==0}(e))return!0}return!1}(t)||function(e){let t="bearer ",n=e.toLowerCase().indexOf(t);if(-1===n)return!1;let a=0;for(let l=n+t.length;l<e.length&&0!==(e[l]??"").trim().length;l+=1)a+=1;return a>=8}(t)||function(e){if(!e.includes("://"))return!1;try{let t=new URL(e);return t.username.length>0||t.password.length>0}catch{return!1}}(t)||ep.some(e=>n.includes(e))||function(e){let t=e.toLowerCase().replaceAll("\\","/").split("/");for(let e=0;e<t.length;e+=1){let n=t[e]??"",a=t[e+1]??"";if(em.includes(n)||".npmrc"===n||"credentials.json"===n||".aws"===n&&"credentials"===a||".ssh"===n&&a.startsWith("id_"))return!0}return!1}(t)}function eb(e){let t=[];for(let n of e){let e=function(e){var t;if(!ev(e)||!("string"==typeof(t=e.type)&&t in el))return null;let n=e.type;if("transient"===eu[n].persistence||"string"!=typeof e.id||!eg(e.x)||!eg(e.y)||!eg(e.w)||!eg(e.h)||!eg(e.z)||"boolean"!=typeof e.max)return null;let a={id:e.id,type:n,x:e.x,y:e.y,w:e.w,h:e.h,z:e.z,cfg:function(e,t){if(!ev(t)||"durable.config"===eu[e].persistence)return{};let n=new Set([...(el[e].config??[]).map(e=>e.key),...ef[e]??[]]),a={};for(let[l,s]of Object.entries(t)){if(!n.has(l))continue;let t=function(e,t,n){let a;if("string"!=typeof n&&"number"!=typeof n&&"boolean"!=typeof n||(a=function(e){let t="";for(let n of e.toLowerCase())(n>="a"&&n<="z"||n>="0"&&n<="9")&&(t+=n);return t}(t),eh.some(e=>a.includes(e))))return;if("string"!=typeof n)return n;let l=eu[e].persistence;return"evidence-reference"===l?!function(e){if(0===e.length||e.length>256||e.startsWith(".")||e.trim()!==e||ex(e))return!1;for(let t of e)if(!function(e){let t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||46===t||95===t||45===t}(t))return!1;return!0}(n)?void 0:n:ex(n)?"durable.ui"===l?"[REDACTED]":void 0:n}(e,l,s);void 0!==t&&(a[l]=t)}return a}(n,e.cfg),max:e.max},l=function(e){if(ev(e)&&eg(e.x)&&eg(e.y)&&eg(e.w)&&eg(e.h))return{x:e.x,y:e.y,w:e.w,h:e.h}}(e.prev);return{...a,...void 0!==l?{prev:l}:{},...eg(e.zoom)?{zoom:e.zoom}:{}}}(n);null!==e&&t.push(e)}return t}function ey(e,t){let n=new Set(t.map(e=>e.id)),a=[];for(let t of e){if("string"!=typeof t.id||"string"!=typeof t.a||"string"!=typeof t.b||!n.has(t.a)||!n.has(t.b))continue;let e="string"==typeof t.boundRoot&&t.boundRoot.length>0,l="workspace-root"===t.boundScopeKind||"directory"===t.boundScopeKind||"files"===t.boundScopeKind,s="string"==typeof t.boundRelativePath&&t.boundRelativePath.length>0,i="string"==typeof t.boundChatWindowId&&t.boundChatWindowId.length>0&&n.has(t.boundChatWindowId),r=("capsule"===t.boundConnectorKind||"capsule-set"===t.boundConnectorKind)&&"string"==typeof t.boundConnectorId&&t.boundConnectorId.length>0;a.push({id:t.id,a:t.a,b:t.b,...i?{boundChatWindowId:t.boundChatWindowId}:{},...e?{boundRoot:t.boundRoot}:{},...l?{boundScopeKind:t.boundScopeKind}:{},...s?{boundRelativePath:t.boundRelativePath}:{},...r?{boundConnectorKind:t.boundConnectorKind,boundConnectorId:t.boundConnectorId}:{}})}return a}function ej(e,t,n,a,l){return{x:e.x+Math.max(16,Math.min(l+26*a,e.w-t-16)),y:e.y+Math.max(16,Math.min(l+26*a,e.h-n-16))}}function ew(e){let{prev:t,...n}=e;return n}function ek(e,t,n){return e.some(e=>e.a===t&&e.b===n||e.a===n&&e.b===t)}function eN(e,t){return e?.type==="chat"?e.id:t?.type==="chat"?t.id:null}function eS(e){return e.length>0&&(e.startsWith("/")||/^[A-Za-z]:[/\\]/u.test(e))}function eC(e){return/^[A-Za-z]:[/\\]?$/u.test(e)?e.replace(/\\/gu,"/"):e.replace(/\\/gu,"/").replace(/\/+$/u,"")}function eI(e){if("files"!==e.type)return null;let t=e.cfg.resolvedRoot,n=e.cfg.root,a="string"==typeof t&&t.length>0?t:"string"==typeof n&&n.length>0?n:null;return null!==a&&eS(a)?a:null}function eE(e){return e.replace(/\\/gu,"/").replace(/^\/+/u,"").replace(/\/+$/u,"")}function eR(e,t){return void 0!==e.root&&void 0!==t.root&&eC(e.root)===eC(t.root)&&e.kind===t.kind&&e.relativePaths.length===t.relativePaths.length&&e.relativePaths.every((e,n)=>eE(e)===eE(t.relativePaths[n]??""))}function e$(e,t,n){let a="files"===e.type?e:"files"===t.type?t:null,l="chat"===e.type?e:"chat"===t.type?t:null;if(null===a||null===l)return null;let s=eI(a);if(null===s)return null;let i=a.cfg.activeFilePath;if("string"==typeof i&&i.length>0)return{kind:"files",relativePaths:[eE(i)],root:eC(s),connectedAtMs:n};let r=a.cfg.activeDirectoryPath;return"string"==typeof r&&r.length>0?{kind:"directory",relativePaths:[eE(r)],root:eC(s),connectedAtMs:n}:{kind:"workspace-root",relativePaths:[],root:eC(s),connectedAtMs:n}}function eT(e){if("string"!=typeof e.boundRoot||0===e.boundRoot.length)return null;let t=Date.now();return"directory"===e.boundScopeKind?"string"!=typeof e.boundRelativePath||0===e.boundRelativePath.length?null:{kind:"directory",relativePaths:[eE(e.boundRelativePath)],root:eC(e.boundRoot),connectedAtMs:t}:"files"===e.boundScopeKind?"string"!=typeof e.boundRelativePath||0===e.boundRelativePath.length?null:{kind:"files",relativePaths:[eE(e.boundRelativePath)],root:eC(e.boundRoot),connectedAtMs:t}:{kind:"workspace-root",relativePaths:[],root:eC(e.boundRoot),connectedAtMs:t}}function eA(e){return Math.max(e.maxConnectedSources,e.maxLocalKnowledgeSources)}function eL(e,t){return e.filter(e=>!eR(e,t))}function eq(e){return e.connectedScopes??(void 0!==e.connectedScope?[e.connectedScope]:[])}function eP(e){return e.localKnowledgeScopes??(void 0!==e.localKnowledgeScope?[e.localKnowledgeScope]:[])}function eM(e){return"capsule"===e.kind?`capsule:${e.capsuleId}`:`set:${e.capsuleSetId}`}function eD(e){return"string"!=typeof e.boundConnectorId||0===e.boundConnectorId.length?null:"capsule"===e.boundConnectorKind?{kind:"capsule",capsuleId:e.boundConnectorId,connectedAtMs:0}:"capsule-set"===e.boundConnectorKind?{kind:"capsule-set",capsuleSetId:e.boundConnectorId,connectedAtMs:0}:null}function eF(e,t){let n="connector"===e.type?e:"connector"===t.type?t:null,a="chat"===e.type?e:"chat"===t.type?t:null;if(null===n||null===a)return null;let l=n.cfg.selectedKind,s=n.cfg.selectedId;return"string"!=typeof l||"string"!=typeof s||0===s.length?null:"capsule"===l?{kind:"capsule",capsuleId:s,connectedAtMs:Date.now()}:"capsule-set"===l?{kind:"capsule-set",capsuleSetId:s,connectedAtMs:Date.now()}:null}let ez="keiko.workspace.v4",eO="keiko.conns.v1",eK="keiko.view";function e_(){try{let e=window.localStorage.getItem(eK);if(null===e)return{zoom:1,x:0,y:0};let t=JSON.parse(e);if("object"==typeof t&&null!==t&&"zoom"in t&&"number"==typeof t.zoom)return{zoom:t.zoom,x:"number"==typeof t.x?t.x:0,y:"number"==typeof t.y?t.y:0}}catch{}return{zoom:1,x:0,y:0}}function eB(e){return Math.max(.3,Math.min(2.5,e))}function eU(e){return Math.max(.5,Math.min(2,Math.round(10*e)/10))}function eW(e){let t=e[0];for(let n=1;n<e.length;n++){let a=e[n];a.z>t.z&&(t=a)}return t}function eH(e,t){try{window.localStorage.setItem(e,JSON.stringify(t))}catch{}}let eG={Equal:"=",NumpadAdd:"+",Minus:"-",NumpadSubtract:"-",Digit0:"0",Numpad0:"0"},eY="application/x-keiko-local-knowledge-connector",eV="keiko:local-knowledge-connector-drop";function eQ(e){if(!Array.from(e.types).includes(eY))return null;try{let t=JSON.parse(e.getData(eY));if("object"!=typeof t||null===t||"capsule"!==t.kind||"string"!=typeof t.id||0===t.id.trim().length)return null;let n="string"==typeof t.label?t.label.trim():"",a="string"==typeof t.lifecycleState?t.lifecycleState.trim():"";return{kind:"capsule",id:t.id.trim(),...n.length>0?{label:n}:{},...a.length>0?{lifecycleState:a}:{}}}catch{return null}}let eX={w:260,h:220};function eJ(e,t){let n=e+t;return e<1&&n>1||e>1&&n<1?1:n}function eZ({wins:e,connecting:t,conns:l}){let[s,i]=(0,a.useState)(""),r=(0,a.useRef)(null),o=(0,a.useRef)(l.length);return(0,a.useEffect)(()=>{let n=r.current;r.current=t;let a=o.current;if(o.current=l.length,null===n&&null!==t){let n=e?.find(e=>e.id===t.from),a=void 0!==n?el[n.type].title:"window";i(`Connecting from ${a} — select a highlighted window, press Escape to cancel`);return}if(null!==n&&null===t)if(l.length>a){let t=l[l.length-1],n=void 0!==t?e?.find(e=>e.id===t.a):void 0,a=void 0!==t?e?.find(e=>e.id===t.b):void 0;i(void 0!==n&&void 0!==a?`Connected: ${G(n,a)}`:"Connected")}else i("Connection cancelled")},[t,l,e]),(0,n.jsx)("div",{className:"sr-only","aria-live":"polite",children:s})}function e0({ws:e,wsRef:t,openPalette:l,palette:s}){let{wins:i,view:r,snapPrev:o,conns:c,connecting:d,api:u}=e,h=function(e){if(null===e||0===e.length)return null;let t=e[0];for(let n=1;n<e.length;n++){let a=e[n];a.z>t.z&&(t=a)}return t}(i),p=null!==d&&null!==i?i.find(e=>e.id===d.from)??null:null,m=(0,a.useMemo)(()=>({backgroundSize:`${String(22*r.zoom)}px ${String(22*r.zoom)}px`,backgroundPosition:`${String(r.x)}px ${String(r.y)}px`}),[r]),f=(0,a.useMemo)(()=>({transform:`translate(${String(r.x)}px, ${String(r.y)}px)`,transformOrigin:"0 0",zoom:r.zoom}),[r]),g=(0,a.useCallback)((e,t,n,a)=>{let l=u.add("connector",{presentation:"node",selectedKind:e.kind,selectedId:e.id,...void 0!==e.label?{selectedLabel:e.label}:{},...void 0!==e.lifecycleState?{selectedState:e.lifecycleState}:{}});null!==l&&u.update(l,{...function({clientX:e,clientY:t,rect:n,view:a}){return{x:Math.round((e-n.left-a.x)/a.zoom-eX.w/2),y:Math.round((t-n.top-a.y)/a.zoom-28)}}({clientX:t,clientY:n,rect:a,view:r}),...eX})},[u,r]);(0,a.useEffect)(()=>{let e=e=>{if(!(e instanceof CustomEvent)||!function(e){if("object"!=typeof e||null===e)return!1;let t=e.payload;return"number"==typeof e.clientX&&"number"==typeof e.clientY&&"object"==typeof t&&null!==t&&"capsule"===t.kind&&"string"==typeof t.id}(e.detail))return;let n=t.current?.getBoundingClientRect();if(void 0===n)return;let{clientX:a,clientY:l,payload:s}=e.detail;a<n.left||a>n.right||l<n.top||l>n.bottom||g(s,a,l,n)};return window.addEventListener(eV,e),()=>{window.removeEventListener(eV,e)}},[g,t]);let v=null!==i&&0===i.length;return(0,n.jsxs)("main",{className:"workspace",ref:t,"aria-label":"Workspace surface","data-connecting":null!==d?"true":void 0,onPointerDownCapture:e=>{if(0!==e.button||null===d||null===p||null===i)return;let t=function(e){if(!(e instanceof Element))return;let t=e.closest(".window[data-window-id]");return t?.dataset.windowId}(e.target);if(void 0===t||t===p.id)return;let n=i.find(e=>e.id===t);void 0!==n&&H(p.type,n.type)&&u.confirmConnect(n.id,e)},onPointerDown:e=>{var t,n;if(0===e.button&&!((t=e.target)instanceof Element&&(null!==t.closest(".window")||null!==t.closest(".ws-zoom")||null!==t.closest(".ws-fab")||null!==t.closest(".ws-empty-btn")||null!==t.closest(".conn-badge")))){let t,a,l,s;if(null!==d)return void u.cancelConnect();n=u.panBy,t=e.clientX,a=e.clientY,document.body.style.cursor="grabbing",l=e=>{n(e.clientX-t,e.clientY-a),t=e.clientX,a=e.clientY},s=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",s),document.body.style.cursor=""},window.addEventListener("pointermove",l),window.addEventListener("pointerup",s)}},onDragOver:e=>{null!==eQ(e.dataTransfer)&&(e.preventDefault(),e.dataTransfer.dropEffect="copy")},onDrop:e=>{let t=eQ(e.dataTransfer);if(null===t)return;e.preventDefault(),e.stopPropagation();let n=e.currentTarget.getBoundingClientRect();g(t,e.clientX,e.clientY,n)},children:[(0,n.jsx)(U,{}),(0,n.jsx)("div",{className:"ws-grid",style:m,"aria-hidden":"true"}),(0,n.jsx)(eZ,{wins:i,connecting:d,conns:c}),null!==d?(0,n.jsx)("div",{className:"ws-connect-hint","aria-hidden":"true",children:"Click a highlighted window to connect — Esc to cancel"}):null,v?(0,n.jsxs)("div",{className:"ws-empty",children:[(0,n.jsx)("img",{className:"ws-empty-logo",src:"/assets/keiko-logo.svg",alt:""}),(0,n.jsx)("div",{className:"ws-empty-title",children:"Empty workspace"}),(0,n.jsx)("div",{className:"ws-empty-sub",children:"Open a window to start working"}),(0,n.jsxs)("button",{type:"button",className:"ws-empty-btn",onClick:l,children:[(0,n.jsx)(k.Icons.add,{size:15})," New window"]})]}):null,(0,n.jsxs)("div",{className:"ws-scene",style:f,children:[null!==o?(0,n.jsx)("div",{className:"snap-ghost",style:{left:o.x,top:o.y,width:o.w,height:o.h}}):null,null!==i?(0,n.jsx)(J,{wins:i,conns:c,connecting:d,api:u}):null,null!==i?i.map(e=>(0,n.jsx)(eo,{win:e,top:null!==h&&e.id===h.id,connState:null===p?null:e.id===p.id?"source":H(p.type,e.type)?"valid":"invalid",view:r,api:u,wsRef:t},e.id)):null]}),(0,n.jsxs)("div",{className:"ws-zoom",children:[(0,n.jsx)("button",{type:"button",className:"ws-zoom-btn",onClick:()=>u.zoomTo(eJ(r.zoom,-.2)),disabled:r.zoom<=.3,"aria-label":"Zoom out",title:"Zoom out",children:(0,n.jsx)(k.Icons.zoomOut,{size:15})}),(0,n.jsxs)("button",{type:"button",className:"ws-zoom-pct mono",onClick:u.resetView,"aria-label":`${String(Math.round(100*r.zoom))}% — reset view`,title:"Reset view to 100%",children:[Math.round(100*r.zoom),"%"]}),(0,n.jsx)("button",{type:"button",className:"ws-zoom-btn",onClick:()=>u.zoomTo(eJ(r.zoom,.2)),disabled:r.zoom>=2.5,"aria-label":"Zoom in",title:"Zoom in",children:(0,n.jsx)(k.Icons.zoomIn,{size:15})})]}),(0,n.jsx)("button",{type:"button",className:"ws-fab",onPointerDown:e=>e.stopPropagation(),onClick:l,"aria-label":"New window",title:"New window",children:(0,n.jsx)(k.Icons.add,{size:20})}),s??null]})}function e1({commands:e,onClose:t}){let[l,s]=(0,a.useState)(""),[i,r]=(0,a.useState)(0),o=(0,a.useRef)(null),c=(0,a.useRef)(null),d=(0,a.useRef)(null);(0,a.useEffect)(()=>(c.current=document.activeElement,()=>{c.current?.focus?.()}),[]),(0,a.useEffect)(()=>{o.current?.focus()},[]);let u=(0,a.useMemo)(()=>{let t=l.toLowerCase();return e.filter(e=>`${e.label} ${e.group??""}`.toLowerCase().includes(t))},[e,l]);(0,a.useEffect)(()=>{r(0)},[l]),(0,a.useEffect)(()=>{document.getElementById(`cmdk-row-${String(i)}`)?.scrollIntoView?.({block:"nearest"})},[i,u]);let h=e=>{void 0!==e&&(e.run(),t())};return(0,n.jsx)("div",{className:"cmdk-overlay",onPointerDown:t,children:(0,n.jsxs)("div",{ref:d,className:"cmdk",role:"dialog","aria-modal":"true","aria-labelledby":"cmdk-title","aria-describedby":"cmdk-desc",tabIndex:-1,onPointerDown:e=>e.stopPropagation(),onKeyDown:e=>{if("Tab"===e.key){let t=Array.from(d.current?.querySelectorAll("button:not([disabled]),input:not([disabled]),[tabindex]:not([tabindex='-1'])")??[]);if(t.length>0){let n=t[0],a=t[t.length-1];if(e.shiftKey&&document.activeElement===n){e.preventDefault(),a.focus();return}if(!e.shiftKey&&document.activeElement===a){e.preventDefault(),n.focus();return}}}if("ArrowDown"===e.key){e.preventDefault(),r(e=>Math.min(u.length-1,e+1));return}if("ArrowUp"===e.key){e.preventDefault(),r(e=>Math.max(0,e-1));return}if("Enter"===e.key){e.preventDefault(),h(u[i]);return}"Escape"===e.key&&t()},children:[(0,n.jsx)("h2",{id:"cmdk-title",className:"sr-only",children:"Command palette"}),(0,n.jsx)("p",{id:"cmdk-desc",className:"sr-only",children:"Search commands and press Enter to run the selected action."}),(0,n.jsxs)("div",{className:"cmdk-input",children:[(0,n.jsx)(k.Icons.search,{size:16}),(0,n.jsx)("input",{ref:o,role:"combobox","aria-expanded":"true","aria-controls":"cmdk-list","aria-activedescendant":u.length>0?`cmdk-row-${String(i)}`:void 0,"aria-label":"Command query",placeholder:"Type a command…",value:l,onChange:e=>s(e.target.value)}),(0,n.jsx)("span",{className:"kbd",children:"esc"})]}),(0,n.jsx)("div",{className:"sr-only",role:"status",children:0===u.length?"No matching commands":`${String(u.length)} command${1===u.length?"":"s"}`}),(0,n.jsxs)("div",{id:"cmdk-list",role:"listbox",className:"cmdk-list",children:[0===u.length&&(0,n.jsx)("div",{className:"cmdk-empty",children:"No matching commands"}),u.map((e,t)=>{var a;let l;return(0,n.jsxs)("div",{role:"option",id:`cmdk-row-${String(t)}`,"aria-selected":t===i,className:"cmdk-row","data-sel":t===i,tabIndex:-1,onMouseEnter:()=>r(t),onClick:()=>h(e),children:[(0,n.jsx)("span",{className:"cmdk-ico",children:(a=e.icon,l=k.Icons[a]??k.Icons.spark,(0,n.jsx)(l,{size:16}))}),(0,n.jsx)("span",{className:"cmdk-label",children:e.label}),(0,n.jsx)("span",{className:"spacer"}),void 0!==e.shortcut&&(0,n.jsx)("span",{className:"kbd",children:e.shortcut}),void 0!==e.group&&(0,n.jsx)("span",{className:"cmdk-group mono",children:e.group})]},e.id)})]})]})})}var e2=e.i(74080),e4=e.i(76055);function e3({onCancel:e}){let t=(0,a.useRef)(null),l=(0,a.useRef)(null),s=(0,a.useRef)(null),[i,r]=(0,a.useState)(""),[o,c]=(0,a.useState)(""),[d,u]=(0,a.useState)(""),[h,p]=(0,a.useState)(""),[m,f]=(0,a.useState)(!1),[g,v]=(0,a.useState)(),[x,b]=(0,a.useState)(),[y,j]=(0,a.useState)();async function w(e){if(e.preventDefault(),!m){f(!0),v(void 0),b(void 0),j(void 0),t.current?.focus();try{let e=Array.from(new Set(h.split(/[\n,]/u).map(e=>e.trim()).filter(e=>e.length>0)));if(function(e){try{return new URL(e.trim()).hostname.endsWith(".services.ai.azure.com")}catch{return!1}}(i)&&0===e.length){v("Azure AI Foundry requires deployment names. Paste the names from the Deployments tab."),f(!1);return}let t=(await (0,e4.setupGateway)({baseUrl:i,apiKey:o,apiKeyHeaderName:""===d.trim()?void 0:d.trim(),deploymentNames:e})).testedModelIds.length;j(`Verified ${String(t)} workflow chat model${1===t?"":"s"}. Reloading Keiko…`),window.setTimeout(()=>window.location.reload(),800)}catch(t){let e=t instanceof e4.ApiError?{message:t.message,code:t.code}:t instanceof Error?{message:t.message}:{message:"The gateway could not be configured."};v(e.message),b(e.code),f(!1)}}}(0,a.useEffect)(()=>(s.current=document.activeElement,l.current?.focus(),()=>{s.current?.focus?.()}),[]),(0,a.useEffect)(()=>{let n=t.current;if(null===n)return;let a=t=>{if("Escape"===t.key){if(m||void 0!==y||void 0===e)return;t.preventDefault(),e();return}if("Tab"!==t.key)return;let a=Array.from(n.querySelectorAll("button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex='-1'])"));if(0===a.length)return;let l=a[0],s=a[a.length-1];t.shiftKey&&document.activeElement===l?(t.preventDefault(),s.focus()):t.shiftKey||document.activeElement!==s||(t.preventDefault(),l.focus())};return n.addEventListener("keydown",a),()=>n.removeEventListener("keydown",a)},[m,e,y]),(0,a.useEffect)(()=>{void 0===g||m||l.current?.focus()},[g,m]);let N=(0,n.jsx)("div",{className:"gw-setup-backdrop",role:"presentation",children:(0,n.jsx)("div",{ref:t,className:"gw-setup",role:"dialog","aria-modal":"true","aria-labelledby":"gw-setup-title","aria-describedby":"gw-setup-desc",tabIndex:-1,children:(0,n.jsxs)("form",{onSubmit:e=>void w(e),children:[(0,n.jsxs)("div",{className:"gw-setup-badge",children:[(0,n.jsx)(k.Icons.cube,{size:18}),"Model gateway setup"]}),(0,n.jsx)("h1",{id:"gw-setup-title",children:"Connect Keiko to your internal LLMs"}),(0,n.jsx)("p",{id:"gw-setup-desc",children:"Keiko needs the internal gateway URL and API token before chat and agent workflows can run. The token is tested once and stored only on this machine."}),(0,n.jsxs)("label",{className:"gw-field",children:[(0,n.jsx)("span",{children:"Base URL"}),(0,n.jsx)("input",{className:"gw-input mono",value:i,placeholder:"https://llm-gateway.example.com/v1",autoComplete:"off",disabled:m||void 0!==y,ref:l,onChange:e=>r(e.target.value)})]}),(0,n.jsxs)("label",{className:"gw-field",children:[(0,n.jsx)("span",{children:"API token"}),(0,n.jsx)("input",{className:"gw-input mono",type:"password",value:o,placeholder:"Paste your API token",autoComplete:"off",disabled:m||void 0!==y,onChange:e=>c(e.target.value)})]}),(0,n.jsxs)("label",{className:"gw-field",children:[(0,n.jsxs)("span",{children:["API key header ",(0,n.jsx)("span",{className:"dlg-opt",children:"optional"})]}),(0,n.jsx)("input",{className:"gw-input mono",value:d,placeholder:"Authorization",autoComplete:"off",disabled:m||void 0!==y,onChange:e=>u(e.target.value)})]}),(0,n.jsxs)("label",{className:"gw-field",children:[(0,n.jsx)("span",{children:"Deployment names for Azure"}),(0,n.jsx)("textarea",{className:"gw-input gw-textarea mono",value:h,placeholder:"Paste deployment names, one per line",autoComplete:"off",disabled:m||void 0!==y,onChange:e=>p(e.target.value)})]}),(0,n.jsx)("div",{className:"gw-note",children:"Leave the header field empty unless your gateway admin gave you a custom API-key header, for example X-Litellm-Key. Supported headers are Authorization, X-Litellm-Key, X-Api-Key, and api-key. Leave deployment names empty only for OpenAI-compatible gateways with model discovery. For Azure AI Foundry, paste deployment names exactly as shown in the Deployments tab. Testing several deployments can take up to 30 seconds."}),void 0!==g?(0,n.jsxs)("div",{className:"gw-error",role:"alert",children:[g,void 0!==x?(0,n.jsx)("div",{className:"gw-error-code mono",children:x}):null]}):null,void 0!==y?(0,n.jsx)("div",{className:"gw-success",role:"status",children:y}):null,(0,n.jsxs)("div",{className:"gw-actions",children:[void 0!==e?(0,n.jsx)("button",{className:"gw-cancel",type:"button",disabled:m||void 0!==y,onClick:e,children:"Cancel"}):null,(0,n.jsx)("button",{className:"gw-submit",type:"submit",disabled:m||void 0!==y||""===i.trim()||""===o.trim(),children:m?"Testing connection…":"Test & save"})]})]})})});return"u"<typeof document?N:(0,e2.createPortal)(N,document.body)}let e5=[["ask","Ask every action"],["full","Full access"]];function e6({cfg:e,set:t}){let a=!1!==e.keikoMode,l="full"===e.access?"full":"ask",s=a?"No rights by default. You approve while manual; Keiko governs per policy when autonomous.":"full"===l?"Legacy: agent acts without prompts.":"Legacy: you approve each privileged action.";return(0,n.jsxs)("div",{className:"permctl",children:[(0,n.jsxs)("button",{type:"button",className:"perm-toggle","data-on":a,"aria-pressed":a,onClick:()=>t("keikoMode",!a),children:[(0,n.jsx)("img",{className:"perm-orca",src:"/assets/keiko-logo.svg",alt:""}),(0,n.jsxs)("span",{className:"perm-tt",children:[(0,n.jsx)("span",{className:"perm-name",children:"Keiko-Mode"}),(0,n.jsx)("span",{className:"perm-desc",children:"Zero standing rights · Keiko governs"})]}),(0,n.jsx)("span",{className:"perm-sw"+(a?" on":""),children:(0,n.jsx)("span",{})})]}),!a&&(0,n.jsx)("div",{className:"perm-legacy",children:e5.map(([e,a])=>(0,n.jsx)("button",{type:"button",className:"perm-opt","data-on":l===e,"aria-pressed":l===e,onClick:()=>t("access",e),children:a},e))}),(0,n.jsx)("div",{className:"perm-note",children:s})]})}function e8(e){return"chat"===e.kind&&e.toolCalling&&e.structuredOutput}function e9(e){if(e instanceof e4.ApiError){if("BAD_ROOT"===e.code)return"Enter an absolute folder path.";if("DENIED"===e.code)return"That location is excluded."}return e instanceof Error?e.message:"Unable to read directories."}function e7({value:e,projectId:t,selectProjectRoot:l=!1,onSelect:s,onClose:i}){let[r,o]=(0,a.useState)(null),[c,d]=(0,a.useState)(e),[u,h]=(0,a.useState)(!1),[p,m]=(0,a.useState)(null),f=t??e.trim(),g=(0,a.useCallback)(async e=>{if(0===f.length){o(null),m("Enter an absolute folder path.");return}h(!0),m(null);try{let t=await (0,e4.fetchFilesDirectories)(f,e);o(t),d(t.path)}catch(e){m(e9(e))}finally{h(!1)}},[f]);return(0,a.useEffect)(()=>{g(e.length>0?e:void 0)},[]),(0,n.jsxs)("div",{className:"dir-picker",role:"group","aria-label":"Directory picker",children:[(0,n.jsxs)("div",{className:"dir-top",children:[(0,n.jsx)("input",{className:"dlg-input mono dir-path",value:c,"aria-label":"Folder path",placeholder:"/absolute/folder/path",onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),e.stopPropagation(),g(c))}}),(0,n.jsx)("button",{type:"button",className:"dlg-btn dir-go",onClick:()=>void g(c),children:"Go"})]}),null!==r?(0,n.jsx)("div",{className:"dir-roots",children:r.roots.map(e=>(0,n.jsx)("button",{type:"button",className:"dir-chip",onClick:()=>void g(e.path),children:e.label},`${e.label}:${e.path}`))}):null,(0,n.jsxs)("div",{className:"dir-list",children:[r?.parent!==null&&r?.parent!==void 0?(0,n.jsxs)("button",{type:"button",className:"dir-row",onClick:()=>void g(r.parent??void 0),children:[(0,n.jsx)(k.Icons.back,{size:14}),(0,n.jsx)("span",{children:"Parent directory"})]}):null,r?.entries.map(e=>(0,n.jsxs)("button",{type:"button",className:"dir-row",onClick:()=>void g(e.path),children:[(0,n.jsx)(k.Icons.folder,{size:14}),(0,n.jsx)("span",{children:e.name})]},e.path)),u?(0,n.jsx)("div",{className:"dir-note",role:"status",children:"Loading directories…"}):null,u||null===r||0!==r.entries.length?null:(0,n.jsx)("div",{className:"dir-note",children:"No child directories."}),null!==p?(0,n.jsx)("div",{className:"dir-error",role:"alert",children:p}):null]}),(0,n.jsxs)("div",{className:"dir-actions",children:[(0,n.jsx)("button",{type:"button",className:"dlg-btn",onClick:i,children:"Close"}),(0,n.jsx)("button",{type:"button",className:"dlg-btn dlg-primary",onClick:()=>{null!==r&&(s(l?r.roots[0]?.path??r.path:r.path),i())},disabled:null===r,children:"Use directory"})]})]})}let te=[{id:"verify",label:"Verify"},{id:"explain-plan",label:"Explain plan"},{id:"unit-test-generation",label:"Generate unit tests"},{id:"bug-investigation",label:"Investigate bug"}];function tt(e){return e.filter(e=>e.available).map(e=>e.path)}function tn(e){return e.split(/[\n,]/u).map(e=>e.trim()).filter(e=>e.length>0)}function ta(e){return e.replaceAll("\\","/")}function tl(e,t){let n=ta(t.trim());if(0===n.length)return"";let a=ta(e.trim()).replace(/\/+$/u,"");if(0===a.length)return n;if(n===a)return".";let l=`${a}/`;return n.startsWith(l)?n.slice(l.length):n}function ts(e,t){return tn(t).map(t=>tl(e,t)).join(", ")}function ti({filesContext:e,firstRef:t,directoryField:l,setDirectoryField:s,setDialogError:i,onConfirm:r}){let[o,c]=(0,a.useState)("verify"),[d,u]=(0,a.useState)(e?.root??""),[h,p]=(0,a.useState)(""),[m,f]=(0,a.useState)([]),[g,v]=(0,a.useState)([]),[x,b]=(0,a.useState)(()=>{var t,n;let a;return t=e?.root??"",{verifyTargetFiles:a=null===(n=e?.activeFilePath??null)?"":tl(t,n),explainFilePath:a,explainQuestion:"",unitTargetKind:"file",unitFilePath:a,unitModuleDir:"",unitFilePaths:a,bugDescription:"",bugFailingOutput:"",bugStackTrace:"",bugTargetFiles:a}}),[y,j]=(0,a.useState)(!0),[w,N]=(0,a.useState)(!1),[S,C]=(0,a.useState)(!1),I=d.trim(),E=null!==e&&e.root===I&&void 0!==e.activeFilePath?e.activeFilePath:null,R=I.length>0&&g.includes(I),$=function(e,t,n,a){if(0===t.length)return"Workspace is required.";if(0===n.length)return"No model is available.";if("explain-plan"===e&&0===a.explainFilePath.trim().length)return"Explain plan requires a file path.";if("unit-test-generation"===e){if("file"===a.unitTargetKind&&0===a.unitFilePath.trim().length)return"Unit test generation requires a file path.";if("module"===a.unitTargetKind&&0===a.unitModuleDir.trim().length)return"Unit test generation requires a module folder.";if("changedFiles"===a.unitTargetKind&&0===tn(a.unitFilePaths).length)return"Unit test generation requires at least one file path."}return"bug-investigation"!==e||a.bugDescription.trim().length>0||a.bugFailingOutput.trim().length>0||a.bugStackTrace.trim().length>0||tn(a.bugTargetFiles).length>0?null:"Bug investigation requires description, output, stack trace, or target files."}(o,I,h,x),T=null===$&&R&&!S&&!y;(0,a.useEffect)(()=>{let e=!1;return j(!0),i(null),Promise.all([(0,e4.fetchModels)(),(0,e4.fetchProjects)()]).then(([t,n])=>{if(e)return;let a=t.models.filter(e8);f(a),p(e=>e||(a[0]?.id??"")),v(tt(n.projects))}).catch(t=>{e||i(e9(t))}).finally(()=>{e||j(!1)}),()=>{e=!0}},[i]);let A=e=>{b(t=>({...t,...e}))};(0,a.useEffect)(()=>{if(null===E)return;let e=tl(I,E);b(t=>{let n={};return 0===t.verifyTargetFiles.trim().length&&(n.verifyTargetFiles=e),0===t.explainFilePath.trim().length&&(n.explainFilePath=e),0===t.unitFilePath.trim().length&&(n.unitFilePath=e),0===t.unitFilePaths.trim().length&&(n.unitFilePaths=e),0===t.bugTargetFiles.trim().length&&(n.bugTargetFiles=e),0===Object.keys(n).length?t:{...t,...n}})},[E,I]);let L=async()=>{v(tt((await (0,e4.fetchProjects)()).projects))},q=async()=>{if(0!==I.length){N(!0),i(null);try{await (0,e4.createProject)({path:I}),await L()}catch(e){i(e9(e))}finally{N(!1)}}},P=async()=>{if(!T)return void i($??"Workspace is not registered.");C(!0),i(null);let t=function(e,t,n,a){if("verify"===e){let e=tn(a.verifyTargetFiles).map(e=>tl(t,e));return{taskType:"verify",modelId:n,input:{workspaceRoot:t,...e.length>0?{targetFiles:e}:{}}}}if("explain-plan"===e)return{taskType:"explain-plan",modelId:n,input:{workspaceRoot:t,filePath:tl(t,a.explainFilePath),...a.explainQuestion.trim().length>0?{question:a.explainQuestion.trim()}:{}}};if("unit-test-generation"===e){let e=tn(a.unitFilePaths).map(e=>tl(t,e)),l="module"===a.unitTargetKind?{kind:"module",moduleDir:tl(t,a.unitModuleDir)}:"changedFiles"===a.unitTargetKind?{kind:"changedFiles",filePaths:e}:{kind:"file",filePath:tl(t,a.unitFilePath)};return{workflowId:"unit-test-generation",modelId:n,input:{workspaceRoot:t,target:l}}}return{workflowId:"bug-investigation",modelId:n,input:{workspaceRoot:t,report:{...a.bugDescription.trim().length>0?{description:a.bugDescription.trim()}:{},...a.bugFailingOutput.trim().length>0?{failingOutput:a.bugFailingOutput.trim()}:{},...a.bugStackTrace.trim().length>0?{stackTrace:a.bugStackTrace.trim()}:{},...tn(a.bugTargetFiles).length>0?{targetFiles:tn(a.bugTargetFiles).map(e=>tl(t,e))}:{}}}}}(o,I,h,x);try{let n=await (0,e4.startRun)(t);r({workflow:o,model:h,runId:n.runId,fingerprint:n.fingerprint,workspaceRoot:I,inputJson:JSON.stringify(t.input),...null!==e&&e.root===I?{__connectFilesId:e.id}:{}})}catch(e){e instanceof e4.ApiError&&"WORKSPACE_NOT_REGISTERED"===e.code?(await L().catch(()=>void 0),i("Workspace is not registered.")):i(e9(e))}finally{C(!1)}};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{className:"dlg-field",children:[(0,n.jsx)("span",{className:"dlg-label",children:"Workflow"}),(0,n.jsxs)("span",{className:"dlg-selwrap",children:[(0,n.jsx)("select",{ref:t,className:"dlg-input mono",value:o,onChange:e=>c(e.target.value),children:te.map(e=>(0,n.jsx)("option",{value:e.id,children:e.label},e.id))}),(0,n.jsx)("span",{className:"dlg-selchev",children:(0,n.jsx)(k.Icons.chevron,{size:15})})]})]}),(0,n.jsxs)("label",{className:"dlg-field",children:[(0,n.jsx)("span",{className:"dlg-label",children:"Workspace"}),(0,n.jsxs)("span",{className:"dlg-dirwrap",children:[(0,n.jsx)("input",{className:"dlg-input mono",value:d,placeholder:"/absolute/project/path",onClick:()=>s("agentWorkspace"),onChange:e=>u(e.target.value)}),(0,n.jsx)("button",{type:"button",className:"dlg-btn dlg-dirbtn",onClick:()=>s("agentWorkspace"),children:"Browse"})]}),"agentWorkspace"===l?(0,n.jsx)(e7,{value:d,projectId:R?I:void 0,onSelect:u,onClose:()=>s(null)}):null]}),I.length>0&&!R?(0,n.jsxs)("div",{className:"dlg-agent-warning",children:[(0,n.jsx)("span",{children:"Workspace is not registered."}),(0,n.jsx)("button",{type:"button",className:"dlg-btn",disabled:w,onClick:()=>void q(),children:w?"Registering…":"Register workspace"})]}):null,(0,n.jsxs)("label",{className:"dlg-field",children:[(0,n.jsx)("span",{className:"dlg-label",children:"Model"}),(0,n.jsxs)("span",{className:"dlg-selwrap",children:[(0,n.jsx)("select",{className:"dlg-input mono",value:h,onChange:e=>p(e.target.value),disabled:0===m.length,children:m.map(e=>(0,n.jsx)("option",{value:e.id,children:e.id},e.id))}),(0,n.jsx)("span",{className:"dlg-selchev",children:(0,n.jsx)(k.Icons.chevron,{size:15})})]})]}),null!==E?(0,n.jsxs)("button",{type:"button",className:"dlg-current-file",onClick:()=>{if(null===E)return;let e=tl(I,E);"verify"===o?A({verifyTargetFiles:e}):"explain-plan"===o?A({explainFilePath:e}):"unit-test-generation"===o?"changedFiles"===x.unitTargetKind?A({unitFilePaths:e}):A({unitTargetKind:"file",unitFilePath:e}):A({bugTargetFiles:e})},title:E,children:[(0,n.jsx)(k.Icons.files,{size:13})," Use current file ",(0,n.jsx)("span",{className:"mono",children:E})]}):null,"verify"===o?(0,n.jsxs)("label",{className:"dlg-field",children:[(0,n.jsxs)("span",{className:"dlg-label",children:["Target files ",(0,n.jsx)("span",{className:"dlg-opt",children:"optional"})]}),(0,n.jsx)("textarea",{className:"dlg-input dlg-textarea mono",rows:2,placeholder:"src/file.ts, src/other.ts",value:x.verifyTargetFiles,onChange:e=>A({verifyTargetFiles:e.target.value}),onBlur:e=>A({verifyTargetFiles:ts(I,e.target.value)})})]}):"explain-plan"===o?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{className:"dlg-field",children:[(0,n.jsx)("span",{className:"dlg-label",children:"File path"}),(0,n.jsx)("input",{className:"dlg-input mono",placeholder:"src/file.ts",value:x.explainFilePath,onChange:e=>A({explainFilePath:e.target.value}),onBlur:e=>A({explainFilePath:tl(I,e.target.value)})})]}),(0,n.jsxs)("label",{className:"dlg-field",children:[(0,n.jsxs)("span",{className:"dlg-label",children:["Question ",(0,n.jsx)("span",{className:"dlg-opt",children:"optional"})]}),(0,n.jsx)("textarea",{className:"dlg-input dlg-textarea",rows:2,placeholder:"What should the plan focus on?",value:x.explainQuestion,onChange:e=>A({explainQuestion:e.target.value})})]})]}):"unit-test-generation"===o?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{className:"dlg-field",children:[(0,n.jsx)("span",{className:"dlg-label",children:"Target"}),(0,n.jsxs)("span",{className:"dlg-selwrap",children:[(0,n.jsxs)("select",{className:"dlg-input mono",value:x.unitTargetKind,onChange:e=>A({unitTargetKind:e.target.value}),children:[(0,n.jsx)("option",{value:"file",children:"Single file"}),(0,n.jsx)("option",{value:"module",children:"Module"}),(0,n.jsx)("option",{value:"changedFiles",children:"Changed files"})]}),(0,n.jsx)("span",{className:"dlg-selchev",children:(0,n.jsx)(k.Icons.chevron,{size:15})})]})]}),"module"===x.unitTargetKind?(0,n.jsxs)("label",{className:"dlg-field",children:[(0,n.jsx)("span",{className:"dlg-label",children:"Module folder"}),(0,n.jsx)("input",{className:"dlg-input mono",placeholder:"src/module",value:x.unitModuleDir,onChange:e=>A({unitModuleDir:e.target.value}),onBlur:e=>A({unitModuleDir:tl(I,e.target.value)})})]}):"changedFiles"===x.unitTargetKind?(0,n.jsxs)("label",{className:"dlg-field",children:[(0,n.jsx)("span",{className:"dlg-label",children:"File paths"}),(0,n.jsx)("textarea",{className:"dlg-input dlg-textarea mono",rows:2,placeholder:"src/file.ts, src/other.ts",value:x.unitFilePaths,onChange:e=>A({unitFilePaths:e.target.value}),onBlur:e=>A({unitFilePaths:ts(I,e.target.value)})})]}):(0,n.jsxs)("label",{className:"dlg-field",children:[(0,n.jsx)("span",{className:"dlg-label",children:"File path"}),(0,n.jsx)("input",{className:"dlg-input mono",placeholder:"src/file.ts",value:x.unitFilePath,onChange:e=>A({unitFilePath:e.target.value}),onBlur:e=>A({unitFilePath:tl(I,e.target.value)})})]})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{className:"dlg-field",children:[(0,n.jsxs)("span",{className:"dlg-label",children:["Description ",(0,n.jsx)("span",{className:"dlg-opt",children:"optional"})]}),(0,n.jsx)("textarea",{className:"dlg-input dlg-textarea",rows:2,placeholder:"Describe the observed bug.",value:x.bugDescription,onChange:e=>A({bugDescription:e.target.value})})]}),(0,n.jsxs)("label",{className:"dlg-field",children:[(0,n.jsxs)("span",{className:"dlg-label",children:["Failing output ",(0,n.jsx)("span",{className:"dlg-opt",children:"optional"})]}),(0,n.jsx)("textarea",{className:"dlg-input dlg-textarea mono",rows:2,value:x.bugFailingOutput,onChange:e=>A({bugFailingOutput:e.target.value})})]}),(0,n.jsxs)("label",{className:"dlg-field",children:[(0,n.jsxs)("span",{className:"dlg-label",children:["Stack trace ",(0,n.jsx)("span",{className:"dlg-opt",children:"optional"})]}),(0,n.jsx)("textarea",{className:"dlg-input dlg-textarea mono",rows:2,value:x.bugStackTrace,onChange:e=>A({bugStackTrace:e.target.value})})]}),(0,n.jsxs)("label",{className:"dlg-field",children:[(0,n.jsxs)("span",{className:"dlg-label",children:["Target files ",(0,n.jsx)("span",{className:"dlg-opt",children:"optional"})]}),(0,n.jsx)("textarea",{className:"dlg-input dlg-textarea mono",rows:2,placeholder:"src/file.ts, src/other.ts",value:x.bugTargetFiles,onChange:e=>A({bugTargetFiles:e.target.value}),onBlur:e=>A({bugTargetFiles:ts(I,e.target.value)})})]})]}),(0,n.jsxs)("div",{className:"dlg-agent-actions",children:[(0,n.jsx)("button",{type:"button",className:"dlg-btn dlg-primary",disabled:!T,onClick:()=>void P(),children:S?"Starting…":"Start agent"}),y?(0,n.jsx)("span",{className:"dlg-note",role:"status",children:"Loading models and projects…"}):null,y||null===$?null:(0,n.jsx)("span",{className:"dlg-note",role:"status",children:$})]})]})}function tr({type:e,types:t,filesContext:l=null,onConfirm:s,onClose:i}){let r=t[e],o=r.config??[],[c,d]=(0,a.useState)(()=>(function(e){let t={};for(let n of e)t[n.key]=n.def??"";return t})(o)),[u,h]=(0,a.useState)(!1),[p,m]=(0,a.useState)(null),[f,g]=(0,a.useState)(null),v=(0,a.useRef)(null),x=(0,a.useRef)(null),b=(0,a.useRef)(null);(0,a.useEffect)(()=>(b.current=document.activeElement,()=>{let e=b.current;null!==e&&e.isConnected?e.focus():requestAnimationFrame(()=>{let e=document.querySelector('.window[data-top="true"]')??document.querySelector(".ws-fab");e?.focus({preventScroll:!0})})}),[]),(0,a.useEffect)(()=>{let e=requestAnimationFrame(()=>{h(!0),(v.current??x.current)?.focus()});return()=>cancelAnimationFrame(e)},[]),(0,a.useEffect)(()=>{let e=e=>{"Escape"===e.key&&i()};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[i]),(0,a.useEffect)(()=>{if("files"!==e)return;let t=!1,n=c.root;if("string"!=typeof n||!(n.length>0))return m(null),(0,e4.fetchProjects)().then(e=>{let n=tt(e.projects)[0];t||void 0===n||d(e=>({...e,root:n}))}).catch(e=>{t||m(e9(e))}),()=>{t=!0}},[c.root,e]);let y=(e,t)=>d(n=>({...n,[e]:t})),j=()=>{"agents"!==e&&s(c)},w=k.Icons[r.icon],N=r.cta??`Open ${r.title}`;return(0,n.jsx)("div",{className:"dlg-overlay"+(u?" in":""),onPointerDown:i,children:(0,n.jsxs)("div",{ref:x,className:"dlg",role:"dialog","aria-modal":"true","aria-labelledby":"new-window-title","aria-describedby":"new-window-desc",tabIndex:-1,onPointerDown:e=>e.stopPropagation(),onKeyDown:e=>{let t,n;if("Escape"===e.key)return void i();if("Enter"===e.key&&(e.metaKey||e.ctrlKey))return void j();if("Enter"===e.key){let t=e.target instanceof HTMLElement?e.target.tagName:"";("INPUT"===t||"SELECT"===t)&&(e.preventDefault(),j());return}if("Tab"!==e.key)return;let a=(t=e.currentTarget.querySelectorAll("button,input,select,textarea"),n=[],t.forEach(e=>{e.hasAttribute("disabled")||(null!==e.offsetParent||"BUTTON"===e.tagName)&&n.push(e)}),n);if(0===a.length)return;let l=a[0],s=a[a.length-1];e.shiftKey&&document.activeElement===l?(e.preventDefault(),s.focus()):e.shiftKey||document.activeElement!==s||(e.preventDefault(),l.focus())},children:[(0,n.jsxs)("div",{className:"dlg-head",children:[(0,n.jsx)("span",{className:"dlg-ico",children:(0,n.jsx)(w,{size:20})}),(0,n.jsxs)("div",{className:"dlg-htext",children:[(0,n.jsxs)("span",{id:"new-window-title",className:"dlg-title",children:["New ",r.title," window"]}),(0,n.jsx)("span",{id:"new-window-desc",className:"dlg-sub",children:r.desc})]}),(0,n.jsx)("span",{className:"spacer"}),(0,n.jsx)("button",{type:"button",className:"palette-x",onClick:i,"aria-label":"Cancel",title:"Cancel",children:(0,n.jsx)(k.Icons.close,{size:16})})]}),(0,n.jsxs)("div",{className:"dlg-body",children:["agents"===e?(0,n.jsx)(ti,{filesContext:l,firstRef:e=>{v.current=e},directoryField:f,setDirectoryField:g,setDialogError:m,onConfirm:s}):0===o.length&&(0,n.jsxs)("div",{className:"dlg-empty",children:["Add a new ",r.title," window to your workspace."]}),"agents"!==e&&o.map((e,t)=>(0,n.jsxs)("label",{className:"dlg-field",children:[(0,n.jsxs)("span",{className:"dlg-label",children:[e.label,!0===e.optional&&(0,n.jsx)("span",{className:"dlg-opt",children:"optional"})]}),function(e,t,a,l,s){if("perm"===e.type)return(0,n.jsx)(e6,{cfg:t,set:a});let i=t[e.key],r="string"==typeof i?i:void 0===i?"":String(i);if("select"===e.type){let t=e.options??[];return(0,n.jsxs)("span",{className:"dlg-selwrap",children:[(0,n.jsx)("select",{ref:l??void 0,className:"dlg-input mono",value:r,onChange:t=>a(e.key,t.target.value),disabled:0===t.length,children:t.map(t=>(0,n.jsx)("option",{value:t,children:(e.prefix??"")+t},t))}),(0,n.jsx)("span",{className:"dlg-selchev",children:(0,n.jsx)(k.Icons.chevron,{size:15})})]})}return"textarea"===e.type?(0,n.jsx)("textarea",{ref:l??void 0,className:"dlg-input dlg-textarea",rows:3,placeholder:e.placeholder??"",value:r,onChange:t=>a(e.key,t.target.value)}):"directory"===e.type?(0,n.jsxs)("span",{className:"dlg-dirwrap",children:[(0,n.jsx)("input",{ref:l??void 0,className:"dlg-input mono",placeholder:e.placeholder??e.label,value:r,onClick:()=>s(e.key),onChange:t=>a(e.key,t.target.value)}),(0,n.jsx)("button",{type:"button",className:"dlg-btn dlg-dirbtn",onClick:()=>s(e.key),children:"Browse"})]}):(0,n.jsx)("input",{ref:l??void 0,className:"dlg-input mono",placeholder:e.placeholder??e.label,value:r,onChange:t=>a(e.key,t.target.value)})}(e,c,y,0===t?e=>{v.current=e}:null,g),"directory"===e.type&&f===e.key?(0,n.jsx)(e7,{value:"string"==typeof c[e.key]?c[e.key]:"",selectProjectRoot:"root"===e.key,onSelect:t=>y(e.key,t),onClose:()=>g(null)}):null]},e.key)),null!==p?(0,n.jsx)("div",{className:"dlg-error",role:"alert",children:p}):null]}),(0,n.jsxs)("div",{className:"dlg-foot",children:[(0,n.jsx)("button",{type:"button",className:"dlg-btn",onClick:i,children:"Cancel"}),"agents"!==e?(0,n.jsx)("button",{type:"button",className:"dlg-btn dlg-primary",onClick:j,children:N}):null]})]})})}let to=new Map([["ArrowRight",1],["ArrowLeft",-1],["ArrowDown",2],["ArrowUp",-2]]);function tc({types:e,order:t,onAdd:l,onClose:s}){let i=(0,a.useRef)(null),r=(0,a.useRef)(null),[o,c]=(0,a.useState)(0);return(0,a.useEffect)(()=>{r.current=document.activeElement;let e=i.current?.querySelector(".pal-card");return e?.focus(),()=>{let e=document.activeElement;(null===e||e===document.body)&&r.current?.focus?.()}},[]),(0,a.useEffect)(()=>{let e=e=>{null!==i.current&&e.target instanceof Node&&!i.current.contains(e.target)&&s()};return document.addEventListener("pointerdown",e),()=>{document.removeEventListener("pointerdown",e)}},[s]),(0,n.jsxs)("div",{ref:i,className:"palette",role:"dialog","aria-labelledby":"palette-title","aria-describedby":"palette-desc",tabIndex:-1,onPointerDown:e=>e.stopPropagation(),onKeyDown:e=>{if("Escape"===e.key){e.preventDefault(),s();return}if(!(e.target instanceof HTMLElement)||!e.target.classList.contains("pal-card"))return;let t=Array.from(i.current?.querySelectorAll(".pal-card")??[]),n=function(e,t,n){if(0===n)return null;if("Home"===e)return 0;if("End"===e)return n-1;let a=to.get(e);return void 0===a?null:Math.max(0,Math.min(n-1,t+a))}(e.key,t.indexOf(e.target),t.length);null!==n&&(e.preventDefault(),c(n),t[n]?.focus())},onBlur:e=>{e.relatedTarget instanceof Node&&i.current?.contains(e.relatedTarget)!==!0&&s()},children:[(0,n.jsxs)("div",{className:"palette-head",children:[(0,n.jsx)("span",{className:"palette-badge",children:(0,n.jsx)(k.Icons.add,{size:17})}),(0,n.jsxs)("div",{className:"palette-htext",children:[(0,n.jsx)("span",{id:"palette-title",className:"palette-title",children:"New window"}),(0,n.jsx)("span",{id:"palette-desc",className:"palette-sub",children:"Pick a card to add to your workspace"})]}),(0,n.jsx)("span",{className:"spacer"}),(0,n.jsx)("button",{type:"button",className:"palette-x",onClick:s,"aria-label":"Close",title:"Close",children:(0,n.jsx)(k.Icons.close,{size:16})})]}),(0,n.jsx)("div",{className:"palette-grid",children:t.map((t,a)=>{let s=e[t],i=k.Icons[s.icon];return(0,n.jsxs)("button",{type:"button",className:"pal-card pal-main",tabIndex:a===o?0:-1,onFocus:()=>c(a),onClick:()=>l(t),children:[(0,n.jsx)("span",{className:"pal-ico",children:(0,n.jsx)(i,{size:18})}),(0,n.jsx)("span",{className:"pal-name",children:s.title}),(0,n.jsx)("span",{className:"pal-desc",children:s.desc}),(0,n.jsx)("span",{className:"pal-add",children:(0,n.jsx)(k.Icons.plus,{size:15})})]},t)})})]})}var td=e.i(83500);let tu=[{workflowId:"unit-test-generation",label:"Generate unit tests",description:"Drafts a reviewable unit-test patch for a target file. Dry-run only from chat — apply from the workflow view.",prompt:"Target file (workspace-relative)",placeholder:"src/example.ts",buildInput:(e,t)=>({workspaceRoot:e,target:{kind:"file",filePath:t.trim()}})},{workflowId:"bug-investigation",label:"Investigate bug",description:"Investigates a reported issue and proposes a root-cause hypothesis. Dry-run only from chat.",prompt:"Describe the bug",placeholder:"The login button does nothing when the form is empty…",buildInput:(e,t)=>({workspaceRoot:e,report:{description:t.trim()}})}];function th(e){return tu.find(t=>t.workflowId===e)}function tp(e){return void 0===e||!Number.isFinite(e)||e<=0?0:Math.floor(e)}function tm(e){return"u">typeof TextEncoder?new TextEncoder().encode(e).length:e.length}function tf(e){let t=tp(e.modelContextWindow),n=tp(e.modelMaxOutputTokens),a=Math.max(0,t-n),l=tm(e.userDraftText),s=function(e){let t=0;for(let n of e)t+=tm(n.role),t+=tm(n.content);return t}(e.conversationHistory),i=function(e){if(void 0===e)return 0;let t=0;for(let n of e)t+=tp(n.extractedBytes);return t}(e.documentContext),r=tp(e.repoContextPackBytes),o=tp(e.knowledgeCapsuleBytes),c=tp(e.memoryContextBytes),d=l+s+i+r+o+c,u=Math.ceil(d/4),h=function(e,t){if(t<=0)return"exceeded";let n=e/t;return n>.95?"exceeded":n>.75?"high":n>.5?"moderate":"low"}(u,a);return{approximateBytes:d,approximateTokens:u,contextWindowTokens:t,reservedOutputTokens:n,availableInputTokens:a,pressure:h,breakdown:{draftBytes:l,historyBytes:s,documentBytes:i,repoContextBytes:r,knowledgeBytes:o,memoryBytes:c}}}function tg(e){return"chat"===e.kind}let tv={embedding:"embedding-only","ocr-vision":"ocr-vision-only"};function tx(e,t){return e instanceof e4.ApiError?e.message.trim().length>0?`${e.message} (${e.code})`:`${t} (${e.code})`:e instanceof Error&&e.message.trim().length>0?e.message:t}let tb="\n…[truncated]",ty=["text/"],tj=new Set(["application/json","application/x-yaml","application/yaml"]),tw=new TextEncoder;function tk(e){return tw.encode(e).length}function tN(e){let t=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return t>=0?e.slice(t+1):e}let tS=`${String(256)} KB`;function tC(e){return`"${e}" won't be sent — the ${tS} attachment limit was already used by earlier files.`}async function tI(e,t){var n,a;let l,s,i,r,o;if(e.remainingAggregate<=0)return tC(tN(t.name));try{l=await t.file.text()}catch{return n=tN(t.name),`Couldn't read "${n}" — it will be skipped. Your message will be sent without it.`}let c=Math.min(65536,Math.max(e.remainingAggregate-tk(tb),0));if(c<=0)return tC(tN(t.name));let{entry:d,consumed:u}=(i=(s=tk(a=l)>c)?function(e,t){if(t<=0)return"";if(tk(e)<=t)return e;let n=0,a="";for(let l of e){let e=n+tk(l);if(e>t)break;n=e,a+=l}return a}(a,c):a,r=tk(i),o=s?tk(tb):0,{entry:{id:t.id,displayName:tN(t.name),mimeType:t.mimeType,sizeBytes:t.sizeBytes,extractedBytes:r,truncated:s,truncationMarker:s?tb:void 0,text:i},consumed:r+o});if(0===d.text.length)return 0===l.length?void 0:tC(tN(t.name));e.entries.push(d),e.remainingAggregate-=u}async function tE(e){let t=e.filter(e=>{var t;return t=e.mimeType,!!ty.some(e=>t.startsWith(e))||tj.has(t)}),n=t.slice(0,16),a={entries:[],remainingAggregate:262144},l=[];for(let e of n){let t=await tI(a,e);void 0!==t&&l.push(t)}for(let e of t.slice(16)){var s;l.push((s=tN(e.name),`"${s}" won't be sent — only the first ${String(16)} documents are included.`))}return{entries:a.entries,failures:l}}let tR=["text/"],t$=new Set(["application/pdf","application/json","application/x-yaml","application/yaml"]),tT="New chat",tA="keiko:chat-upsert",tL="keiko:chat-delete",tq=["completed","failed","cancelled"];function tP(e){return"idle"!==e&&!tq.includes(e)}let tM="The conversation context exceeded the model's window. Clear history or pick a larger-context model.",tD=new Set(["CONVERSATION_OVERSIZED_CONTEXT","GATEWAY_CONTEXT_OVERFLOW"]),tF=["context length","context_length_exceeded","max_tokens","too many tokens"];function tz(e){return void 0!==e&&e.contextWindowTokens>0&&"exceeded"===e.pressure}function tO(e){return!function(e){if(e instanceof e4.ApiError&&tD.has(e.code))return!0;let t=e instanceof Error?e.message.toLowerCase():"";return 0!==t.length&&tF.some(e=>t.includes(e))}(e)?tx(e,"Something went wrong. Try again."):tM}function tK(e){return[...e].sort((e,t)=>t.updatedAt-e.updatedAt)}function t_(e){window.dispatchEvent(new CustomEvent(tA,{detail:e}))}function tB(e){return e.find(tg)?.id}function tU(e,t){return void 0!==e&&t.some(t=>t.id===e&&tg(t))?e:tB(t)}let tW={projects:[],chats:[],messages:[],models:[],activeProject:void 0,activeChat:void 0,selectedModel:void 0};async function tH(e){let t=(await (0,e4.fetchModels)()).models.filter(tg),n=tB(t),a=[...(await (0,e4.fetchProjects)().catch(()=>({projects:[]}))).projects].sort((e,t)=>e.favorite!==t.favorite?e.favorite?-1:1:e.lastOpenedAt!==t.lastOpenedAt?t.lastOpenedAt-e.lastOpenedAt:e.path.localeCompare(t.path)),l=a.find(e=>e.available)??a[0];if(void 0!==l){let e=tK((await (0,e4.fetchChats)(l.path).catch(()=>({chats:[]}))).chats),n=e[0];if(void 0!==n){let s=await (0,e4.fetchChatMessages)(n.id,l.path),i=tU(n.selectedModel,t);return{models:t,selectedModel:i,projects:Array.from(a),activeProject:l,chats:e,activeChat:n,messages:Array.from(s.messages)}}}if(void 0===n||!e)return{models:t,selectedModel:n,projects:Array.from(a),activeProject:l,chats:[],activeChat:void 0,messages:[]};let s={modelId:n,title:tT};l?.available===!0&&(s.projectPath=l.path);let i=await (0,e4.createDesktopChat)(s);return t_(i.chat),{models:t,selectedModel:i.chat.selectedModel,projects:Array.from(i.projects),activeProject:i.project,chats:tK(i.chats),activeChat:i.chat,messages:Array.from(i.messages)}}function tG(e={}){let t=e.autoCreate??!0,[n,l]=(0,a.useState)(tW),[s,i]=(0,a.useState)(""),[r,o]=(0,a.useState)(!0),[c,d]=(0,a.useState)("idle"),u=tP(c),h=(0,a.useRef)("idle"),p=(0,a.useRef)(null),[m,f]=(0,a.useState)(),[g,v]=(0,a.useState)(),[x,b]=(0,a.useState)(),[y,j]=(0,a.useState)(!0),[w,k]=(0,a.useState)(1200),N=(0,a.useRef)(void 0),S=(0,a.useRef)(0),C=(0,a.useRef)([]),[I,E]=(0,a.useState)([]),[R,$]=(0,a.useState)([]),T=(0,a.useCallback)(async e=>{var t;let a;if(0===e.size)return{ok:!1,reason:"empty"};if(e.size>8388608)return{ok:!1,reason:"oversized"};let l=(t=e.type).startsWith("image/")?"image":tR.some(e=>t.startsWith(e))||t$.has(t)?"document":"unsupported-type";if("unsupported-type"===l)return{ok:!1,reason:"unsupported-type"};let s=n.models.find(e=>e.id===n.selectedModel);if(void 0!==s&&("image"===l&&!s.supportsImageInput||"document"===l&&!s.supportsDocumentInput))return{ok:!1,reason:"text-only-model"};if("image"===l)try{a=await new Promise((t,n)=>{let a=new FileReader;a.onload=()=>t(a.result),a.onerror=()=>n(Error("FileReader error")),a.readAsDataURL(e)})}catch{return{ok:!1,reason:"unsupported-type"}}let i={id:crypto.randomUUID(),kind:l,name:e.name,mimeType:e.type,sizeBytes:e.size,previewDataUrl:a,file:e};return E(e=>[...e,i]),{ok:!0}},[n.models,n.selectedModel]),A=(0,a.useCallback)(e=>{E(t=>t.filter(t=>t.id!==e))},[]),L=(0,a.useCallback)(()=>{E([])},[]),q=(0,a.useCallback)(async()=>{let e=I.filter(e=>"document"===e.kind&&void 0!==e.file).map(e=>({id:e.id,name:e.name,mimeType:e.mimeType,sizeBytes:e.sizeBytes,file:e.file}));if(0===e.length)return{entries:[],disclosures:[]};let{entries:t,failures:n}=await tE(e);n.length>0&&f(n.join(" "));let a=t.map(e=>({id:e.id,displayName:e.displayName,truncated:e.truncated}));return{entries:t,disclosures:a}},[I]),P=(0,a.useCallback)(()=>{b(void 0)},[]),M=(0,a.useCallback)((e,t)=>({enabled:y,budgetTokens:w,context:{userId:"local-operator",workspaceId:t.path,projectId:t.path,conversationId:e.id}}),[w,y]),D=(0,a.useCallback)(async e=>{await (0,td.acceptMemoryProposal)(e),b(t=>void 0===t?t:{...t,actions:t.actions.filter(t=>"candidate"!==t.kind||t.proposalId!==e)})},[]),F=(0,a.useCallback)(async e=>{await (0,td.rejectMemoryProposal)(e),b(t=>void 0===t?t:{...t,actions:t.actions.filter(t=>"candidate"!==t.kind||t.proposalId!==e)})},[]),z=(0,a.useCallback)(async e=>{await (0,td.forgetMemory)(e,"user-initiated forget from Conversation Center"),b(t=>void 0===t?t:{...t,actions:t.actions.filter(t=>"forget"!==t.kind||t.memoryId!==e)})},[]),O=(0,a.useCallback)(e=>{h.current=e,d(e)},[]);(0,a.useEffect)(()=>{N.current=n.activeChat?.id},[n.activeChat?.id]),(0,a.useEffect)(()=>{C.current=n.models},[n.models]),(0,a.useEffect)(()=>{let e=!1;return async function(){o(!0),f(void 0);try{let n=await tH(t);e||l(e=>({...e,...n}))}catch(t){e||f(tO(t))}finally{e||o(!1)}}(),()=>{e=!0}},[t]),(0,a.useEffect)(()=>{let e=e=>{let t=e.detail;"object"==typeof t&&null!==t&&"string"==typeof t.id&&"string"==typeof t.projectPath&&"string"==typeof t.title&&"string"==typeof t.selectedModel&&l(e=>({...e,chats:tK([t,...e.chats.filter(e=>e.id!==t.id)]),activeChat:e.activeChat?.id===t.id?t:e.activeChat,selectedModel:e.activeChat?.id===t.id?tU(t.selectedModel,e.models):e.selectedModel}))},t=e=>{let t=e.detail;"object"==typeof t&&null!==t&&"string"==typeof t.chatId&&l(e=>({...e,chats:e.chats.filter(e=>e.id!==t.chatId),activeChat:e.activeChat?.id===t.chatId?void 0:e.activeChat,messages:e.activeChat?.id===t.chatId?[]:e.messages}))};return window.addEventListener(tA,e),window.addEventListener(tL,t),()=>{window.removeEventListener(tA,e),window.removeEventListener(tL,t)}},[]),(0,a.useEffect)(()=>()=>{p.current?.abort()},[]);let K=(0,a.useCallback)(e=>{let t;f(void 0),l(n=>(t={selectedModel:n.selectedModel,activeChat:n.activeChat,chats:n.chats},{...n,selectedModel:e,activeChat:void 0===n.activeChat?n.activeChat:{...n.activeChat,selectedModel:e},chats:n.chats.map(t=>void 0!==n.activeChat&&t.id===n.activeChat.id?{...t,selectedModel:e}:t)})),E(t=>t.filter(t=>{let n;return void 0===(n=C.current.find(t=>t.id===e))||("image"===t.kind?n.supportsImageInput:n.supportsDocumentInput)}));let n=N.current;if(void 0===n)return;let a=S.current+1;S.current=a,(0,e4.updateChat)(n,{selectedModel:e}).then(e=>{S.current!==a||N.current===e.chat.id&&(t_(e.chat),l(t=>({...t,selectedModel:e.chat.selectedModel,activeChat:t.activeChat?.id===e.chat.id?e.chat:t.activeChat,chats:t.chats.map(t=>t.id===e.chat.id?e.chat:t)})))}).catch(e=>{if(S.current===a&&N.current===n&&(f(tO(e)),void 0!==t)){let e=t;l(t=>({...t,selectedModel:t.activeChat?.id===n?e.selectedModel:t.selectedModel,activeChat:t.activeChat?.id===n?e.activeChat:t.activeChat,chats:t.chats.map(t=>{if(t.id!==n)return t;let a=e.chats.find(e=>e.id===n);return void 0!==a?{...t,selectedModel:a.selectedModel}:t})}))}})},[]),_=(0,a.useCallback)(async(e,t)=>{let a=tU(n.selectedModel,n.models);if(void 0===a)return void f("No conversation-eligible model is configured. Connect a gateway in Settings.");f(void 0);try{let s=t?.trim(),i={modelId:a,title:void 0!==s&&s.length>0?s:tT},r=e?.path??n.activeProject?.path;void 0!==r&&(i.projectPath=r);let o=await (0,e4.createDesktopChat)(i);return N.current=o.chat.id,t_(o.chat),l({projects:Array.from(o.projects),chats:tK(o.chats),messages:Array.from(o.messages),models:n.models,activeProject:o.project,activeChat:o.chat,selectedModel:o.chat.selectedModel}),o.chat}catch(e){f(tO(e));return}},[n.selectedModel,n.activeProject,n.models]),B=(0,a.useCallback)(async e=>{f(void 0),l(t=>({...t,activeProject:e}));try{let t=await (0,e4.fetchChats)(e.path),a=tK(t.chats),s=a[0];if(void 0===s)return void await _(e);let i=await (0,e4.fetchChatMessages)(s.id,e.path);N.current=s.id;let r=tU(s.selectedModel,n.models);l(e=>({...e,chats:a,activeChat:s,selectedModel:r,messages:Array.from(i.messages)})),b(void 0)}catch(e){f(tO(e))}},[_,n.models]),U=(0,a.useCallback)(async e=>{f(void 0),p.current?.abort(),p.current=null,N.current=e.id,v(void 0),b(void 0),$([]);try{let t=await (0,e4.fetchChatMessages)(e.id,e.projectPath),a=tU(e.selectedModel,n.models);l(n=>{let l=n.projects.find(t=>t.path===e.projectPath);return{...n,activeProject:l,activeChat:e,selectedModel:a,messages:Array.from(t.messages)}})}catch(e){f(tO(e))}},[n.models]),W=(0,a.useCallback)(async e=>{let t=e.trim();if(0!==t.length){f(void 0);try{let e=await (0,e4.createProject)({path:t}),n=await (0,e4.fetchProjects)();l(e=>({...e,projects:Array.from(n.projects)})),await _(e.project)}catch(e){f(tO(e))}}},[_]),H=(0,a.useCallback)(e=>{l(t=>({...t,messages:t.messages.filter(t=>t.id!==e)}))},[]),G=(0,a.useCallback)((e,t,n)=>{let a=!1;return{onToken:t=>{a||(O("streaming"),a=!0),l(n=>({...n,messages:n.messages.map(n=>n.id===e?{...n,content:n.content+t}:n)}))},onDone:a=>{l(n=>({...n,activeChat:a.chat,chats:tK([a.chat,...n.chats.filter(e=>e.id!==a.chat.id)]),messages:[...n.messages.filter(n=>n.id!==t&&n.id!==e),...Array.from(a.messages)]})),t_(a.chat),void 0!==a.memory&&b(a.memory),n("completed")},onError:({message:t})=>{f(t),H(e),n("failed")},onCancelled:()=>{H(e),n("cancelled")}}},[H,O]),Y=(0,a.useCallback)((e,t,n,a,s,i,r)=>{let o=`stream-${String(Date.now())}`;l(t=>({...t,messages:[...t.messages,{id:o,chatId:e.id,role:"assistant",content:"",timestamp:Date.now(),runId:void 0,workflowId:void 0,workflowStatus:void 0,shortResult:void 0,taskType:void 0}]}));let c={chatId:e.id,projectPath:t.path,content:n,modelId:s,memory:M(e,t),...r.length>0?{documentContext:r}:{}};return new Promise((e,t)=>{let n=G(o,a,e);(0,e4.sendDesktopChatStream)(c,i,n).catch(n=>{H(o),n instanceof e4.StreamingUnavailableError?t(n):n instanceof DOMException&&"AbortError"===n.name?e("cancelled"):(f(tO(n)),l(e=>({...e,messages:e.messages.filter(e=>e.id!==a)})),e("failed"))})})},[M,G,H]),V=(0,a.useCallback)(async(e,t,n,a,s,i,r)=>{try{O("contacting");let o=await (0,e4.sendDesktopChat)({chatId:e.id,projectPath:t.path,content:n,modelId:s,memory:M(e,t),...r.length>0?{documentContext:r}:{}},i);if(i.aborted)return"cancelled";return l(e=>({...e,activeChat:o.chat,chats:tK([o.chat,...e.chats.filter(e=>e.id!==o.chat.id)]),messages:[...e.messages.filter(e=>e.id!==a),...Array.from(o.messages)]})),t_(o.chat),b(o.memory),"completed"}catch(n){if(n instanceof DOMException&&"AbortError"===n.name)return"cancelled";f(tO(n));try{let n=await (0,e4.fetchChatMessages)(e.id,t.path);l(e=>({...e,messages:Array.from(n.messages)}))}catch{l(e=>({...e,messages:e.messages.filter(e=>e.id!==a)}))}return"failed"}},[M,O]),Q=(0,a.useCallback)(async(e,t,a,l,s,i,r)=>{if(n.models.find(e=>e.id===s)?.streaming!==!0)return V(e,t,a,l,s,i,r);O("contacting");try{return await Y(e,t,a,l,s,i,r)}catch(e){if(!(e instanceof e4.StreamingUnavailableError))throw e}return V(e,t,a,l,s,i,r)},[n.models,V,Y,O]),X=(0,a.useCallback)(async(e,t,n,a,s,i)=>{v(void 0);try{O("contacting");let t=await (0,e4.askGrounded)({chatId:e.id,content:n,modelId:s},i);if(N.current!==e.id)return"completed";if(i.aborted)return"cancelled";v(t),b(void 0);let[a,r]=await Promise.all([(0,e4.fetchChatMessages)(e.id,e.projectPath),(0,e4.fetchChats)(e.projectPath)]),o=r.chats.find(t=>t.id===e.id);return l(e=>({...e,messages:Array.from(a.messages),chats:tK(r.chats),activeChat:o??e.activeChat})),void 0!==o&&t_(o),"completed"}catch(e){if(e instanceof DOMException&&"AbortError"===e.name)return"cancelled";return f(tO(e)),l(e=>({...e,messages:e.messages.filter(e=>e.id!==a)})),"failed"}},[O]),J=(0,a.useCallback)(()=>{tP(h.current)&&(p.current?.abort(),p.current=null,O("cancelled"))},[O]),Z=(0,a.useCallback)(async()=>{if(tP(h.current))return;let e=s.trim(),t=n.activeChat,a=n.activeProject,r=tU(n.selectedModel,n.models);if(0===e.length||void 0===t||void 0===a||void 0===r)return;if(tz(tf({modelContextWindow:n.models.find(e=>e.id===r)?.contextWindow??0,modelMaxOutputTokens:n.models.find(e=>e.id===r)?.maxOutputTokens??0,userDraftText:e,conversationHistory:n.messages.filter(e=>"user"===e.role||"assistant"===e.role).map(e=>({role:e.role,content:e.content}))})))return void f(tM);let o={id:`local-${String(Date.now())}`,chatId:t.id,role:"user",content:e,timestamp:Date.now(),runId:void 0,workflowId:void 0,workflowStatus:void 0,shortResult:void 0,taskType:void 0};O("queued"),i(""),f(void 0),l(e=>({...e,messages:[...e.messages,o]}));let c=new AbortController;p.current=c,b(void 0);try{let n=void 0!==t.connectedScope||void 0!==t.connectedScopes&&t.connectedScopes.length>0||void 0!==t.localKnowledgeScope||void 0!==t.localKnowledgeScopes&&t.localKnowledgeScopes.length>0,{entries:l,disclosures:s}=n?{entries:[],disclosures:[]}:await q(),i=n?await X(t,a,e,o.id,r,c.signal):await Q(t,a,e,o.id,r,c.signal,l);"cancelled"===h.current||O(i),"completed"===i&&(L(),$(s))}finally{p.current=null}},[s,n.activeChat,n.activeProject,n.selectedModel,n.models,n.messages,X,Q,q,L,O]),ee=(0,a.useCallback)(()=>{v(void 0),b(void 0),l(e=>({...e,messages:[]}))},[]),et=(0,a.useMemo)(()=>{let e=n.models.find(e=>e.id===n.selectedModel);if(void 0===e)return;let t=n.messages.filter(e=>"user"===e.role||"assistant"===e.role).map(e=>({role:e.role,content:e.content})),a=0,l=0;void 0!==g&&(("connected-context"===g.groundingKind||"hybrid"===g.groundingKind)&&(a=("hybrid"===g.groundingKind?g.contextPack.folder:g.contextPack).usage.excerptBytes),("local-knowledge"===g.groundingKind||"hybrid"===g.groundingKind)&&(l=4*("hybrid"===g.groundingKind?g.contextPack.knowledge:g.contextPack).referenceBudget));let i=y&&void 0!==x&&x.context.enabled?x.context.text.length:0;return tf({modelContextWindow:e.contextWindow,modelMaxOutputTokens:e.maxOutputTokens,userDraftText:s,conversationHistory:t,repoContextPackBytes:a,knowledgeCapsuleBytes:l,memoryContextBytes:i})},[n.models,n.selectedModel,n.messages,s,g,x,y]),en=(0,a.useCallback)(async e=>{if(tP(h.current))return{ok:!1,reason:"request-failed",message:"A request is already in flight."};let t=e.text.trim();if(0===t.length)return{ok:!1,reason:"missing-input"};let a=n.activeChat,s=n.activeProject;if(void 0===a||void 0===s)return{ok:!1,reason:"missing-chat"};let i=n.models.find(t=>t.id===e.modelId);if(void 0===i||!e8(i))return{ok:!1,reason:"not-workflow-eligible"};let r=th(e.workflowId);if(void 0===r)return{ok:!1,reason:"unknown-workflow"};let o=Date.now(),c=r.buildInput(s.path,t);try{let n=await (0,e4.startChatRun)({chatId:a.id,projectPath:s.path,run:{workflowId:e.workflowId,input:c,modelId:e.modelId},user:{content:t,timestamp:o},summary:{content:`Launched: ${r.label}`,timestamp:o+1}});return l(e=>({...e,messages:Array.from(n.messages)})),{ok:!0,runId:n.run.runId}}catch(t){let e=tO(t);return f(e),{ok:!1,reason:"request-failed",message:e}}},[n.activeChat,n.activeProject,n.models]),ea=(0,a.useCallback)(async e=>{if(tP(h.current))return{ok:!1,reason:"request-failed",message:"A request is already in flight."};if(void 0===n.activeChat)return{ok:!1,reason:"missing-chat"};if(0===e.modelId.trim().length)return{ok:!1,reason:"missing-model"};try{let t=await (0,e4.startGroundedWorkflowHandoff)({assistantMessageId:e.assistantMessageId,chatId:n.activeChat.id,modelId:e.modelId,workflowKind:e.workflowKind,input:e.input,editablePaths:e.editablePaths,...void 0===e.expectedChecks?{}:{expectedChecks:e.expectedChecks},...void 0===e.unknowns?{}:{unknowns:e.unknowns},requestedAtMs:Date.now()});return l(e=>({...e,messages:Array.from(t.messages)})),{ok:!0,runId:t.run.runId}}catch(t){let e=tO(t);return f(e),{ok:!1,reason:"request-failed",message:e}}},[n.activeChat]),el=(0,a.useCallback)(e=>{t_(e),l(t=>({...t,chats:t.chats.map(t=>t.id===e.id?e:t),activeChat:t.activeChat?.id===e.id?e:t.activeChat}))},[]);return{projects:n.projects,chats:n.chats,messages:n.messages,models:n.models,activeProject:n.activeProject,activeChat:n.activeChat,selectedModel:n.selectedModel,noEligibleModels:!r&&void 0===tU(n.selectedModel,n.models),draft:s,loading:r,sending:u,sendStatus:c,error:m,setDraft:i,setSelectedModel:K,openNewChat:_,openProject:B,openChat:U,addProject:W,sendMessage:Z,cancelSend:J,replaceChat:el,latestGrounded:g,cancelGrounded:J,pendingAttachments:I,addPendingAttachment:T,removePendingAttachment:A,clearPendingAttachments:L,lastSentDocuments:R,budget:et,memoryEnabled:y,setMemoryEnabled:j,memoryBudgetTokens:w,setMemoryBudgetTokens:k,latestMemory:x,clearLatestMemory:P,acceptMemoryCandidate:D,rejectMemoryCandidate:F,forgetMemoryAction:z,clearHistory:ee,launchWorkflowFromConversation:en,launchGroundedWorkflowHandoff:ea}}let tY="keiko.theme",tV="dark";var tQ=e.i(66702);let tX=["agent","capsule","capsule-set","chat","connector","data-source","evidence-run","mcp-tool","memory","patch-proposal","skill","tool","workflow-run","workspace-path"],tJ=["capsule","capsule-set","chat","evidence-run","memory","patch-proposal","tool","workflow-run","workspace-path"],tZ=["reads-context","proposes-patch","uses-tool","starts-workflow","produces-evidence","references-document","depends-on"],t0=["draft","active","archived","superseded","revoked","blocked","stale"],t1={"reads-context":{id:"reads-context",displayName:"reads context",semantics:"A consumer endpoint reads the contextual content of the target at a specific point in time.",validSourceKinds:["workflow-run","chat"],validTargetKinds:["memory","capsule","capsule-set","evidence-run","workspace-path","connector","data-source"],cardinality:"N:N",direction:"directed",lifecycle:{creatable:!0,immutable:!0,reconnectable:!1,deletable:!1,archivable:!0},auditEventOnMutation:!0,evidenceRelevance:"reference",ownerPackage:"@oscharko-dev/keiko-workflows",trustBoundary:"per-endpoint"},"proposes-patch":{id:"proposes-patch",displayName:"proposes patch",semantics:"A workflow run proposes a patch against one or more workspace paths. The relationship records the proposal; diff content stays in the harness PatchProposedEvent.",validSourceKinds:["workflow-run"],validTargetKinds:["workspace-path","patch-proposal"],cardinality:"1:N",direction:"directed",lifecycle:{creatable:!0,immutable:!0,reconnectable:!1,deletable:!0,archivable:!0},auditEventOnMutation:!0,evidenceRelevance:"reference",ownerPackage:"@oscharko-dev/keiko-workflows",trustBoundary:"fs"},"uses-tool":{id:"uses-tool",displayName:"uses tool",semantics:"A workflow run uses a registered tool. Per-call arguments and results remain in the harness ToolCallRequest / ToolCallResult envelopes.",validSourceKinds:["workflow-run"],validTargetKinds:["tool","mcp-tool"],cardinality:"N:N",direction:"directed",lifecycle:{creatable:!0,immutable:!0,reconnectable:!1,deletable:!1,archivable:!0},auditEventOnMutation:!0,evidenceRelevance:"reference",ownerPackage:"@oscharko-dev/keiko-workflows",trustBoundary:"tool"},"starts-workflow":{id:"starts-workflow",displayName:"starts workflow",semantics:"A chat or a parent workflow run initiates a workflow run. The relationship records the origin; run identity belongs to the workflow ledger.",validSourceKinds:["chat","workflow-run"],validTargetKinds:["workflow-run"],cardinality:"1:N",direction:"directed",lifecycle:{creatable:!0,immutable:!0,reconnectable:!1,deletable:!1,archivable:!0},auditEventOnMutation:!0,evidenceRelevance:"reference",ownerPackage:"@oscharko-dev/keiko-workflows",trustBoundary:"per-endpoint"},"produces-evidence":{id:"produces-evidence",displayName:"produces evidence",semantics:"A workflow run produces exactly one durable evidence-run record. If a run produces no evidence, no relationship is recorded.",validSourceKinds:["workflow-run"],validTargetKinds:["evidence-run"],cardinality:"1:1",direction:"directed",lifecycle:{creatable:!0,immutable:!0,reconnectable:!1,deletable:!1,archivable:!0},auditEventOnMutation:!0,evidenceRelevance:"produces",ownerPackage:"@oscharko-dev/keiko-evidence",trustBoundary:"evidence"},"references-document":{id:"references-document",displayName:"references document",semantics:"A chat or workflow run holds a structural pointer to a document (workspace file or local-knowledge capsule). Distinct from reads-context: a reference is structural, a read is an event.",validSourceKinds:["chat","workflow-run"],validTargetKinds:["workspace-path","capsule","capsule-set"],cardinality:"N:N",direction:"directed",lifecycle:{creatable:!0,immutable:!1,reconnectable:!0,deletable:!0,archivable:!0},auditEventOnMutation:!0,evidenceRelevance:"reference",ownerPackage:"@oscharko-dev/keiko-workflows",trustBoundary:"per-endpoint"},"depends-on":{id:"depends-on",displayName:"depends on",semantics:"A capsule, capsule-set, workflow run, or memory depends on another. Used by impact analysis (#542). Self-loops and direct two-edge cycles are forbidden at validation time; transitive cycle detection is deferred to impact traversal.",validSourceKinds:["capsule","capsule-set","workflow-run","memory"],validTargetKinds:["capsule","capsule-set","workflow-run","memory","evidence-run","workspace-path"],cardinality:"N:N",direction:"directed",lifecycle:{creatable:!0,immutable:!1,reconnectable:!0,deletable:!0,archivable:!0},auditEventOnMutation:!0,evidenceRelevance:"reference",ownerPackage:"@oscharko-dev/keiko-contracts",trustBoundary:"per-endpoint"}},t2=["prompt","documentcontent","filecontent","toolstdout","toolstderr","secret","credential","apikey","password","token"],t4="Unable to reach the local backend. Check that the Keiko server is running (keiko ui).";class t3 extends Error{code;status;reasons;constructor(e,t,n,a=[]){super(t),this.name="RelationshipApiError",this.code=e,this.status=n,this.reasons=a}}async function t5(e){let t;try{t=await e.json()}catch{throw new t3("relationship/parse-error","Response is not valid JSON.",e.status)}if(!e.ok){let n=t,a=n.error??n,l="string"==typeof a.code?a.code:"relationship/unknown-error",s="string"==typeof a.message?a.message:"An unknown error occurred.",i=Array.isArray(n.reasons)?n.reasons:[];throw new t3(l,s,e.status,i)}return t}function t6(e){let t={"Content-Type":"application/json","X-Keiko-CSRF":"1"};return void 0!==e.idempotencyKey&&(t["Idempotency-Key"]=e.idempotencyKey),void 0!==e.ifMatch&&(t["If-Match"]=e.ifMatch),t}async function t8(e){let t={schemaVersion:"1",proposal:{type:e.type,source:{kind:e.source.kind,id:e.source.id},target:{kind:e.target.kind,id:e.target.id},...void 0!==e.summary?{summary:e.summary}:{}}},n=await fetch("/api/relationships/validate",{method:"POST",headers:t6({}),body:JSON.stringify(t)});return{decision:(await t5(n)).decision}}async function t9(e,t){let n={schemaVersion:"1",proposal:{type:e.type,source:{kind:e.source.kind,id:e.source.id},target:{kind:e.target.kind,id:e.target.id},...void 0!==e.summary?{summary:e.summary}:{}}},a=await fetch("/api/relationships",{method:"POST",headers:t6({idempotencyKey:t}),body:JSON.stringify(n)}),l=await t5(a);return{relationship:l.relationship,etag:l.etag}}async function t7(e){let t=new URLSearchParams;void 0!==e.lifecycle&&t.set("lifecycle",e.lifecycle),void 0!==e.type&&t.set("type",e.type),void 0!==e.sourceKind&&t.set("sourceKind",e.sourceKind),void 0!==e.targetKind&&t.set("targetKind",e.targetKind),void 0!==e.sourceId&&t.set("sourceId",e.sourceId),void 0!==e.targetId&&t.set("targetId",e.targetId),void 0!==e.limit&&t.set("limit",String(e.limit)),void 0!==e.cursor&&t.set("cursor",e.cursor);let n=await fetch(`/api/relationships?${t.toString()}`),a=await t5(n);return{entries:a.entries,truncated:a.truncated,nextCursor:a.nextCursor}}async function ne(e){let t=await fetch(`/api/relationships/${encodeURIComponent(e)}`);return(await t5(t)).relationship}async function nt(e,t,n,a){let l=await fetch(`/api/relationships/${encodeURIComponent(e)}`,{method:"PATCH",headers:t6({idempotencyKey:a,ifMatch:n}),body:JSON.stringify({schemaVersion:"1",...t})}),s=await t5(l);return{relationship:s.relationship,etag:s.etag}}async function nn(e,t,n){let a=await fetch(`/api/relationships/${encodeURIComponent(e)}`,{method:"DELETE",headers:t6({idempotencyKey:n,ifMatch:t})});return(await t5(a)).relationship}async function na(e,t={}){let n=new URLSearchParams;void 0!==t.direction&&n.set("direction",t.direction),void 0!==t.maxDepth&&n.set("maxDepth",String(t.maxDepth)),void 0!==t.maxNodes&&n.set("maxNodes",String(t.maxNodes)),void 0!==t.maxRelationships&&n.set("maxRelationships",String(t.maxRelationships));let a=await fetch(`/api/relationships/${encodeURIComponent(e)}/dependencies?${n.toString()}`);return(await t5(a)).report}async function nl(e){return t5(await fetch(`/api/relationships/${encodeURIComponent(e)}/explain`))}async function ns(){return t5(await fetch("/api/relationships/health"))}let ni=[{key:"t",mod:["cmd"]},{key:"t",mod:["ctrl"]},{key:"r",mod:["cmd"]},{key:"r",mod:["ctrl"]},{key:"n",mod:["cmd","shift"]},{key:"n",mod:["ctrl","shift"]},{key:"w",mod:["cmd"]},{key:"w",mod:["ctrl"]}];function nr(e){switch(e.kind){case"ui.window.move":return"Move window";case"ui.window.resize":return"Resize window";case"ui.window.zorder":return"Reorder window";case"ui.window.close":return"Close window";case"ui.window.open":return"Open window";case"ui.workspace.pan":return"Pan workspace";case"ui.workspace.zoom":return"Zoom workspace";case"ui.workspace.fit":return"Fit workspace to view";case"ui.panel.toggle":return`Toggle ${e.panel} panel`;case"ui.selection.change":return"Change selection";case"ui.tab.switch":return"Switch tab"}}function no(e){let t=[...e.mod].sort();return`${t.join("+")}|${e.key.toLowerCase()}`}let nc={undoStack:[],redoStack:[]};class nd extends Error{conflicts;constructor(e){super(`Workspace keyboard shortcut conflicts detected: ${e.map(e=>`${no(e.chord)} (${e.commandIds.join(", ")})`).join("; ")}`),this.name="WorkspaceShortcutConflictError",this.conflicts=e}}class nu extends Error{reserved;constructor(e){super(`Workspace keyboard shortcut bindings refused: ${e.map(e=>`${e.commandId} → ${no(e.chord)}`).join("; ")} are browser-reserved`),this.name="WorkspaceShortcutReservedError",this.reserved=e}}let nh=[{commandId:"undo",chord:{key:"z",mod:["cmd"]}},{commandId:"redo",chord:{key:"z",mod:["cmd","shift"]}},{commandId:"focus-status",chord:{key:"s",mod:["alt"]}}];var np=e.i(57688);let nm="cmp-budget-exceeded-alert",nf={low:"Low",moderate:"Moderate",high:"High",exceeded:"Exceeded"},ng={low:"cmp-budget-badge cmp-budget-badge-low",moderate:"cmp-budget-badge cmp-budget-badge-moderate",high:"cmp-budget-badge cmp-budget-badge-high",exceeded:"cmp-budget-badge cmp-budget-badge-exceeded"},nv="Token counts are approximate. Actual model usage may vary.";function nx(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:e.toString()}function nb({budget:e,onClearHistory:t,disabled:l}){let[s,i]=(0,a.useState)(!1),[r,o]=(0,a.useState)(!1),c=(0,a.useRef)(null),d=(0,a.useRef)(null);if((0,a.useEffect)(()=>{s&&c.current?.focus()},[s]),void 0===e)return null;let u=e.contextWindowTokens>0,h=nx(e.approximateTokens),p=nx(e.contextWindowTokens),m=e.pressure,f=u&&"exceeded"===m;return(0,n.jsxs)("div",{className:"cmp-budget","data-pressure":u?m:"unknown",children:[(0,n.jsxs)("div",{className:"cmp-budget-row",children:[(0,n.jsx)("span",{className:"cmp-budget-count",children:u?`Approximate context: ${h} / ${p} tokens`:`Approximate context: ${h} tokens`}),u?(0,n.jsx)("span",{className:ng[m],"aria-label":`Context pressure: ${nf[m]}`,children:nf[m]}):null,(0,n.jsx)("span",{className:"cmp-budget-info",role:"img",tabIndex:0,"aria-label":nv,"data-tip":nv,children:"i"}),s?(0,n.jsxs)("span",{className:"cmp-budget-confirm",children:[(0,n.jsx)("span",{className:"cmp-budget-confirm-label",id:"cmp-budget-confirm-label",children:"Clear history?"}),(0,n.jsx)("button",{type:"button",ref:c,className:"cmp-budget-clear","aria-describedby":"cmp-budget-confirm-label",onClick:function(){t(),i(!1),o(!0),requestAnimationFrame(()=>d.current?.focus())},children:"Clear"}),(0,n.jsx)("button",{type:"button",className:"cmp-budget-clear",onClick:function(){i(!1),requestAnimationFrame(()=>d.current?.focus())},children:"Cancel"})]}):(0,n.jsx)("button",{type:"button",ref:d,className:"cmp-budget-clear","aria-label":"Clear conversation history for next prompt",onClick:()=>{o(!1),i(!0)},disabled:!0===l,children:"Clear history"}),r?(0,n.jsx)("span",{role:"status",className:"cmp-budget-cleared",children:"History cleared for the next prompt — messages remain saved."}):null]}),f?(0,n.jsx)("div",{id:nm,role:"alert",className:"cmp-budget-alert gw-error",children:"Context exceeds the selected model's window. Clear history or pick a model with a larger context."}):null]})}function ny(e){return e<1024?`${e.toString()} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function nj(e){if(e<1e3)return`${e.toString()} ms`;if(e<6e4)return`${(e/1e3).toFixed(1)} s`;let t=Math.floor(e/6e4),n=Math.floor(e%6e4/1e3);return`${t.toString()}m ${n.toString()}s`}function nw(e){return({running:"Running",completed:"Completed","dry-run":"Dry run",rejected:"Rejected",cancelled:"Cancelled",failed:"Failed","fix-applied":"Fix applied","fix-proposed":"Fix proposed","investigation-only":"Investigation only"})[e]??e}function nk(e){return e<1e3?e.toString():`${(e/1e3).toFixed(1)}k`}function nN(e){return Number.isFinite(e)?String(e):"—"}function nS(e,t){return Number.isFinite(e)?t(e):"—"}function nC(e){return e.toLocaleString("en-US")}function nI(e){return e.replaceAll("-"," ")}function nE({label:e,value:t}){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("dt",{className:"grounded-context-pack-dt",children:e}),(0,n.jsx)("dd",{className:"grounded-context-pack-dd",children:t})]})}function nR({contextPack:e}){let{usage:t,budget:a}=e,l=function(e){if("workspace-root"===e.scopeKind)return"workspace root";let t=e.scopeId.slice(-8);return`${nI(e.scopeKind)} (${t})`}(e),s="files"===e.scopeKind?`Scope: ${String(e.fileCount)} file${1===e.fileCount?"":"s"} in ${l}`:`Scope: ${l}`;return(0,n.jsxs)("section",{className:"grounded-context-pack","aria-label":"Context inspection summary",children:[(0,n.jsx)("div",{className:"grounded-context-pack-headline",children:s}),(0,n.jsxs)("dl",{className:"grounded-context-pack-dl",children:[(0,n.jsx)(nE,{label:"Searched",value:`${String(t.searchCalls)} / ${nN(a.searchCallsMax)} searches`}),(0,n.jsx)(nE,{label:"Read",value:`${String(t.filesRead)} / ${nN(a.filesReadMax)} files`}),(0,n.jsx)(nE,{label:"Bytes",value:`${ny(t.excerptBytes)} / ${nS(a.excerptBytesMax,ny)}`}),(0,n.jsx)(nE,{label:"Input",value:`${nC(t.modelInputTokens)} / ${nS(a.modelInputTokensMax,nC)} tokens`}),(0,n.jsx)(nE,{label:"Output",value:`${nC(t.modelOutputTokens)} / ${nS(a.modelOutputTokensMax,nC)} tokens`}),(0,n.jsx)(nE,{label:"Rerank",value:`${String(t.rerankCalls)} / ${nN(a.rerankCallsMax)} calls`}),(0,n.jsx)(nE,{label:"Time",value:`${nj(e.elapsedMs)} / ${nS(a.elapsedMsMax,nj)}`}),(0,n.jsx)(nE,{label:"Query",value:nI(e.queryKind)})]})]})}function n$({score:e}){return(0,n.jsxs)("span",{className:"grounded-citation-score",children:[(0,n.jsx)("span",{className:"sr-only",children:"relevance "}),e.toFixed(2)]})}function nT({citation:e}){let t;return(0,n.jsxs)("span",{className:"grounded-citation",title:(t=`relevance ${e.score.toFixed(2)}`,void 0===e.lineRange?`Evidence citation in ${e.scopePath} — ${t}`:`Evidence citation in ${e.scopePath} at lines ${String(e.lineRange.startLine)}-${String(e.lineRange.endLine)} — ${t}`),children:[(0,n.jsx)("span",{children:void 0===e.lineRange?e.scopePath:`${e.scopePath}:${String(e.lineRange.startLine)}-${String(e.lineRange.endLine)}`}),(0,n.jsx)(n$,{score:e.score})]})}function nA({total:e,expanded:t,onToggle:a}){return e<=8?null:(0,n.jsx)("button",{type:"button",className:"grounded-citations-more","aria-expanded":t,onClick:a,children:t?"Show fewer sources":`Show all ${String(e)} sources`})}function nL({citations:e}){let[t,l]=(0,a.useState)(!1);if(0===e.length)return null;let s=[...e].sort((e,t)=>t.score-e.score),i=t?s:s.slice(0,8);return(0,n.jsxs)("div",{className:"grounded-citations-wrap",children:[(0,n.jsx)("span",{className:"grounded-citations-label",children:"Evidence"}),(0,n.jsx)("ul",{className:"grounded-citations","aria-label":"Evidence citations",children:i.map(e=>(0,n.jsx)("li",{className:"grounded-citations-item",children:(0,n.jsx)(nT,{citation:e})},e.stableId))}),(0,n.jsx)(nA,{total:s.length,expanded:t,onToggle:()=>{l(e=>!e)}})]})}function nq({citations:e}){let[t,l]=(0,a.useState)(!1);if(0===e.length)return null;let s=[...e].sort((e,t)=>t.score-e.score),i=t?s:s.slice(0,8);return(0,n.jsxs)("div",{className:"grounded-citations-wrap",children:[(0,n.jsx)("span",{className:"grounded-citations-label",children:"Knowledge citations"}),(0,n.jsx)("ul",{className:"grounded-citations","aria-label":"Knowledge citations",children:i.map(e=>(0,n.jsx)("li",{className:"grounded-citations-item",children:(0,n.jsxs)("span",{className:"grounded-citation",title:void 0===e.source?`${e.label} — relevance ${e.score.toFixed(2)}`:`${e.source} \xb7 ${e.label} — relevance ${e.score.toFixed(2)}`,children:[(0,n.jsx)("span",{children:void 0===e.source?`${e.marker} ${e.label}`:`${e.marker} ${e.source} \xb7 ${e.label}`}),(0,n.jsx)(n$,{score:e.score})]})},e.stableId))}),(0,n.jsx)(nA,{total:s.length,expanded:t,onToggle:()=>{l(e=>!e)}})]})}function nP({markers:e}){if(0===e.length)return null;let t=Array.from(new Set(e.map(e=>nI(e.kind)))).join(", ");return(0,n.jsxs)("div",{className:"grounded-uncertainty",role:"note",children:[(0,n.jsx)("div",{children:`Uncertainty (${String(e.length)} markers — ${t})`}),(0,n.jsx)("ul",{className:"grounded-uncertainty-list",children:e.map((e,t)=>(0,n.jsx)("li",{children:`${nI(e.kind)}: ${e.claim}`},`${e.kind}-${String(t)}`))})]})}function nM({omittedCount:e,omittedCounts:t}){if(e<=0)return null;let a=Object.entries(t).filter(([,e])=>e>0).sort(([e],[t])=>e<t?-1:+(e>t)).map(([e,t])=>`${nI(e)}: ${String(t)}`).join(", "),l=a.length>0?` (${a})`:"";return(0,n.jsx)("div",{className:"grounded-meta",children:`Not used: ${String(e)} excerpt${1===e?"":"s"}${l}`})}let nD=[{reason:"size-exceeded",label:"larger than 2 MB"},{reason:"binary",label:"binary or an unsupported format"},{reason:"tool-unavailable",label:"unreadable"}];function nF({omittedCounts:e}){let t=nD.map(({reason:t,label:n})=>({label:n,count:e[t]})).filter(e=>e.count>0),a=t.reduce((e,t)=>e+t.count,0);if(a<=0)return null;let l=t.map(e=>`${String(e.count)} ${e.label}`).join(", ");return(0,n.jsxs)("div",{className:"grounded-coverage-notice",role:"note",children:[(0,n.jsx)("span",{className:"grounded-coverage-notice-title",children:"Partial coverage"}),(0,n.jsx)("span",{children:`This answer reflects only the searchable files in the connected scope — ${String(a)} ${1===a?"file":"files"} ${1===a?"was":"were"} not searched (${l}). It does not cover the entire folder.`})]})}function nz({runId:e,runIds:t}){let a=Array.from(new Set([...void 0===e?[]:[e],...t??[]]));return 0===a.length?null:(0,n.jsx)("div",{className:"grounded-meta",children:a.map((e,t)=>(0,n.jsxs)("a",{className:"sm-link",href:`/api/evidence/${encodeURIComponent(e)}`,target:"_blank",rel:"noopener noreferrer",children:[1===a.length?"View connected-context audit evidence":`View connected-context audit evidence ${String(t+1)}`," ",(0,n.jsx)("span",{className:"sr-only",children:"(opens in new tab)"})]},e))})}function nO({contextPack:e}){return(0,n.jsxs)("section",{className:"grounded-context-pack","aria-label":"Knowledge scope summary",children:[(0,n.jsx)("div",{className:"grounded-context-pack-headline",children:`Knowledge scope: ${e.scopeLabel}`}),(0,n.jsxs)("dl",{className:"grounded-context-pack-dl",children:[(0,n.jsx)(nE,{label:"Mode",value:nI(e.scopeKind)}),(0,n.jsx)(nE,{label:"Capsules",value:String(e.capsuleCount)}),(0,n.jsx)(nE,{label:"Sources",value:String(e.sourceCount)}),(0,n.jsx)(nE,{label:"Citations",value:String(e.citationCount)}),(0,n.jsx)(nE,{label:"Context budget",value:`${String(e.referencesUsed)} / ${String(e.referenceBudget)} references`})]})]})}function nK({contextPack:e}){return(0,n.jsxs)("section",{className:"grounded-context-pack","aria-label":"Hybrid source summary",children:[(0,n.jsx)("div",{className:"grounded-context-pack-headline",children:`Hybrid: ${String(e.folderSourceCount)} folder source${1===e.folderSourceCount?"":"s"} + ${String(e.connectorSourceCount)} connector source${1===e.connectorSourceCount?"":"s"}`}),(0,n.jsx)(nR,{contextPack:e.folder}),(0,n.jsx)(nO,{contextPack:e.knowledge})]})}function n_({answer:e,busy:t}){return void 0===e?t?(0,n.jsx)("div",{className:"grounded-meta",children:"Searching connected sources and asking Keiko…"}):null:"local-knowledge"===e.groundingKind?(0,n.jsxs)("div",{className:"grounded-answer",children:[(0,n.jsx)(nq,{citations:e.citations}),(0,n.jsx)(nP,{markers:e.uncertainty}),(0,n.jsx)(nO,{contextPack:e.contextPack})]}):"hybrid"===e.groundingKind?(0,n.jsxs)("div",{className:"grounded-answer",children:[(0,n.jsx)(nF,{omittedCounts:e.contextPack.folder.omittedCounts}),(0,n.jsx)(nL,{citations:e.citations}),(0,n.jsx)(nq,{citations:e.knowledgeCitations}),(0,n.jsx)(nP,{markers:e.uncertainty}),(0,n.jsx)(nM,{omittedCount:e.omittedCount,omittedCounts:e.contextPack.folder.omittedCounts}),(0,n.jsx)(nz,{runId:e.evidenceRunId,runIds:e.evidenceRunIds}),(0,n.jsx)(nK,{contextPack:e.contextPack})]}):(0,n.jsxs)("div",{className:"grounded-answer",children:[(0,n.jsx)(nF,{omittedCounts:e.contextPack.omittedCounts}),(0,n.jsx)(nL,{citations:e.citations}),(0,n.jsx)(nP,{markers:e.uncertainty}),(0,n.jsx)(nM,{omittedCount:e.omittedCount,omittedCounts:e.contextPack.omittedCounts}),(0,n.jsx)(nz,{runId:e.evidenceRunId,runIds:e.evidenceRunIds}),(0,n.jsx)(nR,{contextPack:e.contextPack})]})}var nB=a;let nU=["<script","</script","<iframe","</iframe","<object","</object","<embed","</embed","<style","</style","<svg","</svg","<form","</form","<meta","<link","<base"],nW=[" ","\n"," ","'",'"'];function nH(e){let t=function(e){let t=e.toLowerCase().replaceAll("\0",""),n="";for(let e=0;e<t.length;e++){let a=t[e]??"";if("<"===a){for(n+="<";e+1<t.length&&(" "===t[e+1]||" "===t[e+1]||"\n"===t[e+1]||"\r"===t[e+1]);)e++;continue}n+=a}return n}(e);for(let e of nU)if(t.includes(e))return!0;let n=0;for(;n<t.length-4;){let e=t[n];if(nW.includes(e)&&"o"===t[n+1]&&"n"===t[n+2]){let e=n+3;for(;e<t.length&&/[a-z]/.test(t[e]??"");)e++;if(e<t.length&&"="===t[e])return!0}n++}return!1}function nG(e,t,n,a){a>n&&e.push({kind:"text",text:t.slice(n,a)})}function nY(e){return void 0!==e&&/[A-Za-z0-9]/.test(e)}let nV=new Set([" "," ","\n","<",">",'"']),nQ=new Set([".",",",")","]","!","?"]);function nX(e,t=0){if(t>=16)return e.length>0?[{kind:"text",text:e}]:[];let n=[],a=0,l=0;for(;a<e.length;){let s=function(e,t,n,a){if("`"!==t[n])return -1;let l=t.indexOf("`",n+1);return -1===l?-1:(nG(e,t,a,n),e.push({kind:"inline-code",text:t.slice(n+1,l)}),l+1)}(n,e,a,l);if(-1!==s||-1!==(s=function(e,t,n,a,l){let s=t[n],i=t[n+1];if(n+1>=t.length||("*"!==s||"*"!==i)&&("_"!==s||"_"!==i))return -1;let r=t.indexOf(s+i,n+2);if(-1===r)return -1;nG(e,t,a,n);let o=t.slice(n+2,r);return e.push({kind:"strong",children:nX(o,l+1)}),r+2}(n,e,a,l,t))||-1!==(s=function(e,t,n,a,l){let s=t[n];if("*"!==s&&"_"!==s||"_"===s&&nY(t[n-1])&&nY(t[n+1])||t[n+1]===s||n>0&&t[n-1]===s)return -1;let i=function(e,t,n){for(let a=n;a<e.length;a++)if(e[a]===t&&e[a-1]!==t&&(a+1>=e.length||e[a+1]!==t))return a;return -1}(t,s,n+1);return -1===i||"_"===s&&nY(t[i-1])&&nY(t[i+1])?-1:(nG(e,t,a,n),e.push({kind:"em",children:nX(t.slice(n+1,i),l+1)}),i+1)}(n,e,a,l,t))||-1!==(s=function(e,t,n,a){let l;if("["!==t[n])return -1;let s=t.indexOf("]",n+1);if(-1===s||"("!==t[s+1])return -1;let i=t.indexOf(")",s+2);if(-1===i)return -1;let r=t.slice(n+1,s),o=t.slice(s+2,i);return nG(e,t,a,n),((l=o.trim().toLowerCase()).startsWith("http://")||l.startsWith("https://"))&&!nH(r)&&!nH(o)?e.push({kind:"link",text:r,href:o}):e.push({kind:"text",text:`[${r}](${o})`}),i+1}(n,e,a,l))||-1!==(s=function(e,t,n,a){if("h"!==t[n])return -1;let l="https://"===t.slice(n,n+8),s="http://"===t.slice(n,n+7);if(!l&&!s)return -1;let i=function(e,t){let n=t;for(;n<e.length&&!nV.has(e[n]??"");)n++;for(;n>t&&nQ.has(e[n-1]??"");)n--;return n}(t,n);if(i-n<=(l?8:7))return -1;let r=t.slice(n,i);return nG(e,t,a,n),e.push({kind:"link",text:r,href:r}),i}(n,e,a,l))){l=s,a=s;continue}a++}return nG(n,e,l,e.length),n}function nJ(e){let t=e.trim(),n=t.startsWith(":"),a=t.endsWith(":");return n&&a?"center":a?"right":n?"left":void 0}function nZ(e){let t=e.trim();return t.startsWith("|")&&(t=t.slice(1)),t.endsWith("|")&&(t=t.slice(0,-1)),t.split("|")}function n0(e){let t=/^( *)([*+\-]) (.*)$/.exec(e);return t?{match:!0,indent:t[1]?.length??0,text:t[3]??""}:{match:!1}}function n1(e){let t=/^( *)\d+\. (.*)$/.exec(e);return t?{match:!0,indent:t[1]?.length??0,text:t[2]??""}:{match:!1}}function n2(e){return e.includes("|")}function n4(e){let t=e.trim();return/^(-{3,}|\*{3,}|_{3,})$/.test(t)}function n3(e,t){let n=[],a=t?n1:n0;for(;e.i<e.lines.length;){let t=e.lines[e.i]??"",l=a(t);if(l.match)n.push({text:l.text,indent:l.indent}),e.i++;else if(""===t.trim())break;else break}return function e(t,n,a){let l=n?"ol":"ul",s=[],i=0;for(;i<t.length;){let l=t[i];if(void 0===l){i++;continue}let r=l.indent,o=[];for(i++;i<t.length;){let e=t[i];if(void 0===e||e.indent<=r)break;o.push(e),i++}let c=[...nX(l.text)];o.length>0&&a<16?c.push(e(o,n,a+1)):o.length>0&&c.push({kind:"text",text:o.map(e=>e.text).join("\n")}),s.push({kind:"li",children:c})}return{kind:l,children:s}}(n,t,e.depth)}function n5({text:e}){let[t,a]=(0,nB.useState)(!1),[l,s]=(0,nB.useState)(""),i=(0,nB.useCallback)(()=>{"u"<typeof navigator||navigator.clipboard?.writeText===void 0?s("Copy unavailable: the clipboard requires a secure (HTTPS) connection."):navigator.clipboard.writeText(e).then(()=>{a(!0),s("Code copied"),setTimeout(()=>{a(!1),s("")},1500)},()=>{})},[e]);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",className:"sm-code-copy","aria-label":t?"Copied":"Copy code block",title:t?"Copied!":"Copy code block","data-copied":t?"true":"false",onClick:i,children:t?"Copied":"Copy"}),(0,n.jsx)("span",{role:"status",className:"sr-only",children:l})]})}let n6={1:"h3",2:"h4",3:"h5",4:"h6",5:"h6",6:"h6"},n8={1:"sm-h sm-h1",2:"sm-h sm-h2",3:"sm-h sm-h3",4:"sm-h sm-h4",5:"sm-h sm-h5",6:"sm-h sm-h6"};function n9(e,t){return void 0===e.children?null:e.children.map((e,n)=>n7(e,t+"-"+String(n)))}function n7(e,t){let a=function(e,t){switch(e.kind){case"paragraph":return(0,n.jsx)("p",{className:"sm-p",children:n9(e,t)},t);case"heading":{let a=e.level??1,l=n6[a],s=n8[a];return(0,n.jsx)(l,{className:s,children:n9(e,t)},t)}case"blockquote":return(0,n.jsx)("blockquote",{className:"sm-blockquote",children:n9(e,t)},t);case"hr":return(0,n.jsx)("hr",{className:"sm-hr"},t);case"code-block":{let a=e.language,l=e.text??"",s=void 0!==a?`lang-${a}`:void 0;return(0,n.jsxs)("div",{className:"sm-code-block-frame",children:[(0,n.jsxs)("div",{className:"sm-code-block-header",children:[(0,n.jsx)("span",{className:"sm-code-lang",children:a??"text"}),(0,n.jsx)(n5,{text:l})]}),(0,n.jsx)("pre",{className:"sm-pre",children:(0,n.jsx)("code",{className:s,children:l})})]},t)}default:return null}}(e,t);if(null!==a)return a;let l=function(e,t){switch(e.kind){case"ul":return(0,n.jsx)("ul",{className:"sm-ul",children:n9(e,t)},t);case"ol":return(0,n.jsx)("ol",{className:"sm-ol",children:n9(e,t)},t);case"li":return(0,n.jsx)("li",{className:"sm-li",children:n9(e,t)},t);default:return null}}(e,t);if(null!==l)return l;let s=function(e,t){let a=void 0!==e.align?{textAlign:e.align}:void 0;switch(e.kind){case"table":return(0,n.jsx)("div",{className:"sm-table-wrapper",children:(0,n.jsx)("table",{className:"sm-table",children:n9(e,t)})},t);case"thead":return(0,n.jsx)("thead",{children:n9(e,t)},t);case"tbody":return(0,n.jsx)("tbody",{children:n9(e,t)},t);case"tr":return(0,n.jsx)("tr",{children:n9(e,t)},t);case"th":return(0,n.jsx)("th",{style:a,children:n9(e,t)},t);case"td":return(0,n.jsx)("td",{style:a,children:n9(e,t)},t);default:return null}}(e,t);if(null!==s)return s;let i=function(e,t){switch(e.kind){case"text":return(0,n.jsx)("span",{children:e.text},t);case"inline-code":return(0,n.jsx)("code",{className:"sm-inline-code",children:e.text},t);case"link":return(0,n.jsxs)("a",{href:e.href,className:"sm-link",rel:"noopener noreferrer",target:"_blank",children:[e.text,(0,n.jsx)("span",{className:"sr-only",children:" (opens in new tab)"})]},t);case"strong":return(0,n.jsx)("strong",{children:n9(e,t)},t);case"em":return(0,n.jsx)("em",{children:n9(e,t)},t);default:return null}}(e,t);return null!==i?i:null}function ae({source:e}){let t=function e(t,n){let a=[],l={lines:t.split("\n"),i:0,depth:n};for(;l.i<l.lines.length;)!function(t,n){let a=t.lines[t.i]??"";if(""===a.trim())return t.i++;if(function(e,t,n){let a=/^(`{3,}|~{3,})(\S*)/.exec(t.trim());if(null===a)return!1;let l=a[1]??"```",s=a[2],i=void 0!==s&&s.length>0?s:void 0;return n.push(function(e,t,n){let a=[];for(e.i++;e.i<e.lines.length;){let n=e.lines[e.i]??"",l=/^(`{3,}|~{3,})\s*$/.exec(n.trim());if(null!==l){let n=l[1]??"";if(n.startsWith(t[0]??"")&&n.length>=t.length){e.i++;break}}a.push(n),e.i++}let l={kind:"code-block",text:a.join("\n")};return void 0!==n?{...l,language:n}:l}(e,l,i)),!0}(t,a,n)||function(e,t,n){let a=/^(#{1,6}) (.+)$/.exec(t.trim());if(null===a)return!1;let l=Math.min((a[1]??"").length,6),s=a[2]??"";return n.push({kind:"heading",level:l,children:nX(s)}),e.i++,!0}(t,a,n))return;if(n4(a)){n.push({kind:"hr"}),t.i++;return}if(a.trimStart().startsWith("> ")||">"===a.trim())return n.push(function(t){let n=[];for(;t.i<t.lines.length;){let e=t.lines[t.i]??"";if(e.trimStart().startsWith("> ")||">"===e.trim())n.push(e.replace(/^( *)> ?/,"")),t.i++;else break}let a=n.join("\n");return t.depth>=16?{kind:"blockquote",children:[{kind:"paragraph",children:[{kind:"text",text:a}]}]}:{kind:"blockquote",children:[...e(a,t.depth+1)]}}(t));if(n2(a.trim())&&function(e){if(0===e.length)return!1;for(let t of e){let e=t.trim().replace(/^:/,"").replace(/:$/,"");if(!/^-+$/.test(e))return!1}return!0}(nZ(t.lines[t.i+1]??""))&&(n.push(function(e,t){let n,a;e.i++;let l=e.lines[e.i]??"",s=[];for(e.i++;e.i<e.lines.length;){let t=e.lines[e.i]??"";if(""===t.trim()||!n2(t.trim()))break;s.push(t),e.i++}return n=nZ(t),a=nZ(l).map(nJ),{kind:"table",children:[{kind:"thead",children:[{kind:"tr",children:n.map((e,t)=>{var n;let l;return n=a[t],l={kind:"th",children:nX(e.trim())},void 0!==n?{...l,align:n}:l})}]},{kind:"tbody",children:s.map(e=>({kind:"tr",children:nZ(e).map((e,t)=>{var n;let l;return n=a[t],l={kind:"td",children:nX(e.trim())},void 0!==n?{...l,align:n}:l})}))}]}}(t,a)),1)||(n0(a).match?(n.push(n3(t,!1)),!0):!!n1(a).match&&(n.push(n3(t,!0)),!0)))return;let l=function(e){let t=[];for(;e.i<e.lines.length;){let n=e.lines[e.i]??"";if(function(e){let t=e.trim();return!!(""===t||/^#{1,6} /.test(t)||e.trimStart().startsWith("> ")||/^(`{3,}|~{3,})/.test(t))||!!n0(e).match||!!n1(e).match||n4(e)}(n))break;t.push(n),e.i++}return 0===t.length?null:{kind:"paragraph",children:nX(t.join(" "))}}(t);null!==l&&n.push(l)}(l,a);return a}(e,0);return(0,n.jsx)("div",{className:"sm-root",children:t.map((e,t)=>n7(e,String(t)))})}class at extends nB.Component{state={failed:!1};static getDerivedStateFromError(){return{failed:!0}}render(){return this.state.failed?(0,n.jsx)("div",{className:"sm-root sm-fallback","data-markdown-fallback":"true",children:this.props.source}):(0,n.jsx)(ae,{source:this.props.source})}}function an({attachment:e,onRemove:t}){var a;let l=`Remove attachment ${e.name}`,s=function(e,t=32){if(e.length<=t)return e;let n=e.lastIndexOf(".");if(n>0&&e.length-n<=8){let a=e.slice(n);return`${e.slice(0,t-a.length-1)}…${a}`}return`${e.slice(0,t-1)}…`}(e.name);return(0,n.jsxs)("div",{className:"attach-chip",role:"listitem",children:["image"===e.kind&&void 0!==e.previewDataUrl?(0,n.jsx)("img",{src:e.previewDataUrl,alt:"",className:"attach-chip-thumb",width:40,height:40}):(0,n.jsx)("span",{className:"attach-chip-icon","aria-hidden":"true",children:(0,n.jsx)(k.Icons.file,{size:16})}),(0,n.jsx)("span",{className:"attach-chip-name",title:e.name,children:s}),(0,n.jsx)("span",{className:"attach-chip-size",children:(a=e.sizeBytes)<1024?`${String(a)} B`:a<1048576?`${(a/1024).toFixed(1)} KB`:`${(a/1048576).toFixed(1)} MiB`}),(0,n.jsx)("button",{type:"button",className:"attach-chip-remove","aria-label":l,onClick:()=>t(e.id),children:(0,n.jsx)(k.Icons.close,{size:12})})]})}function aa({attachments:e,onRemove:t}){return 0===e.length?null:(0,n.jsx)("div",{className:"attach-strip",role:"list","aria-label":"Pending attachments",children:e.map(e=>(0,n.jsx)(an,{attachment:e,onRemove:t},e.id))})}function al({enabled:e,onFiles:t}){let[l,s]=(0,a.useState)(!1),[i,r]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(!e)return;let t=0,n=e=>{Array.from(e.dataTransfer?.types??[]).includes("Files")&&(t+=1,r(!0))},a=()=>{0===(t=Math.max(0,t-1))&&r(!1)},l=()=>{t=0,r(!1)};return window.addEventListener("dragenter",n),window.addEventListener("dragleave",a),window.addEventListener("drop",l),window.addEventListener("dragend",l),()=>{window.removeEventListener("dragenter",n),window.removeEventListener("dragleave",a),window.removeEventListener("drop",l),window.removeEventListener("dragend",l)}},[e]);let o=(0,a.useCallback)(t=>{e&&(t.preventDefault(),s(!0))},[e]),c=(0,a.useCallback)(()=>{s(!1)},[]),d=(0,a.useCallback)(n=>{if(n.preventDefault(),s(!1),!e)return;let a=Array.from(n.dataTransfer.files);a.length>0&&t(a)},[e,t]);return e?(0,n.jsx)("div",{className:"attach-drop-zone","data-dragover":l?"true":void 0,"data-active":i?"true":"false","aria-hidden":"true",onDragOver:o,onDragLeave:c,onDrop:d,children:(0,n.jsx)("span",{className:"attach-drop-hint",children:"Drop files here to attach"})}):null}let as="cmp-attach-disabled-hint";function ai({model:e,onFiles:t,anyModelSupportsAttachments:l=!0}){let s=(0,a.useRef)(null),i=void 0!==e&&(e.supportsImageInput||e.supportsDocumentInput),r=function(e){if(void 0===e)return"";let t=[];return e.supportsImageInput&&t.push("image/*"),e.supportsDocumentInput&&t.push(".pdf,.txt,.md,.csv,.json,.yaml,.yml"),t.join(",")}(e),o=(0,a.useCallback)(()=>{i&&s.current?.click()},[i]),c=(0,a.useCallback)(()=>{let e=Array.from(s.current?.files??[]);e.length>0&&(t(e),null!==s.current&&(s.current.value=""))},[t]);return(0,n.jsxs)(n.Fragment,{children:[i?null:(0,n.jsx)("span",{id:as,className:"sr-only",children:l?"The selected model does not support image or document input. Choose a different model to attach files.":"The selected model does not support image or document input. No configured model currently supports attachments."}),(0,n.jsx)("input",{ref:s,type:"file",multiple:!0,accept:r,className:"sr-only",tabIndex:-1,"aria-hidden":"true",onChange:c}),(0,n.jsx)("button",{type:"button",className:"cmp-icon","aria-label":"Attach file","aria-disabled":i?void 0:"true","aria-describedby":i?void 0:as,title:i?"Attach file":"Attachments not supported by this model",onClick:o,children:(0,n.jsx)(k.Icons.files,{size:16})})]})}function ar({reason:e,mimeType:t}){return void 0===e?null:(0,n.jsx)("div",{role:"alert",className:"attach-rejection-alert",children:function(e,t){switch(e){case"text-only-model":return"The selected model can't accept this attachment type. Choose a model that supports images or documents.";case"unsupported-type":return`Unsupported file type${void 0!==t&&t.length>0?`: ${t}`:""}. Supported types: images (image/*), PDF, plain text, markdown, JSON, YAML.`;case"oversized":return"File is larger than the 8 MiB limit. Choose a smaller file or summarize the content as text.";case"empty":return"Empty file. Add a file with content to attach."}}(e,t)})}function ao({documents:e}){if(0===e.length)return null;let t=e.some(e=>e.truncated);return(0,n.jsxs)("div",{role:"note",className:"sent-docs-note","aria-label":"Documents included as context",children:[(0,n.jsx)("span",{className:"sent-docs-note-label",children:1===e.length?"Document included as context:":"Documents included as context:"}),(0,n.jsx)("ul",{className:"sent-docs-note-list",children:e.map(e=>(0,n.jsxs)("li",{className:"sent-docs-note-item",children:[e.displayName,e.truncated?(0,n.jsx)("span",{className:"sent-docs-note-trunc",children:" (truncated)"}):null]},e.id))}),t?(0,n.jsx)("span",{className:"sent-docs-note-hint",children:"Some document text was truncated to fit the context limit."}):null]})}function ac({selectedModel:e,launch:t}){let[l,s]=(0,a.useState)(!1),i=(0,a.useRef)(null);return void 0!==e&&e8(e)?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("button",{ref:i,type:"button",className:"cmp-mode",title:"Launch a governed workflow with the current model","aria-haspopup":"dialog","aria-expanded":l,onClick:()=>s(!0),children:[(0,n.jsx)(k.Icons.spark,{size:14,style:{color:"var(--accent)"}})," Launch workflow",(0,n.jsx)(k.Icons.chevron,{size:12})]}),l?(0,n.jsx)(au,{modelId:e.id,launch:t,onClose:()=>{s(!1),i.current?.focus()}}):null]}):null}function ad(e){return Array.from(e.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'))}function au({modelId:e,launch:t,onClose:l}){let s=(0,a.useId)(),i=(0,a.useId)(),[r,o]=(0,a.useState)(),[c,d]=(0,a.useState)(""),[u,h]=(0,a.useState)(!1),[p,m]=(0,a.useState)(),f=(0,a.useRef)(null),g=void 0===r?void 0:th(r);async function v(){if(void 0===g||0===c.trim().length)return;h(!0),m(void 0);let n=await t({workflowId:g.workflowId,modelId:e,text:c});(h(!1),n.ok)?l():m(function(e){if(void 0!==e.message&&e.message.length>0)return e.message;switch(e.reason){case"not-workflow-eligible":return"The selected model does not support workflow runs. Pick a model with tool calling and structured output.";case"unknown-workflow":return"That workflow is no longer available.";case"missing-chat":return"Open or create a chat first, then launch the workflow.";case"missing-input":return"Provide an input before launching the workflow.";case"request-failed":return"Could not launch the workflow. Try again, or check the gateway logs.";default:return"Could not launch the workflow."}}(n))}(0,a.useEffect)(()=>{f.current?.focus()},[]),(0,a.useEffect)(()=>{function e(e){if("Escape"===e.key)return void l();if("Tab"!==e.key)return;let t=f.current;if(null===t)return;let n=ad(t);if(0===n.length){e.preventDefault(),t.focus();return}let a=n[0],s=n[n.length-1],i=document.activeElement;e.shiftKey&&(i===a||i===t)?(e.preventDefault(),s?.focus()):e.shiftKey||i!==s||(e.preventDefault(),a?.focus())}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[l]);let x=(0,n.jsx)("div",{ref:f,role:"dialog","aria-modal":"true","aria-labelledby":s,tabIndex:-1,className:"wf-dialog-overlay",children:(0,n.jsxs)("div",{className:"wf-dialog",children:[(0,n.jsx)("h2",{id:s,className:"wf-dialog-title",children:"Launch workflow"}),void 0===g?(0,n.jsx)("ul",{className:"wf-dialog-list","aria-label":"Available workflows",children:tu.map(e=>(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",className:"wf-dialog-choice",onClick:()=>o(e.workflowId),children:[(0,n.jsx)("span",{className:"wf-dialog-choice-label",children:e.label}),(0,n.jsx)("span",{className:"wf-dialog-choice-desc",children:e.description})]})},e.workflowId))}):(0,n.jsxs)("div",{className:"wf-dialog-form",children:[(0,n.jsx)("p",{className:"wf-dialog-form-desc",children:g.description}),(0,n.jsx)("label",{className:"wf-dialog-field",htmlFor:i,children:g.prompt}),(0,n.jsx)("textarea",{id:i,className:"wf-dialog-input mono",rows:3,placeholder:g.placeholder,value:c,onChange:e=>d(e.target.value)}),void 0!==p?(0,n.jsx)("div",{role:"alert",className:"wf-dialog-error",children:p}):null,(0,n.jsxs)("div",{className:"wf-dialog-actions",children:[(0,n.jsx)("button",{type:"button",className:"wf-dialog-cancel",onClick:()=>o(void 0),children:"Back"}),(0,n.jsx)("button",{type:"button",className:"wf-dialog-launch",disabled:u||0===c.trim().length,onClick:()=>{v()},children:u?"Launching…":"Launch"})]})]}),(0,n.jsx)("button",{type:"button",className:"wf-dialog-close","aria-label":"Close launch workflow",onClick:l,children:(0,n.jsx)(k.Icons.close,{size:14})})]})});return"u"<typeof document?x:(0,e2.createPortal)(x,document.body)}let ah=[{workflowKind:"unit-test-generation",label:"Generate unit tests",description:"Use the grounded evidence as read-only context and propose in-scope test changes."},{workflowKind:"bug-investigation",label:"Investigate bug",description:"Investigate a bug against the grounded evidence and keep writes inside approved paths."},{workflowKind:"verification",label:"Run verification",description:"Run verification against the grounded workspace context without granting write access."}],ap=["verify","lint","typecheck","tests","manual"];function am(e){return e.split(/\r?\n|,/).map(e=>e.trim()).filter(e=>e.length>0)}function af({answer:e,modelId:t,busy:l,launch:s}){let[i,r]=(0,a.useState)(!1),o=(0,a.useRef)(null);return void 0===e||"connected-context"!==e.groundingKind||void 0===t||e.citations.some(e=>void 0!==e.source)?null:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("button",{ref:o,type:"button",className:"cmp-mode",title:"Launch a governed workflow from this grounded answer","aria-haspopup":"dialog","aria-expanded":i,disabled:!0===l,onClick:()=>r(!0),children:[(0,n.jsx)(k.Icons.spark,{size:14,style:{color:"var(--accent)"}})," Launch grounded workflow",(0,n.jsx)(k.Icons.chevron,{size:12})]}),i?(0,n.jsx)(ag,{answer:e,modelId:t,launch:s,onClose:()=>{r(!1),o.current?.focus()}}):null]})}function ag({answer:e,modelId:t,launch:l,onClose:s}){let i=(0,a.useId)(),r=(0,a.useRef)(null),[o,c]=(0,a.useState)(),[d,u]=(0,a.useState)("file"),[h,p]=(0,a.useState)(""),[m,f]=(0,a.useState)(""),[g,v]=(0,a.useState)(""),[x,b]=(0,a.useState)(""),[y,j]=(0,a.useState)(""),[w,N]=(0,a.useState)(""),[S,C]=(0,a.useState)([]),[I,E]=(0,a.useState)(!1),[R,$]=(0,a.useState)();async function T(){if(void 0===o)return;let n=function(e,t,n,a,l,s){if("unit-test-generation"===e){if("changedFiles"===t){let e=am(n);return 0===e.length?{ok:!1,message:"Provide at least one changed file."}:{ok:!0,input:{target:{kind:"changedFiles",filePaths:e}}}}let e=n.trim();return 0===e.length?{ok:!1,message:"module"===t?"Provide a module directory.":"Provide a target file."}:"module"===t?{ok:!0,input:{target:{kind:"module",moduleDir:e}}}:{ok:!0,input:{target:{kind:"file",filePath:e}}}}if("bug-investigation"===e){let e=am(l),t=a.trim();return 0===t.length&&0===e.length?{ok:!1,message:"Provide at least a bug description or one suspected target file."}:{ok:!0,input:{report:{...0===t.length?{}:{description:t},...0===e.length?{}:{targetFiles:e}}}}}let i=am(s);return{ok:!0,input:0===i.length?{}:{targetFiles:i}}}(o,d,h,m,g,x);if(!n.ok)return void $(n.message);if(0===S.length)return void $("Select at least one expected check.");E(!0),$(void 0);let a=await l({assistantMessageId:e.assistantMessageId,modelId:t,workflowKind:o,input:n.input,editablePaths:am(y),expectedChecks:S,unknowns:am(w)});(E(!1),a.ok)?s():$(function(e){if(e.ok)return"";if(void 0!==e.message&&e.message.length>0)return e.message;switch(e.reason){case"missing-chat":return"Open a chat with the grounded answer you want to hand off.";case"missing-model":return"Pick a model before launching the grounded workflow.";default:return"Could not launch the grounded workflow."}}(a))}(0,a.useEffect)(()=>{r.current?.focus()},[]),(0,a.useEffect)(()=>{void 0!==o&&C("unit-test-generation"===o?["tests"]:["verify"])},[o]),(0,a.useEffect)(()=>{function e(e){if("Escape"===e.key)return void s();if("Tab"!==e.key)return;let t=r.current;if(null===t)return;let n=ad(t);if(0===n.length){e.preventDefault(),t.focus();return}let a=n[0],l=n[n.length-1],i=document.activeElement;e.shiftKey&&(i===a||i===t)?(e.preventDefault(),l?.focus()):e.shiftKey||i!==l||(e.preventDefault(),a?.focus())}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[s]);let A=ah.find(e=>e.workflowKind===o),L=(0,n.jsx)("div",{ref:r,role:"dialog","aria-modal":"true","aria-labelledby":i,tabIndex:-1,className:"wf-dialog-overlay",children:(0,n.jsxs)("div",{className:"wf-dialog",children:[(0,n.jsx)("h2",{id:i,className:"wf-dialog-title",children:"Grounded workflow handoff"}),void 0===A?(0,n.jsx)("ul",{className:"wf-dialog-list","aria-label":"Available grounded workflows",children:ah.map(e=>(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",className:"wf-dialog-choice",onClick:()=>c(e.workflowKind),children:[(0,n.jsx)("span",{className:"wf-dialog-choice-label",children:e.label}),(0,n.jsx)("span",{className:"wf-dialog-choice-desc",children:e.description})]})},e.workflowKind))}):(0,n.jsxs)("div",{className:"wf-dialog-form",children:[(0,n.jsx)("p",{className:"wf-dialog-form-desc",children:A.description}),"unit-test-generation"===o?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{className:"wf-dialog-field",children:["Target mode",(0,n.jsxs)("select",{className:"wf-dialog-input mono",value:d,onChange:e=>u(e.target.value),children:[(0,n.jsx)("option",{value:"file",children:"File"}),(0,n.jsx)("option",{value:"module",children:"Module"}),(0,n.jsx)("option",{value:"changedFiles",children:"Changed files"})]})]}),(0,n.jsxs)("label",{className:"wf-dialog-field",children:["module"===d?"Module directory":"changedFiles"===d?"Changed files (one per line)":"Target file",(0,n.jsx)("textarea",{className:"wf-dialog-input mono",rows:"changedFiles"===d?3:2,value:h,onChange:e=>p(e.target.value),placeholder:"module"===d?"src/components":"changedFiles"===d?"src/a.ts\nsrc/b.ts":"src/example.ts"})]})]}):null,"bug-investigation"===o?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{className:"wf-dialog-field",children:["Bug description",(0,n.jsx)("textarea",{className:"wf-dialog-input mono",rows:3,value:m,onChange:e=>f(e.target.value),placeholder:"Describe the failing behavior or regression."})]}),(0,n.jsxs)("label",{className:"wf-dialog-field",children:["Suspected target files (one per line)",(0,n.jsx)("textarea",{className:"wf-dialog-input mono",rows:2,value:g,onChange:e=>v(e.target.value),placeholder:"src/app.ts\\nsrc/lib/foo.ts"})]})]}):null,"verification"===o?(0,n.jsxs)("label",{className:"wf-dialog-field",children:["Target files (optional, one per line)",(0,n.jsx)("textarea",{className:"wf-dialog-input mono",rows:2,value:x,onChange:e=>b(e.target.value),placeholder:"src/app.ts\\nsrc/lib/foo.ts"})]}):null,(0,n.jsxs)("label",{className:"wf-dialog-field",children:["Editable paths (explicit, workspace-relative, one per line)",(0,n.jsx)("textarea",{className:"wf-dialog-input mono",rows:3,value:y,onChange:e=>j(e.target.value),placeholder:"src/example.test.ts"})]}),(0,n.jsxs)("fieldset",{className:"wf-dialog-field",style:{border:0,padding:0,margin:0},children:[(0,n.jsx)("legend",{children:"Expected checks"}),(0,n.jsx)("div",{className:"wf-dialog-form",style:{gap:8},children:ap.map(e=>(0,n.jsxs)("label",{className:"wf-dialog-choice-desc",style:{display:"flex",gap:8},children:[(0,n.jsx)("input",{type:"checkbox",checked:S.includes(e),onChange:()=>{C(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])}}),(0,n.jsx)("span",{children:e})]},e))})]}),(0,n.jsxs)("label",{className:"wf-dialog-field",children:["Unknowns (optional, one per line)",(0,n.jsx)("textarea",{className:"wf-dialog-input mono",rows:2,value:w,onChange:e=>N(e.target.value),placeholder:"Need confirmation on public API behavior"})]}),void 0!==R?(0,n.jsx)("div",{role:"alert",className:"wf-dialog-error",children:R}):null,(0,n.jsxs)("div",{className:"wf-dialog-actions",children:[(0,n.jsx)("button",{type:"button",className:"wf-dialog-cancel",onClick:()=>c(void 0),children:"Back"}),(0,n.jsx)("button",{type:"button",className:"wf-dialog-launch",disabled:I,onClick:()=>{T()},children:I?"Launching…":"Launch"})]})]}),(0,n.jsx)("button",{type:"button",className:"wf-dialog-close","aria-label":"Close grounded workflow handoff",onClick:s,children:(0,n.jsx)(k.Icons.close,{size:14})})]})});return"u"<typeof document?L:(0,e2.createPortal)(L,document.body)}function av(e){return"system"===e.role&&"string"==typeof e.runId}function ax({message:e}){let t=e.workflowStatus??"queued",a=e.workflowId??e.taskType??"workflow",l=void 0===e.runId?"":e.runId.slice(0,8);return(0,n.jsxs)("article",{className:"run-summary-card","data-testid":"run-summary-card","data-status":t,role:"group","aria-label":`Workflow run ${a} — ${t}`,children:[(0,n.jsxs)("header",{className:"run-summary-card-head",children:[(0,n.jsx)(k.Icons.spark,{size:14,style:{color:"var(--accent)"}}),(0,n.jsx)("span",{className:"run-summary-card-workflow mono",children:a}),(0,n.jsx)("span",{className:"run-summary-card-status","data-status":t,children:t})]}),(0,n.jsxs)("div",{className:"run-summary-card-body",children:[(0,n.jsx)("p",{className:"run-summary-card-line",children:e.content}),void 0!==e.shortResult&&e.shortResult.length>0?(0,n.jsx)("p",{className:"run-summary-card-result",children:e.shortResult}):null,void 0!==e.runId?(0,n.jsxs)("p",{className:"run-summary-card-meta mono",children:["run"," ",(0,n.jsx)("span",{className:"run-summary-card-runshort","data-runid":e.runId,title:e.runId,children:l})]}):null]})]})}function ab({on:e,onChange:t,label:a}){return(0,n.jsx)("button",{type:"button",role:"switch","aria-checked":e,"aria-label":a,className:`auto-toggle${e?" on":""}`,onClick:()=>{t(!e)},children:(0,n.jsx)("span",{})})}var ay=e.i(61593);let aj="cmp-no-model-alert",aw="cmp-send-hint",ak="cmp-loading-status",aN="Ask Keiko about your code…",aS="Send message — Enter to send, Shift+Enter for a new line";function aC(e){return t=>{!t.nativeEvent.isComposing&&("Enter"!==t.key||t.shiftKey||(t.preventDefault(),e()))}}let aI=/\s*[[【[]\d+[\]】]]/g;function aE({content:e}){let[t,l]=(0,a.useState)(!1),[s,i]=(0,a.useState)(""),r=(0,a.useCallback)(()=>{"u"<typeof navigator||navigator.clipboard?.writeText===void 0?i("Copy unavailable: the clipboard requires a secure (HTTPS) connection."):navigator.clipboard.writeText(e.replace(aI,"")).then(()=>{l(!0),i("Message copied"),setTimeout(()=>{l(!1),i("")},1500)},()=>{})},[e]);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",className:"chat-msg-copy","aria-label":t?"Copied":"Copy message",title:t?"Copied!":"Copy message","data-copied":t?"true":"false",onClick:r,children:t?"Copied":"Copy"}),(0,n.jsx)("span",{role:"status",className:"sr-only",children:s})]})}function aR({message:e}){let t,a;if(av(e))return(0,n.jsx)(ax,{message:e});let l="user"===e.role;return(0,n.jsx)("article",{className:"chat-msg","data-role":e.role,children:(0,n.jsxs)("div",{className:"chat-msg-bubble",children:[l?(0,n.jsx)("div",{className:"chat-msg-role",children:"You"}):(0,n.jsx)(a$,{}),l?e.content:(0,n.jsx)(at,{source:e.content}),(0,n.jsxs)("div",{className:"chat-msg-foot",children:[(0,n.jsx)("div",{className:"chat-msg-time",title:new Date(e.timestamp).toLocaleString(),children:(a=(t=new Date(e.timestamp)).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),t.toDateString()===new Date().toDateString()?a:`${t.toLocaleDateString([],{month:"short",day:"numeric"})}, ${a}`)}),l?null:(0,n.jsx)(aE,{content:e.content})]})]})})}function a$({pulsing:e=!1}){return(0,n.jsx)("div",{className:"chat-msg-brand","data-pulsing":e?"true":"false",role:"img","aria-label":"Keiko logo",children:(0,n.jsx)(np.default,{src:"/assets/keiko-logo.svg",width:22,height:22,alt:"","aria-hidden":"true"})})}function aT(){return(0,n.jsx)("article",{className:"chat-msg","data-role":"assistant",children:(0,n.jsxs)("div",{className:"chat-msg-bubble",children:[(0,n.jsx)(a$,{pulsing:!0}),(0,n.jsxs)("span",{className:"chat-typing",role:"img","aria-label":"Keiko is responding",children:[(0,n.jsx)("i",{}),(0,n.jsx)("i",{}),(0,n.jsx)("i",{})]})]})})}function aA({session:e,ready:t,selectedModelCapability:a,onAttachFiles:l,budgetExceeded:s}){let{models:i,selectedModel:r,setSelectedModel:o,draft:c,noEligibleModels:d,loading:u,sending:h,cancelSend:p,launchWorkflowFromConversation:m}=e,f=d||s||!t,g=0===c.trim().length,v=d?aj:void 0,x=d?aj:s?nm:u?ak:g?aw:void 0,b=d?"No conversation-eligible model is configured — connect a gateway in Settings":"Model",y=u||d?"":r??"";return(0,n.jsxs)("div",{className:"cmp-bar",children:[(0,n.jsx)(ai,{model:a,onFiles:l,anyModelSupportsAttachments:i.some(e=>e.supportsImageInput||e.supportsDocumentInput)}),(0,n.jsx)("span",{className:"spacer"}),(0,n.jsxs)("label",{className:"cmp-model mono",title:b,children:[(0,n.jsx)(k.Icons.cube,{size:13,style:{color:"var(--accent)"}}),(0,n.jsx)("select",{className:"cmp-model-select",value:y,"aria-label":"Model","aria-disabled":d||u?"true":void 0,"aria-describedby":v,title:b,disabled:u,onChange:e=>{d||u||o(e.target.value)},children:u?(0,n.jsx)("option",{value:"",disabled:!0,children:"Loading models…"}):d?(0,n.jsx)("option",{value:"",children:"No conversation-eligible model"}):i.filter(e=>"chat"===e.kind).map(e=>(0,n.jsx)("option",{value:e.id,children:e.id},e.id))}),(0,n.jsx)(k.Icons.chevron,{size:12})]}),(0,n.jsx)(ac,{selectedModel:a,launch:m}),null,x===aw?(0,n.jsx)("span",{id:aw,className:"sr-only",children:"Type a message to send"}):null,h?(0,n.jsx)("button",{type:"button",className:"cmp-send cmp-send-cancel","data-on":!0,"aria-label":"Cancel response",title:"Cancel response",onClick:p,children:(0,n.jsx)(k.Icons.close,{size:16})}):(0,n.jsx)("button",{type:f?"button":"submit",className:"cmp-send","data-on":!f,"aria-disabled":f,"aria-describedby":x,title:d?"No conversation-eligible model is configured — connect a gateway in Settings":s?"Context exceeds the model's window — clear history or pick a larger-context model":u?"Connecting to your gateway":g?"Type a message to send":aS,"aria-label":"Send message",children:(0,n.jsx)(k.Icons.arrowUp,{size:16})})]})}function aL(){return(0,n.jsx)("div",{id:aj,role:"alert",className:"gw-error cmp-no-model",children:"No conversation-eligible model is configured. Connect a gateway in Settings to enable chat."})}function aq(){return(0,n.jsxs)("div",{id:ak,role:"status",className:"cmp-loading-status",children:[(0,n.jsx)("span",{className:"cmp-loading-dot","aria-hidden":"true"}),"Connecting to your gateway…"]})}function aP({status:e}){let t=function(e){switch(e){case"idle":case"completed":case"failed":return"";case"queued":return"Submitting your message…";case"contacting":return"Contacting model…";case"streaming":return"Receiving response…";case"cancelled":return"Response cancelled."}}(e);return(0,n.jsx)("div",{role:"status","aria-live":"polite","data-send-status":e,className:"cmp-send-status",children:0===t.length?null:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"cmp-loading-dot","aria-hidden":"true"}),t]})})}function aM({session:e,ready:t,placeholder:l}){let{draft:s,loading:i,sending:r,sendStatus:o,setDraft:c,sendMessage:d,models:u,selectedModel:h,pendingAttachments:p,addPendingAttachment:m,removePendingAttachment:f,budget:g,clearHistory:v}=e,x=tz(g),b=(0,a.useRef)(null);(0,a.useEffect)(()=>{let e=b.current;null!==e&&(e.style.height="auto",e.style.height=`${String(Math.min(e.scrollHeight,220))}px`)},[s]);let[y,j]=(0,a.useState)(),[w,k]=(0,a.useState)(),N=u.find(e=>e.id===h),S=void 0!==N&&(N.supportsImageInput||N.supportsDocumentInput),C=(0,a.useCallback)(async e=>{let t,n;for(let a of e){let e=await m(a);e.ok||void 0!==t||(t=e.reason,n=a.type)}j(t),k(n)},[m]);return(0,n.jsxs)("div",{className:"cmp-box",children:[(0,n.jsx)(al,{enabled:S,onFiles:C}),(0,n.jsx)(aa,{attachments:p,onRemove:f}),(0,n.jsx)("textarea",{className:"cmp-input",ref:b,rows:2,value:s,"aria-label":"Chat message",placeholder:l,onChange:e=>c(e.target.value),onKeyDown:aC(d)}),(0,n.jsx)(ar,{reason:y,mimeType:w}),(0,n.jsx)(aP,{status:o}),(0,n.jsx)(nb,{budget:g,onClearHistory:v,disabled:r||i}),(0,n.jsx)(aA,{session:e,ready:t,selectedModelCapability:N,onAttachFiles:C,budgetExceeded:x})]})}function aD({session:e,noEligibleModels:t}){let{activeProject:a,setDraft:l}=e,s=void 0!==a?[`Explain the architecture of ${a.name}`,`Find a bug in ${a.name}`,`Write tests for ${a.name}`]:["Explain the architecture of this codebase","Find and fix a bug in the workspace store","Write tests for the window manager"];return(0,n.jsxs)("div",{className:"chatw-empty",children:[(0,n.jsx)("h2",{className:"chatw-empty-headline",children:"Start a Keiko conversation"}),(0,n.jsx)("p",{className:"chatw-empty-sub",children:void 0!==a?`Working in ${a.name}. What would you like to explore?`:"Pick a project from the sidebar to scope your workspace, or ask anything below."}),t?null:(0,n.jsx)("div",{className:"chatw-empty-prompts",role:"group","aria-label":"Starter prompts",children:s.map(e=>(0,n.jsxs)("button",{type:"button",className:"suggest",onClick:()=>l(e),children:[(0,n.jsx)(k.Icons.spark,{size:12,style:{color:"var(--accent)"}}),e]},e))})]})}function aF(){return(0,n.jsxs)("div",{className:"chatw-empty-no-chat",children:[(0,n.jsx)("div",{className:"chatw-empty-no-chat-icon","aria-hidden":"true",children:(0,n.jsx)(k.Icons.spark,{size:20})}),(0,n.jsx)("p",{className:"chatw-empty-no-chat-label",children:"Pick or start a chat"}),(0,n.jsx)("p",{className:"chatw-empty-no-chat-hint",children:"Select a conversation from the project sidebar, or create a new one to get started."})]})}function az({session:e,ready:t}){let{draft:a,loading:l,sending:s,sendStatus:i,cancelSend:r,setDraft:o,sendMessage:c}=e;return(0,n.jsxs)("form",{className:"composer composer-fill",onSubmit:e=>{e.preventDefault(),c()},children:[(0,n.jsxs)("div",{className:"cmp-box cmp-box-fill",children:[(0,n.jsx)("textarea",{className:"cmp-input cmp-input-mini",value:a,"aria-label":"Chat message",placeholder:l?"Loading…":"Ask Keiko…",onChange:e=>o(e.target.value),onKeyDown:aC(c)}),s?(0,n.jsx)("button",{type:"button",className:"cmp-send cmp-send-float cmp-send-cancel","data-on":!0,"aria-label":"Cancel response",title:"Cancel response",onClick:r,children:(0,n.jsx)(k.Icons.close,{size:16})}):(0,n.jsx)("button",{type:t?"submit":"button",className:"cmp-send cmp-send-float","data-on":t,"aria-disabled":!t,"aria-label":"Send message",title:aS,children:(0,n.jsx)(k.Icons.arrowUp,{size:16})})]}),(0,n.jsx)(aP,{status:i})]})}function aO(e){let t=e.localKnowledgeScopes?.[0]??e.localKnowledgeScope;return t?.kind==="capsule"?`capsule:${t.capsuleId}`:t?.kind==="capsule-set"?`capsule-set:${t.capsuleSetId}`:aK(e)?"files":"none"}function aK(e){return void 0!==e&&(void 0!==e.connectedScope||void 0!==e.connectedScopes&&e.connectedScopes.length>0)}function a_(e){return aK(e)||void 0!==e&&(void 0!==e.localKnowledgeScope||void 0!==e.localKnowledgeScopes&&e.localKnowledgeScopes.length>0)}function aB(e){return tx(e,"Unable to update knowledge scope.")}function aU({chat:e,onChatChanged:t,catalog:l,connected:s}){let{capsules:i,capsuleSets:r,loadError:o}=l,[c,d]=(0,a.useState)(!1),[u,h]=(0,a.useState)(null);async function p(n){d(!0),h(null);try{if("none"===n){let n=await (0,e4.updateChat)(e.id,{connectedScopes:null,localKnowledgeScopes:null});t(n.chat);return}if("files"===n){let n=await (0,e4.updateChat)(e.id,{localKnowledgeScopes:null});t(n.chat);return}if(n.startsWith("capsule-set:")){let a={kind:"capsule-set",capsuleSetId:n.slice(12),connectedAtMs:Date.now()},l=await (0,e4.updateChat)(e.id,{connectedScopes:null,localKnowledgeScopes:[a]});t(l.chat);return}if(n.startsWith("capsule:")){let a={kind:"capsule",capsuleId:n.slice(8),connectedAtMs:Date.now()},l=await (0,e4.updateChat)(e.id,{connectedScopes:null,localKnowledgeScopes:[a]});t(l.chat)}}catch(e){h(aB(e))}finally{d(!1)}}let m=aO(e),f=function(e,t){let n=t.map(e=>({value:`capsule:${e.id}`,label:`Knowledge capsule: ${e.displayName}`})),a=aO(e);if(!a.startsWith("capsule:")||n.some(e=>e.value===a))return n;let l=a.slice(8);return[...n,{value:a,label:`Knowledge capsule: ${l} (unavailable)`}]}(e,i),g=function(e,t){let n=t.map(e=>({value:`capsule-set:${e.id}`,label:`Capsule set: ${e.displayName}`})),a=aO(e);if(!a.startsWith("capsule-set:")||n.some(e=>e.value===a))return n;let l=a.slice(12);return[...n,{value:a,label:`Capsule set: ${l} (unavailable)`}]}(e,r),v=u??o;return(0,n.jsxs)("label",{className:"scope-grounding","data-connected":s?"true":"false",children:[(0,n.jsx)("span",{className:"scope-grounding-label mono",children:"Grounding"}),(0,n.jsxs)("select",{className:"scope-grounding-select",value:m,disabled:c,"aria-label":"Grounding mode",onChange:e=>{p(e.target.value)},children:[(0,n.jsx)("option",{value:"none",children:"Model only"}),(0,n.jsx)("option",{value:"files",disabled:!aK(e),children:"Live Files context"}),f.map(e=>(0,n.jsx)("option",{value:e.value,children:e.label},e.value)),g.map(e=>(0,n.jsx)("option",{value:e.value,children:e.label},e.value))]}),null!==v?(0,n.jsx)("span",{role:"alert",className:"scope-connect-error",children:v}):null]})}function aW({chat:e,onChatChanged:t}){let l=function(){let[e,t]=(0,a.useState)([]),[n,l]=(0,a.useState)([]),[s,i]=(0,a.useState)(null);return(0,a.useEffect)(()=>{let e=!1;return async function(){try{let[n,a]=await Promise.allSettled([(0,ay.fetchCapsules)(),(0,ay.fetchCapsuleSets)()]);if("fulfilled"!==n.status)throw n.reason;if(e)return;t(n.value.capsules.filter(e=>"ready"===e.lifecycleState)),"fulfilled"===a.status?l(a.value.capsuleSets):(l([]),i(aB(a.reason)))}catch(t){e||i(aB(t))}}(),()=>{e=!0}},[]),{capsules:e,capsuleSets:n,loadError:s}}(),s=a_(e);return(0,n.jsx)("div",{className:"chat-scope-header","data-grounded":s?"true":"false",children:(0,n.jsx)(aU,{chat:e,onChatChanged:t,catalog:l,connected:s})})}function aH({chat:e,answer:t,busy:a,selectedModelId:l,launchGroundedWorkflowHandoff:s}){return void 0!==e&&a_(e)&&(void 0!==t||a)?(0,n.jsxs)("div",{className:"chatw-grounded",children:[(0,n.jsx)(n_,{answer:t,busy:a}),(0,n.jsx)(af,{answer:t,modelId:l,busy:a,launch:s})]}):null}function aG({action:e,acceptCandidate:t,rejectCandidate:l,forgetMemoryAction:s}){let[i,r]=(0,a.useState)(!1),[o,c]=(0,a.useState)(),[d,u]=(0,a.useState)(!1);if("candidate"===e.kind)return(0,n.jsxs)("article",{className:"chat-memory-action",children:[(0,n.jsxs)("div",{className:"chat-memory-action-head",children:[(0,n.jsx)("strong",{children:e.scopeLabel}),(0,n.jsx)("span",{children:e.requiresApproval?"Approval required":"Proposed memory"})]}),(0,n.jsx)("p",{children:e.body}),(0,n.jsxs)("div",{className:"chat-memory-action-buttons",children:[(0,n.jsx)("button",{type:"button",disabled:i,onClick:()=>{r(!0),c(void 0),t(e.proposalId).catch(e=>{c(e instanceof Error?e.message:"Unable to accept memory.")}).finally(()=>r(!1))},children:"Accept"}),(0,n.jsx)("button",{type:"button",disabled:i,onClick:()=>{r(!0),c(void 0),l(e.proposalId).catch(e=>{c(e instanceof Error?e.message:"Unable to reject memory.")}).finally(()=>r(!1))},children:"Reject"})]}),void 0!==o?(0,n.jsx)("div",{role:"alert",className:"cmp-err",children:o}):null]});if("update"===e.kind)return(0,n.jsxs)("article",{className:"chat-memory-action",children:[(0,n.jsxs)("div",{className:"chat-memory-action-head",children:[(0,n.jsx)("strong",{children:"MemoriaViva update detected"}),(0,n.jsx)("span",{children:e.memoryId})]}),(0,n.jsx)("p",{children:void 0!==e.bodyPatch?`Suggested update: ${e.bodyPatch}`:"Suggested update."})]});if("forget"===e.kind){let t=()=>{r(!0),c(void 0),s(e.memoryId).then(()=>u(!1)).catch(e=>{c(e instanceof Error?e.message:"Unable to forget memory.")}).finally(()=>r(!1))};return(0,n.jsxs)("article",{className:"chat-memory-action",children:[(0,n.jsxs)("div",{className:"chat-memory-action-head",children:[(0,n.jsx)("strong",{children:"MemoriaViva forget detected"}),(0,n.jsx)("span",{children:e.requiresConfirmation?"Confirmation required":e.memoryId})]}),(0,n.jsx)("p",{children:`Matched memory ${e.memoryId} for a forget operation.`}),(0,n.jsx)("div",{className:"chat-memory-action-buttons",children:e.requiresConfirmation?d?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",disabled:i,onClick:t,children:"Forget permanently"}),(0,n.jsx)("button",{type:"button",disabled:i,onClick:()=>{c(void 0),u(!1)},children:"Cancel"})]}):(0,n.jsx)("button",{type:"button",disabled:i,onClick:()=>{c(void 0),u(!0)},children:"Review forget"}):(0,n.jsx)("button",{type:"button",disabled:i,onClick:t,children:"Forget"})}),void 0!==o?(0,n.jsx)("div",{role:"alert",className:"cmp-err",children:o}):null]})}return(0,n.jsxs)("article",{className:"chat-memory-action",children:[(0,n.jsx)("div",{className:"chat-memory-action-head",children:(0,n.jsx)("strong",{children:"MemoriaViva action not created"})}),(0,n.jsx)("p",{children:e.reason})]})}function aY({memoryEnabled:e,setMemoryEnabled:t,memoryBudgetTokens:l,setMemoryBudgetTokens:s,latestMemory:i,acceptCandidate:r,rejectCandidate:o,forgetMemoryAction:c}){let[d,u]=(0,a.useState)(!1),h="chat-memory-disclosure",p=i?.context.memories.length??0;return(0,n.jsxs)("section",{className:"chat-memory-panel","aria-label":"Conversation memory",children:[(0,n.jsxs)("div",{className:"chat-memory-panel-head",children:[(0,n.jsxs)("div",{className:"chat-memory-toggle",children:[(0,n.jsx)(ab,{on:e,onChange:t,label:"Enable MemoriaViva for the next request"}),(0,n.jsxs)("span",{children:["MemoriaViva ",e?"on":"off"]})]}),(0,n.jsxs)("label",{className:"chat-memory-budget",children:[(0,n.jsx)("span",{children:"Budget (tokens)"}),(0,n.jsx)("input",{type:"number",min:0,step:100,value:l,onChange:e=>s(Math.max(0,Number(e.target.value)||0))})]}),(0,n.jsx)("button",{type:"button",className:"chip","aria-expanded":d,"aria-controls":h,onClick:()=>u(e=>!e),children:p>0?`${String(p)} memories included`:"No memories included"})]}),d?(0,n.jsxs)("div",{id:h,className:"chat-memory-disclosure",children:[(0,n.jsx)("p",{className:"chat-memory-summary",children:void 0===i?"MemoriaViva disclosure appears after the next response.":i.context.enabled?`Used ${String(i.context.budget.used)} of ${String(i.context.budget.tokens)} MemoriaViva tokens.`:"MemoriaViva was disabled for the last request."}),i?.context.memories.map(e=>(0,n.jsxs)("article",{className:"chat-memory-item",children:[(0,n.jsxs)("div",{className:"chat-memory-item-head",children:[(0,n.jsx)("strong",{children:e.memoryId}),(0,n.jsx)("span",{children:e.inclusionReason})]}),(0,n.jsx)("p",{children:e.bodyExcerpt})]},e.memoryId)),i?.actions.map(e=>(0,n.jsx)(aG,{action:e,acceptCandidate:r,rejectCandidate:o,forgetMemoryAction:c},"candidate"===e.kind?e.proposalId:"rejected"===e.kind?e.reason:e.memoryId))]}):null]})}function aV({mini:e=!1}){let t=i(),{messages:l,draft:s,loading:r,sending:o,sendStatus:c,error:d,noEligibleModels:u,selectedModel:h,sendMessage:p,cancelGrounded:m,activeChat:f,replaceChat:g,latestGrounded:v,latestMemory:x,lastSentDocuments:b,memoryEnabled:y,setMemoryEnabled:j,memoryBudgetTokens:w,setMemoryBudgetTokens:k,acceptMemoryCandidate:N,rejectMemoryCandidate:S,launchGroundedWorkflowHandoff:C,forgetMemoryAction:I}=t,E=s.trim().length>0&&!o&&!r&&!u,R=l.filter(e=>"user"===e.role||"assistant"===e.role&&e.content.length>0||av(e)),$=(0,a.useRef)(null),T=(0,a.useRef)(!0),A=(0,a.useRef)(!1),L=R.length>0?R[R.length-1]:void 0,q=void 0===L?"":L.content;return((0,a.useEffect)(()=>{o&&!A.current&&(T.current=!0),A.current=o;let e=$.current;null!==e&&T.current&&(e.scrollTop=e.scrollHeight)},[R.length,o,q]),e)?(0,n.jsxs)("div",{className:"chatw chatw-mini",children:[void 0!==f?(0,n.jsx)(aW,{chat:f,onChatChanged:g}):null,u?(0,n.jsx)(aL,{}):null,(0,n.jsx)(az,{session:t,ready:E}),void 0!==d?(0,n.jsx)("div",{role:"alert",className:"cmp-err",children:d}):null]}):(0,n.jsxs)("div",{className:"chatw",children:[void 0!==f?(0,n.jsx)(aW,{chat:f,onChatChanged:g}):null,void 0!==f?(0,n.jsx)(aY,{memoryEnabled:y,setMemoryEnabled:j,memoryBudgetTokens:w,setMemoryBudgetTokens:k,latestMemory:x,acceptCandidate:N,rejectCandidate:S,forgetMemoryAction:I}):null,u?(0,n.jsx)("div",{className:"chatw-foot",children:(0,n.jsx)(aL,{})}):null,r?(0,n.jsx)("div",{className:"chatw-foot",children:(0,n.jsx)(aq,{})}):null,(0,n.jsx)("div",{className:"chatw-scroll",ref:$,role:"log","aria-label":"Conversation",tabIndex:0,onScroll:e=>{let t=e.currentTarget;T.current=t.scrollHeight-t.scrollTop-t.clientHeight<64},children:0===R.length?void 0!==f?(0,n.jsx)(aD,{session:t,noEligibleModels:u}):(0,n.jsx)(aF,{}):(0,n.jsxs)("div",{className:"chatw-log",children:[R.map(e=>(0,n.jsx)(aR,{message:e},e.id)),o&&"streaming"!==c?(0,n.jsxs)("div",{className:"chatw-typing-row",children:[(0,n.jsx)(aT,{}),a_(f)?(0,n.jsx)("button",{type:"button",className:"grounded-cancel-btn","aria-label":"Cancel grounded request",onClick:m,children:"Cancel"}):null]}):null,(0,n.jsx)(aH,{chat:f,answer:v,busy:o,selectedModelId:h,launchGroundedWorkflowHandoff:C}),(0,n.jsx)(ao,{documents:b})]})}),R.length>0?(0,n.jsx)("div",{className:"chatw-foot",children:(0,n.jsxs)("form",{className:"composer",onSubmit:e=>{e.preventDefault(),p()},children:[(0,n.jsx)(aM,{session:t,ready:E,placeholder:aN}),void 0!==d?(0,n.jsx)("div",{role:"alert",className:"cmp-err",children:d}):null]})}):null,0===R.length&&void 0!==f?(0,n.jsx)("div",{className:"chatw-foot",children:(0,n.jsxs)("form",{className:"composer",onSubmit:e=>{e.preventDefault(),p()},children:[(0,n.jsx)(aM,{session:t,ready:E,placeholder:r?"Connecting to your gateway…":aN}),void 0!==d?(0,n.jsx)("div",{role:"alert",className:"cmp-err",children:d}):null]})}):null,0===R.length&&void 0!==d&&void 0===f?(0,n.jsx)("div",{className:"chatw-foot",children:(0,n.jsx)("div",{role:"alert",className:"cmp-err",children:d})}):null]})}function aQ({project:e,activeProjectPath:t,chats:l,activeChatId:s,onProject:i,onChat:r}){let o=t===e.path,[c,d]=(0,a.useState)(o),u=e.available?"Available":"Unavailable";return(0,a.useEffect)(()=>{o&&d(!0)},[o]),(0,n.jsxs)("div",{className:"proj",children:[(0,n.jsxs)("button",{className:"proj-head",type:"button","data-active":o?"true":"false","aria-expanded":c,"aria-current":o?"true":void 0,"aria-label":`${e.name} (${u})`,onClick:()=>{d(e=>!e),i(e)},children:[(0,n.jsx)("span",{className:"proj-caret","data-open":c,children:(0,n.jsx)(k.Icons.chevronR,{size:13})}),(0,n.jsx)(k.Icons.folder,{size:15}),(0,n.jsx)("span",{className:"proj-name",children:e.name}),(0,n.jsx)("span",{className:"chat-time",children:u})]}),c&&(0,n.jsx)("div",{className:"proj-chats",children:o?0===l.length?(0,n.jsx)("div",{className:"proj-empty",children:"No chats"}):l.map(e=>(0,n.jsxs)("button",{type:"button",className:"chat-row","data-active":s===e.id,"aria-pressed":s===e.id,onClick:()=>{r(e)},children:[(0,n.jsx)("span",{className:"chat-title",children:e.title}),void 0!==e.branchLabel?(0,n.jsx)("span",{className:"chat-meta mono",children:e.branchLabel}):null]},e.id)):(0,n.jsx)("div",{className:"proj-empty",children:"Select project to load chats"})})]})}function aX(){let e=i();return(0,n.jsxs)("div",{className:"tw-scroll",children:[(0,n.jsx)("div",{className:"sb-section",children:(0,n.jsx)("span",{className:"sb-section-label",children:"Projects"})}),0===e.projects.length?(0,n.jsx)("div",{className:"proj-empty",children:"No registered projects"}):e.projects.map(t=>(0,n.jsx)(aQ,{project:t,activeProjectPath:e.activeProject?.path,chats:e.activeProject?.path===t.path?e.chats:[],activeChatId:e.activeChat?.id,onProject:t=>{e.openProject(t)},onChat:t=>{e.openChat(t)}},t.path))]})}function aJ({openChatWindow:e}){let t=i(),[l,s]=(0,a.useState)(""),[r,o]=(0,a.useState)("active"),[c,d]=(0,a.useState)(null),[u,h]=(0,a.useState)(""),[p,m]=(0,a.useState)(null),[f,g]=(0,a.useState)(null),[v,x]=(0,a.useState)(null),b=(0,a.useRef)(null),y=(0,a.useMemo)(()=>t.chats.filter(e=>"closed"!==e.status).length,[t.chats]),j=t.chats.length-y,w=(0,a.useMemo)(()=>[...t.chats].sort((e,t)=>t.updatedAt-e.updatedAt).filter(e=>"deleted"===r?"closed"===e.status:"closed"!==e.status).filter(e=>{let t;return 0===(t=l.trim().toLowerCase()).length||e.title.toLowerCase().includes(t)||e.selectedModel.toLowerCase().includes(t)||(e.branchLabel?.toLowerCase().includes(t)??!1)}),[l,t.chats,r]);(0,a.useEffect)(()=>{null!==c&&b.current?.focus({preventScroll:!0})},[c]);let N=async()=>{x(null);let n=await t.openNewChat(void 0,"New chat");void 0!==n&&e(n)},S=e=>{d(e.id),h(e.title),m(null),x(null)},C=async e=>{let n=u.trim();if(0===n.length||n===e.title)return void d(null);g(e.id),x(null);try{let a=await (0,e4.updateChat)(e.id,{title:n});t.replaceChat(a.chat),d(null)}catch{x("Rename failed.")}finally{g(null)}},I=async e=>{g(e.id),x(null);try{let n=await (0,e4.updateChat)(e.id,{status:"closed"});t.replaceChat(n.chat),m(null),o("deleted")}catch(t){let e=t instanceof Error?t.message:"Request failed.";x(`Delete failed: ${e}`)}finally{g(null)}},E=async e=>{g(e.id),x(null);try{let n=await (0,e4.updateChat)(e.id,{status:"open"});t.replaceChat(n.chat),m(null),o("active")}catch(t){let e=t instanceof Error?t.message:"Request failed.";x(`Restore failed: ${e}`)}finally{g(null)}};return(0,n.jsxs)("div",{className:"chat-history",children:[(0,n.jsxs)("div",{className:"chat-history-head",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"chat-history-kicker",children:"Conversations"}),(0,n.jsx)("h2",{children:"Chat History"})]}),(0,n.jsxs)("button",{type:"button",className:"lk-btn lk-btn-primary",onClick:()=>void N(),children:[(0,n.jsx)(k.Icons.newChat,{size:15}),"New"]})]}),(0,n.jsxs)("label",{className:"chat-history-search",children:[(0,n.jsx)(k.Icons.search,{size:15}),(0,n.jsx)("input",{value:l,onChange:e=>s(e.target.value),placeholder:"Search","aria-label":"Search chat history"})]}),(0,n.jsxs)("div",{className:"chat-history-tabs",role:"tablist","aria-label":"Conversation state",children:[(0,n.jsxs)("button",{type:"button",role:"tab","aria-selected":"active"===r,className:"chat-history-tab",onClick:()=>{o("active"),m(null)},children:["Active ",(0,n.jsx)("span",{children:y})]}),(0,n.jsxs)("button",{type:"button",role:"tab","aria-selected":"deleted"===r,className:"chat-history-tab",onClick:()=>{o("deleted"),m(null)},children:["Deleted ",(0,n.jsx)("span",{children:j})]})]}),null!==v?(0,n.jsx)("div",{className:"lk-alert",role:"alert",children:v}):null,(0,n.jsx)("div",{className:"chat-history-list",children:0===w.length?(0,n.jsx)("div",{className:"lk-empty",children:(0,n.jsx)("p",{className:"lk-empty-title",children:"No conversations"})}):w.map(t=>{var a;let l=eq(t).length+eP(t).length,s=c===t.id,i=p===t.id,r=f===t.id,o="closed"===t.status;return(0,n.jsxs)("article",{className:"chat-history-row","data-chat-id":t.id,"data-state":o?"deleted":"active",children:[(0,n.jsx)("div",{className:"chat-history-row-main",children:s?(0,n.jsx)("input",{ref:b,className:"chat-history-title-input",value:u,onChange:e=>h(e.target.value),onKeyDown:e=>{"Enter"===e.key&&C(t),"Escape"===e.key&&d(null)}}):(0,n.jsxs)("button",{type:"button",className:"chat-history-open",disabled:o,onClick:()=>e(t),children:[(0,n.jsx)("span",{className:"chat-history-title",children:t.title}),(0,n.jsxs)("span",{className:"chat-history-meta",children:[(a=t.updatedAt,new Intl.DateTimeFormat(void 0,{month:"short",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(new Date(a)))," / ",t.selectedModel,l>0?` / ${String(l)} sources`:""]})]})}),(0,n.jsx)("div",{className:"chat-history-actions",children:s?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",className:"lk-btn lk-btn-primary",disabled:r,onClick:()=>void C(t),children:"Save"}),(0,n.jsx)("button",{type:"button",className:"lk-btn lk-btn-ghost",disabled:r,onClick:()=>d(null),children:"Cancel"})]}):i?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",className:"lk-btn lk-btn-danger",disabled:r,onClick:()=>void I(t),children:"Delete"}),(0,n.jsx)("button",{type:"button",className:"lk-btn lk-btn-ghost",disabled:r,onClick:()=>m(null),children:"Cancel"})]}):o?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("button",{type:"button",className:"lk-btn lk-btn-primary",disabled:r,onClick:()=>void E(t),children:[(0,n.jsx)(k.Icons.restore,{size:14}),"Restore"]}),(0,n.jsx)("button",{type:"button",className:"lk-btn lk-btn-ghost",onClick:()=>S(t),children:"Rename"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",className:"lk-btn lk-btn-ghost",onClick:()=>S(t),children:"Rename"}),(0,n.jsx)("button",{type:"button",className:"lk-btn lk-btn-ghost",onClick:()=>{m(t.id),d(null)},children:"Delete"})]})})]},t.id)})})]})}function aZ(){let e=r(),t=e?.activeProject?.name??"No project selected";return(0,n.jsxs)("div",{className:"srch",children:[(0,n.jsxs)("div",{className:"srch-box",children:[(0,n.jsx)(k.Icons.search,{size:15,"aria-hidden":"true"}),(0,n.jsx)("input",{type:"search","aria-label":"Search files and symbols",placeholder:"Search files & symbols…",disabled:!0})]}),(0,n.jsxs)("div",{className:"tw-label srch-label",children:[t," ",(0,n.jsx)("span",{className:"srch-meta mono",children:"workspace search"})]}),(0,n.jsxs)("div",{className:"tw-pad",children:[(0,n.jsxs)("div",{className:"rb-placeholder",style:{height:150},children:[(0,n.jsx)("div",{className:"ph-stripes"}),(0,n.jsx)("span",{className:"rb-ph-label mono",children:"search"})]}),(0,n.jsx)("div",{className:"rb-foot mono",style:{marginTop:14},children:"Search across workspace files & symbols — coming soon."})]})]})}let a0=[{name:"Context7",img:"upstash",desc:"Up-to-date library docs",on:!0},{name:"Sequential Thinking",icon:"layers",desc:"Step-by-step reasoning",on:!0},{name:"Filesystem",icon:"files",desc:"Local file access",on:!0},{name:"GitHub",img:"github",desc:"Repos · PRs · issues",on:!0},{name:"Playwright",img:"playwright",desc:"Browser automation",on:!1},{name:"Brave Search",img:"brave",desc:"Web search",on:!1},{name:"MemoriaViva",icon:"cube",desc:"Knowledge graph",on:!0}],a1=[{name:"GitHub",img:"github",on:!0},{name:"Linear",img:"linear",on:!0},{name:"PostgreSQL",img:"postgresql",on:!0},{name:"Sentry",img:"sentry",on:!1},{name:"Slack",img:"slack",on:!1},{name:"Notion",img:"notion",on:!1}];function a2({img:e,icon:t,glyph:a}){if(void 0!==e)return(0,n.jsx)("img",{className:"pl-img",src:`/assets/icons/${e}.svg`,width:"20",height:"20",alt:""});if(void 0!==t){let e=k.Icons[t];return(0,n.jsx)("span",{className:"pl-line",children:(0,n.jsx)(e,{size:18})})}return(0,n.jsx)("span",{className:"mono pl-glyph",children:a})}function a4(){let[e,t]=(0,a.useState)(a0.map(e=>e.on)),l=e.filter(Boolean).length;return(0,n.jsxs)("div",{className:"plg",children:[(0,n.jsxs)("div",{className:"plg-sec",children:[(0,n.jsx)("span",{className:"plg-sec-t",children:"MCP Servers"}),(0,n.jsxs)("span",{className:"plg-sec-c mono",children:[l,"/",a0.length," active"]})]}),a0.map((a,l)=>{let s=e[l]??!1;return(0,n.jsxs)("div",{className:"plg-row",children:[(0,n.jsx)("span",{className:"plg-ico",children:(0,n.jsx)(a2,{img:a.img,icon:a.icon})}),(0,n.jsxs)("span",{className:"plg-text",children:[(0,n.jsx)("span",{className:"plg-name",children:a.name}),(0,n.jsx)("span",{className:"plg-desc",children:a.desc})]}),(0,n.jsx)("button",{className:`plg-dot${s?" on":""}`,title:s?"Running":"Stopped","aria-label":`${a.name}: ${s?"running":"stopped"}`,onClick:()=>{t(e=>{let t=[...e];return t[l]=!t[l],t})}})]},a.name)}),(0,n.jsx)("div",{className:"plg-sec plg-sec2",children:(0,n.jsx)("span",{className:"plg-sec-t",children:"Connectors"})}),a1.map(e=>(0,n.jsxs)("button",{className:"plg-row plg-conn","data-on":e.on,children:[(0,n.jsx)("span",{className:"plg-ico",children:(0,n.jsx)(a2,{img:e.img})}),(0,n.jsxs)("span",{className:"plg-text",children:[(0,n.jsx)("span",{className:"plg-name",children:e.name}),(0,n.jsx)("span",{className:"plg-desc",children:e.on?"Connected":"Not connected"})]}),e.on?(0,n.jsx)("span",{className:"integ-on",children:(0,n.jsx)(k.Icons.check,{size:13})}):(0,n.jsx)("span",{className:"integ-add",children:(0,n.jsx)(k.Icons.plus,{size:14})})]},e.name))]})}let a3=[{id:"nightly-review",name:"Nightly review",when:"02:00 daily",defaultOn:!0},{id:"on-push-lint",name:"On push → lint",when:"git push",defaultOn:!0},{id:"weekly-digest",name:"Weekly digest",when:"Mon 09:00",defaultOn:!1}],a5="keiko.automations.v1",a6=Object.fromEntries(a3.map(e=>[e.id,e.defaultOn]));function a8(){try{let e=localStorage.getItem(a5);if(null===e)return{...a6};let t=JSON.parse(e);if("object"!=typeof t||null===t||Array.isArray(t))return{...a6};let n={...a6};for(let[e,a]of Object.entries(t))e in a6&&"boolean"==typeof a&&(n[e]=a);return n}catch{return{...a6}}}function a9(){let[e,t]=(0,a.useState)(a8);return(0,n.jsx)("div",{className:"tw-list",children:a3.map(a=>{let l=e[a.id]??a.defaultOn;return(0,n.jsxs)("div",{className:"auto-row",children:[(0,n.jsx)("span",{className:"dot",style:{background:l?"var(--accent)":"var(--fg-faint)"}}),(0,n.jsxs)("span",{className:"auto-text",children:[(0,n.jsx)("span",{className:"auto-name",children:a.name}),(0,n.jsx)("span",{className:"auto-when mono",children:a.when})]}),(0,n.jsx)(ab,{on:l,onChange:()=>{var e;e=a.id,t(t=>{let n={...t,[e]:!t[e]};return localStorage.setItem(a5,JSON.stringify(n)),n})},label:a.name})]},a.id)})})}function a7(){return(0,n.jsxs)("div",{className:"tw-pad mob",children:[(0,n.jsxs)("div",{className:"mob-qr",children:[(0,n.jsx)("div",{className:"ph-stripes"}),(0,n.jsx)(k.Icons.mobile,{size:28,style:{position:"relative",color:"var(--fg-dim)"}})]}),(0,n.jsx)("div",{className:"mob-title",children:"Keiko Mobile"}),(0,n.jsx)("div",{className:"mob-sub",children:"Scan to continue this workspace on your phone."})]})}function le(){var e;let t,{wins:l,active:s,winCount:i}=(0,a.useContext)(w),r=null!==s?el[s.type]:null,o=null!==s?Object.entries(s.cfg).filter(([,e])=>""!==e&&null!=e):[];return(0,n.jsxs)("div",{className:"tw-pad",children:[(0,n.jsx)("div",{className:"rb-section-label",style:{marginTop:0},children:"Active window"}),null!==s&&null!==r?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"insp-top",children:[(0,n.jsx)("span",{className:"insp-ico",style:{color:!0===r.accent?"var(--accent)":"var(--fg-muted)"},children:(e=r.icon,t=k.Icons[e],(0,n.jsx)(t,{size:16}))}),(0,n.jsx)("span",{className:"insp-title",children:r.title})]}),(0,n.jsxs)("div",{className:"rb-rows",children:[(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"Size"}),(0,n.jsxs)("span",{className:"rb-row-v mono",children:[Math.round(s.w)," × ",Math.round(s.h)]})]}),(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"Position"}),(0,n.jsxs)("span",{className:"rb-row-v mono",children:[Math.round(s.x),", ",Math.round(s.y)]})]}),(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"State"}),(0,n.jsx)("span",{className:"rb-row-v mono",children:s.max?"maximized":"floating"})]})]}),o.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"rb-section-label",children:"Configuration"}),(0,n.jsx)("div",{className:"rb-rows",children:o.map(([e,t])=>(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:e}),(0,n.jsx)("span",{className:"rb-row-v mono",children:String(t).slice(0,20)||"—"})]},e))})]}),(0,n.jsx)("div",{className:"rb-section-label insp-governance",children:"Governance"}),(0,n.jsxs)("div",{className:"rb-rows insp-governance","data-testid":"insp-governance",children:[(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"Authority"}),(0,n.jsx)("span",{className:"rb-row-v mono",children:eu[s.type].authority})]}),(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"Persistence"}),(0,n.jsx)("span",{className:"rb-row-v mono",children:eu[s.type].persistence})]}),(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"Trust"}),(0,n.jsx)("span",{className:"rb-row-v mono",children:eu[s.type].trustBoundary.join(", ")})]}),(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"Lifecycle"}),(0,n.jsx)("span",{className:"rb-row-v mono",children:eu[s.type].lifecycle.join(" → ")})]})]})]}):(0,n.jsx)("div",{className:"insp-empty",children:"No window focused"}),(0,n.jsx)("div",{className:"rb-section-label",children:"Workspace"}),(0,n.jsx)("div",{className:"rb-rows",children:(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"Open windows"}),(0,n.jsx)("span",{className:"rb-row-v mono",children:i})]})})]})}let lt=[{t:"Agent finished build-board",time:"2m",c:"var(--accent)"},{t:"diff-review ready to merge",time:"9m",c:"var(--info)"},{t:"lint-pass queued",time:"14m",c:"var(--fg-faint)"}];function ln(){return(0,n.jsx)("div",{className:"tw-list",children:lt.map((e,t)=>(0,n.jsxs)("div",{className:"nt-row",children:[(0,n.jsx)("span",{className:"dot",style:{background:e.c,marginTop:6}}),(0,n.jsxs)("span",{className:"nt-text",children:[(0,n.jsx)("span",{className:"nt-title",children:e.t}),(0,n.jsxs)("span",{className:"nt-time mono",children:[e.time," ago"]})]})]},t))})}function la(){return(0,n.jsxs)("div",{className:"tw-pad",children:[(0,n.jsxs)("div",{className:"rb-placeholder",style:{height:150},children:[(0,n.jsx)("div",{className:"ph-stripes"}),(0,n.jsx)("span",{className:"rb-ph-label mono",children:"resources"})]}),(0,n.jsx)("div",{className:"rb-foot mono",style:{marginTop:14},children:"Shared assets & references — coming soon."})]})}let ll="keiko-activity",ls={step:"var(--fg-dim)",approval:"var(--warn)",approved:"var(--accent)",rejected:"var(--danger)",stopped:"var(--danger)",open:"var(--info)","twin-approved":"var(--accent)","twin-denied":"var(--danger)"};function li(){let e=function(){let[,e]=(0,a.useState)(0);return(0,a.useEffect)(()=>{let t=()=>{e(e=>e+1)};return window.addEventListener(ll,t),()=>{window.removeEventListener(ll,t)}},[]),window.__keikoActivity??[]}();return(0,n.jsxs)("div",{className:"tl",role:"log","aria-label":"Activity timeline",children:[0===e.length&&(0,n.jsxs)("div",{className:"tl-empty",children:["No activity yet.",(0,n.jsx)("br",{}),"Start an agent to see its actions stream here."]}),e.map((e,t)=>(0,n.jsxs)("div",{className:"tl-row",children:[(0,n.jsx)("span",{className:"tl-dot","aria-hidden":"true",style:{background:ls[e.type]??"var(--fg-faint)"}}),(0,n.jsxs)("div",{className:"tl-body",children:[(0,n.jsx)("span",{className:"visually-hidden",children:e.type}),(0,n.jsx)("span",{className:"tl-text",children:e.text}),(0,n.jsxs)("span",{className:"tl-meta mono",children:[e.agent??"workspace"," · ",new Date(e.time).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})]})]})]},t))]})}function lr({name:e,icon:t}){let a,l=t??("dockerfile"===(a=e.toLowerCase())||a.includes("docker-compose")||a.endsWith(".dockerignore")?"docker":a.endsWith(".json")?"json":a.endsWith(".yml")||a.endsWith(".yaml")?"yaml":a.endsWith(".md")?"markdown":a.endsWith(".properties")||a.endsWith(".env")||a.startsWith(".env.")?"properties":a.endsWith(".java")?"java":a.endsWith(".tsx")?"react":a.endsWith(".ts")?"typescript":a.endsWith(".jsx")||a.endsWith(".js")||a.endsWith(".mjs")||a.endsWith(".cjs")?"javascript":a.endsWith(".py")?"python":a.endsWith(".go")?"go":a.endsWith(".rs")?"rust":a.endsWith(".gradle")?"gradle":a.endsWith(".sql")?"postgresql":a.endsWith(".html")?"html5":a.endsWith(".css")?"css3":a.endsWith(".graphql")||a.endsWith(".gql")?"graphql":a.endsWith(".png")||a.endsWith(".jpg")||a.endsWith(".jpeg")||a.endsWith(".gif")||a.endsWith(".webp")||a.endsWith(".svg")?"image":null);return null!==l?(0,n.jsx)("img",{className:"fi-img",src:`/assets/icons/${l}.svg`,width:"15",height:"15",alt:""}):(0,n.jsx)("span",{className:"fi-fallback",children:(0,n.jsx)(k.Icons.file,{size:14})})}let lo={jsx:"js",js:"js",mjs:"js",ts:"ts",tsx:"ts",java:"java",kt:"kotlin",kts:"kotlin",py:"py",rb:"py",go:"go",rs:"rust",json:"json",yml:"yaml",yaml:"yaml",md:"md",markdown:"md",html:"html",xml:"html",css:"css",sql:"sql",sh:"sh",bash:"sh",cob:"cobol",cbl:"cobol",gradle:"js",graphql:"graphql",gql:"graphql",properties:"props",toml:"props",env:"props",dockerfile:"docker"};function lc(e){let t=e.toLowerCase();if(".env"===t||t.startsWith(".env."))return"props";if("dockerfile"===t||t.startsWith("dockerfile"))return"docker";if(t.includes("docker-compose"))return"yaml";let n=t.split("."),a=n.length>1?n[n.length-1]:void 0;return void 0===a?"code":lo[a]??"code"}let ld=new Set("const let var function return if else for while do switch case break continue import from export default class extends implements interface enum new async await yield of in typeof instanceof this super public private protected static final readonly void int long double float boolean char byte short val fun object data override companion package def pass lambda try catch except finally throw throws raise with as not and or is null nil None True False true false undefined struct impl trait pub use mod match where select insert update delete create table from join on group by order limit FROM RUN CMD ENV COPY WORKDIR EXPOSE ENTRYPOINT AS".split(" "));function lu(e){let t=[];return e.split(/(`[^`]+`|\*\*[^*]+\*\*)/).forEach(e=>{""!==e&&(e.startsWith("`")?t.push(["str",e]):e.startsWith("**")?t.push(["type",e]):t.push(["id",e]))}),t.length>0?t:[["id",e]]}function lh(e,t){if("md"===t)return e.split("\n").map(e=>{if(/^#{1,6}\s/.test(e))return[["head",e]];if(/^\s*```/.test(e))return[["com",e]];let t=/^(\s*)([-*+]|\d+\.)(\s)/.exec(e);return null!==t?[["ws",t[1]??""],["key",t[2]??""],["ws",t[3]??""],...lu(e.slice(t[0].length))]:lu(e)});if("json"===t)return e.split("\n").map(e=>{let t=[],n=0;for(;n<e.length;){let a=e.slice(n),l=/^"(?:[^"\\]|\\.)*"/.exec(a);if(null!==l){let a=e.slice(n+l[0].length),s=/^\s*:/.test(a);t.push([s?"key2":"str",l[0]]),n+=l[0].length;continue}let s=/^-?\d[\d.eE+\-]*/.exec(a);if(null!==s){t.push(["num",s[0]]),n+=s[0].length;continue}let i=/^(true|false|null)\b/.exec(a);if(null!==i){t.push(["lit",i[0]]),n+=i[0].length;continue}let r=/^\s+/.exec(a);if(null!==r){t.push(["ws",r[0]]),n+=r[0].length;continue}t.push(["punct",a.charAt(0)]),n+=1}return t});let n="py"===t||"sh"===t||"yaml"===t||"props"===t||"docker"===t?{line:"#",block:null}:"sql"===t?{line:"--",block:["/*","*/"]}:"cobol"===t?{line:"*>",block:null}:"html"===t?{line:null,block:["<!--","-->"]}:{line:"//",block:["/*","*/"]},a={inBlock:!1},l=[];for(let t of e.split("\n"))l.push(function(e,t,n){let a=[],l=0;if(t.inBlock&&null!==n.block){let s=e.indexOf(n.block[1]);if(-1===s)return a.push(["com",e]),a;a.push(["com",e.slice(0,s+n.block[1].length)]),l=s+n.block[1].length,t.inBlock=!1}for(;l<e.length;){let s=e.slice(l);if(null!==n.line&&s.startsWith(n.line)){a.push(["com",s]);break}if(null!==n.block&&s.startsWith(n.block[0])){let i=e.indexOf(n.block[1],l+n.block[0].length);if(-1===i){a.push(["com",s]),t.inBlock=!0;break}a.push(["com",e.slice(l,i+n.block[1].length)]),l=i+n.block[1].length;continue}let i=/^(?:"(?:[^"\\]|\\.)*"?|'(?:[^'\\]|\\.)*'?)/.exec(s);if(null!==i&&i[0].length>1){a.push(["str",i[0]]),l+=i[0].length;continue}if(/^\d/.test(s)){let e=/^\d[\w.]*/.exec(s),t=e?.[0]??s.charAt(0);a.push(["num",t]),l+=t.length;continue}let r=/^[@A-Za-z_$][\w$]*/.exec(s);if(null!==r){let t=r[0],n="id";ld.has(t)?n="key":t.startsWith("@")||/^[A-Z]/.test(t)?n="type":"("===e.charAt(l+t.length)&&(n="fn"),a.push([n,t]),l+=t.length;continue}let o=/^\s+/.exec(s);if(null!==o){a.push(["ws",o[0]]),l+=o[0].length;continue}let c=/^[^\w\s$@]+/.exec(s);if(null!==c){a.push(["punct",c[0]]),l+=c[0].length;continue}a.push(["id",s.charAt(0)]),l+=1}return a}(t,a,n));return l}function lp(e){if(!Number.isFinite(e)||e<=0)return"0 B";let t=["B","KB","MB","GB"],n=e,a=0;for(;n>=1024&&a<t.length-1;)n/=1024,a+=1;let l=0===a?n.toFixed(0):n.toFixed(n>=10?1:2);return`${l} ${t[a]}`}function lm(e){return new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"short"}).format(new Date(e))}function lf({label:e,value:t}){return(0,n.jsxs)("div",{className:"fpv-meta-row",children:[(0,n.jsx)("span",{children:e}),(0,n.jsx)("strong",{children:t})]})}function lg({root:e,path:t,onClose:l,onOpenInEditor:s}){let[i,r]=(0,a.useState)(null),[o,c]=(0,a.useState)(!0),[d,u]=(0,a.useState)(null),[h,p]=(0,a.useState)(0),m=(0,a.useRef)(null);(0,a.useEffect)(()=>{m.current?.focus({preventScroll:!0})},[]),(0,a.useEffect)(()=>{let n=!1;return c(!0),u(null),r(null),(0,e4.fetchFilesPreview)(e,t).then(e=>{n||r(e)}).catch(e=>{n||u(e instanceof e4.ApiError&&"DENIED"===e.code?{message:"This file is excluded from the read surface for safety (matches a deny pattern such as .env, *.pem, node_modules, .git, …).",denied:!0}:e instanceof Error?{message:/^HTTP \d+$/.test(e.message)?"The file could not be loaded. Try again.":e.message,denied:!1}:{message:"Unable to read this file.",denied:!1})}).finally(()=>{n||c(!1)}),()=>{n=!0}},[t,e,h]);let f=d?.denied===!0,g=null!==i?"text"===i.kind?i.extension??"text":"image"===i.kind?i.mime:i.extension??"binary":f?"denied":null!==d?"error":"loading",v=f?"Hidden file":i?.name??(null!==d?"Preview unavailable":"Loading preview"),x=i?.kind==="text"&&i.content.length<=2e5,b=void 0!==s&&i?.kind==="text"&&!i.truncated,y=i?.kind==="text"?x?lh(i.content,lc(i.name)):i.content.split("\n").map(e=>[["id",e]]):[];return(0,n.jsxs)("div",{className:"fpv",onKeyDown:e=>{"Escape"===e.key&&(e.stopPropagation(),l())},children:[(0,n.jsxs)("div",{className:"fpv-bar",children:[(0,n.jsx)("button",{className:"fpv-back",type:"button",ref:m,onClick:l,title:"Back to files","aria-label":"Back to files",children:(0,n.jsx)(k.Icons.back,{size:15})}),(0,n.jsx)(lr,{name:f||null===i?"":i.name}),(0,n.jsx)("span",{className:"fpv-name",title:v,children:v}),(0,n.jsx)("span",{className:"fpv-lang mono",children:g}),(0,n.jsx)("span",{className:"spacer"}),b?(0,n.jsx)("button",{className:"fpv-back",type:"button",onClick:()=>s(e,t),title:"Open in editor","aria-label":"Open in editor",children:(0,n.jsx)(k.Icons.editor,{size:15})}):null,(0,n.jsx)("button",{className:"fpv-back",type:"button",onClick:l,title:"Close preview","aria-label":"Close preview",children:(0,n.jsx)(k.Icons.close,{size:15})})]}),o?(0,n.jsx)("div",{className:"fpv-state",role:"status",children:"Loading preview…"}):null,null!==d?(0,n.jsxs)("div",{className:"fpv-state fpv-error",role:"alert",children:[(0,n.jsx)("span",{children:d.message}),d.denied?null:(0,n.jsx)("button",{type:"button",className:"fpv-retry",onClick:()=>p(e=>e+1),children:"Retry"})]}):null,i?.kind==="text"?(0,n.jsxs)(n.Fragment,{children:[i.truncated?(0,n.jsxs)("div",{className:"fpv-banner",children:["Preview truncated at ",lp(i.maxBytes),". Larger files can't be shown in full here."]}):null,x?null:(0,n.jsx)("div",{className:"fpv-banner",children:"Syntax highlighting disabled for large previews."}),(0,n.jsx)("div",{className:"fpv-code mono",tabIndex:0,role:"region","aria-label":`File preview: ${i.name}`,style:{"--fpv-gutter-w":`max(44px, calc(${String(String(y.length).length)}ch + 16px))`},children:y.map((e,t)=>(0,n.jsxs)("div",{className:"fpv-line",children:[(0,n.jsx)("span",{className:"fpv-num",children:t+1}),(0,n.jsx)("span",{className:"fpv-src",children:e.map((e,t)=>(0,n.jsx)("span",{className:`hl-${e[0]}`,children:e[1]},t))})]},t))})]}):null,i?.kind==="image"?(0,n.jsxs)("div",{className:"fpv-image-pane",children:[(0,n.jsx)("div",{className:"fpv-image-card",children:(0,n.jsx)("img",{className:"fpv-image",src:i.dataUrl,alt:i.name})}),(0,n.jsxs)("div",{className:"fpv-meta",children:[(0,n.jsx)(lf,{label:"Type",value:i.mime}),(0,n.jsx)(lf,{label:"Size",value:lp(i.sizeBytes)}),(0,n.jsx)(lf,{label:"Modified",value:lm(i.modifiedAt)})]})]}):null,i?.kind==="binary"?(0,n.jsx)("div",{className:"fpv-meta-pane",children:(0,n.jsxs)("div",{className:"fpv-meta-card",children:[(0,n.jsx)(lr,{name:i.name}),(0,n.jsx)("h3",{children:i.name}),(0,n.jsx)("p",{children:"too_large"===i.reason?`Preview disabled because this file exceeds ${lp(i.maxBytes??0)}.`:"No safe text or image preview is available for this file type."}),(0,n.jsxs)("div",{className:"fpv-meta",children:[(0,n.jsx)(lf,{label:"Type",value:i.mime}),(0,n.jsx)(lf,{label:"Extension",value:i.extension??"none"}),(0,n.jsx)(lf,{label:"Size",value:lp(i.sizeBytes)}),(0,n.jsx)(lf,{label:"Modified",value:lm(i.modifiedAt)})]})]})}):null]})}function lv(e){let t=e.replace(/[/\\]+$/,""),n=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\"));return n<0?null:0===n?"/":/^[A-Za-z]:$/.test(t.slice(0,n))?`${t.slice(0,n)}\\`:t.slice(0,n)}function lx(e){return 8+18*e}let lb=new Set(["ArrowDown","ArrowUp","ArrowRight","ArrowLeft","Home","End"]);function ly({root:e,onActiveFileChange:t,onRootChange:l,onOpenFile:s}){let i=e?.trim(),r=void 0!==i&&i.length>0?i:null,[o,c]=(0,a.useState)(null),d=r??o??"",[u,h]=(0,a.useState)(null),[p,m]=(0,a.useState)(""),[f,g]=(0,a.useState)(null),[v,x]=(0,a.useState)(null),[b,y]=(0,a.useState)({}),[j,w]=(0,a.useState)(()=>new Set([""])),[N,S]=(0,a.useState)(0),C=(0,a.useRef)(t);C.current=t;let I=(0,a.useRef)(null),E=(0,a.useRef)(null),R=(0,a.useId)();(0,a.useEffect)(()=>{if(null!==f)return;let e=E.current;if(null===e)return;E.current=null;let t=I.current?.querySelector(`.tr-file[data-path="${"u">typeof CSS&&"function"==typeof CSS.escape?CSS.escape(e):e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"]`);(t??I.current)?.focus({preventScroll:!0})},[f]),(0,a.useEffect)(()=>{if(null!==r)return;let e=!1;return(0,e4.fetchProjects)().then(t=>{e||c(t.projects.find(e=>e.available)?.path??null)}).catch(()=>{e||c(null)}),()=>{e=!0}},[r]);let $=(0,a.useCallback)(async e=>{if(0===d.length)return void y(t=>({...t,[e]:{entries:[],truncated:!1,loading:!1,error:null,notice:"no-root"}}));y(t=>({...t,[e]:{entries:t[e]?.entries??[],truncated:t[e]?.truncated??!1,loading:!0,error:null,notice:null}}));try{let t=await (0,e4.fetchFilesTree)(d,e);""===e&&(h(t.root),C.current?.(null,t.root,null),x(null)),y(n=>({...n,[e]:{entries:t.entries,truncated:t.truncated,loading:!1,error:null,notice:null}}))}catch(t){y(n=>({...n,[e]:{entries:n[e]?.entries??[],truncated:n[e]?.truncated??!1,loading:!1,error:t instanceof Error?t.message:"Unable to read this folder.",notice:null}}))}},[d]);(0,a.useEffect)(()=>{g(null),x(null),C.current?.(null,null,null),h(null),w(new Set([""])),y({}),$("")},[d,$,N]);let T=function(e,t){if(null===t||0===t.length)return e;let n=e.includes("\\")&&!e.includes("/")?"\\":"/";return`${e.replace(/[/\\]+$/u,"")}${n}${t.replace(/\//gu,n)}`}(u??(d.length>0?d:""),v);(0,a.useEffect)(()=>{m(T)},[T]);let A=(0,a.useCallback)(e=>{let t=e.trim();void 0===l||0===t.length||t!==T&&l(t)},[l,T]),L=(0,a.useCallback)(e=>{g(null),x(e),C.current?.(null,u??d,e),null!==e&&void 0===b[e]&&$(e)},[d,b,$,u]),q=(0,a.useCallback)(()=>{if(null!==v)return void L(function(e){let t=e.replace(/\/+$/u,""),n=t.lastIndexOf("/");if(n<0)return null;let a=t.slice(0,n);return a.length>0?a:null}(v));let e=lv(u??d);null!==e&&A(e)},[d,v,L,A,u]),P=(e,t,a=b[e])=>(0,n.jsxs)("div",{className:"tr-dir",role:0===t?void 0:"group",children:[a?.loading===!0?(0,n.jsx)("div",{className:"files-note",role:"status",style:{paddingLeft:lx(t)+18},children:"Loading…"}):null,a?.notice==="no-root"?(0,n.jsx)("div",{className:"files-note",role:"status",style:{paddingLeft:lx(t)+18},children:void 0!==l?"No folder is open yet. Enter a folder path above and press Open.":"No registered project is available."}):null,a?.error!==null&&a?.error!==void 0?(0,n.jsxs)("div",{className:"files-error",role:"alert",style:{marginLeft:lx(t)},children:[(0,n.jsx)("span",{children:a.error}),(0,n.jsx)("button",{type:"button",className:"files-retry",onClick:()=>{$(e)},children:"Retry"})]}):null,a?.truncated===!0?(0,n.jsxs)("div",{className:"files-note files-warning",role:"status",style:{paddingLeft:lx(t)+18},children:["Showing only the first ",a.entries.length," entries — this folder contains more."]}):null,a?.entries.map(e=>((e,t)=>{let a=lx(t),l=j.has(e.path),s="This link can't be opened from this folder.";if("directory"===e.kind){let i=b[e.path];return(0,n.jsxs)("div",{className:"tr-row-wrap",children:[(0,n.jsxs)("div",{className:"tr-dir-line",style:{paddingLeft:a},children:[(0,n.jsx)("button",{className:"tr-caret-btn",type:"button",tabIndex:-1,disabled:!e.readable,"aria-label":`${l?"Collapse":"Expand"} folder: ${e.name}`,onClick:()=>(e=>{if(!e.readable)return;let t=j.has(e.path);w(t=>{let n=new Set(t);return n.has(e.path)?n.delete(e.path):n.add(e.path),n}),t||void 0!==b[e.path]||$(e.path)})(e),title:e.readable?`${l?"Collapse":"Expand"} ${e.path}`:s,children:(0,n.jsx)("span",{className:"tr-caret","data-open":l,children:(0,n.jsx)(k.Icons.chevronR,{size:11})})}),(0,n.jsxs)("button",{className:"tr-row tr-dir-enter",role:"treeitem","aria-level":t+1,"aria-selected":v===e.path,"data-active":v===e.path,"data-readable":e.readable,"data-path":e.path,type:"button","aria-disabled":!e.readable||void 0,"aria-describedby":e.readable?void 0:R,"aria-expanded":l,onClick:()=>{e.readable&&L(e.path)},title:e.readable?e.path:s,children:[(0,n.jsx)("span",{className:"fi-fallback",style:{color:"var(--accent)"},children:(0,n.jsx)(k.Icons.folder,{size:14})}),(0,n.jsx)("span",{className:"tr-name tr-folder",children:e.name}),e.symlink?(0,n.jsx)("span",{className:"tr-badge",children:"link"}):null]})]}),l?P(e.path,t+1,i):null]},e.path)}return(0,n.jsxs)("button",{className:"tr-row tr-file",role:"treeitem","aria-level":t+1,"aria-selected":f===e.path,"data-active":f===e.path,"data-readable":e.readable,"data-path":e.path,style:{paddingLeft:a},type:"button","aria-disabled":!e.readable||void 0,"aria-describedby":e.readable?void 0:R,onClick:()=>{e.readable&&(g(e.path),C.current?.(e.path,u??d))},title:e.readable?e.path:s,children:[(0,n.jsx)("span",{className:"tr-caret tr-caret-ghost","aria-hidden":"true",children:(0,n.jsx)(k.Icons.chevronR,{size:11})}),(0,n.jsx)(lr,{name:e.name}),(0,n.jsx)("span",{className:"tr-name",children:e.name}),e.symlink?(0,n.jsx)("span",{className:"tr-badge",children:"link"}):null,(0,n.jsx)("span",{className:"tr-meta mono",children:function(e){if(!Number.isFinite(e)||e<=0)return"0 B";let t=["B","KB","MB","GB"],n=e,a=0;for(;n>=1024&&a<t.length-1;)n/=1024,a+=1;let l=0===a?n.toFixed(0):n.toFixed(n>=10?1:2);return`${l} ${t[a]}`}(e.sizeBytes)})]},e.path)})(e,t)),void 0===a||a.loading||null!==a.error||null!==a.notice||0!==a.entries.length?null:(0,n.jsx)("div",{className:"files-note",role:"status",style:{paddingLeft:lx(t)+18},children:"Empty folder."})]});return null!==f?(0,n.jsx)(lg,{root:u??d,path:f,onOpenInEditor:s,onClose:()=>{E.current=f,g(null),C.current?.(null,u??d)}}):(0,n.jsxs)("div",{className:"files",ref:I,tabIndex:-1,children:[void 0!==l?(0,n.jsxs)("form",{className:"files-root-bar",role:"group","aria-label":"Folder root",onSubmit:e=>{e.preventDefault(),A(p)},children:[(0,n.jsx)("button",{type:"button",className:"files-root-up",onClick:q,disabled:null===v&&null===lv(u??d),title:"Open parent folder","aria-label":"Open parent folder",children:(0,n.jsx)(k.Icons.arrowUp,{size:13})}),(0,n.jsx)("input",{type:"text",className:"files-root-input mono","aria-label":"Folder path — open any folder on this machine",placeholder:"/path/to/any/folder",spellCheck:!1,value:p,onChange:e=>m(e.target.value)}),(0,n.jsx)("button",{type:"submit",className:"files-root-open",title:"Open this folder",children:"Open"})]}):null,(0,n.jsx)("button",{className:"files-refresh",type:"button",onClick:()=>S(e=>e+1),title:"Refresh folder","aria-label":"Refresh folder",children:(0,n.jsx)(k.Icons.reset,{size:13})}),(0,n.jsx)("span",{id:R,className:"visually-hidden",children:"This link can't be opened from this folder."}),(0,n.jsx)("div",{className:"tr files-tree",role:"tree","aria-label":"Files",tabIndex:-1,onKeyDown:e=>{if(!lb.has(e.key))return;let t=e.target,n=t instanceof HTMLElement?t.closest("button.tr-row"):null;if(null===n)return;let a=Array.from(e.currentTarget.querySelectorAll("button.tr-row")),l=a.indexOf(n);l<0||(e.preventDefault(),function(e,t,n){let a=e[t];if(void 0===a)return;let l=a.closest(".tr-row-wrap")?.querySelector("button.tr-caret-btn");if("ArrowDown"===n)e[t+1]?.focus();else if("ArrowUp"===n)e[t-1]?.focus();else if("Home"===n)e[0]?.focus();else if("End"===n)e[e.length-1]?.focus();else if("ArrowRight"===n){let n=a.getAttribute("aria-expanded");"false"===n?l?.click():"true"===n&&e[t+1]?.focus()}else"ArrowLeft"===n&&("true"===a.getAttribute("aria-expanded")?l?.click():function(e,t){let n=Number(e[t]?.getAttribute("aria-level")??"1");for(let a=t-1;a>=0;a-=1)if(Number(e[a]?.getAttribute("aria-level")??"1")<n)return void e[a]?.focus()}(e,t))}(a,l,e.key))},children:P(v??"",0)})]})}function lj(e){return e instanceof e4.ApiError||e instanceof Error?e.message:"The file could not be loaded."}function lw(e){return new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"short"}).format(new Date(e))}function lk({root:e,file:t}){let[l,s]=(0,a.useState)(""),[i,r]=(0,a.useState)(""),[o,c]=(0,a.useState)(null),[d,u]=(0,a.useState)(null),[h,p]=(0,a.useState)(void 0!==e&&void 0!==t),[m,f]=(0,a.useState)(!1),[g,v]=(0,a.useState)(null),[x,b]=(0,a.useState)(null),y=void 0!==e&&e.length>0&&void 0!==t&&t.length>0,j=y&&l!==i;(0,a.useEffect)(()=>{if(!y){s(""),r(""),c(null),u(null),p(!1),f(!1),v(null),b(null);return}let n=!1;return p(!0),v(null),b(null),(0,e4.fetchFilesContent)(e,t).then(e=>{n||(s(e.content),r(e.content),c(e.modifiedAt),u(e.maxBytes))}).catch(e=>{n||v(lj(e))}).finally(()=>{n||p(!1)}),()=>{n=!0}},[y,e,t]);let w=async()=>{if(y&&j&&!m){f(!0),v(null),b(null);try{let n=await (0,e4.saveFilesContent)({root:e,path:t,content:l,expectedModifiedAt:o??void 0});s(n.content),r(n.content),c(n.modifiedAt),u(n.maxBytes),b(`Saved ${lw(n.modifiedAt)}`)}catch(e){v(lj(e))}finally{f(!1)}}},N=(0,a.useMemo)(()=>y?h?"Loading file…":m?"Saving…":null!==g?g:null!==x?x:j?"Unsaved changes":null!==o?`Saved ${lw(o)}`:"Ready":"Open a file from the Files window to start editing.",[j,g,y,h,o,x,m]);return(0,n.jsxs)("div",{className:"editor",children:[(0,n.jsxs)("div",{className:"ed-tabs mono",children:[(0,n.jsxs)("span",{className:"ed-tab active",children:[(0,n.jsx)(k.Icons.editor,{size:12})," ",t??"Editor"]}),(0,n.jsx)("span",{className:"spacer"}),y?(0,n.jsx)("button",{type:"button",className:"ed-save",onClick:()=>void w(),disabled:!j||h||m,children:"Save"}):null]}),(0,n.jsxs)("div",{className:"ed-meta",children:[(0,n.jsx)("span",{className:"ed-status",role:null!==g?"alert":"status",children:N}),null!==d?(0,n.jsxs)("span",{className:"ed-limit mono",children:["Limit ",d.toLocaleString()," B"]}):null]}),y?(0,n.jsx)("textarea",{className:"ed-textarea mono","aria-label":void 0!==t?`Editor: ${t}`:"Editor",value:l,onChange:e=>{s(e.target.value),null!==x&&b(null)},onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&"s"===e.key.toLowerCase()&&(e.preventDefault(),w())},disabled:h||m||null!==g,spellCheck:!1}):(0,n.jsxs)("div",{className:"ed-empty",role:"note",children:["Choose a file from the Files window and use ",(0,n.jsx)("strong",{children:"Open in editor"}),"."]})]})}async function lN(e,t){let n=(t?.method??"GET").toUpperCase(),a="GET"!==n&&"HEAD"!==n,l=await fetch(e,{...t,headers:{Accept:"application/json",...a?{"Content-Type":"application/json"}:{},...a?{"X-Keiko-CSRF":"1"}:{},...t?.headers??{}}});if(!l.ok){let e="INTERNAL",t=`HTTP ${l.status.toString()}`;try{let n=await l.json();e=n.error.code,t=n.error.message}catch{}throw new e4.ApiError(e,t,l.status)}if(204!==l.status)return l.json()}async function lS(e){return lN(`/api/browser/status?port=${encodeURIComponent(String(e))}`)}async function lC(e){return lN("/api/browser/sessions",{method:"POST",body:JSON.stringify({port:e})})}async function lI(e){await lN(`/api/browser/sessions/${encodeURIComponent(e)}`,{method:"DELETE"})}async function lE(e,t){return lN(`/api/browser/sessions/${encodeURIComponent(e)}/navigate`,{method:"POST",body:JSON.stringify({url:t})})}async function lR(e){return lN(`/api/browser/sessions/${encodeURIComponent(e)}/screenshot`,{method:"POST",body:JSON.stringify({})})}async function l$(e,t){return lN(`/api/browser/sessions/${encodeURIComponent(e)}/apply`,{method:"POST",body:JSON.stringify({captureSeq:t})})}async function lT(e){return lN(`/api/browser/sessions/${encodeURIComponent(e)}/content`,{method:"POST",body:JSON.stringify({})})}function lA(e){return e instanceof e4.ApiError?{code:e.code,message:e.message}:e instanceof Error?{code:"INTERNAL",message:e.message}:{code:"INTERNAL",message:"Unexpected error."}}function lL(e){let t=e.cdpPort??9222,l=e.url??"http://localhost:5173",[s,i]=(0,a.useState)(String(t)),[r,o]=(0,a.useState)(l),[c,d]=(0,a.useState)(null),[u,h]=(0,a.useState)(null),[p,m]=(0,a.useState)(!1),[f,g]=(0,a.useState)(null),[v,x]=(0,a.useState)(null),[b,y]=(0,a.useState)([]),[j,w]=(0,a.useState)(null),[k,N]=(0,a.useState)(null),[S,C]=(0,a.useState)(null),I=(0,a.useRef)(null),E=(0,a.useCallback)(()=>{x(null)},[]),R=(0,a.useCallback)(e=>{y(t=>{let n=[...t,e];return n.length>50?n.slice(n.length-50):n}),"navigated"===e.kind&&"string"==typeof e.payload.originOnly&&C(e.payload.originOnly),"error"===e.kind&&x({code:"string"==typeof e.payload.code?e.payload.code:"INTERNAL",message:"string"==typeof e.payload.message?e.payload.message:"Error."})},[]);(0,a.useEffect)(()=>{var e;if(null===c){I.current?.close(),I.current=null;return}let t=new EventSource((e=c.sessionId,`/api/browser/sessions/${encodeURIComponent(e)}/events`));for(let e of["session-opened","navigated","screenshot-captured","page-content-captured","session-closed","trust-warning","error"])t.addEventListener(`browser:${e}`,e=>{try{let t=JSON.parse(e.data);R(t)}catch{}});return I.current=t,()=>{t.close(),I.current=null}},[c,R]);let $=(0,a.useCallback)(async()=>{E(),m(!0);try{let e=Number.parseInt(s,10),t=await lS(e);h(t)}catch(e){x(lA(e))}finally{m(!1)}},[s,E]),T=(0,a.useCallback)(async()=>{E(),m(!0);try{let e=Number.parseInt(s,10),t=await lC(e);d(t),y([]),N(null),C(null)}catch(e){x(lA(e))}finally{m(!1)}},[s,E]),A=(0,a.useCallback)(async()=>{if(null!==c){E(),m(!0);try{await lI(c.sessionId),d(null),w(null),N(null),C(null)}catch(e){x(lA(e))}finally{m(!1)}}},[c,E]),L=(0,a.useCallback)(async()=>{if(null!==c){E(),m(!0);try{let e=await lE(c.sessionId,r);C(e.originOnly)}catch(e){x(lA(e))}finally{m(!1)}}},[c,r,E]),q=(0,a.useCallback)(async()=>{if(null!==c){E(),m(!0);try{let e=await lR(c.sessionId);e.persisted||w({seq:e.seq,dataBase64:e.dataBase64})}catch(e){x(lA(e))}finally{m(!1)}}},[c,E]),P=(0,a.useCallback)(async()=>{if(null!==c&&null!==j){E(),m(!0);try{let e=await l$(c.sessionId,j.seq);e.persisted&&N(e.path),w(null)}catch(e){x(lA(e))}finally{m(!1)}}},[c,j,E]),M=(0,a.useCallback)(async()=>{if(null!==c){E(),m(!0);try{await lT(c.sessionId)}catch(e){x(lA(e))}finally{m(!1)}}},[c,E]),D=(0,a.useMemo)(()=>p||null!==c,[p,c]),F=(0,a.useMemo)(()=>p||null===c,[p,c]),z=p||null!==c,O=p||null===j,K=p&&null!==f?f:null!==j?"Screenshot ready (dry-run) — press Apply to persist.":null!==k?`Persisted as ${k}.`:null!==S?`Current origin: ${S}`:null!==u&&null===c?`Reachable: ${u.reachable?"yes":"no"}`:"";return(0,n.jsxs)("div",{className:"browser",children:[(0,n.jsxs)("div",{className:"bw-bar",children:[(0,n.jsx)("span",{className:"bw-dot",style:{background:null===c?"var(--line-strong)":"var(--ok)"},"aria-hidden":"true"}),(0,n.jsxs)("label",{className:"bw-field",children:[(0,n.jsx)("span",{className:"bw-field-label",children:"Port"}),(0,n.jsx)("input",{type:"text",inputMode:"numeric",className:"bw-input",value:s,onChange:e=>i(e.target.value),disabled:null!==c||p})]}),(0,n.jsxs)("label",{className:"bw-field bw-field-url",children:[(0,n.jsx)("span",{className:"bw-field-label",children:"URL"}),(0,n.jsx)("input",{type:"url",className:"bw-input bw-input-url",value:r,onChange:e=>o(e.target.value),disabled:p})]})]}),(0,n.jsxs)("div",{className:"bw-actions",role:"group","aria-label":"Browser actions",children:[(0,n.jsx)("button",{type:"button",className:"bw-btn",onClick:()=>{z||(g("Checking Chrome…"),$())},"aria-disabled":z,children:"Check"}),(0,n.jsx)("button",{type:"button",className:"bw-btn bw-btn-primary",onClick:()=>{D||(g("Opening session…"),T())},"aria-disabled":D,children:"Open session"}),(0,n.jsx)("button",{type:"button",className:"bw-btn",onClick:()=>{F||(g("Navigating…"),L())},"aria-disabled":F,children:"Navigate"}),(0,n.jsx)("button",{type:"button",className:"bw-btn",onClick:()=>{F||(g("Capturing screenshot…"),q())},"aria-disabled":F,children:"Screenshot"}),(0,n.jsx)("button",{type:"button",className:"bw-btn",onClick:()=>{O||(g("Applying screenshot…"),P())},"aria-disabled":O,children:"Apply"}),(0,n.jsx)("button",{type:"button",className:"bw-btn",onClick:()=>{F||(g("Capturing HTML…"),M())},"aria-disabled":F,children:"Capture HTML"}),(0,n.jsx)("button",{type:"button",className:"bw-btn bw-btn-danger",onClick:()=>{F||(g("Closing session…"),A())},"aria-disabled":F,children:"Close"})]}),(0,n.jsx)("p",{className:"sr-only",role:"status","aria-live":"polite",children:K}),p&&null!==f?(0,n.jsx)("p",{className:"bw-status",children:f}):null,null!==u&&null===c?(0,n.jsxs)("p",{className:"bw-status",children:["Reachable: ",u.reachable?"yes":"no",null===u.browserVersion?"":` — ${u.browserVersion}`]}):null,null!==S?(0,n.jsxs)("p",{className:"bw-status",children:["Current origin: ",(0,n.jsx)("span",{className:"mono",children:S})]}):null,null!==j?(0,n.jsx)("p",{className:"bw-status",children:"Screenshot ready (dry-run) — press Apply to persist."}):null,null!==k?(0,n.jsxs)("p",{className:"bw-status",children:["Persisted as ",(0,n.jsx)("span",{className:"mono",children:k}),"."]}):null,null!==v?(0,n.jsxs)("div",{className:"bw-error",role:"alert",children:[v.message," ",(0,n.jsxs)("span",{className:"err-code mono",children:["(",v.code,")"]})]}):null,(0,n.jsx)("div",{className:"bw-view",children:null!==j?(0,n.jsx)("img",{className:"bw-screenshot",src:`data:image/png;base64,${j.dataBase64}`,alt:"Pending screenshot preview"}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"ph-stripes","aria-hidden":"true"}),(0,n.jsx)("div",{className:"bw-overlay mono",children:null===c?"No session — choose a port and press Open session":"Session open — use Screenshot to capture a preview"})]})}),(0,n.jsx)("div",{className:"bw-log",role:"log","aria-label":"Browser event log",children:(0,n.jsx)("ul",{className:"bw-log-list",children:b.slice(-10).reverse().map((e,t)=>(0,n.jsxs)("li",{className:"bw-log-item",children:[(0,n.jsx)("span",{className:"bw-log-kind",children:function(e){switch(e){case"session-opened":return"session opened";case"navigated":return"navigated";case"screenshot-captured":return"screenshot captured";case"page-content-captured":return"content captured";case"session-closed":return"session closed";case"trust-warning":return"trust warning";case"error":return"error"}}(e.kind)}),(0,n.jsx)("span",{className:"bw-log-detail mono",children:function(e){let t=e.payload;if("navigated"===e.kind){let e="string"==typeof t.originOnly?t.originOnly:"",n="number"==typeof t.httpStatus?` (${String(t.httpStatus)})`:"";return`${e}${n}`}return"screenshot-captured"===e.kind?!0===t.persisted?"persisted":"dry-run":"page-content-captured"===e.kind?"number"==typeof t.byteLength?`${String(t.byteLength)} bytes`:"":"error"===e.kind||"trust-warning"===e.kind?"string"==typeof t.message?t.message:"string"==typeof t.warning?t.warning:"":""}(e)})]},`${String(e.kind)}-${String(t)}`))})})]})}async function lq(e,t){let n=(t?.method??"GET").toUpperCase(),a="GET"!==n&&"HEAD"!==n,l=await fetch(e,{...t,headers:{Accept:"application/json",...a?{"Content-Type":"application/json"}:{},...a?{"X-Keiko-CSRF":"1"}:{},...t?.headers??{}}});if(!l.ok){let e="INTERNAL",t=`HTTP ${l.status.toString()}`;try{let n=await l.json();e=n.error.code,t=n.error.message}catch{}throw new e4.ApiError(e,t,l.status)}if(204!==l.status)return l.json()}async function lP(){return lq("/api/terminal/policy")}async function lM(e,t){let n=new URLSearchParams;return n.set("projectId",e),void 0!==t&&t.length>0&&n.set("path",t),lq(`/api/terminal/directories?${n.toString()}`)}async function lD(e){return lq("/api/terminal/executions",{method:"POST",body:JSON.stringify(e)})}async function lF(e){await lq(`/api/terminal/executions/${encodeURIComponent(e)}`,{method:"DELETE"})}function lz(e){return e instanceof e4.ApiError?{code:e.code,message:e.message}:e instanceof Error?{code:"INTERNAL",message:e.message}:{code:"INTERNAL",message:"Unexpected error."}}function lO(e){let[t,l]=(0,a.useState)(null),[s,i]=(0,a.useState)(""),[r,o]=(0,a.useState)(""),[c,d]=(0,a.useState)(e.cwd??""),[u,h]=(0,a.useState)(e.projectPath??""),[p,m]=(0,a.useState)(!1),[f,g]=(0,a.useState)(null),[v,x]=(0,a.useState)(null),[b,y]=(0,a.useState)(null),[j,w]=(0,a.useState)([]),k=(0,a.useRef)(null),N=(0,a.useRef)(!1),S=(0,a.useRef)(null),[C,I]=(0,a.useState)([]);(0,a.useEffect)(()=>{let e=!1;return lP().then(t=>{e||(l(t),i(e=>e.length>0?e:t.commands[0]??""))}).catch(t=>{e||y(lz(t))}),()=>{e=!0}},[]),(0,a.useEffect)(()=>{if(0===u.length)return void I([]);let e=!1;return lM(u,c.length>0?c:void 0).then(t=>{e||I(t.entries)}).catch(()=>{e||I([])}),()=>{e=!0}},[u,c]),(0,a.useEffect)(()=>{let e=new EventSource("/api/terminal/events");k.current=e;let t=e=>{try{let t=JSON.parse(e.data);if("execution-started"===t.kind&&N.current){let e=t.payload;"string"==typeof e.requestId&&e.requestId===S.current&&g(e=>null!==e?e:t.executionId)}if("execution-completed"===t.kind||"execution-failed"===t.kind||"execution-cancelled"===t.kind){let e=t.payload;"string"==typeof e.requestId&&e.requestId===S.current&&g(e=>null===e||e!==t.executionId?e:null)}w(e=>{let n=[t,...e];return n.length>30?n.slice(0,30):n})}catch{}};for(let n of["execution-started","execution-completed","execution-failed","execution-cancelled"])e.addEventListener(`terminal:${n}`,t);return()=>{e.close(),k.current=null}},[]);let E=(0,a.useCallback)(async e=>{let t;if(e.preventDefault(),p)return;y(null),x(null),g(null);let n="function"==typeof crypto.randomUUID?crypto.randomUUID():`terminal-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;S.current=n;let a=0===(t=r.trim()).length?[]:t.split(/\s+/);N.current=!0,m(!0);try{let e={projectId:u,command:s,args:a,...c.length>0?{cwd:c}:{},requestId:n},t=await lD(e);x(t)}catch(e){y(lz(e))}finally{N.current=!1,m(!1),S.current=null,g(null)}},[r,s,c,u,p]),R=(0,a.useCallback)(async()=>{if(null!==f)try{await lF(f)}catch(e){y(lz(e))}},[f]),$=(0,a.useMemo)(()=>t?.limits??null,[t]),T=(0,a.useRef)(null),A=(0,a.useRef)(!1);return(0,a.useEffect)(()=>{A.current&&!p&&document.activeElement===document.body&&T.current?.focus(),A.current=p},[p]),(0,n.jsxs)("div",{className:"terminal",children:[(0,n.jsxs)("form",{className:"tm-form",onSubmit:e=>void E(e),children:[(0,n.jsxs)("label",{className:"tm-field",children:[(0,n.jsx)("span",{children:"Project path"}),(0,n.jsx)("input",{type:"text",value:u,onChange:e=>h(e.target.value),placeholder:"/absolute/path/to/project",required:!0})]}),(0,n.jsxs)("label",{className:"tm-field",children:[(0,n.jsx)("span",{children:"Command"}),(0,n.jsx)("select",{value:s,onChange:e=>i(e.target.value),disabled:null===t,required:!0,children:t?.commands.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})]}),(0,n.jsxs)("label",{className:"tm-field",children:[(0,n.jsx)("span",{children:"Args (space-separated)"}),(0,n.jsx)("input",{type:"text",value:r,onChange:e=>o(e.target.value),placeholder:"e.g. -la src"})]}),(0,n.jsxs)("label",{className:"tm-field",children:[(0,n.jsx)("span",{children:"Working directory (optional)"}),(0,n.jsx)("input",{type:"text",value:c,onChange:e=>d(e.target.value),placeholder:"(project root)",list:"tm-cwd-suggestions"}),(0,n.jsx)("datalist",{id:"tm-cwd-suggestions",children:C.map(e=>(0,n.jsx)("option",{value:e.path},e.path))})]}),(0,n.jsxs)("div",{className:"tm-actions",children:[(0,n.jsx)("button",{type:"submit",className:"tm-action","data-primary":"true",ref:T,disabled:null===t,"aria-disabled":p||null===t,children:p?"Running…":"Run"}),p?(0,n.jsx)("button",{type:"button",className:"tm-action","aria-disabled":null===f,onClick:()=>void R(),children:"Cancel"}):null]}),null!==$?(0,n.jsxs)("p",{className:"tm-limits",children:["Limits: ",ny($.maxOutputBytes)," output ·"," ",nj($.defaultTimeoutMs)," timeout"]}):null]}),null!==b?(0,n.jsxs)("div",{className:"tm-error",role:"alert",children:[(0,n.jsxs)("span",{className:"tm-error-text",children:[b.message," ",(0,n.jsxs)("span",{className:"err-code mono",children:["(",b.code,")"]})]}),(0,n.jsx)("button",{type:"button",className:"tm-error-dismiss","aria-label":"Dismiss error",onClick:()=>y(null),children:"✕"})]}):null,(0,n.jsx)("p",{className:"sr-only",role:"status","aria-live":"polite",children:null!==v?`Command finished: exit ${String(v.exitCode)}, ${String(v.durationMs)} ms${v.truncated?", output truncated":""}${v.timedOut?", timed out":""}`:""}),null!==v?(0,n.jsxs)("div",{className:"tm-result",children:[(0,n.jsxs)("div",{className:"tm-badges",children:[(0,n.jsxs)("span",{className:0===v.exitCode?"tm-badge tm-badge-ok":"tm-badge tm-badge-fail",children:["exit ",String(v.exitCode)]}),(0,n.jsxs)("span",{className:"tm-badge",children:[v.durationMs," ms"]}),v.truncated?(0,n.jsx)("span",{className:"tm-badge tm-badge-warn",children:"truncated"}):null,v.timedOut?(0,n.jsx)("span",{className:"tm-badge tm-badge-warn",children:"timed out"}):null]}),v.stdout.length>0?(0,n.jsx)("pre",{className:"tm-stdout",children:v.stdout}):null,v.stderr.length>0?(0,n.jsx)("pre",{className:"tm-stderr",children:v.stderr}):null]}):null,(0,n.jsx)("ul",{className:"tm-events",role:"log","aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false","aria-label":"Recent terminal events",children:j.map((e,t)=>{var a;let l;return(0,n.jsxs)("li",{className:"tm-event",children:[(0,n.jsx)("span",{className:"tm-event-kind",children:function(e){switch(e){case"execution-started":return"started";case"execution-completed":return"completed";case"execution-failed":return"failed";case"execution-cancelled":return"cancelled"}}(e.kind)}),(0,n.jsx)("span",{className:"tm-event-detail",children:(l=(a=e).payload,"execution-completed"===a.kind?["number"==typeof l.exitCode||null===l.exitCode?`exit ${String(l.exitCode)}`:"","number"==typeof l.durationMs?`${String(l.durationMs)}ms`:""].filter(Boolean).join(" · "):"execution-failed"===a.kind?"string"==typeof l.code?l.code:"":"execution-started"===a.kind&&"string"==typeof l.command?l.command:"")})]},`${e.executionId}-${String(t)}-${e.kind}`)})})]})}function lK(e){return e.startsWith("a/")||e.startsWith("b/")?e.slice(2):e}function l_(e){return e instanceof e4.ApiError?{code:e.code,message:e.message}:e instanceof Error?{code:"INTERNAL",message:e.message}:{code:"INTERNAL",message:"Unexpected error."}}function lB(e){return("dry-run"===e.status||"fix-proposed"===e.status)&&void 0!==e.proposedDiff&&void 0===e.appliedAt}function lU(e){return void 0!==e.proposedDiff&&""!==e.proposedDiff}function lW({href:e,hasManifest:t,error:a}){return t?(0,n.jsx)("a",{className:"rv-evidence-link",href:e,target:"_blank",rel:"noopener noreferrer",children:"Evidence"}):null!==a?(0,n.jsxs)("span",{className:"rv-evidence-link rv-evidence-error",role:"status",children:["Evidence error: ",a.message]}):(0,n.jsx)("span",{className:"rv-evidence-link rv-evidence-disabled",role:"link","aria-disabled":"true",children:"Evidence"})}function lH({tokens:e}){return(0,n.jsx)(n.Fragment,{children:e.map((e,t)=>(0,n.jsx)("span",{className:`hl-${e[0]}`,children:e[1]},t))})}function lG({line:e,lang:t}){let a,l="add"===e.kind?"+":"del"===e.kind?"−":"ctx"===e.kind?"·":"",s="ctx"===e.kind?"":` rv-${e.kind}`;if("meta"!==e.kind&&"code"!==t){let l=lh(e.text,lc(t))[0]??[];a=(0,n.jsx)(lH,{tokens:l})}else a=e.text;return(0,n.jsxs)("div",{className:`rv-line${s}`,children:[(0,n.jsx)("span",{className:"rv-sr-only",children:{add:"Added line",del:"Deleted line",ctx:"Context line",meta:"Diff metadata"}[e.kind]}),(0,n.jsx)("span",{className:"rv-num-old rv-num",children:e.oldLine??""}),(0,n.jsx)("span",{className:"rv-num-new rv-num",children:e.newLine??""}),(0,n.jsx)("span",{className:"rv-gutter","aria-hidden":"true",children:l}),(0,n.jsx)("code",{className:"rv-src",children:a})]})}function lY({hunk:e,lang:t}){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"rv-hunk mono","aria-label":`Hunk header ${e.header}`,children:[(0,n.jsx)("span",{className:"rv-sr-only",children:"Hunk header"}),e.header]}),e.lines.map((e,a)=>(0,n.jsx)(lG,{line:e,lang:t},a))]})}function lV({file:e,index:t,changedFiles:a,sectionRef:l}){let s=a.find(t=>t.path===e.path),i=e.path.includes(".")?e.path.split(".").pop()??"code":"code";return(0,n.jsxs)("section",{id:`rv-file-${t}`,"aria-labelledby":`rv-file-${t}-h`,ref:l,children:[(0,n.jsxs)("h3",{id:`rv-file-${t}-h`,className:"rv-file mono",children:[(0,n.jsx)("span",{className:"rv-path",children:e.path}),void 0!==e.oldPath&&(0,n.jsxs)("span",{className:"rv-oldpath",children:[" (was ",e.oldPath,")"]}),(0,n.jsx)("span",{className:"spacer"}),(0,n.jsxs)("span",{className:"rv-stat add",children:["+",e.addedLines]}),(0,n.jsxs)("span",{className:"rv-stat del",children:["−",e.removedLines]}),s?.elevatedReview===!0&&(0,n.jsx)("span",{className:"rv-elevated","aria-label":"Elevated review",children:"!"})]}),(0,n.jsx)("div",{className:"rv-code mono",children:e.hunks.map((e,t)=>(0,n.jsx)(lY,{hunk:e,lang:i},t))})]})}function lQ({runId:e,onRunIdSubmit:t}){let[l,s]=(0,a.useState)(null),[i,r]=(0,a.useState)(!1),[o,c]=(0,a.useState)(null),[d,u]=(0,a.useState)(!1),[h,p]=(0,a.useState)(null),[m,f]=(0,a.useState)(!1),[g,v]=(0,a.useState)(null),[x,b]=(0,a.useState)(null),[y,j]=(0,a.useState)(""),[w,k]=(0,a.useState)(!1),N=(0,a.useRef)(null);(0,a.useEffect)(()=>()=>{null!==N.current&&window.clearTimeout(N.current)},[]),(0,a.useEffect)(()=>{if(void 0===e||""===e)return;let t=!1;return u(!0),p(null),s(null),r(!1),c(null),b(null),Promise.allSettled([(0,e4.fetchRunReport)(e),(0,e4.fetchEvidenceManifest)(e)]).then(([e,n])=>{if(!t){if("fulfilled"===n.status)r(!0),c(null);else{let e=l_(n.reason);r(!1),c("NOT_FOUND"===e.code?null:e)}if("fulfilled"===e.status){s(e.value.report),u(!1);return}p(l_(e.reason)),u(!1)}}),()=>{t=!0}},[e]);let S=`/api/evidence/${encodeURIComponent(e??"")}`,C=(0,a.useMemo)(()=>l?.proposedDiff!==void 0?function(e){let t=new TextEncoder,n=t.encode(e).byteLength;if(0===e.length)return{files:[],truncated:!1,totalBytes:0};let a=e,l=!1;if(n>524288){l=!0;let n=t.encode(e),s=new TextDecoder().decode(n.slice(0,524288)),i=s.lastIndexOf("\n");a=-1===i?s:s.slice(0,i+1)}let s=a.split("\n"),i=s.length>0&&""===s[s.length-1]?s.slice(0,-1):s,r=[],o=null,c=null,d=0,u=0,h=()=>{null!==o&&null!==c&&o.hunks.push(c),c=null},p=()=>{h(),null!==o&&(r.length<400?r.push(o):l=!0),o=null},m=0;for(;m<i.length;){let e=i[m]??"";if(e.startsWith("diff --git ")){p();let t=/^diff --git a\/(.+?) b\/(.+)$/.exec(e);if(null!==t&&void 0!==t[1]&&void 0!==t[2]){let e=t[1],n=t[2],a=lK(`b/${n}`),l=lK(`a/${e}`),s={path:a,hunks:[],addedLines:0,removedLines:0};l!==a&&(s.oldPath=l),o=s}m++;continue}if(null!==c){if(e.startsWith("+")){let t={kind:"add",oldLine:null,newLine:u,text:e.slice(1)};c.lines.push(t),null!==o&&o.addedLines++,u++,m++;continue}if(e.startsWith("-")){let t={kind:"del",oldLine:d,newLine:null,text:e.slice(1)};c.lines.push(t),null!==o&&o.removedLines++,d++,m++;continue}if(e.startsWith("\\ ")){let t={kind:"meta",oldLine:null,newLine:null,text:e};c.lines.push(t),m++;continue}if(e.startsWith(" ")||""===e){let t={kind:"ctx",oldLine:d,newLine:u,text:e.startsWith(" ")?e.slice(1):e};c.lines.push(t),d++,u++,m++;continue}}if(e.startsWith("--- ")){let t=e.slice(4);if("/dev/null"!==t&&null===o)p(),o={path:lK(t),hunks:[],addedLines:0,removedLines:0};else if("/dev/null"!==t&&null!==o){let e=lK(t);e!==o.path&&(o.oldPath=e)}m++;continue}if(e.startsWith("+++ ")){let t=e.slice(4);"/dev/null"!==t&&null!==o?o.path=lK(t):"/dev/null"!==t&&(p(),o={path:lK(t),hunks:[],addedLines:0,removedLines:0}),m++;continue}if(e.startsWith("@@ ")){null===o&&(o={path:"(unknown)",hunks:[],addedLines:0,removedLines:0}),h();let t=function(e){let t=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(e);return null===t||void 0===t[1]||void 0===t[2]?null:{oldStart:parseInt(t[1],10),newStart:parseInt(t[2],10)}}(e);d=t?.oldStart??1,u=t?.newStart??1,c={header:e,lines:[]},m++;continue}m++}return p(),{files:r,truncated:l,totalBytes:n}}(l.proposedDiff):null,[l?.proposedDiff]),I=l?.changedFiles??[],E=(0,a.useMemo)(()=>({added:C?.files.reduce((e,t)=>e+t.addedLines,0)??0,removed:C?.files.reduce((e,t)=>e+t.removedLines,0)??0}),[C]),R=null!==C&&C.files.length>0?Math.min(x??0,C.files.length-1):null,$=null!==R?C?.files[R]:void 0,T=l?.status==="running";return void 0===e||""===e?(0,n.jsxs)("section",{className:"review rv-empty","aria-label":"Diff review",children:[(0,n.jsx)("h2",{className:"rv-empty-h",children:"Review"}),void 0!==t?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("p",{className:"rv-empty-p",children:"Paste a run ID below to load a proposed diff."}),(0,n.jsxs)("form",{className:"rv-empty-form",onSubmit:e=>{e.preventDefault();let n=y.trim();0!==n.length&&t(n)},children:[(0,n.jsx)("label",{className:"rv-empty-label",htmlFor:"rv-runid-input",children:"Run ID"}),(0,n.jsx)("input",{id:"rv-runid-input",className:"rv-runid-input mono",type:"text",value:y,onChange:e=>j(e.target.value),placeholder:"e.g. 7f3a9c12…"}),(0,n.jsx)("button",{type:"submit",className:"arun-btn",children:"Load run"})]})]}):(0,n.jsx)("p",{className:"rv-empty-p",children:"Enter a run ID in the window configuration to load a proposed diff."})]}):(0,n.jsxs)("section",{className:"review","aria-label":"Diff review",children:[d&&(0,n.jsxs)("div",{className:"rv-loading",role:"status","aria-busy":"true","aria-label":"Loading diff",children:[(0,n.jsx)("div",{className:"rv-skel"}),(0,n.jsx)("div",{className:"rv-skel rv-skel-sm"})]}),!d&&null!==h&&(0,n.jsxs)("div",{role:"alert",className:"rv-error",children:["NOT_FOUND"===h.code?"No run with that ID was found.":(0,n.jsxs)(n.Fragment,{children:[h.message," ",(0,n.jsxs)("span",{className:"err-code mono",children:["(",h.code,")"]})]}),(i||null!==o)&&(0,n.jsx)("span",{className:"rv-error-evidence",children:(0,n.jsx)(lW,{href:S,hasManifest:i,error:o})})]}),(0,n.jsx)("p",{role:"status","aria-live":"polite",className:!d&&null===h&&null!==l&&T?"rv-no-diff":"sr-only",children:!d&&null===h&&null!==l&&T?"Run is still running. The proposed diff will appear when the run completes.":""}),!d&&null===h&&null!==l&&!T&&!lU(l)&&(0,n.jsx)("p",{className:"rv-no-diff",children:"This run has no proposed diff to review."}),!d&&null===h&&null!==l&&lU(l)&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"rv-header",children:[(0,n.jsx)("span",{className:"rv-status mono",children:nw(l.status)}),void 0!==l.modelId&&(0,n.jsx)("span",{className:"rv-model mono",children:l.modelId}),(0,n.jsxs)("span",{className:"rv-counts mono",children:[null!==C&&`${C.files.length} file${1!==C.files.length?"s":""}`," ",(0,n.jsxs)("span",{className:"rv-stat add",children:["+",E.added]})," ",(0,n.jsxs)("span",{className:"rv-stat del",children:["−",E.removed]})]}),(0,n.jsx)("span",{className:"spacer"}),(0,n.jsx)(lW,{href:S,hasManifest:i,error:o})]}),null!==C&&C.files.length>0&&null!==R&&void 0!==$&&(0,n.jsxs)("div",{className:"rv-layout",children:[(0,n.jsx)("nav",{className:"rv-filelist","aria-label":"Changed files",children:(0,n.jsx)("ul",{children:C.files.map((e,t)=>{let a=I.find(t=>t.path===e.path),l=R===t;return(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",className:"rv-filerow",title:e.path,"aria-pressed":l,"aria-controls":l?`rv-file-${t}`:void 0,onClick:()=>{b(t)},children:[(0,n.jsx)("span",{className:"rv-filerow-path mono",children:function(e){if(e.length<=40)return e;let t=e.split("/");return t.length<=2?e:`…/${t.slice(-2).join("/")}`}(e.path)}),(0,n.jsxs)("span",{className:"rv-stat add",children:["+",e.addedLines]}),(0,n.jsxs)("span",{className:"rv-stat del",children:["−",e.removedLines]}),a?.elevatedReview===!0&&(0,n.jsx)("span",{className:"rv-elevated","aria-label":"Elevated review",children:"!"})]})},e.path)})})}),(0,n.jsxs)("div",{className:"rv-body",children:[(0,n.jsx)(lV,{file:$,index:R,changedFiles:I,sectionRef:()=>void 0},$.path),C.truncated&&(0,n.jsxs)("p",{role:"note",className:"rv-truncated",children:["Diff truncated at 512 KB. Open the"," ",i?(0,n.jsx)("a",{href:S,target:"_blank",rel:"noopener noreferrer",children:"evidence manifest"}):"evidence manifest"," ","for the full record."]})]})]}),(0,n.jsxs)("div",{className:"rv-controls",children:[(0,n.jsx)("span",{role:"status","aria-live":"polite",className:"rv-apply-status",children:m?"Applying…":void 0!==l.appliedAt?"Applied":""}),null!==g&&(0,n.jsx)("span",{role:"alert",className:"rv-apply-error",children:g.message}),void 0!==l.appliedAt?(0,n.jsx)("span",{className:"rv-final mono",children:"Applied"}):lB(l)?(0,n.jsx)("button",{type:"button",className:"arun-btn","aria-disabled":m,onClick:()=>{if(!m){if(!w){k(!0),null!==N.current&&window.clearTimeout(N.current),N.current=window.setTimeout(()=>{k(!1),N.current=null},6e3);return}null!==N.current&&(window.clearTimeout(N.current),N.current=null),k(!1),void 0!==e&&null!==l&&lB(l)&&!m&&(f(!0),v(null),(0,e4.applyRun)(e).then(e=>{s(e.report),f(!1)}).catch(e=>{v(l_(e)),f(!1)}))}},children:m?"Applying…":w?`Confirm apply (${(C?.files.length??0).toString()} file${C?.files.length===1?"":"s"})`:"Apply"}):null]})]})]})}let lX=["run:started","state:transition","model:call:started","model:call:completed","model:call:failed","tool:call:started","tool:call:completed","tool:call:failed","reasoning:trace","patch:proposed","verification:result","run:completed","run:cancelled","run:failed","command:executed","sandbox:configured","patch:applied","browser:session-opened","browser:navigated","browser:screenshot-captured","browser:page-content-captured","browser:session-closed","browser:trust-warning","browser:error","workflow:started","conventions:detected","context:selected","workflow:model:call:started","workflow:model:call:completed","patch:validated","workflow:patch:applied","workflow:verification:result","workflow:completed","workflow:failed","bug:started","bug:failure:parsed","bug:context:selected","bug:model:call:started","bug:model:call:completed","bug:rootcause:proposed","bug:patch:validated","bug:patch:applied","bug:verification:result","bug:completed","bug:failed","ready"],lJ=new Set(["run:completed","run:cancelled","run:failed","workflow:completed","workflow:failed","bug:completed","bug:failed"]),lZ=new Set(["completed","dry-run","rejected","cancelled","failed","fix-applied","fix-proposed","investigation-only"]),l0={verify:"Verify","explain-plan":"Explain plan","unit-test-generation":"Generate unit tests","bug-investigation":"Investigate bug"};function l1(e,t){return void 0===t||0===t.length?null:(0,n.jsxs)("div",{className:"arun-result-card",children:[(0,n.jsx)("div",{className:"arun-result-title",children:e}),(0,n.jsx)("pre",{children:t})]})}function l2({cfg:e={},linkedRoot:t=null,linkedFilePath:l}){var s,i;let r,o=e.runId??null,c="verify"===(s=e.workflow)||"explain-plan"===s||"unit-test-generation"===s||"bug-investigation"===s?s:null,d=e.model??"",u=function(e){if(void 0===e||0===e.length)return null;try{let t=JSON.parse(e);return"object"!=typeof t||null===t||Array.isArray(t)?null:t}catch{return null}}(e.inputJson),h=function(e){let[t,n]=(0,a.useState)([]),[l,s]=(0,a.useState)("connecting"),[i,r]=(0,a.useState)(null),o=(0,a.useRef)(-1);return(0,a.useEffect)(()=>{if(null===e)return;n([]),s("connecting"),r(null),o.current=-1;let t=null,a=!1,l=`/api/runs/${encodeURIComponent(e)}/events`;(t=new EventSource(o.current>=0?`${l}?lastEventId=${o.current.toString()}`:l)).onopen=()=>{a||(s("live"),r(null))},t.onerror=()=>{a||(s("error"),r("Stream disconnected. Attempting to reconnect…"))};let i=e=>{let l;if(!a){try{l=JSON.parse(e.data)}catch{return}o.current=l.seq,n(e=>[...e,l]),lJ.has(l.type)&&(s("terminal"),t?.close())}};for(let e of lX)t.addEventListener(e,i);return()=>{a=!0,t?.close()}},[e]),{events:t,status:l,error:i}}(o),[p,m]=(0,a.useState)(null),[f,g]=(0,a.useState)(null),[v,x]=(0,a.useState)(null),[b,y]=(0,a.useState)(!1),[j,w]=(0,a.useState)(null),[N,S]=(0,a.useState)(null),[C,I]=(0,a.useState)(!1),E=(0,a.useRef)(null),R=(0,a.useRef)(null),$=(0,a.useCallback)(async()=>{if(null!==o){x(null);try{let e=await (0,e4.fetchRunReport)(o);m(e.report),g(null)}catch(e){if(e instanceof e4.ApiError&&404===e.status){try{let e=await (0,e4.fetchEvidenceManifest)(o);g(e.manifest),m(null)}catch(e){x(e instanceof Error?e.message:"Unable to load evidence.")}return}x(e instanceof Error?e.message:"Unable to load run report.")}}},[o]);(0,a.useEffect)(()=>{$()},[$]),(0,a.useEffect)(()=>{"terminal"===h.status&&$()},[$,h.status]),(0,a.useEffect)(()=>{let e=!1;if(0!==d.length)return(0,e4.fetchModels)().then(t=>{e||S(t.models.find(e=>e.id===d)?.costClass??null)}).catch(()=>{e||S(null)}),()=>{e=!0}},[d]);let T=(0,a.useMemo)(()=>(function(e,t){let n=t?.usage?.promptTokens??0,a=t?.usage?.completionTokens??0,l=t?.usage?.latencyMs??0,s=+(t?.usage!==void 0);if(s>0)return{promptTokens:n,completionTokens:a,latencyMs:l,requestCount:s};for(let t of e){let e=function(e){if("model:call:completed"===e.type)return{promptTokens:e.usage.promptTokens,completionTokens:e.usage.completionTokens,latencyMs:e.usage.latencyMs,requestCount:1};let t=e.promptTokens,n=e.completionTokens,a=e.latencyMs;return"number"==typeof t&&"number"==typeof n&&"number"==typeof a?{promptTokens:t,completionTokens:n,latencyMs:a,requestCount:1}:null}(t);null!==e&&(n+=e.promptTokens,a+=e.completionTokens,l+=e.latencyMs,s+=e.requestCount)}return{promptTokens:n,completionTokens:a,latencyMs:l,requestCount:s}})(h.events,p),[h.events,p]),A=p?.durationMs??f?.run.durationMs??(h.events.length>0?Math.max(0,Date.now()-Number(new Date(h.events[0]?.ts??Date.now()))):0),L=null!==p?p.status:null!==f?f.run.outcome:"loading",q=function(e,t){if(null!==e)return nw(e.status);if(null!==t){var n=t.run.outcome;switch(n){case"fix-applied":return"Fix applied";case"fix-proposed":return"Fix proposed (dry-run)";case"investigation-only":return"Investigation only";case"limit-exceeded":return"Limit exceeded";case"dry-run":return"Dry-run";default:return n.charAt(0).toUpperCase()+n.slice(1)}}return"Loading…"}(p,f),P=null!==p&&lZ.has(p.status),M=null!==p&&void 0!==p.proposedDiff&&void 0===p.appliedAt&&("unit-test-generation"===c&&"dry-run"===p.status||"bug-investigation"===c&&"fix-proposed"===p.status),D=!P&&p?.status==="running",F=function(e){if(void 0===e||0===e.length)return 0;let t=e.match(/^diff --git /gm);if(null!==t)return t.length;let n=e.match(/^\+\+\+ /gm);return null===n?0:n.length}(p?.proposedDiff),z=(0,a.useRef)(!1);(0,a.useEffect)(()=>{z.current&&!D&&document.activeElement===document.body&&R.current?.focus(),z.current=D},[D]),(0,a.useEffect)(()=>()=>{null!==E.current&&window.clearTimeout(E.current)},[]);let O=async()=>{if(null!==o){x(null);try{await (0,e4.cancelRun)(o),await $()}catch(e){x(e instanceof Error?e.message:"Unable to cancel run.")}}},K=async()=>{if(null!==o&&M&&!b){y(!0),w(null);try{let e=await (0,e4.applyRun)(o);m(e.report)}catch(e){w(e instanceof Error?e.message:"Unable to apply run.")}finally{y(!1)}}};return null===o||null===c?(0,n.jsxs)("div",{className:"arun arun-empty",children:[(0,n.jsx)("div",{className:"arun-result-title",children:"Agent run is not configured."}),(0,n.jsx)("p",{children:"Open a new Agent window from the launcher to start a workflow."})]}):(0,n.jsxs)("div",{className:"arun arun-real",children:[(0,n.jsxs)("div",{className:"arun-head",children:[(0,n.jsx)("span",{className:"arun-role",children:l0[c]}),d.length>0?(0,n.jsx)("span",{className:"ag-model mono",children:d}):null,null!==N?(0,n.jsx)("span",{className:"arun-gov",title:"Model cost class",children:function(e){switch(e){case"low":return"Low cost";case"medium":return"Medium cost";case"high":return"High cost";case"unknown":return"Unknown cost"}}(N)}):null,(0,n.jsx)("span",{className:"spacer"}),(0,n.jsxs)("span",{className:"arun-status",children:[(0,n.jsx)("span",{className:"dot","data-live":p?.status==="running","data-status":L}),q]})]}),(0,n.jsxs)("div",{className:"arun-summary",role:"status","aria-live":"polite",children:[(0,n.jsx)("strong",{children:function(e,t,n){if(null===t&&null===n)return"Loading run state…";let a=null===e?"Agent run":l0[e];return t?.status==="running"?`${a} is running.`:t?.status==="dry-run"?`${a} produced a reviewable dry-run.`:t?.status==="fix-proposed"?`${a} proposed a fix.`:t?.status==="fix-applied"?`${a} applied changes.`:t?.status==="investigation-only"?`${a} completed without a patch.`:t?.status==="failed"||t?.status==="rejected"?`${a} failed.`:t?.status==="cancelled"?`${a} was cancelled.`:null!==t?`${a} completed.`:`${a} evidence loaded: ${n?.run.outcome??"unknown"}.`}(c,p,f)}),(0,n.jsxs)("span",{className:"mono",title:o,children:["run ",o.slice(0,8)]})]}),(0,n.jsxs)("div",{className:"arun-meters",children:[(0,n.jsxs)("div",{className:"arun-meter",children:[(0,n.jsx)("span",{className:"arun-mk",children:"Elapsed"}),(0,n.jsx)("span",{className:"arun-mv mono",children:nj(A)})]}),(0,n.jsxs)("div",{className:"arun-meter",children:[(0,n.jsx)("span",{className:"arun-mk",children:"Usage"}),(0,n.jsx)("span",{className:"arun-mv mono",children:0===T.requestCount?"No model usage":`${nk(T.promptTokens+T.completionTokens)} tok`})]}),(0,n.jsxs)("div",{className:"arun-meter",children:[(0,n.jsx)("span",{className:"arun-mk",children:"Latency"}),(0,n.jsx)("span",{className:"arun-mv mono",children:0===T.requestCount?"—":nj(T.latencyMs)})]})]}),(0,n.jsxs)("div",{className:"arun-perms",children:[(0,n.jsxs)("span",{className:"arun-perm","data-on":null!==t,title:null!==t?t:e.workspaceRoot??void 0,children:[(0,n.jsx)(k.Icons.files,{size:11}),(0,n.jsx)("span",{className:"arun-perm-path",children:null!==t?t:e.workspaceRoot??"no workspace"})]}),void 0!==l?(0,n.jsxs)("span",{className:"arun-perm","data-on":!0,title:l,children:[(0,n.jsx)(k.Icons.files,{size:11}),(0,n.jsx)("span",{className:"arun-perm-path",children:l})]}):null]}),null!==u?(0,n.jsxs)("details",{className:"arun-input",children:[(0,n.jsx)("summary",{children:"Run input"}),(0,n.jsx)("pre",{children:JSON.stringify(u,null,2)})]}):null,(0,n.jsxs)("div",{className:"arun-log",role:"log","aria-live":"polite","aria-label":"Run events",children:["error"===h.status&&null!==h.error?(0,n.jsxs)("div",{className:"arun-log-row",children:[(0,n.jsx)("span",{className:"arun-log-ico",children:(0,n.jsx)(k.Icons.reset,{size:12})}),(0,n.jsx)("span",{className:"arun-log-text",children:h.error})]}):null,0===h.events.length?"error"===h.status?null:(0,n.jsxs)("div",{className:"arun-log-row",children:[(0,n.jsx)("span",{className:"arun-log-ico",children:(0,n.jsx)(k.Icons.reset,{size:12})}),(0,n.jsx)("span",{className:"arun-log-text",children:"connecting"===h.status?"Connecting to run events…":"Waiting for run events…"})]}):h.events.slice().reverse().slice(0,50).map(e=>{let t;return(0,n.jsxs)("div",{className:"arun-log-row",children:[(0,n.jsx)("span",{className:"arun-log-ico",children:(0,n.jsx)(k.Icons.spark,{size:12})}),(0,n.jsx)("span",{className:"arun-log-text",children:function(e){switch(e.type){case"ready":return"SSE stream ready";case"run:started":return`Started ${e.taskType}`;case"run:completed":return"Run completed";case"run:failed":return`Run failed: ${e.failure.message}`;case"run:cancelled":return"Run cancelled";case"state:transition":return`${e.from} -> ${e.to}${void 0===e.reason?"":`: ${e.reason}`}`;case"model:call:started":return`Model call started (${ny(e.contextBytes)})`;case"model:call:completed":return`Model call completed (${nk(e.usage.promptTokens+e.usage.completionTokens)} tokens)`;case"model:call:failed":return`Model call failed: ${e.message}`;case"patch:proposed":return`Patch proposed (${ny(e.patchBytes)})`;case"verification:result":return`Verification ${e.passed?"passed":"failed"}: ${e.detail}`;case"workflow:started":return"Unit-test workflow started";case"workflow:model:call:completed":return`Unit-test model call completed (${nk(e.promptTokens+e.completionTokens)} tokens)`;case"workflow:verification:result":return`Unit-test verification ${e.overallStatus}`;case"workflow:completed":return`Unit-test workflow ${e.status}`;case"workflow:failed":return`Unit-test workflow failed: ${e.message}`;case"bug:started":return"Bug investigation started";case"bug:model:call:completed":return`Bug model call completed (${nk(e.promptTokens+e.completionTokens)} tokens)`;case"bug:rootcause:proposed":return`Root cause proposed${e.hasPatch?" with patch":""}`;case"bug:verification:result":return`Bug verification ${e.overallStatus}`;case"bug:completed":return`Bug investigation ${e.status}`;case"bug:failed":return`Bug investigation failed: ${e.message}`;default:return e.type}}(e)}),(0,n.jsx)("span",{className:"arun-log-t mono",children:Number.isFinite(t="number"==typeof e.ts?e.ts:Date.parse(e.ts))?new Date(t).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"}):""})]},`${e.runId}:${e.seq}:${e.type}`)})]}),null!==p?(0,n.jsxs)("div",{className:"arun-results",children:[void 0===p.report?null:(0,n.jsxs)("div",{className:"arun-result-card",children:[(0,n.jsx)("div",{className:"arun-result-title",children:"Report"}),(0,n.jsx)("pre",{children:p.report})]}),void 0===p.overallStatus||void 0===p.results?null:(0,n.jsxs)("div",{className:"arun-result-card",children:[(0,n.jsx)("div",{className:"arun-result-title",children:"Verification"}),(0,n.jsxs)("div",{className:"arun-kv",children:[(0,n.jsx)("span",{children:"Status"}),(0,n.jsx)("strong",{children:p.overallStatus})]}),p.results.slice(0,8).map(e=>(0,n.jsxs)("div",{className:"arun-check-row",children:[(0,n.jsx)("span",{children:e.kind}),(0,n.jsx)("span",{className:"mono",children:e.status})]},`${e.kind}:${e.command}`))]}),l1("Failure",p.failureReason),l1("Covered behavior",p.coveredBehavior),l1("Known gaps",p.knownGaps),l1("Verification note",p.verificationSkipReason),function(e){let t=e.hypothesis;if(void 0===t)return null;let a=[["Root cause",t.rootCause],["Regression test",t.regressionTestStrategy],["Uncertainty",t.uncertainty],["Confidence",t.confidence]].filter(e=>"string"==typeof e[1]&&e[1].length>0);return 0===a.length?null:(0,n.jsxs)("div",{className:"arun-result-card",children:[(0,n.jsx)("div",{className:"arun-result-title",children:"Hypothesis"}),a.map(([e,t])=>(0,n.jsxs)("div",{className:"arun-kv",children:[(0,n.jsx)("span",{children:e}),(0,n.jsx)("strong",{children:t})]},e))]})}(p),void 0===(i=p.nextActions)||0===i.length?null:(0,n.jsxs)("div",{className:"arun-result-card",children:[(0,n.jsx)("div",{className:"arun-result-title",children:"Next actions"}),i.map(e=>(0,n.jsx)("div",{className:"arun-check-row",children:(0,n.jsx)("span",{children:e})},e))]}),void 0!==p.dryRunPreview?(0,n.jsxs)("div",{className:"arun-result-card",children:[(0,n.jsx)("div",{className:"arun-result-title",children:"Dry-run preview"}),(0,n.jsx)("pre",{children:p.dryRunPreview})]}):null,void 0!==p.proposedDiff?(0,n.jsxs)("div",{className:"arun-result-card",children:[(0,n.jsx)("div",{className:"arun-result-title",children:"Proposed diff"}),(0,n.jsx)("pre",{children:p.proposedDiff})]}):null,void 0===(r=p.verificationSummary)?null:(0,n.jsxs)("div",{className:"arun-result-card",children:[(0,n.jsx)("div",{className:"arun-result-title",children:"Verification"}),(0,n.jsxs)("div",{className:"arun-kv",children:[(0,n.jsx)("span",{children:"Status"}),(0,n.jsx)("strong",{children:r.overallStatus})]}),(0,n.jsxs)("div",{className:"arun-kv",children:[(0,n.jsx)("span",{children:"Duration"}),(0,n.jsx)("strong",{children:nj(r.durationMs)})]}),r.results.slice(0,5).map(e=>(0,n.jsxs)("div",{className:"arun-check-row",children:[(0,n.jsx)("span",{children:e.kind}),(0,n.jsx)("span",{className:"mono",children:e.status})]},`${e.kind}:${e.command}`))]}),void 0!==p.applyReport?(0,n.jsxs)("div",{className:"arun-result-card arun-applied",children:[(0,n.jsx)("div",{className:"arun-result-title",children:"Applied"}),(0,n.jsx)("pre",{children:JSON.stringify(p.applyReport,null,2)})]}):null]}):null!==f?(0,n.jsxs)("div",{className:"arun-result-card",children:[(0,n.jsx)("div",{className:"arun-result-title",children:"Evidence"}),(0,n.jsxs)("div",{className:"arun-kv",children:[(0,n.jsx)("span",{children:"Outcome"}),(0,n.jsx)("strong",{children:f.run.outcome})]}),(0,n.jsxs)("div",{className:"arun-kv",children:[(0,n.jsx)("span",{children:"Duration"}),(0,n.jsx)("strong",{children:nj(f.run.durationMs)})]})]}):null,null!==v?(0,n.jsx)("div",{className:"arun-error",role:"alert",children:v}):null,null!==j?(0,n.jsx)("div",{className:"arun-error",role:"alert",children:j}):null,(0,n.jsxs)("div",{className:"arun-controls",children:[(0,n.jsx)("a",{className:"arun-btn ghost",href:`/api/evidence/${encodeURIComponent(o)}`,target:"_blank",rel:"noreferrer",ref:R,children:"Evidence"}),M?(0,n.jsx)("button",{type:"button",className:"arun-btn","aria-disabled":b,onClick:()=>{if(!b){if(!C){I(!0),null!==E.current&&window.clearTimeout(E.current),E.current=window.setTimeout(()=>{I(!1),E.current=null},6e3);return}null!==E.current&&(window.clearTimeout(E.current),E.current=null),I(!1),K()}},children:b?"Applying…":C?`Confirm apply (${F.toString()} file${1===F?"":"s"})`:"Apply"}):p?.appliedAt!==void 0?(0,n.jsx)("span",{className:"arun-final mono",children:"Applied"}):null,D?(0,n.jsx)("button",{type:"button",className:"arun-btn danger",onClick:()=>void O(),children:"Cancel"}):null]})]})}let l4=[{name:"Messaging",desc:"Catch up on threads",glyph:"#"},{name:"GitHub",desc:"PRs, code & CI",glyph:"{ }"},{name:"Linear",desc:"Track issues",glyph:"⊿"},{name:"Slack",desc:"Team channels",glyph:"≡"},{name:"Sentry",desc:"Error tracking",glyph:"◎"}];function l3(){return(0,n.jsx)("ul",{className:"integ","aria-label":"Integrations",children:l4.map(e=>(0,n.jsxs)("li",{className:"integ-row",children:[(0,n.jsx)("span",{className:"integ-glyph mono",children:e.glyph}),(0,n.jsxs)("span",{className:"integ-text",children:[(0,n.jsx)("span",{className:"integ-name",children:e.name}),(0,n.jsx)("span",{className:"integ-desc",children:e.desc})]}),(0,n.jsx)("span",{className:"integ-status",children:"Not connected — coming soon"})]},e.name))})}let l5={allow:["Allow","var(--accent)"],ask:["Ask","var(--warn)"],deny:["Deny","var(--danger)"]},l6={allow:"ask",ask:"deny",deny:"allow"},l8=[{id:1,label:"Write src/windows.jsx",kind:"write",risk:"low",expect:"allow"},{id:2,label:"Overwrite prod/secrets.env",kind:"write",risk:"high",expect:"deny"},{id:3,label:"Run `npm test`",kind:"command",risk:"low",expect:"allow"},{id:4,label:"Run `kubectl apply` → prod",kind:"command",risk:"high",expect:"ask"},{id:5,label:"Open pull request #142",kind:"git",risk:"low",expect:"allow"},{id:6,label:"Email the customer",kind:"mail",risk:"low",expect:"ask"}],l9=[["Developer","Codes, reviews diffs, runs tests, opens PRs"],["Product Owner","Searches docs, drafts Jira tickets, plans releases"],["Designer","Explores UI options, reviews flows, writes specs"]],l7=[["calendar","Calendar","automations"],["mail","Mail","bell"],["jira","Jira","review"],["docs","Docs","files"]];function se({policy:e,setPolicy:t}){return(0,n.jsxs)("div",{className:"pol",children:[(0,n.jsx)("div",{className:"pol-hint",children:"Rights an agent inherits when Keiko governs. Tap a decision to cycle through Allow → Ask → Deny."}),e.map(e=>{let a=l5[e.decision];return(0,n.jsxs)("div",{className:"pol-row",children:[(0,n.jsxs)("div",{className:"pol-text",children:[(0,n.jsx)("span",{className:"pol-action",children:e.action}),(0,n.jsx)("span",{className:"pol-scope mono",children:e.scope})]}),(0,n.jsx)("button",{type:"button",className:"pol-dec",style:{color:a[1],borderColor:a[1]},onClick:()=>{let n;return n=e.id,t(e=>e.map(e=>e.id===n?{...e,decision:l6[e.decision]}:e))},children:a[0]})]},e.id)})]})}function st({decide:e}){let[t,l]=(0,a.useState)(!1),s=l8.map(t=>{let n=e(t.kind,t.risk);return{...t,actual:n,pass:n===t.expect}}),i=s.filter(e=>e.pass).length;return(0,n.jsxs)("div",{className:"evl",children:[(0,n.jsxs)("div",{className:"evl-head",children:[(0,n.jsxs)("button",{type:"button",className:"evl-run",onClick:()=>l(!0),children:[(0,n.jsx)(k.Icons.spark,{size:13})," Run evaluation"]}),t&&(0,n.jsxs)("span",{className:"evl-score"+(i===s.length?" ok":""),children:[i,"/",s.length," passed"]})]}),(0,n.jsx)("div",{className:"evl-hint",children:"Mock scenarios against your policy before going autonomous."}),s.map(e=>(0,n.jsxs)("div",{className:"evl-row","data-state":t?e.pass?"pass":"fail":"idle",children:[(0,n.jsx)("span",{className:"evl-ico",children:t?e.pass?(0,n.jsx)(k.Icons.check,{size:13}):(0,n.jsx)(k.Icons.close,{size:13}):(0,n.jsx)("span",{className:"evl-dot"})}),(0,n.jsx)("span",{className:"evl-label",children:e.label}),t&&(0,n.jsx)("span",{className:"evl-res mono",style:{color:l5[e.actual][1]},children:l5[e.actual][0]})]},e.id))]})}function sn({memory:e,setMemory:t}){let[l,s]=(0,a.useState)(""),i=()=>{let e=l.trim();""!==e&&(t(t=>[e,...t]),s(""))};return(0,n.jsxs)("div",{className:"mem",children:[(0,n.jsxs)("div",{className:"mem-add",children:[(0,n.jsx)("input",{value:l,onChange:e=>s(e.target.value),placeholder:"Teach Keiko something about you…",onKeyDown:e=>{"Enter"===e.key&&i()}}),(0,n.jsx)("button",{type:"button",onClick:i,"aria-label":"Add memory",children:(0,n.jsx)(k.Icons.plus,{size:15})})]}),e.map((e,a)=>(0,n.jsxs)("div",{className:"mem-row",children:[(0,n.jsx)(k.Icons.spark,{size:12}),(0,n.jsx)("span",{className:"mem-text",children:e}),(0,n.jsx)("button",{type:"button",className:"mem-x","aria-label":`Remove memory: ${e}`,onClick:()=>t(e=>e.filter((e,t)=>t!==a)),children:(0,n.jsx)(k.Icons.close,{size:12})})]},`${String(a)}-${e}`))]})}function sa({bridges:e,setBridges:t}){return(0,n.jsxs)("div",{className:"brg",children:[(0,n.jsx)("div",{className:"evl-hint",children:"What your twin can reach on your behalf."}),l7.map(([a,l,s])=>{let i=k.Icons[s],r=e[a];return(0,n.jsxs)("button",{type:"button",className:"brg-row","data-on":r,"aria-pressed":r,onClick:()=>t(e=>({...e,[a]:!e[a]})),children:[(0,n.jsx)("span",{className:"brg-ico",children:(0,n.jsx)(i,{size:16})}),(0,n.jsx)("span",{className:"brg-name",children:l}),(0,n.jsx)("span",{className:"brg-tg"+(r?" on":""),children:(0,n.jsx)("span",{})})]},a)})]})}function sl({persona:e,setPersona:t}){return(0,n.jsxs)("div",{className:"prs",children:[(0,n.jsx)("div",{className:"evl-hint",children:"Keiko adapts behaviour & tools to who is at the wheel."}),l9.map(([a,l])=>(0,n.jsxs)("button",{type:"button",className:"prs-row","data-on":e===a,"aria-pressed":e===a,onClick:()=>t(a),children:[(0,n.jsx)("span",{className:"prs-dot"}),(0,n.jsxs)("span",{className:"prs-text",children:[(0,n.jsx)("span",{className:"prs-name",children:a}),(0,n.jsx)("span",{className:"prs-desc",children:l})]}),e===a&&(0,n.jsx)(k.Icons.check,{size:14,style:{color:"var(--accent)"}})]},a))]})}let ss=[["policy","Policy"],["eval","EVAL"],["memory","MemoriaViva"],["bridges","Connections"],["persona","Persona"]];function si(){let e=j(),[t,l]=(0,a.useState)("policy");return(0,n.jsxs)("div",{className:"twin",children:[(0,n.jsxs)("div",{className:"twin-hero",children:[(0,n.jsx)("img",{className:"twin-orca",src:"/assets/keiko-logo.svg",alt:""}),(0,n.jsxs)("div",{className:"twin-id",children:[(0,n.jsx)("span",{className:"twin-name",children:"Keiko — Digital Twin"}),(0,n.jsxs)("span",{className:"twin-sub mono",children:["mirroring · ",e.persona]})]}),(0,n.jsx)("span",{className:"twin-mode "+("autonomous"===e.mode?"on":""),children:"autonomous"===e.mode?"Autonomous":"Manual"})]}),(0,n.jsx)("div",{className:"twin-tabs",children:ss.map(([e,a])=>(0,n.jsx)("button",{type:"button",className:"twin-tab","data-on":t===e,onClick:()=>l(e),children:a},e))}),(0,n.jsxs)("div",{className:"twin-body",children:["policy"===t&&(0,n.jsx)(se,{policy:e.policy,setPolicy:e.setPolicy}),"eval"===t&&(0,n.jsx)(st,{decide:e.decide}),"memory"===t&&(0,n.jsx)(sn,{memory:e.memory,setMemory:e.setMemory}),"bridges"===t&&(0,n.jsx)(sa,{bridges:e.bridges,setBridges:e.setBridges}),"persona"===t&&(0,n.jsx)(sl,{persona:e.persona,setPersona:e.setPersona})]})]})}function sr(e){return"embedding-only"===e?"Embedding model — not selectable for text conversation":"ocr-vision-only"===e?"OCR/vision-only — not selectable for text conversation":"Not a chat model — not selectable for text conversation"}function so({model:e}){let t=function(e){if("chat"!==e.kind)return tv[e.kind]}(e);return void 0===t?(0,n.jsx)("span",{className:"ml-elig ml-elig-ok","data-testid":"conv-elig-ok",role:"status","aria-label":"Model eligibility: eligible for conversation",children:"Conversation-eligible"}):(0,n.jsxs)("span",{className:"ml-elig ml-elig-no","data-testid":"conv-elig-no",role:"status","aria-label":"Model eligibility: "+sr(t),title:sr(t),children:["Not selectable — ","embedding-only"===t?"embedding model":"ocr-vision-only"===t?"OCR/vision-only":"not a chat model"]})}function sc({model:e}){var t;let a=tg(e);return(0,n.jsxs)("div",{className:"ml-row",children:[(0,n.jsx)("span",{className:"ml-ico",children:(0,n.jsx)(k.Icons.cube,{size:16})}),(0,n.jsxs)("div",{className:"ml-info",children:[(0,n.jsxs)("div",{className:"ml-top",children:[(0,n.jsx)("span",{className:"ml-name",children:e.id}),(0,n.jsx)("span",{className:"ml-type mono",children:"ocr-vision"===(t=e.kind)?"OCR":t}),(0,n.jsx)(so,{model:e})]}),(0,n.jsxs)("div",{className:"ml-url mono",children:["tools ",e.toolCalling?"yes":"no"," · structured"," ",e.structuredOutput?"yes":"no"," · ",e.costClass,"/",e.latencyClass]})]}),(0,n.jsx)("span",{className:"ml-status "+(a?"connected":"ineligible"),title:a?"conversation-eligible":"not selectable for conversation","aria-hidden":"true"})]})}let sd="keiko.wallpaper.opacity";function su(){let e=window.localStorage.getItem(sd);if(null===e)return 100;let t=Number.parseInt(e,10);return Number.isFinite(t)?Math.max(0,Math.min(100,t)):100}function sh(){let[e,t]=(0,a.useState)(su);(0,a.useEffect)(()=>{try{window.localStorage.setItem(sd,String(e))}catch{}window.dispatchEvent(new CustomEvent("keiko:wallpaper-opacity",{detail:e}))},[e]);let l={"--p":`${String(e)}%`};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"set-sec-h",children:(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"set-sec-t",children:"Workspace wallpaper"}),(0,n.jsx)("div",{className:"set-sec-d",children:"Liquid Chrome — a subtle metallic flow behind the grid that reacts to your cursor and clicks. Set to 0% for the plain workspace background."})]})}),(0,n.jsxs)("div",{className:"gpref",children:[(0,n.jsxs)("div",{className:"gpref-row",children:[(0,n.jsx)("label",{className:"gpref-label",htmlFor:"wp-op",children:"Wallpaper opacity"}),(0,n.jsxs)("span",{className:"gpref-val mono",children:[e,"%"]})]}),(0,n.jsx)("input",{id:"wp-op",className:"gpref-slider",type:"range",min:0,max:100,step:1,value:e,onChange:e=>t(Number.parseInt(e.target.value,10)),style:l,"aria-label":"Wallpaper opacity"}),(0,n.jsxs)("div",{className:"gpref-scale",children:[(0,n.jsx)("span",{children:"Off"}),(0,n.jsx)("span",{children:"Full"})]})]})]})}function sp(){let[e,t]=(0,a.useState)("models"),[l,s]=(0,a.useState)([]),[i,r]=(0,a.useState)(!1),[o,c]=(0,a.useState)(!0),[d,u]=(0,a.useState)(),[h,p]=(0,a.useState)(!1),[m,f]=(0,a.useState)(0);(0,a.useEffect)(()=>{let e=!1;return async function(){c(!0),u(void 0);try{let[t,n]=await Promise.all([(0,e4.fetchConfig)(),(0,e4.fetchModels)()]);if(e)return;r(t.configPresent),s(n.models)}catch(t){if(e)return;u(function(e){let t="Could not load gateway settings — the local Keiko backend did not respond.";if(!(e instanceof Error))return t;let n=e.message.trim();return 0===n.length||/^HTTP \d+$/u.test(n)||"Failed to fetch"===n||"Load failed"===n||"NetworkError when attempting to fetch a resource."===n?t:n}(t))}finally{e||c(!1)}}(),()=>{e=!0}},[m]);let g=l.filter(tg).length,v=l.length>0,x=i?v?0===g?"Gateway connected, but none of the discovered models can be used for conversation. Add a chat-capable deployment.":"Keiko can use the configured gateway models for chat and agent workflows.":"The gateway is configured, but no conversation-capable models are currently available.":"Enter the gateway base URL and API token before using chat or agent workflows.";return(0,n.jsxs)("div",{className:"set",children:[(0,n.jsxs)("div",{className:"set-hero",children:[(0,n.jsx)(k.Icons.settings,{size:18}),(0,n.jsx)("span",{className:"set-title",children:"Settings"}),(0,n.jsxs)("span",{className:"set-onprem",title:"Runs inside your network",children:[(0,n.jsx)("span",{className:"dot",style:{background:"var(--accent)"}})," Self-hosted"]})]}),(0,n.jsx)("div",{className:"set-tabs",children:["models","general","security"].map(a=>(0,n.jsx)("button",{type:"button",className:"set-tab","data-on":e===a,"aria-pressed":e===a,onClick:()=>t(a),children:"models"===a?"Models":"general"===a?"General":"Security"},a))}),(0,n.jsxs)("div",{className:"set-body",children:["models"===e&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"set-sec-h",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"set-sec-t",children:"Model gateway"}),(0,n.jsx)("div",{className:"set-sec-d",children:"Credentials are stored locally by the Keiko loopback server; secrets are never returned to the browser."})]}),(0,n.jsxs)("button",{type:"button",className:"set-add",onClick:()=>p(!0),children:[(0,n.jsx)(k.Icons.plus,{size:14}),i?"Update credentials":"Connect gateway"]})]}),(0,n.jsxs)("div",{className:"ml-row",children:[(0,n.jsx)("span",{className:"ml-ico",children:(0,n.jsx)(k.Icons.cube,{size:16})}),(0,n.jsxs)("div",{className:"ml-info",children:[(0,n.jsxs)("div",{className:"ml-top",children:[(0,n.jsx)("span",{className:"ml-name",children:i?v?"Gateway connected":"Gateway configured":"Gateway setup required"}),(0,n.jsxs)("span",{className:"ml-type mono",children:[l.length.toString()," models"]}),(0,n.jsxs)("span",{className:"ml-type mono",children:[g.toString()," chat"]})]}),(0,n.jsx)("div",{className:"ml-url mono",children:x})]}),(0,n.jsx)("span",{className:"ml-status "+(i?"connected":"untested"),title:i?"gateway configured":"setup required","aria-hidden":"true"})]}),void 0!==d?(0,n.jsxs)("div",{className:"gw-error",role:"alert",children:[d,(0,n.jsx)("button",{type:"button",className:"gw-error-retry",onClick:()=>f(e=>e+1),children:"Retry"})]}):null,o?(0,n.jsx)("div",{className:"set-placeholder",role:"status",children:"Loading gateway models…"}):0===l.length?(0,n.jsx)("div",{className:"set-placeholder",role:"status",children:i?"No conversation-capable models are currently available. Review the gateway configuration or discovered model set.":"No models are configured yet. Connect the gateway to load configured model capabilities."}):(0,n.jsx)("div",{className:"set-list",children:l.map(e=>(0,n.jsx)(sc,{model:e},e.id))}),h?(0,n.jsx)(e3,{onCancel:()=>p(!1)}):null]}),"general"===e&&(0,n.jsx)(sh,{}),"security"===e&&(0,n.jsx)("div",{className:"set-placeholder",children:"SSO · audit log · data residency — coming soon."})]})]})}function sm(e){return e instanceof e4.ApiError?`${e.message} (${e.code})`:e instanceof Error?e.message:"Failed to load connectors."}function sf(){return(0,n.jsx)("div",{className:"connector-picker-status",role:"status","aria-live":"polite",children:"Loading connectors…"})}function sg({message:e,onRetry:t}){return(0,n.jsxs)("div",{className:"connector-picker-error",role:"alert",children:[(0,n.jsx)("p",{children:e}),(0,n.jsx)("button",{type:"button",className:"connector-picker-retry",onClick:t,children:"Try again"})]})}function sv({onManageConnectors:e}){return(0,n.jsxs)("div",{className:"connector-picker-empty",children:[(0,n.jsx)("p",{children:"No ready connectors found."}),(0,n.jsx)("button",{type:"button",className:"connector-picker-create-link",onClick:e,children:"Create a connector"})]})}function sx({capsules:e,capsuleSets:t,selectedKind:a,selectedId:l}){let s=function(e,t,n,a){if(void 0===n||void 0===a||0===a.length)return null;if("capsule"===n){let t=e.find(e=>e.id===a);return void 0!==t?t.displayName:`Capsule ${a}`}if("capsule-set"===n){let e=t.find(e=>e.id===a);return void 0!==e?e.displayName:`Set ${a}`}return null}(e,t,a,l);return null===s?null:(0,n.jsxs)("div",{className:"connector-picker-selected",role:"status","aria-live":"polite",children:[(0,n.jsx)("span",{"aria-hidden":"true",children:"●"}),(0,n.jsx)("span",{children:s})]})}function sb({selectedId:e,selectedLabel:t,selectedState:a,onManageConnectors:l}){let s=void 0!==t&&t.trim().length>0?t.trim():`Capsule ${e}`;return(0,n.jsxs)("div",{className:"connector-node","data-testid":"knowledge-connector-node",children:[(0,n.jsx)("div",{className:"connector-node-icon","aria-hidden":"true",children:(0,n.jsx)(k.Icons.server,{size:42})}),(0,n.jsxs)("div",{className:"connector-node-copy",children:[(0,n.jsx)("p",{className:"connector-node-kicker",children:function(e){switch(e){case"ready":return"Indexed";case"draft":return"Draft";case"indexing":return"Indexing";case"stale":return"Stale";case"error":return"Failed";default:return"Local Knowledge"}}(a)}),(0,n.jsx)("h2",{className:"connector-node-title",title:s,children:s}),(0,n.jsx)("p",{className:"connector-node-id mono",title:e,children:e})]}),(0,n.jsx)("button",{type:"button",className:"connector-node-manage",onClick:l,children:"Manage"})]})}function sy({selectedKind:e,selectedId:t,selectedLabel:l,selectedState:s,presentation:i,onSelect:r,onManageConnectors:o=()=>void 0}){let[c,d]=(0,a.useState)([]),[u,h]=(0,a.useState)([]),[p,m]=(0,a.useState)(!0),[f,g]=(0,a.useState)(null),[v,x]=(0,a.useState)(!1),[b,y]=(0,a.useState)(0),j="node"===i&&"capsule"===e&&void 0!==t&&t.length>0;if((0,a.useEffect)(()=>{if(j)return;let e=!1;return async function(){m(!0),g(null),x(!1);try{let[t,n]=await Promise.allSettled([(0,ay.fetchCapsules)(),(0,ay.fetchCapsuleSets)()]);if(e)return;"fulfilled"===t.status?d(t.value.capsules.filter(e=>"ready"===e.lifecycleState)):g(sm(t.reason)),"fulfilled"===n.status?h(n.value.capsuleSets):x(!0)}catch(t){e||g(sm(t))}finally{e||m(!1)}}(),()=>{e=!0}},[j,b]),j)return(0,n.jsx)(sb,{selectedId:t,selectedLabel:l,selectedState:s,onManageConnectors:o});if(p)return(0,n.jsx)(sf,{});if(null!==f)return(0,n.jsx)(sg,{message:f,onRetry:()=>{y(e=>e+1)}});let w=c.length>0,k=u.length>0;if(!w&&!k)return(0,n.jsx)(sv,{onManageConnectors:o});let N=void 0!==e&&void 0!==t&&t.length>0?`${e}:${t}`:"";return(0,n.jsxs)("div",{className:"connector-picker",children:[(0,n.jsx)(sx,{capsules:c,capsuleSets:u,selectedKind:e,selectedId:t}),(0,n.jsx)("label",{className:"connector-picker-label",htmlFor:"connector-picker-select",children:"Select a connector"}),(0,n.jsxs)("select",{id:"connector-picker-select",className:"connector-picker-select",value:N,onChange:e=>{!function(e){if(""===e)return;let t=e.indexOf(":");if(-1===t)return;let n=e.slice(0,t),a=e.slice(t+1);0!==a.length&&r({selectedKind:n,selectedId:a})}(e.target.value)},children:[(0,n.jsx)("option",{value:"",disabled:!0,children:"— choose a connector —"}),w&&(0,n.jsx)("optgroup",{label:"Capsules",children:c.map(e=>(0,n.jsx)("option",{value:`capsule:${e.id}`,children:`${e.displayName} (${function(e){switch(e){case"ready":return"Ready";case"indexing":return"Indexing…";case"error":return"Failed";default:return e}}(e.lifecycleState)})`},`capsule:${e.id}`))}),k&&(0,n.jsx)("optgroup",{label:"Capsule sets",children:u.map(e=>(0,n.jsx)("option",{value:`capsule-set:${e.id}`,children:`${e.displayName} (${String(e.capsuleCount)} capsules)`},`capsule-set:${e.id}`))})]}),v?(0,n.jsx)("p",{className:"connector-picker-notice",role:"status",children:"Capsule sets could not be loaded."}):null,(0,n.jsx)("div",{className:"connector-picker-footer",children:(0,n.jsx)("button",{type:"button",className:"connector-picker-create-link",onClick:o,children:"Create or manage connectors"})})]})}async function sj(e,t){let n=(t?.method??"GET").toUpperCase(),a=await fetch(e,{...t,headers:{Accept:"application/json",...t?.body!==void 0?{"Content-Type":"application/json"}:{},..."GET"===n||"HEAD"===n?{}:{"X-Keiko-CSRF":"1"},...t?.headers??{}}});if(!a.ok){let e="INTERNAL",t=`HTTP ${a.status.toString()}`;try{let n=await a.json();e=n.error.code,t=n.error.message}catch{}throw new e4.ApiError(e,t,a.status)}return a.json()}async function sw(e,t={}){return sj("/api/figma/snapshots",{method:"POST",...void 0!==t.signal?{signal:t.signal}:{},body:JSON.stringify({boardLink:e,...!0===t.acknowledgeReadOnly?{acknowledgeReadOnly:!0}:{},...!0===t.isResnapshot?{isResnapshot:!0}:{}})})}async function sk(e,t){return sj(`/api/figma/snapshots/${encodeURIComponent(e)}`,{...void 0!==t?{signal:t}:{}})}async function sN(e,t){return sj(`/api/figma/snapshots/${encodeURIComponent(e)}/code`,{method:"POST",...void 0!==t?{signal:t}:{},body:JSON.stringify({})})}async function sS(){return sj("/api/figma/token",{method:"DELETE"})}function sC(e){try{let t=new URL(e.trim()),n=t.hostname.toLowerCase();if("figma.com"!==n&&!n.endsWith(".figma.com")||!/^\/(design|file)\//u.test(t.pathname))return!1;let a=t.searchParams.get("node-id");return null!==a&&a.length>0}catch{return!1}}let sI=new Set(["FIGMA_PROXY_EGRESS_FAILED","FIGMA_PROXY_UNREACHABLE","FIGMA_PROXY_AUTH_REQUIRED","FIGMA_PROXY_BLOCKED_BY_POLICY"]),sE=new Set(["FIGMA_TLS_CA_FAILURE"]),sR=new Set(["FIGMA_NETWORK_UNREACHABLE","FIGMA_EGRESS_TIMEOUT","FIGMA_EGRESS_FAILED"]);function s$(e){return e instanceof e4.ApiError?"FIGMA_UPSTREAM_UNAVAILABLE"===e.code?{title:"Figma is currently unavailable",detail:`${e.code}: ${e.message}`,status:`HTTP ${e.status.toString()}`,remediation:"Retry later — no snapshot was stored.",assertive:!0}:sI.has(e.code)?{title:"Figma snapshot blocked by outbound egress",detail:`${e.code}: ${e.message}`,status:`HTTP ${e.status.toString()}`,remediation:"Check the configured proxy, NO_PROXY rules, and CA bundle, then retry. No snapshot was stored.",assertive:!0}:sE.has(e.code)?{title:"Figma snapshot blocked by outbound egress",detail:`${e.code}: ${e.message}`,status:`HTTP ${e.status.toString()}`,remediation:"A TLS certificate verification failure blocked the request. Check the CA bundle configuration, then retry. No snapshot was stored.",assertive:!0}:sR.has(e.code)?{title:"Figma snapshot blocked by outbound egress",detail:`${e.code}: ${e.message}`,status:`HTTP ${e.status.toString()}`,remediation:"The outbound network request to Figma failed. Check DNS resolution and network connectivity, then retry. No snapshot was stored.",assertive:!0}:{title:"Figma snapshot failed",detail:e.message}:e instanceof Error?{title:"Figma snapshot failed",detail:e.message}:{title:"Figma snapshot failed",detail:"An unexpected error occurred."}}function sT(e){let t=s$(e);return void 0===t.status?t.detail:`${t.detail} (${t.status})`}function sA({index:e,screenId:t,name:a,irSummary:l,imageByteLength:s}){return(0,n.jsxs)("article",{className:"figma-snapshot-screen-card","aria-label":`Screen ${String(e+1)}: ${a}`,children:[(0,n.jsxs)("div",{className:"figma-snapshot-screen-placeholder","aria-hidden":"true",children:[(0,n.jsx)("svg",{className:"figma-snapshot-screen-frame-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:(0,n.jsx)("path",{d:"M7 2v20M17 2v20M2 7h20M2 17h20"})}),(0,n.jsx)("span",{className:"figma-snapshot-screen-index",children:String(e+1)})]}),(0,n.jsxs)("div",{className:"figma-snapshot-screen-meta",children:[(0,n.jsx)("h3",{className:"figma-snapshot-screen-name",title:a,children:a}),(0,n.jsx)("p",{className:"figma-snapshot-screen-summary",children:l}),(0,n.jsx)("p",{className:"figma-snapshot-screen-size",children:ny(s)}),(0,n.jsx)("p",{className:"figma-snapshot-screen-id",children:t})]})]})}function sL({snapshotRunId:e,updateCfg:t,triggerImpl:l=sw,loadImpl:s=sk,codegenImpl:i=sN,revokeImpl:r=sS}){let o=(0,a.useId)(),c=(0,a.useId)(),d=(0,a.useId)(),[u,h]=(0,a.useState)(""),[p,m]=(0,a.useState)("idle"),[f,g]=(0,a.useState)(null),[v,x]=(0,a.useState)(null),[b,y]=(0,a.useState)(!1),[j,w]=(0,a.useState)(!1),k=(0,a.useRef)(null),N=(0,a.useRef)(null),S=(0,a.useCallback)(()=>{w(!0)},[]),[C,I]=(0,a.useState)("idle"),[E,R]=(0,a.useState)(null),[$,T]=(0,a.useState)(null),[A,L]=(0,a.useState)(!1),[q,P]=(0,a.useState)(null),[M,D]=(0,a.useState)(null),F=(0,a.useRef)(null),z=(0,a.useRef)(null),O=sC(u),K=function(e){let t=e.trim();if(0===t.length||sC(t))return null;try{let e=new URL(t).hostname.toLowerCase();if("figma.com"===e||e.endsWith(".figma.com"))return"Add a node-id by selecting a frame or section in Figma and copying its link (Copy link to selection)."}catch{}return"This doesn't look like a Figma board link. Use a figma.com design/file link that includes a node-id parameter."}(u),_="building"===p,B="loading"===p,U=_||B;(0,a.useEffect)(()=>{j&&"error"===p&&k.current?.focus()},[j,p]),(0,a.useEffect)(()=>{A&&F.current?.focus()},[A]),(0,a.useEffect)(()=>()=>{N.current?.abort()},[]);let W=(0,a.useCallback)(async(e,n)=>{N.current?.abort();let a=new AbortController;N.current=a,m("building"),x(null),I("idle"),R(null);try{let s=await l(e,{acknowledgeReadOnly:b,isResnapshot:n,signal:a.signal});g(s),t({snapshotRunId:s.runId}),m("done")}catch(e){if(e instanceof DOMException&&"AbortError"===e.name)return;if(e instanceof e4.ApiError&&"FIGMA_CONSENT_REQUIRED"===e.code){let t=s$(e);x({...t,detail:`${t.detail} Tick the acknowledgement checkbox below, then snapshot again.`}),S()}else x(s$(e));m("error")}},[l,t,b,S]),H=(0,a.useCallback)(e=>{if(e.preventDefault(),O&&!U){if(!b){x({title:"Figma snapshot failed",detail:"Tick the read-only acknowledgement checkbox below, then snapshot again."}),m("error"),S();return}W(u,!1)}},[u,U,b,O,W,S]),G=(0,a.useCallback)(()=>{U||null===f||W(`https://www.figma.com/design/${f.fileKey}/board?node-id=${f.nodeId}`,!0)},[U,W,f]),Y=(0,a.useCallback)(()=>{N.current?.abort(),N.current=null,m("idle"),x(null)},[]),V=(0,a.useCallback)(()=>{let t=f?.runId??e;void 0!==t&&0!==t.length&&"generating"!==C&&(I("generating"),T(null),i(t).then(e=>{R(e),I("done")}).catch(e=>{T(sT(e)),I("error")}))},[i,C,e,f]),Q=(0,a.useCallback)(()=>{if(void 0===e||0===e.length||U)return;N.current?.abort();let n=new AbortController;N.current=n,m("loading"),x(null),s(e,n.signal).then(e=>{g(e),m("done")}).catch(e=>{e instanceof DOMException&&"AbortError"===e.name||(e instanceof e4.ApiError&&"FIGMA_SNAPSHOT_NOT_FOUND"===e.code?(t({snapshotRunId:void 0}),x({...s$(e),detail:`${e.message} The stored run ID has been cleared.`})):x(s$(e)),m("error"))})},[U,s,e,t]),X=(0,a.useCallback)(()=>{L(!1),D(null),P(null),r().then(e=>{P(e.message),requestAnimationFrame(()=>z.current?.focus())}).catch(e=>{D(sT(e)),requestAnimationFrame(()=>z.current?.focus())})},[r]),J=(0,a.useCallback)(()=>{L(!1),requestAnimationFrame(()=>z.current?.focus())},[]),Z=void 0!==e&&e.length>0&&null===f&&("idle"===p||"loading"===p||"error"===p);return(0,n.jsxs)("section",{className:"figma-snapshot-window","aria-label":"Figma Snapshot",children:[(0,n.jsxs)("form",{className:"figma-snapshot-form",onSubmit:H,noValidate:!0,children:[(0,n.jsx)("label",{className:"figma-snapshot-label",htmlFor:o,children:"Board link"}),(0,n.jsxs)("div",{className:"figma-snapshot-input-row",children:[(0,n.jsx)("input",{id:o,type:"url",className:"figma-snapshot-input",placeholder:"https://www.figma.com/design/…?node-id=…",value:u,onChange:e=>{h(e.target.value),null!==v&&x(null),"error"===p&&m("idle"),j&&w(!1)},"aria-describedby":null!==K?`${d} ${c}`:c,"aria-invalid":null!==K?"true":void 0,readOnly:U,autoComplete:"off",spellCheck:!1}),(0,n.jsx)("button",{type:"submit",className:"figma-snapshot-trigger-btn",disabled:!O&&!U,"aria-disabled":!O||U?"true":void 0,"aria-busy":_,children:_?"Building…":"Snapshot"})]}),null!==K&&(0,n.jsx)("p",{id:d,className:"figma-snapshot-link-error",children:K}),(0,n.jsxs)("label",{className:"figma-snapshot-consent",children:[(0,n.jsx)("input",{type:"checkbox",className:"figma-snapshot-consent-checkbox",ref:k,checked:b,"aria-invalid":j?"true":void 0,onChange:e=>{y(e.target.checked),null!==v&&x(null),"error"===p&&m("idle"),w(!1)},disabled:_}),(0,n.jsxs)("span",{children:["I acknowledge the configured Figma PAT is read-only and least-privilege (",(0,n.jsx)("code",{children:"files:read"}),")."," ",(0,n.jsx)("span",{className:"figma-snapshot-consent-required",children:"Required before the first snapshot of a board."})]})]}),(0,n.jsx)("p",{className:"figma-snapshot-hint",children:"Paste a Figma board link with a node-id param (section or frame anchor). The access token is resolved server-side — it never reaches this page."})]}),"error"===p&&null!==v&&!0===v.assertive&&(0,n.jsxs)("div",{className:"figma-snapshot-error-card",role:"alert","aria-labelledby":`${c}-error-title`,children:[(0,n.jsx)("p",{id:`${c}-error-title`,className:"figma-snapshot-error-title",children:v.title}),(0,n.jsx)("p",{className:"figma-snapshot-error-detail",children:v.detail}),void 0!==v.status&&(0,n.jsx)("p",{className:"figma-snapshot-error-status",children:v.status}),void 0!==v.remediation&&(0,n.jsx)("p",{className:"figma-snapshot-error-remediation",children:v.remediation})]}),(0,n.jsxs)("div",{id:c,role:"status","aria-live":"polite","aria-atomic":"true",className:"figma-snapshot-status",children:[_&&(0,n.jsx)("p",{className:"figma-snapshot-progress",children:"Building snapshot — fetching screens from Figma…"}),B&&(0,n.jsx)("p",{className:"figma-snapshot-progress",children:"Loading stored snapshot…"}),"done"===p&&null!==f&&(0,n.jsxs)("p",{className:"sr-only",children:["Snapshot complete — ",f.reductionHint,"."]}),"done"===C&&null!==E&&(0,n.jsxs)("p",{className:"sr-only",children:["Code generated — ",String(E.fileCount)," file",1!==E.fileCount?"s":""," ready for review."]}),"idle"===p&&(0,n.jsx)("p",{className:"sr-only","aria-live":"polite"}),"error"===p&&null!==v&&!0!==v.assertive&&(0,n.jsx)("p",{className:"figma-snapshot-error",children:v.detail})]}),_&&(0,n.jsxs)("div",{className:"figma-snapshot-cancel-row",children:[(0,n.jsx)("button",{type:"button",className:"figma-snapshot-cancel-btn",onClick:Y,children:"Cancel"}),(0,n.jsx)("p",{className:"figma-snapshot-cancel-note",role:"status","aria-live":"polite",children:"Cancelling stops this window from waiting — the server-side build continues on demand."})]}),"idle"===p&&null===f&&!Z&&(0,n.jsxs)("div",{className:"figma-snapshot-empty",children:[(0,n.jsx)("p",{className:"figma-snapshot-empty-title",children:"Capture screens from a Figma board"}),(0,n.jsxs)("ol",{className:"figma-snapshot-empty-steps",children:[(0,n.jsx)("li",{children:"In Figma, select the frame or section you want to capture."}),(0,n.jsx)("li",{children:"Copy its link (Copy link to selection) — it contains the node-id."}),(0,n.jsx)("li",{children:"Paste it above, acknowledge the read-only scope, then take the snapshot."})]}),(0,n.jsx)("p",{className:"figma-snapshot-empty-note",children:"The snapshot stores the captured screens and their structure as immutable evidence — connect this window to Quality Intelligence to ground generated tests in the design. Requires a Figma access token configured on the server."})]}),Z&&(0,n.jsxs)("div",{className:"figma-snapshot-stored-notice",children:[(0,n.jsx)("p",{className:"figma-snapshot-stored-text",children:"A stored snapshot is available."}),(0,n.jsx)("button",{type:"button",className:"figma-snapshot-load-btn",onClick:Q,"aria-disabled":B?"true":void 0,"aria-busy":B,children:B?"Loading…":"Load snapshot"})]}),null!==f&&(0,n.jsxs)("div",{className:"figma-snapshot-result",children:[(0,n.jsxs)("div",{className:"figma-snapshot-reduction",children:[(0,n.jsx)("p",{className:"figma-snapshot-reduction-hint",children:f.reductionHint}),(0,n.jsxs)("p",{className:"figma-snapshot-captured-at",children:["Captured ",function(e){try{return new Date(e).toLocaleString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return"string"==typeof e?e:e.toString()}}(f.fetchedAt)]}),f.skippedCount>0&&(0,n.jsxs)("p",{className:"figma-snapshot-skipped-notice",children:[String(f.skippedCount)," screen",1!==f.skippedCount?"s":""," could not be rendered and were skipped."]})]}),(0,n.jsx)("button",{type:"button",className:"figma-snapshot-resnapshot-btn",onClick:G,"aria-disabled":U?"true":void 0,"aria-busy":_,"aria-label":"Re-snapshot this board",children:_?"Building…":"Re-snapshot"}),(0,n.jsxs)("div",{className:"figma-snapshot-codegen",children:[(0,n.jsx)("button",{type:"button",className:"figma-snapshot-codegen-btn",onClick:V,"aria-disabled":"generating"===C?"true":void 0,"aria-busy":"generating"===C,children:"generating"===C?"Generating code…":"Generate code"}),"error"===C&&null!==$&&(0,n.jsx)("p",{className:"figma-snapshot-error",role:"alert",children:$}),"done"===C&&null!==E&&(0,n.jsxs)("div",{className:"figma-snapshot-code-result",children:[(0,n.jsxs)("p",{className:"figma-snapshot-code-summary",children:[String(E.fileCount)," reviewable file",1!==E.fileCount?"s":""," (",String(E.screenCount)," screen",1!==E.screenCount?"s":"",","," ",E.adapterName,") — proposal only, never auto-applied."]}),E.files.map(e=>(0,n.jsxs)("details",{className:"figma-snapshot-code-file",children:[(0,n.jsx)("summary",{className:"figma-snapshot-code-file-path",children:e.path}),(0,n.jsx)("pre",{className:"figma-snapshot-code-file-contents",children:(0,n.jsx)("code",{children:e.contents})})]},e.path))]})]}),(0,n.jsxs)("details",{className:"figma-snapshot-scopes",children:[(0,n.jsx)("summary",{className:"figma-snapshot-scopes-summary",children:"Required Figma PAT scopes"}),(0,n.jsxs)("ul",{className:"figma-snapshot-scopes-list",children:[(0,n.jsxs)("li",{children:[(0,n.jsx)("code",{children:"file_read"})," — read design file structure and node metadata"]}),(0,n.jsxs)("li",{children:[(0,n.jsx)("code",{children:"files:read"})," — read file content (REST API scope)"]})]}),(0,n.jsxs)("p",{className:"figma-snapshot-scopes-note",children:["The token is read server-side from the ",(0,n.jsx)("code",{children:"FIGMA_ACCESS_TOKEN"})," environment variable or vault. This window never holds or transmits the token."]}),(0,n.jsxs)("div",{className:"figma-snapshot-revoke-row",children:[A?(0,n.jsxs)("span",{className:"figma-snapshot-revoke-confirm",children:[(0,n.jsx)("span",{className:"figma-snapshot-revoke-confirm-label",children:"Really revoke the stored token?"}),(0,n.jsx)("button",{ref:F,type:"button",className:"figma-snapshot-revoke-confirm-btn",onClick:X,children:"Yes, revoke"}),(0,n.jsx)("button",{type:"button",className:"figma-snapshot-revoke-cancel-btn",onClick:J,children:"Cancel"})]}):(0,n.jsx)("button",{ref:z,type:"button",className:"figma-snapshot-revoke-btn",onClick:()=>{L(!0),P(null),D(null)},children:"Revoke stored token"}),(0,n.jsx)("p",{className:"figma-snapshot-revoke-status",role:"status","aria-live":"polite","aria-atomic":"true",children:q??M??""})]})]}),f.screens.length>0?(0,n.jsx)("section",{className:"figma-snapshot-gallery","aria-label":`${String(f.screenCount)} captured screen${1!==f.screenCount?"s":""}`,children:f.screens.map((e,t)=>(0,n.jsx)(sA,{index:t,screenId:e.screenId,name:e.name,irSummary:e.irSummary,imageByteLength:e.imageByteLength},e.screenId))}):(0,n.jsx)("div",{className:"lk-empty",children:(0,n.jsx)("p",{className:"lk-empty-body",children:"No screens were captured from this board section."})})]})]})}async function sq(e,t){let n=(t?.method??"GET").toUpperCase(),a=await fetch(e,{...t,headers:{Accept:"application/json",...t?.body!==void 0?{"Content-Type":"application/json"}:{},..."GET"===n||"HEAD"===n?{}:{"X-Keiko-CSRF":"1"},...t?.headers??{}}});if(!a.ok){let e="INTERNAL",t=`HTTP ${a.status.toString()}`;try{let n=await a.json();e=n.error.code,t=n.error.message}catch{}throw new e4.ApiError(e,t,a.status)}return a.json()}async function sP(){return sq("/api/quality-intelligence/runs")}async function sM(e){return sq(`/api/quality-intelligence/runs/${encodeURIComponent(e)}`)}async function sD(e){let t="QI_RUN_FAILED",n=`HTTP ${e.status.toString()}`;try{let a=await e.json();t=a.error?.code??t,n=a.error?.message??n}catch{}return new e4.ApiError(t,n,e.status)}async function sF(e,t,n){let a=await fetch("/api/quality-intelligence/runs",{method:"POST",headers:{Accept:"text/event-stream","Content-Type":"application/json","X-Keiko-CSRF":"1"},body:JSON.stringify(e),signal:t}),l=a.headers.get("content-type")??"";if(!a.ok||!l.includes("text/event-stream"))throw await sD(a);let s=a.body;if(null===s)throw new e4.ApiError("QI_NO_STREAM","The server did not return a progress stream.",a.status);let i=s.getReader(),r=new TextDecoder,o="";try{for(;!t.aborted;){let e=await i.read();if(e.done)break;let t=(o+=r.decode(e.value,{stream:!0})).split("\n");for(let e of(o=t.pop()??"",t)){let t=e.trim();if(t.startsWith("data:"))try{n(JSON.parse(t.slice(5).trim()))}catch{}}}}finally{await i.cancel().catch(()=>{}),i.releaseLock()}}async function sz(e,t,n,a){return sq(`/api/quality-intelligence/runs/${encodeURIComponent(e)}/review`,{method:"POST",body:JSON.stringify({action:t,...void 0!==n?{candidateId:n}:{},...void 0!==a?{reviewerLabel:a}:{}})})}async function sO(e,t,n,a){return(await sq(`/api/quality-intelligence/runs/${encodeURIComponent(e)}/edit`,{method:"POST",body:JSON.stringify({candidateId:t,edited:n,...void 0!==a?{editorLabel:a}:{}})})).candidate}async function sK(e,t){return sq(`/api/quality-intelligence/runs/${encodeURIComponent(e)}/re-check`,{method:"POST",body:JSON.stringify({sources:t})})}async function s_(e,t){return sq(`/api/quality-intelligence/runs/${encodeURIComponent(e)}/regenerate-stale`,{method:"POST",body:JSON.stringify({sources:t})})}async function sB(e,t,n){return sq(`/api/quality-intelligence/runs/${encodeURIComponent(e)}/export`,{method:"POST",body:JSON.stringify({adapter:t,dryRun:n?.dryRun??!1,approvedOnly:n?.approvedOnly??!1})})}async function sU(e,t){return sq(`/api/quality-intelligence/runs/${encodeURIComponent(e)}/traceability`,{method:"POST",body:JSON.stringify({format:t})})}let sW={open:"Open",approved:"Approved","changes-requested":"Changes requested",rejected:"Rejected",withdrawn:"Withdrawn"};function sH(e){if(e instanceof e4.ApiError){var t,n;return t=e.code,n=e.message,`${n} (${t})`}return e instanceof Error?e.message:"An unexpected error occurred."}function sG(e){try{return new Date(e).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"short"})}catch{return e}}let sY={running:"Running",succeeded:"Succeeded",failed:"Failed",cancelled:"Cancelled"},sV={running:"qi-badge-running",succeeded:"qi-badge-succeeded",failed:"qi-badge-failed",cancelled:"qi-badge-cancelled"};function sQ(e){return"running"===e||"succeeded"===e||"failed"===e||"cancelled"===e}function sX({status:e}){let t=sQ(e)?sY[e]:e,a=sQ(e)?sV[e]:"qi-badge-default";return(0,n.jsx)("span",{className:`qi-badge ${a}`,children:t})}let sJ={critical:"qi-sev-critical",high:"qi-sev-high",medium:"qi-sev-medium",low:"qi-sev-low"};function sZ({severity:e}){let t="critical"===e||"high"===e||"medium"===e||"low"===e?sJ[e]:"qi-sev-low";return(0,n.jsxs)("span",{className:`qi-sev ${t}`,children:[(0,n.jsx)("span",{className:"sr-only",children:"Severity: "}),e]})}function s0({score:e}){if(null===e)return(0,n.jsxs)("span",{className:"qi-badge qi-badge-default","data-testid":"qi-quality-badge",children:[(0,n.jsx)("span",{"aria-hidden":"true",children:"—"}),(0,n.jsx)("span",{className:"sr-only",children:"Quality score not available"})]});let t=Math.round(e);return(0,n.jsxs)("span",{className:`qi-badge ${t>=90?"qi-quality-high":t>=70?"qi-quality-mid":"qi-quality-low"}`,"data-testid":"qi-quality-badge",children:[t.toString(),(0,n.jsx)("span",{className:"sr-only",children:" out of 100"})]})}function s1({flag:e}){return(0,n.jsxs)("div",{role:"note","aria-label":`Weak test flagged by the quality judge: ${e.rationale}`,className:"qi-weak-flag","data-testid":"qi-weak-flag",children:[(0,n.jsxs)("span",{className:"qi-weak-flag-badge",children:[(0,n.jsx)("span",{"aria-hidden":"true",className:"qi-weak-flag-icon",children:"⚠"}),"Weak test"]}),(0,n.jsx)("p",{className:"qi-weak-flag-reason",children:e.rationale})]})}function s2({height:e=20,width:t="100%"}){return(0,n.jsx)("div",{"aria-hidden":"true",className:"qi-skeleton",style:{height:e,width:t}})}function s4(){return(0,n.jsx)("div",{"data-testid":"qi-loading-state","aria-busy":"true",style:{display:"flex",flexDirection:"column",gap:8,padding:"12px 0"},children:[1,2,3].map(e=>(0,n.jsxs)("div",{className:"qi-skeleton-row",children:[(0,n.jsx)(s2,{height:14,width:"60%"}),(0,n.jsx)(s2,{height:12,width:"40%"})]},e))})}function s3({message:e,onRetry:t}){return(0,n.jsxs)("div",{role:"alert","aria-live":"assertive",className:"lk-alert","data-testid":"qi-error-state",children:[e,(0,n.jsx)("button",{type:"button",className:"lk-alert-retry",onClick:t,children:"Retry"})]})}function s5(e){let t=e.split(/[\\/]/u).filter(e=>e.length>0);return t.length>0?t[t.length-1]??e:e}function s6(e){return e.replaceAll("\\","/")}function s8(e){return/^[A-Za-z]:[/\\]?$/u.test(e)?e.replaceAll("\\","/"):/^\/\/[^/]+\/[^/]+$/u.test(s6(e))?s6(e):s6(e).replace(/\/+$/u,"")}function s9(e){let t=e.connectedRoot??null,n=function(e,t){let n=t?.trim()??"";if(0===n.length)return null;if(n.startsWith("/")||/^[A-Za-z]:[/\\]/u.test(n)||n.startsWith("\\\\")||n.startsWith("//"))return n;let a=e?.trim()??"";if(0===a.length)return null;let l=s8(a),s=s6(n).replace(/^\/+/u,"");return`${l}/${s}`}(t,e.connectedFilePath??null),a=null!==t?s8(t):null,l=(void 0!==e.connectedRoots&&null!==e.connectedRoots&&e.connectedRoots.length>0?e.connectedRoots:null!==t?[t]:[]).map(s8),s=null!==n?l.filter(e=>e!==a):l,i=[];for(let e of(null!==n&&i.push({kind:"file",label:s5(n),path:n}),s))i.push({kind:"workspace",label:s5(e),path:e});for(let t of e.connectedCapsuleIds??[])i.push({kind:"capsule",label:t,capsuleId:t});for(let t of e.connectedCapsuleSetIds??[])i.push({kind:"capsule-set",label:t,capsuleSetId:t});for(let t of e.connectedFigmaSnapshotRunIds??[])i.push({kind:"figma-snapshot",label:t,snapshotRunId:t});let r=new Set,o=[];for(let e of i){if(o.length>=16)break;let t=function(e){switch(e.kind){case"file":case"workspace":return`${e.kind}:${e.path}`;case"capsule":return`capsule:${e.capsuleId}`;case"capsule-set":return`capsule-set:${e.capsuleSetId}`;case"figma-snapshot":return`figma-snapshot:${e.snapshotRunId}`}}(e);r.has(t)||(r.add(t),o.push(e))}return o}let s7=[{id:"regression-default",label:"Regression (default)"},{id:"banking-default",label:"Banking"},{id:"insurance-default",label:"Insurance"}],ie={phase:"Starting…",stageName:null,candidates:0,findings:0,atomCount:null,droppedSourceCount:0,skippedSources:[]};function it(e){switch(e.kind){case"file":return"File";case"workspace":return"Folder";case"capsule":return"Capsule";case"capsule-set":return"Capsule set";case"figma-snapshot":return"Figma snapshot"}}function ia(e){switch(e.kind){case"file":case"workspace":return e.path;case"capsule":return e.capsuleId;case"capsule-set":return e.capsuleSetId;case"figma-snapshot":return e.snapshotRunId}}function il({onRunCompleted:e,startImpl:t=sF,fetchCapsulesImpl:l=ay.fetchCapsules,fetchCapsuleSetsImpl:s=ay.fetchCapsuleSets,connectedRoot:i=null,connectedFilePath:r=null,connectedRoots:o,connectedCapsuleIds:c,connectedCapsuleSetIds:d,connectedFigmaSnapshotRunIds:u}){let[h,p]=(0,a.useState)(""),[m,f]=(0,a.useState)("requirements"),[g,v]=(0,a.useState)(""),[x,b]=(0,a.useState)(""),[y,j]=(0,a.useState)(""),[w,k]=(0,a.useState)(""),[N,S]=(0,a.useState)([]),[C,I]=(0,a.useState)([]),[E,R]=(0,a.useState)(!1),[$,T]=(0,a.useState)(null),[A,L]=(0,a.useState)("regression-default"),[q,P]=(0,a.useState)(""),[M,D]=(0,a.useState)(!1),[F,z]=(0,a.useState)(ie),[O,K]=(0,a.useState)(null),_=(0,a.useRef)(null),B=(0,a.useRef)(null),U=(0,a.useRef)(!1),W=s9({connectedRoot:i,connectedFilePath:r,connectedRoots:o,connectedCapsuleIds:c,connectedCapsuleSetIds:d,connectedFigmaSnapshotRunIds:u}),H=W.length>0,G=N.find(e=>e.id===y),Y=C.find(e=>e.id===w),V=x.trim().length>0,Q="requirements"===m?g.trim().length>0:"workspace"===m||"file"===m?V:"capsule"===m?y.trim().length>0:w.trim().length>0,X="requirements"===m?0===g.trim().length:("workspace"===m||"file"===m)&&!V,J=Q||X&&H,Z=q.trim(),ee=0===Z.length?void 0:/^\d+$/u.test(Z)?Number(Z):NaN,et=void 0===ee||Number.isSafeInteger(ee)&&Number.isFinite(ee),en=!J||!et,ea=(0,a.useId)(),el=(0,a.useId)(),es=(0,a.useId)(),ei=J?et?void 0:el:ea,er=(0,a.useCallback)(e=>{var t,n;"done"===e.type&&("succeeded"===e.status?B.current=e.runId:"failed"===e.status&&K("The run did not complete successfully. Adjust the source and retry.")),"error"===e.type&&K((t=e.code,n=e.message,`${n} (${t})`)),z(t=>(function(e,t){if("accepted"===t.type)return{...e,phase:"Ingested sources",atomCount:t.atomCount,droppedSourceCount:t.droppedSourceCount??0,skippedSources:t.skippedSources??[]};if("event"===t.type){let n="candidate:proposed"===t.kind?e.candidates+1:e.candidates,a="finding:recorded"===t.kind?e.findings+1:e.findings,l="stage:started"===t.kind?t.stageName??null:e.stageName;return{...e,phase:t.kind,stageName:l,candidates:n,findings:a}}return e})(t,e))},[]),eo="capsule"===m||"capsule-set"===m;(0,a.useEffect)(()=>{if(!eo)return;let e=!1;return async function(){R(!0),T(null);try{let[t,n]=await Promise.allSettled([l(),s()]);if(e)return;"fulfilled"===t.status?S(t.value.capsules.filter(e=>"ready"===e.lifecycleState)):(S([]),"capsule"===m&&T(sH(t.reason))),"fulfilled"===n.status?I(n.value.capsuleSets):(I([]),"capsule-set"===m&&T(sH(n.reason)))}finally{e||R(!1)}}(),()=>{e=!0}},[l,s,eo,m]),(0,a.useEffect)(()=>{if("capsule"===m){let e=N.some(e=>e.id===y)?y:N[0]?.id??"";e!==y&&j(e)}if("capsule-set"===m){let e=C.some(e=>e.id===w)?w:C[0]?.id??"";e!==w&&k(e)}},[y,w,C,N,m]);let ec=(0,a.useCallback)(()=>{let e=h.trim();return"requirements"===m&&g.trim().length>0?[{kind:"requirements",label:e||"Requirements",text:g}]:"workspace"===m&&x.trim().length>0?[{kind:"workspace",label:e||"Folder",path:x.trim()}]:"file"===m&&x.trim().length>0?[{kind:"file",label:e||"File",path:x.trim()}]:"capsule"===m&&y.trim().length>0?[{kind:"capsule",label:e||G?.displayName||"Knowledge capsule",capsuleId:y.trim()}]:"capsule-set"===m&&w.trim().length>0?[{kind:"capsule-set",label:e||Y?.displayName||"Capsule set",capsuleSetId:w.trim()}]:null},[y,w,h,x,G,Y,m,g]),ed=(0,a.useCallback)(async()=>{if(!J||M||!et||U.current)return;U.current=!0,D(!0),K(null),z(ie),B.current=null;let n=new AbortController;_.current=n;let a=ec()??W,l={sources:a,profileId:A,...void 0!==ee?{seed:ee}:{}};try{await t(l,n.signal,er);let s=B.current;null!==s&&e?.(s,a.filter(e=>"requirements"!==e.kind))}catch(e){n.signal.aborted||K(sH(e))}finally{D(!1),_.current=null,U.current=!1}},[J,A,M,W,ec,er,e,ee,et,t]),eu=(0,a.useCallback)(()=>{_.current?.abort()},[]),eh=F.droppedSourceCount>0?`${F.droppedSourceCount.toString()} source${1!==F.droppedSourceCount?"s":""} over the 16-source limit ${1!==F.droppedSourceCount?"were":"was"} not included.`:null,ep=F.skippedSources.length>0?`${F.skippedSources.length.toString()} connected source${1!==F.skippedSources.length?"s":""} could not be read and ${1!==F.skippedSources.length?"were":"was"} skipped: ${F.skippedSources.map(e=>e.label).join(", ")}.`:null,em=[eh,ep].filter(e=>null!==e).join(" ");return(0,n.jsxs)("section",{className:"qi-launcher","aria-label":"Start a Quality Intelligence run",children:[(0,n.jsx)("header",{className:"qi-col-header",children:(0,n.jsx)("h2",{className:"qi-col-title",children:"New run"})}),(0,n.jsxs)("div",{className:"qi-launcher-body",children:[1===W.length&&void 0!==W[0]?(0,n.jsxs)("div",{className:"qi-connected-source","data-testid":"qi-connected-source",children:[(0,n.jsxs)("span",{className:"qi-connected-kind",children:["Connected ",it(W[0]).toLowerCase()]}),(0,n.jsx)("span",{className:"qi-connected-path qi-monospace",title:ia(W[0]),children:ia(W[0])}),(0,n.jsx)("span",{className:"qi-connected-hint",children:Q?"Manual input below overrides the connected source for this run.":`Generate uses the connected ${it(W[0]).toLowerCase()}.`})]}):W.length>1?(0,n.jsxs)("div",{className:"qi-connected-source","data-testid":"qi-connected-source",children:[(0,n.jsxs)("span",{className:"qi-connected-kind",children:["Connected sources (",W.length.toString(),")"]}),(0,n.jsx)("ul",{className:"qi-connected-roots","aria-label":"Connected sources",children:W.map(e=>(0,n.jsxs)("li",{className:"qi-connected-root-item",children:[(0,n.jsx)("span",{className:"qi-connected-root-name",children:it(e)}),(0,n.jsx)("span",{className:"qi-connected-path qi-monospace",title:ia(e),children:ia(e)})]},`${e.kind}:${ia(e)}`))}),(0,n.jsx)("span",{className:"qi-connected-hint",children:Q?"Manual input below overrides the connected sources for this run.":"Generate uses all connected sources."})]}):null,(0,n.jsxs)("div",{className:"qi-launcher-row",children:[(0,n.jsxs)("label",{className:"qi-field",children:[(0,n.jsx)("span",{className:"qi-field-label",children:"Source label"}),(0,n.jsx)("input",{type:"text",className:"qi-input",value:h,placeholder:"e.g. Funds Transfer — acceptance criteria",disabled:M,"aria-describedby":H&&!Q?es:void 0,onChange:e=>{p(e.target.value)}}),H&&!Q?(0,n.jsx)("span",{className:"qi-field-hint",id:es,children:"Applies to manual input only — connected sources use their own labels."}):null]}),(0,n.jsxs)("label",{className:"qi-field qi-field-kind",children:[(0,n.jsx)("span",{className:"qi-field-label",children:"Source type"}),(0,n.jsxs)("select",{className:"qi-select",value:m,disabled:M,onChange:e=>{let t=e.target.value;f("workspace"===t||"file"===t||"capsule"===t||"capsule-set"===t?t:"requirements"),K(null),T(null)},children:[(0,n.jsx)("option",{value:"requirements",children:"Requirements text"}),(0,n.jsx)("option",{value:"workspace",children:"Local folder"}),(0,n.jsx)("option",{value:"file",children:"Single file"}),(0,n.jsx)("option",{value:"capsule",children:"Knowledge capsule"}),(0,n.jsx)("option",{value:"capsule-set",children:"Capsule set"})]})]})]}),function(){if("requirements"===m)return(0,n.jsxs)("label",{className:"qi-field",children:[(0,n.jsx)("span",{className:"qi-field-label",children:"Requirements"}),(0,n.jsx)("textarea",{className:"qi-textarea",value:g,rows:6,placeholder:"Paste requirements or acceptance criteria, one statement per line.",disabled:M,onChange:e=>{v(e.target.value)}})]});if("workspace"===m||"file"===m){let e="file"===m;return(0,n.jsxs)("label",{className:"qi-field",children:[(0,n.jsx)("span",{className:"qi-field-label",children:e?"File path":"Folder path"}),(0,n.jsx)("input",{type:"text",className:"qi-input",value:x,placeholder:e?"/absolute/path/to/requirements.md":"/absolute/path/to/folder",disabled:M,onChange:e=>{b(e.target.value)}})]})}let e="capsule"===m,t=e?N:C;return(0,n.jsxs)("label",{className:"qi-field",children:[(0,n.jsx)("span",{className:"qi-field-label",children:e?"Knowledge capsule":"Capsule set"}),(0,n.jsxs)("select",{className:"qi-select",value:e?y:w,disabled:M||E||null!==$||0===t.length,onChange:t=>{e?j(t.target.value):k(t.target.value)},children:[E?(0,n.jsx)("option",{value:"",children:"Loading connectors..."}):null,E||0!==t.length?null:(0,n.jsx)("option",{value:"",children:e?"No ready capsules":"No capsule sets"}),e?N.map(e=>(0,n.jsx)("option",{value:e.id,children:e.displayName},e.id)):C.map(e=>(0,n.jsx)("option",{value:e.id,children:`${e.displayName} (${String(e.capsuleCount)} capsules)`},e.id))]})]})}(),null!==$?(0,n.jsx)("p",{className:"lk-alert",role:"alert","data-testid":"qi-connector-error",children:$}):null,(0,n.jsxs)("div",{className:"qi-launcher-controls",children:[(0,n.jsxs)("label",{className:"qi-field qi-field-inline",children:[(0,n.jsx)("span",{className:"qi-field-label",children:"Policy profile"}),(0,n.jsx)("select",{className:"qi-select",value:A,disabled:M,onChange:e=>{L(e.target.value)},children:s7.map(e=>(0,n.jsx)("option",{value:e.id,children:e.label},e.id))})]}),(0,n.jsxs)("label",{className:"qi-field qi-field-inline",children:[(0,n.jsx)("span",{className:"qi-field-label",children:"Seed (optional)"}),(0,n.jsx)("input",{type:"number",min:0,step:1,className:"qi-input",value:q,placeholder:"e.g. 42",disabled:M,"aria-invalid":!et||void 0,"aria-describedby":et?void 0:el,onChange:e=>{P(e.target.value),K(null)}}),et?null:(0,n.jsx)("span",{className:"qi-field-error",id:el,children:"Seed must be a non-negative integer."})]}),(0,n.jsx)("button",{type:"button",className:M?"qi-btn qi-btn-secondary":"qi-btn qi-btn-primary","aria-disabled":!M&&en||void 0,"aria-describedby":M?void 0:ei,onClick:()=>{M?eu():en||ed()},children:M?"Cancel":"Generate test cases"}),M||J?null:(0,n.jsx)("span",{className:"qi-generate-hint",id:ea,children:"Add requirements text, a folder path, a file path, select a capsule, select a capsule set, or connect a source to generate."})]}),M?(0,n.jsxs)("div",{className:"qi-progress","data-testid":"qi-launch-progress","aria-hidden":"true",children:[(0,n.jsx)("span",{className:"qi-progress-spinner","aria-hidden":"true"}),(0,n.jsxs)("span",{className:"qi-progress-text",children:[null!==F.stageName?`Stage: ${F.stageName} \xb7 `:"",F.candidates.toString()," test case",1!==F.candidates?"s":"",F.findings>0?` \xb7 ${F.findings.toString()} finding${1!==F.findings?"s":""}`:""]})]}):null,(0,n.jsx)("p",{className:"sr-only",role:"status","aria-live":"polite","data-testid":"qi-launch-progress-sr",children:function(e,t){if(!e)return"";if(null===t.stageName&&0===t.candidates&&0===t.findings)return"Generating test cases…";let n=null!==t.stageName?`Stage: ${t.stageName}. `:"",a=`${t.candidates.toString()} test case${1!==t.candidates?"s":""}`,l=t.findings>0?`, ${t.findings.toString()} finding${1!==t.findings?"s":""}`:"";return`${n}${a}${l}`}(M,F)}),(0,n.jsx)("p",{className:"sr-only",role:"status","aria-live":"polite",children:em}),null!==eh||null!==ep?(0,n.jsxs)("div",{className:"qi-coverage-notice","data-testid":"qi-coverage-notice",children:[null!==eh?(0,n.jsx)("p",{className:"qi-coverage-line",children:eh}):null,null!==ep?(0,n.jsx)("p",{className:"qi-coverage-line",children:ep}):null]}):null,null!==O?(0,n.jsx)("p",{className:"lk-alert",role:"alert","data-testid":"qi-launch-error",children:O}):null]})]})}function is({run:e,onOpen:t}){var a;let l=e.totals.candidates;return(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",className:"qi-run-item",onClick:()=>{t(e.id)},"aria-label":`Open run ${e.id} — ${sQ(a=e.status)?sY[a]:a}, ${sG(e.requestedAt)}, ${l.toString()} test case${1!==l?"s":""}`,title:`Open run ${e.id}`,children:[(0,n.jsx)("span",{className:"qi-run-title",children:sG(e.requestedAt)}),(0,n.jsx)(sX,{status:e.status}),(0,n.jsxs)("span",{className:"qi-run-id",children:[e.id.slice(0,16),"…"]}),(0,n.jsxs)("span",{className:"qi-run-totals",children:[e.totals.candidates.toString()," test case",1!==e.totals.candidates?"s":""]})]})})}function ii({openRun:e,connectedRoot:t=null,connectedFilePath:l=null,connectedRoots:s,connectedCapsuleIds:i,connectedCapsuleSetIds:r,connectedFigmaSnapshotRunIds:o,fetchRunsImpl:c=sP}){let[d,u]=(0,a.useState)([]),[h,p]=(0,a.useState)(0),[m,f]=(0,a.useState)(!1),[g,v]=(0,a.useState)(!0),[x,b]=(0,a.useState)(null),[y,j]=(0,a.useState)(25),w=(0,a.useCallback)(async()=>{v(!0),b(null);try{let e=await c();u(e.runs),p(e.totalRunIds),f(e.truncated)}catch(e){b(sH(e))}finally{v(!1)}},[c]);(0,a.useEffect)(()=>{w()},[w]);let k=(0,a.useCallback)((t,n)=>{w(),e(t,n)},[w,e]);return(0,n.jsxs)("div",{className:"qi-hub",children:[(0,n.jsx)(il,{onRunCompleted:k,connectedRoot:t,connectedFilePath:l,connectedRoots:s,connectedCapsuleIds:i,connectedCapsuleSetIds:r,connectedFigmaSnapshotRunIds:o}),(0,n.jsxs)("section",{className:"qi-hub-runs","aria-label":"Quality Intelligence runs",children:[(0,n.jsxs)("header",{className:"qi-col-header",children:[(0,n.jsx)("h2",{className:"qi-col-title",children:"Runs"}),g||null!==x?null:(0,n.jsx)("span",{className:"qi-col-count",children:h.toString()})]}),(0,n.jsx)("p",{className:"sr-only",role:"status","aria-live":"polite",children:g?"Loading runs…":null===x?`Run list loaded: ${d.length.toString()} run${1===d.length?"":"s"}${m?` of ${h.toString()}`:""}.`:""}),(0,n.jsx)("div",{className:"qi-col-body","aria-busy":g,children:g?(0,n.jsx)(s4,{}):null!==x?(0,n.jsx)(s3,{message:x,onRetry:()=>{w()}}):0===d.length?(0,n.jsxs)("div",{className:"lk-empty",children:[(0,n.jsx)("p",{className:"lk-empty-title",children:"No runs yet"}),(0,n.jsx)("p",{className:"lk-empty-body",children:"Start a run above — generated test cases open as cards on your workspace."})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("ul",{className:"qi-run-list","aria-label":"Run list",children:d.slice(0,y).map(t=>(0,n.jsx)(is,{run:t,onOpen:e},t.id))}),y<d.length?(0,n.jsxs)("button",{type:"button",className:"qi-btn qi-btn-secondary qi-show-more",onClick:()=>{j(e=>e+25)},children:["Show more runs (",(d.length-y).toString()," remaining)"]}):null,m?(0,n.jsx)("p",{className:"qi-runs-truncated","data-testid":"qi-runs-truncated",children:`Showing ${d.length.toString()} of ${h.toString()} runs.`}):null]})})]})]})}e.s(["QUALITY_INTELLIGENCE_SCHEMA_VERSION",0,"1"],73859),e.i(73859);let ir=["..","/","\\"],io=(e,t)=>"string"!=typeof e?{ok:!1,reason:`${t} must be a string`}:0===e.length?{ok:!1,reason:`${t} must not be empty`}:0===e.trim().length?{ok:!1,reason:`${t} must not be whitespace-only`}:e!==e.trim()?{ok:!1,reason:`${t} must not have leading or trailing whitespace`}:e.length>256?{ok:!1,reason:`${t} exceeds max length ${String(256)}`}:e.normalize("NFKC")!==e?{ok:!1,reason:`${t} must be NFKC-normalised`}:(e=>{for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(n<=31||127===n||n>=128&&n<=159)return!0}return!1})(e)?{ok:!1,reason:`${t} contains control characters`}:ir.some(t=>e.includes(t))?{ok:!1,reason:`${t} contains forbidden path fragment`}:{ok:!0},ic=(e,t)=>{let n=io(e,t);if(!n.ok)throw TypeError(`Invalid ${t}: ${n.reason}`);return e},id=e=>!!(/[a-z][a-z0-9+.-]*:\/\//iu.test(e)||/AKIA[0-9A-Z]{12,}/u.test(e)||/(?:ghp_|gho_|github_pat_)[A-Za-z0-9_]{20,}/u.test(e)||/xox[baprs]-[A-Za-z0-9-]{10,}/u.test(e)||/sk-[A-Za-z0-9]{16,}/u.test(e)||/\bBearer\s+\S/u.test(e)||/-----BEGIN [A-Z ]*PRIVATE KEY-----/u.test(e)||/^(?:\/|[A-Za-z]:[\\/]|\\\\)/u.test(e)),iu=e=>Number.isFinite(e)&&e>=0&&e<=1,ih=Object.freeze({critical:0,high:1,medium:2,low:3}),ip=new Set(["jira-issues","qtest","xray","polarion","alm","quality-center"]);e.s(["QUALITY_INTELLIGENCE_AUDIT_MANIFEST_SCHEMA_VERSION",0,1,"QUALITY_INTELLIGENCE_COVERAGE_KINDS",0,["derived","asserted","manual"],"QUALITY_INTELLIGENCE_EVENT_SCHEMA_VERSION",0,1,"QUALITY_INTELLIGENCE_EVIDENCE_ATOM_KINDS",0,["requirement","design-fragment","code-fragment","document-excerpt","human-statement"],"QUALITY_INTELLIGENCE_EXPORT_ADAPTERS",0,["jira-issues","qtest","xray","polarion","alm","csv","json","spreadsheet-safe-csv","markdown","plain-text","quality-center"],"QUALITY_INTELLIGENCE_HANDOFF_PROMPTED_ACTIONS",0,["design-tests","validate-tests","review-coverage","request-export"],"QUALITY_INTELLIGENCE_LIFECYCLE_STATUSES",0,["draft","finalised","archived"],"QUALITY_INTELLIGENCE_PLANNER_KINDS",0,["scripted","model-routed"],"QUALITY_INTELLIGENCE_PRIORITIES",0,["P0","P1","P2","P3"],"QUALITY_INTELLIGENCE_REDACTION_STATUSES",0,["redacted","not-required"],"QUALITY_INTELLIGENCE_REVIEWER_KINDS",0,["human-author","human-reviewer","judge"],"QUALITY_INTELLIGENCE_REVIEW_STATES",0,["open","approved","changes-requested","rejected","withdrawn"],"QUALITY_INTELLIGENCE_RISK_CLASSES",0,["safety","compliance","regression","functional","visual"],"QUALITY_INTELLIGENCE_RUN_EVENT_KINDS",0,["run:queued","run:started","stage:started","stage:completed","stage:failed","candidate:proposed","finding:recorded","review:requested","review:completed","run:succeeded","run:failed","run:cancelled"],"QUALITY_INTELLIGENCE_SCHEMA_VERSION",0,"1","QUALITY_INTELLIGENCE_SEVERITIES",0,["critical","high","medium","low"],"QUALITY_INTELLIGENCE_SEVERITY_RANK",0,ih,"QUALITY_INTELLIGENCE_SOURCE_KINDS",0,["repository-context","local-knowledge-capsule","figma-evidence","human-context","connector-document"],"QUALITY_INTELLIGENCE_TEST_CASE_STATUSES",0,["proposed","accepted","rejected","needs-review"],"QUALITY_INTELLIGENCE_TMS_ADAPTERS",0,ip,"QUALITY_INTELLIGENCE_VALIDATION_FINDING_KINDS",0,["logic-defect","faithfulness-defect","semantic-defect","mutation-defect","policy-violation","manual-rejection","coverage-gap","test-quality"],"asQualityIntelligenceAuditSummaryId",0,e=>ic(e,"QualityIntelligenceAuditSummaryId"),"asQualityIntelligenceCoverageMapId",0,e=>ic(e,"QualityIntelligenceCoverageMapId"),"asQualityIntelligenceEvidenceAtomId",0,e=>ic(e,"QualityIntelligenceEvidenceAtomId"),"asQualityIntelligenceExportBundleId",0,e=>ic(e,"QualityIntelligenceExportBundleId"),"asQualityIntelligenceReviewRecordId",0,e=>ic(e,"QualityIntelligenceReviewRecordId"),"asQualityIntelligenceRunId",0,e=>ic(e,"QualityIntelligenceRunId"),"asQualityIntelligenceSourceEnvelopeId",0,e=>ic(e,"QualityIntelligenceSourceEnvelopeId"),"asQualityIntelligenceTestCaseId",0,e=>ic(e,"QualityIntelligenceTestCaseId"),"asQualityIntelligenceValidationFindingId",0,e=>ic(e,"QualityIntelligenceValidationFindingId"),"assertCoverageMapInvariant",0,e=>{for(let t=0;t<e.mappings.length;t+=1){let n=e.mappings[t];if(void 0===n)throw RangeError(`Coverage map mapping[${String(t)}] is missing`);if(!iu(n.confidence))throw RangeError(`Coverage map mapping[${String(t)}] has out-of-range confidence ${String(n.confidence)}`);if(0===n.candidateIds.length)throw RangeError(`Coverage map mapping[${String(t)}] must reference at least one candidate`)}},"assertExportBundleInvariant",0,e=>{if(!/^[0-9a-f]{64}$/u.test(e.integrityHashSha256Hex))throw Error(`Export bundle integrity hash must be a lowercase sha256 hex string (id=${e.id})`);if(ip.has(e.targetAdapter)&&!e.redactionAttested)throw Error(`Export bundle targeting TMS adapter "${e.targetAdapter}" requires redactionAttested === true (id=${e.id})`)},"assertQualityIntelligenceNever",0,e=>{throw TypeError(`Unexpected Quality Intelligence discriminant: ${JSON.stringify(e)}`)},"assertRunEventSequenceMonotonic",0,e=>{let t=-1;for(let n=0;n<e.length;n+=1){let a=e[n];if(void 0===a)throw RangeError(`Run event[${String(n)}] is missing`);if(!Number.isInteger(a.sequence)||a.sequence<0)throw RangeError(`Run event[${String(n)}] has invalid sequence ${String(a.sequence)}`);if(a.sequence<=t)throw RangeError(`Run event[${String(n)}] sequence ${String(a.sequence)} is not strictly greater than previous ${String(t)}`);t=a.sequence}},"hasCanonicalSha256Hash",0,e=>/^[0-9a-f]{64}$/u.test(e.canonicalHashSha256Hex),"looksLikeBrowserSafeSourceEnvelope",0,e=>{let{displayLabel:t,provenance:n,localRef:a}=e;return!(0===t.length||t.length>256||/^[A-Za-z0-9+/]{40,}={0,2}$/u.test(t)||!/^[0-9a-f]{64}$/u.test(n.integrityHashSha256Hex)||id(t)||id(a)||id(n.origin)||"connector-document"===e.kind&&id(e.adapterId))},"validateQualityIntelligenceIdString",0,io],47425);var im=e.i(47425),im=im;let ig=im.QUALITY_INTELLIGENCE_PRIORITIES,iv=im.QUALITY_INTELLIGENCE_RISK_CLASSES,ix=e=>e.split("\n").map(e=>e.trim()).filter(e=>e.length>0),ib=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]);function iy(e,t){let n=ix(t.preconditions),a=ix(t.steps),l=ix(t.expectedResults),s=t.tags.split(",").map(e=>e.trim()).filter(e=>e.length>0);return{...t.title!==e.title?{title:t.title}:{},...!ib(n,e.preconditions)?{preconditions:n}:{},...!ib(a,e.steps)?{steps:a}:{},...!ib(l,e.expectedResults)?{expectedResults:l}:{},...t.priority!==e.priority?{priority:t.priority}:{},...t.riskClass!==e.riskClass?{riskClass:t.riskClass}:{},...!ib(s,e.tags)?{tags:s}:{}}}function ij({id:e,label:t,value:a,disabled:l=!1,onChange:s}){return(0,n.jsxs)("label",{className:"qi-edit-field",htmlFor:e,children:[(0,n.jsx)("span",{className:"qi-edit-label",children:t}),(0,n.jsx)("textarea",{id:e,className:"qi-edit-textarea",value:a,rows:3,disabled:l,onChange:e=>{s(e.target.value)}})]})}function iw({id:e,label:t,value:a,disabled:l=!1,onChange:s}){return(0,n.jsxs)("label",{className:"qi-edit-field",htmlFor:e,children:[(0,n.jsx)("span",{className:"qi-edit-label",children:t}),(0,n.jsx)("input",{id:e,className:"qi-edit-input",value:a,disabled:l,onChange:e=>{s(e.target.value)}})]})}function ik({id:e,label:t,value:a,options:l,disabled:s=!1,onChange:i}){return(0,n.jsxs)("label",{className:"qi-edit-field",htmlFor:e,children:[(0,n.jsx)("span",{className:"qi-edit-label",children:t}),(0,n.jsx)("select",{id:e,className:"qi-edit-select",value:a,disabled:s,onChange:e=>{i(e.target.value)},children:l.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})]})}function iN({onCancel:e,saving:t}){return(0,n.jsxs)("div",{className:"qi-edit-actions",children:[(0,n.jsx)("button",{type:"submit",className:"qi-btn qi-btn-approve qi-edit-save","aria-disabled":t||void 0,children:"Save"}),(0,n.jsx)("button",{type:"button",className:"qi-btn qi-btn-secondary qi-edit-cancel","aria-disabled":t||void 0,onClick:()=>{t||e()},children:"Cancel"})]})}function iS({candidate:e,onSave:t,onCancel:l}){let[s,i]=(0,a.useState)(()=>({title:e.title,preconditions:e.preconditions.join("\n"),steps:e.steps.join("\n"),expectedResults:e.expectedResults.join("\n"),priority:e.priority,riskClass:e.riskClass,tags:e.tags.join(", ")})),[r,o]=(0,a.useState)(null),[c,d]=(0,a.useState)(!1),[u,h]=(0,a.useState)(!1),p=(0,a.useRef)(null),m=(e,t)=>{o(null),h(!1),i(n=>({...n,[e]:t}))},f=(0,a.useCallback)(()=>{c||(!(Object.keys(iy(e,s)).length>0)||u?l():h(!0))},[e,u,l,c,s]);(0,a.useEffect)(()=>{let e=e=>{if("Escape"!==e.key||c)return;let t=p.current;null!==t&&t.contains(document.activeElement)&&f()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[f,c]),(0,a.useEffect)(()=>{p.current?.querySelector("input.qi-edit-input")?.focus()},[]);let g=`qi-edit-${e.id}`,v=async()=>{if(!c){d(!0),o(null);try{await t(iy(e,s))}catch(e){o(sH(e))}finally{d(!1)}}};return(0,n.jsxs)("form",{ref:p,className:"qi-edit-form","aria-label":`Edit ${e.title}`,"aria-busy":c,onSubmit:e=>{e.preventDefault(),v()},children:[(0,n.jsx)(iw,{id:`${g}-title`,label:"Title",value:s.title,disabled:c,onChange:e=>{m("title",e)}}),null!==r?(0,n.jsx)("p",{className:"qi-edit-error",role:"alert","aria-live":"assertive",children:r}):null,(0,n.jsx)("p",{className:"qi-edit-discard-note",role:"status","aria-live":"polite",children:u?"Unsaved changes — press Escape or activate Cancel again to discard them.":""}),(0,n.jsx)(iN,{onCancel:f,saving:c}),(0,n.jsx)(ij,{id:`${g}-preconditions`,label:"Preconditions (one per line)",value:s.preconditions,disabled:c,onChange:e=>{m("preconditions",e)}}),(0,n.jsx)(ij,{id:`${g}-steps`,label:"Steps (one per line)",value:s.steps,disabled:c,onChange:e=>{m("steps",e)}}),(0,n.jsx)(ij,{id:`${g}-expected`,label:"Expected results (one per line)",value:s.expectedResults,disabled:c,onChange:e=>{m("expectedResults",e)}}),(0,n.jsx)(ik,{id:`${g}-priority`,label:"Priority",value:s.priority,options:ig,disabled:c,onChange:e=>{m("priority",e)}}),(0,n.jsx)(ik,{id:`${g}-risk`,label:"Risk class",value:s.riskClass,options:iv,disabled:c,onChange:e=>{m("riskClass",e)}}),(0,n.jsx)(iw,{id:`${g}-tags`,label:"Tags (comma-separated)",value:s.tags,disabled:c,onChange:e=>{m("tags",e)}})]})}let iC={open:"qi-review-open",approved:"qi-review-approved","changes-requested":"qi-review-changes",rejected:"qi-review-rejected",withdrawn:"qi-review-withdrawn"};function iI({state:e}){return(0,n.jsxs)("span",{className:`qi-review-badge ${iC[e]}`,children:[(0,n.jsx)("span",{className:"sr-only",children:"Review: "}),sW[e]]})}function iE({items:e,label:t}){return 0===e.length?null:(0,n.jsxs)("div",{className:"qi-cand-block",children:[(0,n.jsx)("p",{className:"qi-cand-block-label",children:t}),(0,n.jsx)("ol",{className:"qi-cand-list","aria-label":t,children:e.map((e,a)=>(0,n.jsx)("li",{children:e},`${t}-${String(a)}`))})]})}function iR({className:e,label:t,pressed:a,disabled:l,describedBy:s,onActivate:i}){return(0,n.jsx)("button",{type:"button",className:e,...void 0!==a?{"aria-pressed":a}:{},"aria-disabled":l||void 0,"aria-describedby":l?s:void 0,onClick:()=>{l||i()},children:t})}function i$({candidateId:e,state:t,onReview:a,disabled:l=!1,describedBy:s,pendingReview:i}){let r=null!=i,o=t=>r&&i.candidateId===e&&i.action===t;return(0,n.jsxs)("div",{className:"qi-cand-actions",role:"group","aria-label":"Review decision",children:[(0,n.jsx)(iR,{className:"qi-btn qi-btn-approve",label:o("approve")?"Saving…":"Approve",pressed:"approved"===t,disabled:l||r,describedBy:s,onActivate:()=>{a(e,"approve")}}),(0,n.jsx)(iR,{className:"qi-btn qi-btn-reject",label:o("reject")?"Saving…":"Reject",pressed:"rejected"===t,disabled:l||r,describedBy:s,onActivate:()=>{a(e,"reject")}}),(0,n.jsx)(iR,{className:"qi-btn qi-btn-secondary",label:o("request-changes")?"Saving…":"Request changes",pressed:"changes-requested"===t,disabled:l||r,describedBy:s,onActivate:()=>{a(e,"request-changes")}})]})}function iT({candidate:e,onReview:t,onStartEdit:a,actionsDisabled:l=!1,describedBy:s,editButtonRef:i,pendingReview:r}){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"qi-cand-header",children:[(0,n.jsx)("h3",{className:"qi-cand-title",children:e.title}),(0,n.jsxs)("div",{className:"qi-cand-badges",children:[(0,n.jsx)("span",{className:"qi-cand-pri",children:e.priority}),(0,n.jsx)("span",{className:"qi-cand-risk",children:e.riskClass}),(0,n.jsx)(iI,{state:e.reviewState})]})]}),void 0!==e.weakTestFlag?(0,n.jsx)(s1,{flag:e.weakTestFlag}):null,(0,n.jsx)(iE,{items:e.preconditions,label:"Preconditions"}),(0,n.jsx)(iE,{items:e.steps,label:"Steps"}),(0,n.jsx)(iE,{items:e.expectedResults,label:"Expected results"}),e.tags.length>0?(0,n.jsx)("ul",{className:"qi-cand-tags","aria-label":"Tags",children:e.tags.map(e=>(0,n.jsx)("li",{className:"qi-cand-tag",children:e},e))}):null,(0,n.jsxs)("div",{className:"qi-cand-actions-row",children:[void 0!==a?(0,n.jsx)("button",{ref:i,type:"button",className:"qi-btn qi-btn-secondary qi-cand-edit","aria-disabled":l||void 0,"aria-describedby":l?s:void 0,onClick:()=>{l||a()},children:"Edit"}):null,void 0!==t?(0,n.jsx)(i$,{candidateId:e.id,state:e.reviewState,onReview:t,disabled:l,describedBy:s,pendingReview:r}):null]})]})}function iA({candidate:e,onReview:t,onEdit:l,actionsDisabled:s=!1,describedBy:i,pendingReview:r}){let[o,c]=(0,a.useState)(!1),d=(0,a.useRef)(null),u=(0,a.useRef)(!1);(0,a.useEffect)(()=>{u.current&&!o&&d.current?.focus(),u.current=o},[o]);let h=async t=>{void 0!==l&&await l(e.id,t),c(!1)};return(0,n.jsx)("li",{className:o?"qi-cand-card qi-cand-card-editing":"qi-cand-card",children:o&&void 0!==l?(0,n.jsx)(iS,{candidate:e,onSave:h,onCancel:()=>{c(!1)}}):(0,n.jsx)(iT,{candidate:e,onReview:t,actionsDisabled:s,describedBy:i,pendingReview:r,editButtonRef:d,onStartEdit:void 0!==l?()=>{c(!0)}:void 0})})}function iL({candidates:e,onReview:t,onEdit:l,actionsDisabled:s=!1,actionsDisabledReason:i,pendingReview:r}){let[o,c]=(0,a.useState)(25),d=(0,a.useId)(),u=s&&void 0!==i;if(0===e.length)return(0,n.jsxs)("div",{className:"lk-empty",children:[(0,n.jsx)("p",{className:"lk-empty-title",children:"No test cases"}),(0,n.jsx)("p",{className:"lk-empty-body",children:"This run produced no generated test cases."})]});let h=e.slice(0,o);return(0,n.jsxs)("div",{className:"qi-cand-pane",children:[u?(0,n.jsx)("p",{id:d,className:"qi-cand-governance-note",role:"note",children:i}):null,(0,n.jsx)("ul",{className:"qi-cand-cards","aria-label":"Test case list",children:h.map(e=>(0,n.jsx)(iA,{candidate:e,onReview:t,onEdit:l,actionsDisabled:s,describedBy:u?d:void 0,pendingReview:r},e.id))}),o<e.length?(0,n.jsxs)("button",{type:"button",className:"qi-btn qi-btn-secondary qi-cand-more",onClick:()=>{c(e=>e+25)},children:["Show more test cases (",(e.length-o).toString()," remaining)"]}):null]})}function iq(e){return 0===e?"No drift — every test is current.":`${e.toString()} ${1===e?"test is":"tests are"} stale — source changed since this run.`}function iP(e){let t=e.regeneratedCount,n=e.preservedCount;return`Regenerated ${t.toString()} ${1===t?"test":"tests"} as a new run (${n.toString()} ${1===n?"test":"tests"} preserved).`}function iM({staleCount:e}){return 0===e?(0,n.jsxs)("p",{className:"qi-drift-fresh","data-testid":"qi-drift-fresh",children:[(0,n.jsx)("span",{"aria-hidden":"true",className:"qi-drift-icon-ok",children:"✓"}),iq(0)]}):(0,n.jsxs)("p",{className:"qi-drift-stale","data-testid":"qi-drift-stale",children:[(0,n.jsx)("span",{"aria-hidden":"true",className:"qi-drift-icon-warn",children:"⚠"}),iq(e)]})}function iD({runId:e,connectedSources:t,onRegenerated:l,reCheckImpl:s=sK,regenerateImpl:i=s_}){let[r,o]=(0,a.useState)(null),[c,d]=(0,a.useState)(null),u=null!==c,[h,p]=(0,a.useState)(null),[m,f]=(0,a.useState)(null),g=(0,a.useRef)(null),v=(0,a.useRef)(null),x=(0,a.useCallback)(()=>{u||(async()=>{d("check"),p(null),f(null);try{o(await s(e,t))}catch(e){p(sH(e))}finally{d(null)}})()},[u,s,e,t]),b=(0,a.useCallback)(()=>{u||(async()=>{d("regenerate"),p(null);try{let n=await i(e,t);document.activeElement===v.current&&g.current?.focus(),f(n),o(null),l?.(n)}catch(e){p(sH(e))}finally{d(null)}})()},[u,i,e,t,l]);return(0,n.jsxs)("section",{className:"qi-drift-panel","aria-label":"Drift detection",children:[(0,n.jsx)("p",{className:"sr-only",role:"status","aria-live":"polite",children:null!==m?iP(m):null!==r?iq(r.staleCount):""}),(0,n.jsxs)("div",{className:"qi-drift-head",children:[(0,n.jsx)("h3",{className:"qi-col-subtitle",children:"Living tests"}),(0,n.jsx)("button",{type:"button",ref:g,className:"qi-btn qi-btn-secondary",onClick:x,"aria-disabled":u||void 0,"data-testid":"qi-drift-recheck",children:"check"===c?"Checking…":"Re-check drift"})]}),null!==h?(0,n.jsx)("p",{className:"lk-alert",role:"alert",children:h}):null,null!==r?(0,n.jsx)(iM,{staleCount:r.staleCount}):null,null!==r&&r.staleCount>0&&null===m?(0,n.jsx)("button",{type:"button",ref:v,className:"qi-btn qi-btn-approve",onClick:b,"aria-disabled":u||void 0,"data-testid":"qi-drift-regenerate",children:"regenerate"===c?"Regenerating…":`Regenerate ${r.staleCount.toString()} stale ${1===r.staleCount?"test":"tests"}`}):null,null!==m?(0,n.jsx)("p",{className:"qi-drift-regenerated","data-testid":"qi-drift-regenerated",children:iP(m)}):null]})}let iF={"traceability-csv":"csv","traceability-markdown":"markdown"},iz=[{id:"csv",label:"CSV",tms:!1},{id:"json",label:"JSON",tms:!1},{id:"spreadsheet-safe-csv",label:"Spreadsheet-safe CSV",tms:!1},{id:"markdown",label:"Markdown",tms:!1},{id:"plain-text",label:"Plain text",tms:!1},{id:"pdf",label:"PDF",tms:!1},{id:"zip-bundle",label:"ZIP bundle (all formats)",tms:!1},{id:"traceability-csv",label:"Traceability matrix (CSV)",tms:!1},{id:"traceability-markdown",label:"Traceability matrix (Markdown)",tms:!1},{id:"jira-issues",label:"Jira (preview)",tms:!0},{id:"qtest",label:"qTest (preview)",tms:!0},{id:"xray",label:"Xray (preview)",tms:!0},{id:"polarion",label:"Polarion (preview)",tms:!0},{id:"quality-center",label:"Quality Center (preview)",tms:!0}];function iO(e,t,n,a){let l=new Blob(["base64"===a?function(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}(n):n],{type:t}),s=URL.createObjectURL(l),i=document.createElement("a");i.href=s,i.download=e,document.body.appendChild(i),i.click(),i.remove(),window.setTimeout(()=>{URL.revokeObjectURL(s)},250)}function iK({runId:e,exportImpl:t=sB,traceabilityImpl:l=sU}){let[s,i]=(0,a.useState)("csv"),[r,o]=(0,a.useState)(!1),[c,d]=(0,a.useState)(null),[u,h]=(0,a.useState)(null),[p,m]=(0,a.useState)(null),f=iz.find(e=>e.id===s),g=f?.tms??!1,v=(0,a.useCallback)(async()=>{let n=iF[s];if(void 0!==n){let t=await l(e,n);iO(t.filename,t.contentType,t.body),m(t.filename);return}let a=await t(e,s,{dryRun:g,approvedOnly:!1});a.dryRun?h(`${a.candidateCount.toString()} test case${1===a.candidateCount?"":"s"} \xb7 ${a.byteLen.toString()} bytes
105
-
106
- ${a.preview}`):(iO(a.filename,a.contentType,a.body,a.encoding),m(a.filename))},[e,s,g,t,l]),x=(0,a.useCallback)(async()=>{o(!0),d(null),h(null),m(null);try{await v()}catch(e){d(sH(e))}finally{o(!1)}},[v]);return(0,n.jsxs)("div",{className:"qi-export","data-testid":"qi-export-bar",children:[(0,n.jsxs)("label",{className:"qi-field qi-field-inline",children:[(0,n.jsx)("span",{className:"qi-field-label",children:"Export"}),(0,n.jsx)("select",{className:"qi-select",value:s,disabled:r,onChange:e=>{i(e.target.value),h(null),d(null),m(null)},children:iz.map(e=>(0,n.jsx)("option",{value:e.id,children:e.label},e.id))})]}),(0,n.jsx)("button",{type:"button",className:"qi-btn qi-btn-secondary",disabled:r,onClick:()=>{x()},children:r?"Exporting…":g?"Preview":"Download"}),(0,n.jsx)("p",{className:"sr-only",role:"status","aria-live":"polite",children:null!==p?`Downloaded ${p}`:null!==u?"Export preview ready below.":""}),g?(0,n.jsx)("p",{className:"qi-export-hint",role:"note","data-testid":"qi-export-connector-hint",children:f?.id==="quality-center"?"Quality Center is preview-only. Configure a connector to enable live export.":"External target — preview only. Configure a connector to enable live export."}):null,null!==p?(0,n.jsx)("p",{className:"qi-export-success","data-testid":"qi-export-success",children:`Downloaded ${p}`}):null,null!==u?(0,n.jsx)("pre",{className:"qi-export-preview",role:"region","aria-label":"Export preview",tabIndex:0,"data-testid":"qi-export-preview",children:u}):null,null!==c?(0,n.jsx)("p",{className:"lk-alert",role:"alert","data-testid":"qi-export-error",children:c}):null]})}let i_="keiko.qi.reviewerLabel",iB="Set a reviewer label to review or edit candidates.";function iU({detail:e}){return(0,n.jsxs)("dl",{className:"qi-run-summary","aria-label":"Run summary",children:[(0,n.jsxs)("div",{className:"qi-run-summary-item",children:[(0,n.jsx)("dt",{children:"Status"}),(0,n.jsx)("dd",{children:(0,n.jsx)(sX,{status:e.status})})]}),(0,n.jsxs)("div",{className:"qi-run-summary-item",children:[(0,n.jsx)("dt",{children:"Test cases"}),(0,n.jsx)("dd",{children:e.totals.candidates.toString()})]}),(0,n.jsxs)("div",{className:"qi-run-summary-item",children:[(0,n.jsx)("dt",{children:"Findings"}),(0,n.jsx)("dd",{children:e.totals.findings.toString()})]}),(0,n.jsxs)("div",{className:"qi-run-summary-item",children:[(0,n.jsx)("dt",{children:"Quality"}),(0,n.jsx)("dd",{children:(0,n.jsx)(s0,{score:e.qualityScore})})]}),(0,n.jsxs)("div",{className:"qi-run-summary-item",children:[(0,n.jsx)("dt",{children:"Review"}),(0,n.jsx)("dd",{className:"qi-run-summary-review",children:sW[e.reviewState]})]}),(0,n.jsxs)("div",{className:"qi-run-summary-item",children:[(0,n.jsx)("dt",{children:"Requested"}),(0,n.jsx)("dd",{children:sG(e.requestedAt)})]}),null!==e.completedAt?(0,n.jsxs)("div",{className:"qi-run-summary-item",children:[(0,n.jsx)("dt",{children:"Completed"}),(0,n.jsx)("dd",{children:sG(e.completedAt)})]}):null]})}let iW={"logic-defect":"Logic defect","faithfulness-defect":"Faithfulness defect","semantic-defect":"Semantic defect","mutation-defect":"Mutation defect","policy-violation":"Policy violation","manual-rejection":"Manual rejection","coverage-gap":"Coverage gap","test-quality":"Test quality"};function iH({detail:e}){let[t,l]=(0,a.useState)(20),s=e.findingRefs.length;if(0===s)return null;let i=e.findingRefs.slice(0,t);return(0,n.jsxs)("section",{className:"qi-run-findings","aria-label":"Findings",children:[(0,n.jsxs)("h3",{className:"qi-col-subtitle",children:["Findings",(0,n.jsx)("span",{className:"qi-col-count",children:s.toString()})]}),(0,n.jsx)("ul",{className:"qi-finding-list","aria-label":"Findings list",children:i.map(e=>(0,n.jsxs)("li",{className:"qi-finding-item",children:[(0,n.jsxs)("div",{className:"qi-finding-header",children:[(0,n.jsx)("span",{className:"qi-finding-kind",children:iW[e.kind]??e.kind}),(0,n.jsx)(sZ,{severity:e.severity})]}),(0,n.jsx)("p",{className:"qi-finding-summary",children:e.summaryRedacted})]},e.id))}),t<s?(0,n.jsxs)("button",{type:"button",className:"qi-btn qi-btn-secondary qi-show-more",onClick:()=>{l(e=>e+20)},children:["Show more findings (",(s-t).toString()," remaining)"]}):null]})}let iG={covered:"Covered","weakly-covered":"Weakly covered",uncovered:"Uncovered"},iY={covered:"qi-cov-covered","weakly-covered":"qi-cov-weak",uncovered:"qi-cov-uncovered"};function iV({detail:e}){let[t,l]=(0,a.useState)(20),{total:s,coveredCount:i,gaps:r}=(0,a.useMemo)(()=>{let t=e.coverageByAtom;return{total:t.length,coveredCount:t.filter(e=>"covered"===e.status).length,gaps:t.filter(e=>"covered"!==e.status)}},[e.coverageByAtom]);if(0===s)return null;let o=r.slice(0,t);return(0,n.jsxs)("section",{className:"qi-coverage-panel","aria-label":"Coverage",children:[(0,n.jsxs)("h3",{className:"qi-col-subtitle",children:["Coverage",(0,n.jsxs)("span",{className:"qi-badge qi-badge-default","aria-label":`Coverage: ${e.coveragePercentage.toFixed(0)} percent, ${i.toString()} of ${s.toString()} requirements covered`,"data-testid":"qi-coverage-pct",children:[e.coveragePercentage.toFixed(0),"%"]})]}),(0,n.jsx)("p",{className:"qi-coverage-summary","data-testid":"qi-coverage-summary",children:`${i.toString()} of ${s.toString()} requirements covered \xb7 ${r.length.toString()} gap${1===r.length?"":"s"}`}),r.length>0?(0,n.jsxs)("section",{className:"qi-coverage-gaps","aria-label":"Gap radar",children:[(0,n.jsx)("h4",{className:"qi-col-subtitle",children:`Gap radar (${r.length.toString()})`}),(0,n.jsx)("ul",{className:"qi-coverage-gap-list","aria-label":"Uncovered and weakly covered atoms",children:o.map(e=>{let t=iG[e.status],a=iY[e.status],l=e.requirementExcerptRedacted;return(0,n.jsxs)("li",{className:"qi-coverage-gap-item","aria-label":void 0===l?`Atom ${e.atomId}: ${t}`:`Requirement "${l}" (atom ${e.atomId}): ${t}`,children:[(0,n.jsxs)("span",{className:"qi-coverage-gap-req",children:[void 0===l?null:(0,n.jsx)("span",{className:"qi-coverage-gap-text","data-testid":"qi-coverage-gap-text",children:l}),(0,n.jsx)("span",{className:"qi-coverage-atom-id qi-monospace",children:e.atomId})]}),(0,n.jsx)("span",{className:`qi-badge ${a}`,"aria-hidden":"true",children:t}),(0,n.jsx)("span",{className:"qi-sr-only",children:t})]},e.atomId)})}),t<r.length?(0,n.jsxs)("button",{type:"button",className:"qi-btn qi-btn-secondary qi-show-more",onClick:()=>{l(e=>e+20)},children:["Show more gaps (",(r.length-t).toString()," remaining)"]}):null]}):null]})}function iQ({detail:e}){let t=(0,a.useId)();return e.drift.reCheckSupported?(0,n.jsxs)("section",{className:"qi-drift-panel","aria-label":"Drift detection",children:[(0,n.jsxs)("div",{className:"qi-drift-head",children:[(0,n.jsx)("h3",{className:"qi-col-subtitle",children:"Living tests"}),(0,n.jsx)("button",{type:"button",className:"qi-btn qi-btn-secondary","aria-disabled":"true","aria-describedby":t,"data-testid":"qi-drift-recheck-unavailable",onClick:e=>{e.preventDefault()},children:"Re-check drift"})]}),(0,n.jsx)("p",{id:t,className:"qi-drift-note","data-testid":"qi-drift-unavailable",children:"Drift fingerprints are recorded for this run, but this card has no current source handle. Reopen it from the connected source or start a new run from the current source."})]}):null}function iX({runId:e,connectedSources:t,onRegenerated:l,fetchDetailImpl:s=sM,reviewImpl:i=sz,editImpl:r=sO,reCheckImpl:o,regenerateImpl:c}){let[d,u]=(0,a.useState)(null),[h,p]=(0,a.useState)(!0),[m,f]=(0,a.useState)(null),[g,v]=(0,a.useState)(null),[x,b]=(0,a.useState)(null),[y,j]=(0,a.useState)(""),[w,k]=(0,a.useState)(!1),N=(0,a.useId)(),S=(0,a.useId)(),C=(0,a.useRef)(0),I=(0,a.useCallback)(async()=>{let t=C.current+1;C.current=t,p(!0),f(null);try{let n=await s(e);C.current===t&&u(n)}catch(e){C.current===t&&f(sH(e))}finally{C.current===t&&p(!1)}},[s,e]);(0,a.useEffect)(()=>{I()},[I]),(0,a.useEffect)(()=>{j(function(){try{return window.localStorage.getItem(i_)??""}catch{return""}}()),k(!0)},[]),(0,a.useEffect)(()=>{if(w)try{window.localStorage.setItem(i_,y)}catch{}},[y,w]);let E=y.trim(),R=E.length>0,$=(0,a.useCallback)((t,n)=>{R&&null===x&&(b({candidateId:t,action:n}),(async()=>{v(null);try{await i(e,n,t,E),await I()}catch(e){v(sH(e))}finally{b(null)}})())},[R,x,i,e,E,I]),T=(0,a.useCallback)(async(t,n)=>{if(!R)throw Error(iB);await r(e,t,n,E),await I()},[r,R,e,E,I]);return(0,n.jsxs)("div",{className:"qi-run-card","data-testid":"qi-run-card",children:[(0,n.jsx)("header",{className:"qi-run-card-head",children:(0,n.jsx)("span",{className:"qi-run-id qi-monospace",title:e,role:"heading","aria-level":2,"aria-label":`Quality Intelligence run ${e}`,children:e})}),(0,n.jsx)("p",{className:"sr-only",role:"status","aria-live":"polite",children:h?"Loading run…":null===m&&null!==d?`Run loaded: ${d.totals.candidates.toString()} test case${1===d.totals.candidates?"":"s"}.`:""}),(0,n.jsx)("div",{className:"qi-run-card-body","aria-busy":h,children:h&&null===d?(0,n.jsx)(s4,{}):null!==m?(0,n.jsx)(s3,{message:m,onRetry:()=>void I()}):null===d?(0,n.jsx)("div",{className:"lk-empty",children:(0,n.jsx)("p",{className:"lk-empty-body",children:"Run not found."})}):(0,n.jsxs)(n.Fragment,{children:[null!==g?(0,n.jsxs)("div",{className:"lk-alert qi-action-error",role:"alert","data-testid":"qi-action-error",children:[g,(0,n.jsx)("button",{type:"button",className:"lk-alert-retry",onClick:()=>{v(null)},children:"Dismiss"})]}):null,(0,n.jsxs)("section",{className:"qi-run-governance","aria-label":"Review governance",children:[(0,n.jsxs)("label",{className:"qi-field",htmlFor:`qi-reviewer-label-${e}`,children:[(0,n.jsx)("span",{className:"qi-field-label",children:"Reviewer label"}),(0,n.jsx)("input",{id:`qi-reviewer-label-${e}`,className:"qi-input qi-run-governance-input",value:y,placeholder:"Required for review and edit actions","aria-invalid":!R,"aria-describedby":R?N:`${N} ${S}`,onChange:e=>{j(e.target.value)}})]}),(0,n.jsx)("p",{id:N,className:"qi-run-governance-help",children:"Used for QI review and edit audit entries."}),(0,n.jsx)("p",{id:S,className:"qi-run-governance-warning",role:"status","aria-live":"polite",children:R?"":iB})]}),(0,n.jsx)(iU,{detail:d}),(0,n.jsx)(iH,{detail:d}),(0,n.jsx)(iV,{detail:d}),void 0!==t&&t.length>0?(0,n.jsx)(iD,{runId:e,connectedSources:t,onRegenerated:l,reCheckImpl:o,regenerateImpl:c}):(0,n.jsx)(iQ,{detail:d}),(0,n.jsxs)("section",{className:"qi-run-cases","aria-label":"Generated test cases",children:[(0,n.jsxs)("div",{className:"qi-run-cases-head",children:[(0,n.jsxs)("h3",{className:"qi-col-subtitle",children:["Test cases",(0,n.jsx)("span",{className:"qi-col-count",children:d.candidates.length.toString()})]}),d.candidates.length>0?(0,n.jsx)(iK,{runId:e}):null]}),(0,n.jsx)(iL,{candidates:d.candidates,onReview:$,pendingReview:x,onEdit:T,actionsDisabled:!R,actionsDisabledReason:iB})]})]})})]})}let iJ={inactive:{label:"Inactive",ariaDescription:"No recent activity for this relationship.",iconShape:"hollow-circle",textColor:"var(--fg-muted)",bgColor:"var(--inset)",animated:!1},queued:{label:"Queued",ariaDescription:"A workflow run referencing this relationship is queued.",iconShape:"clock",textColor:"var(--fg-muted)",bgColor:"var(--inset)",animated:!1},active:{label:"Active",ariaDescription:"A model call referencing this relationship is in progress.",iconShape:"filled-circle",textColor:"var(--accent)",bgColor:"var(--accent-dim)",borderColor:"var(--accent-line)",animated:!1},processing:{label:"Processing",ariaDescription:"A tool or command referencing this relationship is executing.",iconShape:"spinning-circle",textColor:"var(--accent)",bgColor:"var(--accent-dim)",borderColor:"var(--accent-line)",animated:!0},completed:{label:"Completed",ariaDescription:"The most recent run referencing this relationship completed successfully.",iconShape:"check",textColor:"var(--accent)",bgColor:"var(--accent-dim)",animated:!1},failed:{label:"Failed",ariaDescription:"The most recent run referencing this relationship failed.",iconShape:"triangle-exclamation",textColor:"var(--danger)",bgColor:"color-mix(in oklch, var(--danger) 12%, var(--card))",animated:!1},blocked:{label:"Blocked",ariaDescription:"The validator denied a recent proposal referencing this relationship; see the inspector for the reason.",iconShape:"filled-square",textColor:"var(--warn)",bgColor:"color-mix(in oklch, var(--warn) 12%, var(--card))",animated:!1},degraded:{label:"Degraded",ariaDescription:"The health check flagged at least one endpoint of this relationship as not currently live.",iconShape:"broken-line",textColor:"var(--warn)",bgColor:"color-mix(in oklch, var(--warn) 8%, var(--card))",animated:!1},"high-throughput":{label:"High throughput",ariaDescription:"More than fifty events referenced this relationship in the last sixty seconds.",iconShape:"stacked-lines",textColor:"var(--accent)",bgColor:"var(--accent-dim)",animated:!1}};function iZ({shape:e,color:t,animated:a,highContrast:l}){let s=["rb-edge-badge-icon",a?"rb-edge-badge-icon--processing":"",l?"rb-edge-badge-icon--high-contrast":""].filter(e=>e.length>0).join(" "),i=l?2:1.5,r={width:12,height:12,viewBox:"0 0 12 12","aria-hidden":!0,fill:"currentColor",className:s,style:{color:t}};switch(e){case"hollow-circle":return(0,n.jsx)("svg",{...r,children:(0,n.jsx)("circle",{cx:"6",cy:"6",r:"4.5",fill:"none",stroke:"currentColor",strokeWidth:i})});case"clock":return(0,n.jsxs)("svg",{...r,children:[(0,n.jsx)("circle",{cx:"6",cy:"6",r:"4.5",fill:"none",stroke:"currentColor",strokeWidth:i}),(0,n.jsx)("path",{d:"M6 3v3l2 1",stroke:"currentColor",strokeWidth:i,strokeLinecap:"round",fill:"none"})]});case"filled-circle":return(0,n.jsx)("svg",{...r,children:(0,n.jsx)("circle",{cx:"6",cy:"6",r:"5"})});case"spinning-circle":return(0,n.jsx)("svg",{...r,children:(0,n.jsx)("circle",{cx:"6",cy:"6",r:"4.5",fill:"none",stroke:"currentColor",strokeWidth:i,strokeDasharray:"8 4"})});case"check":return(0,n.jsx)("svg",{...r,children:(0,n.jsx)("path",{d:"M2 6l3 3 5-5",stroke:"currentColor",strokeWidth:l?2.2:1.8,strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})});case"triangle-exclamation":return(0,n.jsxs)("svg",{...r,children:[(0,n.jsx)("path",{d:"M6 1 L11 10 L1 10 Z",fill:"currentColor"}),(0,n.jsx)("path",{d:"M6 5v2.5",stroke:"var(--card)",strokeWidth:i,strokeLinecap:"round",fill:"none"}),(0,n.jsx)("circle",{cx:"6",cy:"9",r:"0.7",fill:"var(--card)"})]});case"filled-square":return(0,n.jsx)("svg",{...r,children:(0,n.jsx)("rect",{x:"1.5",y:"1.5",width:"9",height:"9",rx:"1.5"})});case"broken-line":return(0,n.jsx)("svg",{...r,children:(0,n.jsx)("path",{d:"M1 6h2.5l1.5-2 2 4 1.5-2H11",stroke:"currentColor",strokeWidth:i,strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})});case"stacked-lines":return(0,n.jsxs)("svg",{...r,children:[(0,n.jsx)("rect",{x:"2",y:"2.5",width:"8",height:"1.5",rx:"0.75"}),(0,n.jsx)("rect",{x:"2",y:"5.25",width:"8",height:"1.5",rx:"0.75"}),(0,n.jsx)("rect",{x:"2",y:"8",width:"8",height:"1.5",rx:"0.75"})]})}}function i0({state:e}){let t={width:10,height:10,viewBox:"0 0 10 10","aria-hidden":!0,fill:"currentColor"};switch(e){case"draft":return(0,n.jsx)("svg",{...t,children:(0,n.jsx)("circle",{cx:"5",cy:"5",r:"4",fill:"none",stroke:"currentColor",strokeWidth:"1.5"})});case"active":return(0,n.jsx)("svg",{...t,children:(0,n.jsx)("circle",{cx:"5",cy:"5",r:"4.5"})});case"archived":return(0,n.jsx)("svg",{...t,children:(0,n.jsx)("rect",{x:"1",y:"1",width:"8",height:"8",rx:"1"})});case"superseded":return(0,n.jsx)("svg",{...t,children:(0,n.jsx)("path",{d:"M2 5h6M6 3l2 2-2 2",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})});case"revoked":return(0,n.jsx)("svg",{...t,children:(0,n.jsx)("path",{d:"M2 2l6 6M8 2L2 8",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",fill:"none"})});case"blocked":return(0,n.jsxs)("svg",{...t,children:[(0,n.jsx)("rect",{x:"1",y:"1",width:"8",height:"8",rx:"1"}),(0,n.jsx)("path",{d:"M5 3v3",stroke:"var(--card)",strokeWidth:"1.5",strokeLinecap:"round",fill:"none"}),(0,n.jsx)("circle",{cx:"5",cy:"7.5",r:"0.6",fill:"var(--card)"})]});case"stale":return(0,n.jsx)("svg",{...t,children:(0,n.jsx)("rect",{x:"1",y:"1",width:"8",height:"8",rx:"1",fill:"none",stroke:"currentColor",strokeWidth:"1.5"})})}}function i1({type:e,lifecycle:t,activity:l,throughputCount:s,animateOverride:i=!0,highContrast:r,onClick:o,className:c=""}){let[d,u]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(void 0!==r)return;let e=window.matchMedia("(prefers-contrast: more)"),t=e=>{u(e)};t(e.matches);let n=e=>{t(e.matches)};return e.addEventListener("change",n),()=>{e.removeEventListener("change",n)}},[r]);let h=iJ[l]??iJ.inactive,p=t1[e],m=r??d,f="high-throughput"===l&&void 0!==s?`${h.label} (${String(s)})`:h.label,g=`${p.displayName} — ${h.ariaDescription}`,v=h.animated&&i,x=m?{color:h.textColor,background:"var(--card)",border:`1px solid ${h.textColor}`}:{color:h.textColor,background:h.bgColor,border:void 0!==h.borderColor?`1px solid ${h.borderColor}`:void 0};return(0,n.jsx)("span",{role:"status","aria-live":"polite","aria-atomic":"true",className:`rb-edge-badge ${c}`.trim(),"data-activity-state":l,"data-high-contrast":m?"true":void 0,children:void 0!==o?(0,n.jsxs)("button",{type:"button",className:"rb-edge-badge-btn",style:x,"aria-label":g,onClick:o,children:[(0,n.jsx)("span",{"aria-hidden":"true",children:(0,n.jsx)(iZ,{shape:h.iconShape,color:h.textColor,animated:v,highContrast:m})}),(0,n.jsx)("span",{className:"visually-hidden",children:h.ariaDescription}),(0,n.jsx)("span",{"aria-hidden":"true",className:"rb-edge-badge-label",children:f}),(0,n.jsx)("span",{className:"rb-edge-badge-type",children:p.displayName}),(0,n.jsx)(i0,{state:t})]}):(0,n.jsxs)("span",{className:"rb-edge-badge-static",style:x,"aria-label":g,children:[(0,n.jsx)("span",{"aria-hidden":"true",children:(0,n.jsx)(iZ,{shape:h.iconShape,color:h.textColor,animated:v,highContrast:m})}),(0,n.jsx)("span",{className:"visually-hidden",children:h.ariaDescription}),(0,n.jsx)("span",{"aria-hidden":"true",className:"rb-edge-badge-label",children:f}),(0,n.jsx)("span",{className:"rb-edge-badge-type",children:p.displayName}),(0,n.jsx)(i0,{state:t})]})})}let i2="keiko.relationships.density",i4={minimal:5,standard:25,dense:512};function i3(){try{let e=window.localStorage.getItem(i2);if("minimal"===e||"standard"===e||"dense"===e)return e}catch{}return"minimal"}function i5(e,t){return void 0===e||0===e.length?[]:e.split(",").map(e=>e.trim()).filter(e=>t.includes(e))}function i6(e){return{types:i5(e.relType,tZ),lifecycles:i5(e.relLifecycle,t0),activities:i5(e.relActivity,["inactive","queued","active","processing","completed","failed","blocked","degraded","high-throughput"]),srcKinds:i5(e.relSrcKind,tX),tgtKinds:i5(e.relTgtKind,tX)}}let i8={"high-throughput":0,processing:1,active:2,blocked:3,failed:4,degraded:5,queued:6,completed:7,inactive:8};function i9(e,t,n){return n.get(e)??function(e){switch(e){case"blocked":return"blocked";case"stale":return"degraded";default:return"inactive"}}(t)}function i7({filters:e,selectedId:t,onSelect:l,onFilterChange:s,activityMap:i=new Map,throughputMap:r=new Map,animateBadges:o=!0,highContrast:c=!1}){let[d,u]=(0,a.useState)(()=>{let t=e.relDensity;return"minimal"===t||"standard"===t||"dense"===t?t:i3()}),[h,p]=(0,a.useState)(!1),[m,f]=(0,a.useState)([]),[g,v]=(0,a.useState)(!1),[x,b]=(0,a.useState)(null),[y,j]=(0,a.useState)(!1),w=(0,a.useRef)(null),k=(0,a.useRef)(null),[N,S]=(0,a.useState)(e.relType??""),C=(0,a.useRef)(null),I=(0,a.useCallback)(e=>{u(e),s({relDensity:e});try{window.localStorage.setItem(i2,e)}catch{}},[s]);(0,a.useEffect)(()=>{let t=e.relDensity;"minimal"===t||"standard"===t||"dense"===t?u(t):u(i3())},[e.relDensity]),(0,a.useEffect)(()=>{S(e.relType??"")},[e.relType]);let E=(0,a.useCallback)(async()=>{b(null),v(!0);try{let t=i6(e),n=1===t.lifecycles.length?t.lifecycles[0]:"active",a=1===t.types.length?t.types[0]:void 0,l=1===t.srcKinds.length?t.srcKinds[0]:void 0,s=1===t.tgtKinds.length?t.tgtKinds[0]:void 0,i=await t7({lifecycle:n,type:a,sourceKind:l,targetKind:s,limit:i4[d]});f(i.entries),j(i.truncated)}catch(e){b(e instanceof t3?e.message:t4)}finally{v(!1)}},[e,d]);(0,a.useEffect)(()=>{E()},[E]),(0,a.useEffect)(()=>{let e=w.current;if(null!==e)return e.addEventListener("keydown",t),()=>e.removeEventListener("keydown",t);function t(e){if(!("u"<typeof document)&&null!==document.querySelector('[role="dialog"][aria-modal="true"]'))return;let t=e.target;t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement||t instanceof HTMLSelectElement||t instanceof HTMLElement&&t.isContentEditable||("f"===e.key||"F"===e.key?(e.preventDefault(),p(e=>!e)):"Escape"===e.key?p(!1):"/"===e.key&&(e.preventDefault(),k.current?.focus()))}},[]);let R=(0,a.useCallback)(e=>{let t=e.target.value;S(t),null!==C.current&&clearTimeout(C.current),C.current=setTimeout(()=>{s({relType:t.length>0?t:void 0})},250)},[s]),$=(0,a.useMemo)(()=>{let t=i6(e),n=(e.relType??"").split(",").map(e=>e.trim().toLowerCase()).filter(e=>e.length>0),a=0===n.length?m:m.filter(e=>n.some(t=>e.type.toLowerCase().includes(t)));return(0===t.activities.length?a:a.filter(e=>t.activities.includes(i9(e.id,e.lifecycle,i)))).slice(0,i4[d])},[i,d,e,m]),T=$.slice(0,25),A=$.slice(25),L=A.length,q=L>0?function(e,t){let n=new Map;for(let a of e){let e=i9(a.id,a.lifecycle,t);n.set(e,(n.get(e)??0)+1)}return Array.from(n.entries()).sort((e,t)=>t[1]!==e[1]?t[1]-e[1]:(i8[e[0]]??Number.MAX_SAFE_INTEGER)-(i8[t[0]]??Number.MAX_SAFE_INTEGER)).map(([e,t])=>{let n;return n=1===t?"relationship":"relationships","high-throughput"===e?`${t} high-throughput ${n}`:`${t} ${e} ${n}`}).join(", ")}(A,i):"",P=y?`Showing first ${String($.length)} relationships — more available.`:`Showing ${String($.length)} relationship${1!==$.length?"s":""}.`,M=(e.relType??"").trim().length>0||(e.relActivity??"").trim().length>0||(e.relSrcKind??"").trim().length>0||(e.relTgtKind??"").trim().length>0||(e.relLifecycle??"").trim().length>0&&"active"!==e.relLifecycle,D=i5(e.relLifecycle,t0),F=1===D.length?D[0]??"active":"active";return(0,n.jsxs)("div",{ref:w,className:"tw-pad","data-testid":"relationship-list-panel","data-relationship-focus":h?"true":void 0,children:[(0,n.jsxs)("div",{role:"group","aria-label":"Relationship density",style:{display:"flex",flexWrap:"wrap",gap:4,marginBottom:8},children:[["minimal","standard","dense"].map(e=>(0,n.jsx)("button",{type:"button",className:"arun-btn","aria-pressed":d===e,onClick:()=>I(e),style:{textTransform:"capitalize",minWidth:24,minHeight:24},children:e},e)),(0,n.jsx)("button",{type:"button",className:"arun-btn","aria-pressed":h,onClick:()=>p(e=>!e),title:"Toggle focus mode (F)","aria-label":`Focus mode: ${h?"on":"off"}`,style:{minWidth:24,minHeight:24},children:"Focus"})]}),(0,n.jsxs)("div",{style:{marginBottom:8},children:[(0,n.jsx)("label",{htmlFor:"rel-type-filter",className:"rb-row-k",style:{display:"block",marginBottom:2,fontSize:11,fontWeight:600},children:"Filter by type (press / to focus)"}),(0,n.jsx)("input",{id:"rel-type-filter",ref:k,type:"text",list:"rel-type-filter-options",value:N,onChange:R,placeholder:"e.g. reads-context","aria-label":"Filter relationships by type",style:{width:"100%",background:"var(--inset)",border:"1px solid var(--line)",borderRadius:9,padding:"4px 8px",minHeight:24,color:"var(--fg)",fontSize:13}}),(0,n.jsx)("datalist",{id:"rel-type-filter-options",children:tZ.map(e=>(0,n.jsx)("option",{value:e},e))})]}),(0,n.jsxs)("div",{style:{marginBottom:8},children:[(0,n.jsx)("label",{htmlFor:"rel-lifecycle-filter",className:"rb-row-k",style:{display:"block",marginBottom:2,fontSize:11,fontWeight:600},children:"Lifecycle"}),(0,n.jsx)("select",{id:"rel-lifecycle-filter",value:F,onChange:e=>s({relLifecycle:e.target.value}),"aria-label":"Filter relationships by lifecycle",style:{width:"100%",background:"var(--inset)",border:"1px solid var(--line)",borderRadius:9,padding:"4px 8px",minHeight:24,color:"var(--fg)",fontSize:13},children:t0.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})]}),(0,n.jsx)("div",{"aria-live":"polite","aria-atomic":"true",className:"visually-hidden",children:P}),y&&(0,n.jsx)("div",{"data-testid":"list-truncation-note",style:{fontSize:11,color:"var(--fg-muted)",marginBottom:6},children:P}),null!==x&&(0,n.jsxs)("div",{className:"lk-alert",role:"alert","aria-live":"assertive",children:[(0,n.jsx)("span",{children:x}),(0,n.jsx)("button",{type:"button",className:"lk-alert-retry",onClick:()=>void E(),children:"Retry"})]}),g&&0===m.length&&(0,n.jsx)("div",{role:"status",className:"insp-empty",children:"Loading…"}),(!g||m.length>0)&&null===x&&0===$.length&&(0,n.jsx)("div",{className:"insp-empty","data-testid":"list-empty",children:M?"No relationships match the current filter.":'No active relationships yet. Create one with "+ New relationship", or connect a source — connections appear here automatically.'}),$.length>0&&(0,n.jsxs)("div",{role:"list","aria-label":"Relationships","aria-busy":g||void 0,style:{display:"flex",flexDirection:"column",gap:2,opacity:g?.6:1,transition:"opacity 0.15s ease"},children:[T.map(e=>{let a=e.id===t,s=i9(e.id,e.lifecycle,i),d=h&&a,u=h&&!a;return(0,n.jsx)("div",{role:"listitem",style:{opacity:u?.4:1},children:(0,n.jsxs)("button",{type:"button","aria-pressed":a,"aria-label":`${e.type} relationship from ${e.source.kind} ${e.source.id} to ${e.target.kind} ${e.target.id}, lifecycle: ${e.lifecycle}`,title:`${e.source.id} → ${e.target.id}`,onClick:()=>l(e.id),onKeyDown:t=>{var n;return n=e.id,void(("Enter"===t.key||" "===t.key)&&(t.preventDefault(),l(n)))},"data-incident":d?"true":void 0,className:"rel-row",children:[(0,n.jsx)(i1,{type:e.type,lifecycle:e.lifecycle,activity:s,throughputCount:r.get(e.id),animateOverride:o,highContrast:c}),(0,n.jsxs)("span",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column"},children:[(0,n.jsxs)("span",{style:{fontSize:12,color:"var(--fg)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[e.source.kind," → ",e.target.kind]}),(0,n.jsx)("span",{style:{fontSize:10.5,color:"var(--fg-muted)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.summary??`${e.source.id} → ${e.target.id}`})]}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--fg-muted)",whiteSpace:"nowrap"},children:e.lifecycle})]})},e.id)}),L>0&&(0,n.jsxs)("div",{role:"listitem","aria-live":"polite",style:{fontSize:12,color:"var(--fg-muted)",padding:"4px 6px"},"data-testid":"animation-cap-aggregate",children:["+",String(L)," more: ",q]})]})]})}function re(){return(0,n.jsx)("p",{role:"note",style:{margin:"4px 0 0",fontSize:11,color:"var(--fg-muted)",borderLeft:"2px solid var(--warn)",paddingLeft:8},children:"The walk hit a bound before the graph was fully traversed; more objects may be affected than shown."})}function rt({title:e,help:t,report:a,onSelectRelationship:l}){if(null===a)return(0,n.jsxs)("section",{style:{marginBottom:12},children:[(0,n.jsx)("div",{className:"rb-section-label",role:"heading","aria-level":4,children:e}),(0,n.jsx)("p",{style:{fontSize:12,color:"var(--fg-muted)",margin:0},children:"Loading…"})]});let s=a.endpoints.slice(1),i=a.relationships,r=s.slice(0,50),o=i.slice(0,50);return(0,n.jsxs)("section",{style:{marginBottom:12},"aria-label":e,children:[(0,n.jsxs)("div",{className:"rb-section-label",role:"heading","aria-level":4,children:[e,(0,n.jsx)("span",{className:"rb-count","aria-hidden":"true",children:s.length})]}),(0,n.jsx)("p",{style:{margin:"0 0 6px",fontSize:11,color:"var(--fg-muted)"},children:t}),0===s.length?(0,n.jsx)("p",{style:{fontSize:12,color:"var(--fg-muted)",margin:0},children:"No further objects are affected in this direction."}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("ul",{style:{listStyle:"none",margin:0,padding:0},children:r.map(e=>(0,n.jsx)("li",{className:"rb-row",style:{fontSize:12},children:(0,n.jsx)("span",{className:"mono",children:`${e.kind}: ${e.id}`})},`${e.kind}:${e.id}`))}),s.length>r.length&&(0,n.jsxs)("p",{role:"note",style:{margin:"4px 0 0",fontSize:11,color:"var(--fg-muted)"},children:["Showing the first ",String(50)," of ",String(s.length)," ","objects."]}),i.length>0&&(0,n.jsxs)("details",{style:{marginTop:6},children:[(0,n.jsxs)("summary",{style:{fontSize:11,color:"var(--fg-muted)",cursor:"pointer"},children:[String(i.length)," relationship",1===i.length?"":"s"," on the path"]}),(0,n.jsx)("ul",{style:{listStyle:"none",margin:"4px 0 0",padding:0},children:o.map(e=>(0,n.jsx)("li",{style:{marginBottom:2},children:(0,n.jsxs)("button",{type:"button",className:"arun-btn ghost",onClick:()=>l(e.id),"aria-label":`Inspect ${e.type} relationship from ${e.source.kind} ${e.source.id} to ${e.target.kind} ${e.target.id}`,style:{display:"flex",width:"100%",gap:6,alignItems:"center",textAlign:"left",fontSize:12},children:[(0,n.jsx)("span",{className:"mono",children:e.type}),(0,n.jsxs)("span",{style:{color:"var(--fg-muted)"},children:[e.source.id," → ",e.target.id]})]})},e.id))})]})]}),a.truncated&&(0,n.jsx)(re,{})]})}function rn({outgoing:e,incoming:t,onSelectRelationship:a}){return(0,n.jsxs)("div",{style:{marginTop:8,padding:"8px 10px",border:"1px solid var(--line)",borderRadius:8,background:"var(--inset)"},"aria-label":"Bounded impact analysis",children:[(0,n.jsx)(rt,{title:"Downstream impact",help:"Objects this relationship's target leads to. Deleting or revoking here may affect them.",report:e,onSelectRelationship:a}),(0,n.jsx)(rt,{title:"Upstream impact",help:"Objects that depend on this relationship's source.",report:t,onSelectRelationship:a})]})}let ra={draft:{bg:"var(--inset)",fg:"var(--fg-muted)"},active:{bg:"var(--accent-dim)",fg:"var(--accent)"},archived:{bg:"var(--inset)",fg:"var(--fg-dim)"},superseded:{bg:"var(--inset)",fg:"var(--fg-dim)"},revoked:{bg:"color-mix(in oklch, var(--danger) 14%, var(--card))",fg:"var(--danger)"},blocked:{bg:"color-mix(in oklch, var(--warn) 12%, var(--card))",fg:"var(--warn)"},stale:{bg:"var(--inset)",fg:"var(--fg-faint)"}},rl={draft:"Proposed but not yet validated or awaiting an upstream gate.",active:"Validated and committed. Both endpoints are currently live.",archived:"Preserved for audit but no longer participates in queries by default.",superseded:"Replaced by a newer relationship of the same type.",revoked:"Rejected after proposal or retracted after acceptance. Terminal state.",blocked:"Cannot transition to active because the validator returned a denial reason.",stale:"At least one endpoint is tombstoned, retired, or unavailable."};function rs({lines:e=3}){return(0,n.jsx)("div",{className:"rb-rows","aria-hidden":"true",children:Array.from({length:e},(e,t)=>(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",style:{background:"var(--inset)",borderRadius:3,width:"40%",display:"block",height:12}}),(0,n.jsx)("span",{className:"rb-row-v",style:{background:"var(--inset)",borderRadius:3,width:"55%",display:"block",height:12}})]},t))})}function ri({children:e,style:t}){return(0,n.jsx)("div",{className:"rb-section-label",role:"heading","aria-level":3,style:t,children:e})}function rr({rel:e}){let t=t1[e.type],a=`${e.source.kind} ${e.type} ${e.target.kind}`;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"insp-top",children:[(0,n.jsx)("span",{className:"chip",style:{fontSize:11},children:e.type}),(0,n.jsx)("span",{className:"insp-title",children:a})]}),(0,n.jsxs)("div",{className:"rb-rows",children:[(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"Semantics"}),(0,n.jsx)("span",{className:"rb-row-v",children:t.semantics})]}),(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"Cardinality"}),(0,n.jsx)("span",{className:"rb-row-v mono",children:t.cardinality})]})]})]})}function ro({label:e,kind:t,id:a}){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(ri,{children:[e," endpoint"]}),(0,n.jsxs)("div",{className:"rb-rows",children:[(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"Kind"}),(0,n.jsx)("span",{className:"rb-row-v mono",children:t})]}),(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"Reference"}),(0,n.jsx)("span",{className:"rb-row-v mono","aria-label":`Reference id: ${a}`,children:a})]})]})]})}function rc({lifecycle:e}){let t=`lifecycle-desc-${e}`,a=ra[e]??ra.draft;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ri,{children:"Lifecycle status"}),(0,n.jsxs)("div",{className:"rb-rows",children:[(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"State"}),(0,n.jsx)("span",{className:"rb-row-v",children:(0,n.jsx)("span",{className:"chip",style:{background:a.bg,color:a.fg},"aria-describedby":t,children:e})})]}),(0,n.jsx)("div",{className:"rb-row",children:(0,n.jsx)("span",{id:t,className:"rb-row-v",style:{color:"var(--fg-muted)",fontSize:12},children:rl[e]})})]})]})}function rd({type:e,lifecycle:t,activity:a,throughputCount:l,animateBadges:s,highContrast:i,transitions:r,densityMode:o}){let c=r.slice(0,"minimal"===o?3:5);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ri,{children:"Activity"}),(0,n.jsxs)("div",{className:"rb-rows",children:[(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"Current state"}),(0,n.jsx)("span",{className:"rb-row-v",children:(0,n.jsx)(i1,{type:e,lifecycle:t,activity:a,throughputCount:l,animateOverride:s,highContrast:i})})]}),c.length>0&&(0,n.jsxs)("div",{className:"rb-row",style:{flexDirection:"column",gap:4,alignItems:"flex-start"},children:[(0,n.jsx)("span",{className:"rb-row-k",style:{marginBottom:4},children:"Recent transitions"}),c.map((e,t)=>(0,n.jsxs)("div",{style:{fontSize:12,color:"var(--fg-muted)",display:"flex",gap:8},children:[(0,n.jsxs)("span",{className:"mono",children:[e.from," → ",e.to]}),(0,n.jsx)("time",{dateTime:new Date(e.occurredAt).toISOString(),style:{color:"var(--fg-faint)"},children:new Date(e.occurredAt).toLocaleString()})]},t))]})]})]})}function ru(){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ri,{children:"Authority status"}),(0,n.jsx)("div",{className:"rb-rows",children:(0,n.jsx)("div",{className:"rb-row","data-testid":"authority-disclaimer",children:(0,n.jsx)("span",{className:"rb-row-v",style:{color:"var(--fg-muted)",fontStyle:"italic"},children:"Relationship: governance only. No model/tool/file/workflow authority granted."})})})]})}function rh({auditRows:e,loading:t,error:a,onRetry:l,onLoadMore:s,hasMore:i}){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ri,{children:"Audit history"}),t&&(0,n.jsx)(rs,{lines:3}),null!==a&&(0,n.jsxs)("div",{className:"lk-alert",role:"alert","aria-live":"assertive",children:[(0,n.jsx)("span",{children:a}),(0,n.jsx)("button",{type:"button",className:"lk-alert-retry",onClick:l,children:"Retry"})]}),!t&&null===a&&0===e.length&&(0,n.jsx)("div",{className:"rb-rows",children:(0,n.jsx)("div",{className:"rb-row",children:(0,n.jsx)("span",{className:"rb-row-v",style:{color:"var(--fg-muted)"},children:"No audit events for this relationship yet."})})}),!t&&e.length>0&&(0,n.jsxs)("div",{className:"rb-rows",children:[e.map((e,t)=>(0,n.jsxs)("div",{className:"rb-row",style:{flexDirection:"column",alignItems:"flex-start",gap:2},children:[(0,n.jsxs)("span",{className:"rb-row-k mono",style:{fontSize:11},children:[e.from," → ",e.to]}),(0,n.jsx)("time",{dateTime:new Date(e.occurredAt).toISOString(),style:{color:"var(--fg-faint)",fontSize:11},children:new Date(e.occurredAt).toLocaleString()})]},t)),i&&(0,n.jsx)("div",{className:"rb-row",children:(0,n.jsx)("button",{type:"button",className:"rb-row-v",style:{color:"var(--accent)",fontSize:12,background:"none",border:"none",padding:0,cursor:"pointer",minHeight:24,minWidth:24},onClick:s,"aria-label":"Load more audit events",children:"Load more"})})]})]})}function rp({rel:e}){let t,a=(t=[],"evidence-run"===e.source.kind&&t.push(e.source.id),"evidence-run"===e.target.kind&&t.push(e.target.id),t);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ri,{children:"Evidence references"}),0===a.length?(0,n.jsx)("p",{style:{fontSize:12,color:"var(--fg-muted)",margin:"0 0 4px"},"data-testid":"evidence-empty",children:"No evidence references for this relationship."}):(0,n.jsx)("div",{className:"rb-rows",children:a.map(e=>(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"Evidence run"}),(0,n.jsx)("span",{className:"rb-row-v mono","aria-label":`Evidence run reference ${e}`,title:e,children:e})]},e))})]})}function rm({relationshipId:e,forwardCount:t,reverseCount:a,outgoing:l,incoming:s,expanded:i,onToggle:r,onSelectRelationship:o}){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ri,{children:"Impact summary"}),(0,n.jsxs)("div",{className:"rb-rows",children:[(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"Forward dependencies"}),(0,n.jsx)("span",{className:"rb-row-v mono",children:null===t?"—":String(t)})]}),(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:"Reverse dependencies"}),(0,n.jsx)("span",{className:"rb-row-v mono",children:null===a?"—":String(a)})]}),(0,n.jsx)("div",{className:"rb-row",children:(0,n.jsx)("button",{type:"button",className:"arun-btn",onClick:r,"aria-expanded":i,"aria-controls":"rb-impact-detail","aria-label":i?`Hide impact for relationship ${e}`:`View impact for relationship ${e}`,"data-testid":"view-impact-btn",children:i?"Hide impact":"View impact"})})]}),i&&(0,n.jsx)("div",{id:"rb-impact-detail",children:(0,n.jsx)(rn,{outgoing:l,incoming:s,onSelectRelationship:o})})]})}function rf({codes:e,messages:t,deniedAt:a}){return 0===e.length?null:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ri,{children:"Denial reason"}),(0,n.jsxs)("div",{className:"lk-alert",role:"status","aria-live":"polite","data-testid":"denial-section",children:[e.map((a,l)=>(0,n.jsxs)("div",{style:{marginBottom:8*(l<e.length-1)},children:[(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--fg-muted)",marginBottom:2},children:a}),(0,n.jsx)("div",{style:{fontSize:13,color:"var(--fg)"},children:t[l]??a})]},a)),void 0!==a&&(0,n.jsxs)("div",{style:{fontSize:11,color:"var(--fg-faint)",marginTop:6},children:["Denied at ",(0,n.jsx)("time",{dateTime:a,children:a})]})]})]})}function rg(e){return null==e||0===e.length?null:{codes:e.map(e=>e.code),messages:e.map(e=>e.message)}}function rv({rel:e,onReconnect:t,onArchive:a,onRevoke:l,onViewImpact:s,onViewEvidence:i,mutating:r}){let o=e.lifecycle,c="blocked"===o,d="active"===o,u="active"===o||"blocked"===o||"archived"===o,h="active"===o;return(0,n.jsxs)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginTop:8},children:[(0,n.jsx)("button",{type:"button",className:`arun-btn${c?" primary":""}`,"aria-disabled":!c||r,"aria-label":"Reconnect — only available for blocked relationships",title:c?"Reconnect this relationship":"Only blocked relationships can be reconnected.",disabled:!c||r,onClick:c?t:void 0,children:"Reconnect"}),(0,n.jsx)("button",{type:"button",className:"arun-btn","aria-disabled":!d||r,"aria-label":"Archive — only available for active relationships",title:d?"Archive this relationship":"Only active relationships can be archived.",disabled:!d||r,onClick:d?a:void 0,children:"Archive"}),(0,n.jsx)("button",{type:"button",className:"arun-btn","aria-disabled":!u||r,"aria-label":"Revoke relationship",title:u?"Revoke this relationship":"Already revoked or superseded.",disabled:!u||r,onClick:u?l:void 0,style:{color:u?"var(--danger)":void 0},children:"Revoke"}),(0,n.jsx)("button",{type:"button",className:"arun-btn","aria-disabled":!h,"aria-label":"View impact analysis",title:h?"Toggle the impact analysis card":"Impact analysis is unavailable in this state.",disabled:!h,onClick:h?s:void 0,children:"View impact"}),(0,n.jsx)("button",{type:"button",className:"arun-btn","aria-label":"View evidence references",title:"Jump to the evidence references section",onClick:i,children:"View evidence"})]})}function rx({relationshipId:e,densityMode:t="minimal",onClearFocus:l,onViewImpact:s,activityMap:i=new Map,throughputMap:r=new Map,animateBadges:o=!0,highContrast:c=!1}){let[d,u]=(0,a.useState)(null),[h,p]=(0,a.useState)(null),[m,f]=(0,a.useState)(!1),[g,v]=(0,a.useState)(null),[x,b]=(0,a.useState)(!1),[y,j]=(0,a.useState)(null),[w,k]=(0,a.useState)(null),[N,S]=(0,a.useState)(null),[C,I]=(0,a.useState)(null),[E,R]=(0,a.useState)(!1),$=null===N?null:N.relationships.length,T=null===C?null:C.relationships.length,[A,L]=(0,a.useState)(!1),q=(0,a.useRef)(null),P=(0,a.useRef)(0),M=(0,a.useCallback)(async e=>{let t=++P.current;v(null),f(!0),k(null),S(null),I(null),R(!1);let n=setTimeout(()=>{P.current===t&&L(!0)},500);q.current=n;try{let[n,a]=await Promise.all([ne(e),nl(e)]);if(P.current!==t)return;u(n),p(a);try{let[n,a]=await Promise.all([na(e,{direction:"outgoing",maxDepth:3,maxRelationships:512}),na(e,{direction:"incoming",maxDepth:3,maxRelationships:512})]);if(P.current!==t)return;S(n),I(a)}catch{}}catch(e){if(P.current!==t)return;v(e instanceof t3?e.message:t4)}finally{q.current===n?(clearTimeout(n),q.current=null):clearTimeout(n),P.current===t&&(f(!1),L(!1))}},[]);(0,a.useEffect)(()=>{if(null===e){P.current+=1,null!==q.current&&(clearTimeout(q.current),q.current=null),u(null),p(null),v(null),k(null),L(!1),f(!1);return}return M(e),()=>{null!==q.current&&(clearTimeout(q.current),q.current=null)}},[e,M]);let D=(0,a.useCallback)(async e=>{if(null!==d){b(!0),j(null),k(null);try{let t=crypto.randomUUID(),{relationship:n}=await nt(d.id,{transition:{to:e}},String(d.etag),t);u(n),p(null),await M(d.id)}catch(e){j(e instanceof t3?e.message:"Mutation failed. Please retry."),k(e instanceof t3?rg(e.reasons):null)}finally{b(!1)}}},[d,M]),F=(0,a.useCallback)(()=>void D("draft"),[D]),z=(0,a.useCallback)(()=>void D("archived"),[D]),O=(0,a.useCallback)(async()=>{if(null!==d&&window.confirm(`Revoke relationship "${d.type}"? This cannot be undone.`)){b(!0),j(null),k(null);try{let e=crypto.randomUUID(),t=await nn(d.id,String(d.etag),e);u(t)}catch(e){j(e instanceof t3?e.message:"Revoke failed. Please retry."),k(e instanceof t3?rg(e.reasons):null)}finally{b(!1)}}},[d]),K=(0,a.useCallback)(()=>{R(e=>!e)},[]),_=(0,a.useCallback)(e=>{s?.(e)},[s]),B=(0,a.useRef)(null),U=(0,a.useCallback)(()=>{B.current?.scrollIntoView?.({block:"start"})},[]);if(null===e)return(0,n.jsxs)("div",{className:"tw-pad","data-testid":"relationship-inspector-panel",children:[(0,n.jsx)(ri,{style:{marginTop:0},children:"Relationship"}),(0,n.jsx)("div",{className:"insp-empty","data-testid":"inspector-empty",children:"Select a relationship from the list to inspect it."}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--fg-muted)",marginTop:4},children:"If the list is empty, use “+ New relationship” in the toolbar to create one."})]});let W=rg(h?.decision.reasons)??w,H=null!==W&&(d?.lifecycle==="blocked"||d?.lifecycle==="revoked"||null!==w),G=null!==d?i.get(d.id)??function(e){switch(e){case"blocked":return"blocked";case"stale":return"degraded";default:return"inactive"}}(d.lifecycle):"inactive",Y=null!==d?r.get(d.id):void 0;return(0,n.jsxs)("div",{className:"tw-pad","aria-busy":m,"data-testid":"relationship-inspector-panel",children:[null!==g&&(0,n.jsxs)("div",{className:"lk-alert",role:"alert","aria-live":"assertive",children:[(0,n.jsx)("span",{children:g}),(0,n.jsx)("button",{type:"button",className:"lk-alert-retry",onClick:()=>void M(e),children:"Retry"})]}),null!==y&&(0,n.jsxs)("div",{className:"lk-alert",role:"alert","aria-live":"assertive",children:[(0,n.jsx)("span",{children:y}),(0,n.jsx)("button",{type:"button",className:"lk-alert-retry",onClick:()=>j(null),children:"Dismiss"})]}),m&&A&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ri,{style:{marginTop:0},children:"Relationship"}),(0,n.jsx)(rs,{lines:4}),(0,n.jsx)(rs,{lines:3})]}),!m&&null===g&&null===d&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ri,{style:{marginTop:0},children:"Relationship"}),(0,n.jsx)("div",{className:"insp-empty","data-testid":"inspector-not-found",children:"This relationship is no longer available."}),(0,n.jsx)("div",{style:{fontSize:12,color:"var(--fg-muted)",marginTop:4},children:"It may have been deleted, retired by retention, or it never existed in this workspace."}),void 0!==l&&(0,n.jsx)("button",{type:"button",className:"arun-btn",style:{marginTop:8},onClick:l,children:"Clear focus"})]}),!m&&null!==d&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ri,{style:{marginTop:0},children:"Relationship"}),(0,n.jsx)(rr,{rel:d}),(0,n.jsx)(ro,{label:"Source",kind:d.source.kind,id:d.source.id}),(0,n.jsx)(ro,{label:"Target",kind:d.target.kind,id:d.target.id}),(0,n.jsx)(rc,{lifecycle:d.lifecycle}),(0,n.jsx)(rd,{type:d.type,lifecycle:d.lifecycle,activity:G,throughputCount:Y,animateBadges:o,highContrast:c,transitions:h?.lifecycle??[],densityMode:t}),(0,n.jsx)(ru,{}),(0,n.jsx)(rh,{auditRows:h?.lifecycle??[],loading:!1,error:null,onRetry:()=>void M(e),onLoadMore:()=>{},hasMore:!1}),(0,n.jsx)("div",{ref:B,children:(0,n.jsx)(rp,{rel:d})}),(0,n.jsx)(rm,{relationshipId:d.id,forwardCount:$,reverseCount:T,outgoing:N,incoming:C,expanded:E,onToggle:K,onSelectRelationship:_}),H&&null!==W&&(0,n.jsx)(rf,{codes:W.codes,messages:W.messages}),(0,n.jsx)(rv,{rel:d,onReconnect:F,onArchive:z,onRevoke:()=>void O(),onViewImpact:K,onViewEvidence:U,mutating:x})]})]})}let rb=new Set(["kind","id","state","timestamp","count"]);function ry(e){return`${e.kind}: ${e.id}`}function rj({category:e}){return(0,n.jsxs)("p",{role:"note",style:{margin:"4px 0 0",fontSize:11,color:"var(--fg-muted)",borderLeft:"2px solid var(--warn)",paddingLeft:8},children:["More ",e," exist than the bounded query returned. Resolve the listed items, then re-run the health check."]})}function rw({category:e,onSelectRelationship:t}){if(0===e.items.length)return null;let a=e.items.slice(0,50),l=e.items.length-a.length;return(0,n.jsxs)("section",{"aria-label":`${e.label} (${String(e.items.length)})`,style:{marginBottom:14},children:[(0,n.jsxs)("div",{className:"rb-section-label",role:"heading","aria-level":3,children:[e.label,(0,n.jsx)("span",{className:"rb-count","aria-hidden":"true",children:e.items.length})]}),(0,n.jsx)("p",{style:{margin:"0 0 6px",fontSize:11,color:"var(--fg-muted)"},children:e.help}),(0,n.jsx)("ul",{style:{listStyle:"none",margin:0,padding:0},children:a.map(e=>(0,n.jsx)("li",{style:{marginBottom:2},children:(0,n.jsxs)("button",{type:"button",className:"arun-btn ghost",onClick:()=>t(e.id),"aria-label":`Inspect ${e.type} relationship from ${ry(e.source)} to ${ry(e.target)}, lifecycle ${e.lifecycle}`,style:{display:"flex",width:"100%",gap:6,alignItems:"center",textAlign:"left",fontSize:12},children:[(0,n.jsx)("span",{className:"mono",style:{color:"var(--fg)"},children:e.type}),(0,n.jsxs)("span",{style:{color:"var(--fg-muted)"},children:[ry(e.source)," → ",ry(e.target)]}),(0,n.jsx)("span",{className:"mono",style:{marginLeft:"auto",color:"var(--fg-muted)"},children:e.lifecycle})]})},e.id))}),l>0&&(0,n.jsxs)("p",{role:"note",style:{margin:"4px 0 0",fontSize:11,color:"var(--fg-muted)"},children:["Showing the first ",String(50)," of ",String(e.items.length),"."]}),e.truncated&&(0,n.jsx)(rj,{category:e.label.toLowerCase()})]})}function rk({findings:e}){if(0===e.orphanedEndpoints.length)return null;let t=e.orphanedEndpoints.slice(0,50);return(0,n.jsxs)("section",{"aria-label":`Orphaned endpoints (${String(e.orphanedEndpoints.length)})`,style:{marginBottom:14},children:[(0,n.jsxs)("div",{className:"rb-section-label",role:"heading","aria-level":3,children:["Orphaned endpoints",(0,n.jsx)("span",{className:"rb-count","aria-hidden":"true",children:e.orphanedEndpoints.length})]}),(0,n.jsx)("p",{style:{margin:"0 0 6px",fontSize:11,color:"var(--fg-muted)"},children:"Endpoints that participate in no live relationship."}),(0,n.jsx)("ul",{style:{listStyle:"none",margin:0,padding:0},children:t.map(e=>(0,n.jsx)("li",{className:"rb-row",style:{fontSize:12},children:(0,n.jsx)("span",{className:"mono",children:ry(e)})},`${e.kind}:${e.id}`))}),e.orphanedEndpointsTruncated&&(0,n.jsx)(rj,{category:"orphaned endpoints"})]})}function rN({onSelectRelationship:e}){var t,l;let[s,i]=(0,a.useState)(null),[r,o]=(0,a.useState)(!0),[c,d]=(0,a.useState)(null),u=(0,a.useCallback)(async()=>{o(!0),d(null);try{let e=await ns();i(e)}catch(e){d(e instanceof t3?e.message:"Could not load the graph health check.")}finally{o(!1)}},[]);return(0,a.useEffect)(()=>{u()},[u]),(0,n.jsxs)("div",{style:{padding:12,height:"100%",overflowY:"auto"},"aria-busy":r,children:[(0,n.jsxs)("header",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:10},children:[(0,n.jsx)("h2",{style:{margin:0,fontSize:13,fontWeight:600,color:"var(--fg)",flexGrow:1},children:"Graph health"}),(0,n.jsx)("button",{type:"button",className:"arun-btn",onClick:()=>void u(),"aria-label":"Re-run the graph health check",style:{minHeight:24},children:"Refresh"})]}),r&&(0,n.jsx)("p",{style:{fontSize:12,color:"var(--fg-muted)"},"aria-live":"polite",children:"Running health check…"}),null!==c&&(0,n.jsxs)("div",{className:"lk-alert",role:"alert",children:[c,(0,n.jsx)("button",{type:"button",className:"lk-alert-retry",onClick:()=>void u(),children:"Retry"})]}),!r&&null===c&&null!==s&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("p",{style:{fontSize:11,color:"var(--fg-faint)",margin:"0 0 10px"},children:["Checked at"," ",(0,n.jsx)("time",{dateTime:new Date(s.checkedAt).toISOString(),children:new Date(s.checkedAt).toLocaleString()}),"."]}),(0,n.jsx)("div",{className:"rb-rows",style:{marginBottom:14},children:t0.filter(e=>(s.totals[e]??0)>0).map(e=>(0,n.jsxs)("div",{className:"rb-row",children:[(0,n.jsx)("span",{className:"rb-row-k",children:e}),(0,n.jsx)("span",{className:"rb-row-v mono",children:String(s.totals[e]??0)})]},e))}),0===(t=s.findings).orphanedEndpoints.length+t.staleRelationships.length+t.blockedRelationships.length+t.failedRelationships.length+t.invalidReferences.length+t.cycleParticipants.length?(0,n.jsxs)("div",{className:"lk-empty",children:[(0,n.jsx)("p",{className:"lk-empty-title",children:"Healthy"}),(0,n.jsx)("p",{className:"lk-empty-body",children:"No relationship-graph defects were found."})]}):(0,n.jsxs)(n.Fragment,{children:[[{key:"invalid",label:"Invalid references",help:"An endpoint no longer resolves to a live workspace object.",items:(l=s.findings).invalidReferences,truncated:l.invalidReferencesTruncated},{key:"blocked",label:"Blocked",help:"A policy or endpoint state is blocking this relationship.",items:l.blockedRelationships,truncated:l.blockedRelationshipsTruncated},{key:"failed",label:"Failed (revoked)",help:"The relationship reached the revoked terminal state.",items:l.failedRelationships,truncated:l.failedRelationshipsTruncated},{key:"cycle",label:"Cycle participants",help:"These relationships take part in a dependency cycle.",items:l.cycleParticipants,truncated:l.cycleScanTruncated},{key:"stale",label:"Stale",help:"A health check flagged at least one endpoint as not currently live.",items:l.staleRelationships,truncated:l.staleRelationshipsTruncated}].map(t=>(0,n.jsx)(rw,{category:t,onSelectRelationship:e},t.key)),(0,n.jsx)(rk,{findings:s.findings})]})]})]})}let rS={draft:["draft","active","archived","superseded","revoked","blocked","stale"],active:["active","archived","superseded","revoked","stale"],archived:["archived","superseded","revoked","stale"],superseded:["superseded","stale"],revoked:["revoked"],blocked:["blocked","draft","active","archived","revoked","stale"],stale:["stale","active","archived","superseded","revoked"]};function rC(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function rI(e){return"string"==typeof e&&e.length>0}function rE(e,t,n){return void 0===n?{code:e,message:t}:{code:e,field:n,message:t}}function rR(e,t,n){return rC(e)?rI(e.kind)?rI(e.id)?!!rI(e.workspaceId)||(n.push(rE("denied/schema-version-unsupported",`${t}.workspaceId must be a non-empty string`,`${t}.workspaceId`)),!1):(n.push(rE("denied/schema-version-unsupported",`${t}.id must be a non-empty string`,`${t}.id`)),!1):(n.push(rE("denied/schema-version-unsupported",`${t}.kind must be a non-empty string`,`${t}.kind`)),!1):(n.push(rE("denied/schema-version-unsupported",`${t} must be an object`,t)),!1)}function r$(e,t,n){rI(e[t])||n.push(rE("denied/schema-version-unsupported",`${t} must be a non-empty string`,t))}function rT(e,t){let n=e.kind;return tX.includes(n)?null:rE("denied/schema-version-unsupported",`${t}.kind is not a known object kind`,`${t}.kind`)}function rA(e,t,n){"missing"===t?n.push(rE("source"===e?"denied/non-existent-source":"denied/non-existent-target",`${e} endpoint does not exist`,e)):"tombstoned"===t?n.push(rE("denied/endpoint-tombstoned",`${e} endpoint has been tombstoned`,e)):"retired"===t?n.push(rE("denied/endpoint-retired",`${e} endpoint has been retired`,e)):"unavailable"===t&&n.push(rE("denied/endpoint-unavailable",`${e} endpoint is unavailable`,e))}function rL(e,t){let n=e.kind;return tJ.includes(n)?null:rE("denied/object-kind-not-yet-supported",`${t}.kind "${n}" is reserved for a future release`,`${t}.kind`)}function rq(){return{type:"reads-context",sourceKind:"workflow-run",sourceId:"",targetKind:"memory",targetId:"",summary:""}}let rP=new Set(["denied/path-not-contained","denied/cross-workspace","denied/payload-content-not-permitted"]);function rM(e){return e?.codes.some(e=>rP.has(e))===!0}function rD({onClose:e}){let[t,l]=(0,a.useState)(rq),[s,i]=(0,a.useState)([]),[r,o]=(0,a.useState)(null),[c,d]=(0,a.useState)(!1),[u,h]=(0,a.useState)(!1),p=(0,a.useRef)(null),m=(0,a.useRef)(null),f="rel-create-dialog-title",g="rel-create-dialog-desc";(0,a.useEffect)(()=>{m.current?.focus()},[]);let v=(0,a.useCallback)(e=>{let t=p.current;if(null===t)return;let n=Array.from(t.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')).filter(e=>!e.hasAttribute("disabled")),a=n[0],l=n[n.length-1];"Tab"===e.key&&(e.shiftKey?document.activeElement===a&&(e.preventDefault(),l?.focus()):document.activeElement===l&&(e.preventDefault(),a?.focus()))},[]),x=(0,a.useCallback)(t=>{"Escape"===t.key&&e(null)},[e]);(0,a.useEffect)(()=>(window.addEventListener("keydown",v),window.addEventListener("keydown",x),()=>{window.removeEventListener("keydown",v),window.removeEventListener("keydown",x)}),[v,x]),(0,a.useEffect)(()=>{if(0===t.sourceId.length||0===t.targetId.length)return void i([]);let e=function(e){let t=function(e){var t;if(!rC(e))return{errors:[rE("denied/schema-version-unsupported","relationship must be an object")]};let n=[];r$(e,"id",n),r$(e,"workspaceId",n),r$(e,"createdAt",n),r$(e,"updatedAt",n),(!("number"==typeof(t=e.etag)&&Number.isInteger(t)&&Number.isFinite(t))||e.etag<0)&&n.push(rE("denied/schema-version-unsupported","etag must be a non-negative finite integer","etag"));let a=rR(e.source,"source",n),l=rR(e.target,"target",n);return!(n.length>0)&&a&&l?{errors:[],value:{record:e,source:e.source,target:e.target}}:{errors:n}}(e);if(!t.value)return{ok:!1,errors:t.errors};let{record:n,source:a,target:l}=t.value,s=function(e,t,n){let a,l,s="1"!==e.schemaVersion?rE("denied/schema-version-unsupported",'schemaVersion must be the literal "1"',"schemaVersion"):null;if(s)return[s];let i=rI(a=e.type)?tZ.includes(a)?null:rE("denied/schema-version-unsupported","type is not a known relationship type","type"):rE("denied/schema-version-unsupported","type must be a non-empty string","type");if(i)return[i];let r=rT(t,"source"),o=rT(n,"target");if(null!==r||null!==o){let e=[];return null!==r&&e.push(r),null!==o&&e.push(o),e}let c=rI(l=e.lifecycleState)?t0.includes(l)?null:rE("denied/schema-version-unsupported","lifecycleState is not a known lifecycle state","lifecycleState"):rE("denied/schema-version-unsupported","lifecycleState must be a non-empty string","lifecycleState");return c?[c]:null}(n,a,l);if(s)return{ok:!1,errors:s};let i=function(e){if(!e?.endpointResolver)return null;let t=[];return"missing"===e.endpointResolver.source&&rA("source",e.endpointResolver.source,t),"missing"===e.endpointResolver.target&&rA("target",e.endpointResolver.target,t),t}(void 0);if(null!==i&&i.length>0)return{ok:!1,errors:i};let r=function(e,t,n,a){var l,s,i,r,o;let c,d,u,h,p,m,f=[],g=e.type,v=e.lifecycleState,x=rL(t,"source");x&&f.push(x);let b=rL(n,"target");b&&f.push(b),null===x&&null===b&&(l=t.kind,s=n.kind,"denied/source-kind-not-allowed"===(d=(c=t1[g]).validSourceKinds.includes(l)?c.validTargetKinds.includes(s)?null:"denied/target-kind-not-allowed":"denied/source-kind-not-allowed")?f.push(rE("denied/source-kind-not-allowed",`source.kind "${t.kind}" is not permitted for type "${g}"`,"source.kind")):"denied/target-kind-not-allowed"===d&&f.push(rE("denied/target-kind-not-allowed",`target.kind "${n.kind}" is not permitted for type "${g}"`,"target.kind")));let y=(u=a?.cardinalityCounts)?"produces-evidence"===g&&"number"==typeof u.producesEvidenceForSource&&u.producesEvidenceForSource>=1?rE("denied/cardinality-exceeded","produces-evidence already exists for this source workflow-run"):"starts-workflow"===g&&"number"==typeof u.startsWorkflowForTarget&&u.startsWorkflowForTarget>=1?rE("denied/cardinality-exceeded","starts-workflow already exists for this target workflow-run"):null:null;y&&f.push(y),(h=t.kind===n.kind&&t.id===n.id?rE("denied/cycle-forbidden","source and target refer to the same endpoint"):null)&&f.push(h),(p="depends-on"===g&&a?.dependsOnReverseEdgeExists===!0?rE("denied/cycle-forbidden","depends-on reverse edge already exists for this endpoint pair"):null)&&f.push(p);let j=(i=e.workspaceId,t.workspaceId!==i||n.workspaceId!==i?rE("denied/cross-workspace","source and target must be in the relationship's workspace"):null);j&&f.push(j);let w=void 0===(m=a?.previousLifecycleState)||rS[m].includes(v)?null:rE("denied/lifecycle-illegal-transition",`transition from ${m} to ${v} is not permitted`,"lifecycleState");for(let t of(w&&f.push(w),r=a,o=f,r?.endpointResolver&&("missing"!==r.endpointResolver.source&&rA("source",r.endpointResolver.source,o),"missing"!==r.endpointResolver.target&&rA("target",r.endpointResolver.target,o)),function(e){let t=[];if(void 0===e.metadata||null===e.metadata)return t;if(!rC(e.metadata))return t.push(rE("denied/payload-content-not-permitted","metadata must be an object when set","metadata")),t;for(let n of Object.keys(e.metadata)){let e=n.toLowerCase().replace(/[^a-z0-9]/g,"");for(let a of t2)if(e.includes(a)){t.push(rE("denied/payload-content-not-permitted","metadata may not carry endpoint content",`metadata.${n}`));break}}return t}(e)))f.push(t);return f}(n,a,l,void 0);return r.length>0?{ok:!1,errors:r}:{ok:!0,value:n}}({id:"candidate",schemaVersion:"1",workspaceId:"preview",source:{kind:t.sourceKind,id:t.sourceId,workspaceId:"preview"},target:{kind:t.targetKind,id:t.targetId,workspaceId:"preview"},type:t.type,lifecycleState:"active",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),etag:0});e.ok?i([]):i(e.errors.map(e=>e.message))},[t]);let b=(0,a.useRef)(null),y=(0,a.useRef)(0);(0,a.useEffect)(()=>{y.current+=1;let e=y.current;return(null!==b.current&&clearTimeout(b.current),0===t.sourceId.length||0===t.targetId.length||s.length>0)?void h(!1):(b.current=setTimeout(async()=>{h(!0);try{if(await t8({type:t.type,source:{kind:t.sourceKind,id:t.sourceId},target:{kind:t.targetKind,id:t.targetId},summary:t.summary.length>0?t.summary:void 0}),e!==y.current)return;o(e=>rM(e)?e:null)}catch(t){if(e!==y.current)return;t instanceof t3&&t.reasons.length>0?o({source:"preview",codes:t.reasons.map(e=>e.code),messages:t.reasons.map(e=>e.message)}):o(null)}finally{e===y.current&&h(!1)}},250),()=>{null!==b.current&&clearTimeout(b.current)})},[t,s]),(0,a.useEffect)(()=>{o(e=>e?.source!=="submit"||rM(e)?e:null)},[t]);let j=t.sourceId.trim().length>0&&t.targetId.trim().length>0&&0===s.length&&null===r&&!c,w=(0,a.useCallback)(async()=>{if(j){d(!0),o(null);try{let n=crypto.randomUUID(),{relationship:a}=await t9({type:t.type,source:{kind:t.sourceKind,id:t.sourceId},target:{kind:t.targetKind,id:t.targetId},summary:t.summary.length>0?t.summary:void 0},n);e(a)}catch(e){e instanceof t3?e.reasons.length>0?o({source:"submit",codes:e.reasons.map(e=>e.code),messages:e.reasons.map(e=>e.message)}):o({source:"submit",codes:[e.code],messages:[e.message]}):o({source:"submit",codes:["relationship/network-error"],messages:[t4]})}finally{d(!1)}}},[j,t,e]),N=(0,a.useCallback)(e=>{"Enter"===e.key&&(e.ctrlKey||e.metaKey)&&w()},[w]),S=t1[t.type],C=rM(r),I=[s.length>0?"rel-create-client-hints":null,null!==r?"rel-create-server-denial":null].filter(e=>null!==e),E=(0,n.jsx)("div",{className:"cmdk-overlay",onPointerDown:()=>e(null),"data-testid":"rel-create-overlay",children:(0,n.jsxs)("div",{ref:p,role:"dialog","aria-modal":"true","aria-labelledby":f,"aria-describedby":g,className:"cmdk",style:{maxWidth:480,width:"100%"},onPointerDown:e=>e.stopPropagation(),onKeyDown:N,"data-testid":"rel-create-dialog",children:[(0,n.jsxs)("div",{className:"cmdk-input",style:{borderBottom:"1px solid var(--line)"},children:[(0,n.jsx)("span",{id:f,style:{fontWeight:600,fontSize:14,color:"var(--fg)"},children:"Create relationship"}),(0,n.jsx)("span",{id:g,className:"visually-hidden",children:"Create a new relationship between two workspace endpoints."}),(0,n.jsx)("button",{type:"button",className:"palette-x",onClick:()=>e(null),"aria-label":"Close",title:"Close",style:{marginLeft:"auto"},children:(0,n.jsx)(k.Icons.close,{size:16})})]}),(0,n.jsxs)("div",{style:{padding:"12px 16px",display:"flex",flexDirection:"column",gap:10},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{htmlFor:"rel-type",style:{fontSize:12,color:"var(--fg-muted)",display:"block",marginBottom:3},children:"Type"}),(0,n.jsx)("select",{id:"rel-type",ref:m,value:t.type,onChange:e=>l(t=>({...t,type:e.target.value})),style:{width:"100%",background:"var(--inset)",border:"1px solid var(--line)",borderRadius:4,padding:"4px 8px",minHeight:24,color:"var(--fg)",fontSize:13},"aria-label":"Relationship type",children:tZ.map(e=>(0,n.jsx)("option",{value:e,children:t1[e].displayName},e))}),(0,n.jsx)("div",{style:{fontSize:11,color:"var(--fg-muted)",marginTop:3},children:S.semantics})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsxs)("div",{style:{flex:"0 0 140px"},children:[(0,n.jsx)("label",{htmlFor:"rel-src-kind",style:{fontSize:12,color:"var(--fg-muted)",display:"block",marginBottom:3},children:"Source kind"}),(0,n.jsx)("select",{id:"rel-src-kind",value:t.sourceKind,onChange:e=>l(t=>({...t,sourceKind:e.target.value})),style:{width:"100%",background:"var(--inset)",border:"1px solid var(--line)",borderRadius:4,padding:"4px 8px",minHeight:24,color:"var(--fg)",fontSize:12},"aria-label":"Source endpoint kind",children:tJ.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})]}),(0,n.jsxs)("div",{style:{flex:1},children:[(0,n.jsx)("label",{htmlFor:"rel-src-id",style:{fontSize:12,color:"var(--fg-muted)",display:"block",marginBottom:3},children:"Source ID"}),(0,n.jsx)("input",{id:"rel-src-id",type:"text",value:t.sourceId,onChange:e=>l(t=>({...t,sourceId:e.target.value})),placeholder:"endpoint id",style:{width:"100%",background:"var(--inset)",border:"1px solid var(--line)",borderRadius:4,padding:"4px 8px",minHeight:24,color:"var(--fg)",fontSize:12},"aria-label":"Source endpoint ID","aria-describedby":"rel-src-kind"})]})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsxs)("div",{style:{flex:"0 0 140px"},children:[(0,n.jsx)("label",{htmlFor:"rel-tgt-kind",style:{fontSize:12,color:"var(--fg-muted)",display:"block",marginBottom:3},children:"Target kind"}),(0,n.jsx)("select",{id:"rel-tgt-kind",value:t.targetKind,onChange:e=>l(t=>({...t,targetKind:e.target.value})),style:{width:"100%",background:"var(--inset)",border:"1px solid var(--line)",borderRadius:4,padding:"4px 8px",minHeight:24,color:"var(--fg)",fontSize:12},"aria-label":"Target endpoint kind",children:tJ.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})]}),(0,n.jsxs)("div",{style:{flex:1},children:[(0,n.jsx)("label",{htmlFor:"rel-tgt-id",style:{fontSize:12,color:"var(--fg-muted)",display:"block",marginBottom:3},children:"Target ID"}),(0,n.jsx)("input",{id:"rel-tgt-id",type:"text",value:t.targetId,onChange:e=>l(t=>({...t,targetId:e.target.value})),placeholder:"endpoint id",style:{width:"100%",background:"var(--inset)",border:"1px solid var(--line)",borderRadius:4,padding:"4px 8px",minHeight:24,color:"var(--fg)",fontSize:12},"aria-label":"Target endpoint ID","aria-describedby":"rel-tgt-kind"})]})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{htmlFor:"rel-summary",style:{fontSize:12,color:"var(--fg-muted)",display:"block",marginBottom:3},children:"Summary (optional, ≤240 chars)"}),(0,n.jsx)("textarea",{id:"rel-summary",value:t.summary,maxLength:240,rows:2,onChange:e=>l(t=>({...t,summary:e.target.value})),style:{width:"100%",background:"var(--inset)",border:"1px solid var(--line)",borderRadius:4,padding:"4px 8px",minHeight:24,color:"var(--fg)",fontSize:12,resize:"vertical"},"aria-label":"Relationship summary"})]}),s.length>0&&(0,n.jsx)("div",{id:"rel-create-client-hints",className:"lk-alert",role:"status","aria-live":"polite","data-testid":"client-validation-hints",children:s.map((e,t)=>(0,n.jsx)("div",{style:{fontSize:12},children:e},t))}),u&&(0,n.jsx)("div",{style:{fontSize:12,color:"var(--fg-muted)"},"aria-live":"polite",children:"Validating…"}),null!==r&&(0,n.jsxs)("div",{id:"rel-create-server-denial",className:"lk-alert",role:"alert","aria-live":"assertive","data-testid":"server-denial-banner",children:[r.codes.map((e,t)=>(0,n.jsxs)("div",{style:{marginBottom:6*(t<r.codes.length-1)},children:[(0,n.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:11,color:"var(--fg-muted)",marginBottom:2},children:e}),(0,n.jsx)("div",{style:{fontSize:13,color:"var(--fg)"},children:r.messages[t]??e})]},e)),C&&(0,n.jsx)("button",{type:"button",className:"lk-alert-retry",onClick:()=>o(null),style:{marginTop:6},children:"Dismiss"})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:8,justifyContent:"flex-end",marginTop:4},children:[(0,n.jsx)("button",{type:"button",className:"arun-btn",onClick:()=>e(null),style:{minWidth:24,minHeight:24},children:"Cancel"}),(0,n.jsx)("button",{type:"button",className:`arun-btn${j?" primary":""}`,"aria-disabled":!j,"aria-describedby":I.length>0?I.join(" "):void 0,onClick:()=>void w(),"aria-busy":c,style:{minWidth:24,minHeight:24},children:c?"Creating…":"Create"})]})]})]})});return"u"<typeof document?E:(0,e2.createPortal)(E,document.body)}let rF={};function rz(){let{activityMap:e,throughputMap:t,animate:l}=function(){let e=(0,a.useRef)(new Map),t=(0,a.useRef)("u"<typeof document||"visible"===document.visibilityState),[n,l]=(0,a.useState)(new Map),[s,i]=(0,a.useState)(new Map),r=(0,a.useRef)(new Map),o=(0,a.useRef)(new Map),[c,d]=(0,a.useState)(()=>window.matchMedia("(prefers-reduced-motion: reduce)").matches),[u,h]=(0,a.useState)(!1),p=(0,a.useCallback)(()=>{h(!0)},[]),m=(0,a.useCallback)((t,n)=>{let a=new Map(r.current),s=new Set,c=new Set,d=!1;for(let[l,i]of a){let r=t-(e.current.get(l)??0);r>=6e4&&"inactive"!==i&&(a.set(l,"inactive"),c.add(l),d=!0),!n&&r>=12e4&&(a.delete(l),s.add(l),c.add(l),d=!0)}if(a.size>512)for(let t of Array.from(a.keys()).sort((t,n)=>{let l=a.get(t),s=a.get(n);return"inactive"===l&&"inactive"!==s?-1:"inactive"!==l&&"inactive"===s?1:(e.current.get(t)??0)-(e.current.get(n)??0)}).slice(0,a.size-512))a.delete(t),s.add(t),c.add(t),d=!0;if(d&&(r.current=a,l(a)),s.size>0)for(let t of s)e.current.delete(t);if(c.size>0){let e=!1,t=new Map(o.current);for(let n of c)t.delete(n)&&(e=!0);e&&(o.current=t,i(t))}},[]);(0,a.useEffect)(()=>{let e=window.matchMedia("(prefers-reduced-motion: reduce)"),t=e=>{d(e.matches)};return e.addEventListener("change",t),()=>{e.removeEventListener("change",t)}},[]);let f=(0,a.useCallback)(n=>{if(!t.current)return;let a=Date.now();a-(e.current.get(n.id)??0)<2e3||(e.current.set(n.id,a),l(e=>{let t=new Map(e);return t.set(n.id,n.state),r.current=t,t}),"high-throughput"===n.state&&void 0!==n.count?i(e=>{let t=new Map(e);return t.set(n.id,n.count),o.current=t,t}):i(e=>{if(!e.has(n.id))return e;let t=new Map(e);return t.delete(n.id),o.current=t,t}))},[]);return(0,a.useEffect)(()=>{let e=setInterval(()=>{t.current&&m(Date.now(),!1)},15e3);return()=>{clearInterval(e)}},[m]),(0,a.useEffect)(()=>{if("u"<typeof document)return;let e=()=>{t.current="visible"===document.visibilityState,t.current&&m(Date.now(),!0)};return t.current="visible"===document.visibilityState,document.addEventListener("visibilitychange",e),()=>{document.removeEventListener("visibilitychange",e)}},[m]),(0,a.useEffect)(()=>{let e=!1,n=null,a=null;function l(e){let t;try{t=JSON.parse(e)}catch{return}let n=function(e){var t;if(null===e||"object"!=typeof e||function e(t){if(null===t||"object"!=typeof t)return!1;for(let n of Object.keys(t))if(function(e){let t=e.toLowerCase();return t2.some(e=>t.includes(e))}(n)||e(t[n]))return!0;return!1}(e))return null;let n={};for(let t of rb)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t]);return"string"!=typeof n.id||0===n.id.length?null:"inactive"!==(t=n.state)&&"queued"!==t&&"active"!==t&&"processing"!==t&&"completed"!==t&&"failed"!==t&&"blocked"!==t&&"degraded"!==t&&"high-throughput"!==t||"number"!=typeof n.timestamp?null:{kind:"string"==typeof n.kind?n.kind:"relationship:activity",id:n.id,state:n.state,timestamp:n.timestamp,count:"number"==typeof n.count?n.count:void 0}}(t);null!==n&&f(n)}function s(){null!==a&&(clearTimeout(a),a=null)}function i(){n?.close(),n=null}function r(){!e&&null===a&&t.current&&(a=setTimeout(()=>{a=null,o()},5e3))}function o(){if(!e&&t.current){try{n=new EventSource("/api/relationships/events")}catch{r();return}n.addEventListener("relationship:activity",e=>{l(e.data)}),n.onmessage=e=>{l(e.data)},n.onerror=()=>{e||(i(),r())}}}o();let c=()=>{if(t.current="visible"===document.visibilityState,!t.current){s(),i();return}m(Date.now(),!0),null===n&&o()};return document.addEventListener("visibilitychange",c),()=>{e=!0,document.removeEventListener("visibilitychange",c),s(),i()}},[void 0,f,m]),{activityMap:n,throughputMap:s,animate:!c&&!u,disable:p}}(),[s,i]=(0,a.useState)(!1),[r,o]=(0,a.useState)(rF),c=r.relFocus,d=r.relDensity??"minimal",[u,h]=(0,a.useState)(!1),p=(0,a.useRef)(null),m=(0,a.useRef)(!1),f=(0,a.useRef)(null),[g,v]=(0,a.useState)(!1),x=(0,a.useCallback)(e=>{o(t=>{let n={...t,...e},a={};for(let[e,t]of Object.entries(n))void 0!==t&&""!==t&&(a[e]=t);return a})},[]),b=(0,a.useCallback)(e=>{x({relFocus:e})},[x]),y=(0,a.useCallback)(()=>{x({relFocus:void 0})},[x]),j=(0,a.useCallback)(e=>{x({relFocus:e})},[x]),w=(0,a.useCallback)(e=>{m.current=!0,h(!1),null!==e&&x({relFocus:e.id})},[x]);return(0,a.useEffect)(()=>{!u&&m.current&&(m.current=!1,p.current?.focus())},[u]),(0,a.useEffect)(()=>{let e=window.matchMedia("(prefers-contrast: more)"),t=e=>{i(e)};t(e.matches);let n=e=>{t(e.matches)};return e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),(0,a.useEffect)(()=>{let e=f.current;if(null===e)return;let t=e=>{let t=e.target;if(!("INPUT"===t.tagName||"TEXTAREA"===t.tagName||"SELECT"===t.tagName||t.isContentEditable)&&"Escape"===e.key){if(u||null!==document.querySelector('[role="dialog"][aria-modal="true"]'))return;y()}};return e.addEventListener("keydown",t),()=>e.removeEventListener("keydown",t)},[u,y]),(0,n.jsxs)(n.Fragment,{children:[u&&(0,n.jsx)(rD,{onClose:w}),(0,n.jsxs)("div",{ref:f,style:{display:"flex",flexDirection:"column",height:"100%",overflow:"hidden",background:"var(--bg)"},children:[(0,n.jsxs)("header",{style:{display:"flex",alignItems:"center",gap:8,padding:"6px 12px",borderBottom:"1px solid var(--line)",flexShrink:0},children:[(0,n.jsx)("button",{type:"button",className:"arun-btn",onClick:()=>v(e=>!e),"aria-pressed":g,"aria-label":"Toggle the graph health view",style:{flex:"0 0 auto",minHeight:24,marginRight:"auto"},children:g?"Hide health":"Graph health"}),(0,n.jsx)("button",{ref:p,type:"button",className:"arun-btn primary",onClick:()=>h(!0),"aria-label":"Create new relationship",style:{flex:"0 0 auto",minWidth:24,minHeight:24},children:"+ New relationship"})]}),(0,n.jsxs)("div",{style:{display:"flex",flex:1,overflow:"hidden"},children:[(0,n.jsx)("div",{style:{flex:"0 0 280px",borderRight:"1px solid var(--line)",overflowY:"auto"},children:(0,n.jsx)(i7,{filters:r,selectedId:c,onSelect:b,onFilterChange:x,activityMap:e,throughputMap:t,animateBadges:l,highContrast:s})}),(0,n.jsx)("div",{style:{flex:1,overflowY:"auto"},children:g?(0,n.jsx)(rN,{onSelectRelationship:e=>{v(!1),b(e)}}):(0,n.jsx)(rx,{relationshipId:c??null,densityMode:d,onClearFocus:y,onViewImpact:j,activityMap:e,throughputMap:t,animateBadges:l,highContrast:s})})]})]})]})}var rO=e.i(96688),rK=e.i(18566),r_=e.i(61774);function rB(e){return Array.from(e.querySelectorAll("button:not([disabled]),input:not([disabled]),[tabindex]:not([tabindex='-1'])"))}function rU({capsule:e,checked:t,disabled:a,onToggle:l}){return(0,n.jsx)("li",{className:"lk-compose-member",children:(0,n.jsxs)("label",{className:"lk-compose-member-label",children:[(0,n.jsx)("input",{type:"checkbox",checked:t,disabled:a,onChange:()=>l(e.id)}),(0,n.jsx)("span",{className:"lk-compose-member-name",title:e.displayName,children:e.displayName}),(0,n.jsx)("span",{className:"lk-badge","data-state":e.lifecycleState,children:rO.STATUS_LABELS[e.lifecycleState]})]})})}function rW({capsules:e,onCancel:t,onCreated:l,createImpl:s=ay.createCapsuleSet}){let i,r=(0,a.useId)(),o=(0,a.useId)(),c=(0,a.useId)(),d=(0,a.useRef)(null),[u,h]=(0,a.useState)(""),[p,m]=(0,a.useState)(new Set),[f,g]=(0,a.useState)(!1),[v,x]=(0,a.useState)(null);function b(e){m(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),null!==v&&x(null)}async function y(e){var t;e.preventDefault();let n=(t=p.size,0===u.trim().length?"Set name is required.":0===t?"Select at least one capsule to combine.":t>16?"A set can hold at most 16 capsules.":null);if(null!==n)return void x(n);g(!0),x(null);try{await s({displayName:u.trim(),capsuleIds:[...p]}),l()}catch(e){x((0,r_.formatError)(e))}finally{g(!1)}}(0,a.useEffect)(()=>{let e=document.activeElement,t=d.current;return null!==t&&rB(t)[0]?.focus(),()=>e?.focus?.()},[d]),(0,a.useEffect)(()=>{let e=d.current;if(null!==e)return e.addEventListener("keydown",n),()=>e.removeEventListener("keydown",n);function n(n){if("Escape"===n.key&&!f){n.preventDefault(),t();return}if("Tab"!==n.key)return;let a=rB(e);if(0===a.length)return void n.preventDefault();let l=a[0],s=a[a.length-1];n.shiftKey&&document.activeElement===l?(n.preventDefault(),s?.focus()):n.shiftKey||document.activeElement!==s||(n.preventDefault(),l?.focus())}},[d,f,t]),i=(0,a.useRef)(!1),(0,a.useEffect)(()=>{let e=d.current;null!==e&&(f?(i.current=!0,e.focus()):i.current&&(i.current=!1,rB(e)[0]?.focus()))},[d,f]);let j="Set name is required."===v,w="Select at least one capsule to combine."===v;return(0,e2.createPortal)((0,n.jsx)("div",{className:"mc-dialog-backdrop",role:"presentation",children:(0,n.jsxs)("div",{ref:d,className:"mc-dialog",role:"dialog","aria-modal":"true","aria-labelledby":r,tabIndex:-1,children:[(0,n.jsx)("h2",{id:r,className:"mc-dialog-title",children:"Combine capsules into a set"}),(0,n.jsxs)("form",{onSubmit:e=>void y(e),children:[(0,n.jsxs)("label",{className:"mc-dialog-field",htmlFor:o,children:[(0,n.jsx)("span",{className:"mc-dialog-label",children:"Set name"}),(0,n.jsx)("input",{id:o,className:"mc-dialog-input",value:u,disabled:f,autoComplete:"off","aria-invalid":j,"aria-describedby":j?c:void 0,onChange:e=>{h(e.target.value),null!==v&&x(null)}})]}),(0,n.jsxs)("fieldset",{className:"lk-compose-fieldset",disabled:f,"aria-invalid":w,"aria-describedby":w?c:void 0,children:[(0,n.jsxs)("legend",{className:"mc-dialog-label",children:["Capsules (",p.size.toString(),"/","16",")"]}),0===e.length?(0,n.jsx)("p",{className:"lkd-empty-note",children:"No capsules available to combine."}):(0,n.jsx)("ul",{className:"lk-compose-member-list","aria-label":"Selectable capsules",children:e.map(e=>(0,n.jsx)(rU,{capsule:e,checked:p.has(e.id),disabled:f,onToggle:b},e.id))})]}),null!==v?(0,n.jsx)("div",{id:c,role:"alert","aria-live":"assertive",className:"mc-dialog-error",children:v}):null,(0,n.jsxs)("div",{className:"mc-dialog-actions",children:[(0,n.jsx)("button",{type:"button",className:"lk-btn lk-btn-ghost",disabled:f,onClick:t,children:"Cancel"}),(0,n.jsx)("button",{type:"submit",className:"lk-btn lk-btn-primary",disabled:f,"aria-busy":f,children:f?"Combining…":"Combine"})]})]})]})}),document.body)}var rH=e.i(80010);function rG({message:e,onRetry:t,onDismiss:a}){return(0,n.jsxs)("div",{role:"alert","aria-live":"assertive",className:"lk-alert",children:[e,void 0!==t?(0,n.jsx)("button",{type:"button",onClick:t,"aria-label":"Retry loading capsules",className:"lk-alert-retry",children:"Retry"}):null,void 0!==a?(0,n.jsx)("button",{type:"button",onClick:a,"aria-label":"Dismiss error message",className:"lk-alert-retry",children:"Dismiss"}):null]})}function rY(e){return Array.from(e.querySelectorAll("button:not([disabled]),input:not([disabled]),textarea:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex='-1'])"))}function rV({busy:e,error:t,onCancel:l,onSubmit:s}){let i=(0,a.useId)(),r=(0,a.useId)(),o=(0,a.useId)(),c=(0,a.useId)(),d=(0,a.useRef)(null),u=(0,a.useRef)(null),h=(0,a.useRef)(null),[p,m]=(0,a.useState)(""),[f,g]=(0,a.useState)(null);(0,a.useEffect)(()=>(h.current=document.activeElement,u.current?.focus(),()=>{h.current?.focus?.()}),[]),(0,a.useEffect)(()=>{let t=d.current;if(null===t)return;let n=n=>{if("Escape"===n.key&&!e){n.preventDefault(),l();return}if("Tab"!==n.key)return;let a=rY(t);if(0===a.length)return void n.preventDefault();let s=a[0],i=a[a.length-1];n.shiftKey&&document.activeElement===s?(n.preventDefault(),i?.focus()):n.shiftKey||document.activeElement!==i||(n.preventDefault(),s?.focus())};return t.addEventListener("keydown",n),()=>t.removeEventListener("keydown",n)},[e,l]);let v=(0,a.useRef)(!1);async function x(e){e.preventDefault();let t=p.trim();0===t.length?g("Capsule display name is required."):(g(null),await s(t))}(0,a.useEffect)(()=>{let t=d.current;null!==t&&(e?(v.current=!0,t.focus()):v.current&&(v.current=!1,rY(t)[0]?.focus()))},[e]);let b=f??t;return(0,e2.createPortal)((0,n.jsx)("div",{className:"mc-dialog-backdrop",role:"presentation",children:(0,n.jsxs)("div",{ref:d,className:"mc-dialog",role:"dialog","aria-modal":"true","aria-labelledby":i,"aria-describedby":r,tabIndex:-1,children:[(0,n.jsx)("h2",{id:i,className:"mc-dialog-title",children:"Create capsule"}),(0,n.jsx)("p",{id:r,className:"mc-dialog-body",children:"Name the capsule. After creating it, connect a source and start indexing from the capsule page."}),(0,n.jsxs)("form",{onSubmit:e=>void x(e),children:[(0,n.jsxs)("label",{className:"mc-dialog-field",htmlFor:o,children:[(0,n.jsx)("span",{className:"mc-dialog-label",children:"Capsule display name"}),(0,n.jsx)("input",{id:o,ref:u,className:"mc-dialog-input",value:p,disabled:e,autoComplete:"off","aria-invalid":null!==b,"aria-describedby":null!==b?c:void 0,onChange:e=>{m(e.target.value),null!==f&&g(null)}})]}),null!==b?(0,n.jsx)("div",{id:c,role:"alert","aria-live":"assertive",className:"mc-dialog-error",children:b}):null,(0,n.jsxs)("div",{className:"mc-dialog-actions",children:[(0,n.jsx)("button",{type:"button",className:"lk-btn lk-btn-ghost",disabled:e,onClick:l,children:"Cancel"}),(0,n.jsx)("button",{type:"submit",className:"lk-btn lk-btn-primary",disabled:e,children:e?"Creating…":"Create capsule"})]})]})]})}),document.body)}function rQ({capsuleName:e,onCancel:t,onConfirm:l}){let s=(0,a.useId)(),i=(0,a.useId)(),r=(0,a.useRef)(null);return(0,a.useEffect)(()=>{let e=document.activeElement,t=r.current;return null!==t&&rY(t)[0]?.focus(),()=>e?.focus?.()},[]),(0,a.useEffect)(()=>{let e=r.current;if(null===e)return;let n=n=>{if("Escape"===n.key){n.preventDefault(),t();return}if("Tab"!==n.key)return;let a=rY(e);if(0===a.length)return void n.preventDefault();let l=a[0],s=a[a.length-1];n.shiftKey&&document.activeElement===l?(n.preventDefault(),s?.focus()):n.shiftKey||document.activeElement!==s||(n.preventDefault(),l?.focus())};return e.addEventListener("keydown",n),()=>e.removeEventListener("keydown",n)},[t]),(0,e2.createPortal)((0,n.jsx)("div",{className:"mc-dialog-backdrop",role:"presentation",children:(0,n.jsxs)("div",{ref:r,className:"mc-dialog",role:"dialog","aria-modal":"true","aria-labelledby":s,"aria-describedby":i,tabIndex:-1,children:[(0,n.jsx)("h2",{id:s,className:"mc-dialog-title",children:"Disconnect capsule"}),(0,n.jsxs)("p",{id:i,className:"mc-dialog-body",children:['Disconnect "',e,'"? The capsule keeps its index, but the source link is removed.']}),(0,n.jsxs)("div",{className:"mc-dialog-actions",children:[(0,n.jsx)("button",{type:"button",className:"lk-btn lk-btn-ghost",onClick:t,children:"Cancel"}),(0,n.jsx)("button",{type:"button",className:"lk-btn lk-btn-danger",onClick:l,children:"Disconnect"})]})]})}),document.body)}function rX(){return(0,n.jsx)("svg",{"aria-hidden":"true",focusable:"false",width:"40",height:"24",viewBox:"0 0 40 24",style:{flexShrink:0,alignSelf:"center"},children:(0,n.jsx)("path",{d:"M2 12 H32 M28 6 L38 12 L28 18",stroke:"var(--accent)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",fill:"none",opacity:"0.7"})})}let rJ={"files-window":"📂","local-knowledge":"🧠","capsule-pool":"⬡","conversation-center":"💬"};function rZ({kind:e,label:t,sublabel:a,connected:l=!1}){return(0,n.jsxs)("div",{className:"lk-node","data-connected":String(l),children:[(0,n.jsx)("span",{"aria-hidden":"true",className:"lk-node-icon",children:rJ[e]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{className:"lk-node-label",children:[t,l?(0,n.jsx)("span",{"aria-hidden":"true",className:"lk-node-tick",children:"✓"}):null]}),void 0!==a?(0,n.jsx)("div",{className:"lk-node-sub",children:a}):null,(0,n.jsx)("span",{className:"visually-hidden",children:l?"Connected":"Not connected"})]})]})}function r0({children:e}){return(0,n.jsx)("div",{role:"listitem",style:{display:"flex",alignItems:"center",gap:8,flexShrink:0},children:e})}function r1({capsules:e,isLoading:t}){var a;let l=e.some(e=>"ready"===e.lifecycleState),s=e.length>0;return(0,n.jsx)("section",{"aria-label":"Connector pipeline diagram",style:{flexShrink:0},children:(0,n.jsxs)("div",{role:"list","aria-label":"Pipeline nodes",className:"lk-pipeline",children:[(0,n.jsxs)(r0,{children:[(0,n.jsx)(rZ,{kind:"files-window",label:"Files Window",sublabel:"Source",connected:s}),(0,n.jsx)(rX,{})]}),(0,n.jsxs)(r0,{children:[(0,n.jsx)(rZ,{kind:"local-knowledge",label:"Local Knowledge",sublabel:"Connector",connected:s}),(0,n.jsx)(rX,{})]}),(0,n.jsxs)(r0,{children:[(0,n.jsx)(rZ,{kind:"capsule-pool",label:"Capsules",sublabel:(a=e.length,t?"Loading…":0===a?"No capsules":`${a.toString()} capsule${1===a?"":"s"}`),connected:s}),(0,n.jsx)(rX,{})]}),(0,n.jsx)(r0,{children:(0,n.jsx)(rZ,{kind:"conversation-center",label:"Conversation Center",sublabel:"Consumer",connected:l})})]})})}function r2({state:e}){return(0,n.jsx)("span",{className:"lk-badge","data-state":e,children:rO.STATUS_LABELS[e]})}function r4({capsule:e,busy:t,busyKind:l,onStart:s,onCancel:i}){let{id:r,displayName:o,lifecycleState:c,sourceCount:d}=e,u=(0,a.useId)();if("indexing"===c)return(0,n.jsx)("button",{type:"button",disabled:t,"aria-busy":"cancel"===l,"aria-label":`Cancel indexing for capsule ${o}`,onClick:()=>{i(r)},className:"lk-btn lk-btn-ghost",children:"cancel"===l?"Cancelling…":"Cancel"});let h=d>0;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",disabled:t,"aria-disabled":!h||void 0,"aria-busy":"index"===l,"aria-label":`Start indexing capsule ${o}`,"aria-describedby":h?void 0:u,title:h?void 0:"Attach a source before indexing this capsule.",onClick:()=>{h&&s(r)},className:"lk-btn lk-btn-primary",children:"index"===l?"Indexing…":"Index"}),h?null:(0,n.jsx)("span",{id:u,className:"visually-hidden",children:"Attach a source before indexing."})]})}function r3({capsule:e,busy:t,busyKind:a,onStart:l,onCancel:s,onDisconnect:i,onHealth:r}){let{id:o,displayName:c}=e;return(0,n.jsxs)("div",{role:"group","aria-label":`Actions for capsule ${c}`,className:"lk-capsule-actions",children:[(0,n.jsx)(r4,{capsule:e,busy:t,busyKind:a,onStart:l,onCancel:s}),(0,n.jsx)("button",{type:"button",disabled:t,"aria-label":`Open details for capsule ${c}`,onClick:()=>{r(o)},className:"lk-btn lk-btn-ghost",children:"Details"}),(0,n.jsx)("button",{type:"button",disabled:t,"aria-busy":"disconnect"===a,"aria-label":`Disconnect capsule ${c}`,onClick:()=>{i(o)},className:"lk-btn lk-btn-danger",children:"disconnect"===a?"Disconnecting…":"Disconnect"})]})}function r5(e){return e instanceof Element&&null!==e.closest(".lk-capsule-actions,a,input,select,textarea")}function r6(e,t){let n=document.elementFromPoint(e,t);return n instanceof Element&&null!==n.closest("main.workspace")&&null===n.closest(".window")}function r8({capsule:e,busy:t,busyKind:l,onStart:s,onCancel:i,onDisconnect:r,onHealth:o}){let[c,d]=(0,a.useState)(null),u=(0,a.useRef)(!1),h=(0,a.useRef)(!1),p={kind:"capsule",id:e.id,label:e.displayName,lifecycleState:e.lifecycleState},m=e=>{if(!h.current){let t;h.current=!0,t={payload:p,clientX:e.clientX,clientY:e.clientY},window.dispatchEvent(new CustomEvent(eV,{detail:t})),window.setTimeout(()=>{h.current=!1},250)}},f=(t,n)=>{u.current=!0;let a=!1,l=l=>{let s=l.clientX-t,i=l.clientY-n;!a&&6>Math.hypot(s,i)||(a=!0,document.body.style.cursor="grabbing",d({x:l.clientX,y:l.clientY,label:e.displayName,state:e.lifecycleState}))},s=e=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",s),window.removeEventListener("mousemove",l),window.removeEventListener("mouseup",s),u.current=!1,document.body.style.cursor="",d(null),a&&r6(e.clientX,e.clientY)&&m(e)};window.addEventListener("pointermove",l),window.addEventListener("pointerup",s),window.addEventListener("mousemove",l),window.addEventListener("mouseup",s)};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("article",{"aria-label":`Capsule: ${e.displayName}`,className:"lk-capsule-row",children:[(0,n.jsxs)("button",{type:"button",className:"lk-capsule-drag-handle","aria-label":`Drag capsule ${e.displayName} to workspace`,title:"Drag to the workspace to create a connector card",onPointerDown:e=>{r5(e.target)||(e.stopPropagation(),0===e.button&&(e.preventDefault(),f(e.clientX,e.clientY)))},onMouseDown:e=>{u.current||r5(e.target)||(e.stopPropagation(),0===e.button&&(e.preventDefault(),f(e.clientX,e.clientY)))},onDragStart:t=>{r5(t.target)?t.preventDefault():(t.dataTransfer.effectAllowed="copy",t.dataTransfer.setData(eY,JSON.stringify(p)),t.dataTransfer.setData("text/plain",e.displayName))},onDragEnd:e=>{r6(e.clientX,e.clientY)&&m(e)},draggable:!0,children:[(0,n.jsx)("span",{"aria-hidden":"true",className:"lk-capsule-icon",children:"⬡"}),(0,n.jsxs)("span",{className:"lk-capsule-info",children:[(0,n.jsx)("span",{className:"lk-capsule-name",title:e.displayName,children:e.displayName}),(0,n.jsx)(r2,{state:e.lifecycleState})]})]}),(0,n.jsx)(r3,{capsule:e,busy:t,busyKind:l,onStart:s,onCancel:i,onDisconnect:r,onHealth:o})]}),null!==c?(0,e2.createPortal)((0,n.jsxs)("div",{className:"lk-connector-drag-ghost",style:{left:c.x+14,top:c.y+14},"aria-hidden":"true",children:[(0,n.jsx)("span",{className:"lk-connector-drag-ghost-icon",children:"▣"}),(0,n.jsxs)("span",{className:"lk-connector-drag-ghost-copy",children:[(0,n.jsx)("span",{children:c.label}),(0,n.jsx)("small",{children:rO.STATUS_LABELS[c.state]})]})]}),document.body):null]})}function r9({creating:e,onCreateCapsule:t}){return(0,n.jsxs)("div",{"data-testid":"empty-state",className:"lk-empty",children:[(0,n.jsx)("span",{"aria-hidden":"true",className:"lk-empty-icon",children:"⬡"}),(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"lk-empty-title",children:"No capsules yet"}),(0,n.jsx)("p",{className:"lk-empty-body",children:"Create a capsule to start indexing your local knowledge sources."})]}),(0,n.jsx)("button",{type:"button",disabled:e,"aria-label":"Create your first knowledge capsule",onClick:t,className:"lk-btn lk-btn-primary lk-btn-xl",children:e?"Creating…":"Create your first capsule"})]})}function r7({capsules:e,isLoading:t,creating:a,actionBusy:l,actionKind:s,onCreateCapsule:i,onStartIndexing:r,onCancelIndexing:o,onDisconnect:c,onOpenHealth:d}){return t?(0,n.jsx)("p",{role:"status","aria-live":"polite",className:"lk-loading",children:"Loading capsules…"}):0===e.length?(0,n.jsx)(r9,{creating:a,onCreateCapsule:i}):(0,n.jsx)("ul",{"aria-label":"Knowledge capsule list",style:{display:"flex",flexDirection:"column",gap:8,listStyle:"none",padding:0,margin:0},children:e.map(e=>(0,n.jsx)("li",{style:{display:"block"},children:(0,n.jsx)(r8,{capsule:e,busy:l===e.id,busyKind:l===e.id?s:null,onStart:r,onCancel:o,onDisconnect:c,onHealth:d})},e.id))})}function oe({creating:e,createDialogOpen:t,combineDialogOpen:l,combineDisabled:s,showBackToWorkspace:i,loadStatus:r,loadError:o,actionError:c,createError:d,reload:u,onCreateCapsule:h,onCombineCapsules:p,onDismissCreateError:m,onDismissActionError:f}){let g=(0,a.useId)();return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("header",{className:"lk-header",children:[(0,n.jsx)("h1",{className:"lk-title",children:"Local Knowledge Connector"}),(0,n.jsxs)("div",{className:"lk-header-actions",children:[i?(0,n.jsx)(L.default,{href:"/",className:"lk-btn lk-btn-ghost lk-btn-lg",children:"Back to Workspace"}):null,(0,n.jsx)("button",{type:"button","aria-disabled":s,"aria-describedby":s?g:void 0,"aria-label":"Combine capsules into a set","aria-haspopup":"dialog","aria-expanded":l,title:s?"Create capsules first, then combine them into a set.":void 0,onClick:()=>{s||p()},className:"lk-btn lk-btn-ghost lk-btn-lg",children:"Combine capsules"}),s?(0,n.jsx)("span",{id:g,className:"visually-hidden",children:"Create capsules first, then combine them into a set."}):null,(0,n.jsx)("button",{type:"button",disabled:e,"aria-label":"Create a new knowledge capsule","aria-haspopup":"dialog","aria-expanded":t,onClick:h,className:"lk-btn lk-btn-primary lk-btn-lg",children:e?"Creating…":"Create capsule"})]})]}),"error"===r&&null!==o?(0,n.jsx)(rG,{message:o,onRetry:u}):null,null===d||t?null:(0,n.jsx)(rG,{message:d,onDismiss:m}),null!==c?(0,n.jsx)(rG,{message:c,onDismiss:f}):null]})}function ot(e){let t,l,{onOpenCapsule:s,showBackToWorkspace:i=!0}=e,[r,o]=(0,a.useState)(null),c=(0,a.useCallback)(e=>{void 0!==s?s(e):o(e)},[s]),{capsules:d,loadStatus:u,loadError:h,actionBusy:p,actionKind:m,actionError:f,creating:g,createError:v,reload:x,clearCreateError:b,clearActionError:y,handleStartIndexing:j,handleCancelIndexing:w,handleDisconnect:k,handleOpenHealth:N,handleCreateCapsule:S}=function(e){let{fetchCapsulesImpl:t=ay.fetchCapsules,createCapsuleImpl:n=ay.createCapsule,startIndexingImpl:l=ay.startIndexing,cancelIndexingImpl:s=ay.cancelIndexing,disconnectCapsuleImpl:i=ay.disconnectCapsule,onOpenCapsule:r}=e,{capsules:o,loadStatus:c,loadError:d,reload:u}=function(e){let[t,n]=(0,a.useState)([]),[l,s]=(0,a.useState)("loading"),[i,r]=(0,a.useState)(null),o=(0,a.useCallback)(async()=>{s("loading"),r(null);try{let t=await e();n(t.capsules),s("ready")}catch(e){r((0,r_.formatError)(e)),s("error")}},[e]);return(0,a.useEffect)(()=>{o()},[o]),{capsules:t,loadStatus:l,loadError:i,reload:function(){o()}}}(t),{actionBusy:h,actionKind:p,actionError:m,clearActionError:f,handleStartIndexing:g,handleCancelIndexing:v,handleDisconnect:x,handleOpenHealth:b}=function(e,t,n,l,s){let i=(0,rK.useRouter)(),[r,o]=(0,a.useState)(null),[c,d]=(0,a.useState)(null),[u,h]=(0,a.useState)(null);async function p(t,n,a){o(t),d(n),h(null);try{await a(),e()}catch(e){h((0,r_.formatError)(e))}finally{o(null),d(null)}}return{actionBusy:r,actionKind:c,actionError:u,clearActionError:function(){h(null)},handleStartIndexing:function(e){p(e,"index",()=>t(e))},handleCancelIndexing:function(e){p(e,"cancel",()=>n(e))},handleDisconnect:function(e){p(e,"disconnect",()=>l(e))},handleOpenHealth:function(e){void 0!==s?s(e):i.push(`/local-knowledge/capsule?capsuleId=${encodeURIComponent(e)}`)}}}(u,l,s,i,r),{creating:y,createError:j,clearCreateError:w,handleCreateCapsule:k}=function(e,t){let[n,l]=(0,a.useState)(!1),[s,i]=(0,a.useState)(null);return{creating:n,createError:s,clearCreateError:function(){i(null)},handleCreateCapsule:async function n(n){l(!0),i(null);try{await e({displayName:n}),t()}catch(e){i((0,r_.formatError)(e))}finally{l(!1)}}}}(n,u);return{capsules:o,loadStatus:c,loadError:d,actionBusy:h,actionKind:p,actionError:m,creating:y,createError:j,reload:u,clearCreateError:w,clearActionError:f,handleStartIndexing:g,handleCancelIndexing:v,handleDisconnect:x,handleOpenHealth:b,handleCreateCapsule:k}}({...e,onOpenCapsule:c}),C="loading"===u,[I,E]=(0,a.useState)(!1),[R,$]=(0,a.useState)(!1),[T,A]=(0,a.useState)(null);async function L(e){try{await S(e),E(!1)}catch{}}return null!==r&&void 0===s?(0,n.jsxs)("div",{className:"lk-page",children:[(0,n.jsx)("button",{type:"button",className:"lk-btn lk-btn-ghost lk-btn-lg lk-back-inline",onClick:()=>{o(null),x()},children:"Back to capsules"}),(0,n.jsx)(rH.CapsuleDetail,{capsuleId:r,onDeleted:()=>{o(null),x()}})]}):(0,n.jsxs)("div",{className:"lk-page",children:[(0,n.jsx)(oe,{creating:g,createDialogOpen:I,combineDialogOpen:R,combineDisabled:C||0===d.length,showBackToWorkspace:i,loadStatus:u,loadError:h,actionError:f,createError:v,reload:x,onCreateCapsule:()=>E(!0),onCombineCapsules:()=>$(!0),onDismissCreateError:b,onDismissActionError:y}),(0,n.jsx)(r1,{capsules:d,isLoading:C}),(0,n.jsx)("p",{role:"status",className:"visually-hidden",children:C||null!==h?null:(t=d.filter(e=>"indexing"===e.lifecycleState).length,l=`${d.length.toString()} capsule${1===d.length?"":"s"}`,t>0?`${l}, ${t.toString()} indexing`:l)}),(0,n.jsxs)("section",{"aria-label":"Knowledge capsules","aria-busy":C,style:{flex:1,minHeight:0,overflowY:"auto"},children:[(0,n.jsx)("h2",{className:"lk-section-head",children:"Knowledge Capsules"}),(0,n.jsx)(r7,{capsules:d,isLoading:C,creating:g,actionBusy:p,actionKind:m,onCreateCapsule:()=>E(!0),onStartIndexing:j,onCancelIndexing:w,onDisconnect:e=>A(d.find(t=>t.id===e)??null),onOpenHealth:N})]}),I?(0,n.jsx)(rV,{busy:g,error:v,onCancel:()=>{E(!1),b()},onSubmit:L}):null,R?(0,n.jsx)(rW,{capsules:d,onCancel:()=>$(!1),onCreated:function(){$(!1),x()}}):null,null!==T?(0,n.jsx)(rQ,{capsuleName:T.displayName,onCancel:()=>A(null),onConfirm:()=>{k(T.id),A(null)}}):null]})}function on(e,t){let n=e[t];return"string"==typeof n?n:void 0}function oa({cfg:e,ctx:t}){let l=tG({autoCreate:!1}),i=(0,a.useRef)(!1),r=on(e,"chatId"),o=on(e,"title"),{updateCfg:c}=t,{activeChat:d,chats:u,loading:h,openChat:p,openNewChat:m}=l,f=void 0!==d&&"closed"!==d.status?d:void 0;(0,a.useEffect)(()=>{if(!h){if(void 0!==r){if(f?.id===r)return;let e=u.find(e=>e.id===r&&"closed"!==e.status);void 0!==e&&p(e);return}i.current||(i.current=!0,m(void 0,o).then(e=>{void 0!==e&&c({chatId:e.id,title:e.title})}).finally(()=>{i.current=!1}))}},[r,f?.id,u,h,p,m,o,c]);let g=void 0!==r&&!l.loading&&f?.id!==r&&!l.chats.some(e=>e.id===r&&"closed"!==e.status),v=l.loading||void 0!==r&&f?.id!==r;return(0,n.jsx)(s,{value:l,children:g?(0,n.jsxs)("div",{className:"lk-empty",children:[(0,n.jsx)("p",{className:"lk-empty-title",children:"Chat not found"}),(0,n.jsx)("p",{className:"lk-empty-body",children:"This conversation was deleted or is no longer available."})]}):v?(0,n.jsx)("div",{className:"lk-loading",children:"Opening chat..."}):(0,n.jsx)(aV,{mini:!0===t.mini,linkedRoot:t.linkedRoot})})}ea("chat",(e,t)=>(0,n.jsx)(oa,{cfg:e,ctx:t})),ea("chatHistory",(e,t)=>(0,n.jsx)(aJ,{openChatWindow:e=>{t.openWindow("chat",{chatId:e.id,title:e.title})}})),ea("project",()=>(0,n.jsx)(aX,{})),ea("search",()=>(0,n.jsx)(aZ,{})),ea("plugins",()=>(0,n.jsx)(a4,{})),ea("automations",()=>(0,n.jsx)(a9,{})),ea("mobile",()=>(0,n.jsx)(a7,{})),ea("inspector",()=>(0,n.jsx)(le,{})),ea("notifications",()=>(0,n.jsx)(ln,{})),ea("resources",()=>(0,n.jsx)(la,{})),ea("activity",()=>(0,n.jsx)(li,{})),ea("keiko",()=>(0,n.jsx)(si,{})),ea("settings",()=>(0,n.jsx)(sp,{})),ea("localKnowledge",()=>(0,n.jsx)(ot,{showBackToWorkspace:!1})),ea("quality",(e,t)=>(0,n.jsx)(ii,{openRun:(e,n)=>{let a,l=void 0!==n&&n.length>0?{connectedSourcesJson:JSON.stringify(n)}:(a=s9({connectedFilePath:t.linkedFilePath??null,connectedRoot:t.linkedRoot,connectedRoots:t.linkedRoots,connectedCapsuleIds:t.linkedCapsuleIds,connectedCapsuleSetIds:t.linkedCapsuleSetIds,connectedFigmaSnapshotRunIds:t.linkedFigmaSnapshotRunIds})).length>0?{connectedSourcesJson:JSON.stringify(a)}:{};t.openWindow("qiRun",{runId:e,...l})},connectedRoot:t.linkedRoot,connectedFilePath:t.linkedFilePath??null,connectedRoots:t.linkedRoots,connectedCapsuleIds:t.linkedCapsuleIds,connectedCapsuleSetIds:t.linkedCapsuleSetIds,connectedFigmaSnapshotRunIds:t.linkedFigmaSnapshotRunIds})),ea("qiRun",(e,t)=>{let a=on(e,"runId");if(void 0===a||""===a)return(0,n.jsx)("div",{className:"lk-empty",children:(0,n.jsx)("p",{className:"lk-empty-body",children:"Open a run from the Quality Intelligence hub."})});let l=function(e){let t=on(e,"connectedSourcesJson");if(void 0!==t&&t.length>0)try{let e=JSON.parse(t);if(Array.isArray(e))return e}catch{}return s9({connectedFilePath:on(e,"connectedFilePath")??null,connectedRoot:on(e,"connectedRoot")??null})}(e),s=on(e,"connectedSourcesJson");return(0,n.jsx)(iX,{runId:a,connectedSources:l,onRegenerated:e=>{t.openWindow("qiRun",{runId:e.runId,...void 0!==s&&s.length>0?{connectedSourcesJson:s}:{}})}})}),ea("relationships",()=>(0,n.jsx)(rz,{})),ea("files",(e,t)=>{let a=on(e,"root"),l=(e,n,a)=>{let l={activeFilePath:e??void 0,resolvedRoot:n??void 0};void 0!==a&&(l.activeDirectoryPath=a??void 0),t.updateCfg(l)},s=e=>{t.updateCfg({root:e,activeFilePath:void 0,activeDirectoryPath:void 0,resolvedRoot:void 0})},i=(e,n)=>{t.openWindow("editor",{root:e,file:n})};return void 0!==a?(0,n.jsx)(ly,{root:a,onActiveFileChange:l,onRootChange:s,onOpenFile:i}):(0,n.jsx)(ly,{onActiveFileChange:l,onRootChange:s,onOpenFile:i})}),ea("editor",e=>{let t=on(e,"root"),a=on(e,"file"),l={};return void 0!==t&&(l.root=t),void 0!==a&&(l.file=a),(0,n.jsx)(lk,{...l})}),ea("browser",e=>{let t=on(e,"url");return void 0!==t&&""!==t?(0,n.jsx)(lL,{url:t}):(0,n.jsx)(lL,{})}),ea("terminal",e=>{let t=on(e,"cwd"),a=on(e,"projectPath"),l={};return void 0!==t&&(l.cwd=t),void 0!==a&&(l.projectPath=a),(0,n.jsx)(lO,{...l})}),ea("review",(e,t)=>{let a=on(e,"runId"),l=e=>{t.updateCfg({runId:e})};return void 0!==a&&""!==a?(0,n.jsx)(lQ,{runId:a,onRunIdSubmit:l}):(0,n.jsx)(lQ,{onRunIdSubmit:l})}),ea("agents",(e,t)=>{var a;let l,s,i,r,o,c,d,u,h,p,m;return(0,n.jsx)(l2,{cfg:(i={},void 0!==(r=on(a=e,"workflow"))&&(i.workflow=r),void 0!==(o=on(a,"model"))&&(i.model=o),void 0!==(c=on(a,"runId"))&&(i.runId=c),void 0!==(d=on(a,"fingerprint"))&&(i.fingerprint=d),void 0!==(u=on(a,"workspaceRoot"))&&(i.workspaceRoot=u),void 0!==(h=on(a,"inputJson"))&&(i.inputJson=h),void 0!==(p="boolean"==typeof(l=a.keikoMode)?l:void 0)&&(i.keikoMode=p),void 0!==(m="ask"===(s=a.access)||"full"===s?s:void 0)&&(i.access=m),i),linkedRoot:t.linkedRoot,linkedFilePath:t.linkedFilePath})}),ea("integ",()=>(0,n.jsx)(l3,{})),ea("figma",(e,t)=>{let a=on(e,"snapshotRunId");return(0,n.jsx)(sL,{snapshotRunId:a,updateCfg:e=>{t.updateCfg(e)}})}),ea("connector",(e,t)=>{let a=on(e,"presentation"),l=on(e,"selectedKind"),s=on(e,"selectedId"),i=on(e,"selectedLabel"),r=on(e,"selectedState");return(0,n.jsx)(sy,{presentation:a,selectedKind:l,selectedId:s,selectedLabel:i,selectedState:r,onSelect:e=>{t.updateCfg(e)},onManageConnectors:()=>{t.openWindow("localKnowledge")}})});let ol={supported:{heading:"Install Keiko",body:"Keep Keiko in your app shelf for fast access.",install:"Install Keiko"},"ios-add-to-home":{heading:"Install Keiko",body:'On iOS Safari, tap Share, then "Add to Home Screen".',install:null}};function os(){let{available:e,triggerInstall:t}=function(){let[e,t]=(0,a.useState)(!1),n=(0,a.useRef)(null);return(0,a.useEffect)(()=>{let e=e=>{e.preventDefault(),function(e){if("function"!=typeof e.prompt)return!1;let t=e.userChoice;return"object"==typeof t&&null!==t&&"function"==typeof t.then}(e)&&(n.current=e,t(!0))},a=()=>{localStorage.setItem("keiko.pwa.installed","true"),n.current=null,t(!1)};return window.addEventListener("beforeinstallprompt",e,{passive:!1}),window.addEventListener("appinstalled",a),()=>{window.removeEventListener("beforeinstallprompt",e),window.removeEventListener("appinstalled",a)}},[]),{available:e,triggerInstall:(0,a.useCallback)(async()=>{let e=n.current;if(null===e)return;await e.prompt();let{outcome:a}=await e.userChoice;"accepted"===a&&localStorage.setItem("keiko.pwa.installed","true"),n.current=null,t(!1)},[])}}(),[l,s]=(0,a.useState)(!1),[i]=(0,a.useState)(()=>{let e;return"u">typeof navigator?(e=navigator.userAgent.toLowerCase()).includes("crios/")?"manual":e.includes("chrome/")&&!e.includes("mobile")||e.includes("edg/")||e.includes("chromium/")?"supported":e.includes("firefox/")?"manual":e.includes("safari/")&&(e.includes("iphone")||e.includes("ipad")||e.includes("ipod"))?"ios-add-to-home":(e.includes("safari/")&&e.includes("macintosh"),"manual"):"manual"}),r=(0,a.useRef)(null),o=(0,a.useCallback)(()=>{localStorage.setItem("keiko.pwa.dismissed",new Date().toISOString()),s(!0)},[]),c=(0,a.useCallback)(async()=>{await t()},[t]),d=(0,a.useCallback)(e=>{"Escape"!==e.key||e.defaultPrevented||o()},[o]);if(l||window.matchMedia("(display-mode: standalone)").matches||"true"===localStorage.getItem("keiko.pwa.installed")||function(){let e=localStorage.getItem("keiko.pwa.dismissed");if(null===e)return!1;let t=Date.parse(e);return!!Number.isNaN(t)||Date.now()-t<2592e6}()||"supported"===i&&!e||"supported"!==i&&"ios-add-to-home"!==i)return null;let u=ol[i];return(0,n.jsx)("aside",{className:"install-banner",role:"region","aria-label":"Install Keiko",onKeyDown:d,children:(0,n.jsxs)("div",{className:"install-banner-body",children:[(0,n.jsxs)("div",{className:"install-banner-text",children:[(0,n.jsx)("span",{className:"install-banner-heading",children:u.heading}),(0,n.jsx)("span",{className:"install-banner-desc",children:u.body})]}),(0,n.jsxs)("div",{className:"install-banner-actions",children:[null!==u.install&&(0,n.jsx)("button",{ref:r,type:"button",className:"install-banner-btn-install",onClick:()=>void c(),children:u.install}),(0,n.jsx)("button",{type:"button",className:"install-banner-btn-dismiss",onClick:o,children:"Not now"})]})]})})}function oi(e){return null===e||void 0===e.root?null:[e.root.replace(/\\/gu,"/").replace(/\/+$/u,""),e.kind,...e.relativePaths.map(e=>e.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,""))].join("\0")}let or=["chat","connector","figma","files","editor","browser","terminal","review","agents","integ"],oo=["chatHistory","keiko","settings","project","search","plugins","automations","mobile","inspector","activity","notifications","resources","localKnowledge","quality","relationships"];function oc(){var e,t,l,i;let r,{theme:o,toggle:c}=function(){let[e,t]=(0,a.useState)(tV),[n,l]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{t(function(){try{let e=window.localStorage.getItem(tY);return"light"===e||"dark"===e?e:tV}catch{return tV}}()),l(!0)},[]),(0,a.useEffect)(()=>{if(n){"u">typeof document&&(document.documentElement.dataset.theme=e);try{window.localStorage.setItem(tY,e)}catch{}}},[e,n]),{theme:e,toggle:(0,a.useCallback)(()=>{t(e=>"light"===e?"dark":"light")},[])}}(),d=j(),u=tG({autoCreate:!1}),h=(0,a.useRef)(null),p=(0,a.useRef)(null),[m,f]=(0,a.useState)(tQ.DEFAULT_GROUNDING_LIMITS);(0,a.useEffect)(()=>{(0,e4.fetchConfig)().then(e=>f(e.effectiveGroundingLimits)).catch(()=>void 0)},[]);let[g,v]=(0,a.useState)(null);(0,a.useEffect)(()=>{if(null===g)return;let e=window.setTimeout(()=>v(null),1e4);return()=>window.clearTimeout(e)},[g]);let x=(0,a.useCallback)((e,t)=>(v(`Source limit reached — this chat already has ${String(e)} of ${String(t)} connected sources. Disconnect a source before connecting another.`),!1),[]),b=(0,a.useCallback)(e=>(v(e),!1),[]),y=(0,a.useCallback)(e=>{let t=function(e){if(e?.type!=="chat")return;let t=e.cfg.chatId;return"string"==typeof t&&t.length>0?t:void 0}(p.current?.find(t=>t.id===e));if(void 0===t)return;let n=u.chats.find(e=>e.id===t)??(u.activeChat?.id===t?u.activeChat:void 0);return n?.status==="closed"?void 0:n},[u.activeChat,u.chats]),k=(0,a.useCallback)(async(e,t,n=null)=>{var a;let l=y(e);if(void 0===l)return b("Open a ready chat window before connecting a source.");let s=null===n?eq(l):eL(eq(l),n),i=eP(l);if(s.some(e=>eR(e,t))){if(null!==n){let e=await (0,e4.updateChatConnectedScopes)(l.id,s.length>0?s:null);u.replaceChat(e.chat)}return!0}let r=eA(m);if(s.length+i.length>=r)return x(s.length+i.length,r);let o={...t,connectedAtMs:Date.now()},c=function(e,t,n=16){if(void 0===t.root)return null;let a=eC(t.root);if(!eS(a))return null;let l=t.relativePaths.map(eE),s={kind:t.kind,relativePaths:l,root:a,connectedAtMs:t.connectedAtMs};return e.some(e=>eR(e,s))||e.length>=n?e:[...e,s]}(s,o,m.maxConnectedSources);if(null===c)return b("Choose a local folder before connecting it to chat.");if(c===s)return x(s.length+i.length,r);try{let e=await (0,e4.updateChatConnectedScopes)(l.id,c);u.replaceChat(e.chat),v(null);let t=function(e){if(void 0===e.root)return null;let t=e.relativePaths[0]?.replace(/\\/gu,"/").replace(/^\/+/u,"");if(void 0===t||0===t.length)return e.root;let n=e.root.replace(/\\/gu,"/").replace(/\/+$/u,"");return`${n}/${t}`}(o);return null!==t&&(a=l.id,0!==a.length&&0!==t.length&&t9({type:"reads-context",source:{kind:"chat",id:a},target:{kind:"workspace-path",id:t}},function(e,t){let n=0x811c9dc5,a=`${e}|${t}`;for(let e=0;e<a.length;e+=1)n=Math.imul(n^a.charCodeAt(e),0x1000193);return`rc-${(n>>>0).toString(36)}-${(65535&a.length).toString(36)}`}(a,t)).catch(e=>{})),!0}catch{return b("Keiko could not connect that source. Check that it is still available and try again.")}},[y,u,m,x,b]),S=function(e,t={}){var n,l,s,i,r,o;let[c,d]=(0,a.useState)(null),[u,h]=(0,a.useState)(null),[p,m]=(0,a.useState)(!1),[f,g]=(0,a.useState)([]),[v,x]=(0,a.useState)(null),[b,y]=(0,a.useState)(e_),j=(0,a.useRef)(3),w=(0,a.useRef)(null),k=(0,a.useRef)([]);k.current=c??[];let N=(0,a.useRef)([]);N.current=f;let S=(0,a.useRef)(null);S.current=v;let C=(0,a.useRef)(null),I=(0,a.useRef)(()=>void 0),{viewRef:E,worldVP:R,zoomTo:$,resetView:T,panBy:A,rect:L}=function({wsRef:e,view:t,setView:n}){let l=(0,a.useRef)(t);l.current=t,(0,a.useEffect)(()=>{eH(eK,t)},[t]),(0,a.useEffect)(()=>{let t=e.current;if(null===t)return;let a=e=>{if(e.metaKey||e.ctrlKey){e.preventDefault();let a=t.getBoundingClientRect(),s=l.current,i=eB(s.zoom*Math.exp(-(.0015*e.deltaY))),r=(e.clientX-a.left-s.x)/s.zoom,o=(e.clientY-a.top-s.y)/s.zoom;n({zoom:i,x:e.clientX-a.left-r*i,y:e.clientY-a.top-o*i});return}let a=e.target;a instanceof Element&&null!==a.closest(".window")||(e.preventDefault(),n(t=>({...t,x:t.x-e.deltaX,y:t.y-e.deltaY})))};return t.addEventListener("wheel",a,{passive:!1}),()=>{t.removeEventListener("wheel",a)}},[e,n]);let s=(0,a.useCallback)(()=>null===e.current?null:e.current.getBoundingClientRect(),[e]),i=(0,a.useCallback)(()=>{let e=s();if(null===e)return null;let t=l.current;return{x:-t.x/t.zoom,y:-t.y/t.zoom,w:e.width/t.zoom,h:e.height/t.zoom}},[s]),r=(0,a.useCallback)(e=>{let t=s();if(null===t)return;let a=l.current,i=t.width/2,r=t.height/2,o=(i-a.x)/a.zoom,c=(r-a.y)/a.zoom,d=eB(e);n({zoom:d,x:i-o*d,y:r-c*d})},[s,n]);return{viewRef:l,worldVP:i,zoomTo:r,resetView:(0,a.useCallback)(()=>n({zoom:1,x:0,y:0}),[n]),panBy:(0,a.useCallback)((e,t)=>n(n=>({...n,x:n.x+e,y:n.y+t})),[n]),rect:s}}({wsRef:e,view:b,setView:y});!function({wsRef:e,setWins:t,setConns:n,zc:l}){(0,a.useLayoutEffect)(()=>{let a=e.current;if(null===a)return;a.getBoundingClientRect();let s=null;try{s=function(e){if(null===e)return null;try{let t=JSON.parse(e);if(!Array.isArray(t)||0===t.length)return null;let n=eb(t);return n.length>0?n:null}catch{return null}}(window.localStorage.getItem(ez))}catch{s=null}null===s&&(s=[]),l.current=0===s.length?1:Math.max(1,...s.map(e=>e.z)),t(s);try{n(function(e,t){if(null===e)return[];try{let n=JSON.parse(e);if(!Array.isArray(n))return[];return ey(n,t)}catch{return[]}}(window.localStorage.getItem(eO),s))}catch{}},[e,t,n,l])}({wsRef:e,setWins:d,setConns:g,zc:j}),(0,a.useEffect)(()=>{null!==c&&eH(eO,ey(f,c))},[f,c]),(0,a.useEffect)(()=>{null!==c&&g(e=>{let t=e.filter(e=>void 0!==c.find(t=>t.id===e.a)&&void 0!==c.find(t=>t.id===e.b));return t.length===e.length?e:t})},[c,g]),(0,a.useEffect)(()=>{null!==c&&eH(ez,eb(c))},[c]),function({setWins:e,rect:t,cancelConnectRef:n}){(0,a.useEffect)(()=>{let a=a=>{var l,s;if("Escape"===a.key)return void n.current();if(null!==(l=document.activeElement)&&("INPUT"===l.tagName||"TEXTAREA"===l.tagName||"SELECT"===l.tagName))return;let i=eG[a.code];if((a.metaKey||a.ctrlKey)&&a.altKey&&void 0!==i){a.preventDefault(),e(e=>{var t;if(null===e||0===e.length)return e;let n=eW(e),a=(t=n.zoom??1,"0"===i?1:"-"===i||"_"===i?eU(t-.1):eU(t+.1));return e.map(e=>e.id===n.id?{...e,zoom:a}:e)});return}if(!/^Arrow/.test(a.key))return;let r=a.metaKey||a.ctrlKey,o=a.altKey;if(!r&&!o)return;a.preventDefault();let c=t();null!==c&&(s={key:a.key,shift:a.shiftKey},e(e=>{let t,n,a,l,i,r,d;if(null===e||0===e.length)return e;let u=eW(e),h=o?(t=s.shift?1:16,n=u.w,a=u.h,"ArrowRight"===s.key?n+=t:"ArrowLeft"===s.key?n-=t:"ArrowDown"===s.key?a+=t:"ArrowUp"===s.key&&(a-=t),n=Math.max((l=el[u.type].min).w,Math.min(c.width,n)),a=Math.max(l.h,Math.min(c.height,a)),{x:u.x,y:u.y,w:n,h:a}):(i=s.shift?1:16,r=u.x,d=u.y,"ArrowRight"===s.key?r+=i:"ArrowLeft"===s.key?r-=i:"ArrowDown"===s.key?d+=i:"ArrowUp"===s.key&&(d-=i),{x:r=Math.max(-(u.w-120),Math.min(c.width-120,r)),y:d=Math.max(0,Math.min(c.height-38,d)),w:u.w,h:u.h});return e.map(e=>e.id===u.id?{...e,...h,max:!1}:e)}))};return window.addEventListener("keydown",a),()=>{window.removeEventListener("keydown",a)}},[e,t,n])}({setWins:d,rect:L,cancelConnectRef:I}),function({wsRef:e,viewRef:t,setWins:n}){(0,a.useEffect)(()=>{let a=e.current;if(null===a||"u"<typeof ResizeObserver)return;let l=new ResizeObserver(()=>{let e=a.getBoundingClientRect(),l=t.current,s={x:-l.x/l.zoom,y:-l.y/l.zoom,w:e.width/l.zoom,h:e.height/l.zoom};n(e=>null===e?e:e.map(e=>(function(e,t){if(e.max)return{...e,x:t.x,y:t.y,w:t.w,h:t.h};let n=Math.max(t.x-(e.w-120),Math.min(t.x+t.w-120,e.x)),a=Math.max(t.y,Math.min(t.y+t.h-38,e.y));return n===e.x&&a===e.y?e:{...e,x:n,y:a}})(e,s)))});return l.observe(a),()=>{l.disconnect()}},[e,t,n])}({wsRef:e,viewRef:E,setWins:d});let{update:q,focus:P,close:M,maximize:D,add:F,toggleTool:z}={update:(l=(n={setWins:d,zc:j,worldVP:R}).setWins,(e,t)=>l(n=>null===n?n:n.map(n=>n.id===e?{...n,...t}:n))),focus:(s=n.setWins,i=n.zc,e=>s(t=>null===t?t:t.map(t=>t.id===e?{...t,z:++i.current}:t))),close:(r=n.setWins,e=>r(t=>null===t?t:t.filter(t=>t.id!==e))),maximize:function(e){let{setWins:t,zc:n,worldVP:a}=e;return e=>t(t=>{if(null===t)return t;let l=a();return null===l?t:t.map(t=>t.id!==e?t:t.max&&void 0!==t.prev?{...t,x:t.prev.x,y:t.prev.y,w:t.prev.w,h:t.prev.h,max:!1,z:++n.current}:{...t,max:!0,prev:{x:t.x,y:t.y,w:t.w,h:t.h},x:l.x,y:l.y,w:l.w,h:l.h,z:++n.current})})}(n),add:function(e){let{setWins:t,zc:n,worldVP:a}=e;return(e,l)=>{let s=el[e],i=null;return t(t=>{let r=a();if(null===r)return t;let o=t??[];if(!0===s.singleton){let t=o.find(t=>t.type===e);if(void 0!==t)return i=t.id,o.map(e=>e.id===t.id?{...e,z:++n.current}:e)}let c="qiRun"===e?l?.runId:void 0;if("string"==typeof c&&c.length>0){let e=o.find(e=>"qiRun"===e.type&&e.cfg.runId===c);if(void 0!==e)return i=e.id,o.map(t=>t.id===e.id?{...t,z:++n.current}:t)}let d="chat"===e?l?.chatId:void 0;if("string"==typeof d&&d.length>0){let e=o.find(e=>"chat"===e.type&&e.cfg.chatId===d);if(void 0!==e)return i=e.id,o.map(t=>t.id===e.id?{...t,z:++n.current}:t)}let{x:u,y:h}=ej(r,s.w,s.h,o.length,40),p=!0===s.singleton?e:`${e}-${Date.now().toString(36)}`;return i=p,[...o,{id:p,type:e,x:u,y:h,w:s.w,h:s.h,z:++n.current,cfg:l??{},max:!1,zoom:1}]}),i}}(n),toggleTool:function(e){let{setWins:t,zc:n,worldVP:a}=e;return e=>{let l=el[e];t(t=>{let s=a();if(null===s)return t;let i=t??[];if(void 0!==i.find(t=>t.type===e))return i.filter(t=>t.type!==e);let{x:r,y:o}=ej(s,l.w,l.h,i.length,28);return[...i,{id:e,type:e,x:r,y:o,w:l.w,h:l.h,z:++n.current,cfg:{},max:!1,zoom:1}]})}}(n)},{tileAll:O,splitFront:K,cascade:_}={tileAll:function({setWins:e,worldVP:t}){return()=>e(e=>{if(null===e||0===e.length)return e;let n=t();if(null===n)return e;let a=e.length,l=Math.ceil(Math.sqrt(a)),s=Math.ceil(a/l),i=(n.w-12*(l+1))/l,r=(n.h-12*(s+1))/s;return e.map((e,t)=>{let a=Math.floor(t/l);return{...ew(e),max:!1,x:n.x+12+t%l*(i+12),y:n.y+12+a*(r+12),w:i,h:r}})})}(o={setWins:d,worldVP:R}),splitFront:function({setWins:e,worldVP:t}){return()=>e(e=>{if(null===e||0===e.length)return e;let n=t();if(null===n)return e;let a=[...e].sort((e,t)=>t.z-e.z).slice(0,2).map(e=>e.id);return e.map(e=>{let t=a.indexOf(e.id);return 0===t?{...ew(e),max:!1,x:n.x,y:n.y,w:n.w/2,h:n.h}:1===t?{...ew(e),max:!1,x:n.x+n.w/2,y:n.y,w:n.w/2,h:n.h}:e})})}(o),cascade:function({setWins:e,worldVP:t}){return()=>e(e=>{if(null===e)return e;let n=t();return null===n?e:e.map((e,t)=>({...ew(e),max:!1,x:n.x+24+30*t,y:n.y+24+30*t,w:Math.min(560,n.w-80),h:Math.min(420,n.h-80),z:t+1}))})}(o)},{setSnap:B,commitSnap:U}=function({setSnapPrev:e,snapZone:t,worldVP:n,update:a}){return{setSnap:a=>{if(t.current=a,null===a)return void e(null);let l=n();null!==l&&e(Y(l)[a])},commitSnap:l=>{let s=t.current;if(t.current=null,e(null),null===s)return;let i=n();if(null===i)return;let r={...Y(i)[s],max:"maxi"===s};"maxi"===s&&(r.prev={x:i.x+40,y:i.y+40,w:480,h:360}),a(l,r)}}}({setSnapPrev:h,snapZone:w,worldVP:R,update:q}),{startConnect:W,confirmConnect:G,cancelConnect:V,removeConn:Q,connect:X,linkedFilesRoot:J,linkedFilesContext:Z,linkedAllFilesRoots:ee,linkedConnectorCapsuleIds:et,linkedConnectorCapsuleSetIds:en,linkedFigmaSnapshotRunIds:ea,currentFilesContext:es}=function(e){let{wsRef:t,viewRef:n,winsRef:a,connsRef:l,connectingRef:s,connectCleanupRef:i,focus:r,setConns:o,setConnecting:c,onScopeBind:d,onScopeUnbind:u,onConnectorBind:h,onConnectorUnbind:p}=e,m=()=>{null!==i.current&&(i.current(),i.current=null),s.current=null,c(null)},f=e=>{if("files"!==e.type)return null;let t=e.cfg.resolvedRoot,n=e.cfg.root,a="string"==typeof t&&t.length>0?t:"string"==typeof n&&n.length>0?n:null;if(null===a||!eS(a))return null;let l=e.cfg.activeFilePath;return{id:e.id,root:a,..."string"==typeof l&&l.length>0?{activeFilePath:l}:{}}},g=e=>{let t=[];for(let n of l.current){let l=n.a===e?n.b:n.b===e?n.a:null;if(null===l)continue;let s=a.current.find(e=>e.id===l);void 0!==s&&"files"===s.type&&t.push(s)}if(0===t.length)return null;let n=[...t].sort((e,t)=>t.z-e.z),s=n.find(e=>{let t=e.cfg.activeFilePath;return"string"==typeof t&&t.length>0})??n[0];return void 0===s?null:f(s)},v=(e,t)=>{let n=new Set,s=[];for(let i of l.current){if(s.length>=16)break;let l=i.a===e?i.b:i.b===e?i.a:null;if(null===l)continue;let r=a.current.find(e=>e.id===l);if(void 0===r||"connector"!==r.type||r.cfg.selectedKind!==t)continue;let o=r.cfg.selectedId;"string"==typeof o&&0!==o.length&&(n.has(o)||(n.add(o),s.push(o)))}return s};return{startConnect:(e,a)=>{if(a.preventDefault(),a.stopPropagation(),null!==s.current&&s.current.from===e)return void m();let l=t.current;if(null===l)return;let r=l.getBoundingClientRect(),o=n.current,d=e=>(e-r.left-o.x)/o.zoom,u=e=>(e-r.top-o.y)/o.zoom;null!==i.current&&(i.current(),i.current=null);let h={from:e,x:d(a.clientX),y:u(a.clientY)};s.current=h,c(h);let p=t=>{let n={from:e,x:d(t.clientX),y:u(t.clientY)};s.current=n,c(n)};window.addEventListener("pointermove",p),i.current=()=>{window.removeEventListener("pointermove",p)}},confirmConnect:(e,t)=>{t.preventDefault(),t.stopPropagation();let n=s.current;if(null===n)return;let l=a.current,i=l.find(e=>e.id===n.from),c=l.find(t=>t.id===e);if(void 0!==i&&void 0!==c&&H(i.type,c.type)){let t,l=e$(i,c,Date.now()),s=null===l?eF(i,c):null,u=null!==l||null!==s?eN(i,c):null;try{t=null!==l&&null!==u?d?.(u,l)??!0:null===s||null!==u&&(h?.(u,s)??!0)}catch{t=!1}Promise.resolve(t).then(t=>{!t||a.current.some(e=>e.id===n.from)&&a.current.some(t=>t.id===e)&&(o(t=>ek(t,n.from,e)?t:[...t,{id:`${n.from}~${e}`,a:n.from,b:e,...null!==u?{boundChatWindowId:u}:{},...null!==l?{boundRoot:l.root,boundScopeKind:l.kind,boundRelativePath:l.relativePaths[0]}:{},...null!==s?"capsule"===s.kind?{boundConnectorKind:"capsule",boundConnectorId:s.capsuleId}:{boundConnectorKind:"capsule-set",boundConnectorId:s.capsuleSetId}:{}}]),r(e))}).catch(()=>void 0)}m()},cancelConnect:m,removeConn:e=>{let t=l.current.find(t=>t.id===e);if(o(t=>t.filter(t=>t.id!==e)),void 0===t)return;let n=a.current,s=n.find(e=>e.id===t.a),i=n.find(e=>e.id===t.b),r=void 0!==s&&void 0!==i,c=t.boundChatWindowId??(r?eN(s,i):null),d=eT(t)??(r?e$(s,i,Date.now()):null);null!==d&&null!==c&&u?.(c,d);let h=eD(t)??(r?eF(s,i):null);null!==h&&null!==c&&p?.(c,h)},connect:(e,t)=>{let n=a.current,l=n.find(t=>t.id===e),s=n.find(e=>e.id===t);void 0!==l&&void 0!==s&&H(l.type,s.type)&&o(n=>ek(n,e,t)?n:[...n,{id:`${e}~${t}`,a:e,b:t}])},linkedFilesRoot:e=>g(e)?.root??null,linkedFilesContext:g,linkedAllFilesRoots:e=>{let t=new Set,n=[];for(let s of l.current){if(n.length>=16)break;let l=s.a===e?s.b:s.b===e?s.a:null;if(null===l)continue;let i=a.current.find(e=>e.id===l);if(void 0===i)continue;let r=eI(i);null===r||t.has(r)||(t.add(r),n.push(r))}return n},linkedConnectorCapsuleIds:e=>v(e,"capsule"),linkedConnectorCapsuleSetIds:e=>v(e,"capsule-set"),linkedFigmaSnapshotRunIds:e=>{let t=new Set,n=[];for(let s of l.current){if(n.length>=16)break;let l=s.a===e?s.b:s.b===e?s.a:null;if(null===l)continue;let i=a.current.find(e=>e.id===l);if(void 0===i||"figma"!==i.type)continue;let r=i.cfg.snapshotRunId;"string"==typeof r&&0!==r.length&&(t.has(r)||(t.add(r),n.push(r)))}return n},currentFilesContext:()=>{let e=a.current.map(e=>f(e)).filter(e=>null!==e);if(1===e.length)return e[0]??null;let t=[...a.current].filter(e=>"files"===e.type).sort((e,t)=>t.z-e.z)[0];return void 0===t?null:f(t)}}}({wsRef:e,viewRef:E,winsRef:k,connsRef:N,connectingRef:S,connectCleanupRef:C,focus:P,setConns:g,setConnecting:x,onScopeBind:t.onScopeBind,onScopeUnbind:t.onScopeUnbind,onConnectorBind:t.onConnectorBind,onConnectorUnbind:t.onConnectorUnbind});return I.current=V,(0,a.useEffect)(()=>()=>{null!==C.current&&(C.current(),C.current=null)},[]),{wins:c,snapPrev:u,palOpen:p,setPalOpen:m,conns:f,connecting:v,view:b,api:{add:F,toggleTool:z,focus:P,close:e=>{let n=k.current.find(t=>t.id===e);if(void 0!==n)for(let a of N.current){let l=a.a===e?a.b:a.b===e?a.a:null;if(null===l)continue;let s=k.current.find(e=>e.id===l);if(void 0===s)continue;let i=a.boundChatWindowId??("chat"===n.type?n.id:"chat"===s.type?s.id:null),r=eT(a)??e$(n,s,Date.now());null!==r&&null!==i&&t.onScopeUnbind?.(i,r);let o=eD(a)??eF(n,s);null!==o&&null!==i&&t.onConnectorUnbind?.(i,o)}M(e)},maximize:D,update:q,setSnap:B,commitSnap:U,tileAll:O,splitFront:K,cascade:_,startConnect:W,confirmConnect:G,cancelConnect:V,removeConn:Q,updateConnBoundScope:(e,t)=>{g(n=>n.map(n=>n.id===e?{...n,boundScopeKind:t.kind,...void 0!==t.root?{boundRoot:t.root}:{},...void 0!==t.relativePaths[0]?{boundRelativePath:t.relativePaths[0]}:{}}:n))},connect:X,linkedFilesRoot:J,linkedFilesContext:Z,linkedAllFilesRoots:ee,linkedConnectorCapsuleIds:et,linkedConnectorCapsuleSetIds:en,linkedFigmaSnapshotRunIds:ea,currentFilesContext:es,zoomTo:$,resetView:T,panBy:A,rect:L}}}(h,{onScopeBind:(0,a.useCallback)(async(e,t)=>k(e,t),[k]),onScopeUnbind:(0,a.useCallback)((e,t)=>{let n=y(e);if(void 0===n)return;let a=eL(eq(n),t);(0,e4.updateChatConnectedScopes)(n.id,a.length>0?a:null).then(e=>{u.replaceChat(e.chat)}).catch(e=>{console.warn("[keiko] connected-scope unbind failed",e)})},[y,u]),onConnectorBind:(0,a.useCallback)(async(e,t)=>{var n;let a,l,s=y(e);if(void 0===s)return b("Open a ready chat window before connecting a source.");let i=eP(s),r=eq(s);if(a=eM(t),i.some(e=>eM(e)===a))return!0;let o=eA(m);if(r.length+i.length>=o)return x(r.length+i.length,o);let c=(n=m.maxLocalKnowledgeSources,l=eM(t),i.some(e=>eM(e)===l)||i.length>=n?i:[...i,t]);if(c===i)return x(r.length+i.length,o);try{let e=await (0,e4.updateChatLocalKnowledgeScopes)(s.id,c);return u.replaceChat(e.chat),v(null),!0}catch{return b("Keiko could not connect that knowledge source. Check that it is still available and try again.")}},[y,u,m,x,b]),onConnectorUnbind:(0,a.useCallback)((e,t)=>{var n;let a=y(e);if(void 0===a)return;let l="capsule"===t.kind?`capsule:${t.capsuleId}`:`set:${t.capsuleSetId}`,s=(n=eP(a),n.filter(e=>eM(e)!==l));(0,e4.updateChatLocalKnowledgeScopes)(a.id,s.length>0?s:null).then(e=>{u.replaceChat(e.chat)}).catch(()=>void 0)},[y,u])});p.current=S.wins,(0,a.useEffect)(()=>{if(null!==S.wins)for(let e of S.conns){let t=S.wins.find(t=>t.id===e.a),n=S.wins.find(t=>t.id===e.b);if(void 0===t||void 0===n)continue;let a=e.boundChatWindowId??("chat"===t.type?t.id:"chat"===n.type?n.id:null);if(null===a)continue;let l=e$(t,n,Date.now());if(null===l)continue;let s=eT(e);oi(s)!==oi(l)&&k(a,l,s).then(t=>{t&&S.api.updateConnBoundScope(e.id,l)})}},[k,S.api,S.conns,S.wins]);let[C,I]=(0,a.useState)(!1),[E,R]=(0,a.useState)(null),[$,T]=(0,a.useState)(!1),L=S.wins?.length??0,q=function(e){if(null===e||0===e.length)return null;let t=e[0];for(let n=1;n<e.length;n++){let a=e[n];a.z>t.z&&(t=a)}return t}(S.wins),P=(0,a.useMemo)(()=>(function(e){if(null===e)return new Set;let t=new Set;for(let n of e)!0===el[n.type].tool&&t.add(n.type);return t})(S.wins),[S.wins]),M=(0,a.useMemo)(()=>({wins:S.wins??[],active:q,winCount:L}),[S.wins,q,L]),F=(0,a.useCallback)(()=>I(!0),[]),O=(0,a.useCallback)(()=>I(!1),[]),K=(0,a.useCallback)(()=>{null===q||q.max||S.api.maximize(q.id)},[q,S.api]),_=(0,a.useCallback)(()=>{null!==q&&q.max&&S.api.maximize(q.id)},[q,S.api]),B=(0,a.useCallback)(e=>{I(!1),R(e)},[]),U=(0,a.useCallback)(e=>{if(R(null),null===E)return;let{__connectFilesId:t,...n}=e,a=S.api.add(E,n);"agents"===E&&null!==a&&"string"==typeof t&&t.length>0&&S.api.connect(a,t),null!==a&&requestAnimationFrame(()=>{let e=document.querySelector(`[data-window-id="${a}"]`);null===e||(e.querySelector("textarea, input, select, button, [tabindex]")??e).focus()})},[E,S.api]),W=(0,a.useCallback)(()=>R(null),[]),G=(0,a.useCallback)(()=>T(!1),[]),V=(0,a.useCallback)(()=>T(!0),[]),Q=(0,a.useRef)(null),X=(0,a.useCallback)(e=>{Q.current=e},[]),J=function(e){let{apply:t}=e,n=e.limit??100,[l,s]=(0,a.useState)(nc),i=(0,a.useRef)(t);i.current=t;let r=(0,a.useRef)(l);r.current=l;let o=(0,a.useCallback)(e=>{s(t=>{let a=[...t.undoStack,e];return{undoStack:a.length>n?a.slice(a.length-n):a,redoStack:[]}})},[n]),c=(0,a.useCallback)(()=>{let e=r.current;if(0===e.undoStack.length)return;let t=e.undoStack[e.undoStack.length-1],n=function(e){switch(e.kind){case"ui.window.move":case"ui.window.resize":case"ui.window.zorder":case"ui.workspace.pan":case"ui.workspace.zoom":case"ui.workspace.fit":case"ui.panel.toggle":case"ui.selection.change":case"ui.tab.switch":return{...e,before:e.after,after:e.before};case"ui.window.close":return{...e,kind:"ui.window.open"};case"ui.window.open":return{...e,kind:"ui.window.close"}}}(t);s({undoStack:e.undoStack.slice(0,-1),redoStack:[...e.redoStack,t]}),i.current(n)},[]),d=(0,a.useCallback)(()=>{let e=r.current;if(0===e.redoStack.length)return;let t=e.redoStack[e.redoStack.length-1];s({undoStack:[...e.undoStack,t],redoStack:e.redoStack.slice(0,-1)}),i.current(t)},[]),u=(0,a.useCallback)(()=>{s(nc)},[]);return(0,a.useMemo)(()=>{let e=l.undoStack[l.undoStack.length-1],t=l.redoStack[l.redoStack.length-1];return{canUndo:l.undoStack.length>0,canRedo:l.redoStack.length>0,undoLabel:void 0!==e?nr(e):null,redoLabel:void 0!==t?nr(t):null,push:o,undo:c,redo:d,clear:u}},[l,o,c,d,u])}({apply:(0,a.useCallback)(e=>{var t;return t=S.api,void("ui.panel.toggle"===e.kind&&e.panel in el&&t.toggleTool(e.panel))},[S.api])}),Z=(0,a.useCallback)(e=>{if(!(e in el))return;let t=P.has(e);S.api.toggleTool(e),J.push({kind:"ui.panel.toggle",panel:e,before:t,after:!t})},[S.api,P,J]),ee=(0,a.useCallback)(()=>B("chat"),[B]),et=(0,a.useRef)(!1);(0,a.useEffect)(()=>{if(et.current||null===S.wins)return;et.current=!0;let e=window.location.pathname.replace(/\/+$/u,""),t="/relationships"===e?"relationships":"/local-knowledge"===e?"localKnowledge":null;null!==t&&(S.wins.some(e=>e.type===t)||Z(t),window.history.replaceState(null,"","/"))},[S.wins,Z]),function(e){let{bindings:t,dispatch:n}=e,l=e.platform??function(){if("u"<typeof navigator)return"other";let e=navigator.platform||"";return/Mac|iPhone|iPad|iPod/i.test(e)?"mac":"other"}(),s=(0,a.useRef)(n);s.current=n;let i=(0,a.useMemo)(()=>(function(e){let t=new Map;for(let n of e){let e=no(n.chord),a=t.get(e);void 0!==a?a.push(n.commandId):t.set(e,[n.commandId])}let n=[];for(let[,a]of t)if(a.length>1){let t=e.find(e=>a.includes(e.commandId));void 0!==t&&n.push({chord:t.chord,commandIds:a})}return n})(t),[t]),r=(0,a.useMemo)(()=>t.filter(e=>(function(e){for(let t of ni)if(no(e)===no(t))return!0;return!1})(e.chord)),[t]);if(i.length>0)throw new nd(i);if(r.length>0)throw new nu(r);(0,a.useEffect)(()=>{function e(e){if(!function(e){if(!(e instanceof HTMLElement))return!1;if(e.isContentEditable)return!0;let t=e.tagName;return"INPUT"===t||"TEXTAREA"===t||"SELECT"===t}(e.target)){for(let n of t)if(function(e,t,n){if(!(e.key.toLowerCase()===t.key.toLowerCase()||t.mod.includes("alt")&&/^[a-z]$/i.test(t.key)&&e.code===`Key${t.key.toUpperCase()}`))return!1;let a=function(e,t){let n=new Set;for(let a of e)"cmd"===a?n.add("mac"===t?"meta":"ctrl"):"ctrl"===a?n.add("ctrl"):"alt"===a?n.add("alt"):"shift"===a&&n.add("shift");return n}(t.mod,n);return e.metaKey===a.has("meta")&&e.ctrlKey===a.has("ctrl")&&e.altKey===a.has("alt")&&e.shiftKey===a.has("shift")}(e,n.chord,l)){e.preventDefault(),s.current(n.commandId);return}}}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[t,l]),(0,a.useMemo)(()=>({bindings:t,conflicts:i,reserved:r}),[t,i,r])}({bindings:nh,dispatch:(0,a.useCallback)(e=>{"undo"===e?J.undo():"redo"===e?J.redo():"focus-status"===e&&Q.current?.focus()},[J])}),(0,a.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&("k"===e.key||"K"===e.key)&&(e.preventDefault(),T(e=>!e))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]);let en=(0,a.useMemo)(()=>(function(e,t,n,a,l,s){let i=[];for(let e of or){let t=el[e];i.push({id:`new-${e}`,label:`New ${t.title}`,group:"Create",icon:t.icon,run:()=>n(e)})}for(let e of oo){let n=el[e];i.push({id:`open-${e}`,label:`Open ${n.title}`,group:"Tools",icon:n.icon,run:()=>t(e)})}return i.push({id:"tile",label:"Tile all windows",group:"Layout",icon:"tile",run:e.tileAll}),i.push({id:"split",label:"Split front windows",group:"Layout",icon:"split",run:e.splitFront}),i.push({id:"cascade",label:"Cascade windows",group:"Layout",icon:"cascade",run:e.cascade}),i.push({id:"theme",label:"Toggle light / dark theme",group:"View",icon:"light"===a?"moon":"sun",run:l}),i.push({id:"undo",label:null!==s.undoLabel?`Undo: ${s.undoLabel}`:"Undo (window and panel changes only)",group:"Edit",icon:"back",shortcut:"⌘Z",run:s.undo}),i.push({id:"redo",label:null!==s.redoLabel?`Redo: ${s.redoLabel}`:"Redo (window and panel changes only)",group:"Edit",icon:"fwd",shortcut:"⇧⌘Z",run:s.redo}),i})(S.api,Z,B,o,c,J),[S.api,Z,B,o,c,J]),ea=!u.loading&&void 0===u.error&&0===u.models.length,es=(e=u.activeProject?.name,u.loading?"Loading project…":void 0!==e&&e.trim().length>0?e:"No project selected"),ei=void 0!==u.activeProject,er=u.activeProject?.available===!0,eo=(t={loading:u.loading,error:u.error,hasProject:ei,projectAvailable:er,noEligibleModels:u.noEligibleModels}).loading?"Loading shell…":void 0!==t.error?"Shell error":t.hasProject?t.projectAvailable?t.noEligibleModels?"Gateway setup required":"Ready":"Project unavailable":"No project selected",ec=(l={loading:u.loading,error:u.error,hasProject:ei,projectAvailable:er,noEligibleModels:u.noEligibleModels}).loading?{label:"Connecting",tone:"warn"}:void 0!==l.error||l.hasProject&&!l.projectAvailable?{label:"Disconnected",tone:"danger"}:!l.hasProject||l.noEligibleModels?{label:"Setup required",tone:"warn"}:{label:"Connected",tone:"ok"},ed=0===(r=(S.wins??[]).filter(e=>"review"===e.type)).length?"No review open":r.some(e=>"string"==typeof e.cfg.runId&&e.cfg.runId.length>0)?"Evidence ready":"Review window open",eu=void 0!==(i=u.activeChat?.branchLabel)&&i.trim().length>0?i:"No branch selected",eh=C?(0,n.jsx)(tc,{types:el,order:or,onAdd:B,onClose:O}):null;return(0,n.jsx)(s,{value:u,children:(0,n.jsx)(w.Provider,{value:M,children:(0,n.jsxs)("div",{className:"app",children:[(0,n.jsx)("h1",{className:"visually-hidden",children:"Keiko workspace"}),(0,n.jsx)(A,{mode:d.mode,projectName:es,statusLabel:ec.label,statusTone:ec.tone,onModeChange:d.setMode,openPalette:F,openCommandPalette:V,onTileAll:S.api.tileAll,onSplitFront:S.api.splitFront,onCascade:S.api.cascade,onExpandFront:K,onRestoreFront:_}),(0,n.jsxs)("div",{className:"mid",children:[(0,n.jsx)(D,{openTools:P,onTool:Z,onNewChat:ee,theme:o,onToggleTheme:c}),(0,n.jsxs)("div",{className:"stage",children:[(0,n.jsx)(e0,{ws:S,wsRef:h,openPalette:F,palette:eh}),null!==g&&(0,n.jsxs)("div",{className:"source-limit-alert",role:"alert",children:[(0,n.jsx)("span",{children:g}),(0,n.jsx)("button",{type:"button",className:"source-limit-alert-dismiss","aria-label":"Dismiss source connection notice",onClick:()=>v(null),children:"×"})]})]}),(0,n.jsx)(z,{openTools:P,onTool:Z})]}),(0,n.jsx)(N,{winCount:L,mode:d.mode,selectedModel:u.selectedModel,projectName:es,branchLabel:eu,shellStatusLabel:eo,evidenceStatusLabel:ed,statusRef:X}),null!==E&&(0,n.jsx)(tr,{type:E,types:el,filesContext:S.api.currentFilesContext(),onConfirm:U,onClose:W}),$&&(0,n.jsx)(e1,{commands:en,onClose:G}),ea?(0,n.jsx)(e3,{}):null,(0,n.jsx)(os,{})]})})})}function od(){let[e,t]=(0,a.useState)(!1);return((0,a.useEffect)(()=>{t(!0)},[]),(0,a.useEffect)(()=>{!function(){if(!("u">typeof navigator&&"serviceWorker"in navigator))return;let e=navigator.serviceWorker;try{e.register("/sw.js",{scope:"/"}).catch(e=>{})}catch{}}()},[]),e)?(0,n.jsx)(y,{children:(0,n.jsx)(oc,{})}):(0,n.jsx)("div",{className:"app","aria-hidden":"true",children:(0,n.jsx)("div",{className:"app-boot",children:(0,n.jsx)("img",{className:"app-boot-logo",src:"/assets/keiko-logo.svg",alt:""})})})}e.s(["KeikoDesktop",0,function(){return(0,n.jsx)(od,{})}],89199)}]);