elanous 0.2.0 → 0.2.4

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 (1174) hide show
  1. package/.env.example +6 -0
  2. package/README.md +16 -14
  3. package/apps/pwa/out/404/index.html +1 -1
  4. package/apps/pwa/out/404.html +1 -1
  5. package/apps/pwa/out/_next/static/chunks/1105-c473ed46272fba79.js +1 -0
  6. package/apps/pwa/out/_next/static/chunks/1191-7b13a24117a689fa.js +1 -0
  7. package/apps/pwa/out/_next/static/chunks/1201-09613bce624467c0.js +1 -0
  8. package/apps/pwa/out/_next/static/chunks/1377-1efeffbbac0963ff.js +1 -0
  9. package/apps/pwa/out/_next/static/chunks/1470.98a6ab61ccb4131c.js +1 -0
  10. package/apps/pwa/out/_next/static/chunks/216-5acd01cbde4acda7.js +1 -0
  11. package/apps/pwa/out/_next/static/chunks/2330-c2f07246c8788af1.js +1 -0
  12. package/apps/pwa/out/_next/static/chunks/2375-3fcae5186c64fe6b.js +1 -0
  13. package/apps/pwa/out/_next/static/chunks/2415.ed6428ff334c7ce2.js +1 -0
  14. package/apps/pwa/out/_next/static/chunks/2929-617f1e66a55be184.js +1 -0
  15. package/apps/pwa/out/_next/static/chunks/2977-e38442e86289f1d3.js +1 -0
  16. package/apps/pwa/out/_next/static/chunks/2982-2a2df543be3d2e5a.js +25 -0
  17. package/apps/pwa/out/_next/static/chunks/{2a79f15a-2013e4d421d6df88.js → 2ea96958-e8c7e112de50b067.js} +1 -1
  18. package/apps/pwa/out/_next/static/chunks/319-d37df1b6e0cbeff4.js +1 -0
  19. package/apps/pwa/out/_next/static/chunks/3403.4bc97b4066945a94.js +5 -0
  20. package/apps/pwa/out/_next/static/chunks/3441-a1dd4acfeda14488.js +1 -0
  21. package/apps/pwa/out/_next/static/chunks/371-4ad6af55dad02ced.js +1 -0
  22. package/apps/pwa/out/_next/static/chunks/4114-3e63117452378807.js +1 -0
  23. package/apps/pwa/out/_next/static/chunks/{6804.8ed6ab492bc5fc0a.js → 4323.c5dfb6f503304775.js} +1 -1
  24. package/apps/pwa/out/_next/static/chunks/4836-3c93795ab834381e.js +1 -0
  25. package/apps/pwa/out/_next/static/chunks/{320-d7013ec072863e5e.js → 5080-1613752891fcadb4.js} +4 -4
  26. package/apps/pwa/out/_next/static/chunks/5609-012bb3557211f07e.js +1 -0
  27. package/apps/pwa/out/_next/static/chunks/5791-bb82743fa6299562.js +1 -0
  28. package/apps/pwa/out/_next/static/chunks/6062-73e68343a9814f6a.js +1 -0
  29. package/apps/pwa/out/_next/static/chunks/6090-1bd6077591603947.js +1 -0
  30. package/apps/pwa/out/_next/static/chunks/6320-baac91d68843a9a6.js +1 -0
  31. package/apps/pwa/out/_next/static/chunks/6416-505ba707cacafbba.js +1 -0
  32. package/apps/pwa/out/_next/static/chunks/6725-68ab7cc0b1faf00d.js +1 -0
  33. package/apps/pwa/out/_next/static/chunks/6998-a654fe5c58271600.js +1 -0
  34. package/apps/pwa/out/_next/static/chunks/7457-f5cb1cc8db9f7453.js +1 -0
  35. package/apps/pwa/out/_next/static/chunks/7647.2fcd30d894d5ee30.js +1 -0
  36. package/apps/pwa/out/_next/static/chunks/7673-2eda1507d38dadb8.js +1 -0
  37. package/apps/pwa/out/_next/static/chunks/7990-e12efba616f46e03.js +1 -0
  38. package/apps/pwa/out/_next/static/chunks/8046cadf-211ca3c0e00f2b72.js +1 -0
  39. package/apps/pwa/out/_next/static/chunks/8067-f74bf14d67ad98f1.js +1 -0
  40. package/apps/pwa/out/_next/static/chunks/8142-011e1f474efb8b33.js +1 -0
  41. package/apps/pwa/out/_next/static/chunks/8519-0059d82bdb4812bf.js +1 -0
  42. package/apps/pwa/out/_next/static/chunks/8619-4365e03a2862830f.js +1 -0
  43. package/apps/pwa/out/_next/static/chunks/920-f7dceb78f1c585ef.js +1 -0
  44. package/apps/pwa/out/_next/static/chunks/9651-3cd291a6fa1370d2.js +1 -0
  45. package/apps/pwa/out/_next/static/chunks/9740-52467f244755917f.js +1 -0
  46. package/apps/pwa/out/_next/static/chunks/9804-64c02c3c127d5014.js +1 -0
  47. package/apps/pwa/out/_next/static/chunks/ae787e4c-f2998de7f1ba72a4.js +1 -0
  48. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-859cea1570b6227a.js +1 -0
  49. package/apps/pwa/out/_next/static/chunks/app/approvals/page-21c3261af6ab377c.js +1 -0
  50. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-1991445b8ea86274.js +1 -0
  51. package/apps/pwa/out/_next/static/chunks/app/board/page-4ebfaee2369fe248.js +1 -0
  52. package/apps/pwa/out/_next/static/chunks/app/botlab/page-9fa879ebf5959096.js +1 -0
  53. package/apps/pwa/out/_next/static/chunks/app/bots/page-ca7c3cc305c3285a.js +1 -0
  54. package/apps/pwa/out/_next/static/chunks/app/chat/page-9951930add3d2051.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/app/control/page-4472ddf1e2458e69.js +1 -0
  56. package/apps/pwa/out/_next/static/chunks/app/design-check/page-4de08d4b766f134b.js +1 -0
  57. package/apps/pwa/out/_next/static/chunks/app/editor/page-7a975e2b9db1dfb7.js +1 -0
  58. package/apps/pwa/out/_next/static/chunks/app/healthz/route-859cea1570b6227a.js +1 -0
  59. package/apps/pwa/out/_next/static/chunks/app/intake/page-49270714ef35bb96.js +1 -0
  60. package/apps/pwa/out/_next/static/chunks/app/layout-33fbdf353e2a5982.js +1 -0
  61. package/apps/pwa/out/_next/static/chunks/app/live/page-259f122e2dd64317.js +1 -0
  62. package/apps/pwa/out/_next/static/chunks/app/market/page-65b82726753658e1.js +1 -0
  63. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-4b8df3748dc06285.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/app/morning/page-112f7e477bda77fd.js +1 -0
  65. package/apps/pwa/out/_next/static/chunks/app/not-found-542a5c0006da637c.js +1 -0
  66. package/apps/pwa/out/_next/static/chunks/app/observatory/page-63ffb347831262ea.js +1 -0
  67. package/apps/pwa/out/_next/static/chunks/app/page-98e4e359d97263b4.js +1 -0
  68. package/apps/pwa/out/_next/static/chunks/app/reflection/page-97e24ac675ce576e.js +1 -0
  69. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-ac6391f26391d89d.js +1 -0
  70. package/apps/pwa/out/_next/static/chunks/app/sessions/page-9f45c9d45ffc43bd.js +1 -0
  71. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-36995b9cb5d98218.js +1 -0
  72. package/apps/pwa/out/_next/static/chunks/app/settings/page-0c795b577988d63f.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-b4311e2f71c6735a.js +1 -0
  74. package/apps/pwa/out/_next/static/chunks/app/setup/layout-859cea1570b6227a.js +1 -0
  75. package/apps/pwa/out/_next/static/chunks/app/setup/page-eb2381074df20dba.js +1 -0
  76. package/apps/pwa/out/_next/static/chunks/app/share/page-b01336e64eba01ae.js +1 -0
  77. package/apps/pwa/out/_next/static/chunks/app/showroom/page-7af7f21c1f2858ef.js +1 -0
  78. package/apps/pwa/out/_next/static/chunks/app/tasks/page-a98ecd364586c89b.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/app/term/page-57f0502dfbfa089b.js +1 -0
  80. package/apps/pwa/out/_next/static/chunks/app/trace/page-3467d2e1abd8a14a.js +1 -0
  81. package/apps/pwa/out/_next/static/chunks/app/vault/page-7842ca23d53ba682.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-ae9ac882912b0198.js +1 -0
  83. package/apps/pwa/out/_next/static/chunks/app/workflows/page-3a0d72e3f783bcef.js +1 -0
  84. package/apps/pwa/out/_next/static/chunks/app/workspace/page-f3b39fe8358c2a97.js +1 -0
  85. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-5a22af3181ac2afb.js +1 -0
  86. package/apps/pwa/out/_next/static/chunks/framework-ea806bb57f2b8923.js +1 -0
  87. package/apps/pwa/out/_next/static/chunks/main-8d2302399c2c8f87.js +1 -0
  88. package/apps/pwa/out/_next/static/chunks/main-app-1457627bb302a22c.js +1 -0
  89. package/apps/pwa/out/_next/static/chunks/pages/_app-b10928c60f0b8488.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/pages/_error-689039227d443fab.js +1 -0
  91. package/apps/pwa/out/_next/static/chunks/webpack-e5bea36f183b25e6.js +1 -0
  92. package/apps/pwa/out/_next/static/css/e66b7f5efc8df3f3.css +1 -0
  93. package/apps/pwa/out/_next/static/zoQX5iTvXOsIvCjxCe1Ji/_buildManifest.js +1 -0
  94. package/apps/pwa/out/approvals/index.html +1 -0
  95. package/apps/pwa/out/approvals/index.txt +30 -0
  96. package/apps/pwa/out/autopilot/index.html +1 -1
  97. package/apps/pwa/out/autopilot/index.txt +27 -26
  98. package/apps/pwa/out/board/index.html +1 -0
  99. package/apps/pwa/out/board/index.txt +30 -0
  100. package/apps/pwa/out/botlab/index.html +1 -1
  101. package/apps/pwa/out/botlab/index.txt +24 -23
  102. package/apps/pwa/out/bots/index.html +1 -1
  103. package/apps/pwa/out/bots/index.txt +24 -23
  104. package/apps/pwa/out/chat/index.html +1 -2
  105. package/apps/pwa/out/chat/index.txt +24 -23
  106. package/apps/pwa/out/control/index.html +1 -1
  107. package/apps/pwa/out/control/index.txt +27 -26
  108. package/apps/pwa/out/design-check/index.html +1 -1
  109. package/apps/pwa/out/design-check/index.txt +27 -26
  110. package/apps/pwa/out/editor/index.html +1 -0
  111. package/apps/pwa/out/editor/index.txt +31 -0
  112. package/apps/pwa/out/healthz +1 -1
  113. package/apps/pwa/out/index.html +1 -1
  114. package/apps/pwa/out/index.txt +24 -23
  115. package/apps/pwa/out/intake/index.html +1 -1
  116. package/apps/pwa/out/intake/index.txt +27 -26
  117. package/apps/pwa/out/live/index.html +1 -0
  118. package/apps/pwa/out/live/index.txt +30 -0
  119. package/apps/pwa/out/market/index.html +1 -0
  120. package/apps/pwa/out/market/index.txt +27 -0
  121. package/apps/pwa/out/missions/placeholder/index.html +1 -1
  122. package/apps/pwa/out/missions/placeholder/index.txt +24 -23
  123. package/apps/pwa/out/morning/index.html +1 -1
  124. package/apps/pwa/out/morning/index.txt +27 -26
  125. package/apps/pwa/out/observatory/index.html +1 -1
  126. package/apps/pwa/out/observatory/index.txt +27 -26
  127. package/apps/pwa/out/reflection/index.html +1 -1
  128. package/apps/pwa/out/reflection/index.txt +25 -24
  129. package/apps/pwa/out/scheduler/index.html +1 -1
  130. package/apps/pwa/out/scheduler/index.txt +27 -26
  131. package/apps/pwa/out/sessions/index.html +1 -1
  132. package/apps/pwa/out/sessions/index.txt +24 -23
  133. package/apps/pwa/out/settings/devices/index.html +1 -1
  134. package/apps/pwa/out/settings/devices/index.txt +27 -26
  135. package/apps/pwa/out/settings/index.html +1 -1
  136. package/apps/pwa/out/settings/index.txt +27 -26
  137. package/apps/pwa/out/setup/done/index.html +1 -1
  138. package/apps/pwa/out/setup/done/index.txt +27 -26
  139. package/apps/pwa/out/setup/index.html +1 -1
  140. package/apps/pwa/out/setup/index.txt +27 -26
  141. package/apps/pwa/out/share/index.html +1 -1
  142. package/apps/pwa/out/share/index.txt +27 -26
  143. package/apps/pwa/out/showroom/index.html +1 -1
  144. package/apps/pwa/out/showroom/index.txt +24 -23
  145. package/apps/pwa/out/tasks/index.html +1 -1
  146. package/apps/pwa/out/tasks/index.txt +27 -26
  147. package/apps/pwa/out/term/index.html +1 -1
  148. package/apps/pwa/out/term/index.txt +27 -26
  149. package/apps/pwa/out/trace/index.html +1 -0
  150. package/apps/pwa/out/trace/index.txt +30 -0
  151. package/apps/pwa/out/vault/index.html +1 -1
  152. package/apps/pwa/out/vault/index.txt +27 -26
  153. package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
  154. package/apps/pwa/out/workflows/chat-ui/index.txt +27 -26
  155. package/apps/pwa/out/workflows/index.html +1 -1
  156. package/apps/pwa/out/workflows/index.txt +27 -27
  157. package/apps/pwa/out/workspace/index.html +1 -1
  158. package/apps/pwa/out/workspace/index.txt +27 -26
  159. package/apps/pwa/out/worktrees/index.html +1 -1
  160. package/apps/pwa/out/worktrees/index.txt +27 -26
  161. package/catalog/resources.yaml +8 -11
  162. package/docs/design/systems/LICENSE +201 -0
  163. package/docs/design/systems/NOTICE.md +29 -0
  164. package/docs/design/systems/SOURCE.json +291 -0
  165. package/docs/design/systems/application/DESIGN.md +71 -0
  166. package/docs/design/systems/application/manifest.json +54 -0
  167. package/docs/design/systems/application/tokens.css +63 -0
  168. package/docs/design/systems/artistic/DESIGN.md +71 -0
  169. package/docs/design/systems/artistic/manifest.json +54 -0
  170. package/docs/design/systems/artistic/tokens.css +63 -0
  171. package/docs/design/systems/bento/DESIGN.md +71 -0
  172. package/docs/design/systems/bento/manifest.json +54 -0
  173. package/docs/design/systems/bento/tokens.css +63 -0
  174. package/docs/design/systems/bold/DESIGN.md +71 -0
  175. package/docs/design/systems/bold/manifest.json +54 -0
  176. package/docs/design/systems/bold/tokens.css +63 -0
  177. package/docs/design/systems/brutalism/DESIGN.md +71 -0
  178. package/docs/design/systems/brutalism/manifest.json +54 -0
  179. package/docs/design/systems/brutalism/tokens.css +63 -0
  180. package/docs/design/systems/cafe/DESIGN.md +71 -0
  181. package/docs/design/systems/cafe/manifest.json +54 -0
  182. package/docs/design/systems/cafe/tokens.css +63 -0
  183. package/docs/design/systems/claymorphism/DESIGN.md +71 -0
  184. package/docs/design/systems/claymorphism/manifest.json +54 -0
  185. package/docs/design/systems/claymorphism/tokens.css +63 -0
  186. package/docs/design/systems/clean/DESIGN.md +71 -0
  187. package/docs/design/systems/clean/manifest.json +54 -0
  188. package/docs/design/systems/clean/tokens.css +63 -0
  189. package/docs/design/systems/colorful/DESIGN.md +71 -0
  190. package/docs/design/systems/colorful/manifest.json +54 -0
  191. package/docs/design/systems/colorful/tokens.css +63 -0
  192. package/docs/design/systems/contemporary/DESIGN.md +71 -0
  193. package/docs/design/systems/contemporary/manifest.json +54 -0
  194. package/docs/design/systems/contemporary/tokens.css +63 -0
  195. package/docs/design/systems/corporate/DESIGN.md +71 -0
  196. package/docs/design/systems/corporate/manifest.json +54 -0
  197. package/docs/design/systems/corporate/tokens.css +63 -0
  198. package/docs/design/systems/cosmic/DESIGN.md +71 -0
  199. package/docs/design/systems/cosmic/manifest.json +54 -0
  200. package/docs/design/systems/cosmic/tokens.css +63 -0
  201. package/docs/design/systems/creative/DESIGN.md +71 -0
  202. package/docs/design/systems/creative/manifest.json +54 -0
  203. package/docs/design/systems/creative/tokens.css +63 -0
  204. package/docs/design/systems/dashboard/DESIGN.md +71 -0
  205. package/docs/design/systems/dashboard/manifest.json +54 -0
  206. package/docs/design/systems/dashboard/tokens.css +63 -0
  207. package/docs/design/systems/default/DESIGN.md +62 -0
  208. package/docs/design/systems/default/manifest.json +69 -0
  209. package/docs/design/systems/default/tokens.css +200 -0
  210. package/docs/design/systems/dithered/DESIGN.md +71 -0
  211. package/docs/design/systems/dithered/manifest.json +54 -0
  212. package/docs/design/systems/dithered/tokens.css +63 -0
  213. package/docs/design/systems/doodle/DESIGN.md +71 -0
  214. package/docs/design/systems/doodle/manifest.json +54 -0
  215. package/docs/design/systems/doodle/tokens.css +63 -0
  216. package/docs/design/systems/dramatic/DESIGN.md +71 -0
  217. package/docs/design/systems/dramatic/manifest.json +54 -0
  218. package/docs/design/systems/dramatic/tokens.css +63 -0
  219. package/docs/design/systems/editorial/DESIGN.md +71 -0
  220. package/docs/design/systems/editorial/manifest.json +54 -0
  221. package/docs/design/systems/editorial/tokens.css +63 -0
  222. package/docs/design/systems/elegant/DESIGN.md +71 -0
  223. package/docs/design/systems/elegant/manifest.json +54 -0
  224. package/docs/design/systems/elegant/tokens.css +63 -0
  225. package/docs/design/systems/energetic/DESIGN.md +72 -0
  226. package/docs/design/systems/energetic/manifest.json +54 -0
  227. package/docs/design/systems/energetic/tokens.css +63 -0
  228. package/docs/design/systems/enterprise/DESIGN.md +71 -0
  229. package/docs/design/systems/enterprise/manifest.json +54 -0
  230. package/docs/design/systems/enterprise/tokens.css +63 -0
  231. package/docs/design/systems/expressive/DESIGN.md +71 -0
  232. package/docs/design/systems/expressive/manifest.json +54 -0
  233. package/docs/design/systems/expressive/tokens.css +63 -0
  234. package/docs/design/systems/fantasy/DESIGN.md +71 -0
  235. package/docs/design/systems/fantasy/manifest.json +54 -0
  236. package/docs/design/systems/fantasy/tokens.css +63 -0
  237. package/docs/design/systems/flat/DESIGN.md +71 -0
  238. package/docs/design/systems/flat/manifest.json +54 -0
  239. package/docs/design/systems/flat/tokens.css +63 -0
  240. package/docs/design/systems/friendly/DESIGN.md +71 -0
  241. package/docs/design/systems/friendly/manifest.json +54 -0
  242. package/docs/design/systems/friendly/tokens.css +63 -0
  243. package/docs/design/systems/glassmorphism/DESIGN.md +71 -0
  244. package/docs/design/systems/glassmorphism/manifest.json +54 -0
  245. package/docs/design/systems/glassmorphism/tokens.css +63 -0
  246. package/docs/design/systems/gradient/DESIGN.md +71 -0
  247. package/docs/design/systems/gradient/manifest.json +54 -0
  248. package/docs/design/systems/gradient/tokens.css +63 -0
  249. package/docs/design/systems/luxury/DESIGN.md +71 -0
  250. package/docs/design/systems/luxury/manifest.json +54 -0
  251. package/docs/design/systems/luxury/tokens.css +63 -0
  252. package/docs/design/systems/minimal/DESIGN.md +71 -0
  253. package/docs/design/systems/minimal/manifest.json +54 -0
  254. package/docs/design/systems/minimal/tokens.css +63 -0
  255. package/docs/design/systems/modern/DESIGN.md +71 -0
  256. package/docs/design/systems/modern/manifest.json +54 -0
  257. package/docs/design/systems/modern/tokens.css +63 -0
  258. package/docs/design/systems/mono/DESIGN.md +71 -0
  259. package/docs/design/systems/mono/manifest.json +54 -0
  260. package/docs/design/systems/mono/tokens.css +63 -0
  261. package/docs/design/systems/neobrutalism/DESIGN.md +71 -0
  262. package/docs/design/systems/neobrutalism/manifest.json +54 -0
  263. package/docs/design/systems/neobrutalism/tokens.css +63 -0
  264. package/docs/design/systems/neon/DESIGN.md +71 -0
  265. package/docs/design/systems/neon/manifest.json +54 -0
  266. package/docs/design/systems/neon/tokens.css +63 -0
  267. package/docs/design/systems/neumorphism/DESIGN.md +71 -0
  268. package/docs/design/systems/neumorphism/manifest.json +54 -0
  269. package/docs/design/systems/neumorphism/tokens.css +63 -0
  270. package/docs/design/systems/paper/DESIGN.md +71 -0
  271. package/docs/design/systems/paper/manifest.json +54 -0
  272. package/docs/design/systems/paper/tokens.css +63 -0
  273. package/docs/design/systems/perspective/DESIGN.md +71 -0
  274. package/docs/design/systems/perspective/manifest.json +54 -0
  275. package/docs/design/systems/perspective/tokens.css +63 -0
  276. package/docs/design/systems/premium/DESIGN.md +71 -0
  277. package/docs/design/systems/premium/manifest.json +54 -0
  278. package/docs/design/systems/premium/tokens.css +63 -0
  279. package/docs/design/systems/professional/DESIGN.md +71 -0
  280. package/docs/design/systems/professional/manifest.json +54 -0
  281. package/docs/design/systems/professional/tokens.css +63 -0
  282. package/docs/design/systems/publication/DESIGN.md +71 -0
  283. package/docs/design/systems/publication/manifest.json +54 -0
  284. package/docs/design/systems/publication/tokens.css +63 -0
  285. package/docs/design/systems/refined/DESIGN.md +71 -0
  286. package/docs/design/systems/refined/manifest.json +54 -0
  287. package/docs/design/systems/refined/tokens.css +63 -0
  288. package/docs/design/systems/retro/DESIGN.md +71 -0
  289. package/docs/design/systems/retro/manifest.json +54 -0
  290. package/docs/design/systems/retro/tokens.css +63 -0
  291. package/docs/design/systems/shadcn/DESIGN.md +71 -0
  292. package/docs/design/systems/shadcn/manifest.json +54 -0
  293. package/docs/design/systems/shadcn/tokens.css +255 -0
  294. package/docs/design/systems/simple/DESIGN.md +71 -0
  295. package/docs/design/systems/simple/manifest.json +54 -0
  296. package/docs/design/systems/simple/tokens.css +63 -0
  297. package/docs/design/systems/skeumorphism/DESIGN.md +71 -0
  298. package/docs/design/systems/skeumorphism/manifest.json +54 -0
  299. package/docs/design/systems/skeumorphism/tokens.css +63 -0
  300. package/docs/design/systems/sleek/DESIGN.md +71 -0
  301. package/docs/design/systems/sleek/manifest.json +54 -0
  302. package/docs/design/systems/sleek/tokens.css +63 -0
  303. package/docs/design/systems/spacious/DESIGN.md +71 -0
  304. package/docs/design/systems/spacious/manifest.json +54 -0
  305. package/docs/design/systems/spacious/tokens.css +63 -0
  306. package/docs/design/systems/storytelling/DESIGN.md +71 -0
  307. package/docs/design/systems/storytelling/manifest.json +54 -0
  308. package/docs/design/systems/storytelling/tokens.css +63 -0
  309. package/docs/design/systems/tom-modern/DESIGN.md +361 -0
  310. package/docs/design/systems/tom-modern/manifest.json +16 -0
  311. package/docs/design/systems/tom-modern/tokens.css +99 -0
  312. package/docs/design/systems/vibrant/DESIGN.md +71 -0
  313. package/docs/design/systems/vibrant/manifest.json +54 -0
  314. package/docs/design/systems/vibrant/tokens.css +63 -0
  315. package/docs/design/systems/vintage/DESIGN.md +71 -0
  316. package/docs/design/systems/vintage/manifest.json +54 -0
  317. package/docs/design/systems/vintage/tokens.css +63 -0
  318. package/docs/design/systems/warm-editorial/DESIGN.md +65 -0
  319. package/docs/design/systems/warm-editorial/manifest.json +54 -0
  320. package/docs/design/systems/warm-editorial/tokens.css +63 -0
  321. package/docs/goal-context/01-goal-authoring-checks.md +18 -0
  322. package/docs/goal-context/steward-directives-2026-09-28.md +44 -0
  323. package/graphs/catalog/catalog.yaml +615 -0
  324. package/graphs/default-loop.yaml +1 -1
  325. package/graphs/document-loop.yaml +1 -1
  326. package/graphs/examples/stale-draft-digest/digest.ts +26 -0
  327. package/graphs/examples/stale-draft-digest/recipes.yaml +8 -0
  328. package/graphs/examples/stale-draft-digest/stale-draft-digest.yaml +22 -0
  329. package/graphs/heal/heal-loop.yaml +155 -0
  330. package/graphs/heal/recipes.yaml +19 -0
  331. package/graphs/implement-loop.yaml +2 -2
  332. package/graphs/intake/intake-daily.yaml +55 -0
  333. package/graphs/intake/recipes.yaml +16 -0
  334. package/graphs/landing/landing-heal.yaml +22 -0
  335. package/graphs/landing/recipes.yaml +8 -0
  336. package/graphs/launch/launch-head.yaml +66 -0
  337. package/graphs/launch/recipes.yaml +8 -0
  338. package/graphs/operate-loop.yaml +1 -1
  339. package/graphs/ops/docs-publish.yaml +31 -0
  340. package/graphs/ops/recipes.yaml +8 -0
  341. package/graphs/release/recipes.yaml +38 -0
  342. package/graphs/release/release-loop.yaml +40 -0
  343. package/graphs/research-loop.yaml +1 -1
  344. package/graphs/steward/recipes.yaml +12 -0
  345. package/graphs/steward/steward.yaml +45 -0
  346. package/graphs/video/broll-line.yaml +54 -0
  347. package/package.json +7 -5
  348. package/plugins/job-coach/.agents/plugins/marketplace.json +12 -0
  349. package/plugins/job-coach/.codex-plugin/plugin.json +6 -0
  350. package/plugins/job-coach/.mcp.json +9 -0
  351. package/plugins/job-coach/README.md +20 -0
  352. package/plugins/job-coach/connectors/ncs/server.ts +89 -0
  353. package/plugins/job-coach/examples/interview-sample.md +11 -0
  354. package/plugins/job-coach/graphs/course-links.ts +46 -0
  355. package/plugins/job-coach/graphs/recipes.yaml +18 -0
  356. package/plugins/job-coach/graphs/report.yaml +20 -0
  357. package/plugins/job-coach/graphs/run-step.ts +108 -0
  358. package/plugins/job-coach/plugin.json +13 -0
  359. package/plugins/job-coach/plugin.ts +6 -0
  360. package/plugins/job-coach/skills/career-report/SKILL.md +6 -0
  361. package/plugins/job-coach/skills/interview-to-profile/SKILL.md +6 -0
  362. package/plugins/job-coach/skills/run-report/SKILL.md +15 -0
  363. package/scripts/backup/elanous-backup.sh +139 -13
  364. package/scripts/backup/elanous-restore.sh +122 -0
  365. package/scripts/ci-daemon-port-gate.ts +164 -0
  366. package/scripts/ci-typecheck-changed.ts +15 -1
  367. package/scripts/cli-json-exit-scan.ts +126 -0
  368. package/scripts/codex-quota-alert-format.ts +52 -0
  369. package/scripts/codex-quota-alert.ts +63 -13
  370. package/scripts/continuation-dogfood.ts +2 -1
  371. package/scripts/coord-channel-watch.sh +5 -5
  372. package/scripts/coord-tracks.json +5 -4
  373. package/scripts/cron-run.ts +37 -16
  374. package/scripts/daemon-port-baseline.txt +9 -0
  375. package/scripts/design/extract-corpus-bench.ts +469 -0
  376. package/scripts/design/extract-corpus-score.ts +510 -0
  377. package/scripts/design/vendor-open-design-systems.ts +100 -0
  378. package/scripts/docs-lint.ts +1 -1
  379. package/scripts/fleet/node-setup.sh +38 -4
  380. package/scripts/heal/run-role.ts +328 -0
  381. package/scripts/install-role-watch.sh +95 -0
  382. package/scripts/install.ps1 +11 -1
  383. package/scripts/install.sh +81 -9
  384. package/scripts/isolation-hardcode-baseline.txt +1 -1
  385. package/scripts/landing-heal/must-fix-match.ts +37 -0
  386. package/scripts/landing-heal/run-mission.ts +101 -0
  387. package/scripts/lib/pwa-scenarios/acp-replay.ts +79 -0
  388. package/scripts/lib/pwa-scenarios/cdp-driver.ts +67 -0
  389. package/scripts/lib/pwa-scenarios/runner.ts +200 -0
  390. package/scripts/lib/pwa-scenarios/scenarios.ts +202 -0
  391. package/scripts/market/db-check.ts +212 -0
  392. package/scripts/market-posture-cycle.ts +63 -4
  393. package/scripts/nightly-docops.ts +1 -1
  394. package/scripts/ops/channel-bot-token-migrate.ts +146 -0
  395. package/scripts/ops-health-check.ts +15 -3
  396. package/scripts/pty-scenarios/run.ts +272 -0
  397. package/scripts/public-leak-baseline.txt +0 -7
  398. package/scripts/publish-internal-dist.ts +119 -0
  399. package/scripts/pwa-scenarios.ts +106 -0
  400. package/scripts/rebrand-elanous.ts +1 -1
  401. package/scripts/release-loop/cutoff.ts +139 -0
  402. package/scripts/release-loop/docs-land-node.ts +65 -0
  403. package/scripts/release-loop/docs-node.ts +172 -0
  404. package/scripts/release-loop/gate-diff.ts +29 -0
  405. package/scripts/release-loop/gate-node.ts +353 -0
  406. package/scripts/release-loop/node-verdict.ts +85 -0
  407. package/scripts/release-loop/prepare-node.ts +31 -0
  408. package/scripts/release-loop/publish-node.ts +57 -0
  409. package/scripts/release-loop/pwa-node-verdict.ts +45 -0
  410. package/scripts/release-loop/pwa-scenarios-node.ts +140 -0
  411. package/scripts/release-loop/release-docs.ts +102 -0
  412. package/scripts/release-loop/tui-node-checks.ts +29 -0
  413. package/scripts/release-loop/tui-sim-node.ts +113 -0
  414. package/scripts/release-loop/upgrade-node.ts +25 -0
  415. package/scripts/release-loop/verify-node.ts +21 -0
  416. package/scripts/release-loop/version-node.ts +147 -0
  417. package/scripts/release-upgrade-check.sh +53 -0
  418. package/scripts/se-mission-prepare.ts +9 -15
  419. package/scripts/test-deterministic.ts +2 -1
  420. package/scripts/uninstall.sh +10 -3
  421. package/scripts/video-broll-line.ts +89 -0
  422. package/scripts/waitlist-daily-digest.ts +108 -0
  423. package/scripts/window-landings.sh +1 -1
  424. package/skills/motion-broll/LICENSE +25 -0
  425. package/skills/motion-broll/SKILL.md +150 -0
  426. package/skills/motion-broll/SOURCE.md +6 -0
  427. package/skills/motion-broll/engine/base.css +19 -0
  428. package/skills/motion-broll/engine/beats.js +11 -0
  429. package/skills/motion-broll/engine/build.py +21 -0
  430. package/skills/motion-broll/engine/fonts/Geist-Variable.woff2 +0 -0
  431. package/skills/motion-broll/engine/fonts/GeistMono-Medium.woff2 +0 -0
  432. package/skills/motion-broll/engine/fonts/OFL-Geist.txt +92 -0
  433. package/skills/motion-broll/engine/motion.js +146 -0
  434. package/skills/motion-broll/engine/render.js +22 -0
  435. package/skills/motion-broll/examples/opus-aoe2/01-opus-drop.html +41 -0
  436. package/skills/motion-broll/examples/opus-aoe2/02-pip-builds.html +110 -0
  437. package/skills/motion-broll/examples/opus-aoe2/03-effort-slider.html +38 -0
  438. package/skills/motion-broll/examples/opus-aoe2/04-master-prompt.html +56 -0
  439. package/skills/motion-broll/examples/opus-aoe2/05-low-vs-max.html +49 -0
  440. package/skills/motion-broll/examples/opus-aoe2/06-chapter.html +18 -0
  441. package/skills/motion-broll/examples/opus-aoe2/plan.json +14 -0
  442. package/skills/motion-broll/reference/engine-api.md +106 -0
  443. package/skills/motion-broll/scripts/composite.py +14 -0
  444. package/skills/motion-broll/scripts/inspect_video.py +34 -0
  445. package/skills/motion-broll/scripts/make_pages.py +34 -0
  446. package/skills/motion-broll/scripts/setup.sh +16 -0
  447. package/skills/motion-broll/scripts/words.py +13 -0
  448. package/skills/motion-broll/templates/compare.html +135 -0
  449. package/skills/motion-broll/templates/viewer.html +97 -0
  450. package/skills/omni-digest/SKILL.md +260 -0
  451. package/skills/omni-digest/digest.md +197 -0
  452. package/skills/omni-digest/docs/diagrams/noncode-terminal-promotion-path-2026-08-13.mmd +32 -0
  453. package/skills/omni-digest/package-lock.json +558 -0
  454. package/skills/omni-digest/package.json +13 -0
  455. package/skills/omni-digest/scripts/main.ts +404 -0
  456. package/skills/omni-digest/src/delegate.ts +34 -0
  457. package/skills/omni-digest/src/detect.ts +46 -0
  458. package/skills/omni-digest/src/diagram.ts +72 -0
  459. package/skills/omni-digest/src/domain-staging.ts +50 -0
  460. package/skills/omni-digest/src/env.ts +38 -0
  461. package/skills/omni-digest/src/fetch.ts +237 -0
  462. package/skills/omni-digest/src/media.ts +180 -0
  463. package/skills/omni-digest/src/obsidian.ts +69 -0
  464. package/skills/omni-digest/src/ocr.ts +149 -0
  465. package/skills/omni-digest/src/router.ts +60 -0
  466. package/skills/omni-digest/src/summarize.ts +87 -0
  467. package/skills/omni-digest/src/types.ts +124 -0
  468. package/skills/omni-digest/src/util.ts +34 -0
  469. package/skills/omni-digest/src/visual.ts +129 -0
  470. package/skills/omni-digest/src/x-api.ts +151 -0
  471. package/skills/omni-digest/tsconfig.json +13 -0
  472. package/src/a2a/agent-card.ts +29 -0
  473. package/src/a2a/server.ts +173 -0
  474. package/src/acp/auto-persist.ts +3 -6
  475. package/src/acp/backend-registry.ts +6 -10
  476. package/src/acp/channel-browser-shell.ts +1 -535
  477. package/src/acp/client.ts +106 -36
  478. package/src/acp/fs-roots.ts +20 -4
  479. package/src/acp/obsidian-tags.ts +6 -3
  480. package/src/acp/server.ts +189 -32
  481. package/src/agent/pty-binding.ts +1 -1
  482. package/src/agent/spawn-embodied-agent-in-vw.ts +5 -336
  483. package/src/agent/subagent-callable.ts +39 -1
  484. package/src/agent-mission/browser-login.ts +241 -0
  485. package/src/agent-mission/capabilities-cli.ts +33 -0
  486. package/src/agent-mission/capability-matrix.ts +31 -0
  487. package/src/agent-mission/capability-readers.ts +79 -0
  488. package/src/agent-mission/capability-types.ts +15 -0
  489. package/src/agent-mission/claude-headless.ts +131 -0
  490. package/src/agent-mission/claude-subscription.ts +57 -0
  491. package/src/agent-mission/doc-guided-install.ts +185 -0
  492. package/src/agent-mission/driver.ts +821 -69
  493. package/src/agent-mission/env-profile.ts +68 -0
  494. package/src/agent-mission/handoff.ts +128 -0
  495. package/src/agent-mission/in-agent-plugin.ts +311 -0
  496. package/src/agent-mission/mission-cli.ts +19 -1
  497. package/src/agent-mission/parse.ts +9 -4
  498. package/src/agent-mission/pr-review-watch.ts +62 -13
  499. package/src/agent-mission/resource-ladder.ts +187 -0
  500. package/src/agent-mission/tool-install.ts +249 -0
  501. package/src/agent-mission/tool-ladder.ts +37 -0
  502. package/src/agent-room/room-builder.ts +6 -600
  503. package/src/agent-substrate/review-intent.ts +43 -1
  504. package/src/auth/scope.ts +8 -4
  505. package/src/auth/temp-tokens.ts +131 -0
  506. package/src/auto-research/obsidian-bridge.ts +2 -0
  507. package/src/autopilot/build/integrity-gate.ts +27 -4
  508. package/src/autopilot/build/isolated-instance.ts +2 -1
  509. package/src/autopilot/build/llm-conflict-merge.ts +27 -0
  510. package/src/autopilot/llm-control-brain.ts +54 -12
  511. package/src/autopilot/mission-engine.ts +15 -1
  512. package/src/autopilot/mission-notify.ts +4 -2
  513. package/src/autopilot/mission-origin.ts +5 -5
  514. package/src/autopilot/mission-phase-track.ts +52 -0
  515. package/src/autopilot/mission-tool.ts +1 -1
  516. package/src/autopilot/pty-control-loop.ts +94 -2
  517. package/src/autopilot/track-agent.ts +138 -0
  518. package/src/autopilot/track-courier.ts +153 -0
  519. package/src/boot/acp-server.ts +16 -2
  520. package/src/boot/check-same-origin.ts +19 -5
  521. package/src/boot/daemon-multi-llm-runtime.ts +14 -8
  522. package/src/boot/daemon-prompt-turn.ts +2 -0
  523. package/src/boot/daemon-runtime.ts +36 -14
  524. package/src/boot/daemon-tools/index.ts +16 -0
  525. package/src/boot/daemon-tools/self-implement.ts +4 -0
  526. package/src/boot/daemon-tools/types.ts +3 -0
  527. package/src/browser-cdp/chrome-flags.ts +7 -0
  528. package/src/browser-cdp/client.ts +2 -0
  529. package/src/browser-pane/mount.ts +1 -246
  530. package/src/budget/codex-reset-credit-state.ts +15 -0
  531. package/src/budget/fetchers/codex.ts +2 -1
  532. package/src/budget/run-usage-rollup.ts +11 -4
  533. package/src/budget/unified-usage.ts +2 -1
  534. package/src/capture/tui-self-report.ts +10 -0
  535. package/src/channel-bot-token.ts +126 -0
  536. package/src/chat/index.ts +21 -45
  537. package/src/chat/input-text-key.ts +2 -2
  538. package/src/chat/mode/manual.ts +2 -4
  539. package/src/chat/pickers/state.ts +10 -27
  540. package/src/chat/search/modal.ts +14 -2
  541. package/src/chat/tool-render/types.ts +1 -1
  542. package/src/chat/turn-typeahead.ts +2 -1
  543. package/src/chat/wrap.ts +6 -8
  544. package/src/cli/__fixtures__/agent-help-before/agent.txt +18 -0
  545. package/src/cli/__fixtures__/agent-help-before/registry.txt +13 -0
  546. package/src/cli/__fixtures__/agent-help-before/root.txt +100 -0
  547. package/src/cli/__fixtures__/agent-help-before/tier.txt +15 -0
  548. package/src/cli/a2a-cli.ts +52 -0
  549. package/src/cli/agent-cli.ts +721 -0
  550. package/src/cli/autopilot-cli.ts +739 -0
  551. package/src/cli/bg-launch.ts +20 -4
  552. package/src/cli/claude-plugin-setup.ts +199 -0
  553. package/src/cli/config-test-sync.ts +94 -10
  554. package/src/cli/connector-cli.ts +204 -0
  555. package/src/cli/control-cli.ts +220 -0
  556. package/src/cli/control-join-cli.ts +142 -0
  557. package/src/cli/docs-cli.ts +38 -0
  558. package/src/cli/doctor-cli.ts +225 -26
  559. package/src/cli/doctor-distro.ts +17 -1
  560. package/src/cli/doctor-fix.ts +145 -17
  561. package/src/cli/doctor-llm-assist.ts +71 -0
  562. package/src/cli/doctor-private-files.ts +66 -0
  563. package/src/cli/doctor-readiness.ts +8 -5
  564. package/src/cli/fleet-cli.ts +63 -0
  565. package/src/cli/g6a-registration-probe.ts +16 -0
  566. package/src/cli/git-install-plan.ts +51 -0
  567. package/src/cli/hooks-cli.ts +44 -0
  568. package/src/cli/ingest-token-cli.ts +21 -0
  569. package/src/cli/intake-cli.ts +416 -0
  570. package/src/cli/labels-cli.ts +74 -0
  571. package/src/cli/leader-cli.ts +10 -159
  572. package/src/cli/live-cli.ts +48 -0
  573. package/src/cli/llm-detect-cli.ts +130 -0
  574. package/src/cli/logs-cli.ts +231 -7
  575. package/src/cli/machine-cli.ts +38 -0
  576. package/src/cli/mcp-call.ts +43 -13
  577. package/src/cli/mcp-gateway-cli.ts +90 -0
  578. package/src/cli/mcp-login.ts +116 -8
  579. package/src/cli/mcp-reload.ts +20 -3
  580. package/src/cli/nexus-dist.ts +18 -13
  581. package/src/cli/nexus-ios-bind.ts +20 -7
  582. package/src/cli/ops-cli.ts +225 -0
  583. package/src/cli/plugin-cli.ts +103 -0
  584. package/src/cli/pod-cli.ts +83 -0
  585. package/src/cli/port-lease-local.ts +124 -0
  586. package/src/cli/pr-cli.ts +12 -1
  587. package/src/cli/provider-cli.ts +720 -0
  588. package/src/cli/pty-record-cli.ts +63 -0
  589. package/src/cli/pty-takeover-cli.ts +57 -40
  590. package/src/cli/pty-web-address.ts +52 -0
  591. package/src/cli/publish-cli.ts +44 -0
  592. package/src/cli/pwa-build.ts +18 -12
  593. package/src/cli/pwa-dev.ts +13 -8
  594. package/src/cli/pwa-registry.ts +6 -0
  595. package/src/cli/pwa-share.ts +65 -22
  596. package/src/cli/pwa-show.ts +20 -4
  597. package/src/cli/pwa-start.ts +99 -27
  598. package/src/cli/pwa-test.ts +201 -96
  599. package/src/cli/release-cli.ts +90 -7
  600. package/src/cli/remotes-cli.ts +20 -1
  601. package/src/cli/remotes.ts +2 -1
  602. package/src/cli/repo-cli.ts +315 -36
  603. package/src/cli/research-cli.ts +66 -0
  604. package/src/cli/role-cli.ts +320 -0
  605. package/src/cli/schedule-cli.ts +246 -0
  606. package/src/cli/self-update.ts +98 -10
  607. package/src/cli/setup-cli.ts +64 -2
  608. package/src/cli/shadow-cli.ts +188 -0
  609. package/src/cli/share-auto-mount.ts +12 -8
  610. package/src/cli/start-cli.ts +221 -0
  611. package/src/cli/stdout-flush.ts +8 -0
  612. package/src/cli/storage-cli.ts +334 -0
  613. package/src/cli/tailscale-serve.ts +34 -19
  614. package/src/cli/tasks-cli.ts +176 -0
  615. package/src/cli/test-state-dir-flag.ts +1 -1
  616. package/src/cli/usage-cli.ts +15 -4
  617. package/src/cli/where-cli.ts +22 -55
  618. package/src/code-edit/diff-render.ts +6 -32
  619. package/src/code-edit/source-delta-browser.ts +0 -1
  620. package/src/codex/models.ts +1 -1
  621. package/src/config.ts +8 -13
  622. package/src/connectors/event-ledger.ts +41 -0
  623. package/src/connectors/linear-projector.ts +88 -0
  624. package/src/connectors/linear.ts +143 -0
  625. package/src/connectors/types.ts +19 -0
  626. package/src/control-plane/lease-holder.ts +41 -0
  627. package/src/control-plane/ledger.ts +146 -0
  628. package/src/control-plane/light-member.ts +164 -0
  629. package/src/control-plane/member-tokens.ts +88 -0
  630. package/src/control-plane/member.ts +159 -0
  631. package/src/control-plane/port-lease-heartbeat.ts +101 -0
  632. package/src/control-plane/ports.ts +40 -0
  633. package/src/control-plane/primary.ts +169 -0
  634. package/src/control-plane/server.ts +216 -0
  635. package/src/dashboard/acp-boot.ts +11 -38
  636. package/src/dashboard/assistant-render-state-runtime.ts +2 -2
  637. package/src/dashboard/assistant-sample-runtime.ts +2 -2
  638. package/src/dashboard/auto-compact-runtime.ts +11 -16
  639. package/src/dashboard/browser-help-runtime.ts +2 -3
  640. package/src/dashboard/chat/acp-chat.ts +2 -5
  641. package/src/dashboard/code-edit-post-turn-runtime.ts +1 -2
  642. package/src/dashboard/compact-surface-assembly.ts +0 -14
  643. package/src/dashboard/compact-surface-dispatch.ts +1 -38
  644. package/src/dashboard/compact-surface-inventory.ts +0 -8
  645. package/src/dashboard/compact-surface-runtime.ts +0 -14
  646. package/src/dashboard/context-menu-provider-boot.ts +0 -9
  647. package/src/dashboard/context-window-runtime-boot.ts +0 -37
  648. package/src/dashboard/index.ts +278 -2558
  649. package/src/dashboard/input/chat-main-plain-turn-runtime.ts +0 -6
  650. package/src/dashboard/input/chat-main-slash-command.ts +2 -2
  651. package/src/dashboard/input/dashboard-priority-key-route.ts +1 -43
  652. package/src/dashboard/input/mouse-modal-surface-runtime.ts +1 -5
  653. package/src/dashboard/input/mouse-wiring.ts +2 -3
  654. package/src/dashboard/layout-display-runtime-registration.ts +0 -10
  655. package/src/dashboard/modals/pane-multi.ts +1 -1
  656. package/src/dashboard/replay-preview.ts +1 -1
  657. package/src/dashboard/runtime/approvers.ts +0 -1
  658. package/src/dashboard/runtime/state-snapshot.ts +0 -90
  659. package/src/dashboard/scenario-runtime-boot.ts +16 -16
  660. package/src/dashboard/slash-runtime/dashboard-handlers.ts +134 -1456
  661. package/src/dashboard/slash-runtime/design-pick.ts +96 -0
  662. package/src/dashboard/slash-runtime/help-from-registry.ts +77 -0
  663. package/src/dashboard/surface-registry-wiring.ts +2 -15
  664. package/src/dashboard/turn-message-runtime.ts +0 -4
  665. package/src/dashboard/turn-preamble.ts +1 -1
  666. package/src/dashboard/turn-stream-formatter.ts +2 -2
  667. package/src/dashboard/turn-stream-runtime.ts +2 -2
  668. package/src/dashboard-pane-context-menu.ts +0 -14
  669. package/src/debug/log.ts +7 -0
  670. package/src/decide/boundary-shadow.ts +131 -0
  671. package/src/design/apply-direction.ts +209 -0
  672. package/src/design/css-root-tokens.ts +89 -0
  673. package/src/design/custom-system-create.ts +230 -0
  674. package/src/design/design-directions.ts +61 -41
  675. package/src/design/design-gate.ts +241 -0
  676. package/src/design/design-library.ts +57 -0
  677. package/src/design/design-previews.ts +138 -0
  678. package/src/design/design-systems.ts +61 -0
  679. package/src/design/lint-artifact-run.ts +46 -6
  680. package/src/design/lint-artifact.ts +5 -1
  681. package/src/design/open-design-client.ts +247 -0
  682. package/src/design/system-from-extract.ts +767 -0
  683. package/src/design/system-schema.ts +123 -0
  684. package/src/discord-slash-wire.ts +2 -1
  685. package/src/discord-test-runner.ts +2 -1
  686. package/src/discord-voice-wire.ts +2 -1
  687. package/src/discord.ts +1 -1
  688. package/src/dispatch/opportunistic-launcher.ts +24 -1
  689. package/src/domains/ops-status.ts +35 -2
  690. package/src/domains/outbound-alert.ts +16 -4
  691. package/src/domains/repeated-failure.ts +89 -0
  692. package/src/domains/schedule-manage-tool.ts +28 -8
  693. package/src/domains/schedule-migrate.ts +22 -4
  694. package/src/domains/schedule-registry.ts +88 -33
  695. package/src/domains/schedule-runs.ts +132 -0
  696. package/src/domains/schedule-state.ts +152 -0
  697. package/src/element-registry/address.ts +1 -3
  698. package/src/git-fs/gh-cli.ts +47 -17
  699. package/src/git-fs/retry.ts +1 -0
  700. package/src/git-fs/runner.ts +1 -0
  701. package/src/git-fs/worktree.ts +6 -5
  702. package/src/github/pr-labels.ts +68 -0
  703. package/src/graph-kinds/plugin-nodes.ts +60 -0
  704. package/src/graph-kinds/registry.ts +118 -0
  705. package/src/graph-runner/graph-cli.ts +103 -0
  706. package/src/graph-runner/graph-notify.ts +220 -0
  707. package/src/graph-runner/graph-tick.ts +119 -0
  708. package/src/graph-runner/release-manifest.ts +93 -0
  709. package/src/graph-runner/runner.ts +457 -0
  710. package/src/grok/credential.ts +158 -5
  711. package/src/grounding/ensure-grounding.ts +131 -0
  712. package/src/grounding/mirror-export.ts +89 -0
  713. package/src/grounding/mirror-manifest.ts +252 -0
  714. package/src/grounding/sources-cli.ts +209 -0
  715. package/src/grounding/sources.ts +333 -0
  716. package/src/grounding/token.ts +115 -0
  717. package/src/harness/harness-cli-command.ts +352 -19
  718. package/src/harness/harness-pod-dispatch.ts +110 -0
  719. package/src/harness/harness-stop.ts +131 -0
  720. package/src/harness/harness-substrate-default.ts +40 -0
  721. package/src/harness/harness-worktrees.ts +1 -1
  722. package/src/harness/harness-write-boundary.ts +2 -0
  723. package/src/harness/llm-decompose.ts +2 -1
  724. package/src/harness/self-send-decide.ts +224 -0
  725. package/src/harness/shell-relay.ts +5 -0
  726. package/src/hooks/providers.ts +77 -0
  727. package/src/hooks/queue.ts +73 -0
  728. package/src/hooks/receiver.ts +133 -0
  729. package/src/index.ts +666 -3406
  730. package/src/input-core/dispatcher.ts +1 -1
  731. package/src/input-core/drag-esc-interceptor.ts +1 -1
  732. package/src/instance/current.ts +5 -5
  733. package/src/instance/leader.ts +10 -326
  734. package/src/instance/nexus-run-refusal.ts +27 -92
  735. package/src/instance/project-local-exclude.ts +27 -0
  736. package/src/instance/resolve.ts +40 -175
  737. package/src/intake-plane/capture.ts +14 -1
  738. package/src/intake-plane/check.ts +34 -14
  739. package/src/intake-plane/collect-github.ts +258 -0
  740. package/src/intake-plane/collect-pod.ts +100 -0
  741. package/src/intake-plane/collect-telegram-saved.ts +86 -0
  742. package/src/intake-plane/digest.ts +102 -0
  743. package/src/intake-plane/enrich-plugins.ts +1 -1
  744. package/src/intake-plane/front-classifier.ts +56 -0
  745. package/src/intake-plane/front-route-classifier.ts +80 -0
  746. package/src/intake-plane/front-route-rules.ts +152 -0
  747. package/src/intake-plane/grounding-docs.ts +185 -0
  748. package/src/intake-plane/harness-target.ts +20 -0
  749. package/src/intake-plane/intake-to-tasks.ts +303 -0
  750. package/src/intake-plane/items.ts +247 -0
  751. package/src/intake-plane/link-ledger.ts +27 -0
  752. package/src/intake-plane/route.ts +104 -0
  753. package/src/intake-plane/runtime-callables.ts +3 -1
  754. package/src/intake-plane/sketch-ledger.ts +34 -0
  755. package/src/intake-plane/slash.ts +30 -2
  756. package/src/intake-plane/submit-intake-work.ts +160 -0
  757. package/src/intake-plane/telegram-work.ts +56 -0
  758. package/src/iul/sidebar-shell.ts +0 -165
  759. package/src/launch-head/capability-check.ts +162 -0
  760. package/src/launch-head/launch-head-cli.ts +242 -0
  761. package/src/launch-head/load-balance.ts +81 -0
  762. package/src/live/detail-switch.ts +175 -0
  763. package/src/llm/provider-detect.ts +247 -0
  764. package/src/llm/provider-probe.ts +57 -0
  765. package/src/llm.ts +55 -23
  766. package/src/log-entry.ts +1 -1
  767. package/src/log-pane/attachment-popup.ts +1 -2
  768. package/src/loops/loop-cli.ts +37 -0
  769. package/src/loops/registry.ts +174 -0
  770. package/src/market/official-keys.ts +5 -0
  771. package/src/market/publish.ts +273 -0
  772. package/src/market/signed-index.ts +156 -0
  773. package/src/market/tgz.ts +121 -0
  774. package/src/mcp/client.ts +1 -1
  775. package/src/mcp/mcp-oauth.ts +40 -5
  776. package/src/mcp/server.ts +75 -7
  777. package/src/mcp-gateway/gateway.ts +128 -0
  778. package/src/mcp-gateway/pat-store.ts +124 -0
  779. package/src/mss/logging/log-store.ts +91 -2
  780. package/src/mss/logging/scoped-level.ts +5 -9
  781. package/src/native-tool-catalog.ts +64 -343
  782. package/src/nexus/api/connect-info.ts +23 -25
  783. package/src/nexus/api/context-url.ts +1 -1
  784. package/src/nexus/api/design-check.ts +90 -59
  785. package/src/nexus/api/design-previews-route.ts +182 -0
  786. package/src/nexus/api/design-system-create-route.ts +123 -0
  787. package/src/nexus/api/graph-kinds.ts +69 -0
  788. package/src/nexus/api/graphs-api.ts +221 -0
  789. package/src/nexus/api/harness-api.ts +31 -2
  790. package/src/nexus/api/health.ts +15 -0
  791. package/src/nexus/api/http-server.ts +274 -43
  792. package/src/nexus/api/image-generate.ts +3 -0
  793. package/src/nexus/api/ingest-token.ts +175 -0
  794. package/src/nexus/api/intake-ledger-api.ts +54 -0
  795. package/src/nexus/api/intake-route.ts +111 -0
  796. package/src/nexus/api/json-response.ts +33 -0
  797. package/src/nexus/api/live-detail.ts +47 -0
  798. package/src/nexus/api/live-shipped.ts +78 -0
  799. package/src/nexus/api/log-fabric.ts +33 -2
  800. package/src/nexus/api/markdown-publish.ts +3 -2
  801. package/src/nexus/api/mcp-http.ts +14 -9
  802. package/src/nexus/api/mcp-oauth-hint.ts +30 -0
  803. package/src/nexus/api/mcp-public-allowlist.ts +33 -0
  804. package/src/nexus/api/merge-approvals-gate.ts +79 -0
  805. package/src/nexus/api/merge-approvals.ts +306 -0
  806. package/src/nexus/api/meta-api.ts +4 -0
  807. package/src/nexus/api/next-fluent-wiring.ts +7 -9
  808. package/src/nexus/api/plugins-market.ts +125 -0
  809. package/src/nexus/api/pod-credential-api.ts +133 -0
  810. package/src/nexus/api/public-routes.ts +80 -0
  811. package/src/nexus/api/rest-route-paths.ts +15 -0
  812. package/src/nexus/api/schedules-action.ts +12 -3
  813. package/src/nexus/api/schedules-read.ts +228 -0
  814. package/src/nexus/api/sessions-store.ts +8 -2
  815. package/src/nexus/api/setup-answer-priority.ts +130 -0
  816. package/src/nexus/api/setup-channel-bot.ts +56 -0
  817. package/src/nexus/api/setup-child-llm.ts +228 -0
  818. package/src/nexus/api/setup-obsidian-skills.ts +93 -0
  819. package/src/nexus/api/task-cards-api.ts +34 -0
  820. package/src/nexus/api/tasks-create.ts +136 -0
  821. package/src/nexus/api/telegram-trigger-bot.ts +3 -3
  822. package/src/nexus/api/terminals.ts +204 -18
  823. package/src/nexus/api/trace.ts +354 -0
  824. package/src/nexus/api/vault-api.ts +140 -7
  825. package/src/nexus/api/worktrees.ts +18 -2
  826. package/src/nexus/boot/register-mcp-clients.ts +38 -4
  827. package/src/nexus/daemon-endpoint.ts +85 -0
  828. package/src/nexus/default-port.ts +1 -0
  829. package/src/nexus/index.ts +329 -111
  830. package/src/nexus/onboarding/pwa-share-prompt.ts +31 -8
  831. package/src/nexus/onboarding/tailscale-probe.ts +9 -1
  832. package/src/nexus/setup-status.ts +58 -0
  833. package/src/nexus/supervisor/lock.ts +8 -0
  834. package/src/nexus/webterm/pty.ts +15 -0
  835. package/src/oauth/codex-account-rotation.ts +122 -16
  836. package/src/oauth/codex-account-store.ts +88 -19
  837. package/src/oauth/codex-quota-policy.ts +55 -0
  838. package/src/oauth/store.ts +28 -25
  839. package/src/obsidian/default-vault.ts +17 -0
  840. package/src/obsidian/vault-write-guard.ts +46 -0
  841. package/src/onboarding/help/llm.md +2 -2
  842. package/src/onboarding.ts +2 -2
  843. package/src/panes/alt-skip-predicate.ts +4 -3
  844. package/src/panes/external-terminal-pane.ts +3 -4
  845. package/src/panes/factory.ts +1 -18
  846. package/src/panes/index.ts +1 -5
  847. package/src/panes/pane-cycle.ts +1 -1
  848. package/src/panes/types.ts +1 -1
  849. package/src/platform/env-literal.ts +4 -0
  850. package/src/plugin-hooks/dispatcher.ts +10 -4
  851. package/src/plugins/core/host.ts +94 -4
  852. package/src/plugins/core/manifest.ts +104 -7
  853. package/src/plugins/install/market-fetch.ts +249 -0
  854. package/src/plugins/install/plugin-install.ts +387 -0
  855. package/src/policy/claude-subscription-guard.ts +25 -0
  856. package/src/preview/terminal.ts +24 -1
  857. package/src/preview-pane/mount.ts +1 -142
  858. package/src/prompt/references.ts +4 -51
  859. package/src/pty-shell/pty-control-ipc.ts +57 -3
  860. package/src/pty-shell/pty-mouse.ts +75 -0
  861. package/src/pty-shell/pty-recording.ts +108 -0
  862. package/src/pty-shell/registry.ts +53 -3
  863. package/src/python/resolve-python.ts +1 -1
  864. package/src/release-loop/manifest.ts +65 -0
  865. package/src/release-loop/release-note.ts +174 -0
  866. package/src/roles/lease-cas.ts +52 -0
  867. package/src/roles/machine-name.ts +48 -0
  868. package/src/roles/machine-profile.ts +65 -0
  869. package/src/roles/role-lease-read.ts +81 -0
  870. package/src/roles/role-lease.ts +63 -0
  871. package/src/roles/role-watch.ts +69 -0
  872. package/src/self-dev/ask-launch-flow.ts +39 -22
  873. package/src/self-dev/ask-launch-io.ts +1 -1
  874. package/src/self-dev/dev-cli.ts +250 -139
  875. package/src/self-dev/dev-pipeline.ts +80 -8
  876. package/src/self-dev/draft-sweep.ts +231 -0
  877. package/src/self-dev/draft-triage-rules.ts +42 -0
  878. package/src/self-dev/entrance-baseline.ts +156 -4
  879. package/src/self-dev/fabric-decompose-adapter.ts +10 -0
  880. package/src/self-dev/launch-preflight.ts +1 -1
  881. package/src/self-dev/orchestrate.ts +297 -20
  882. package/src/self-dev/repair-signals.ts +6 -0
  883. package/src/self-dev/run-store.ts +20 -5
  884. package/src/self-dev/run-supervisor.ts +43 -3
  885. package/src/self-implement/abandoned-classification.ts +15 -1
  886. package/src/self-implement/blocked-draft-policy.ts +6 -0
  887. package/src/self-implement/budget-gate.ts +236 -0
  888. package/src/self-implement/child-llm-preference.ts +84 -0
  889. package/src/self-implement/decision-events.ts +57 -0
  890. package/src/self-implement/decision-signal-press.ts +5 -2
  891. package/src/self-implement/dependency-change-gate.ts +90 -0
  892. package/src/self-implement/gate-baseline.ts +32 -1
  893. package/src/self-implement/gate-cli.ts +29 -7
  894. package/src/self-implement/gate-scope.ts +7 -1
  895. package/src/self-implement/goal-author-decompose.ts +22 -4
  896. package/src/self-implement/goal-author.ts +23 -2
  897. package/src/self-implement/goal-boundary.ts +65 -0
  898. package/src/self-implement/goal-clarification-escalation.ts +1 -0
  899. package/src/self-implement/goal-documents-dir.ts +6 -1
  900. package/src/self-implement/goal-execution-records.ts +58 -0
  901. package/src/self-implement/goal-run-store.ts +42 -24
  902. package/src/self-implement/graph-authority.ts +13 -28
  903. package/src/self-implement/graph-catalog.ts +48 -0
  904. package/src/self-implement/graph-run-contract.ts +127 -0
  905. package/src/self-implement/graph-templates.ts +14 -7
  906. package/src/self-implement/graph-yaml.ts +35 -6
  907. package/src/self-implement/harness-policy-gates.ts +42 -0
  908. package/src/self-implement/headless-elanous-driver.ts +30 -6
  909. package/src/self-implement/heal-triage.ts +229 -0
  910. package/src/self-implement/host-regate.ts +240 -0
  911. package/src/self-implement/non-git-consent.ts +23 -0
  912. package/src/self-implement/orchestrator.ts +481 -132
  913. package/src/self-implement/pipeline-shape.ts +1 -1
  914. package/src/self-implement/pr-evidence-artifact.ts +6 -19
  915. package/src/self-implement/prior-draft-findings.ts +128 -0
  916. package/src/self-implement/pwa-import-graph.ts +65 -0
  917. package/src/self-implement/repo-provision.ts +18 -21
  918. package/src/self-implement/report-origin.ts +39 -0
  919. package/src/self-implement/rework-policy.ts +21 -0
  920. package/src/self-implement/run-ledger-compact.ts +438 -0
  921. package/src/self-implement/run-ledger.ts +212 -29
  922. package/src/self-implement/run-report.ts +24 -0
  923. package/src/self-implement/run-status-mapping.ts +2 -0
  924. package/src/self-implement/running-runs.ts +112 -14
  925. package/src/self-implement/scoped-typecheck-config.ts +49 -0
  926. package/src/self-implement/seams.ts +203 -38
  927. package/src/self-implement/self-implement-cli.ts +17 -2
  928. package/src/self-implement/shadow-repo.ts +350 -0
  929. package/src/self-implement/supervision-vocabulary.ts +7 -0
  930. package/src/shell-runner/dispatch.ts +3 -0
  931. package/src/shell-runner/index.ts +0 -7
  932. package/src/skills/runner.ts +0 -69
  933. package/src/skills/tools/agent-room-slash.ts +2 -1
  934. package/src/skills/tools/agent-room.ts +8 -140
  935. package/src/skills/tools/agent.ts +5 -3
  936. package/src/skills/tools/context.ts +5 -140
  937. package/src/skills/tools/control.ts +4 -188
  938. package/src/skills/tools/dashboard-slash.ts +3 -11
  939. package/src/skills/tools/dashboard-state.ts +3 -5
  940. package/src/skills/tools/dev-harness.ts +3 -2
  941. package/src/skills/tools/omni-search.ts +29 -1
  942. package/src/skills/tools/shell.ts +11 -29
  943. package/src/skills/tools/spawn-coding-agent-headless.ts +6 -9
  944. package/src/ssh/ssh-picker-modal.ts +1 -1
  945. package/src/steward/directive.ts +99 -0
  946. package/src/steward/triage.ts +203 -0
  947. package/src/storage/cli-bin.ts +67 -0
  948. package/src/storage/object-store-visibility.ts +169 -0
  949. package/src/storage/object-store.ts +452 -0
  950. package/src/storage/s3.ts +53 -10
  951. package/src/storage/storage-detect.ts +337 -0
  952. package/src/surface/address.ts +3 -5
  953. package/src/surface/index.ts +0 -6
  954. package/src/surface/llm-tools.ts +1 -2
  955. package/src/surface/shell-runner-boot.ts +4 -89
  956. package/src/task-cards/card-cli.ts +64 -0
  957. package/src/task-cards/card-store.ts +241 -0
  958. package/src/task-orchestrator/boot.ts +27 -1
  959. package/src/task-orchestrator/dispatcher.ts +49 -7
  960. package/src/task-orchestrator/external-fingerprint.ts +10 -0
  961. package/src/task-orchestrator/external-policy.ts +86 -0
  962. package/src/task-orchestrator/feedback-loop.ts +4 -2
  963. package/src/task-orchestrator/graph.ts +18 -1
  964. package/src/task-orchestrator/runtimes/create.ts +128 -0
  965. package/src/task-orchestrator/store.ts +78 -18
  966. package/src/task-orchestrator/surface-registry.ts +5 -2
  967. package/src/task-orchestrator/surfaces/external-exec.ts +180 -0
  968. package/src/task-orchestrator/surfaces/idea-approval-pr.ts +118 -0
  969. package/src/task-orchestrator/surfaces/index.ts +4 -3
  970. package/src/task-orchestrator/surfaces/pod-account-broker.ts +60 -5
  971. package/src/task-orchestrator/surfaces/pod-artifact-return.ts +136 -0
  972. package/src/task-orchestrator/surfaces/pod-command-job.ts +348 -0
  973. package/src/task-orchestrator/surfaces/pod-ledger-collect.ts +177 -0
  974. package/src/task-orchestrator/surfaces/pod-pool.ts +128 -12
  975. package/src/task-orchestrator/surfaces/pod-skills.ts +11 -3
  976. package/src/task-orchestrator/surfaces/pod-source-bundle.ts +132 -0
  977. package/src/task-orchestrator/surfaces/pod-source-receive.ts +91 -0
  978. package/src/task-orchestrator/surfaces/pod-source-spec.ts +77 -0
  979. package/src/task-orchestrator/surfaces/self-implement-pod.ts +782 -41
  980. package/src/task-orchestrator/surfaces/self-implement.ts +8 -1
  981. package/src/task-orchestrator/tox-loop.ts +204 -0
  982. package/src/task-orchestrator/types.ts +21 -1
  983. package/src/telegram-commands.ts +8 -0
  984. package/src/telegram-report.ts +2 -1
  985. package/src/telegram-run.ts +18 -5
  986. package/src/telegram.ts +92 -22
  987. package/src/tool-runtime/acp-session-runtime.ts +28 -7
  988. package/src/tool-runtime/agent-runtime.ts +1 -0
  989. package/src/tool-runtime/context-runtime.ts +18 -35
  990. package/src/tool-runtime/control-runtime.ts +8 -21
  991. package/src/tool-runtime/dashboard-state-runtime.ts +1 -5
  992. package/src/tool-runtime/elanous-asana-runtimes.ts +205 -0
  993. package/src/tool-runtime/elanous-control-runtimes.ts +16 -2
  994. package/src/tool-runtime/elanous-task-submit-runtime.ts +124 -0
  995. package/src/tool-runtime/index.ts +4 -1
  996. package/src/tool-runtime/scenario-runtimes.ts +22 -21
  997. package/src/tool-runtime/scenario-target-mount.ts +6 -32
  998. package/src/tool-runtime/types.ts +8 -0
  999. package/src/tui/chat/attachment-summary.ts +4 -4
  1000. package/src/tui-client/headless-core-guard.ts +0 -1
  1001. package/src/tui.ts +8 -5
  1002. package/src/typecheck-ratchet.ts +15 -0
  1003. package/src/ui/hover-presenter.ts +3 -7
  1004. package/src/user-config.ts +427 -190
  1005. package/src/version/code-revision.ts +33 -8
  1006. package/src/version/packed-revision.json +1 -1
  1007. package/src/video-pipeline/broll-agent.ts +102 -0
  1008. package/src/video-pipeline/recipes/broll.ts +263 -0
  1009. package/src/video-pipeline/walk-line.ts +2 -1
  1010. package/src/views/scratch-image-size.ts +10 -0
  1011. package/src/voice/channel-adapters/pwa-voice-adapter.ts +2 -18
  1012. package/src/voice/channel-adapters/telegram-voice-adapter.ts +1 -6
  1013. package/src/voice/voice-tts-singleton.ts +46 -8
  1014. package/src/web-push/vapid-keys.ts +1 -1
  1015. package/src/web-search/index.ts +5 -5
  1016. package/src/web-terminal/preview-tap-registry.ts +152 -43
  1017. package/src/workflow-runtime/executor.ts +18 -22
  1018. package/src/workflow-runtime/node-catalog.ts +20 -1
  1019. package/src/workflow-runtime/nodes/bash.ts +1 -0
  1020. package/src/workflow-runtime/nodes/task.ts +74 -0
  1021. package/src/workflow-runtime/nodes/triggers.ts +24 -1
  1022. package/src/workflow-runtime/plugin-kind-node.ts +138 -0
  1023. package/src/workflow-runtime/schema.ts +98 -2
  1024. package/src/workflow-runtime/triggers/webhook-router.ts +43 -3
  1025. package/src/workflow-runtime/triggers/webhook-source.ts +19 -1
  1026. package/src/workflow-runtime/types.ts +74 -4
  1027. package/apps/pwa/out/_next/static/Ksn99fVf2HUWhSyV1-FC8/_buildManifest.js +0 -1
  1028. package/apps/pwa/out/_next/static/chunks/1176-4943bd83b00e53a2.js +0 -25
  1029. package/apps/pwa/out/_next/static/chunks/1380-9c652e1002032c86.js +0 -1
  1030. package/apps/pwa/out/_next/static/chunks/1863-2ea170dfec26b88b.js +0 -1
  1031. package/apps/pwa/out/_next/static/chunks/2091-2d6b7f4f16300f83.js +0 -1
  1032. package/apps/pwa/out/_next/static/chunks/2347-366617ec73babe3b.js +0 -1
  1033. package/apps/pwa/out/_next/static/chunks/2598.814f64e3268634e7.js +0 -1
  1034. package/apps/pwa/out/_next/static/chunks/3089-e60cc8f5d35ee239.js +0 -1
  1035. package/apps/pwa/out/_next/static/chunks/3158-c77ed9ea34f9cc9f.js +0 -1
  1036. package/apps/pwa/out/_next/static/chunks/3607-f0b5c5ee18fcf56a.js +0 -1
  1037. package/apps/pwa/out/_next/static/chunks/3659-05b2d5d971b42dbc.js +0 -1
  1038. package/apps/pwa/out/_next/static/chunks/3736-b6a7bfdcb8f56ec6.js +0 -1
  1039. package/apps/pwa/out/_next/static/chunks/3839-eebf298e89a7bb77.js +0 -1
  1040. package/apps/pwa/out/_next/static/chunks/4012.832a2824b978e7ee.js +0 -5
  1041. package/apps/pwa/out/_next/static/chunks/4706-d85d7f3345f3ff91.js +0 -1
  1042. package/apps/pwa/out/_next/static/chunks/526-17a6a2e0e6dc4498.js +0 -1
  1043. package/apps/pwa/out/_next/static/chunks/5508-676ac75f2757ad40.js +0 -1
  1044. package/apps/pwa/out/_next/static/chunks/5583-8a0317f4b8e68db9.js +0 -1
  1045. package/apps/pwa/out/_next/static/chunks/5927.8378481a12cc8044.js +0 -1
  1046. package/apps/pwa/out/_next/static/chunks/6258-b58f722b10e8d31d.js +0 -1
  1047. package/apps/pwa/out/_next/static/chunks/6820-32fd097e6186fdc9.js +0 -1
  1048. package/apps/pwa/out/_next/static/chunks/6852-983db7ca958634b7.js +0 -1
  1049. package/apps/pwa/out/_next/static/chunks/7235-e583e4a015e159b9.js +0 -1
  1050. package/apps/pwa/out/_next/static/chunks/7482-7b417330b24a996a.js +0 -1
  1051. package/apps/pwa/out/_next/static/chunks/7701-99b7d4dedb955bf8.js +0 -1
  1052. package/apps/pwa/out/_next/static/chunks/77f1928d-bd3777589042d3ea.js +0 -1
  1053. package/apps/pwa/out/_next/static/chunks/8366-36956cafc5e33614.js +0 -1
  1054. package/apps/pwa/out/_next/static/chunks/8370-23d0de995be666f8.js +0 -1
  1055. package/apps/pwa/out/_next/static/chunks/8617-307421f3b0e8b2a2.js +0 -1
  1056. package/apps/pwa/out/_next/static/chunks/8837-e45de46a9fedf1f5.js +0 -1
  1057. package/apps/pwa/out/_next/static/chunks/9058-0e8055a5ea3ebdd6.js +0 -1
  1058. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-84b84eca12acada4.js +0 -1
  1059. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-1f23568c29e88f7a.js +0 -1
  1060. package/apps/pwa/out/_next/static/chunks/app/botlab/page-bf6fc9aafd6135a7.js +0 -1
  1061. package/apps/pwa/out/_next/static/chunks/app/bots/page-3f8539ae4b719d2e.js +0 -1
  1062. package/apps/pwa/out/_next/static/chunks/app/chat/page-d2900febb74ecf32.js +0 -1
  1063. package/apps/pwa/out/_next/static/chunks/app/control/page-e82dec647dd79c36.js +0 -1
  1064. package/apps/pwa/out/_next/static/chunks/app/dashboard/page-096ec743a8ee955a.js +0 -1
  1065. package/apps/pwa/out/_next/static/chunks/app/design-check/page-255c2ceded4b3493.js +0 -1
  1066. package/apps/pwa/out/_next/static/chunks/app/healthz/route-84b84eca12acada4.js +0 -1
  1067. package/apps/pwa/out/_next/static/chunks/app/intake/page-2db61b2f9efba61f.js +0 -1
  1068. package/apps/pwa/out/_next/static/chunks/app/layout-e11ee17f221aaa9b.js +0 -1
  1069. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-e075974e029ce4c4.js +0 -1
  1070. package/apps/pwa/out/_next/static/chunks/app/morning/page-ec5b68a9af3366a0.js +0 -1
  1071. package/apps/pwa/out/_next/static/chunks/app/not-found-986c177afb4adae6.js +0 -1
  1072. package/apps/pwa/out/_next/static/chunks/app/observatory/page-a72781461af2f2a3.js +0 -1
  1073. package/apps/pwa/out/_next/static/chunks/app/page-92781cbaafc487ad.js +0 -1
  1074. package/apps/pwa/out/_next/static/chunks/app/reflection/page-2c14d2a1f2930f33.js +0 -1
  1075. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-22ee4bf8070b2b4d.js +0 -1
  1076. package/apps/pwa/out/_next/static/chunks/app/sessions/page-9c06e4a8297942a8.js +0 -1
  1077. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-d0cd32f6d373798f.js +0 -1
  1078. package/apps/pwa/out/_next/static/chunks/app/settings/page-0c1642018d87ebb8.js +0 -1
  1079. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-93e5e97d614df487.js +0 -1
  1080. package/apps/pwa/out/_next/static/chunks/app/setup/layout-84b84eca12acada4.js +0 -1
  1081. package/apps/pwa/out/_next/static/chunks/app/setup/page-b1ce871940d7393e.js +0 -1
  1082. package/apps/pwa/out/_next/static/chunks/app/share/page-ae154addf345febe.js +0 -1
  1083. package/apps/pwa/out/_next/static/chunks/app/showroom/page-90af3aa813d2053c.js +0 -1
  1084. package/apps/pwa/out/_next/static/chunks/app/tasks/page-f3f962fda428a738.js +0 -1
  1085. package/apps/pwa/out/_next/static/chunks/app/term/page-1c1f7cc1d5def06d.js +0 -1
  1086. package/apps/pwa/out/_next/static/chunks/app/vault/page-09d4cbdaaacf06c1.js +0 -1
  1087. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-e877b8e8ca90b27f.js +0 -1
  1088. package/apps/pwa/out/_next/static/chunks/app/workflows/page-71d902f463dea526.js +0 -1
  1089. package/apps/pwa/out/_next/static/chunks/app/workspace/page-40ea576cefa25fe6.js +0 -1
  1090. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-a56a3f178c3831f6.js +0 -1
  1091. package/apps/pwa/out/_next/static/chunks/bcc499d1-804a270d878e0842.js +0 -1
  1092. package/apps/pwa/out/_next/static/chunks/framework-b25b7c5501c59b6d.js +0 -1
  1093. package/apps/pwa/out/_next/static/chunks/main-a9ec9da43387afff.js +0 -1
  1094. package/apps/pwa/out/_next/static/chunks/main-app-aa2c05954aaa6754.js +0 -1
  1095. package/apps/pwa/out/_next/static/chunks/pages/_app-bb3768fb4b84aebb.js +0 -1
  1096. package/apps/pwa/out/_next/static/chunks/pages/_error-2820ba75b87b2f5e.js +0 -1
  1097. package/apps/pwa/out/_next/static/chunks/webpack-58c73b145f189b1c.js +0 -1
  1098. package/apps/pwa/out/_next/static/css/effec8adf767aa75.css +0 -1
  1099. package/apps/pwa/out/dashboard/index.html +0 -1
  1100. package/apps/pwa/out/dashboard/index.txt +0 -26
  1101. package/src/acp/resident-shell.ts +0 -244
  1102. package/src/agent/spawn-local-llm-in-vw.ts +0 -240
  1103. package/src/dashboard/agent-spawn-tools-boot.ts +0 -14
  1104. package/src/dashboard/dock-picker-inventory.ts +0 -41
  1105. package/src/dashboard/goal-plan-hud-bridge.ts +0 -112
  1106. package/src/dashboard/hud-mirror.ts +0 -207
  1107. package/src/dashboard/input/mouse-dock-runtime.ts +0 -156
  1108. package/src/dashboard/input/mouse-hover-runtime.ts +0 -46
  1109. package/src/dashboard/input/mouse-pill-context-runtime.ts +0 -74
  1110. package/src/dashboard/input/mouse-workspace-restore-runtime.ts +0 -64
  1111. package/src/dashboard/input/scratch-actions.ts +0 -36
  1112. package/src/dashboard/input/virtual-window-key-router.ts +0 -24
  1113. package/src/dashboard/rich-scratch-viewers.ts +0 -77
  1114. package/src/dashboard/scratch-slash-runtime.ts +0 -36
  1115. package/src/dashboard/scratch-state-runtime.ts +0 -42
  1116. package/src/dashboard/scratch-widget-runtime.ts +0 -37
  1117. package/src/dashboard/sim-shell.ts +0 -313
  1118. package/src/dashboard/virtual-window-control-runtime.ts +0 -57
  1119. package/src/dashboard/virtual-window-help-runtime.ts +0 -113
  1120. package/src/dashboard/virtual-window-input-runtime.ts +0 -99
  1121. package/src/dashboard/virtual-window-mutation-runtime.ts +0 -102
  1122. package/src/dashboard/virtual-window-split-runtime.ts +0 -70
  1123. package/src/dashboard/vw-popup-openers.ts +0 -126
  1124. package/src/dashboard/window-picker-popup.ts +0 -74
  1125. package/src/dashboard/window-slash-runtime.ts +0 -108
  1126. package/src/dashboard/windowing/companion-slash.ts +0 -78
  1127. package/src/dashboard/windowing/fast-switch.ts +0 -138
  1128. package/src/dashboard/windowing/lifecycle.ts +0 -185
  1129. package/src/dashboard/windowing/virtual-windows.ts +0 -259
  1130. package/src/dashboard/windowing/visibility-chord.ts +0 -77
  1131. package/src/iul/resident-vw.ts +0 -55
  1132. package/src/panes/content-adapter.ts +0 -162
  1133. package/src/prompt/vw-reference.ts +0 -153
  1134. package/src/shell-runner/external-terminal-pane.ts +0 -157
  1135. package/src/sim/resident-vw.ts +0 -48
  1136. package/src/skills/tools/spawn-coding-agent-vw.ts +0 -181
  1137. package/src/skills/tools/virtual-windows.ts +0 -632
  1138. package/src/surface/adapters/window-surface-adapter.ts +0 -141
  1139. package/src/tool-runtime/layout-runtimes.ts +0 -81
  1140. package/src/tool-runtime/scenario-window-mount.ts +0 -207
  1141. package/src/views/ui-mode.ts +0 -100
  1142. package/src/virtual-window-context-menu.ts +0 -97
  1143. package/src/virtual-windows/addressing.ts +0 -195
  1144. package/src/virtual-windows/benchmark-preset.ts +0 -119
  1145. package/src/virtual-windows/event-bus.ts +0 -202
  1146. package/src/virtual-windows/layout/apply-planner.ts +0 -189
  1147. package/src/virtual-windows/layout/index.ts +0 -68
  1148. package/src/virtual-windows/layout/layout-commands.ts +0 -186
  1149. package/src/virtual-windows/layout/layout-tools.ts +0 -262
  1150. package/src/virtual-windows/layout/persistence.ts +0 -219
  1151. package/src/virtual-windows/layout/presets.ts +0 -114
  1152. package/src/virtual-windows/layout/restore-planner.ts +0 -223
  1153. package/src/virtual-windows/layout/serializer.ts +0 -197
  1154. package/src/virtual-windows/layout/tree.ts +0 -147
  1155. package/src/virtual-windows/layout/types.ts +0 -63
  1156. package/src/virtual-windows/layout-tree.ts +0 -389
  1157. package/src/virtual-windows/navigation.ts +0 -251
  1158. package/src/virtual-windows/pane-capture.ts +0 -142
  1159. package/src/virtual-windows/pane-content.ts +0 -611
  1160. package/src/virtual-windows/pane-spawner.ts +0 -278
  1161. package/src/virtual-windows/pty-tail-content.ts +0 -291
  1162. package/src/virtual-windows/resident-window.ts +0 -59
  1163. package/src/virtual-windows/secondary-action.ts +0 -25
  1164. package/src/virtual-windows/terminal-slot-content.ts +0 -165
  1165. package/src/virtual-windows/virtual-window.ts +0 -1301
  1166. package/src/virtual-windows/vw-local-input-target-popup.ts +0 -110
  1167. package/src/virtual-windows/vw-rename-modal.ts +0 -77
  1168. package/src/virtual-windows/vw-selector-popup.ts +0 -177
  1169. package/src/virtual-windows/window-registry.ts +0 -519
  1170. package/src/voice/channel-adapters/discord-voice-adapter.ts +0 -202
  1171. package/src/voice/voice-pwa-dispatch.ts +0 -245
  1172. package/src/window-picker-modal.ts +0 -135
  1173. /package/apps/pwa/out/_next/static/{Ksn99fVf2HUWhSyV1-FC8 → zoQX5iTvXOsIvCjxCe1Ji}/_ssgManifest.js +0 -0
  1174. /package/src/dashboard/{companion-slash-runtime.ts → companion-messages-runtime.ts} +0 -0
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9549],{29304:(e,t,a)=>{"use strict";a.d(t,{i$:()=>i,nZ:()=>c,oM:()=>d,sF:()=>s});let r="elanous.showroom.layouts";function n(){return window.localStorage?window.localStorage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{}}}function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n(),t=e.getItem(r);if(!t)return{};try{let e=JSON.parse(t);if(!e||"object"!=typeof e)return{};return e}catch(e){return{}}}function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n(),a=JSON.stringify(e);if(a.length>102400)return{ok:!1,reason:"storage quota exceeded (".concat(a.length," > ").concat(102400,")")};try{return t.setItem(r,a),{ok:!0}}catch(e){return{ok:!1,reason:String(e)}}}async function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n();try{let{layouts:a}=await e.listShowroomLayouts(),r={};for(let e of a)r[e.name]=e;return l(r,t),{layouts:a.slice().sort((e,t)=>t.savedAt-e.savedAt),source:"daemon"}}catch(e){return{layouts:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n();return Object.values(o(e)).sort((e,t)=>t.savedAt-e.savedAt)}(t),source:"local"}}}async function s(e,t,a){var r;let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},s=e.trim();if(!s)return{ok:!1,reason:"name required"};let d=null!=(r=i.backend)?r:n(),c=function(e,t){var a;let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=e.trim();if(!i)return{ok:!1,reason:"name required"};let s=null!=(a=r.backend)?a:n(),d=o(s),c={name:i,savedAt:Date.now(),panels:t.map(e=>({id:e.id,kind:e.kind,provider:e.provider,...e.agentBrand?{agentBrand:e.agentBrand}:{},...e.roleHint?{roleHint:e.roleHint}:{},...e.personaId?{personaId:e.personaId}:{},state:e.state})),...r.layoutMode?{layoutMode:r.layoutMode}:{}};d[i]=c;let u=l(d,s);return u.ok?{ok:!0,saved:c}:u}(s,t,i);if(!c.ok)return c;let u=0;try{let e=await a.listShowroomLayouts();if(0===e.layouts.length){let e=o(d);for(let t of Object.values(e))try{await a.saveShowroomLayout(t.name,{savedAt:t.savedAt,panels:t.panels,...t.layoutMode?{layoutMode:t.layoutMode}:{}}),u+=1}catch(e){}return{ok:!0,saved:c.saved,source:"daemon",migrated:u}}return await a.saveShowroomLayout(s,{savedAt:c.saved.savedAt,panels:c.saved.panels,...c.saved.layoutMode?{layoutMode:c.saved.layoutMode}:{}}),{ok:!0,saved:c.saved,source:"daemon",migrated:0}}catch(e){return{ok:!0,saved:c.saved,source:"local",migrated:0}}}async function d(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n(),r=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n(),a=o(t);return e.trim()in a&&(delete a[e.trim()],l(a,t),!0)}(e,a);try{return await t.deleteShowroomLayout(e),{ok:!0,source:"daemon"}}catch(e){return{ok:r,source:"local"}}}function c(e){return e.panels.map(e=>({id:e.id,kind:e.kind,provider:e.provider,...e.agentBrand?{agentBrand:e.agentBrand}:{},...e.roleHint?{roleHint:e.roleHint}:{},...e.personaId?{personaId:e.personaId}:{},sessionId:null,state:e.state}))}},33368:(e,t,a)=>{"use strict";a.d(t,{v:()=>l});var r=a(8740),n=a(85351);let o=null;function l(e){let[t,a]=(0,r.useState)(()=>o&&Date.now()-o.at<6e4?o.data:[]),[l,i]=(0,r.useState)(!1),[s,d]=(0,r.useState)(null),c=(0,r.useCallback)(async()=>{i(!0),d(null);try{let t=await e.listPersonas();o={at:Date.now(),data:t.personas},a(t.personas)}catch(e){d(e instanceof Error?e.message:String(e))}finally{i(!1)}},[e]);(0,r.useEffect)(()=>{if(o&&Date.now()-o.at<6e4)return void a(o.data);c()},[c]);let u=(0,r.useCallback)(async()=>{o=null,await c()},[c]);return(0,r.useEffect)(()=>{let t=e.personasEventsUrl();if(!t)return;let a=null;try{a=new EventSource(t)}catch(e){(0,n.cY)("showroom.personas.sse.construct-error",{error:String(e)});return}let r=e=>()=>{"hello"!==e&&((0,n.cY)("showroom.personas.sse.event",{kind:e}),o=null,c())};return a.addEventListener("hello",r("hello")),a.addEventListener("load-dir",r("load-dir")),a.addEventListener("reload-all",r("reload-all")),a.addEventListener("upsert",r("upsert")),a.addEventListener("remove",r("remove")),a.onerror=e=>{(0,n.cY)("showroom.personas.sse.error",{type:e.type})},()=>{try{null==a||a.close()}catch(e){}}},[e,c]),{personas:t,loading:l,error:s,reload:u}}},46226:(e,t,a)=>{"use strict";a.d(t,{M1:()=>d,Qj:()=>c,tI:()=>s});var r=a(54728),n=a(8740),o=a(42706),l=a(2859);let i=(0,n.createContext)(null);function s(e){let{client:t,queryClient:a,defaultStaleTimeMs:s,children:d}=e,c=(0,n.useMemo)(()=>null!=a?a:new o.E({defaultOptions:{queries:{staleTime:null!=s?s:2e3,refetchOnWindowFocus:!1}}}),[a,s]);return(0,r.jsx)(i.Provider,{value:t,children:(0,r.jsx)(l.Ht,{client:c,children:d})})}function d(){let e=(0,n.useContext)(i);if(!e)throw Error("useNexusClient must be used within <NexusProvider>");return e}function c(){return(0,n.useContext)(i)}},60472:(e,t,a)=>{"use strict";a.d(t,{GZ:()=>i,_n:()=>u,gu:()=>d,mB:()=>s,sY:()=>c,u9:()=>m});let r="elanous.showroom.intentPanel.collapsed",n="elanous.showroom.intentPanel.displayMode",o="fixed",l=new Set(["fixed","popup","off"]);function i(){try{return"true"===window.localStorage.getItem(r)}catch(e){return!1}}function s(e){try{e?window.localStorage.setItem(r,"true"):window.localStorage.removeItem(r),window.dispatchEvent(new StorageEvent("storage",{key:r,newValue:e?"true":null}))}catch(e){}}function d(e){let t=t=>{(t.key===r||null===t.key)&&e(i())};return window.addEventListener("storage",t),()=>{window.removeEventListener("storage",t)}}function c(){try{let e=window.localStorage.getItem(n);if(e&&l.has(e))return e;return o}catch(e){return o}}function u(e){try{e===o?window.localStorage.removeItem(n):window.localStorage.setItem(n,e),window.dispatchEvent(new StorageEvent("storage",{key:n,newValue:e===o?null:e}))}catch(e){}}function m(e){let t=t=>{(t.key===n||null===t.key)&&e(c())};return window.addEventListener("storage",t),()=>{window.removeEventListener("storage",t)}}},87240:(e,t,a)=>{Promise.resolve().then(a.bind(a,88413))},88057:(e,t,a)=>{"use strict";a.d(t,{X:()=>i});var r=a(8740);let n=null,o=[],l=[];function i(e){let[t,a]=(0,r.useState)(()=>n&&Date.now()-n.at<3e5?n.providers:o),[i,s]=(0,r.useState)(()=>n&&Date.now()-n.at<3e5?n.models:l),[d,c]=(0,r.useState)(!1),[u,m]=(0,r.useState)(null),p=(0,r.useCallback)(async()=>{c(!0),m(null);try{let t=await e.getRegistryCatalog(),r=t.providers.map(e=>({id:e.id,displayName:e.displayName,aliases:e.aliases,modelPrefixes:e.modelPrefixes,apiKeyEnv:e.apiKeyEnv,endpointPattern:e.endpointPattern,capabilities:e.capabilities,builtIn:e.builtIn})),o=t.models.map(e=>({id:e.id,provider:e.provider,displayName:e.displayName,...void 0!==e.family?{family:e.family}:{},...void 0!==e.familyShortcut?{familyShortcut:e.familyShortcut}:{},...void 0!==e.contextSize?{contextSize:e.contextSize}:{},...void 0!==e.outputMaxTokens?{outputMaxTokens:e.outputMaxTokens}:{},...void 0!==e.vision?{vision:e.vision}:{},...void 0!==e.reasoning?{reasoning:e.reasoning}:{},...void 0!==e.toolCalling?{toolCalling:e.toolCalling}:{},...void 0!==e.pricing?{pricing:e.pricing}:{},...void 0!==e.deprecated?{deprecated:e.deprecated}:{},...void 0!==e.releaseDate?{releaseDate:e.releaseDate}:{},...void 0!==e.kind?{kind:e.kind}:{}}));n={at:Date.now(),providers:r,models:o},a(r),s(o)}catch(e){m(e instanceof Error?e.message:String(e))}finally{c(!1)}},[e]);(0,r.useEffect)(()=>{if(n&&Date.now()-n.at<3e5){a(n.providers),s(n.models);return}p()},[p]);let h=(0,r.useCallback)(async()=>{n=null,await p()},[p]),b=(0,r.useMemo)(()=>t.map(e=>e.id),[t]),x=(0,r.useMemo)(()=>{let e=new Map;for(let t of i){let a=e.get(t.provider);a?a.push(t):e.set(t.provider,[t])}return t=>{var a;return t?null!=(a=e.get(t))?a:[]:i}},[i]);return{providers:t,providerIds:b,models:i,modelsByProvider:x,loading:d,error:u,reload:h}}},88413:(e,t,a)=>{"use strict";a.d(t,{ShowroomLayout:()=>eX});var r=a(54728),n=a(8740),o=a(72412),l=a(32235),i=a(76835),s=a(63260),d=a(57900),c=a(52440),u=a(11076),m=a(51441),p=a(76482),h=a(37102),b=a(13342),x=a(6588),g=a(23182),f=a(49987),v=a(3839),w=a(96556),k=a(73455);function y(e,t){let a=j(e),r=t.filter(e=>j(e)===a);if(r.length<=1)return a;let n=r.findIndex(t=>t.id===e.id);return"".concat(a,"-").concat(n+1)}function j(e){return"agent"===e.kind&&e.agentBrand?"".concat(e.agentBrand,"-cli"):e.provider||"default"}let z=0;function N(){return(z=(z+1)%4096).toString(36).padStart(2,"0")}function S(){return"p-".concat(Date.now().toString(36),"-").concat(N())}let C=["","claude","gemini","grok","codex"],I=["codex","claude","gemini"],A=/@([a-zA-Z][a-zA-Z0-9-]{0,31})/g;function T(e,t){let a=[],r=new Set,n=[],o=[],l=!1;for(let i of e.matchAll(A)){let e=i[1];if(!e)continue;let s=e.toLowerCase();if("all"===s){l=!0,n.push("@all");continue}let d=t.find(e=>y(e,t).toLowerCase()===s);d?(r.has(d.id)||(r.add(d.id),a.push(d)),n.push("@".concat(e))):o.push(e)}return{targets:a,broadcastAll:l,mentions:n,unknown:o}}function E(e,t){var a;let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{targets:n,broadcastAll:o}=T(e,t);if(o)return{targets:t.filter(e=>"live"===e.state),mode:"broadcast"};if(n.length>0)return{targets:n,mode:"targeted",routedBy:"mention"};let l=null!=(a=r.roleHint)?a:function(e){let t=e.toLowerCase();for(let a of M)if(P[a].some(a=>(function(e,t,a){if(L.test(a))return e.includes(a);let r=D.get(a);return r||(r=new RegExp("\\b".concat(a.toLowerCase(),"\\b")),D.set(a,r)),r.test(t)})(e,t,a)))return a;return null}(e);if(l){let e=t.filter(e=>e.roleHint===l);if(1===e.length)return{targets:e,mode:"targeted",routedBy:"role-classify",classifiedRole:l}}return{targets:t.filter(e=>"live"===e.state),mode:"broadcast"}}let M=["review","reflect","plan","exec"],P={plan:["계획","기획","설계","구상","아키텍처","디자인","plan","design","architect","spec","roadmap"],exec:["구현","코드","작성","만들어","수정","구축","코딩","implement","code","write","build","create","fix"],review:["리뷰","검토","평가","점검","검사","비판","review","critique","evaluate","check","audit"],reflect:["회고","반성","돌아보","성찰","교훈","되짚","reflect","retrospective","lesson","postmortem"]},L=/[ㄱ-ㆎ가-힣]/,D=new Map,R="elanous.showroom.roleJudgeBackend";async function Y(e,t,a){let r=E(e,t);if("broadcast"!==r.mode||r.classifiedRole||!a)return r;try{let n=await a(e);if(null===n.role)return r;return E(e,t,{roleHint:n.role})}catch(e){return r}}let _=/(^|\s)@([a-zA-Z0-9-]*)$/;function U(e){let t=Number.isFinite(e)&&e>=0?Math.floor(e):0,a=Math.floor(t/60);return"".concat(a,":").concat(String(t%60).padStart(2,"0"))}function F(e,t){return e.filter(e=>e.fromPanelId===t)}let K="elanous.showroom.dmMode";function O(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=e.filter(e=>"live"===e.state&&("chat"===e.kind||t.includeAgent&&"agent"===e.kind)).map(e=>{let a={id:e.id,provider:e.provider};if("agent"===e.kind&&e.agentBrand&&(a.kind="agent",a.backend=function(e){switch(e){case"codex":return"codex-app-server";case"claude":return"claude";case"gemini":return"gemini"}}(e.agentBrand)),e.personaId&&(a.personaId=e.personaId),t.lastAssistantByPanelId){let r=t.lastAssistantByPanelId[e.id];"string"==typeof r&&r.length>0&&(a.lastAssistant=r)}return a});if(0===a.length)return null;let r={targets:a};return t.historyMode&&(r.historyMode=t.historyMode),r}function B(e){if(e)for(let t=e.length-1;t>=0;t--){let a=e[t];if((null==a?void 0:a.role)==="assistant"&&"string"==typeof a.text&&a.text.length>0)return a.text}}let q="elanous.showroom.historyMode";function H(e){return{elanous:{multiLlm:e}}}function J(e,t){return e.length<=t?e:"".concat(e.slice(0,t-1),"…")}var W=a(85351),V=a(70748),$=a(29304),Q=a(68874),Z=a(4227),X=a(17858),G=a(69468),ee=a(88057),et=a(33368);let ea=["plan","exec","review","reflect"],er={plan:"plan",exec:"exec",review:"review",reflect:"reflect"};function en(e){var t,a,o,i,d;let{panel:c,allPanels:u,client:m,onClose:p,onState:h,onProvider:g,onPromoteAssistant:f,outgoingEdges:v,onAddChainEdge:w,onRemoveChainEdge:k,onToggleChainEdgeHitl:j,onRoleHint:z,onPersona:N,dmState:S,dmSessionId:I}=e,[A,T]=(0,n.useState)(!1),[E,M]=(0,n.useState)(null),[P,L]=(0,n.useState)(!1),[D,R]=(0,n.useState)(!1),Y=(0,et.v)(m),_=Y.personas,U=(0,ee.X)(m),F=(0,n.useMemo)(()=>{if(0===U.providerIds.length)return C;let e=["",...U.providerIds];return c.provider&&!e.includes(c.provider)&&e.push(c.provider),e},[U.providerIds,c.provider]),K=(0,n.useMemo)(()=>{if(c.personaId)return _.find(e=>e.personaId===c.personaId)},[c.personaId,_]),O=!!(null==K?void 0:K.brand),B=null!=v?v:[],q=(0,n.useMemo)(()=>u.filter(e=>e.id!==c.id&&!B.some(t=>t.toPanelId===e.id)),[u,c.id,B]),H=(0,n.useCallback)(e=>{if(!w)return;let t=w(c.id,e);if(!t.ok)return void M("route rejected \xb7 ".concat(t.reason));M(null),T(!1)},[w,c.id]),W=null!=(t=null==S?void 0:S.messages)?t:[],V=null!=(a=null==S?void 0:S.partial)?a:"",$=null!=(o=null==S?void 0:S.streaming)&&o,en=null!=(i=null==S?void 0:S.error)?i:null,eo=(0,n.useMemo)(()=>{let e=null==S?void 0:S.toolCalls;return e?Object.values(e).sort((e,t)=>e.startedAt-t.startedAt):[]},[null==S?void 0:S.toolCalls]),el=(0,n.useMemo)(()=>eo.filter(e=>"pending"===e.status||"in_progress"===e.status).length,[eo]),[ei,es]=(0,n.useState)(!1),ed=(0,n.useCallback)(()=>{h("live"===c.state?"mute":"live")},[c.state,h]),ec=(0,n.useMemo)(()=>y(c,u),[c,u]),eu="live"===c.state?"bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300":"mute"===c.state?"bg-zinc-200 text-zinc-600 dark:bg-zinc-700 dark:text-zinc-300":"bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300";return(0,r.jsxs)("article",{className:"flex h-full min-h-0 min-w-0 flex-1 flex-col rounded-lg border border-zinc-200 bg-white shadow-sm dark:border-zinc-700 dark:bg-zinc-900 ".concat("mute"===c.state?"opacity-60":""),"data-testid":"showroom-panel-".concat(c.id),"aria-label":"Showroom panel ".concat(ec),children:[(0,r.jsxs)("header",{className:"flex flex-wrap items-center justify-between gap-2 border-b border-zinc-200/50 px-3 py-2 dark:border-zinc-700/50",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:["agent"===c.kind&&(0,r.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-amber-100 px-1.5 py-0.5 text-[10px] uppercase text-amber-700 dark:bg-amber-900/40 dark:text-amber-300","data-testid":"showroom-panel-agent-badge-".concat(c.id),title:"agent CLI \xb7 brand=".concat(c.agentBrand),children:[(0,r.jsx)(s.A,{className:"size-3","aria-hidden":!0}),"agent"]}),(0,r.jsxs)("span",{className:"font-medium text-zinc-900 dark:text-zinc-100",children:["@",ec]}),(0,r.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[10px] uppercase ".concat(eu),children:c.state}),N&&(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>R(e=>!e),className:"inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-[10px] uppercase ".concat(K?"bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-900/40 dark:text-fuchsia-300":"bg-zinc-100 text-zinc-500 hover:bg-zinc-200 dark:bg-zinc-800 dark:text-zinc-400 dark:hover:bg-zinc-700"),"aria-label":K?"Persona: ".concat(K.displayName):"Bind persona",title:K?"Persona: ".concat(K.displayName," — click to change"):"Bind a persona (system prompt + brand lock)","data-testid":"showroom-panel-persona-toggle-".concat(c.id),style:(null==K?void 0:K.brandColor)?{borderLeft:"3px solid ".concat(K.brandColor)}:void 0,children:[(0,r.jsx)(Q.A,{className:"size-3","aria-hidden":!0}),K?K.displayName.slice(0,12):"persona"]}),D&&(0,r.jsxs)("div",{className:"absolute left-0 top-full z-20 mt-1 w-64 max-h-72 overflow-y-auto rounded-md border border-zinc-200 bg-white p-1 shadow-lg dark:border-zinc-700 dark:bg-zinc-900","data-testid":"showroom-panel-persona-menu-".concat(c.id),children:[Y.loading&&(0,r.jsx)("p",{className:"px-1.5 py-1 text-[10px] text-zinc-500",children:"loading…"}),Y.error&&(0,r.jsxs)("p",{className:"px-1.5 py-1 text-[10px] text-rose-600",children:["error: ",Y.error]}),!Y.loading&&0===_.length&&(0,r.jsxs)("p",{className:"px-1.5 py-1 text-[10px] text-zinc-500",children:["no personas (yaml in ",(0,r.jsx)("code",{children:"~/.elanous/personas/"}),")"]}),_.map(e=>{let t=e.personaId===c.personaId;return(0,r.jsxs)("button",{type:"button",onClick:()=>{N(e.brand?{personaId:e.personaId,brand:e.brand}:{personaId:e.personaId}),R(!1)},className:"block w-full rounded px-1.5 py-1 text-left text-[11px] hover:bg-fuchsia-50 dark:hover:bg-fuchsia-900/20 ".concat(t?"font-bold text-fuchsia-700 dark:text-fuchsia-300":""),"data-testid":"showroom-panel-persona-set-".concat(c.id,"-").concat(e.personaId),children:[(0,r.jsx)("span",{className:"mr-1 inline-block size-2 rounded-full",style:e.brandColor?{backgroundColor:e.brandColor}:{backgroundColor:"#a1a1aa"},"aria-hidden":!0}),e.displayName,e.brand&&(0,r.jsx)("span",{className:"ml-1 text-[9px] uppercase text-zinc-500",children:e.brand})]},e.personaId)}),K&&(0,r.jsx)("button",{type:"button",onClick:()=>{N(null),R(!1)},className:"mt-1 block w-full rounded border-t border-zinc-100 px-1.5 py-1 text-left text-[11px] text-rose-600 hover:bg-rose-50 dark:border-zinc-800 dark:text-rose-400 dark:hover:bg-rose-900/20","data-testid":"showroom-panel-persona-clear-".concat(c.id),children:"clear"})]})]}),z&&(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>L(e=>!e),className:"inline-flex items-center gap-0.5 rounded px-1.5 py-0.5 text-[10px] uppercase ".concat(c.roleHint?"bg-violet-100 text-violet-700 dark:bg-violet-900/40 dark:text-violet-300":"bg-zinc-100 text-zinc-500 hover:bg-zinc-200 dark:bg-zinc-800 dark:text-zinc-400 dark:hover:bg-zinc-700"),"aria-label":c.roleHint?"Role: ".concat(c.roleHint):"Set role hint",title:c.roleHint?"Role: ".concat(c.roleHint," — click to change"):"Assign role hint (auto @target)","data-testid":"showroom-panel-role-toggle-".concat(c.id),children:[(0,r.jsx)(Z.A,{className:"size-3","aria-hidden":!0}),null!=(d=c.roleHint)?d:"role"]}),P&&(0,r.jsxs)("div",{className:"absolute left-0 top-full z-20 mt-1 w-32 rounded-md border border-zinc-200 bg-white p-1 shadow-lg dark:border-zinc-700 dark:bg-zinc-900","data-testid":"showroom-panel-role-menu-".concat(c.id),children:[ea.map(e=>(0,r.jsx)("button",{type:"button",onClick:()=>{z(e),L(!1)},className:"block w-full rounded px-1.5 py-1 text-left text-[11px] hover:bg-violet-50 dark:hover:bg-violet-900/20 ".concat(c.roleHint===e?"font-bold text-violet-700 dark:text-violet-300":""),"data-testid":"showroom-panel-role-set-".concat(c.id,"-").concat(e),children:er[e]},e)),c.roleHint&&(0,r.jsx)("button",{type:"button",onClick:()=>{z(null),L(!1)},className:"mt-1 block w-full rounded border-t border-zinc-100 px-1.5 py-1 text-left text-[11px] text-rose-600 hover:bg-rose-50 dark:border-zinc-800 dark:text-rose-400 dark:hover:bg-rose-900/20","data-testid":"showroom-panel-role-clear-".concat(c.id),children:"clear"})]})]}),$&&(0,r.jsx)("span",{className:"text-[10px] text-zinc-500","aria-live":"polite",children:"streaming…"}),eo.length>0&&(0,r.jsxs)("button",{type:"button",onClick:()=>es(e=>!e),"aria-expanded":ei,"aria-controls":"showroom-panel-tools-".concat(c.id),"data-testid":"showroom-panel-tools-pill-".concat(c.id),title:el>0?"".concat(eo.length," tool calls \xb7 ").concat(el," running"):"".concat(eo.length," tool calls"),className:"inline-flex items-center gap-1 rounded-full border px-1.5 py-0.5 text-[10px] font-medium ".concat(el>0?"border-amber-300 bg-amber-50 text-amber-700 dark:border-amber-700 dark:bg-amber-900/30 dark:text-amber-300":"border-zinc-300 bg-zinc-50 text-zinc-600 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-300"),children:[(0,r.jsx)("span",{"aria-hidden":!0,children:"⚙"}),(0,r.jsxs)("span",{children:[eo.length," tool",1===eo.length?"":"s",el>0?" \xb7 ".concat(el," running"):""]})]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1",children:["agent"===c.kind?(0,r.jsxs)("span",{className:"rounded-md border border-amber-300 bg-amber-50 px-1.5 py-0.5 text-[11px] font-medium text-amber-700 dark:border-amber-700 dark:bg-amber-900/30 dark:text-amber-300","data-testid":"showroom-panel-brand-".concat(c.id),title:"Agent CLI brand is locked at create time (P5 D6)",children:[c.agentBrand,"-cli"]}):(0,r.jsx)("select",{value:c.provider,onChange:e=>g(e.target.value),disabled:$||O,className:"rounded-md border border-zinc-300 bg-white px-1.5 py-0.5 text-xs disabled:cursor-not-allowed disabled:opacity-60 dark:border-zinc-700 dark:bg-zinc-800","aria-label":"Provider",title:O?'Provider locked by persona "'.concat(null==K?void 0:K.displayName,'" (brand=').concat(null==K?void 0:K.brand,")"):"Provider","data-testid":"showroom-panel-provider-".concat(c.id),children:F.map(e=>(0,r.jsx)("option",{value:e,children:e||"(default)"},e))}),!!w&&!!k&&!!v&&(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>{T(e=>!e),M(null)},className:"relative rounded p-1 hover:bg-zinc-100 dark:hover:bg-zinc-800","aria-label":"Forward chain \xb7 agent-to-agent direct routing",title:B.length>0?"Chain: forwards to ".concat(B.length," panel(s)"):"Set up auto-forward to another panel","data-testid":"showroom-panel-chain-toggle-".concat(c.id),children:[(0,r.jsx)(X.A,{className:"size-3.5","aria-hidden":!0}),B.length>0&&(0,r.jsx)("span",{className:"absolute -right-0.5 -top-0.5 flex size-3.5 items-center justify-center rounded-full bg-indigo-500 text-[8px] font-bold text-white","aria-hidden":!0,children:B.length})]}),A&&(0,r.jsxs)("div",{className:"absolute right-0 top-full z-20 mt-1 w-56 rounded-md border border-zinc-200 bg-white p-2 shadow-lg dark:border-zinc-700 dark:bg-zinc-900","data-testid":"showroom-panel-chain-menu-".concat(c.id),children:[(0,r.jsx)("p",{className:"mb-1 text-[10px] uppercase text-zinc-500",children:"Auto-forward to"}),B.length>0&&(0,r.jsx)("ul",{className:"mb-2 space-y-0.5 border-b border-zinc-100 pb-2 dark:border-zinc-800",children:B.map(e=>{let t=u.find(t=>t.id===e.toPanelId),a=t?y(t,u):e.toPanelId;return(0,r.jsxs)("li",{className:"flex items-center justify-between gap-1 rounded bg-indigo-50 px-1.5 py-1 text-[11px] dark:bg-indigo-900/30","data-testid":"showroom-panel-chain-edge-".concat(e.id),children:[(0,r.jsxs)("span",{className:"truncate text-indigo-700 dark:text-indigo-300",children:["→ @",a]}),(0,r.jsxs)("div",{className:"flex shrink-0 items-center gap-0.5",children:[j&&(0,r.jsx)("button",{type:"button",onClick:()=>j(e.id),className:"rounded p-0.5 text-[11px] leading-none ".concat(e.hitl?"bg-amber-100 text-amber-700 hover:bg-amber-200 dark:bg-amber-900/40 dark:text-amber-300 dark:hover:bg-amber-900/60":"text-indigo-500/60 hover:bg-indigo-100 dark:hover:bg-indigo-800/40"),"aria-pressed":!!e.hitl,"aria-label":e.hitl?"Disable confirm gate for forward to @".concat(a):"Enable confirm gate for forward to @".concat(a),title:e.hitl?"Confirm before forward (click to auto-forward)":"Auto-forward (click to require confirm)","data-testid":"showroom-panel-chain-hitl-".concat(e.id),children:e.hitl?"\uD83D\uDD12":"⚡"}),k&&(0,r.jsx)("button",{type:"button",onClick:()=>k(e.id),className:"rounded p-0.5 hover:bg-indigo-100 dark:hover:bg-indigo-800/40","aria-label":"Remove forward to @".concat(a),"data-testid":"showroom-panel-chain-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-3","aria-hidden":!0})})]})]},e.id)})}),q.length>0?(0,r.jsx)("ul",{className:"space-y-0.5",children:q.map(e=>{let t=y(e,u);return(0,r.jsx)("li",{children:(0,r.jsxs)("button",{type:"button",onClick:()=>H(e.id),className:"block w-full rounded px-1.5 py-1 text-left text-[11px] hover:bg-indigo-50 dark:hover:bg-indigo-900/20","data-testid":"showroom-panel-chain-add-".concat(c.id,"-").concat(e.id),children:["+ @",t]})},e.id)})}):(0,r.jsx)("p",{className:"text-[11px] text-zinc-500",children:"no candidates"}),E&&(0,r.jsx)("p",{className:"mt-1 text-[10px] text-rose-600 dark:text-rose-400","data-testid":"showroom-panel-chain-error-".concat(c.id),children:E})]})]}),(0,r.jsx)("button",{type:"button",onClick:ed,className:"rounded p-1 hover:bg-zinc-100 dark:hover:bg-zinc-800","aria-label":"live"===c.state?"Mute panel":"Unmute panel",title:"live"===c.state?"Mute":"Unmute",children:"live"===c.state?(0,r.jsx)(x.A,{className:"size-3.5","aria-hidden":!0}):(0,r.jsx)(b.A,{className:"size-3.5","aria-hidden":!0})}),(0,r.jsx)("button",{type:"button",onClick:p,className:"rounded p-1 hover:bg-zinc-100 dark:hover:bg-zinc-800","aria-label":"Close panel",title:"Close",children:(0,r.jsx)(l.A,{className:"size-3.5","aria-hidden":!0})})]})]}),(0,r.jsxs)("div",{className:"flex-1 overflow-y-auto p-3 text-sm",children:[ei&&eo.length>0&&(0,r.jsx)("ul",{id:"showroom-panel-tools-".concat(c.id),"data-testid":"showroom-panel-tools-list-".concat(c.id),className:"mb-3 rounded-md border border-zinc-200 bg-zinc-50/60 p-2 text-[11px] dark:border-zinc-700 dark:bg-zinc-800/40",children:eo.map(e=>{let t="completed"===e.status?"✅":"failed"===e.status?"❌":"⏳",a=function(e){let t=e.name&&e.name.length>0?e.name:"(unnamed)",a=J(t,56),r=null;if(e.input){let t=Object.entries(e.input);if(t.length>0){let[e,a]=t[0],n="string"==typeof a?a:null===a?"null":void 0===a?"undefined":JSON.stringify(a);r="".concat(e,"=").concat(n)}}else e.output&&e.output.length>0&&(r=e.output);if(null===r)return{name:a,meta:null};let n=J(r,96);return!function(e,t){let a=e=>e.replace(/…$/,"").replace(/^command=/,"").trim().toLowerCase(),r=a(e),n=a(t);if(!r||!n)return!1;if(r===n)return!0;let o=n.indexOf("="),l=o>=0?n.slice(o+1).trim():n;return!!(l&&(r.startsWith(l)||l.startsWith(r)))}(t,r)?{name:a,meta:n}:{name:a,meta:null}}(e);return(0,r.jsxs)("li",{"data-testid":"showroom-panel-tool-".concat(c.id,"-").concat(e.id),className:"flex items-baseline gap-2 py-0.5",children:[(0,r.jsx)("span",{"aria-hidden":!0,children:t}),(0,r.jsx)("span",{className:"truncate font-medium text-zinc-800 dark:text-zinc-200",title:e.name||"(unnamed)",children:a.name}),a.meta&&(0,r.jsxs)("span",{className:"truncate text-zinc-500 dark:text-zinc-400",title:a.meta,children:["\xb7 ",a.meta]}),("pending"===e.status||"in_progress"===e.status)&&(0,r.jsx)("span",{className:"text-[10px] text-amber-600 dark:text-amber-300",children:"pending"===e.status?"pending":"running"})]},e.id)})}),0===W.length&&!$&&(0,r.jsx)("p",{className:"text-xs text-zinc-500",children:I?"대기 중 \xb7 broadcast 또는 mention 으로 시작":"DM session 준비 중…"}),W.map(e=>(0,r.jsxs)("div",{className:"mb-3 ".concat("user"===e.role?"text-zinc-900 dark:text-zinc-100":"text-zinc-700 dark:text-zinc-300"),children:[(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,r.jsx)("span",{className:"text-[10px] uppercase text-zinc-500",children:e.role}),"assistant"===e.role&&f&&e.text.length>0&&(0,r.jsxs)("button",{type:"button",onClick:()=>f({messageId:e.id,text:e.text}),className:"inline-flex items-center gap-0.5 rounded px-1 py-0.5 text-[10px] text-indigo-600 hover:bg-indigo-50 dark:text-indigo-300 dark:hover:bg-indigo-900/30","aria-label":"Promote answer to prior context",title:"Promote → next broadcast 에 context 로 첨부","data-testid":"showroom-panel-promote-".concat(c.id,"-").concat(e.id),children:[(0,r.jsx)(G.A,{className:"size-3","aria-hidden":!0}),"promote"]})]}),(0,r.jsx)("p",{className:"whitespace-pre-wrap",children:e.text})]},e.id)),$&&(0,r.jsxs)("div",{className:"mb-3 text-zinc-700 dark:text-zinc-300",children:[(0,r.jsx)("span",{className:"text-[10px] uppercase text-zinc-500",children:"assistant…"}),(0,r.jsx)("p",{className:"whitespace-pre-wrap",children:V||"..."})]}),en&&(0,r.jsx)("div",{className:"mt-2 rounded bg-rose-50 p-2 text-xs text-rose-700 dark:bg-rose-900/30 dark:text-rose-300",children:en})]}),(0,r.jsx)("footer",{className:"border-t border-zinc-200/50 px-3 py-1.5 text-[10px] text-zinc-500 dark:border-zinc-700/50","data-testid":"showroom-panel-footer-".concat(c.id),children:(0,r.jsxs)("span",{"data-testid":"showroom-panel-dm-footer-".concat(c.id),children:["DM \xb7"," ",I?"layout sess: ".concat(I.slice(0,8),"…"):"no layout session"]})})]})}var eo=a(60761),el=a(59900),ei=a(67841),es=a(33303),ed=a(82959),ec=a(65328),eu=a(47198),em=a(10975),ep=a(46425),eh=a(20513),eb=a(37069),ex=a(97406),eg=a(25583),ef=a(29087),ev=a(31673);async function ew(e){var t,a,r,n;let o=null!=(a=null!=(t=e.filename)?t:e.file instanceof File?e.file.name:void 0)?a:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,t=e.toISOString().replace(/[:.]/g,"-").toLowerCase();return"camera-".concat(t,".jpg")}(),l=await (0,ev.v)({baseUrl:e.baseUrl,...void 0!==e.token?{token:e.token}:{},file:e.file,filename:o});if(!l.ok)return{ok:!1,stage:"upload",status:l.status,reason:l.reason};if("session"===e.route.kind)return{ok:!0,route:"session",meta:l.meta};let i=e.baseUrl.replace(/\/$/,""),s=null!=(r=e.fetchImpl)?r:"undefined"!=typeof fetch?fetch:null;if(!s)return{ok:!1,stage:"intake",status:0,reason:"fetch unavailable"};try{let t=function(e){var t,a;let r=e.meta,n=null!=(a=null==(t=e.caption)?void 0:t.trim())?a:"",o="[image: ".concat(r.filename).concat(r.path?" \xb7 ".concat(r.path):"","]"),l={text:n?"".concat(o," ").concat(n):o,actor:"pwa-camera",channelContext:{kind:"pwa-camera",attachmentId:r.id,attachmentFilename:r.filename,attachmentMediaType:r.mediaType,...r.path?{attachmentPath:r.path}:{},...r.downloadUrl?{attachmentUrl:r.downloadUrl}:{}}};return e.receivedAt&&(l.receivedAt=e.receivedAt),e.intakeId&&(l.intakeId=e.intakeId),l}({meta:l.meta,...void 0!==e.caption?{caption:e.caption}:{}}),a=await s("".concat(i,"/v1/intake"),{method:"POST",headers:{"content-type":"application/json",...e.token?{authorization:"Bearer ".concat(e.token)}:{}},body:JSON.stringify(t)});if(!a.ok){let e=await a.text().catch(()=>"");return{ok:!1,stage:"intake",status:a.status,reason:e||"HTTP ".concat(a.status)}}let r=await a.json().catch(()=>({}));return{ok:!0,route:"intake",meta:l.meta,intakeId:null!=(n=r.intakeId)?n:""}}catch(e){return{ok:!1,stage:"intake",status:0,reason:String(e instanceof Error?e.message:e)}}}function ek(e){let{pendingFile:t,pendingPreviewUrl:a,caption:n,busy:o,error:l,onPickFile:i,onCaptionChange:s,onRouteSession:d,onRouteIntake:c,onCancel:u}=e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button",onClick:i,disabled:o,"aria-label":"attach photo",title:"attach photo (camera or file)","data-testid":"showroom-camera-button",className:"rounded p-1.5 text-muted-foreground hover:bg-accent hover:text-foreground disabled:opacity-50",children:o?(0,r.jsx)(eb.A,{className:"h-3.5 w-3.5 animate-spin"}):(0,r.jsx)(ex.A,{className:"h-3.5 w-3.5"})}),t&&(0,r.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":"Camera intake","data-testid":"showroom-camera-modal",className:"fixed inset-0 z-40 flex items-center justify-center bg-black/40 p-4 backdrop-blur-sm",children:(0,r.jsxs)("div",{className:"flex w-[min(calc(100vw-2rem),28rem)] flex-col gap-3 rounded-2xl border border-zinc-200 bg-white p-4 shadow-2xl dark:border-zinc-800 dark:bg-zinc-900",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-sm font-medium text-zinc-900 dark:text-zinc-100",children:"사진 첨부"}),(0,r.jsx)("button",{type:"button",onClick:u,disabled:o,"aria-label":"cancel","data-testid":"showroom-camera-cancel",className:"rounded p-1 text-zinc-500 hover:bg-zinc-100 disabled:opacity-50 dark:text-zinc-400 dark:hover:bg-zinc-800",children:"✕"})]}),a&&(0,r.jsx)("img",{src:a,alt:"camera capture preview","data-testid":"showroom-camera-preview",className:"max-h-72 w-full rounded-md border border-zinc-200 object-contain dark:border-zinc-800"}),(0,r.jsx)("textarea",{value:n,onChange:e=>s(e.target.value),disabled:o,placeholder:"사진 설명 (선택 \xb7 intake 저장 시 KGS 검색 키워드)",rows:2,"data-testid":"showroom-camera-caption",className:"rounded border border-zinc-300 bg-white px-2 py-1.5 text-sm text-zinc-900 disabled:opacity-50 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-100"}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("button",{type:"button",onClick:d,disabled:o,"data-testid":"showroom-camera-route-session",className:"flex-1 rounded-lg border border-zinc-300 bg-white px-3 py-1.5 text-sm font-medium text-zinc-800 transition hover:bg-zinc-100 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-100 dark:hover:bg-zinc-700",children:o?"...":"Session 첨부"}),(0,r.jsx)("button",{type:"button",onClick:c,disabled:o,"data-testid":"showroom-camera-route-intake",className:"flex-1 rounded-lg border border-emerald-500 bg-emerald-500 px-3 py-1.5 text-sm font-semibold text-white transition hover:bg-emerald-600 disabled:cursor-not-allowed disabled:opacity-50",children:o?"...":"Intake 저장"})]}),l&&(0,r.jsx)("div",{role:"alert","data-testid":"showroom-camera-error",className:"text-xs text-red-600 dark:text-red-400",children:l})]})})]})}function ey(e){let{onAttachToSession:t}=e,{config:a}=(0,v.Q)(),o=(0,n.useRef)(null),[l,i]=(0,n.useState)(null),[s,d]=(0,n.useState)(null),[c,u]=(0,n.useState)(""),[m,p]=(0,n.useState)(!1),[h,b]=(0,n.useState)(null),x=()=>{if(s)try{URL.revokeObjectURL(s)}catch(e){}i(null),d(null),u(""),p(!1),b(null)},g=async e=>{if(!l)return;if(!a.baseUrl)return void b("Daemon URL 미설정 — Settings 에서 입력");p(!0),b(null),(0,W.cY)("showroom.camera.submit",{route:e,hasCaption:c.trim().length>0});let r=await ew({baseUrl:a.baseUrl,...a.token?{token:a.token}:{},file:l,...c.trim()?{caption:c}:{},route:{kind:e}});if(!r.ok){b("".concat(r.stage," 실패: ").concat(r.reason)),p(!1),(0,W.cY)("showroom.camera.error",{stage:r.stage,status:r.status});return}"session"===r.route?(null==t||t(r.meta),eg.oR.success("\uD83D\uDCCE ".concat(r.meta.filename," (").concat((r.meta.size/1024).toFixed(1)," kB) \xb7 session 첨부됨"))):eg.oR.success("\uD83D\uDCE5 사진 저장됨 \xb7 intake ".concat(r.intakeId||"(id 없음)")),(0,W.cY)("showroom.camera.ok",{route:r.route,id:r.meta.id}),ef.K.emit({surface:"pwa",intent:{layer:"gesture",kind:"session"===r.route?"pwa.gesture.camera_attach_session":"pwa.gesture.camera_intake_save",target:{kind:"attachment",id:r.meta.id,label:r.meta.filename},value:{route:r.route,hasCaption:c.trim().length>0,sizeKb:Math.round(r.meta.size/1024)}},..."intake"===r.route&&r.intakeId?{context:{active_workflow_run_id:r.intakeId}}:{}}),x()};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(ek,{pendingFile:l,pendingPreviewUrl:s,caption:c,busy:m,error:h,onPickFile:()=>{var e;null==(e=o.current)||e.click()},onCaptionChange:u,onRouteSession:()=>{g("session")},onRouteIntake:()=>{g("intake")},onCancel:x}),(0,r.jsx)("input",{ref:o,type:"file",accept:"image/*",capture:"environment",className:"hidden",onChange:e=>{var t;let a=null==(t=e.target.files)?void 0:t[0];if(e.target.value="",!a)return;(0,W.cY)("showroom.camera.pick",{filename:a.name,size:a.size,type:a.type});let r=null;try{r=URL.createObjectURL(a)}catch(e){}i(a),d(r),u(""),b(null)},"data-testid":"showroom-camera-input"})]})}var ej=a(52516);function ez(e){var t,a,o,i,d,c,u;let{onSend:m,panels:p,liveCount:h,attachments:b,onAttach:x,onRemoveAttachment:g,terminalContexts:f,onPinTerminalContext:v,onRemoveTerminalContext:w,priorAnswers:k,onRemovePriorAnswer:j,onTogglePriorAnswer:z,urlContexts:S,onAddUrlContext:C,onRemoveUrlContext:I,clipboardContexts:A,onAddClipboardContext:M,onRemoveClipboardContext:P,videoContexts:L,onAddVideoContext:D,onRemoveVideoContext:R,audioContexts:Y,onAddAudioContext:U,onRemoveAudioContext:F,onUpdateAudioTranscript:K,listTerminals:O,fetchTerminalScrollback:B,disabled:q=!1}=e,[H,J]=(0,n.useState)(""),[W,V]=(0,n.useState)(!1),$=(0,n.useRef)(null),[Q,Z]=(0,n.useState)(""),[X,ee]=(0,n.useState)(!1),[et,ea]=(0,n.useState)([]),[er,en]=(0,n.useState)(!1),[eb,ex]=(0,n.useState)(null),[eg,ef]=(0,n.useState)(null),ev=!!O&&!!B,ew=(0,n.useCallback)(async()=>{if(O){en(!0),ex(null);try{let{terminals:e}=await O();ea(e)}catch(e){ex(String(e))}finally{en(!1)}}},[O]);(0,n.useEffect)(()=>{X&&ev&&ew()},[X,ev,ew]);let ek=(0,n.useCallback)(async e=>{if(B){ef(e);try{let{scrollback:t}=await B(e,50);Z(t)}catch(e){ex("scrollback: ".concat(String(e)))}finally{ef(null)}}},[B]),[ez,eN]=(0,n.useState)(null),eS=(0,n.useCallback)(()=>{var e;let t=$.current;if(!t)return void eN(null);let a=null!=(e=t.selectionStart)?e:H.length;eN(function(e,t,a){var r;let n=e.slice(0,t),o=_.exec(n);if(!o)return null;let l=null!=(r=o[2])?r:"",i=n.length-l.length-1,s=l.toLowerCase();return{tokenStart:i,tokenEnd:t,partial:l,matches:a.filter(e=>y(e,a).toLowerCase().startsWith(s)),allMatches:"all".startsWith(s)}}(H,a,p))},[H,p]),eC=(0,n.useCallback)(e=>{let t=$.current;t&&ez&&(J(H.slice(0,ez.tokenStart)+"@".concat(e," ")+H.slice(ez.tokenEnd)),eN(null),requestAnimationFrame(()=>{let a=ez.tokenStart+e.length+2;t.setSelectionRange(a,a),t.focus()}))},[H,ez]),eI=(0,n.useCallback)(()=>{let e=Q.trim();e&&v&&(v({id:"tc-".concat(Date.now().toString(36),"-").concat(N()),label:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),a=e.split("\n").length,r=new Date(t),n=String(r.getHours()).padStart(2,"0"),o=String(r.getMinutes()).padStart(2,"0");return"terminal \xb7 ".concat(a," lines \xb7 ").concat(n,":").concat(o)}(e),text:e,pinnedAt:Date.now()}),Z(""),ee(!1))},[Q,v]),eA=(0,n.useCallback)(async()=>{let e=H.trim();if(e&&!W&&!q){V(!0);try{await m(e),J("")}finally{V(!1)}}},[H,W,q,m]),eT=(0,n.useCallback)(e=>{if(ez&&"Enter"===e.key&&!e.shiftKey&&!e.metaKey&&!e.ctrlKey){let t=ez.matches[0];if(t){e.preventDefault(),eC(y(t,p));return}if(ez.allMatches){e.preventDefault(),eC("all");return}}if(ez&&"Escape"===e.key){e.preventDefault(),eN(null);return}"Enter"!==e.key||e.shiftKey||e.metaKey||e.ctrlKey||(e.preventDefault(),eA())},[eA,ez,eC,p]),eE=(0,n.useCallback)(e=>{var t,a;let r=$.current,n="@".concat(e," ");if(!r)return void J(e=>"".concat(e).concat(n));let o=null!=(t=r.selectionStart)?t:H.length,l=null!=(a=r.selectionEnd)?a:H.length;J(H.slice(0,o)+n+H.slice(l)),requestAnimationFrame(()=>{let e=o+n.length;r.setSelectionRange(e,e),r.focus()})},[H]),eM=(0,n.useMemo)(()=>T(H,p),[H,p]),eP=E(H,p),eL=0===h&&"broadcast"===eP.mode?"No live panel":"broadcast"===eP.mode?"Send \xb7 ".concat(eP.targets.length):1===eP.targets.length?"Send \xb7 @".concat(y(eP.targets[0],p)):"Send \xb7 @".concat(eP.targets.length),eD=!q&&!W&&H.trim().length>0&&eP.targets.length>0,eR=(null!=(t=null==b?void 0:b.length)?t:0)>0,eY=(null!=(a=null==f?void 0:f.length)?a:0)>0,e_=(null!=(o=null==k?void 0:k.length)?o:0)>0,eU=(null!=(i=null==S?void 0:S.length)?i:0)>0,eF=(null!=(d=null==A?void 0:A.length)?d:0)>0,eK=(null!=(c=null==L?void 0:L.length)?c:0)>0,eO=(null!=(u=null==Y?void 0:Y.length)?u:0)>0,eB=(0,n.useRef)(null),eq=(0,n.useRef)(null),[eH,eJ]=(0,n.useState)(!1),[eW,eV]=(0,n.useState)(null),[e$,eQ]=(0,n.useState)(!1),[eZ,eX]=(0,n.useState)(null),eG=(0,n.useCallback)(async e=>{if(D){eJ(!0),eV(null);try{var t;let a=await D(e);a.ok||eV(null!=(t=a.reason)?t:"video extract failed")}finally{eJ(!1)}}},[D]),e0=(0,n.useCallback)(async e=>{if(U){eQ(!0),eX(null);try{var t;let a=await U(e);a.ok||eX(null!=(t=a.reason)?t:"audio extract failed")}finally{eQ(!1)}}},[U]),e1=(0,n.useCallback)((e,t)=>{if(!K)return;let a=window.prompt("Audio transcript:",t);null!==a&&K(e,a)},[K]),[e5,e3]=(0,n.useState)(""),[e2,e7]=(0,n.useState)(!1),[e4,e9]=(0,n.useState)(null),[e6,e8]=(0,n.useState)(!1),te=(0,n.useCallback)(async()=>{if(!C)return;let e=e5.trim();if(!e)return void e9("url required");e7(!0),e9(null);try{let a=await C(e);if(a.ok)e3(""),e8(!1);else{var t;e9(null!=(t=a.reason)?t:"fetch failed")}}finally{e7(!1)}},[e5,C]),[tt,ta]=(0,n.useState)(!1),[tr,tn]=(0,n.useState)(null),to=(0,n.useCallback)(async()=>{if(M){ta(!0),tn(null);try{var e;let t=await M();t.ok||tn(null!=(e=t.reason)?e:"paste failed")}finally{ta(!1)}}},[M]);return(0,r.jsxs)("div",{className:"border-t border-zinc-200/50 bg-zinc-50 px-3 py-2 dark:border-zinc-700/50 dark:bg-zinc-900/40",children:[eU&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-url-context-list",children:[(0,r.jsx)("span",{children:"url:"}),null==S?void 0:S.map(e=>(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-sky-300 bg-white px-2 py-0.5 text-[11px] font-medium text-sky-700 dark:border-sky-700 dark:bg-zinc-800 dark:text-sky-300","data-testid":"showroom-url-chip-".concat(e.id),title:"".concat(e.url,"\n\n").concat(e.text.slice(0,200)).concat(e.text.length>200?"…":""),children:[(0,r.jsx)("span",{className:"max-w-[220px] truncate",children:e.label}),I&&(0,r.jsx)("button",{type:"button",onClick:()=>I(e.id),disabled:q||W,className:"rounded-full p-0.5 hover:bg-sky-100 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-sky-900/50","aria-label":"Remove url context ".concat(e.label),"data-testid":"showroom-url-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]},e.id))]}),eK&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-video-context-list",children:[(0,r.jsx)("span",{children:"video:"}),null==L?void 0:L.map(e=>(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-purple-300 bg-white px-2 py-0.5 text-[11px] font-medium text-purple-700 dark:border-purple-700 dark:bg-zinc-800 dark:text-purple-300","data-testid":"showroom-video-chip-".concat(e.id),title:"".concat(e.filename," \xb7 ").concat(e.widthPx,"x").concat(e.heightPx," \xb7 ").concat(e.durationSec,"s"),children:[(0,r.jsx)(eo.A,{className:"size-3","aria-hidden":!0}),(0,r.jsx)("span",{className:"max-w-[220px] truncate",children:e.label}),R&&(0,r.jsx)("button",{type:"button",onClick:()=>R(e.id),disabled:q||W,className:"rounded-full p-0.5 hover:bg-purple-100 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-purple-900/50","aria-label":"Remove video context ".concat(e.label),"data-testid":"showroom-video-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]},e.id))]}),eO&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-audio-context-list",children:[(0,r.jsx)("span",{children:"audio:"}),null==Y?void 0:Y.map(e=>(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-cyan-300 bg-white px-2 py-0.5 text-[11px] font-medium text-cyan-700 dark:border-cyan-700 dark:bg-zinc-800 dark:text-cyan-300","data-testid":"showroom-audio-chip-".concat(e.id),title:"".concat(e.filename," \xb7 ").concat(e.durationSec,"s \xb7 ").concat(e.transcript?"transcript present":"click to add transcript"),children:[(0,r.jsx)(el.A,{className:"size-3","aria-hidden":!0}),(0,r.jsxs)("button",{type:"button",onClick:()=>e1(e.id,e.transcript),disabled:q||W||!K,className:"max-w-[220px] truncate hover:underline disabled:cursor-default disabled:no-underline","data-testid":"showroom-audio-edit-".concat(e.id),children:[e.label,e.transcript?" \xb7 \uD83D\uDCDD":""]}),F&&(0,r.jsx)("button",{type:"button",onClick:()=>F(e.id),disabled:q||W,className:"rounded-full p-0.5 hover:bg-cyan-100 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-cyan-900/50","aria-label":"Remove audio context ".concat(e.label),"data-testid":"showroom-audio-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]},e.id))]}),eW&&(0,r.jsx)("div",{className:"mb-2 px-2 py-1 text-[11px] text-purple-700 dark:text-purple-300","data-testid":"showroom-video-error",children:eW}),eZ&&(0,r.jsx)("div",{className:"mb-2 px-2 py-1 text-[11px] text-cyan-700 dark:text-cyan-300","data-testid":"showroom-audio-error",children:eZ}),eF&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-clipboard-context-list",children:[(0,r.jsx)("span",{children:"clip:"}),null==A?void 0:A.map(e=>(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-emerald-300 bg-white px-2 py-0.5 text-[11px] font-medium text-emerald-700 dark:border-emerald-700 dark:bg-zinc-800 dark:text-emerald-300","data-testid":"showroom-clipboard-chip-".concat(e.id),title:e.text.slice(0,200),children:[(0,r.jsx)("span",{className:"max-w-[220px] truncate",children:e.label}),P&&(0,r.jsx)("button",{type:"button",onClick:()=>P(e.id),disabled:q||W,className:"rounded-full p-0.5 hover:bg-emerald-100 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-emerald-900/50","aria-label":"Remove clipboard context ".concat(e.label),"data-testid":"showroom-clipboard-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]},e.id))]}),e6&&C&&(0,r.jsxs)("div",{className:"mb-2 rounded border border-sky-200 bg-sky-50 p-2 dark:border-sky-800 dark:bg-sky-900/20",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[(0,r.jsx)("input",{type:"url",value:e5,onChange:e=>e3(e.target.value),placeholder:"https://...",disabled:e2,className:"flex-1 rounded border border-sky-300 bg-white px-2 py-1 text-xs disabled:opacity-60 dark:border-sky-700 dark:bg-zinc-900","data-testid":"showroom-url-input"}),(0,r.jsx)("button",{type:"button",onClick:te,disabled:e2||!e5.trim(),className:"rounded bg-sky-600 px-2 py-1 text-xs text-white hover:bg-sky-700 disabled:cursor-not-allowed disabled:opacity-50","data-testid":"showroom-url-fetch",children:e2?"…":"fetch"}),(0,r.jsx)("button",{type:"button",onClick:()=>{e8(!1),e3(""),e9(null)},className:"rounded p-1 text-zinc-500 hover:bg-zinc-100 dark:hover:bg-zinc-800","aria-label":"Close url input",children:(0,r.jsx)(l.A,{className:"size-3","aria-hidden":!0})})]}),e4&&(0,r.jsx)("p",{className:"mt-1 text-[10px] text-rose-600","data-testid":"showroom-url-error",children:e4})]}),tr&&(0,r.jsxs)("p",{className:"mb-2 text-[10px] text-rose-600","data-testid":"showroom-clipboard-error",children:["clipboard: ",tr]}),e_&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-prior-answer-list",children:[(0,r.jsx)(G.A,{className:"size-3","aria-hidden":!0}),(0,r.jsx)("span",{children:"prior:"}),null==k?void 0:k.map(e=>{let t=!1!==e.enabled;return(0,r.jsxs)("span",{className:"".concat("inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[11px] font-medium transition-opacity"," ").concat(t?"border border-indigo-300 bg-white text-indigo-700 dark:border-indigo-700 dark:bg-zinc-800 dark:text-indigo-300":"border border-dashed border-zinc-300 bg-zinc-50 text-zinc-400 line-through opacity-60 dark:border-zinc-600 dark:bg-zinc-900 dark:text-zinc-500"),"data-testid":"showroom-prior-chip-".concat(e.id),"data-enabled":t?"true":"false",title:e.text.slice(0,200),children:[z?(0,r.jsx)("button",{type:"button",onClick:()=>z(e.id),disabled:q||W,className:"max-w-[200px] truncate text-left hover:underline disabled:cursor-not-allowed disabled:opacity-50","aria-label":"".concat(t?"Disable":"Enable"," prior answer ").concat(e.label),"aria-pressed":t,"data-testid":"showroom-prior-toggle-".concat(e.id),children:e.label}):(0,r.jsx)("span",{className:"max-w-[200px] truncate",children:e.label}),j&&(0,r.jsx)("button",{type:"button",onClick:()=>j(e.id),disabled:q||W,className:"rounded-full p-0.5 hover:bg-indigo-100 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-indigo-900/50","aria-label":"Remove prior answer ".concat(e.label),"data-testid":"showroom-prior-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]},e.id)})]}),eY&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-terminal-context-list",children:[(0,r.jsx)(ei.A,{className:"size-3","aria-hidden":!0}),(0,r.jsx)("span",{children:"terminal:"}),null==f?void 0:f.map(e=>(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-violet-300 bg-white px-2 py-0.5 text-[11px] font-medium text-violet-700 dark:border-violet-700 dark:bg-zinc-800 dark:text-violet-300","data-testid":"showroom-terminal-chip-".concat(e.id),title:e.text.slice(0,200),children:[(0,r.jsx)("span",{className:"max-w-[200px] truncate",children:e.label}),w&&(0,r.jsx)("button",{type:"button",onClick:()=>w(e.id),disabled:q||W,className:"rounded-full p-0.5 hover:bg-violet-100 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-violet-900/50","aria-label":"Remove terminal context ".concat(e.label),"data-testid":"showroom-terminal-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]},e.id))]}),X&&v&&(0,r.jsxs)("div",{className:"mb-2 rounded-md border border-violet-300 bg-violet-50/40 p-2 dark:border-violet-700 dark:bg-violet-900/20","data-testid":"showroom-terminal-pin-draft",children:[(0,r.jsxs)("div",{className:"mb-1 flex items-center justify-between text-[10px] text-violet-700 dark:text-violet-300",children:[(0,r.jsx)("span",{children:ev?"active terminal 선택 또는 paste \xb7 Pin 으로 broadcast prefix 추가":"terminal output 을 paste \xb7 Pin 으로 broadcast prefix 추가"}),(0,r.jsx)("button",{type:"button",onClick:()=>{ee(!1),Z("")},className:"rounded p-0.5 hover:bg-violet-100 dark:hover:bg-violet-900/40","aria-label":"Cancel pin",children:(0,r.jsx)(l.A,{className:"size-3","aria-hidden":!0})})]}),ev&&(0,r.jsxs)("div",{className:"mb-2 rounded border border-violet-200 bg-white/80 p-1.5 dark:border-violet-700 dark:bg-zinc-900/60","data-testid":"showroom-terminal-picker",children:[(0,r.jsxs)("div",{className:"mb-1 flex items-center justify-between text-[10px] text-violet-600 dark:text-violet-300",children:[(0,r.jsxs)("span",{children:["active terminals",er&&" \xb7 loading…",!er&&0===et.length&&" \xb7 없음"]}),(0,r.jsx)("button",{type:"button",onClick:()=>void ew(),disabled:er,className:"inline-flex items-center gap-0.5 rounded p-0.5 hover:bg-violet-100 disabled:opacity-50 dark:hover:bg-violet-900/40","aria-label":"Refresh terminals list","data-testid":"showroom-terminal-picker-refresh",children:(0,r.jsx)(es.A,{className:"size-3 ".concat(er?"animate-spin":""),"aria-hidden":!0})})]}),eb&&(0,r.jsx)("div",{className:"mb-1 text-[10px] text-rose-600 dark:text-rose-300",children:eb}),et.length>0&&(0,r.jsx)("div",{className:"flex flex-wrap gap-1",children:et.map(e=>(0,r.jsxs)("button",{type:"button",onClick:()=>void ek(e.id),disabled:eg===e.id,className:"inline-flex max-w-[220px] items-center gap-1 truncate rounded-full border border-violet-300 bg-white px-2 py-0.5 text-[10px] text-violet-700 hover:bg-violet-100 disabled:cursor-not-allowed disabled:opacity-50 dark:border-violet-700 dark:bg-zinc-800 dark:text-violet-300 dark:hover:bg-violet-900/40",title:"".concat(e.name||e.id).concat(e.status?" \xb7 ".concat(e.status):""),"data-testid":"showroom-terminal-picker-".concat(e.id),children:[(0,r.jsx)(ei.A,{className:"size-3","aria-hidden":!0}),(0,r.jsxs)("span",{className:"truncate",children:[e.name||e.id,!e.alive&&" (exited)"]})]},e.id))})]}),(0,r.jsx)("textarea",{value:Q,onChange:e=>Z(e.target.value),rows:4,placeholder:"paste terminal output here…",className:"w-full resize-y rounded-md border border-violet-200 bg-white px-2 py-1.5 font-mono text-[11px] focus:outline-none focus:ring-2 focus:ring-violet-400 dark:border-violet-700 dark:bg-zinc-900","data-testid":"showroom-terminal-draft-textarea"}),(0,r.jsx)("div",{className:"mt-1 flex justify-end",children:(0,r.jsxs)("button",{type:"button",onClick:eI,disabled:!Q.trim(),className:"inline-flex items-center gap-1 rounded-md bg-violet-700 px-2 py-1 text-[11px] font-medium text-white hover:bg-violet-600 disabled:cursor-not-allowed disabled:opacity-50","data-testid":"showroom-terminal-pin-confirm",children:[(0,r.jsx)(ei.A,{className:"size-3","aria-hidden":!0}),"Pin"]})})]}),eR&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-attachment-list",children:[(0,r.jsx)(ed.A,{className:"size-3","aria-hidden":!0}),(0,r.jsx)("span",{children:"attached:"}),null==b?void 0:b.map(e=>(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-sky-300 bg-white px-2 py-0.5 text-[11px] font-medium text-sky-700 dark:border-sky-700 dark:bg-zinc-800 dark:text-sky-300","data-testid":"showroom-attachment-chip-".concat(e.id),children:[(0,r.jsx)("span",{className:"max-w-[160px] truncate",children:e.filename}),g&&(0,r.jsx)("button",{type:"button",onClick:()=>g(e.id),disabled:q||W,className:"rounded-full p-0.5 hover:bg-sky-100 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-sky-900/50","aria-label":"Remove attachment ".concat(e.filename),"data-testid":"showroom-attachment-remove-".concat(e.id),children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]},e.id))]}),p.length>0&&(0,r.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5 text-[10px] text-zinc-500","data-testid":"showroom-mention-picker",children:[(0,r.jsx)(ec.A,{className:"size-3","aria-hidden":!0}),(0,r.jsx)("span",{children:"mention:"}),p.map(e=>{let t=y(e,p);return(0,r.jsxs)("button",{type:"button",onClick:()=>eE(t),disabled:q||W,className:"inline-flex items-center rounded-full border border-zinc-300 bg-white px-2 py-0.5 text-[11px] font-medium text-zinc-700 hover:bg-zinc-100 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-200 dark:hover:bg-zinc-700","data-testid":"showroom-mention-chip-".concat(t),"aria-label":"Mention ".concat(t," in input"),children:["@",t]},e.id)}),(0,r.jsx)("button",{type:"button",onClick:()=>eE("all"),disabled:q||W,className:"inline-flex items-center rounded-full border border-emerald-300 bg-white px-2 py-0.5 text-[11px] font-medium text-emerald-700 hover:bg-emerald-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-emerald-700 dark:bg-zinc-800 dark:text-emerald-300 dark:hover:bg-emerald-900/30","data-testid":"showroom-mention-chip-all","aria-label":"Mention all (explicit broadcast)",children:"@all"})]}),(eM.targets.length>0||eM.broadcastAll||eM.unknown.length>0)&&(0,r.jsxs)("div",{className:"mb-1 flex flex-wrap items-center gap-1 text-[10px]","data-testid":"showroom-mention-detected-strip","aria-label":"Detected mentions in input",children:[(0,r.jsx)("span",{className:"text-zinc-500",children:"detected:"}),eM.broadcastAll&&(0,r.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded-full border border-emerald-400 bg-emerald-50 px-1.5 py-0.5 text-emerald-700 dark:border-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300","data-testid":"showroom-mention-detected-all",title:"explicit broadcast (mute/freeze 무시)",children:[(0,r.jsx)(ec.A,{className:"size-2.5","aria-hidden":!0}),"all"]}),eM.targets.map(e=>{let t=y(e,p),a="agent"===e.kind;return(0,r.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded-full px-1.5 py-0.5 ".concat(a?"border border-amber-400 bg-amber-50 text-amber-700 dark:border-amber-700 dark:bg-amber-900/40 dark:text-amber-300":"border border-indigo-400 bg-indigo-50 text-indigo-700 dark:border-indigo-700 dark:bg-indigo-900/40 dark:text-indigo-300"),"data-testid":"showroom-mention-detected-".concat(t),title:"".concat(a?"agent CLI":"chat"," panel \xb7 ").concat(e.state),children:[a?(0,r.jsx)(s.A,{className:"size-2.5","aria-hidden":!0}):(0,r.jsx)(ec.A,{className:"size-2.5","aria-hidden":!0}),t]},e.id)}),eM.unknown.map(e=>(0,r.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded-full border border-rose-300 bg-rose-50 px-1.5 py-0.5 text-rose-700 line-through dark:border-rose-700 dark:bg-rose-900/40 dark:text-rose-300","data-testid":"showroom-mention-detected-unknown-".concat(e),title:"Unknown mention — panel 없음",children:[(0,r.jsx)(ec.A,{className:"size-2.5","aria-hidden":!0}),e]},"unknown-".concat(e)))]}),ez&&(ez.matches.length>0||ez.allMatches)&&(0,r.jsxs)("div",{className:"mb-1 max-h-32 overflow-y-auto rounded-md border border-zinc-300 bg-white text-xs shadow-sm dark:border-zinc-700 dark:bg-zinc-800","data-testid":"showroom-mention-typeahead",children:[ez.allMatches&&(0,r.jsxs)("button",{type:"button",onClick:()=>eC("all"),className:"block w-full px-3 py-1.5 text-left text-emerald-700 hover:bg-emerald-50 dark:text-emerald-300 dark:hover:bg-emerald-900/30","data-testid":"showroom-mention-typeahead-all",children:[(0,r.jsx)("span",{className:"font-medium",children:"@all"}),(0,r.jsx)("span",{className:"ml-2 text-[10px] text-zinc-500",children:"explicit broadcast"})]}),ez.matches.map((e,t)=>{let a=y(e,p);return(0,r.jsxs)("button",{type:"button",onClick:()=>eC(a),className:"block w-full px-3 py-1.5 text-left hover:bg-zinc-100 dark:hover:bg-zinc-700 ".concat(0!==t||ez.allMatches?"":"bg-zinc-50 font-medium dark:bg-zinc-700/40"),"data-testid":"showroom-mention-typeahead-".concat(a),children:["@",a,(0,r.jsx)("span",{className:"ml-2 text-[10px] text-zinc-500",children:e.state})]},e.id)})]}),(0,r.jsxs)("div",{className:"flex items-end gap-2",children:[v&&(0,r.jsx)("button",{type:"button",onClick:()=>ee(e=>!e),disabled:q||W,className:"rounded p-1.5 text-violet-600 hover:bg-violet-100 disabled:cursor-not-allowed disabled:opacity-50 dark:text-violet-300 dark:hover:bg-violet-900/40","aria-label":"Pin terminal context",title:"Pin terminal output as context","aria-pressed":X,"data-testid":"showroom-terminal-pin-toggle",children:(0,r.jsx)(ei.A,{className:"size-3.5","aria-hidden":!0})}),C&&(0,r.jsx)("button",{type:"button",onClick:()=>e8(e=>!e),disabled:q||W,className:"rounded p-1.5 text-sky-600 hover:bg-sky-100 disabled:cursor-not-allowed disabled:opacity-50 dark:text-sky-300 dark:hover:bg-sky-900/40","aria-label":"Add URL context",title:"Fetch URL as context","aria-pressed":e6,"data-testid":"showroom-url-pin-toggle",children:(0,r.jsx)(eu.A,{className:"size-3.5","aria-hidden":!0})}),M&&(0,r.jsx)("button",{type:"button",onClick:to,disabled:q||W||tt,className:"rounded p-1.5 text-emerald-600 hover:bg-emerald-100 disabled:cursor-not-allowed disabled:opacity-50 dark:text-emerald-300 dark:hover:bg-emerald-900/40","aria-label":"Pin clipboard text",title:"Read clipboard text as context","data-testid":"showroom-clipboard-pin",children:(0,r.jsx)(em.A,{className:"size-3.5","aria-hidden":!0})}),D&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("input",{ref:eB,type:"file",accept:"video/*",className:"hidden","data-testid":"showroom-video-input",onChange:e=>{var t;let a=null==(t=e.target.files)?void 0:t[0];a&&eG(a),e.target.value=""}}),(0,r.jsx)("button",{type:"button",onClick:()=>{var e;return null==(e=eB.current)?void 0:e.click()},disabled:q||W||eH,className:"rounded p-1.5 text-purple-600 hover:bg-purple-100 disabled:cursor-not-allowed disabled:opacity-50 dark:text-purple-300 dark:hover:bg-purple-900/40","aria-label":"Pin video file as context",title:"Pick video file (keyframe extracted via canvas)","data-testid":"showroom-video-pin",children:(0,r.jsx)(eo.A,{className:"size-3.5","aria-hidden":!0})})]}),U&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("input",{ref:eq,type:"file",accept:"audio/*",className:"hidden","data-testid":"showroom-audio-input",onChange:e=>{var t;let a=null==(t=e.target.files)?void 0:t[0];a&&e0(a),e.target.value=""}}),(0,r.jsx)("button",{type:"button",onClick:()=>{var e;return null==(e=eq.current)?void 0:e.click()},disabled:q||W||e$,className:"rounded p-1.5 text-cyan-600 hover:bg-cyan-100 disabled:cursor-not-allowed disabled:opacity-50 dark:text-cyan-300 dark:hover:bg-cyan-900/40","aria-label":"Pin audio file as context",title:"Pick audio file (metadata + optional transcript)","data-testid":"showroom-audio-pin",children:(0,r.jsx)(el.A,{className:"size-3.5","aria-hidden":!0})})]}),x&&(0,r.jsx)(eh.u,{onAttached:x}),x&&(0,r.jsx)(ey,{onAttachToSession:e=>x([e])}),x&&(0,r.jsx)(ej.z,{}),(0,r.jsx)("textarea",{ref:$,id:"showroom-broadcast-input",value:H,onChange:e=>{J(e.target.value),requestAnimationFrame(eS)},onSelect:()=>eS(),onKeyDown:eT,onBlur:()=>{setTimeout(()=>eN(null),100)},rows:2,disabled:q||W,placeholder:h>0?"".concat(h," live panel 에 broadcast — 또는 @name 으로 targeted (Enter)…"):"모든 panel 이 mute \xb7 live 로 전환하거나 panel 추가",className:"flex-1 resize-none rounded-md border border-zinc-300 bg-white px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-zinc-400 disabled:cursor-not-allowed disabled:opacity-60 dark:border-zinc-700 dark:bg-zinc-800","aria-label":"Showroom broadcast input","data-testid":"showroom-input"}),(0,r.jsxs)("button",{type:"button",onClick:()=>void eA(),disabled:!eD,className:"inline-flex h-9 items-center gap-1.5 rounded-md bg-zinc-900 px-3 text-xs font-medium text-white hover:bg-zinc-700 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-zinc-300","aria-label":"broadcast"===eP.mode?"Broadcast to all live panels":"Targeted send to ".concat(eP.targets.length," panel(s)"),"data-testid":"showroom-send",children:[(0,r.jsx)(ep.A,{className:"size-3.5","aria-hidden":!0}),eL]})]})]})}var eN=a(46226);function eS(e){return e&&"object"==typeof e?"string"!=typeof e.requestId||"string"!=typeof e.prompt?null:{requestId:e.requestId,prompt:e.prompt,..."string"==typeof e.detail?{detail:e.detail}:{},yesLabel:"string"==typeof e.yesLabel?e.yesLabel:"Yes",noLabel:"string"==typeof e.noLabel?e.noLabel:"No"}:null}function eC(e){return e&&"object"==typeof e&&"string"==typeof e.requestId?e.requestId:null}function eI(e){let{pending:t,submitting:a,error:n,onAnswer:o}=e;return t?(0,r.jsxs)("div",{role:"alertdialog","aria-label":"Approval request","data-testid":"hitl-banner","data-request-id":t.requestId,className:"fixed left-1/2 top-4 z-50 flex w-[min(calc(100vw-2rem),36rem)] -translate-x-1/2 flex-col gap-3 rounded-2xl border border-amber-300/70 bg-amber-50/95 p-4 shadow-2xl ring-1 ring-amber-400/30 backdrop-blur-sm dark:border-amber-700/60 dark:bg-amber-950/90 dark:ring-amber-700/50",children:[(0,r.jsxs)("div",{className:"flex items-start gap-3",children:[(0,r.jsx)("div",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-amber-200 text-amber-900 dark:bg-amber-800/80 dark:text-amber-100",children:(0,r.jsx)("span",{"aria-hidden":!0,className:"text-base",children:"⚠"})}),(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("div",{className:"text-sm font-semibold text-amber-900 dark:text-amber-100",children:t.prompt}),t.detail&&(0,r.jsx)("div",{className:"mt-1 break-words text-xs text-amber-800/80 dark:text-amber-200/80",children:t.detail})]})]}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("button",{type:"button",onClick:()=>o(!1),disabled:a,"data-testid":"hitl-banner-deny",className:"flex-1 rounded-lg border border-amber-300 bg-white px-3 py-1.5 text-sm font-medium text-amber-900 transition hover:bg-amber-100 disabled:cursor-not-allowed disabled:opacity-50 dark:border-amber-700 dark:bg-amber-900/40 dark:text-amber-100 dark:hover:bg-amber-800/60",children:t.noLabel}),(0,r.jsx)("button",{type:"button",onClick:()=>o(!0),disabled:a,"data-testid":"hitl-banner-approve",className:"flex-1 rounded-lg border border-amber-500 bg-amber-500 px-3 py-1.5 text-sm font-semibold text-white transition hover:bg-amber-600 disabled:cursor-not-allowed disabled:opacity-50",children:t.yesLabel})]}),n&&(0,r.jsx)("div",{role:"alert","data-testid":"hitl-banner-error",className:"text-xs text-red-700 dark:text-red-300",children:n})]}):null}function eA(){let e=(0,eN.Qj)(),{config:t}=(0,v.Q)(),{pending:a,submitting:o,error:l,submit:i}=function(e){let{client:t,baseUrl:a,fetchImpl:r,onDebug:o}=e,[l,i]=(0,n.useState)(null),[s,d]=(0,n.useState)(!1),[c,u]=(0,n.useState)(null),m=(0,n.useRef)(null!=r?r:"undefined"!=typeof fetch?fetch:null);(0,n.useEffect)(()=>{m.current=null!=r?r:"undefined"!=typeof fetch?fetch:null},[r]),(0,n.useEffect)(()=>{if(t)return t.subscribeEvents({topics:["hitl.banner."],onEvent:e=>{if("hitl.banner.show"===e.kind||"hitl.banner.cancel"===e.kind){if("hitl.banner.show"===e.kind){let t=eS(e.detail);t&&(null==o||o("hitl.banner.show",{requestId:t.requestId}))}else{let t=eC(e.detail);null==o||o("hitl.banner.cancel",{requestId:null!=t?t:"(missing)"})}i(t=>(function(e,t,a){if("hitl.banner.show"===t){var r;return null!=(r=eS(a))?r:e}if("hitl.banner.cancel"===t){if(!e)return e;let t=eC(a);return null!==t&&t!==e.requestId?e:null}return e})(t,e.kind,e.detail)),"hitl.banner.show"===e.kind&&u(null)}},onError:e=>null==o?void 0:o("hitl.banner.sse-error",{msg:e.message})})},[t,o]);let p=(0,n.useCallback)(async e=>{var t,r,n;if(!l||s)return;if(!a)return void u("daemon baseUrl not configured");if(!m.current)return void u("fetch unavailable");d(!0),u(null);let c=(t=l.requestId,"".concat(a.replace(/\/$/,""),"/v1/hitl/callback/").concat(encodeURIComponent(t)));null==o||o("hitl.banner.submit",{requestId:l.requestId,answer:e});try{let t=(r=(await m.current(c,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({answer:e})})).status)>=200&&r<300||404===r?{kind:"cleared"}:{kind:"error",message:"HTTP ".concat(r)};"cleared"===t.kind?i(null):u(t.message)}catch(e){u(null!=(n=e.message)?n:"submit failed")}finally{d(!1)}},[a,o,l,s]);return{pending:l,submitting:s,error:c,submit:p}}({client:e,baseUrl:t.baseUrl,onDebug:(e,t)=>(0,W.cY)(e,t)});return(0,r.jsx)(eI,{pending:a,submitting:o,error:l,onAnswer:e=>{i(e)}})}function eT(e){if(!e||"object"!=typeof e||"string"!=typeof e.sessionId||!Array.isArray(e.candidates)||6!==e.candidates.length||"number"!=typeof e.version||"number"!=typeof e.generatedAt)return null;for(let t of e.candidates)if(!t||"object"!=typeof t||"string"!=typeof t.label||"number"!=typeof t.confidence)return null;return e}function eE(e){let{label:t,confidence:a,reason:n,disabled:o,onTap:l}=e,i=Number.isNaN(a)||!Number.isFinite(a)||a<=0?100:a>=.9?600:a>=.7?500:a>=.5?400:a>=.3?300:a>=.15?200:100,s=function(e){switch(e){case 600:return"bg-emerald-600 hover:bg-emerald-700 text-white border-emerald-600";case 500:return"bg-emerald-500 hover:bg-emerald-600 text-white border-emerald-500";case 400:return"bg-emerald-400 hover:bg-emerald-500 text-emerald-950 border-emerald-400";case 300:return"bg-emerald-300 hover:bg-emerald-400 text-emerald-950 border-emerald-300";case 200:return"bg-emerald-200 hover:bg-emerald-300 text-emerald-950 border-emerald-200";default:return"bg-zinc-100 hover:bg-zinc-200 text-zinc-700 border-zinc-200 dark:bg-zinc-800 dark:hover:bg-zinc-700 dark:text-zinc-300 dark:border-zinc-700"}}(i),d="".concat(Math.round(100*a),"%");return(0,r.jsxs)("button",{type:"button",onClick:l,disabled:o,"data-testid":"intent-button-".concat(t),"data-confidence":a.toFixed(3),"data-intensity":i,title:n?"".concat(t," \xb7 ").concat(d," \xb7 ").concat(n):"".concat(t," \xb7 ").concat(d),"aria-label":"".concat(t," \xb7 신뢰도 ").concat(d).concat(n?" \xb7 ".concat(n):""),className:"flex flex-col items-center justify-center rounded-lg border px-3 py-2 text-xs font-medium shadow-sm transition disabled:cursor-not-allowed disabled:opacity-50 ".concat(s),children:[(0,r.jsx)("span",{className:"leading-tight",children:t}),(0,r.jsx)("span",{className:"mt-0.5 text-[10px] opacity-70",children:d})]})}var eM=a(60472);function eP(e){var t;let{ranking:a,submitting:n,error:o,onTap:l,collapsed:i=!1,onToggleCollapsed:s}=e,d=a?[...a.candidates].sort((e,t)=>t.confidence-e.confidence):[{label:"계속 진행",confidence:0,reason:"pending"},{label:"오토파일럿",confidence:0,reason:"pending"},{label:"추가 보완",confidence:0,reason:"pending"},{label:"diff 보여줘",confidence:0,reason:"pending"},{label:"승인",confidence:0,reason:"pending"},{label:"잠시 멈춤",confidence:0,reason:"pending"}];return(0,r.jsxs)("div",{"data-testid":"intent-panel","data-version":null!=(t=null==a?void 0:a.version)?t:0,"data-collapsed":i?"true":"false",className:"flex flex-col gap-2 border-y border-zinc-200 bg-white/70 px-3 py-2 backdrop-blur-sm dark:border-zinc-800 dark:bg-zinc-900/70",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-[11px] font-medium text-zinc-500 dark:text-zinc-400",children:"intent \xb7 다음 행동"}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[a&&(0,r.jsxs)("span",{className:"text-[10px] text-zinc-400 dark:text-zinc-500","data-testid":"intent-panel-version",children:["v",a.version]}),s&&(0,r.jsx)("button",{type:"button",onClick:s,"aria-label":i?"Expand intent panel":"Collapse intent panel","data-testid":"intent-panel-toggle",className:"rounded p-0.5 text-[11px] text-zinc-400 hover:bg-zinc-100 hover:text-zinc-700 dark:text-zinc-500 dark:hover:bg-zinc-800 dark:hover:text-zinc-200",children:i?"▼":"▲"})]})]}),!i&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{role:"group","aria-label":"Intent suggestions",className:"grid grid-cols-3 gap-1.5 sm:grid-cols-6",children:d.map(e=>(0,r.jsx)(eE,{label:e.label,confidence:e.confidence,reason:e.reason,disabled:n||!a,onTap:()=>l(e.label)},e.label))}),o&&(0,r.jsx)("div",{role:"alert","data-testid":"intent-panel-error",className:"text-[11px] text-red-600 dark:text-red-400",children:o})]})]})}function eL(e){let{sessionId:t,onTap:a}=e,o=(0,eN.Qj)(),{config:l}=(0,v.Q)(),{ranking:i,submitting:s,error:d,submitTap:c}=function(e){let{client:t,sessionId:a,baseUrl:r,buildContext:o,fetchImpl:l,onDebug:i}=e,[s,d]=(0,n.useState)(null),[c,u]=(0,n.useState)(!1),[m,p]=(0,n.useState)(null),h=(0,n.useRef)(null!=l?l:"undefined"!=typeof fetch?fetch:null);(0,n.useEffect)(()=>{h.current=null!=l?l:"undefined"!=typeof fetch?fetch:null},[l]),(0,n.useEffect)(()=>{a||d(null)},[a]),(0,n.useEffect)(()=>{var e,n;if(!t||!a)return;let o="".concat(r.replace(/\/$/,""),"/v1/intent-prediction/").concat(encodeURIComponent(a));return null==i||i("intent.snapshot.attempt",{url:o}),null==(n=h.current)||null==(e=n.call(h,o,{method:"GET"}))||e.then(async e=>{if(e.ok)try{let t=await e.json(),r=eT(t);r&&r.sessionId===a&&(null==i||i("intent.sse.ranking",{version:r.version}),d(r))}catch(e){}}).catch(()=>{}),t.subscribeEvents({topics:["intent-prediction."],kinds:["intent-prediction.ranking"],onEvent:e=>{if("intent-prediction.ranking"===e.kind){let t=eT(e.detail);t&&t.sessionId===a&&(null==i||i("intent.sse.ranking",{version:t.version}),d(t))}else{let t=eT(e);t&&t.sessionId===a&&(null==i||i("intent.sse.ranking",{version:t.version}),d(t))}},onError:e=>null==i?void 0:i("intent.sse.error",{msg:e.message})})},[t,a,r,i]);let b=(0,n.useCallback)(async e=>{var t,n;if(!a||c)return;if(!r)return void p("daemon baseUrl not configured");if(!h.current)return void p("fetch unavailable");let l=null!=(t=null==o?void 0:o())?t:{sessionId:a,lastTurnSummary:"",lastErr:null,progressPct:0,fileEditCount:0,idleMs:0};l.sessionId!==a&&(l.sessionId=a),u(!0),p(null),null==i||i("intent.feedback.submit",{label:e,sessionId:a});try{let t=await h.current("".concat(r.replace(/\/$/,""),"/v1/intent-prediction/").concat(encodeURIComponent(a),"/feedback"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({chosen:e,context:l})});t.ok||(p("HTTP ".concat(t.status)),null==i||i("intent.feedback.error",{status:t.status}))}catch(t){let e=null!=(n=t.message)?n:"submit failed";p(e),null==i||i("intent.feedback.error",{msg:e})}finally{u(!1)}},[r,o,i,a,c]);return{ranking:s,submitting:c,error:m,submitTap:b}}({client:o,sessionId:t,baseUrl:l.baseUrl,onDebug:(e,t)=>(0,W.cY)(e,t)}),[u,m]=(0,n.useState)(!1);(0,n.useEffect)(()=>(m((0,eM.GZ)()),(0,eM.gu)(m)),[]);let[p,h]=(0,n.useState)("fixed");(0,n.useEffect)(()=>(h((0,eM.sY)()),(0,eM.u9)(h)),[]);let[b,x]=(0,n.useState)(!1),g=(0,n.useRef)(-1);return((0,n.useEffect)(()=>{var e;if("popup"!==p)return;let t=null!=(e=null==i?void 0:i.version)?e:-1;if(t<0||t===g.current)return;g.current=t,x(!0);let a=setTimeout(()=>x(!1),6e3);return()=>clearTimeout(a)},[null==i?void 0:i.version,p]),"off"!==p&&("popup"!==p||b))?(0,r.jsx)(eP,{ranking:i,submitting:s,error:d,collapsed:u,onToggleCollapsed:()=>{let e=!u;(0,eM.mB)(e),m(e),(0,W.cY)("intent.panel.toggle-collapsed",{collapsed:e})},onTap:e=>{"popup"===p&&x(!1),c(e),null==a||a(e)}}):null}let eD="showroom.hitl.disabled";function eR(){if(!window.localStorage)return!1;try{return"true"===window.localStorage.getItem(eD)}catch(e){return!1}}function eY(){let[e,t]=(0,n.useState)(!1),[a,o]=(0,n.useState)(!1);(0,n.useEffect)(()=>{o(!0),t(eR());let e=function(e){let t=t=>{t.key===eD&&e(eR())};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}(t);return()=>{e()}},[]);let l=(0,n.useCallback)(()=>{t(e=>{let t=!e;return!function(e){if(window.localStorage)try{e?window.localStorage.setItem(eD,"true"):window.localStorage.removeItem(eD)}catch(e){return!1}}(t),t})},[]);return a?(0,r.jsxs)("button",{type:"button",onClick:l,"data-testid":"showroom-hitl-toggle","data-state":e?"off":"on",title:e?"HITL prompts disabled for new agent sessions — click to re-enable":"HITL prompts active — click to disable for demo","aria-pressed":!e,className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs font-mono "+(e?"border-zinc-300 bg-zinc-100 text-zinc-500 hover:bg-zinc-200 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-400 dark:hover:bg-zinc-700":"border-emerald-300 bg-emerald-50 text-emerald-700 hover:bg-emerald-100 dark:border-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-300 dark:hover:bg-emerald-900/50"),children:[(0,r.jsx)("span",{"aria-hidden":!0,children:e?"○":"●"}),(0,r.jsxs)("span",{children:["HITL ",e?"OFF":"ON"]})]}):null}var e_=a(75564);function eU(e){return Array.from(e.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])')).filter(e=>{var t;if(e.hasAttribute("disabled")||"true"===e.getAttribute("aria-hidden"))return!1;let a=null==(t=e.ownerDocument.defaultView)?void 0:t.getComputedStyle(e);return!a||"none"!==a.display&&"hidden"!==a.visibility})}function eF(e){let t=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(!e.active)return;let a=t.current;if(!a)return;let r=document.activeElement;if(!e.skipInitialFocus){let e=eU(a);if(e.length>0){var n;null==(n=e[0])||n.focus()}else a.tabIndex=-1,a.focus()}function o(e){if("Tab"!==e.key)return;let t=eU(a);if(0===t.length)return void e.preventDefault();let r=t[0],n=t[t.length-1],o=document.activeElement;if(e.shiftKey&&o===r){e.preventDefault(),n.focus();return}e.shiftKey||o!==n||(e.preventDefault(),r.focus())}return a.addEventListener("keydown",o),()=>{if(a.removeEventListener("keydown",o),r&&document.body.contains(r))try{r.focus()}catch(e){}}},[e.active,e.skipInitialFocus]),t}function eK(e){return e.metaKey||e.ctrlKey}let eO=[{id:"focus-broadcast-input",combo:"⌘K / Ctrl+K",effect:"Focus broadcast input"},{id:"toggle-role-judge",combo:"⌘⇧J / Ctrl+⇧J",effect:"Toggle role-judge backend"},{id:"toggle-voice",combo:"⌘⇧M / Ctrl+⇧M",effect:"Toggle voice mode (mic)"},{id:"toggle-tts",combo:"⌘⇧Y / Ctrl+⇧Y",effect:"Toggle TTS mute"},{id:"open-help",combo:"?",effect:"Open this help overlay"}];function eB(e){let{open:t,onClose:a}=e,n=eF({active:t,skipInitialFocus:!1});return t?(0,r.jsx)("div",{ref:n,className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4",role:"dialog","aria-modal":"true","aria-labelledby":"showroom-shortcut-help-title","data-testid":"showroom-shortcut-help",onKeyDown:e=>{"Escape"===e.key&&(e.stopPropagation(),a())},onClick:e=>{e.target===e.currentTarget&&a()},children:(0,r.jsxs)("div",{className:"w-full max-w-md rounded-lg border border-zinc-300 bg-white p-4 shadow-xl dark:border-zinc-700 dark:bg-zinc-900",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,r.jsxs)("h2",{id:"showroom-shortcut-help-title",className:"flex items-center gap-2 text-sm font-medium text-zinc-900 dark:text-zinc-100",children:[(0,r.jsx)(e_.A,{className:"size-4","aria-hidden":!0}),"Keyboard shortcuts"]}),(0,r.jsx)("button",{type:"button",onClick:a,className:"rounded p-1 text-zinc-500 hover:bg-zinc-100 dark:hover:bg-zinc-800","aria-label":"Close shortcut help","data-testid":"showroom-shortcut-help-close",children:(0,r.jsx)(l.A,{className:"size-4","aria-hidden":!0})})]}),(0,r.jsx)("ul",{className:"space-y-1.5","data-testid":"showroom-shortcut-help-list",children:eO.map(e=>(0,r.jsxs)("li",{className:"flex items-center justify-between gap-3 rounded px-2 py-1 text-xs text-zinc-700 dark:text-zinc-300","data-testid":"showroom-shortcut-help-row-".concat(e.id),children:[(0,r.jsx)("span",{children:e.effect}),(0,r.jsx)("kbd",{className:"rounded border border-zinc-300 bg-zinc-50 px-1.5 py-0.5 font-mono text-[10px] text-zinc-600 dark:border-zinc-600 dark:bg-zinc-800 dark:text-zinc-300",children:e.combo})]},e.id))}),(0,r.jsxs)("p",{className:"mt-3 text-[10px] text-zinc-500",children:["Editable surfaces (input \xb7 textarea \xb7 contenteditable) suppress ⌘⇧{J,M,Y} and ",(0,r.jsx)("kbd",{className:"font-mono",children:"?"})," so typing isn't intercepted. ",(0,r.jsx)("kbd",{className:"font-mono",children:"⌘K"})," is the intentional exception."]})]})}):null}var eq=a(96598);function eH(e){return e>=1e3?"".concat((e/1e3).toFixed(1),"k"):String(e)}function eJ(e){let{estimate:t,onConfirm:a,onCancel:o}=e,l=(0,n.useRef)(null),i=(0,n.useRef)(null);(0,n.useEffect)(()=>{var e;null==(e=i.current)||e.focus()},[]);let s=eH(t.totalTokens),d=eH(t.warnThreshold),c=Math.round((t.totalTokens-t.warnThreshold)/t.warnThreshold*100);return(0,r.jsx)("div",{ref:l,className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4",role:"dialog","aria-modal":"true","aria-labelledby":"showroom-cost-gate-title","aria-describedby":"showroom-cost-gate-summary","data-testid":"showroom-cost-gate-modal",onKeyDown:e=>{"Escape"===e.key&&(e.stopPropagation(),o())},children:(0,r.jsxs)("div",{className:"w-full max-w-lg rounded-lg border border-amber-300 bg-white p-4 shadow-xl dark:border-amber-700 dark:bg-zinc-900",children:[(0,r.jsx)("h2",{id:"showroom-cost-gate-title",className:"mb-2 text-sm font-medium text-amber-700 dark:text-amber-300",children:"⚠️ Broadcast cost warning"}),(0,r.jsxs)("p",{id:"showroom-cost-gate-summary",className:"mb-3 text-xs text-zinc-700 dark:text-zinc-300",children:["예상 token ",(0,r.jsx)("strong",{"data-testid":"showroom-cost-gate-total",children:s})," \xb7 임계값 ",(0,r.jsx)("strong",{children:d})," 을 ",(0,r.jsxs)("strong",{children:[c,"%"]})," 초과합니다. multi-LLM broadcast 는 모든 panel 의 input 을 합산."]}),(0,r.jsxs)("div",{className:"mb-3 max-h-56 overflow-y-auto rounded-md border border-zinc-200 bg-zinc-50 p-2 text-[11px] dark:border-zinc-700 dark:bg-zinc-800","data-testid":"showroom-cost-gate-breakdown",children:[(0,r.jsxs)("div",{className:"grid grid-cols-[1fr_auto_auto_auto] gap-x-2 font-medium text-zinc-600 dark:text-zinc-400",children:[(0,r.jsx)("span",{children:"panel"}),(0,r.jsx)("span",{className:"text-right",children:"input"}),(0,r.jsx)("span",{className:"text-right",children:"prior"}),(0,r.jsx)("span",{className:"text-right",children:"total"})]}),t.perPanel.map(e=>(0,r.jsxs)("div",{className:"grid grid-cols-[1fr_auto_auto_auto] gap-x-2 py-0.5 font-mono text-zinc-700 dark:text-zinc-300","data-testid":"showroom-cost-gate-row-".concat(e.panelId),children:[(0,r.jsx)("span",{className:"truncate",children:e.displayName}),(0,r.jsx)("span",{className:"text-right",children:eH(e.inputTokens)}),(0,r.jsx)("span",{className:"text-right",children:e.priorTokens>0?eH(e.priorTokens):"—"}),(0,r.jsx)("span",{className:"text-right font-semibold",children:eH(e.totalTokens)})]},e.panelId))]}),(0,r.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,r.jsx)(eq.$,{type:"button",variant:"ghost",size:"sm",onClick:o,"data-testid":"showroom-cost-gate-cancel",children:"Cancel"}),(0,r.jsx)(eq.$,{ref:i,type:"button",size:"sm",onClick:a,"data-testid":"showroom-cost-gate-confirm",className:"bg-amber-600 text-white hover:bg-amber-700",children:"Send anyway"})]}),(0,r.jsxs)("span",{className:"sr-only","aria-live":"assertive","data-testid":"showroom-cost-gate-announcer",children:["Broadcast cost ",t.totalTokens," tokens, confirming"]})]})})}var eW=a(42129);function eV(e){let{pending:t,queueLength:a,onConfirm:o,onCancel:i}=e;if(!t)return null;let s=t.forwardText.length>600,d=s?"".concat(t.forwardText.slice(0,600),"…"):t.forwardText,c=Math.max(0,a-1);return(0,r.jsxs)(n.Fragment,{children:[(0,r.jsx)("div",{className:"fixed inset-0 z-50 bg-black/40 backdrop-blur-sm","aria-hidden":!0}),(0,r.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":"Chain forward confirmation",className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:(0,r.jsxs)("div",{className:"w-full max-w-lg rounded-lg border border-zinc-300 bg-white p-5 shadow-2xl dark:border-zinc-700 dark:bg-zinc-900",children:[(0,r.jsx)("p",{className:"sr-only","aria-live":"polite",children:function(e){let t=e.forwardText.length;return"Chain forward gate: ".concat(e.from.label," to ").concat(e.to.label,", ").concat(t," characters pending confirm")}(t)}),(0,r.jsxs)("header",{className:"mb-3 flex items-center gap-2",children:[(0,r.jsx)("h2",{className:"text-base font-semibold text-zinc-900 dark:text-zinc-50",children:"Confirm chain forward"}),(0,r.jsx)("span",{className:"ml-auto text-[10px] text-zinc-500",children:"\xa76.7 HITL gate"})]}),(0,r.jsxs)("div",{className:"mb-3 flex items-center gap-2 rounded border border-zinc-200 bg-zinc-50 px-3 py-2 text-sm dark:border-zinc-700 dark:bg-zinc-800",children:[(0,r.jsx)("span",{className:"truncate font-medium text-zinc-900 dark:text-zinc-100","data-testid":"chain-forward-gate-from",children:t.from.label}),(0,r.jsx)(eW.A,{className:"size-3.5 shrink-0 text-zinc-500","aria-hidden":!0}),(0,r.jsx)("span",{className:"truncate font-medium text-zinc-900 dark:text-zinc-100","data-testid":"chain-forward-gate-to",children:t.to.label}),(0,r.jsxs)("span",{className:"ml-auto text-[10px] text-zinc-500",children:[t.forwardText.length," chars"]})]}),(0,r.jsxs)("div",{className:"mb-4",children:[(0,r.jsx)("p",{className:"mb-1 text-[11px] uppercase tracking-wide text-zinc-500",children:"Forward text"}),(0,r.jsx)("pre",{className:"max-h-48 overflow-y-auto whitespace-pre-wrap break-words rounded border border-zinc-200 bg-zinc-50 p-3 text-xs text-zinc-700 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-300","data-testid":"chain-forward-gate-preview",children:d}),s&&(0,r.jsx)("p",{className:"mt-1 text-[10px] text-zinc-500",children:"Truncated for preview \xb7 the full text will be forwarded."})]}),(0,r.jsxs)("footer",{className:"flex items-center gap-2",children:[(0,r.jsxs)("button",{type:"button",onClick:i,"data-testid":"chain-forward-gate-cancel",className:"inline-flex items-center gap-1 rounded border border-zinc-300 bg-white px-3 py-1.5 text-sm text-zinc-700 hover:bg-zinc-50 dark:border-zinc-600 dark:bg-zinc-800 dark:text-zinc-300 dark:hover:bg-zinc-700",children:[(0,r.jsx)(l.A,{className:"size-3.5","aria-hidden":!0}),"Cancel"]}),(0,r.jsxs)("button",{type:"button",onClick:o,"data-testid":"chain-forward-gate-confirm",className:"ml-auto inline-flex items-center gap-1 rounded bg-indigo-600 px-3 py-1.5 text-sm font-medium text-white hover:bg-indigo-500",autoFocus:!0,children:[(0,r.jsx)(ep.A,{className:"size-3.5","aria-hidden":!0}),"Forward"]}),c>0&&(0,r.jsxs)("span",{className:"text-[10px] text-zinc-500","data-testid":"chain-forward-gate-queue-hint",children:["+",c," queued"]})]})]})})]})}var e$=a(66601);function eQ(e){return e?Math.ceil(e.length/4):0}let eZ={layoutSaved:e=>e?'Layout "'.concat(e,'" saved'):"Layout saved",layoutLoaded:e=>e?'Layout "'.concat(e,'" loaded'):"Layout loaded",layoutDeleted:e=>e?'Layout "'.concat(e,'" deleted'):"Layout deleted",judgeToggled:e=>"local-llm"===e?"Role judge: LLM":"Role judge: keyword",voiceToggled:e=>e?"Voice mode on \xb7 listening":"Voice mode off",voicePhase:e=>"Voice ".concat(e),ttsMuted:e=>e?"TTS muted":"TTS unmuted",modelChanged:e=>e?"Model: ".concat(e):"Model: daemon default"};function eX(){let{client:e,config:t}=(0,v.Q)(),[j]=(0,n.useState)(()=>"sr-".concat(Date.now().toString(36),"-").concat(N())),[z,C]=(0,n.useState)(null),A=(0,f.useSearchParams)(),[T,M]=(0,n.useState)(()=>[{id:S(),kind:"chat",provider:"",sessionId:null,state:"live"},{id:S(),kind:"chat",provider:"",sessionId:null,state:"live"}]),[P,L]=(0,n.useState)([]),[D,_]=(0,n.useState)([]),[J,Q]=(0,n.useState)([]),[Z,X]=(0,n.useState)(0),[G,ee]=(0,n.useState)(null),[et,ea]=(0,n.useState)([]),[er,eo]=(0,n.useState)([]),[el,ei]=(0,n.useState)([]),[es,ed]=(0,n.useState)([]),[ec,eu]=(0,n.useState)([]),em=(0,n.useRef)(new Set),[ep,eh]=(0,n.useState)([]),[eb,ex]=(0,n.useState)([]),[eg,ev]=(0,n.useState)(!1),[ew,ek]=(0,n.useState)(!1),[ey,ej]=(0,n.useState)(!1),[eN,eS]=(0,n.useState)(""),[eC,eI]=(0,n.useState)(null),[eT,eE]=(0,n.useState)(!1),[eM,eP]=(0,n.useState)(()=>(function(){if(!window.localStorage)return!0;try{return"false"!==window.localStorage.getItem(K)}catch(e){return!0}})()),[eD,eR]=(0,n.useState)(()=>(function(){try{let e=window.localStorage.getItem(R);return"local-llm"===e?"local-llm":"keyword"}catch(e){return"keyword"}})()),[e_,eU]=(0,n.useState)(()=>(function(){try{var e;return null!=(e=window.localStorage.getItem("elanous.showroom.roleJudgeModel"))?e:""}catch(e){return""}})()),[eO,eq]=(0,n.useState)([]),[eH,eW]=(0,n.useState)(null),eX=function(){let[e,t]=(0,n.useState)(""),a=(0,n.useRef)("");return{message:e,announce:(0,n.useCallback)(e=>{let r=e.trim();if(!r)return;let n=r===a.current?r+"​":r;a.current=n,t(n)},[])}}(),eG=(0,n.useCallback)(e=>{eR(e);try{window.localStorage.setItem(R,e)}catch(e){}eX.announce(eZ.judgeToggled(e)),(0,W.cY)("showroom.role-judge.toggle",{backend:e})},[eX]),e0=(0,n.useCallback)(e=>{eU(e);try{e.length>0?window.localStorage.setItem("elanous.showroom.roleJudgeModel",e):window.localStorage.removeItem("elanous.showroom.roleJudgeModel")}catch(e){}eX.announce(eZ.modelChanged(e)),(0,W.cY)("showroom.role-judge.model",{model:e||"(default)"})},[eX]);(0,n.useEffect)(()=>{if("local-llm"!==eD||eO.length>0)return;let t=!1;return(async()=>{try{var a;let r=await e.listLlmModels();if(t)return;eq(r.models),eW(null!=(a=r.error)?a:null),(0,W.cY)("showroom.role-judge.models",{count:r.models.length,error:r.error})}catch(e){if(t)return;eW(e instanceof Error?e.message:String(e))}})(),()=>{t=!0}},[eD,eO.length,e]);let[e1,e5]=(0,n.useState)(()=>(function(){try{let e=window.localStorage.getItem(q);return"isolated"===e?"isolated":"mixed"}catch(e){return"mixed"}})()),[e3,e2]=(0,n.useState)(null),[e7,e4]=(0,n.useState)({}),e9=(0,n.useRef)(null),e6=(0,n.useRef)(null),e8=(0,n.useCallback)(e=>{eP(e);if(window.localStorage)try{e?window.localStorage.removeItem(K):window.localStorage.setItem(K,"false")}catch(e){}(0,W.cY)("showroom.dm.toggle",{next:e})},[]),te=(0,n.useCallback)(e=>{e5(e);try{"isolated"===e?window.localStorage.setItem(q,"isolated"):window.localStorage.removeItem(q)}catch(e){}eX.announce("mixed"===e?"Mixed history on \xb7 siblings’ last replies forwarded":"Mixed history off \xb7 per-panel isolated"),(0,W.cY)("showroom.dm.history-mode.toggle",{next:e})},[eX]);(0,n.useEffect)(()=>{if(!t.baseUrl)return;let a=!1,r=null;try{r=e.connectAcp({onSession:e=>{a||(e6.current=e,e2(e),(0,W.cY)("showroom.dm.session",{sessionId:e}))}})}catch(e){(0,W.cY)("showroom.dm.acp.connect.error",{error:String(e)});return}e9.current=r;let n=r.on("sessionUpdate",e=>{var t,a,r;let n=null==(t=e.params)?void 0:t.update,o=function(e){if(!e||"object"!=typeof e)return null;let t=e._meta;if(!t||"object"!=typeof t)return null;let a=t.elanous;if(!a||"object"!=typeof a||"string"!=typeof a.modelId||0===a.modelId.length)return null;let r={modelId:a.modelId};return"string"==typeof a.provider&&(r.provider=a.provider),("end_turn"===a.stopReason||"cancelled"===a.stopReason||"error"===a.stopReason)&&(r.stopReason=a.stopReason),"string"==typeof a.error&&(r.error=a.error),r}(n);if(!o)return;let l=function(e){var t;if(!e||"object"!=typeof e)return null;let a="tool_call"===e.sessionUpdate,r="tool_call_update"===e.sessionUpdate;if(!a&&!r||"string"!=typeof e.toolCallId||0===e.toolCallId.length)return null;let n=a?"call":"update",o={kind:n,id:e.toolCallId,name:"string"==typeof e.title?e.title:"",status:(t=e.status,"pending"===t||"in_progress"===t||"completed"===t||"failed"===t?t:"call"===n?"pending":"failed")};e.rawInput&&"object"==typeof e.rawInput&&(o.input=e.rawInput);let l=function(e){if(null!=e){if("string"==typeof e)return e.length>240?"".concat(e.slice(0,240),"…"):e;try{let t=JSON.stringify(e);if(!t)return;return t.length>240?"".concat(t.slice(0,240),"…"):t}catch(e){return}}}(e.rawOutput);return void 0!==l&&(o.output=l),o}(n);if(l)return void e4(e=>{var t;let a=null!=(t=e[o.modelId])?t:{messages:[],partial:"",streaming:!0,error:null,toolCalls:{}};return{...e,[o.modelId]:{...a,toolCalls:function(e,t,a){let r={...e},n=r[t.id];if("call"===t.kind||!n){var o;let e={id:t.id,name:t.name||(null==n?void 0:n.name)||"",status:t.status,startedAt:null!=(o=null==n?void 0:n.startedAt)?o:a,updatedAt:a};return t.input?e.input=t.input:(null==n?void 0:n.input)&&(e.input=n.input),void 0!==t.output?e.output=t.output:(null==n?void 0:n.output)!==void 0&&(e.output=n.output),r[t.id]=e,r}let l={...n,status:t.status,updatedAt:a};return t.name&&(l.name=t.name),t.input&&(l.input=t.input),void 0!==t.output&&(l.output=t.output),r[t.id]=l,r}(a.toolCalls,l,Date.now())}}});let i=(null==n||null==(a=n.content)?void 0:a.type)==="text"&&null!=(r=n.content.text)?r:"",s=o.stopReason;e4(e=>{var t,a,r;let n=null!=(t=e[o.modelId])?t:{messages:[],partial:"",streaming:!0,error:null,toolCalls:{}};if(s){let t=(n.partial+i).trim(),l={...e};return t.length>0||o.error?l[o.modelId]={messages:[...n.messages,{id:"a-".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,6)),role:"assistant",text:o.error?"(error) ".concat(o.error):t,timestamp:Date.now(),meta:{provider:null!=(a=o.provider)?a:"",stopReason:s,...o.error?{systemLevel:"error"}:{}}}],partial:"",streaming:!1,error:null!=(r=o.error)?r:null,toolCalls:n.toolCalls}:l[o.modelId]={...n,partial:"",streaming:!1},l}return{...e,[o.modelId]:{...n,partial:n.partial+i,streaming:!0,error:null}}})});return()=>{a=!0;try{n()}catch(e){}try{null==r||r.close()}catch(e){}e9.current=null,e6.current=null}},[e,t.baseUrl]);let tt=(0,n.useCallback)(async()=>{let{layouts:t,source:a}=await (0,$.i$)(e);ex(t),(0,W.cY)("showroom.layouts.refresh",{count:t.length,source:a})},[e]);(0,n.useEffect)(()=>{tt()},[tt]);let ta=(0,n.useCallback)(()=>{eS(""),eI(null),ej(!0)},[]),tr=(0,n.useCallback)(async()=>{let t=eN.trim();if(!t)return void eI("name required");let a=eb.some(e=>e.name===t),r=await (0,$.sF)(t,T,e);if((0,W.cY)("showroom.save",{name:t,ok:r.ok,panels:T.length,overwrites:a,source:r.ok?r.source:void 0,migrated:r.ok?r.migrated:0}),!r.ok)return void eI(r.reason);ej(!1),eS(""),eI(null),C(t);{let e=new URL(window.location.href);e.searchParams.set("show",t),window.history.replaceState({},"",e.toString())}eX.announce(eZ.layoutSaved(t)),await tt()},[eN,T,tt,eb,e,eX]),tn=(0,n.useCallback)(()=>{ej(!1),eS(""),eI(null)},[]),to=(0,n.useCallback)(async()=>{if(G){ee(null),(0,W.cY)("showroom.cost-gate.confirm",{totalTokens:G.estimate.totalTokens});try{await G.resume()}catch(e){(0,W.cY)("showroom.cost-gate.resume-error",{err:e instanceof Error?e.message:String(e)})}}},[G]),tl=(0,n.useCallback)(()=>{G&&((0,W.cY)("showroom.cost-gate.cancel",{totalTokens:G.estimate.totalTokens}),ee(null))},[G]),ti=(0,n.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(ev(!1),!t.skipConfirm&&T.length>0&&!window.confirm('Load "'.concat(e.name,'"? 현재 ').concat(T.length," panel state 가 교체됩니다 (저장은 별개).")))return;let a=(0,$.nZ)(e);M(a),L([]),_([]),Q([]),ea([]),eo([]),ei([]),ed([]),eu([]),em.current.clear(),C(e.name);{let t=new URL(window.location.href);t.searchParams.set("show",e.name),window.history.replaceState({},"",t.toString())}eX.announce(eZ.layoutLoaded(e.name)),(0,W.cY)("showroom.load",{name:e.name,panels:a.length})},[T,eX]),ts=(0,n.useCallback)(()=>{C(null);{let e=new URL(window.location.href);e.searchParams.delete("show"),window.history.replaceState({},"",e.toString())}(0,W.cY)("showroom.clear-active",{})},[]),td=(0,n.useRef)(!1);(0,n.useEffect)(()=>{if(td.current||0===eb.length&&null===z)return;let e=null==A?void 0:A.get("show");if(!e){td.current=!0;return}let t=eb.find(t=>t.name===e);t&&(td.current=!0,ti(t,{skipConfirm:!0}))},[eb,A,z,ti]),(0,n.useEffect)(()=>{let e=setTimeout(()=>{td.current=!0},1500);return()=>clearTimeout(e)},[]);let tc=(0,n.useCallback)(async t=>{if(!window.confirm('Delete saved layout "'.concat(t.name,'"?')))return;let a=await (0,$.oM)(t.name,e);(0,W.cY)("showroom.layout.delete",{name:t.name,ok:a.ok,source:a.source}),z===t.name&&ts(),a.ok&&eX.announce(eZ.layoutDeleted(t.name)),await tt()},[tt,e,z,ts,eX]),tu=(0,n.useCallback)(e=>{L(t=>[...t,...e]),(0,W.cY)("showroom.attach.add",{added:e.length,filenames:e.map(e=>e.filename)})},[]),tm=(0,n.useCallback)(e=>{L(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.attach.remove",{id:e})},[]),tp=(0,n.useCallback)(e=>{_(t=>[...t,e]),(0,W.cY)("showroom.terminal.pin",{id:e.id,label:e.label,bytes:e.text.length})},[]),th=(0,n.useCallback)(e=>{_(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.terminal.remove",{id:e})},[]),tb=(0,n.useCallback)(e=>t=>{let{messageId:a,text:r}=t,n=r.trim();if(!n)return;let o=Math.max(1,Z),l={id:"pa-".concat(Date.now().toString(36),"-").concat(N()),label:function(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now(),r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=y(e,t),o=new Date(a),l=String(o.getHours()).padStart(2,"0"),i=String(o.getMinutes()).padStart(2,"0");return"".concat(r>0?"T".concat(r," "):"","@").concat(n," \xb7 ").concat(l,":").concat(i)}(e,T,Date.now(),o),text:n,sourcePanelId:e.id,sourceProvider:e.provider||"default",promotedAt:Date.now(),turnNumber:o,enabled:!0};Q(e=>[...e,l]),(0,W.cY)("showroom.prior.promote",{panelId:e.id,messageId:a,provider:e.provider,bytes:n.length,turn:o})},[T,Z]),tx=(0,n.useCallback)(e=>{Q(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.prior.remove",{id:e})},[]),tg=(0,n.useCallback)(e=>{Q(t=>t.map(t=>t.id===e?{...t,enabled:!t.enabled}:t)),(0,W.cY)("showroom.prior.toggle",{id:e})},[]),tf=(0,n.useCallback)(async t=>{let a=t.trim();if(!a)return{ok:!1,reason:"url required"};try{let t=await e.fetchUrlContext(a),r={id:"uc-".concat(Date.now().toString(36),"-").concat(N()),label:function(e,t){if(t&&t.trim().length>0)return t.trim();try{return new URL(e).hostname||e}catch(t){return e}}(t.url,t.title),url:t.url,text:t.text,fetchedAt:Date.now()};return ea(e=>[...e,r]),(0,W.cY)("showroom.url.add",{url:t.url,bytes:t.text.length,hasTitle:!!t.title}),{ok:!0}}catch(t){let e=t instanceof Error?t.message:String(t);return(0,W.cY)("showroom.url.error",{error:e}),{ok:!1,reason:e}}},[e]),tv=(0,n.useCallback)(e=>{ea(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.url.remove",{id:e})},[]),tw=(0,n.useCallback)(async()=>{if("undefined"==typeof navigator||!navigator.clipboard)return{ok:!1,reason:"clipboard API unavailable"};try{let e=await navigator.clipboard.readText();if(!e||0===e.trim().length)return{ok:!1,reason:"clipboard is empty"};let t={id:"cc-".concat(Date.now().toString(36),"-").concat(N()),label:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),a=new Date(t),r=String(a.getHours()).padStart(2,"0"),n=String(a.getMinutes()).padStart(2,"0");return"clipboard \xb7 ".concat(e.length," chars \xb7 ").concat(r,":").concat(n)}(e),text:e,pastedAt:Date.now()};return eo(e=>[...e,t]),(0,W.cY)("showroom.clipboard.add",{bytes:e.length}),{ok:!0}}catch(t){let e=t instanceof Error?t.message:String(t);return(0,W.cY)("showroom.clipboard.error",{error:e}),{ok:!1,reason:e}}},[]),tk=(0,n.useCallback)(e=>{eo(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.clipboard.remove",{id:e})},[]),ty=(0,n.useCallback)(async e=>{try{let{extractKeyFrame:t}=await a.e(5927).then(a.bind(a,55927)),r=await t(e),n={id:"vc-".concat(Date.now().toString(36),"-").concat(N()),label:function(e,t,a){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Date.now(),n=U(e),o="".concat(t,"x").concat(a),l=new Date(r),i=l.getFullYear(),s=String(l.getMonth()+1).padStart(2,"0"),d=String(l.getDate()).padStart(2,"0");return"video \xb7 ".concat(n," \xb7 ").concat(o," \xb7 ").concat(i,"-").concat(s,"-").concat(d)}(r.durationSec,r.widthPx,r.heightPx),filename:e.name,mimeType:r.mimeType,durationSec:Math.round(r.durationSec),widthPx:r.widthPx,heightPx:r.heightPx,frameDataUrl:r.frameDataUrl,capturedAt:Date.now()};return ei(e=>[...e,n]),(0,W.cY)("showroom.video.add",{duration:n.durationSec,dimensions:"".concat(n.widthPx,"x").concat(n.heightPx)}),{ok:!0}}catch(t){let e=t instanceof Error?t.message:String(t);return(0,W.cY)("showroom.video.error",{error:e}),{ok:!1,reason:e}}},[]),tj=(0,n.useCallback)(e=>{ei(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.video.remove",{id:e})},[]),tz=(0,n.useCallback)(async t=>{try{let{extractAudioMeta:r}=await a.e(2598).then(a.bind(a,62598)),n=await r(t),o={id:"ac-".concat(Date.now().toString(36),"-").concat(N()),label:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),a=U(e),r=new Date(t),n=r.getFullYear(),o=String(r.getMonth()+1).padStart(2,"0"),l=String(r.getDate()).padStart(2,"0");return"audio \xb7 ".concat(a," \xb7 ").concat(n,"-").concat(o,"-").concat(l)}(n.durationSec),filename:t.name,mimeType:n.mimeType,durationSec:Math.round(n.durationSec),sizeBytes:n.sizeBytes,transcript:"",loadedAt:Date.now()};return ed(e=>[...e,o]),(0,W.cY)("showroom.audio.add",{duration:o.durationSec,size:o.sizeBytes}),(async()=>{try{let a=await e.transcribeAudio(t);"string"==typeof a.text&&a.text.trim().length>0&&(ed(e=>e.map(e=>e.id===o.id?{...e,transcript:a.text}:e)),(0,W.cY)("showroom.audio.stt-ok",{id:o.id,chars:a.text.length,language:a.language,durationMs:a.durationMs}))}catch(e){(0,W.cY)("showroom.audio.stt-fail",{id:o.id,error:e instanceof Error?e.message:String(e)})}})(),{ok:!0}}catch(t){let e=t instanceof Error?t.message:String(t);return(0,W.cY)("showroom.audio.error",{error:e}),{ok:!1,reason:e}}},[e]),tN=(0,n.useCallback)(e=>{ed(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.audio.remove",{id:e})},[]),tS=(0,n.useCallback)((e,t)=>{ed(a=>a.map(a=>a.id===e?{...a,transcript:t}:a))},[]),tC=(0,n.useCallback)((e,t,a)=>{let r=function(e,t,a){var r,n,o;let l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(t===a)return{ok:!1,reason:"self-route"};if(e.some(e=>e.fromPanelId===t&&e.toPanelId===a))return{ok:!1,reason:"duplicate"};if(function(e,t,a){if(t===a)return!0;let r=new Map;for(let t of e){var n;let e=null!=(n=r.get(t.fromPanelId))?n:[];e.push(t.toPanelId),r.set(t.fromPanelId,e)}let o=new Set,l=[a];for(;l.length>0;){let e=l.shift();if(e===t)return!0;if(o.has(e))continue;o.add(e);let a=r.get(e);a&&l.push(...a)}return!1}(e,t,a))return{ok:!1,reason:"cycle"};let i=null==(r=l.routePrompt)?void 0:r.trim(),s={id:"ce-".concat(Date.now().toString(36),"-").concat(N()),fromPanelId:t,toPanelId:a,wrapMode:null!=(n=l.wrapMode)?n:"prior",...i?{routePrompt:i}:{},enabled:null==(o=l.enabled)||o,...l.hitl?{hitl:!0}:{},createdAt:Date.now()};return{ok:!0,edge:s,edges:[...e,s]}}(ec,e,t,a);return r.ok?(eu(r.edges),(0,W.cY)("showroom.chain.add",{from:e,to:t,wrapMode:r.edge.wrapMode,edges:r.edges.length})):(0,W.cY)("showroom.chain.add.reject",{from:e,to:t,reason:r.reason}),r},[ec]),tI=(0,n.useCallback)(e=>{eu(t=>t.filter(t=>t.id!==e)),(0,W.cY)("showroom.chain.remove",{edgeId:e})},[]),tA=(0,n.useCallback)(e=>{eu(t=>t.map(t=>{if(t.id!==e)return t;let a={...t};return t.hitl?delete a.hitl:a.hitl=!0,(0,W.cY)("showroom.chain.hitl.toggle",{edgeId:e,next:!t.hitl}),a}))},[]),tT=(0,n.useCallback)(async(e,t)=>{let a=e9.current,r=e6.current;if(!a||!r)return void(0,W.cY)("showroom.chain.forward.skip",{reason:"no-layout-session"});let n=O([e],{includeAgent:!0});if(!n)return void(0,W.cY)("showroom.chain.forward.skip",{reason:"empty-hint"});let o=(0,w.tw)(t);e4(t=>{var a;let r=null!=(a=t[e.id])?a:{messages:[],partial:"",streaming:!1,error:null,toolCalls:{}};return{...t,[e.id]:{messages:[...r.messages,o],partial:"",streaming:!0,error:null,toolCalls:{}}}});try{await a.send("session/prompt",{sessionId:r,prompt:[{type:"text",text:t}],_meta:H(n)})}catch(a){let t=String(a);(0,W.cY)("showroom.chain.forward.error",{error:t}),e4(a=>{let r=a[e.id];return r?{...a,[e.id]:{...r,streaming:!1,error:t}}:a})}},[]);(0,n.useEffect)(()=>{if(0!==ec.length)for(let[t,a]of Object.entries(e7)){if(a.streaming)continue;let r=a.messages[a.messages.length-1];if(!r||"assistant"!==r.role||!r.text||0===r.text.length)continue;let n="".concat(t,":").concat(r.id);if(em.current.has(n))continue;em.current.add(n);let o=T.find(e=>e.id===t);if(!o)continue;let l=y(o,T),i=o.provider||"default";for(let a of F(ec,t).filter(e=>e.enabled)){var e;let o=T.find(e=>e.id===a.toPanelId);if(!o)continue;if(null==(e=e7[a.toPanelId])?void 0:e.streaming){(0,W.cY)("showroom.chain.forward.skip",{from:t,to:a.toPanelId,reason:"target-streaming"});continue}let s=function(e,t,a,r){var n;if("plain"===e.wrapMode)return t;let o=r.replace(/[<>"]/g,"_"),l=a.replace(/[<>"]/g,"_"),i='<prior_answer source="'.concat(o,'" provider="').concat(l,'">\n').concat(t,"\n</prior_answer>"),s=(null==(n=e.routePrompt)?void 0:n.trim())||"위의 답변을 검토해주세요.";return"".concat(i,"\n\n").concat(s)}(a,r.text,i,"@".concat(l));if(a.hitl){let e=y(o,T);(0,W.cY)("showroom.chain.forward.hitl.enqueue",{edgeId:a.id,from:t,to:a.toPanelId,bytes:s.length}),eh(r=>r.some(e=>e.key===n)?r:[...r,{key:n,edgeId:a.id,from:{id:t,label:l},to:{id:a.toPanelId,label:e},forwardText:s,targetPanel:o,enqueuedAt:Date.now()}]);continue}(0,W.cY)("showroom.chain.forward",{edgeId:a.id,from:t,to:a.toPanelId,wrapMode:a.wrapMode,bytes:s.length}),tT(o,s)}}},[e7,ec,T,tT]);let tE=(0,n.useCallback)(()=>{eh(e=>{let t=e[0];return t?((0,W.cY)("showroom.chain.forward.hitl.confirm",{edgeId:t.edgeId,from:t.from.id,to:t.to.id,bytes:t.forwardText.length,latencyMs:Date.now()-t.enqueuedAt}),tT(t.targetPanel,t.forwardText),e.slice(1)):e})},[tT]),tM=(0,n.useCallback)(()=>{eh(e=>{let t=e[0];return t?((0,W.cY)("showroom.chain.forward.hitl.cancel",{edgeId:t.edgeId,from:t.from.id,to:t.to.id,bytes:t.forwardText.length,latencyMs:Date.now()-t.enqueuedAt}),e.slice(1)):e})},[]),tP=(0,n.useRef)(null),tL=(0,n.useCallback)(async t=>{let a=t.trim();if(!a)return;let r=function(e){if(0===e.length)return"";let t=e.map(e=>{let t=e.label.replace(/[<>"]/g,"_");return'<terminal_context label="'.concat(t,'">\n').concat(e.text,"\n</terminal_context>")});return"".concat(t.join("\n\n"),"\n\n")}(D),n=function(e){if(0===e.length)return"";let t=e.map(e=>{let t=e.url.replace(/[<>"]/g,"_"),a=e.label.replace(/[<>"]/g,"_");return'<url_context url="'.concat(t,'" title="').concat(a,'">\n').concat(e.text,"\n</url_context>")});return"".concat(t.join("\n\n"),"\n\n")}(et),o=function(e){if(0===e.length)return"";let t=e.map(e=>{let t=e.label.replace(/[<>"]/g,"_");return'<clipboard_context label="'.concat(t,'">\n').concat(e.text,"\n</clipboard_context>")});return"".concat(t.join("\n\n"),"\n\n")}(er),l=function(e){if(0===e.length)return"";let t=e.map(e=>{let t=e.label.replace(/[<>"]/g,"_"),a=e.filename.replace(/[<>"]/g,"_"),r=e.mimeType.replace(/[<>"]/g,"_"),n=U(e.durationSec),o="".concat(e.widthPx,"x").concat(e.heightPx);return'<video_context label="'.concat(t,'" filename="').concat(a,'" mime="').concat(r,'" duration="').concat(n,'" dimensions="').concat(o,'">\n<frame data="').concat(e.frameDataUrl,'" />\n</video_context>')});return"".concat(t.join("\n\n"),"\n\n")}(el),i=function(e){if(0===e.length)return"";let t=e.map(e=>{let t=e.label.replace(/[<>"]/g,"_"),a=e.filename.replace(/[<>"]/g,"_"),r=e.mimeType.replace(/[<>"]/g,"_"),n=U(e.durationSec),o='<audio_context label="'.concat(t,'" filename="').concat(a,'" mime="').concat(r,'" duration="').concat(n,'" size="').concat(e.sizeBytes,' bytes">'),l=e.transcript.trim().length>0?"\n<transcript>".concat(e.transcript,"</transcript>\n"):"\n";return"".concat(o).concat(l,"</audio_context>")});return"".concat(t.join("\n\n"),"\n\n")}(es),s=function(e){let t=e.filter(e=>!1!==e.enabled);if(0===t.length)return"";let a=t.map(e=>{let t=e.label.replace(/[<>"]/g,"_"),a=e.sourceProvider.replace(/[<>"]/g,"_");return'<prior_answer source="'.concat(t,'" provider="').concat(a,'">\n').concat(e.text,"\n</prior_answer>")});return"".concat(a.join("\n\n"),"\n\n")}(J),d="".concat(r).concat(n).concat(o).concat(l).concat(i).concat(s).concat(a),c="local-llm"===eD?async t=>{let a={backend:"local-llm"};e_.length>0&&(a.model=e_);let r=await e.judgeRole(t,a);return{role:r.role,source:r.source}}:null,u=c?await Y(a,T,c):E(a,T);if(0===u.targets.length)return;let m="mixed"===e1?Object.fromEntries(u.targets.map(e=>{var t;return[e.id,B(null==(t=e7[e.id])?void 0:t.messages)]}).filter(e=>{let[,t]=e;return"string"==typeof t&&t.length>0})):void 0,p=function(e){var t;let a=eQ(e.dispatchText),r=e.dmTargets.map(t=>{var r,n;let o=eQ(null!=(n=null==(r=e.lastAssistantByPanelId)?void 0:r[t.id])?n:"");return{panelId:t.id,displayName:y(t,e.allPanels),provider:t.provider||"default",inputTokens:a,priorTokens:o,totalTokens:a+o}}),n=r.reduce((e,t)=>e+t.totalTokens,0),o=null!=(t=e.warnThreshold)?t:function(){var e;let t=void 0!==e$?null==(e=e$.env)?void 0:e.NEXT_PUBLIC_ELANOUS_SHOWROOM_BROADCAST_COST_WARN_TOKENS:void 0,a=t?Number(t):NaN;return Number.isFinite(a)&&a>0?a:5e4}();return{totalTokens:n,perPanel:r,warnThreshold:o,exceedsWarnThreshold:n>o}}({dispatchText:d,dmTargets:u.targets,allPanels:T,...m?{lastAssistantByPanelId:m}:{}}),h=async()=>{var e,t;X(e=>e+1);let a=null!=(t=null==(e=tP.current)?void 0:e.call(tP))?t:0;if(a>0&&(0,W.cY)("showroom.voice.barge-in.dispatch",{cancelled:a}),"targeted"===u.mode){let e=function(e,t){if(0===t.length)return e.slice();let a=new Set(t),r=!1,n=e.map(e=>a.has(e.id)&&"mute"===e.state?(r=!0,{...e,state:"live"}):e);return r?n:e.slice()}(T,u.targets.map(e=>e.id));e.some((e,t)=>{var a;return e.state!==(null==(a=T[t])?void 0:a.state)})&&M(e)}(0,W.cY)("showroom.dispatch",{showroomId:j,mode:u.mode,routedBy:u.routedBy,classifiedRole:u.classifiedRole,panels:T.length,targets:u.targets.length,len:d.length,attachments:P.length,terminalContexts:D.length,estTokens:p.totalTokens}),await b()};if(p.exceedsWarnThreshold){(0,W.cY)("showroom.cost-gate.fire",{totalTokens:p.totalTokens,warnThreshold:p.warnThreshold,targets:u.targets.length,mixed:!!m}),ee({estimate:p,resume:h});return}async function b(){let e=e9.current,t=e6.current;if(!e||!t)return void(0,W.cY)("showroom.dm.dispatch.skip",{reason:"no-layout-session"});let a=u.targets,r="mixed"===e1?Object.fromEntries(a.map(e=>{var t;return[e.id,B(null==(t=e7[e.id])?void 0:t.messages)]}).filter(e=>{let[,t]=e;return"string"==typeof t&&t.length>0})):void 0,n=O(a,{includeAgent:!0,..."mixed"===e1?{historyMode:"mixed"}:{},...r?{lastAssistantByPanelId:r}:{}});if(!n)return void(0,W.cY)("showroom.dm.dispatch.skip",{reason:"empty-hint"});"mixed"===e1&&r&&(0,W.cY)("showroom.dm.dispatch.mixed",{siblingsWithPrior:Object.keys(r).length,totalTargets:a.length}),P.length>0&&(0,W.cY)("showroom.dm.dispatch.attachments-dropped",{count:P.length});let o=(0,w.tw)(d);e4(e=>{let t={...e};for(let e of a){var r;let a=null!=(r=t[e.id])?r:{messages:[],partial:"",streaming:!1,error:null,toolCalls:{}};t[e.id]={messages:[...a.messages,o],partial:"",streaming:!0,error:null,toolCalls:{}}}return t});try{await e.send("session/prompt",{sessionId:t,prompt:[{type:"text",text:d}],_meta:H(n)})}catch(t){(0,W.cY)("showroom.dm.dispatch.error",{error:String(t)});let e=String(t);e4(t=>{let r={...t};for(let t of a){let a=r[t.id];a&&(r[t.id]={...a,streaming:!1,error:e})}return r})}L([]),_([]),Q([]),ea([]),eo([]),ei([]),ed([])}await h()},[T,j,P,D,J,et,er,eD,e_,el,es,e]),tD=(0,n.useCallback)(()=>{(0,W.cY)("showroom.stop-all",{showroomId:j,mode:"dm-noop"})},[j]),tR=(0,n.useCallback)(()=>{M(e=>[...e,function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return{id:S(),kind:"chat",provider:e,sessionId:null,state:"live"}}()])},[]),tY=(0,n.useCallback)(e=>{M(t=>{var a;return[...t,(a=e,{id:S(),kind:"agent",provider:a,agentBrand:a,sessionId:null,state:"live"})]}),ek(!1)},[]),t_=(0,n.useCallback)(e=>{M(t=>t.filter(t=>t.id!==e)),eu(t=>(function(e,t){let a=e.filter(e=>e.fromPanelId!==t&&e.toPanelId!==t);return a.length===e.length?e.slice():a})(t,e)),(0,W.cY)("showroom.panel.remove",{panelId:e})},[]),tU=(0,n.useCallback)((e,t)=>{M(a=>a.map(a=>a.id===e?{...a,state:t}:a))},[]),tF=(0,n.useCallback)((e,t)=>{M(a=>a.map(a=>a.id===e?{...a,provider:t}:a))},[]),tK=(0,n.useCallback)((e,t)=>{M(a=>a.map(a=>{if(a.id!==e)return a;if(null===t){let{roleHint:e,...t}=a;return t}return{...a,roleHint:t}})),(0,W.cY)("showroom.panel.roleHint",{panelId:e,roleHint:t})},[]),tO=(0,n.useCallback)((e,t)=>{var a;M(a=>a.map(a=>{if(a.id!==e)return a;if(null===t){let{personaId:e,...t}=a;return t}let r={...a,personaId:t.personaId};return t.brand&&t.brand.length>0&&(r.provider=t.brand),r})),(0,W.cY)("showroom.panel.persona",{panelId:e,personaId:null!=(a=null==t?void 0:t.personaId)?a:null,brand:null==t?void 0:t.brand})},[]),tB=(0,n.useMemo)(()=>T.filter(e=>"live"===e.state).length,[T]),tq=(0,n.useRef)(tL);tq.current=tL;let tH=(0,n.useCallback)(e=>{let t=e.trim();t&&((0,W.cY)("showroom.voice.auto-send",{len:t.length}),tq.current(t))},[]),tJ=e.voiceWsUrl(),tW=(0,n.useRef)(null),tV=(0,n.useCallback)(()=>{let e=tW.current;if(!e||!e.speaking)return;let t=e.cancelInFlight();(0,W.cY)("showroom.voice.barge-in.fire",{cancelled:t})},[]),t$=(0,k.sS)({wsUrl:tJ,...t.token?{token:t.token}:{},onTranscript:tH,onSpeechActivity:tV}),[tQ,tZ]=(0,n.useState)(!1),tX=function(e){var t;let a=void 0!==window.speechSynthesis,r=null!=(t=e.language)?t:"ko-KR",o=(0,n.useRef)(e.enabled);o.current=e.enabled;let l=(0,n.useRef)(0),[i,s]=(0,n.useState)(!1),d=(0,n.useCallback)(()=>{s(l.current>0)},[]),c=(0,n.useCallback)(()=>{if(!a)return 0;let e=l.current;if(0===e)return 0;(0,W.cY)("voice.tts.cancel-in-flight",{cancelled:e});try{window.speechSynthesis.cancel()}catch(e){}return l.current=0,d(),e},[a,d]);(0,n.useEffect)(()=>{a&&(e.enabled||c())},[e.enabled,a,c]);let u=(0,n.useRef)({}),m=(0,n.useRef)([]);return(0,n.useEffect)(()=>{var e,t;if(!a)return;let r=()=>{m.current=window.speechSynthesis.getVoices()};return r(),null==(e=(t=window.speechSynthesis).addEventListener)||e.call(t,"voiceschanged",r),()=>{var e,t;null==(e=(t=window.speechSynthesis).removeEventListener)||e.call(t,"voiceschanged",r)}},[a]),(0,n.useEffect)(()=>{if(!a||!o.current){u.current=e.panelStates;return}let t=function(e,t){let a=[];for(let[l,i]of Object.entries(t)){var r,n,o;let t=e[l],s=null!=(r=null==t?void 0:t.streaming)&&r&&!i.streaming,d=(null!=(n=i.messages.length)?n:0)>(null!=(o=null==t?void 0:t.messages.length)?o:0);if(!s||!d)continue;let c=i.messages[i.messages.length-1];if(!c||"assistant"!==c.role)continue;let u=c.text.trim();u&&a.push({panelId:l,text:u})}return a}(u.current,e.panelStates);if(u.current=e.panelStates,0===t.length)return;let n=m.current;for(let{panelId:a,text:o}of t){var i;let t=e.panels.find(e=>e.id===a);if(!t)continue;let s=new SpeechSynthesisUtterance((i=y(t,e.panels),"@".concat(i," \xb7 ")+o)),c=function(e){var t;let a=function(e,t){if(0===e.length)return[];let a=t.toLowerCase(),r=e.filter(e=>e.lang.toLowerCase()===a);if(r.length>0)return r;let n=a.split("-")[0];return e.filter(e=>e.lang.toLowerCase().startsWith(n))}(e.voices,e.language);if(0===a.length)return null;let r=function(e){let t=5381;for(let a=0;a<e.length;a+=1)t=(t<<5)+t+e.charCodeAt(a)|0;return t>>>0}(e.panelId)%a.length;return null!=(t=a[r])?t:null}({panelId:a,language:r,voices:n});c&&(s.voice=c),s.lang=r;let u=()=>{l.current>0&&(l.current-=1),d()};s.onend=u,s.onerror=u;try{window.speechSynthesis.speak(s),l.current+=1,d()}catch(e){}}},[e.panelStates,e.panels,a,r,d]),{supported:a,speaking:i,cancelInFlight:c}}({panelStates:e7,panels:T,enabled:t$.active&&!tQ,language:"ko-KR"});tW.current={cancelInFlight:tX.cancelInFlight,speaking:tX.speaking},tP.current=tX.cancelInFlight,(0,V.Si)({enabled:tX.speaking,onActivate:()=>{let e=tX.cancelInFlight();(0,W.cY)("showroom.voice.barge-in.spacebar",{cancelled:e}),t$.forceListen()}});let tG=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=t$.active?t$.phase:"off";null!==tG.current&&tG.current!==e&&("off"===e?eX.announce(eZ.voiceToggled(!1)):eX.announce(eZ.voicePhase(e))),tG.current=e},[t$.active,t$.phase,eX]);let t0=(0,n.useRef)(null);(0,n.useEffect)(()=>{null!==t0.current&&t0.current!==tQ&&eX.announce(eZ.ttsMuted(tQ)),t0.current=tQ},[tQ,eX]),(0,n.useEffect)(()=>{function e(e){let t=function(e){let t=e.key.toLowerCase();return!eK(e)||e.shiftKey||e.altKey||"k"!==t?eK(e)&&e.shiftKey&&!e.altKey&&"j"===t?e.fromEditable?null:"toggle-role-judge":eK(e)&&e.shiftKey&&!e.altKey&&"m"===t?e.fromEditable?null:"toggle-voice":eK(e)&&e.shiftKey&&!e.altKey&&"y"===t?e.fromEditable?null:"toggle-tts":"?"!==e.key||eK(e)||e.altKey?null:e.fromEditable?null:"open-help":"focus-broadcast-input"}({key:e.key,metaKey:e.metaKey,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,fromEditable:function(e){var t;if(!e)return!1;let a=e.tagName;if(!a)return!1;if("INPUT"===a||"TEXTAREA"===a||"SELECT"===a)return!0;let r=null==(t=e.getAttribute)?void 0:t.call(e,"contenteditable");return""===r||"true"===r}(e.target)});if(t)switch(t){case"focus-broadcast-input":{e.preventDefault();let a=document.getElementById("showroom-broadcast-input");a&&(a.focus(),a.setSelectionRange(a.value.length,a.value.length)),(0,W.cY)("showroom.shortcut",{id:t,focused:!!a});break}case"toggle-role-judge":e.preventDefault(),eG("local-llm"===eD?"keyword":"local-llm"),(0,W.cY)("showroom.shortcut",{id:t});break;case"toggle-voice":if(e.preventDefault(),!tJ)return void(0,W.cY)("showroom.shortcut.suppressed",{id:t,reason:"no-ws-url"});t$.toggle(),(0,W.cY)("showroom.shortcut",{id:t});break;case"toggle-tts":if(e.preventDefault(),!tX.supported||!t$.active)return void(0,W.cY)("showroom.shortcut.suppressed",{id:t,reason:"tts-unavailable"});tZ(e=>!e),(0,W.cY)("showroom.shortcut",{id:t});break;case"open-help":e.preventDefault(),eE(!0),(0,W.cY)("showroom.shortcut",{id:t})}}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[eD,eG,t$,tJ,tX.supported]);let t1=eF({active:ey,skipInitialFocus:!0});return(0,r.jsxs)("div",{className:"flex h-full flex-col bg-zinc-50 dark:bg-zinc-950","data-testid":"showroom-layout",children:[(0,r.jsx)("div",{"aria-live":"polite","aria-atomic":"true",className:"sr-only","data-testid":"showroom-live-announcer",children:eX.message}),(0,r.jsx)(eA,{}),(0,r.jsxs)("header",{className:"flex flex-wrap items-center justify-between gap-1 border-b border-zinc-200 bg-white px-2 py-2 dark:border-zinc-800 dark:bg-zinc-900 sm:gap-2 sm:px-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(o.A,{className:"size-5 text-zinc-600 dark:text-zinc-300","aria-hidden":!0}),(0,r.jsx)("span",{className:"text-sm font-medium text-zinc-900 dark:text-zinc-100",children:"Showroom"}),z&&(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-amber-300 bg-amber-50 px-2 py-0.5 text-[11px] font-medium text-amber-700 dark:border-amber-700 dark:bg-amber-900/30 dark:text-amber-300","data-testid":"showroom-active-name",title:"Active showroom: ".concat(z),children:[(0,r.jsx)(o.A,{className:"size-3","aria-hidden":!0}),z,(0,r.jsx)("button",{type:"button",onClick:ts,className:"rounded-full p-0.5 hover:bg-amber-100 dark:hover:bg-amber-900/50","aria-label":"Clear active showroom (return to ephemeral)","data-testid":"showroom-active-clear",children:(0,r.jsx)(l.A,{className:"size-2.5","aria-hidden":!0})})]}),(0,r.jsxs)("span",{className:"text-xs text-zinc-500","data-testid":"showroom-counts",children:[T.length," panel \xb7 ",tB," live"]}),(0,r.jsx)(eY,{})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsxs)("button",{type:"button",onClick:tR,className:"inline-flex items-center gap-1 rounded-md border border-zinc-300 bg-white px-2 py-1 text-xs hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-800 dark:hover:bg-zinc-700","aria-label":"Add chat panel",title:"Add chat panel","data-testid":"showroom-add-panel",children:[(0,r.jsx)(i.A,{className:"size-3.5","aria-hidden":!0}),"Chat"]}),(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>ek(e=>!e),className:"inline-flex items-center gap-1 rounded-md border border-amber-300 bg-white px-2 py-1 text-xs text-amber-700 hover:bg-amber-50 dark:border-amber-700 dark:bg-zinc-800 dark:text-amber-300 dark:hover:bg-amber-900/30","aria-label":"Add agent CLI panel","aria-expanded":ew,title:"Add agent CLI panel (codex \xb7 claude \xb7 gemini)","data-testid":"showroom-add-agent-toggle",children:[(0,r.jsx)(s.A,{className:"size-3.5","aria-hidden":!0}),"Agent"]}),ew&&(0,r.jsx)("div",{className:"absolute right-0 top-full z-10 mt-1 w-44 rounded-md border border-zinc-300 bg-white text-xs shadow-lg dark:border-zinc-700 dark:bg-zinc-800","data-testid":"showroom-agent-menu",children:I.map(e=>(0,r.jsxs)("button",{type:"button",onClick:()=>tY(e),className:"block w-full border-b border-zinc-200/50 px-2 py-1.5 text-left hover:bg-zinc-50 last:border-b-0 dark:border-zinc-700/50 dark:hover:bg-zinc-700","data-testid":"showroom-add-agent-".concat(e),children:[(0,r.jsxs)("span",{className:"font-medium",children:[e,"-cli"]}),(0,r.jsx)("span",{className:"ml-1 text-[10px] text-zinc-500",children:"CLI agent"})]},e))})]}),(0,r.jsxs)("button",{type:"button",onClick:ta,disabled:0===T.length,className:"inline-flex items-center gap-1 rounded-md border border-zinc-300 bg-white px-2 py-1 text-xs hover:bg-zinc-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-700 dark:bg-zinc-800 dark:hover:bg-zinc-700","aria-label":"Save layout",title:"Save current panel layout","data-testid":"showroom-save-layout",children:[(0,r.jsx)(d.A,{className:"size-3.5","aria-hidden":!0}),"Save"]}),(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>ev(e=>!e),disabled:0===eb.length,className:"inline-flex items-center gap-1 rounded-md border border-zinc-300 bg-white px-2 py-1 text-xs hover:bg-zinc-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-700 dark:bg-zinc-800 dark:hover:bg-zinc-700","aria-label":"Load saved layout",title:0===eb.length?"저장된 layout 없음":"".concat(eb.length," saved layout"),"aria-expanded":eg,"data-testid":"showroom-load-toggle",children:[(0,r.jsx)(c.A,{className:"size-3.5","aria-hidden":!0}),"Load",eb.length>0&&(0,r.jsx)("span",{className:"ml-1 text-[10px] text-zinc-500",children:eb.length})]}),eg&&eb.length>0&&(0,r.jsx)("div",{className:"absolute right-0 top-full z-10 mt-1 max-h-64 w-64 overflow-y-auto rounded-md border border-zinc-300 bg-white text-xs shadow-lg dark:border-zinc-700 dark:bg-zinc-800","data-testid":"showroom-load-menu",children:eb.map(e=>(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2 border-b border-zinc-200/50 px-2 py-1 last:border-b-0 dark:border-zinc-700/50",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>ti(e),className:"flex flex-1 flex-col text-left hover:text-zinc-900 dark:hover:text-zinc-100","data-testid":"showroom-load-".concat(e.name),children:[(0,r.jsx)("span",{className:"font-medium",children:e.name}),(0,r.jsxs)("span",{className:"text-[10px] text-zinc-500",children:[e.panels.length," panel \xb7 ",new Date(e.savedAt).toLocaleString()]})]}),(0,r.jsx)("button",{type:"button",onClick:()=>tc(e),className:"rounded p-1 text-rose-600 hover:bg-rose-50 dark:hover:bg-rose-900/30","aria-label":"Delete layout ".concat(e.name),"data-testid":"showroom-delete-".concat(e.name),children:(0,r.jsx)(u.A,{className:"size-3","aria-hidden":!0})})]},e.name))})]}),(0,r.jsxs)("button",{type:"button",onClick:()=>e8(!eM),className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs ".concat(eM?"border-indigo-400 bg-indigo-50 text-indigo-700 dark:border-indigo-600 dark:bg-indigo-900/30 dark:text-indigo-300":"border-amber-300 bg-amber-50 text-amber-700 dark:border-amber-700 dark:bg-amber-900/30 dark:text-amber-300"),"aria-label":"Toggle daemon multi-LLM dispatch preference (DM stage 3 \xb7 always engaged)","aria-pressed":eM,title:eM?"DM stage 3 \xb7 always engaged \xb7 single ACP \xb7 multiLlm hint \xb7 namespaced sub-stream":"DM preference OFF \xb7 panel-local fallback was removed in DM stage 3 \xb7 DM dispatch still active","data-testid":"showroom-dm-toggle",children:[(0,r.jsx)(m.A,{className:"size-3.5","aria-hidden":!0}),"DM",eM&&(0,r.jsx)("span",{className:"ml-0.5 rounded bg-indigo-600 px-1 text-[9px] uppercase text-white","data-testid":"showroom-dm-toggle-on",children:"on"})]}),(0,r.jsxs)("button",{type:"button",onClick:()=>te("mixed"===e1?"isolated":"mixed"),className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs ".concat("mixed"===e1?"border-fuchsia-400 bg-fuchsia-50 text-fuchsia-700 dark:border-fuchsia-600 dark:bg-fuchsia-900/30 dark:text-fuchsia-300":"border-zinc-300 bg-white text-zinc-700 hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-300 dark:hover:bg-zinc-700"),"aria-label":"Toggle DM stage 4 mixed history mode","aria-pressed":"mixed"===e1,title:"mixed"===e1?"Mixed history ON \xb7 siblings’ last replies auto-prepended as <prior_answer> blocks (cross-model deliberation automation \xb7 token cost increases)":"Mixed history OFF \xb7 each panel sees only its own thread (default \xb7 token-frugal)","data-testid":"showroom-history-mode-toggle",children:[(0,r.jsx)(m.A,{className:"size-3.5","aria-hidden":!0}),"mix","mixed"===e1&&(0,r.jsx)("span",{className:"ml-0.5 rounded bg-fuchsia-600 px-1 text-[9px] uppercase text-white","data-testid":"showroom-history-mode-toggle-on",children:"on"})]}),(0,r.jsxs)("button",{type:"button",onClick:()=>eG("local-llm"===eD?"keyword":"local-llm"),className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs ".concat("local-llm"===eD?"border-violet-400 bg-violet-50 text-violet-700 dark:border-violet-600 dark:bg-violet-900/30 dark:text-violet-300":"border-zinc-300 bg-white text-zinc-600 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-400"),"aria-label":"Toggle role-judge backend (keyword vs local-llm)","aria-pressed":"local-llm"===eD,title:"local-llm"===eD?"Local LLM judge \xb7 ambiguous prompts call daemon → LM Studio (model: ".concat(e_||"default","). Click to switch to keyword-only."):"Keyword-only \xb7 ambiguous prompts broadcast (default). Click to engage local LLM.","data-testid":"showroom-role-judge-toggle",children:[(0,r.jsx)(s.A,{className:"size-3.5","aria-hidden":!0}),"judge","local-llm"===eD&&(0,r.jsx)("span",{className:"ml-0.5 rounded bg-violet-600 px-1 text-[9px] uppercase text-white","data-testid":"showroom-role-judge-toggle-on",children:"LLM"})]}),"local-llm"===eD&&(0,r.jsxs)("select",{value:e_,onChange:e=>e0(e.target.value),className:"rounded-md border border-violet-300 bg-white px-2 py-1 text-xs text-violet-700 dark:border-violet-700 dark:bg-zinc-800 dark:text-violet-300","aria-label":"Select LLM judge model",title:eH?"Model list unavailable: ".concat(eH,". Type the model id directly via DevTools localStorage."):"Pick a deployed model \xb7 ".concat(eO.length," loaded \xb7 empty = daemon default (mlx-community/gemma-4-26b-a4b-it)"),"data-testid":"showroom-role-judge-model-select",children:[(0,r.jsx)("option",{value:"",children:"(daemon default)"}),(()=>{let e=eO.filter(e=>!/embed/i.test(e.id)),t=new Map;for(let r of e){var a,n;let e=null!=(a=r.host)?a:"",o=null!=(n=t.get(e))?n:[];o.push(r),t.set(e,o)}return t.size<=1?e.map(e=>{var t;return(0,r.jsx)("option",{value:e.id,children:e.id},"".concat(null!=(t=e.host)?t:"h","::").concat(e.id))}):Array.from(t.entries()).map(e=>{let[t,a]=e;return(0,r.jsx)("optgroup",{label:t||"(unknown host)",children:a.map(e=>(0,r.jsx)("option",{value:e.id,children:e.id},"".concat(t,"::").concat(e.id)))},t||"unknown")})})()]}),(0,r.jsxs)("button",{type:"button",onClick:()=>{t$.toggle()},disabled:!tJ,className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs ".concat(t$.active?"border-emerald-400 bg-emerald-50 text-emerald-700 dark:border-emerald-600 dark:bg-emerald-900/30 dark:text-emerald-300":"border-zinc-300 bg-white text-zinc-700 hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-300 dark:hover:bg-zinc-700"," disabled:cursor-not-allowed disabled:opacity-50"),"aria-label":t$.active?"Stop voice mode":"Start voice mode","aria-pressed":t$.active,title:tJ?t$.active?"Voice ".concat(t$.phase," \xb7 click to stop"):"Voice mode OFF \xb7 click to start mic + STT":"Voice WebSocket URL is unavailable — daemon `/voice/ws` not configured","data-testid":"showroom-voice-toggle",children:[t$.active?(0,r.jsx)(p.A,{className:"size-3.5","aria-hidden":!0}):(0,r.jsx)(h.A,{className:"size-3.5","aria-hidden":!0}),t$.active&&(0,r.jsx)("span",{className:"ml-0.5 rounded bg-emerald-600 px-1 text-[9px] uppercase text-white","data-testid":"showroom-voice-toggle-on",children:"listening"===t$.phase?"listen":t$.phase})]}),(0,r.jsxs)("button",{type:"button",onClick:()=>tZ(e=>!e),disabled:!tX.supported||!t$.active,className:"inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs ".concat(tQ?"border-zinc-300 bg-zinc-50 text-zinc-500 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-400":"border-sky-300 bg-sky-50 text-sky-700 dark:border-sky-700 dark:bg-sky-900/30 dark:text-sky-300"," disabled:cursor-not-allowed disabled:opacity-50"),"aria-label":tQ?"Unmute panel TTS":"Mute panel TTS","aria-pressed":tQ,title:tX.supported?t$.active?tQ?"Panel TTS muted \xb7 click to unmute":"Panel TTS active \xb7 click to mute":"Start voice mode to enable per-panel TTS":"Web Speech API is unavailable in this browser","data-testid":"showroom-tts-toggle",children:[tQ?(0,r.jsx)(b.A,{className:"size-3.5","aria-hidden":!0}):(0,r.jsx)(x.A,{className:"size-3.5","aria-hidden":!0}),"TTS"]}),(0,r.jsxs)("button",{type:"button",onClick:tD,className:"inline-flex items-center gap-1 rounded-md border border-rose-300 bg-white px-2 py-1 text-xs text-rose-700 hover:bg-rose-50 dark:border-rose-700 dark:bg-zinc-800 dark:text-rose-300 dark:hover:bg-rose-900/30","aria-label":"Stop all panels",title:"Stop all (placeholder \xb7 P2 wire)",children:[(0,r.jsx)(g.A,{className:"size-3.5","aria-hidden":!0}),"Stop all"]})]})]}),(0,r.jsxs)("div",{className:"flex flex-1 flex-col gap-2 overflow-hidden p-2 ".concat((null==A?void 0:A.get("layout"))==="horizontal"?"flex-row":"xl:flex-row"),"data-testid":"showroom-grid",children:[0===T.length&&(0,r.jsx)("div",{className:"flex flex-1 items-center justify-center text-sm text-zinc-500",children:"모든 panel 이 닫혔습니다 \xb7 위의 + Panel 으로 추가"}),T.map(t=>(0,r.jsx)(en,{panel:t,allPanels:T,client:e,onClose:()=>t_(t.id),onState:e=>tU(t.id,e),onProvider:e=>tF(t.id,e),onPromoteAssistant:tb(t),outgoingEdges:F(ec,t.id),onAddChainEdge:tC,onRemoveChainEdge:tI,onToggleChainEdgeHitl:tA,onRoleHint:e=>tK(t.id,e),onPersona:e=>tO(t.id,e),dmState:e7[t.id],dmSessionId:e3},t.id))]}),(0,r.jsx)(eB,{open:eT,onClose:()=>eE(!1)}),G&&(0,r.jsx)(eJ,{estimate:G.estimate,onConfirm:to,onCancel:tl}),(0,r.jsx)(eV,{pending:ep[0]?{from:ep[0].from,to:ep[0].to,forwardText:ep[0].forwardText}:void 0,queueLength:ep.length,onConfirm:tE,onCancel:tM}),ey&&(0,r.jsx)("div",{ref:t1,className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4",role:"dialog","aria-modal":"true","aria-labelledby":"showroom-save-modal-title","data-testid":"showroom-save-modal",onKeyDown:e=>{"Escape"===e.key&&(e.stopPropagation(),tn())},children:(0,r.jsxs)("div",{className:"w-full max-w-md rounded-lg border border-zinc-300 bg-white p-4 shadow-xl dark:border-zinc-700 dark:bg-zinc-900",children:[(0,r.jsx)("h2",{id:"showroom-save-modal-title",className:"mb-2 text-sm font-medium text-zinc-900 dark:text-zinc-100",children:"Save Showroom layout"}),(0,r.jsxs)("p",{className:"mb-3 text-xs text-zinc-500",children:[T.length," panel \xb7 sessionId 는 fresh handshake 으로 load 시 재발급"]}),(0,r.jsx)("input",{type:"text",value:eN,onChange:e=>{eS(e.target.value),eI(null)},onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),tr())},placeholder:"layout name (e.g., morning \xb7 debug-X \xb7 pair-A)",className:"mb-2 w-full rounded-md border border-zinc-300 bg-white px-2 py-1.5 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-400 dark:border-zinc-700 dark:bg-zinc-800","data-testid":"showroom-save-modal-input",autoFocus:!0}),eN.trim()&&eb.some(e=>e.name===eN.trim())&&(0,r.jsx)("p",{className:"mb-2 text-[11px] text-amber-700 dark:text-amber-300","data-testid":"showroom-save-modal-overwrite-warn",children:"같은 이름의 layout 이 이미 있어요 \xb7 save 시 overwrite"}),eC&&(0,r.jsx)("p",{className:"mb-2 text-[11px] text-rose-700 dark:text-rose-300","data-testid":"showroom-save-modal-error",children:eC}),(0,r.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,r.jsx)("button",{type:"button",onClick:tn,className:"rounded-md border border-zinc-300 bg-white px-3 py-1 text-xs hover:bg-zinc-50 dark:border-zinc-700 dark:bg-zinc-800 dark:hover:bg-zinc-700","data-testid":"showroom-save-modal-cancel",children:"Cancel"}),(0,r.jsxs)("button",{type:"button",onClick:tr,disabled:!eN.trim(),className:"inline-flex items-center gap-1 rounded-md bg-indigo-600 px-3 py-1 text-xs font-medium text-white hover:bg-indigo-500 disabled:cursor-not-allowed disabled:opacity-50","data-testid":"showroom-save-modal-confirm",children:[(0,r.jsx)(d.A,{className:"size-3","aria-hidden":!0}),"Save"]})]})]})}),(0,r.jsx)(eL,{sessionId:e3,onTap:e=>{ef.K.emit({surface:"pwa",intent:{layer:"selection",kind:"pwa.selection.intent_button_tap",target:{kind:"intent_button",id:e,label:e}},...e3?{context:{active_showroom_session_id:e3}}:{}}),tL(e)}}),(0,r.jsx)(ez,{onSend:tL,panels:T,liveCount:tB,attachments:P,onAttach:tu,onRemoveAttachment:tm,terminalContexts:D,onPinTerminalContext:tp,onRemoveTerminalContext:th,priorAnswers:J,onRemovePriorAnswer:tx,onTogglePriorAnswer:tg,urlContexts:et,onAddUrlContext:tf,onRemoveUrlContext:tv,clipboardContexts:er,onAddClipboardContext:tw,onRemoveClipboardContext:tk,videoContexts:el,onAddVideoContext:ty,onRemoveVideoContext:tj,audioContexts:es,onAddAudioContext:tz,onRemoveAudioContext:tN,onUpdateAudioTranscript:tS,listTerminals:()=>e.listTerminals(),fetchTerminalScrollback:(t,a)=>e.fetchTerminalScrollback(t,a)})]})}}},e=>{e.O(0,[7235,7482,5583,5508,8370,3839,6820,9096,1380,7358],()=>e(e.s=87240)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8147],{12138:(e,r,i)=>{Promise.resolve().then(i.bind(i,76242))},76242:(e,r,i)=>{"use strict";i.r(r),i.d(r,{default:()=>a});var t=i(54728),n=i(18837);function a(){return(0,t.jsx)(n.B,{})}},96598:(e,r,i)=>{"use strict";i.d(r,{$:()=>o});var t=i(54728),n=i(86649),a=i(76882),d=i(99461);let s=(0,a.F)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function o(e){let{className:r,variant:i="default",size:a="default",...o}=e;return(0,t.jsx)(n.$,{"data-slot":"button",className:(0,d.cn)(s({variant:i,size:a,className:r})),...o})}},99461:(e,r,i)=>{"use strict";i.d(r,{cn:()=>a});var t=i(41828),n=i(568);function a(){for(var e=arguments.length,r=Array(e),i=0;i<e;i++)r[i]=arguments[i];return(0,n.QP)((0,t.$)(r))}}},e=>{e.O(0,[7235,7482,5583,526,3839,8837,9096,1380,7358],()=>e(e.s=12138)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6125],{3720:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(8740);let l=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim()},o=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var a={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let u=(0,n.createContext)({}),i=(0,n.forwardRef)((e,t)=>{var r,o,i;let{color:s,size:c,strokeWidth:d,absoluteStrokeWidth:h,className:f="",children:p,iconNode:m,...g}=e,{size:v=24,strokeWidth:w=2,absoluteStrokeWidth:k=!1,color:N="currentColor",className:C=""}=null!=(r=(0,n.useContext)(u))?r:{},E=(null!=h?h:k)?24*Number(null!=d?d:w)/Number(null!=c?c:v):null!=d?d:w;return(0,n.createElement)("svg",{ref:t,...a,width:null!=(o=null!=c?c:v)?o:a.width,height:null!=(i=null!=c?c:v)?i:a.height,stroke:null!=s?s:N,strokeWidth:E,className:l("lucide",C,f),...!p&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(g)&&{"aria-hidden":"true"},...g},[...m.map(e=>{let[t,r]=e;return(0,n.createElement)(t,r)}),...Array.isArray(p)?p:[p]])}),s=(e,t)=>{let r=(0,n.forwardRef)((r,a)=>{let{className:u,...s}=r;return(0,n.createElement)(i,{ref:a,iconNode:t,className:l("lucide-".concat(o(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),"lucide-".concat(e),u),...s})});return r.displayName=o(e),r}},4101:(e,t,r)=>{"use strict";r.d(t,{EW:()=>a,RS:()=>l,gR:()=>o});var n=r(12397);function l(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function o(e,t){if(!e||!t)return!1;let r=t.getRootNode?.();if(e.contains(t))return!0;if(r&&(0,n.Ng)(r)){let r=t;for(;r;){if(e===r)return!0;r=r.parentNode||r.host}}return!1}function a(e){return"composedPath"in e?e.composedPath()[0]:e.target}},20570:(e,t,r)=>{"use strict";r.d(t,{d:()=>l});var n=r(31731);function l(e,t,r,l){let o=!1,a=!1,u=l??n.t0;return{reason:e,event:t??new Event("base-ui"),cancel(){o=!0},allowPropagation(){a=!0},get isCanceled(){return o},get isPropagationAllowed(){return a},trigger:r,...u}}},38195:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});var n=r(54728),l=r(8740),o=r(49987),a=r(29058);function u(){let e=(0,o.useRouter)(),t=(0,o.useSearchParams)(),r=(null==t?void 0:t.get("pty"))||null,u=(0,l.useCallback)(t=>{let r=function(e,t){let r=new URL(e);return r.searchParams.get("pty")===t?null:(r.searchParams.set("pty",t),"".concat(r.pathname).concat(r.search).concat(r.hash))}(window.location.href,t.id);null!==r&&e.replace(r)},[e]);return(0,n.jsx)(a.zV,{initialPtyId:r,onPtySelection:u})}function i(){return(0,n.jsx)(l.Suspense,{fallback:(0,n.jsx)("div",{className:"p-6 text-sm text-muted-foreground",children:"loading…"}),children:(0,n.jsx)(u,{})})}},50468:(e,t,r)=>{"use strict";r.d(t,{e:()=>l});var n=r(93918);function l(e){return(0,n.B)(e,"base-ui")}},77530:(e,t,r)=>{Promise.resolve().then(r.bind(r,38195))},81005:(e,t,r)=>{"use strict";function n(e){return e?.ownerDocument||document}r.d(t,{R:()=>n})},89320:(e,t,r)=>{"use strict";r.d(t,{N7:()=>o,Np:()=>a,SR:()=>u,Ui:()=>l,Xn:()=>i,dv:()=>n,jv:()=>s,zJ:()=>c});let n="none",l="trigger-press",o="trigger-hover",a="outside-press",u="close-press",i="focus-out",s="escape-key",c="imperative-action"},93918:(e,t,r)=>{"use strict";r.d(t,{B:()=>u});var n=r(8740);let l={...r.t(n,2)},o=0,a=l.useId;function u(e,t){if(void 0!==a){let r=a();return null!=e?e:t?"".concat(t,"-").concat(r):r}return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mui",[r,l]=n.useState(e),a=e||r;return n.useEffect(()=>{null==r&&(o+=1,l("".concat(t,"-").concat(o)))},[r,t]),a}(e,t)}}},e=>{e.O(0,[4615,2133,7235,7482,5583,6258,3089,320,3839,6820,3659,1863,9058,9096,1380,7358],()=>e(e.s=77530)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8677],{1435:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>k});var n=r(54728),a=r(8740),l=r(3839),s=r(96598),o=r(30321),i=r(93186),d=r(43659),c=r(4465);let u="wikilink:",x={aliasDivider:"|",pageResolver:e=>[e],hrefTemplate:e=>"".concat(u).concat(encodeURIComponent(e))};function m(e){let{markdown:t,onWikilink:r}=e;return(0,n.jsx)("div",{className:"text-sm text-foreground/90",children:(0,n.jsx)(o.oz,{remarkPlugins:[i.A,c.A,[d.A,x]],components:{h1:e=>{let{children:t}=e;return(0,n.jsx)("h1",{className:"mb-3 mt-5 border-b border-border pb-1 text-2xl font-bold",children:t})},h2:e=>{let{children:t}=e;return(0,n.jsx)("h2",{className:"mb-2 mt-5 text-xl font-bold",children:t})},h3:e=>{let{children:t}=e;return(0,n.jsx)("h3",{className:"mb-2 mt-4 text-lg font-semibold",children:t})},h4:e=>{let{children:t}=e;return(0,n.jsx)("h4",{className:"mb-1 mt-3 text-base font-semibold",children:t})},h5:e=>{let{children:t}=e;return(0,n.jsx)("h5",{className:"mb-1 mt-2 text-sm font-semibold text-muted-foreground",children:t})},h6:e=>{let{children:t}=e;return(0,n.jsx)("h6",{className:"mb-1 mt-2 text-xs font-semibold uppercase text-muted-foreground",children:t})},p:e=>{let{children:t}=e;return(0,n.jsx)("p",{className:"my-2 leading-relaxed",children:t})},ul:e=>{let{children:t}=e;return(0,n.jsx)("ul",{className:"my-2 list-disc space-y-1 pl-6",children:t})},ol:e=>{let{children:t}=e;return(0,n.jsx)("ol",{className:"my-2 list-decimal space-y-1 pl-6",children:t})},li:e=>{let{children:t}=e;return(0,n.jsx)("li",{className:"leading-relaxed",children:t})},blockquote:e=>{let{children:t}=e;return(0,n.jsx)("blockquote",{className:"my-3 border-l-4 border-primary/40 bg-muted/40 py-1 pl-3 text-muted-foreground",children:t})},hr:()=>(0,n.jsx)("hr",{className:"my-4 border-border"}),table:e=>{let{children:t}=e;return(0,n.jsx)("div",{className:"my-3 overflow-x-auto",children:(0,n.jsx)("table",{className:"w-full border-collapse text-sm",children:t})})},thead:e=>{let{children:t}=e;return(0,n.jsx)("thead",{className:"bg-muted/60",children:t})},th:e=>{let{children:t}=e;return(0,n.jsx)("th",{className:"border border-border px-3 py-1.5 text-left font-semibold",children:t})},td:e=>{let{children:t}=e;return(0,n.jsx)("td",{className:"border border-border px-3 py-1.5",children:t})},code:e=>{let{className:t,children:r}=e;return t?(0,n.jsx)("code",{className:"".concat(t," font-mono"),children:r}):(0,n.jsx)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-[0.85em]",children:r})},pre:e=>{let{children:t}=e;return(0,n.jsx)("pre",{className:"my-3 overflow-x-auto rounded-lg border border-border bg-muted/40 p-3 text-xs",children:t})},img:e=>{let{src:t,alt:r}=e;return(0,n.jsx)("img",{src:"string"==typeof t?t:"",alt:null!=r?r:"",className:"my-2 max-w-full rounded"})},a:e=>{let{href:t,children:a}=e,l=null!=t?t:"";if(l.startsWith(u)){let e=decodeURIComponent(l.slice(u.length));return(0,n.jsx)("button",{type:"button",onClick:()=>null==r?void 0:r(e),className:"text-primary underline decoration-dotted underline-offset-2 hover:decoration-solid",children:a})}return(0,n.jsx)("a",{href:l,target:"_blank",rel:"noreferrer",className:"text-primary underline underline-offset-2",children:a})}},children:t})})}class h{get(e){return this.client.fetchJson(e)}info(){return this.get("/v1/vault/info")}list(e){return this.get("/v1/vault/list".concat(e?"?cwd=".concat(encodeURIComponent(e)):""))}read(e,t){let r=new URLSearchParams({path:e,...t?{maxBytes:String(t)}:{}});return this.get("/v1/vault/read?".concat(r.toString()))}search(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50;return this.get("/v1/vault/search?q=".concat(encodeURIComponent(e),"&limit=").concat(t))}notes(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500;return this.get("/v1/vault/notes?".concat(e?"query=".concat(encodeURIComponent(e),"&"):"","limit=").concat(t))}backlinks(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100;return this.get("/v1/vault/backlinks?target=".concat(encodeURIComponent(e),"&limit=").concat(t))}tags(){return this.get("/v1/vault/tags")}templates(){return this.get("/v1/vault/templates")}graph(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:500,n=new URLSearchParams({limit:String(r),...e?{focus:e,hops:String(t)}:{}});return this.get("/v1/vault/graph?".concat(n.toString()))}pollChanges(e){return this.get("/v1/vault/poll-changes?sinceMs=".concat(e))}orphans(){return this.get("/v1/vault/orphans")}templateExpand(e,t){return this.client.fetchJson("/v1/vault/template-expand",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({templatePath:e,...t?{title:t}:{}})})}saveNote(e){return this.client.fetchJson("/v1/notes/save",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(e)})}constructor(e){this.client=e}}function p(e){let t=/^---\n([\s\S]*?)\n---\n?/.exec(e);return t?{frontmatter:t[1],body:e.slice(t[0].length)}:{frontmatter:null,body:e}}function g(e){let t=e.toLowerCase();return t.endsWith(".md")||t.endsWith(".markdown")?"markdown":/\.(png|jpe?g|gif|webp|svg)$/.test(t)?"image":t.endsWith(".pdf")?"pdf":/\.(txt|json|ya?ml|csv|log)$/.test(t)?"text":"other"}function f(e){let{onPickTag:t}=e,{client:r}=(0,l.Q)(),s=(0,a.useMemo)(()=>new h(r),[r]),[o,i]=(0,a.useState)([]),[d,c]=(0,a.useState)(""),[u,x]=(0,a.useState)(!0),m=(0,a.useCallback)(async()=>{x(!0);try{var e;let t=await s.tags();i((null!=(e=t.tags)?e:[]).sort((e,t)=>t.count-e.count))}catch(e){}finally{x(!1)}},[s]);(0,a.useEffect)(()=>{m()},[m]);let p=d?o.filter(e=>e.tag.toLowerCase().includes(d.toLowerCase())):o;return(0,n.jsxs)("div",{className:"flex h-full flex-col",children:[(0,n.jsx)("div",{className:"border-b border-border p-2",children:(0,n.jsx)("input",{value:d,onChange:e=>c(e.target.value),placeholder:"태그 필터…",className:"w-full rounded border border-border bg-background px-2 py-1 text-xs"})}),(0,n.jsx)("div",{className:"flex-1 overflow-auto p-1",children:u?(0,n.jsx)("p",{className:"p-2 text-xs text-muted-foreground",children:"불러오는 중…"}):0===p.length?(0,n.jsx)("p",{className:"p-2 text-xs text-muted-foreground",children:"태그 없음"}):(0,n.jsx)("ul",{className:"space-y-0.5",children:p.map(e=>(0,n.jsx)("li",{children:(0,n.jsxs)("button",{onClick:()=>t(e.tag),className:"flex w-full items-center justify-between rounded px-2 py-1 text-left text-xs hover:bg-muted",children:[(0,n.jsxs)("span",{className:"truncate",children:["#",e.tag]}),(0,n.jsx)("span",{className:"ml-2 shrink-0 rounded bg-muted px-1.5 text-[10px] text-muted-foreground",children:e.count})]})},e.tag))})})]})}function b(e){var t,r;let{onOpen:o}=e,{client:i}=(0,l.Q)(),d=(0,a.useMemo)(()=>new h(i),[i]),[c,u]=(0,a.useState)(null),[x,m]=(0,a.useState)(null),[p,g]=(0,a.useState)(!0),f=(0,a.useCallback)(async e=>{g(!0);try{u(await d.graph(null!=e?e:void 0,1,e?60:400))}catch(e){}finally{g(!1)}},[d]);(0,a.useEffect)(()=>{f(x)},[f,x]);let b=(0,a.useMemo)(()=>{if(!c)return{nodes:[],edges:[]};let e=c.nodes.map(e=>e.id),t=c.edges.map(e=>({source:e.from,target:e.to}));return{nodes:function(e,t){var r,n,a;let l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{width:800,height:600},{width:s,height:o}=l,i=null!=(r=l.iterations)?r:120,d=e.length,c=new Map;for(let e of t)c.set(e.source,(null!=(n=c.get(e.source))?n:0)+1),c.set(e.target,(null!=(a=c.get(e.target))?a:0)+1);let u=s/2,x=o/2,m=.4*Math.min(s,o),h=e.map((e,t)=>{var r;return{id:e,deg:null!=(r=c.get(e))?r:0,x:u+m*Math.cos(2*Math.PI*t/Math.max(1,d)),y:x+m*Math.sin(2*Math.PI*t/Math.max(1,d))}}),p=new Map(h.map((e,t)=>[e.id,t])),g=Math.sqrt(s*o/Math.max(1,d));for(let e=0;e<i;e++){let r=h.map(()=>({x:0,y:0}));for(let e=0;e<d;e++)for(let t=e+1;t<d;t++){let n=h[e].x-h[t].x,a=h[e].y-h[t].y,l=Math.hypot(n,a)||.01,s=g*g/l;n/=l,a/=l,r[e].x+=n*s,r[e].y+=a*s,r[t].x-=n*s,r[t].y-=a*s}for(let e of t){let t=p.get(e.source),n=p.get(e.target);if(null==t||null==n)continue;let a=h[t].x-h[n].x,l=h[t].y-h[n].y,s=Math.hypot(a,l)||.01,o=s*s/g;a/=s,l/=s,r[t].x-=a*o,r[t].y-=l*o,r[n].x+=a*o,r[n].y+=l*o}let n=1-e/i;for(let e=0;e<d;e++){let t=Math.hypot(r[e].x,r[e].y)||.01,a=Math.min(t,30*n);h[e].x=Math.max(20,Math.min(s-20,h[e].x+r[e].x/t*a)),h[e].y=Math.max(20,Math.min(o-20,h[e].y+r[e].y/t*a))}}return h}(e,t,{width:900,height:640,iterations:140}),edges:t}},[c]),v=(0,a.useMemo)(()=>new Map(b.nodes.map(e=>[e.id,e])),[b]),j=Math.max(1,...b.nodes.map(e=>e.deg));return(0,n.jsxs)("div",{className:"flex h-full flex-col",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 border-b border-border px-3 py-2 text-sm",children:[(0,n.jsx)("span",{className:"font-medium",children:"노트 그래프"}),x?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("span",{className:"text-xs text-muted-foreground",children:["focus: ",x," (1-hop)"]}),(0,n.jsx)(s.$,{size:"sm",variant:"outline",className:"ml-auto h-6 px-2 text-xs",onClick:()=>m(null),children:"전체 그래프"})]}):(0,n.jsxs)("span",{className:"ml-auto text-xs text-muted-foreground",children:[null!=(t=null==c?void 0:c.nodes.length)?t:0," 노드 \xb7 ",null!=(r=null==c?void 0:c.edges.length)?r:0," 링크",(null==c?void 0:c.truncated)?" (일부)":""]})]}),(0,n.jsx)("div",{className:"flex-1 overflow-auto p-2",children:p?(0,n.jsx)("p",{className:"p-4 text-sm text-muted-foreground",children:"그래프 계산 중…"}):c&&0!==c.nodes.length?(0,n.jsxs)("svg",{viewBox:"0 0 ".concat(900," ").concat(640),className:"h-auto w-full",style:{maxHeight:"78vh"},children:[b.edges.map((e,t)=>{let r=v.get(e.source),a=v.get(e.target);return r&&a?(0,n.jsx)("line",{x1:r.x,y1:r.y,x2:a.x,y2:a.y,stroke:"currentColor",className:"text-border",strokeWidth:.6,opacity:.5},t):null}),b.nodes.map(e=>{let t=3+e.deg/j*9;return(0,n.jsxs)("g",{className:"cursor-pointer",onClick:()=>null==o?void 0:o(e.id),onDoubleClick:()=>m(e.id),children:[(0,n.jsx)("circle",{cx:e.x,cy:e.y,r:t,className:"fill-primary/70 hover:fill-primary"}),(e.deg>=.3*j||x)&&(0,n.jsx)("text",{x:e.x+t+2,y:e.y+3,className:"fill-foreground/70 text-[9px]",children:e.id.split("/").pop()})]},e.id)})]}):(0,n.jsx)("p",{className:"p-4 text-sm text-muted-foreground",children:"그래프가 비어있습니다."})}),(0,n.jsx)("p",{className:"border-t border-border px-3 py-1 text-[11px] text-muted-foreground",children:"클릭=노트 열기 \xb7 더블클릭=로컬 그래프(focus)"})]})}function v(e){let{onClose:t,onCreated:r}=e,{client:o}=(0,l.Q)(),i=(0,a.useMemo)(()=>new h(o),[o]),[d,c]=(0,a.useState)(""),[u,x]=(0,a.useState)([]),[m,p]=(0,a.useState)(""),[g,f]=(0,a.useState)(!1),[b,v]=(0,a.useState)(null);(0,a.useEffect)(()=>{i.templates().then(e=>{var t;return x(null!=(t=e.templates)?t:[])}).catch(()=>{})},[i]);let j=(0,a.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};f(!0),v(null);try{let n=e.daily?function(){let e=new Date;return"".concat(e.getFullYear(),"-").concat(String(e.getMonth()+1).padStart(2,"0"),"-").concat(String(e.getDate()).padStart(2,"0"))}():d.trim();if(!n){v("제목을 입력하세요"),f(!1);return}let a="# ".concat(n,"\n\n");if(m){let e=await i.templateExpand(m,n);e.content&&(a=e.content)}else e.daily&&(a="# ".concat(n,"\n\n## 오늘\n\n- \n"));let l=e.daily?"Daily/".concat(n,".md"):void 0,s=await i.saveNote({markdown:a,title:n,...l?{path:l}:{}});if(s.error){v(s.error),f(!1);return}s.path?r(s.path.replace(/^.*\/Obsidian\/[^/]+\//,"")):t()}catch(e){v(e instanceof Error?e.message:String(e)),f(!1)}},[i,d,m,r,t]);return(0,n.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:t,children:(0,n.jsxs)("div",{className:"w-[420px] rounded-lg border border-border bg-card p-4 shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,n.jsx)("h2",{className:"mb-3 text-sm font-semibold",children:"새 노트"}),(0,n.jsx)("input",{value:d,onChange:e=>c(e.target.value),onKeyDown:e=>{"Enter"===e.key&&j()},placeholder:"노트 제목…",autoFocus:!0,className:"mb-2 w-full rounded border border-border bg-background px-3 py-2 text-sm"}),u.length>0&&(0,n.jsxs)("select",{value:m,onChange:e=>p(e.target.value),className:"mb-2 w-full rounded border border-border bg-background px-2 py-1.5 text-sm",children:[(0,n.jsx)("option",{value:"",children:"템플릿 없음"}),u.map(e=>(0,n.jsx)("option",{value:e.relPath,children:e.name},e.relPath))]}),b&&(0,n.jsx)("p",{className:"mb-2 text-xs text-rose-400",children:b}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(s.$,{size:"sm",onClick:()=>void j(),disabled:g||!d.trim(),children:"생성"}),(0,n.jsx)(s.$,{size:"sm",variant:"outline",onClick:()=>void j({daily:!0}),disabled:g,children:"오늘 데일리노트"}),(0,n.jsx)(s.$,{size:"sm",variant:"ghost",className:"ml-auto",onClick:t,children:"취소"})]})]})})}function j(e){let{onEdit:t}=e,{client:r}=(0,l.Q)(),o=(0,a.useMemo)(()=>new h(r),[r]),[i,d]=(0,a.useState)(null),[c,u]=(0,a.useState)(""),[x,m]=(0,a.useState)([]),[p,j]=(0,a.useState)(null),[N,k]=(0,a.useState)(null),[w,C]=(0,a.useState)(""),[S,M]=(0,a.useState)(null),[z,D]=(0,a.useState)(!1),[E,$]=(0,a.useState)("view"),[P,R]=(0,a.useState)("files"),[_,q]=(0,a.useState)(!1),[I,O]=(0,a.useState)(0);(0,a.useEffect)(()=>{let e=Date.now(),t=setInterval(()=>{o.pollChanges(e).then(e=>{var t;return O(null!=(t=e.count)?t:0)}).catch(()=>{})},3e4);return()=>clearInterval(t)},[o]);let U=(0,a.useCallback)(e=>{C("#".concat(e)),R("files"),(async()=>{D(!0);try{var t;let r=await o.search("#".concat(e),50);M(null!=(t=r.matches)?t:[])}catch(e){M([])}finally{D(!1)}})()},[o]),K=(0,a.useCallback)(async e=>{D(!0),M(null);try{let t=await o.list(e||void 0);t.error||(m(t.entries),u(t.cwd))}catch(e){}finally{D(!1)}},[o]);(0,a.useEffect)(()=>{let e=!0;return o.info().then(t=>{e&&(d(t),t.available&&K(""))}).catch(()=>{}),()=>{e=!1}},[o,K]);let T=(0,a.useCallback)(async e=>{j(e),k(null);try{k(await o.read(e))}catch(e){}},[o]),A=(0,a.useCallback)(async()=>{let e=w.trim();if(!e)return void M(null);D(!0);try{var t;let r=await o.search(e,50);M(null!=(t=r.matches)?t:[])}catch(e){M([])}finally{D(!1)}},[o,w]),F=c&&(null==i?void 0:i.root)?c.replace(i.root,"").split("/").filter(Boolean):[],W=(null==i?void 0:i.root)?c.replace(i.root,"").replace(/^\//,""):"";return i&&!i.available?(0,n.jsxs)("div",{className:"p-6 text-sm text-muted-foreground",children:["Obsidian vault를 찾을 수 없습니다 (source: ",i.source,"). ~/.elanous/config.json 의 obsidian.vault 를 확인하세요."]}):(0,n.jsxs)("div",{className:"mx-auto flex h-[calc(100vh-3rem)] max-w-[1500px] gap-3 px-3 py-3",children:[_&&(0,n.jsx)(v,{onClose:()=>q(!1),onCreated:e=>{q(!1),K(""),null==t||t(e)}}),(0,n.jsxs)("div",{className:"flex w-[38%] min-w-[280px] flex-col rounded-lg border border-border bg-card/40",children:[(0,n.jsxs)("div",{className:"flex items-center gap-1 border-b border-border px-2 py-1.5",children:[["files","tags","graph"].map(e=>(0,n.jsx)("button",{onClick:()=>R(e),className:["rounded px-2 py-0.5 text-xs",P===e?"bg-primary/20 text-foreground":"text-muted-foreground"].join(" "),children:{files:"파일",tags:"태그",graph:"그래프"}[e]},e)),I>0&&(0,n.jsxs)("span",{className:"rounded bg-amber-500/15 px-1.5 py-0.5 text-[10px] text-amber-300",title:"외부 변경 감지",children:["↻ ",I]}),(0,n.jsx)(s.$,{size:"sm",variant:"outline",className:"ml-auto h-6 px-2 text-xs",onClick:()=>q(!0),children:"+ 새 노트"})]}),"graph"===P?(0,n.jsx)(b,{onOpen:e=>{R("files"),T("".concat(e,".md"))}}):"tags"===P?(0,n.jsx)(f,{onPickTag:U}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"border-b border-border p-2",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("input",{value:w,onChange:e=>C(e.target.value),onKeyDown:e=>{"Enter"===e.key&&A()},placeholder:"vault 전문검색…",className:"min-w-0 flex-1 rounded border border-border bg-background px-2 py-1 text-sm"}),(0,n.jsx)(s.$,{size:"sm",variant:"outline",onClick:()=>void A(),children:"검색"})]}),!S&&(0,n.jsxs)("div",{className:"mt-1.5 flex flex-wrap items-center gap-1 text-xs text-muted-foreground",children:[(0,n.jsx)("button",{className:"hover:text-foreground",onClick:()=>void K(""),children:"vault"}),F.map((e,t)=>(0,n.jsxs)("span",{children:["/ ",(0,n.jsx)("button",{className:"hover:text-foreground",onClick:()=>void K("".concat(i.root,"/").concat(F.slice(0,t+1).join("/"))),children:e})]},t))]})]}),(0,n.jsxs)("div",{className:"flex-1 overflow-auto p-1",children:[z&&(0,n.jsx)("p",{className:"p-2 text-xs text-muted-foreground",children:"불러오는 중…"}),S?0===S.length?(0,n.jsx)("p",{className:"p-2 text-xs text-muted-foreground",children:"검색 결과 없음"}):(0,n.jsx)("ul",{className:"space-y-1",children:S.map((e,t)=>(0,n.jsx)("li",{children:(0,n.jsxs)("button",{className:"w-full rounded px-2 py-1.5 text-left text-xs hover:bg-muted",onClick:()=>void T(e.path),children:[(0,n.jsx)("span",{className:"font-medium",children:e.path.split("/").pop()})," ",(0,n.jsxs)("span",{className:"text-muted-foreground",children:[":",e.lineNumber]}),(0,n.jsx)("div",{className:"truncate text-muted-foreground",children:e.snippet})]})},t))}):(0,n.jsxs)("ul",{children:[W&&(0,n.jsx)("li",{children:(0,n.jsx)("button",{className:"w-full rounded px-2 py-1.5 text-left text-sm text-muted-foreground hover:bg-muted",onClick:()=>void K("".concat(i.root,"/").concat(function(e){let t=e.split("/").filter(Boolean);return t.pop(),t.join("/")}(W))),children:"\uD83D\uDCC1 .."})}),x.map(e=>(0,n.jsx)("li",{children:(0,n.jsxs)("button",{className:["flex w-full items-center gap-1.5 rounded px-2 py-1.5 text-left text-sm hover:bg-muted",p==="".concat(W?W+"/":"").concat(e.name)?"bg-muted":""].join(" "),onClick:()=>e.isDir?void K("".concat(c,"/").concat(e.name)):void T("".concat(W?W+"/":"").concat(e.name)),children:[(0,n.jsx)("span",{children:e.isDir?"\uD83D\uDCC1":"markdown"===g(e.name)?"\uD83D\uDCDD":"image"===g(e.name)?"\uD83D\uDDBC️":"\uD83D\uDCC4"}),(0,n.jsx)("span",{className:"truncate",children:e.name})]})},e.relPath))]})]})]})]}),(0,n.jsxs)("div",{className:"flex flex-1 flex-col rounded-lg border border-border bg-card/40",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between border-b border-border px-3 py-2",children:[(0,n.jsx)("span",{className:"truncate text-sm font-medium",children:null!=p?p:"파일을 선택하세요"}),(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[p&&"markdown"===g(p)&&(0,n.jsx)("div",{className:"flex items-center gap-0.5 rounded ring-1 ring-border",children:["view","raw"].map(e=>(0,n.jsx)("button",{onClick:()=>$(e),className:["px-2 py-0.5 text-xs",E===e?"bg-primary/20 text-foreground":"text-muted-foreground"].join(" "),children:"view"===e?"View":"Raw"},e))}),p&&"markdown"===g(p)&&t&&(0,n.jsx)(s.$,{size:"sm",variant:"outline",onClick:()=>t(p),children:"편집"})]})]}),(0,n.jsx)("div",{className:"flex-1 overflow-auto p-4",children:N?(0,n.jsx)(y,{preview:N,selected:p,mode:E,onWikilink:e=>{T("".concat(W?W+"/":"").concat(e,".md"))}}):(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:p?"로딩…":"좌측에서 노트를 선택하면 여기에 표시됩니다."})})]})]})}function y(e){let{preview:t,selected:r,mode:a,onWikilink:l}=e;if(t.error)return(0,n.jsx)("p",{className:"text-sm text-rose-400",children:t.error});let s=g(r);if("image"===s&&t.bytes)return(0,n.jsx)("img",{src:"data:".concat(t.mime,";base64,").concat(t.bytes),alt:r,className:"max-w-full rounded"});if("markdown"===s&&null!=t.content){let{frontmatter:e,body:r}=p(t.content);return"raw"===a?(0,n.jsx)("pre",{className:"whitespace-pre-wrap font-mono text-xs leading-relaxed",children:t.content}):(0,n.jsxs)("div",{children:[e&&(0,n.jsx)("pre",{className:"mb-3 rounded bg-muted/40 p-2 text-[11px] text-muted-foreground",children:e}),(0,n.jsx)(m,{markdown:r,onWikilink:l}),t.truncated&&(0,n.jsxs)("p",{className:"mt-2 text-xs text-amber-400",children:["⚠ 일부만 표시됨(",(t.size/1024).toFixed(0),"KB)"]})]})}return null!=t.content?(0,n.jsx)("pre",{className:"whitespace-pre-wrap text-sm",children:t.content}):(0,n.jsxs)("p",{className:"text-sm text-muted-foreground",children:["미리보기 불가(",t.mime,")"]})}function N(e){let{path:t,onClose:r}=e,{client:o}=(0,l.Q)(),i=(0,a.useMemo)(()=>new h(o),[o]),[d,c]=(0,a.useState)(""),[u,x]=(0,a.useState)(!1),[g,f]=(0,a.useState)("split"),[b,v]=(0,a.useState)("clean"),[j,y]=(0,a.useState)(null),N=(0,a.useRef)(void 0),k=(0,a.useRef)(null),w=(0,a.useRef)(null),[C,S]=(0,a.useState)("outline"),[M,z]=(0,a.useState)([]),[D,E]=(0,a.useState)(null),$=(0,a.useMemo)(()=>(function(e){let t=[],r=!1;return e.split("\n").forEach((e,n)=>{let a=e.trimEnd();if(/^```/.test(a.trim())){r=!r;return}if(r)return;let l=/^(#{1,6})\s+(.+)$/.exec(a);l&&t.push({level:l[1].length,text:l[2].trim(),line:n})}),t})(p(d).body),[d]);(0,a.useEffect)(()=>{let e=!0;return i.read(t,8388608).then(t=>{var r;e&&(c(null!=(r=t.content)?r:""),N.current=void 0,x(!0),v("clean"))}).catch(()=>{e&&(y("노트를 불러오지 못했습니다"),x(!0))}),()=>{e=!1,k.current&&clearTimeout(k.current)}},[i,t]);let P=(0,a.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];v("saving"),y(null);try{let r=await i.saveNote({path:t,markdown:d,...e?{}:null!=N.current?{lastKnownMtime:N.current}:{}});if(r.error&&null!=r.currentMtime){v("conflict"),N.current=r.currentMtime;return}if(r.error){v("error"),y(r.error);return}null!=r.mtimeMs&&(N.current=r.mtimeMs),v("saved")}catch(e){v("error"),y(e instanceof Error?e.message:String(e))}},[i,t,d]);(0,a.useEffect)(()=>{var e;let r=!0;return i.backlinks((null!=(e=t.split("/").pop())?e:t).replace(/\.md$/i,""),100).then(e=>{var t;r&&z(null!=(t=e.matches)?t:[])}).catch(()=>{}),()=>{r=!1}},[i,t]);let R=(0,a.useCallback)((e,t)=>{let r=function(e,t){let r=e.slice(0,t),n=r.lastIndexOf("[[");if(n<0)return null;let a=r.slice(n+2);return a.includes("]]")||a.includes("\n")?null:{query:a,start:n+2}}(e,t);if(!r)return void E(null);i.notes(r.query||void 0,8).then(e=>{var n;E({query:r.query,start:r.start,caret:t,items:(null!=(n=e.notes)?n:[]).slice(0,8)})}).catch(()=>E(null))},[i]),_=(0,a.useCallback)((e,t)=>{c(e),v("dirty"),R(e,t),k.current&&clearTimeout(k.current),k.current=setTimeout(()=>{P(!1)},2500)},[P,R]),q=(0,a.useCallback)(e=>{if(!D)return;let t=function(e,t,r,n){let a=e.slice(0,t),l=e.slice(r),s="".concat(n,"]]");return{text:a+s+l,caret:a.length+s.length}}(d,D.start,D.caret,e.name);c(t.text),v("dirty"),E(null),requestAnimationFrame(()=>{w.current&&(w.current.focus(),w.current.setSelectionRange(t.caret,t.caret))})},[D,d]),I=(0,a.useCallback)(e=>{let t=w.current;if(!t)return;let r=d.split("\n").slice(0,e).join("\n").length;t.focus(),t.setSelectionRange(r,r),t.scrollTop=Math.max(0,20*e-100)},[d]),O=p(d).body;return u?(0,n.jsxs)("div",{className:"mx-auto flex h-[calc(100vh-3rem)] max-w-[1500px] flex-col px-3 py-3",children:[(0,n.jsxs)("div",{className:"mb-2 flex items-center gap-2",children:[(0,n.jsx)(s.$,{size:"sm",variant:"ghost",onClick:r,children:"← 목록"}),(0,n.jsx)("span",{className:"truncate text-sm font-medium",children:t}),(0,n.jsx)("span",{className:["ml-2 rounded px-2 py-0.5 text-xs",{clean:"text-muted-foreground",dirty:"text-amber-400",saving:"text-sky-400",saved:"text-emerald-400",conflict:"text-rose-400",error:"text-rose-400"}[b]].join(" "),children:{clean:"저장됨",dirty:"● 편집 중",saving:"저장 중…",saved:"✓ 저장됨",conflict:"⚠ 충돌",error:"✗ 오류"}[b]}),(0,n.jsxs)("div",{className:"ml-auto flex items-center gap-1",children:[["edit","split","preview"].map(e=>(0,n.jsx)("button",{onClick:()=>f(e),className:["rounded px-2 py-1 text-xs ring-1",g===e?"bg-primary/20 ring-primary/40":"bg-muted text-muted-foreground ring-border"].join(" "),children:{edit:"편집",split:"분할",preview:"미리보기"}[e]},e)),(0,n.jsx)(s.$,{size:"sm",variant:"outline",onClick:()=>void P(!1),children:"저장"})]})]}),"conflict"===b&&(0,n.jsxs)("div",{className:"mb-2 flex items-center gap-2 rounded border border-rose-500/40 bg-rose-500/10 px-3 py-2 text-xs text-rose-200",children:[(0,n.jsx)("span",{children:"디스크의 노트가 외부에서 변경됐습니다."}),(0,n.jsx)(s.$,{size:"sm",variant:"outline",onClick:()=>void P(!0),children:"강제 덮어쓰기"}),(0,n.jsx)(s.$,{size:"sm",variant:"ghost",onClick:()=>void i.read(t,8388608).then(e=>{var t;c(null!=(t=e.content)?t:""),v("clean")}),children:"디스크 버전 로드"})]}),j&&(0,n.jsx)("div",{className:"mb-2 text-xs text-rose-400",children:j}),(0,n.jsxs)("div",{className:"flex min-h-0 flex-1 gap-3",children:["preview"!==g&&(0,n.jsxs)("div",{className:"relative min-h-0 flex-1",children:[(0,n.jsx)("textarea",{ref:w,value:d,onChange:e=>_(e.target.value,e.target.selectionStart),onKeyUp:e=>R(d,e.target.selectionStart),onClick:e=>R(d,e.target.selectionStart),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&"s"===e.key&&(e.preventDefault(),P(!1)),"Escape"===e.key&&D&&(e.preventDefault(),E(null)),"Enter"===e.key&&D&&D.items.length&&(e.preventDefault(),q(D.items[0]))},className:"h-full min-h-0 w-full resize-none rounded-lg border border-border bg-background p-3 font-mono text-sm leading-relaxed focus:outline-none focus:ring-1 focus:ring-ring",spellCheck:!1}),D&&D.items.length>0&&(0,n.jsxs)("div",{className:"absolute left-3 top-3 z-20 max-h-56 w-72 overflow-auto rounded-md border border-border bg-popover shadow-lg",children:[(0,n.jsxs)("div",{className:"border-b border-border px-2 py-1 text-[11px] text-muted-foreground",children:["[[wikilink: ",D.query||"…"]}),D.items.map(e=>(0,n.jsxs)("button",{className:"block w-full truncate px-2 py-1.5 text-left text-xs hover:bg-muted",onMouseDown:t=>{t.preventDefault(),q(e)},children:[(0,n.jsx)("span",{className:"font-medium",children:e.name})," ",(0,n.jsx)("span",{className:"text-muted-foreground",children:e.relPath})]},e.relPath))]})]}),"edit"!==g&&(0,n.jsx)("div",{className:"min-h-0 flex-1 overflow-auto rounded-lg border border-border bg-card/40 p-4",children:(0,n.jsx)(m,{markdown:O})}),(0,n.jsxs)("div",{className:"flex w-[220px] min-w-[180px] flex-col rounded-lg border border-border bg-card/40",children:[(0,n.jsx)("div",{className:"flex border-b border-border text-xs",children:["outline","backlinks"].map(e=>(0,n.jsx)("button",{onClick:()=>S(e),className:["flex-1 px-2 py-1.5",C===e?"border-b-2 border-primary text-foreground":"text-muted-foreground"].join(" "),children:"outline"===e?"개요":"역참조 ".concat(M.length?"(".concat(M.length,")"):"")},e))}),(0,n.jsx)("div",{className:"flex-1 overflow-auto p-1 text-xs",children:"outline"===C?0===$.length?(0,n.jsx)("p",{className:"p-2 text-muted-foreground",children:"heading 없음"}):$.map((e,t)=>(0,n.jsx)("button",{onClick:()=>I(e.line),className:"block w-full truncate rounded px-2 py-1 text-left hover:bg-muted",style:{paddingLeft:"".concat(8*e.level,"px")},children:e.text},t)):0===M.length?(0,n.jsx)("p",{className:"p-2 text-muted-foreground",children:"역참조 없음"}):M.map((e,t)=>(0,n.jsxs)("div",{className:"truncate rounded px-2 py-1",title:e.snippet,children:["\uD83D\uDCCE ",e.path.split("/").pop(),e.headingAnchor?" #".concat(e.headingAnchor):""]},t))})]})]})]}):(0,n.jsx)("div",{className:"p-6 text-sm text-muted-foreground",children:"노트 로딩…"})}function k(){let[e,t]=(0,a.useState)(null);return e?(0,n.jsx)(N,{path:e,onClose:()=>t(null)}):(0,n.jsx)(j,{onEdit:e=>t(e)})}},22776:(e,t,r)=>{Promise.resolve().then(r.bind(r,1435))},96598:(e,t,r)=>{"use strict";r.d(t,{$:()=>i});var n=r(54728),a=r(86649),l=r(76882),s=r(99461);let o=(0,l.F)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function i(e){let{className:t,variant:r="default",size:l="default",...i}=e;return(0,n.jsx)(a.$,{"data-slot":"button",className:(0,s.cn)(o({variant:r,size:l,className:t})),...i})}},99461:(e,t,r)=>{"use strict";r.d(t,{cn:()=>l});var n=r(41828),a=r(568);function l(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,a.QP)((0,n.$)(t))}}},e=>{e.O(0,[7235,7482,6258,2091,3839,9096,1380,7358],()=>e(e.s=22776)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4191],{18337:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>u});var n=s(54728),a=s(8740),r=s(49987);async function o(e){var t,s;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=null!=(t=n.fetchImpl)?t:fetch,r="".concat(null!=(s=n.origin)?s:"","/v1/workflows/").concat(encodeURIComponent(e),"/chat-config"),o=await a(r);if(404===o.status)return null;if(!o.ok)throw Error("chat-config ".concat(o.status));return await o.json()}async function i(e){var t,s,n,a,r;let o=null!=(t=e.fetchImpl)?t:fetch,i="".concat(null!=(s=e.origin)?s:"","/v1/workflows/chat").concat(e.chatPath),c={"content-type":"application/json"};e.bearer&&e.bearer.length>0&&(c.authorization="Bearer ".concat(e.bearer));let d={message:e.message};e.sessionId&&(d.sessionId=e.sessionId);let u=await o(i,{method:"POST",headers:c,body:JSON.stringify(d),...e.signal?{signal:e.signal}:{}});if(!u.ok){let e=await u.text().catch(()=>"");throw Error("chat ".concat(u.status).concat(e?": "+e:""))}if((null!=(n=u.headers.get("content-type"))?n:"").includes("text/event-stream")&&u.body)return{kind:"streaming",frames:l(u.body)};let h=await u.json();return{kind:"buffered",response:null!=(a=h.response)?a:"",runId:null!=(r=h.runId)?r:""}}async function*l(e){let t=e.getReader(),s=new TextDecoder,n="";try{for(;;){let{value:e,done:a}=await t.read();if(a)break;let r=(n+=s.decode(e,{stream:!0})).indexOf("\n\n");for(;-1!==r;){let e=n.slice(0,r);n=n.slice(r+2);let t=c(e);t&&(yield t),r=n.indexOf("\n\n")}}if(n.trim().length>0){let e=c(n);e&&(yield e)}}finally{t.releaseLock()}}function c(e){let t="message",s=[];for(let n of e.split("\n")){let e=n.endsWith("\r")?n.slice(0,-1):n;if(e.startsWith(":"))continue;let a=e.indexOf(":");if(-1===a)continue;let r=e.slice(0,a),o=e.slice(a+1).replace(/^ /,"");"event"===r?t=o:"data"===r&&s.push(o)}return 0===s.length?null:{event:t,data:s.join("\n")}}function d(){var e,t;let s=(0,r.useSearchParams)(),l=null!=(e=s.get("workflow"))?e:"",c=null!=(t=s.get("token"))?t:"",[d,u]=(0,a.useState)({kind:"loading"}),[h,f]=(0,a.useState)([]),[m,x]=(0,a.useState)(""),[g,p]=(0,a.useState)(!1),[w]=(0,a.useState)(()=>"hosted-".concat(Date.now().toString(36),"-").concat(Math.random().toString(16).slice(2,6))),b=(0,a.useRef)(null);(0,a.useEffect)(()=>{let e=!1;return 0===l.length?void u({kind:"error",reason:"missing ?workflow= query param"}):(o(l).then(t=>{e||(t?u({kind:"ready",config:t}):u({kind:"not-found"}))}).catch(t=>{e||u({kind:"error",reason:t instanceof Error?t.message:String(t)})}),()=>{e=!0})},[l]),(0,a.useEffect)(()=>{b.current&&(b.current.scrollTop=b.current.scrollHeight)},[h]);let k=async()=>{if("ready"!==d.kind||g)return;let e=m.trim();if(0===e.length)return;let t={id:"u-".concat(Date.now()),role:"user",text:e},s="a-".concat(Date.now());f(e=>[...e,t,{id:s,role:"assistant",text:"",pending:!0}]),x(""),p(!0);try{let t=await i({chatPath:d.config.path,message:e,sessionId:"per-session"===d.config.sessionMode?w:void 0,bearer:c.length>0?c:void 0,streaming:d.config.streaming});if("buffered"===t.kind)f(e=>e.map(e=>e.id===s?{...e,text:t.response,pending:!1}:e));else for await(let e of t.frames)if("token"===e.event)f(t=>t.map(t=>t.id===s?{...t,text:t.text+e.data}:t));else if("done"===e.event){let t;try{t=JSON.parse(e.data).response}catch(e){}f(e=>e.map(e=>e.id===s?{...e,text:null!=t?t:e.text,pending:!1}:e))}else"error"===e.event&&f(t=>t.map(t=>t.id===s?{...t,text:t.text+"\n[error: ".concat(e.data,"]"),pending:!1,role:"system"}:t))}catch(t){let e=t instanceof Error?t.message:String(t);f(t=>t.map(t=>t.id===s?{...t,text:"[error: ".concat(e,"]"),pending:!1,role:"system"}:t))}finally{p(!1)}};return"loading"===d.kind?(0,n.jsx)("div",{className:"p-6 text-sm text-slate-500",children:"Loading workflow chat…"}):"not-found"===d.kind?(0,n.jsxs)("div",{className:"p-6 text-sm",children:[(0,n.jsx)("h1",{className:"text-lg font-medium mb-2",children:"Workflow not found"}),(0,n.jsxs)("p",{className:"text-slate-600",children:["The workflow ",(0,n.jsx)("code",{className:"px-1 bg-slate-100 rounded",children:l})," is not available for hosted chat. The workflow author needs to add",(0,n.jsxs)("code",{className:"px-1 bg-slate-100 rounded ml-1",children:["hostedUi: ","{"," enabled: true ","}"]}),"to the chat trigger node."]})]}):"error"===d.kind?(0,n.jsxs)("div",{className:"p-6 text-sm",children:[(0,n.jsx)("h1",{className:"text-lg font-medium mb-2 text-red-600",children:"Connection error"}),(0,n.jsx)("p",{className:"text-slate-600",children:d.reason})]}):(0,n.jsxs)("div",{className:"flex flex-col h-screen max-w-2xl mx-auto px-4",children:[(0,n.jsxs)("header",{className:"py-3 border-b",children:[(0,n.jsx)("h1",{className:"text-base font-medium",children:d.config.workflowName}),(0,n.jsxs)("p",{className:"text-xs text-slate-500",children:[d.config.streaming?"streaming":"buffered"," \xb7 ",d.config.sessionMode,d.config.hostedUi.requiresBearer?" \xb7 bearer required":""]})]}),d.config.hostedUi.requiresBearer&&c.length>0?(0,n.jsx)("div",{className:"text-xs px-3 py-2 bg-amber-50 border-b border-amber-200 text-amber-800",children:"⚠ The bearer token is embedded in this URL. Treat this link as a secret — sharing the URL gives anyone full access to the workflow."}):null,(0,n.jsxs)("div",{ref:b,className:"flex-1 overflow-y-auto py-4 space-y-3",children:[0===h.length?(0,n.jsx)("p",{className:"text-sm text-slate-400 italic",children:"Type a message to start the conversation."}):null,h.map(e=>(0,n.jsxs)("div",{className:"text-sm",children:[(0,n.jsxs)("div",{className:"font-medium text-xs uppercase text-slate-500",children:[e.role,e.pending?" \xb7 typing…":null]}),(0,n.jsx)("pre",{className:"whitespace-pre-wrap font-sans text-slate-800",children:e.text})]},e.id))]}),(0,n.jsxs)("div",{className:"py-3 border-t flex gap-2",children:[(0,n.jsx)("input",{className:"flex-1 px-3 py-2 border rounded text-sm",value:m,onChange:e=>x(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),k())},placeholder:"Message…",disabled:g}),(0,n.jsx)("button",{type:"button",onClick:()=>void k(),disabled:g||0===m.trim().length,className:"px-4 py-2 bg-slate-900 text-white rounded text-sm disabled:opacity-50",children:"Send"})]})]})}function u(){return(0,n.jsx)(a.Suspense,{fallback:(0,n.jsx)("div",{className:"p-6 text-sm text-slate-500",children:"Loading workflow chat…"}),children:(0,n.jsx)(d,{})})}},49987:(e,t,s)=>{"use strict";var n=s(95115);s.o(n,"useParams")&&s.d(t,{useParams:function(){return n.useParams}}),s.o(n,"usePathname")&&s.d(t,{usePathname:function(){return n.usePathname}}),s.o(n,"useRouter")&&s.d(t,{useRouter:function(){return n.useRouter}}),s.o(n,"useSearchParams")&&s.d(t,{useSearchParams:function(){return n.useSearchParams}})},66428:(e,t,s)=>{Promise.resolve().then(s.bind(s,18337))}},e=>{e.O(0,[9096,1380,7358],()=>e(e.s=66428)),_N_E=e.O()}]);