elanous 0.2.5 → 0.2.7

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 (479) hide show
  1. package/.env.example +10 -7
  2. package/README.md +9 -4
  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/1201-09613bce624467c0.js +1 -0
  7. package/apps/pwa/out/_next/static/chunks/1377-1efeffbbac0963ff.js +1 -0
  8. package/apps/pwa/out/_next/static/chunks/1470.98a6ab61ccb4131c.js +1 -0
  9. package/apps/pwa/out/_next/static/chunks/216-5acd01cbde4acda7.js +1 -0
  10. package/apps/pwa/out/_next/static/chunks/2330-c2f07246c8788af1.js +1 -0
  11. package/apps/pwa/out/_next/static/chunks/{5391-8793f88b03b30161.js → 2375-cb6debea56cce4fb.js} +1 -1
  12. package/apps/pwa/out/_next/static/chunks/{1751.50b96ea9c37b49b6.js → 2415.ed6428ff334c7ce2.js} +1 -1
  13. package/apps/pwa/out/_next/static/chunks/2929-617f1e66a55be184.js +1 -0
  14. package/apps/pwa/out/_next/static/chunks/2977-e38442e86289f1d3.js +1 -0
  15. package/apps/pwa/out/_next/static/chunks/2982-2a2df543be3d2e5a.js +25 -0
  16. package/apps/pwa/out/_next/static/chunks/{4daa2798-1363d725c79f3593.js → 2ea96958-e8c7e112de50b067.js} +1 -1
  17. package/apps/pwa/out/_next/static/chunks/3403.4bc97b4066945a94.js +5 -0
  18. package/apps/pwa/out/_next/static/chunks/3441-a1dd4acfeda14488.js +1 -0
  19. package/apps/pwa/out/_next/static/chunks/371-4ad6af55dad02ced.js +1 -0
  20. package/apps/pwa/out/_next/static/chunks/4114-3e63117452378807.js +1 -0
  21. package/apps/pwa/out/_next/static/chunks/{8617.465ca22a319c95b3.js → 4323.c5dfb6f503304775.js} +1 -1
  22. package/apps/pwa/out/_next/static/chunks/4836-2eba6079f31b88d4.js +1 -0
  23. package/apps/pwa/out/_next/static/chunks/{8918-482b30ce2a8ebf4c.js → 5080-1613752891fcadb4.js} +3 -3
  24. package/apps/pwa/out/_next/static/chunks/5609-012bb3557211f07e.js +1 -0
  25. package/apps/pwa/out/_next/static/chunks/{5348-bbf838e119661eee.js → 5791-bb82743fa6299562.js} +1 -1
  26. package/apps/pwa/out/_next/static/chunks/{9704-3221c102623c8d73.js → 6062-73e68343a9814f6a.js} +1 -1
  27. package/apps/pwa/out/_next/static/chunks/{4440-18bb160d95819f4e.js → 6090-85a3f05f954e5697.js} +1 -1
  28. package/apps/pwa/out/_next/static/chunks/6284-69db415193d5f8bd.js +1 -0
  29. package/apps/pwa/out/_next/static/chunks/6320-baac91d68843a9a6.js +1 -0
  30. package/apps/pwa/out/_next/static/chunks/6416-505ba707cacafbba.js +1 -0
  31. package/apps/pwa/out/_next/static/chunks/6725-68ab7cc0b1faf00d.js +1 -0
  32. package/apps/pwa/out/_next/static/chunks/6998-a654fe5c58271600.js +1 -0
  33. package/apps/pwa/out/_next/static/chunks/7647.2fcd30d894d5ee30.js +1 -0
  34. package/apps/pwa/out/_next/static/chunks/7673-2eda1507d38dadb8.js +1 -0
  35. package/apps/pwa/out/_next/static/chunks/7990-e12efba616f46e03.js +1 -0
  36. package/apps/pwa/out/_next/static/chunks/{f6f3850d-7f324c6566002113.js → 8046cadf-211ca3c0e00f2b72.js} +1 -1
  37. package/apps/pwa/out/_next/static/chunks/8067-f74bf14d67ad98f1.js +1 -0
  38. package/apps/pwa/out/_next/static/chunks/8142-744998d65d7bb17e.js +1 -0
  39. package/apps/pwa/out/_next/static/chunks/8519-f6b5d8a5833a7603.js +1 -0
  40. package/apps/pwa/out/_next/static/chunks/8619-4365e03a2862830f.js +1 -0
  41. package/apps/pwa/out/_next/static/chunks/8894-e92491a164192cc1.js +1 -0
  42. package/apps/pwa/out/_next/static/chunks/920-f7dceb78f1c585ef.js +1 -0
  43. package/apps/pwa/out/_next/static/chunks/9454-a3e0953307216c58.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-67051141115ce775.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-d5ebde04844689e6.js +1 -0
  50. package/apps/pwa/out/_next/static/chunks/app/autopilot/{page-f89e9a303515a033.js → page-10ed24f413ed66e9.js} +1 -1
  51. package/apps/pwa/out/_next/static/chunks/app/board/{page-4f403cd060442c95.js → page-211810b6c93ab66a.js} +1 -1
  52. package/apps/pwa/out/_next/static/chunks/app/botlab/{page-0ac5d053f0444d21.js → page-624f7a2f89b60c8f.js} +1 -1
  53. package/apps/pwa/out/_next/static/chunks/app/bots/page-5a5fb385a4df0ffe.js +1 -0
  54. package/apps/pwa/out/_next/static/chunks/app/chat/page-80497e93a878ddc5.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/app/consult/page-7457f52683562161.js +1 -0
  56. package/apps/pwa/out/_next/static/chunks/app/control/page-cee86394de407aa6.js +1 -0
  57. package/apps/pwa/out/_next/static/chunks/app/design-check/page-4ff8edab44196b8c.js +1 -0
  58. package/apps/pwa/out/_next/static/chunks/app/editor/page-92e4f44428d5e290.js +1 -0
  59. package/apps/pwa/out/_next/static/chunks/app/exec/page-b7dcf5d48a854b76.js +1 -0
  60. package/apps/pwa/out/_next/static/chunks/app/field/page-51480757e7d68b92.js +1 -0
  61. package/apps/pwa/out/_next/static/chunks/app/healthz/route-859cea1570b6227a.js +1 -0
  62. package/apps/pwa/out/_next/static/chunks/app/intake/page-2a05dfe80c8bdf16.js +1 -0
  63. package/apps/pwa/out/_next/static/chunks/app/layout-d9979633aa82f8e6.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/app/live/page-30533117beb53625.js +1 -0
  65. package/apps/pwa/out/_next/static/chunks/app/market/page-f7857826c2f97ad7.js +1 -0
  66. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-07267f1391b96aba.js +1 -0
  67. package/apps/pwa/out/_next/static/chunks/app/morning/{page-bccce0babceae30f.js → page-55d50e9b0006a91d.js} +1 -1
  68. package/apps/pwa/out/_next/static/chunks/app/not-found-9699b1786be6171d.js +1 -0
  69. package/apps/pwa/out/_next/static/chunks/app/observatory/page-43dd772aee8af75f.js +1 -0
  70. package/apps/pwa/out/_next/static/chunks/app/page-a7e37af7d0399cb8.js +1 -0
  71. package/apps/pwa/out/_next/static/chunks/app/reflection/page-973ab7af59c718b7.js +1 -0
  72. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-a9f8d3865b91e436.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/app/sessions/page-15e5a15db84c56aa.js +1 -0
  74. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-a2e572e4511f2a16.js +1 -0
  75. package/apps/pwa/out/_next/static/chunks/app/settings/page-dd107bf1c7d52a90.js +1 -0
  76. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-d42b99cdfb9f27c6.js +1 -0
  77. package/apps/pwa/out/_next/static/chunks/app/setup/layout-859cea1570b6227a.js +1 -0
  78. package/apps/pwa/out/_next/static/chunks/app/setup/page-2764ff40dad5a995.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/app/share/page-c5f1152db116ff96.js +1 -0
  80. package/apps/pwa/out/_next/static/chunks/app/showroom/page-f933bca81ea38a6f.js +1 -0
  81. package/apps/pwa/out/_next/static/chunks/app/tasks/page-c1c95739c0bff3b8.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/app/term/page-a7aaffcf771662d8.js +1 -0
  83. package/apps/pwa/out/_next/static/chunks/app/trace/page-71d18eec33b9c667.js +1 -0
  84. package/apps/pwa/out/_next/static/chunks/app/vault/page-56adbe1a1f1379bd.js +1 -0
  85. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-2c4e59079ee357ac.js +1 -0
  86. package/apps/pwa/out/_next/static/chunks/app/workflows/page-a81f113f3ef89d72.js +1 -0
  87. package/apps/pwa/out/_next/static/chunks/app/workspace/page-5d422f38c052967e.js +1 -0
  88. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-fc27b00e20733146.js +1 -0
  89. package/apps/pwa/out/_next/static/chunks/framework-ea806bb57f2b8923.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/main-8d2302399c2c8f87.js +1 -0
  91. package/apps/pwa/out/_next/static/chunks/main-app-6870f30ea99f8346.js +1 -0
  92. package/apps/pwa/out/_next/static/chunks/pages/_app-b10928c60f0b8488.js +1 -0
  93. package/apps/pwa/out/_next/static/chunks/pages/_error-689039227d443fab.js +1 -0
  94. package/apps/pwa/out/_next/static/chunks/{webpack-2bf59c720fe9542c.js → webpack-e5bea36f183b25e6.js} +1 -1
  95. package/apps/pwa/out/_next/static/css/f537bdb19c69306a.css +1 -0
  96. package/apps/pwa/out/_next/static/keajW7DDyghEs1y8oJe6T/_buildManifest.js +1 -0
  97. package/apps/pwa/out/approvals/index.html +1 -1
  98. package/apps/pwa/out/approvals/index.txt +22 -22
  99. package/apps/pwa/out/autopilot/index.html +1 -1
  100. package/apps/pwa/out/autopilot/index.txt +22 -22
  101. package/apps/pwa/out/board/index.html +1 -1
  102. package/apps/pwa/out/board/index.txt +22 -22
  103. package/apps/pwa/out/botlab/index.html +1 -1
  104. package/apps/pwa/out/botlab/index.txt +21 -21
  105. package/apps/pwa/out/bots/index.html +1 -1
  106. package/apps/pwa/out/bots/index.txt +21 -21
  107. package/apps/pwa/out/chat/index.html +1 -1
  108. package/apps/pwa/out/chat/index.txt +21 -21
  109. package/apps/pwa/out/consult/index.html +1 -0
  110. package/apps/pwa/out/consult/index.txt +32 -0
  111. package/apps/pwa/out/control/index.html +1 -1
  112. package/apps/pwa/out/control/index.txt +22 -22
  113. package/apps/pwa/out/design-check/index.html +1 -1
  114. package/apps/pwa/out/design-check/index.txt +22 -22
  115. package/apps/pwa/out/editor/index.html +1 -1
  116. package/apps/pwa/out/editor/index.txt +22 -22
  117. package/apps/pwa/out/exec/index.html +1 -0
  118. package/apps/pwa/out/exec/index.txt +32 -0
  119. package/apps/pwa/out/field/index.html +1 -0
  120. package/apps/pwa/out/field/index.txt +32 -0
  121. package/apps/pwa/out/healthz +1 -1
  122. package/apps/pwa/out/icons/elanous-16.png +0 -0
  123. package/apps/pwa/out/icons/elanous-180.png +0 -0
  124. package/apps/pwa/out/icons/elanous-192.png +0 -0
  125. package/apps/pwa/out/icons/elanous-32.png +0 -0
  126. package/apps/pwa/out/icons/elanous-512.png +0 -0
  127. package/apps/pwa/out/index.html +1 -1
  128. package/apps/pwa/out/index.txt +21 -21
  129. package/apps/pwa/out/intake/index.html +1 -1
  130. package/apps/pwa/out/intake/index.txt +22 -22
  131. package/apps/pwa/out/live/index.html +1 -1
  132. package/apps/pwa/out/live/index.txt +22 -22
  133. package/apps/pwa/out/market/index.html +1 -1
  134. package/apps/pwa/out/market/index.txt +21 -21
  135. package/apps/pwa/out/missions/placeholder/index.html +1 -1
  136. package/apps/pwa/out/missions/placeholder/index.txt +21 -21
  137. package/apps/pwa/out/morning/index.html +1 -1
  138. package/apps/pwa/out/morning/index.txt +22 -22
  139. package/apps/pwa/out/observatory/index.html +1 -1
  140. package/apps/pwa/out/observatory/index.txt +22 -22
  141. package/apps/pwa/out/reflection/index.html +1 -1
  142. package/apps/pwa/out/reflection/index.txt +22 -22
  143. package/apps/pwa/out/scheduler/index.html +1 -1
  144. package/apps/pwa/out/scheduler/index.txt +22 -22
  145. package/apps/pwa/out/sessions/index.html +1 -1
  146. package/apps/pwa/out/sessions/index.txt +21 -21
  147. package/apps/pwa/out/settings/devices/index.html +1 -1
  148. package/apps/pwa/out/settings/devices/index.txt +22 -22
  149. package/apps/pwa/out/settings/index.html +1 -1
  150. package/apps/pwa/out/settings/index.txt +22 -22
  151. package/apps/pwa/out/setup/done/index.html +1 -1
  152. package/apps/pwa/out/setup/done/index.txt +22 -22
  153. package/apps/pwa/out/setup/index.html +1 -1
  154. package/apps/pwa/out/setup/index.txt +22 -22
  155. package/apps/pwa/out/share/index.html +1 -1
  156. package/apps/pwa/out/share/index.txt +22 -22
  157. package/apps/pwa/out/showroom/index.html +1 -1
  158. package/apps/pwa/out/showroom/index.txt +21 -21
  159. package/apps/pwa/out/tasks/index.html +1 -1
  160. package/apps/pwa/out/tasks/index.txt +22 -22
  161. package/apps/pwa/out/term/index.html +1 -1
  162. package/apps/pwa/out/term/index.txt +22 -22
  163. package/apps/pwa/out/trace/index.html +1 -1
  164. package/apps/pwa/out/trace/index.txt +22 -22
  165. package/apps/pwa/out/vault/index.html +1 -1
  166. package/apps/pwa/out/vault/index.txt +22 -22
  167. package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
  168. package/apps/pwa/out/workflows/chat-ui/index.txt +22 -22
  169. package/apps/pwa/out/workflows/index.html +1 -1
  170. package/apps/pwa/out/workflows/index.txt +22 -22
  171. package/apps/pwa/out/workspace/index.html +1 -1
  172. package/apps/pwa/out/workspace/index.txt +22 -22
  173. package/apps/pwa/out/worktrees/index.html +1 -1
  174. package/apps/pwa/out/worktrees/index.txt +22 -22
  175. package/bin/elanous.cjs +107 -0
  176. package/graphs/field/field-feed.yaml +24 -0
  177. package/graphs/field/recipes.yaml +12 -0
  178. package/graphs/landing/landing-heal.yaml +3 -1
  179. package/graphs/landing/recipes.yaml +3 -0
  180. package/graphs/release/recipes.yaml +13 -0
  181. package/graphs/release/release-loop.yaml +13 -4
  182. package/package.json +5 -5
  183. package/plugins/card-followup/README.md +42 -0
  184. package/plugins/card-followup/examples/card-sample.json +7 -0
  185. package/plugins/card-followup/graphs/card-followup.yaml +18 -0
  186. package/plugins/card-followup/graphs/recipes.yaml +16 -0
  187. package/plugins/card-followup/graphs/run-step.ts +276 -0
  188. package/plugins/card-followup/graphs/sales-strategy.ts +173 -0
  189. package/plugins/card-followup/plugin.json +25 -0
  190. package/plugins/doc-draft/README.md +13 -0
  191. package/plugins/doc-draft/examples/brief-sample.json +8 -0
  192. package/plugins/doc-draft/graphs/doc-draft.yaml +14 -0
  193. package/plugins/doc-draft/graphs/recipes.yaml +9 -0
  194. package/plugins/doc-draft/graphs/run-step.ts +113 -0
  195. package/plugins/doc-draft/plugin.json +24 -0
  196. package/plugins/geo-check/README.md +15 -0
  197. package/plugins/geo-check/examples/brand-sample.json +8 -0
  198. package/plugins/geo-check/graphs/geo-check.yaml +20 -0
  199. package/plugins/geo-check/graphs/recipes.yaml +18 -0
  200. package/plugins/geo-check/graphs/run-step.ts +198 -0
  201. package/plugins/geo-check/plugin.json +24 -0
  202. package/plugins/job-coach/.codex-plugin/plugin.json +1 -1
  203. package/plugins/job-coach/README.md +31 -1
  204. package/plugins/job-coach/graphs/run-step.ts +2 -2
  205. package/plugins/job-coach/plugin.json +1 -1
  206. package/plugins/job-coach/plugin.ts +1 -1
  207. package/scripts/affinity/endcard.sh +3 -2
  208. package/scripts/affinity/reframe.sh +3 -1
  209. package/scripts/ci-public-export-leak-gate.ts +48 -0
  210. package/scripts/codex-quota-alert.ts +122 -258
  211. package/scripts/coord-tracks.json +4 -4
  212. package/scripts/daemon-port-baseline.txt +1 -2
  213. package/scripts/field-feed/deliver-node.ts +52 -0
  214. package/scripts/field-feed/feed-node.ts +67 -0
  215. package/scripts/field-feed/lib.ts +162 -0
  216. package/scripts/field-feed/reel-node.ts +24 -0
  217. package/scripts/field-feed/start.ts +62 -0
  218. package/scripts/fixtures/vflow-sample.ndjson +6 -0
  219. package/scripts/install.sh +92 -13
  220. package/scripts/landing-heal/clean-checkout.ts +114 -0
  221. package/scripts/landing-heal/run-mission.ts +38 -3
  222. package/scripts/lib/android-test-device.ts +32 -0
  223. package/scripts/lib/pwa-scenarios/scenarios.ts +2 -1
  224. package/scripts/public-export.ts +8 -4
  225. package/scripts/release-loop/baseline-from-logs.ts +92 -0
  226. package/scripts/release-loop/checklist-gate-node.ts +35 -0
  227. package/scripts/release-loop/env-known-failures.ts +31 -0
  228. package/scripts/release-loop/gate-diff.ts +29 -0
  229. package/scripts/release-loop/gate-node.ts +124 -29
  230. package/scripts/release-loop/known-issues-node.ts +159 -0
  231. package/scripts/release-loop/npm-publish-node.ts +118 -0
  232. package/scripts/release-loop/ops-upgrade-node.ts +87 -0
  233. package/scripts/release-loop/release-readiness.ts +58 -0
  234. package/scripts/release-loop/shard-plan.ts +47 -0
  235. package/scripts/release-loop/unattended-release.ts +93 -0
  236. package/scripts/ux/measure-first-text.ts +102 -0
  237. package/scripts/ux/record-page.ts +4 -1
  238. package/scripts/vflow-collect.ts +20 -7
  239. package/scripts/vflow-search.ts +73 -0
  240. package/scripts/video-free-line-test-walker.ts +36 -0
  241. package/scripts/video-pipeline.ts +2 -2
  242. package/skills/explainer-video/SKILL.md +24 -3
  243. package/skills/explainer-video/engine/brand/elanous-mark-on-dark.svg +1 -1
  244. package/skills/explainer-video/engine/build.mjs +2 -2
  245. package/skills/explainer-video/engine/reel.mjs +235 -0
  246. package/skills/explainer-video/engine/reel.sh +9 -0
  247. package/skills/explainer-video/engine/vo.ts +58 -16
  248. package/skills/explainer-video/examples/elanous-0.2.5/script.json +1 -1
  249. package/skills/grill-me/SKILL.md +1 -1
  250. package/skills/omni-digest/docs/diagrams/noncode-terminal-promotion-path-2026-08-13.mmd +1 -1
  251. package/src/a2a/server.ts +2 -0
  252. package/src/acp/elanous-aware-peers.ts +30 -0
  253. package/src/acp/server.ts +91 -15
  254. package/src/agent/monad-agent-turn.ts +25 -6
  255. package/src/agent/shared-app-tools.ts +5 -3
  256. package/src/agent-substrate/review-intent.ts +6 -2
  257. package/src/agent-substrate/shard-boundary-intent.ts +70 -0
  258. package/src/auth/github-app-token.ts +4 -1
  259. package/src/autopilot/mission-origin.ts +20 -4
  260. package/src/autopilot/mission-phase-track.ts +11 -1
  261. package/src/autopilot/track-agent-shadow.ts +151 -0
  262. package/src/autopilot/track-agent.ts +26 -6
  263. package/src/autopilot/track-courier.ts +2 -2
  264. package/src/boot/acp-server-help.ts +16 -0
  265. package/src/boot/daemon-prompt-turn.ts +31 -10
  266. package/src/boot/daemon-tools/index.ts +7 -1
  267. package/src/budget/codex-credit-pace.ts +84 -0
  268. package/src/budget/codex-credit-plan.ts +154 -0
  269. package/src/budget/codex-reset-credit-state.ts +2 -0
  270. package/src/chat/chat-cli.ts +4 -1
  271. package/src/chat/short-question.ts +40 -0
  272. package/src/cli/agent-cli.ts +24 -15
  273. package/src/cli/ask-bare.ts +42 -0
  274. package/src/cli/cli-user-error.ts +25 -0
  275. package/src/cli/codex-credit-plan-view.ts +25 -0
  276. package/src/cli/dependence-gauge.ts +237 -0
  277. package/src/cli/doctor-cli.ts +5 -0
  278. package/src/cli/doctor-modes.ts +48 -0
  279. package/src/cli/intake-cli.ts +12 -2
  280. package/src/cli/intake-source-cli.ts +58 -0
  281. package/src/cli/machine-cli.ts +23 -0
  282. package/src/cli/msg-cli.ts +137 -0
  283. package/src/cli/nexus-ios-bind.ts +25 -8
  284. package/src/cli/phone-link.ts +117 -0
  285. package/src/cli/plugin-cli.ts +52 -0
  286. package/src/cli/pr-cli.ts +36 -0
  287. package/src/cli/private-ledger-commands.ts +31 -0
  288. package/src/cli/provider-cli.ts +5 -0
  289. package/src/cli/release-cli.ts +56 -12
  290. package/src/cli/release-run-if-ready.ts +48 -0
  291. package/src/cli/setup-cli.ts +27 -6
  292. package/src/cli/setup-recommend.ts +8 -0
  293. package/src/cli/usage-cli.ts +11 -1
  294. package/src/codex/setup.ts +27 -8
  295. package/src/dashboard/index.ts +1 -1
  296. package/src/discord.ts +56 -6
  297. package/src/domains/core-tools.ts +37 -14
  298. package/src/domains/outbound-alert.ts +55 -16
  299. package/src/exec-requests/planner.ts +140 -0
  300. package/src/exec-requests/runner.ts +338 -0
  301. package/src/exec-requests/store.ts +76 -0
  302. package/src/field/field-media.ts +250 -0
  303. package/src/field/field-reel.ts +196 -0
  304. package/src/grok/credential.ts +7 -5
  305. package/src/harness/aside-run-status.ts +33 -0
  306. package/src/harness/browser-verify.ts +48 -17
  307. package/src/harness/harness-cli-command.ts +25 -3
  308. package/src/harness/image-load-state.ts +21 -0
  309. package/src/harness/process-garbage.ts +45 -0
  310. package/src/index.ts +104 -38
  311. package/src/instance/leader.ts +13 -1
  312. package/src/intake-plane/collect-github.ts +5 -3
  313. package/src/intake-plane/collect-telegram-saved.ts +15 -3
  314. package/src/intake-plane/discord-seat-work.ts +56 -0
  315. package/src/intake-plane/intake-sources.ts +202 -0
  316. package/src/intake-plane/items.ts +28 -12
  317. package/src/intake-plane/seat-doc-route.ts +207 -0
  318. package/src/intake-plane/submit-intake-work.ts +9 -1
  319. package/src/intake-plane/telegram-seat-work.ts +72 -0
  320. package/src/llm/model-defaults.ts +24 -1
  321. package/src/llm.ts +5 -4
  322. package/src/machines/machine-ledger.ts +127 -0
  323. package/src/market/pack-internal-refs.ts +28 -0
  324. package/src/market/publish.ts +31 -4
  325. package/src/maturity/feature-maturity.ts +65 -0
  326. package/src/model-tier/turn-tier.ts +24 -0
  327. package/src/msg/msg-store.ts +149 -0
  328. package/src/native-tool-catalog.ts +2 -1
  329. package/src/nexus/api/chat-fast-path-config.ts +28 -0
  330. package/src/nexus/api/consult-requests.ts +117 -0
  331. package/src/nexus/api/discord-trigger-bot.ts +3 -0
  332. package/src/nexus/api/exec-requests.ts +51 -0
  333. package/src/nexus/api/field-uploads.ts +180 -0
  334. package/src/nexus/api/graph-approvals-feed.ts +140 -0
  335. package/src/nexus/api/graph-approvals.ts +120 -4
  336. package/src/nexus/api/harness-api.ts +219 -5
  337. package/src/nexus/api/http-server.ts +68 -5
  338. package/src/nexus/api/seat-requests.ts +254 -0
  339. package/src/nexus/api/trace-run-scan.ts +37 -0
  340. package/src/nexus/api/trace.ts +19 -3
  341. package/src/nexus/index.ts +3 -0
  342. package/src/nexus/setup-status.ts +4 -5
  343. package/src/notify/llm-budget-alert.ts +125 -0
  344. package/src/oauth/codex-account-rotation.ts +26 -4
  345. package/src/oauth/codex-account-store.ts +20 -2
  346. package/src/oauth/codex-browser-login.ts +173 -0
  347. package/src/oauth/codex.ts +4 -1
  348. package/src/oauth/fallback-chain.ts +5 -5
  349. package/src/oauth/store.ts +42 -5
  350. package/src/onboarding/continue-here.ts +29 -0
  351. package/src/onboarding/entry-hints.ts +8 -0
  352. package/src/onboarding/full-screen-io.ts +35 -3
  353. package/src/onboarding/help/skills.md +1 -1
  354. package/src/onboarding/non-interactive.ts +1 -0
  355. package/src/onboarding/subscription-hint.ts +27 -0
  356. package/src/onboarding/web-first.ts +83 -0
  357. package/src/onboarding.ts +230 -23
  358. package/src/plugins/maker/node-install.ts +92 -0
  359. package/src/plugins/maker/node-maker.ts +139 -0
  360. package/src/plugins/maker/plugin-maker.ts +220 -0
  361. package/src/policy/llm-policy.ts +268 -0
  362. package/src/prompt-library/session-guidance.ts +7 -1
  363. package/src/prompt-library/universal-preamble.ts +2 -2
  364. package/src/relay/channel.ts +184 -0
  365. package/src/relay/mux.ts +182 -0
  366. package/src/relay/relay-cli.ts +20 -0
  367. package/src/relay/relay-server.ts +220 -0
  368. package/src/relay/test-vectors.json +29 -0
  369. package/src/release-loop/checklist.ts +36 -9
  370. package/src/seat-address/seat-address.ts +34 -0
  371. package/src/self-dev/decompose.ts +1 -0
  372. package/src/self-dev/dev-pipeline.ts +6 -3
  373. package/src/self-dev/run-record-mirror.ts +44 -0
  374. package/src/self-dev/run-store.ts +12 -3
  375. package/src/self-implement/harness-policy-gates.ts +4 -1
  376. package/src/self-implement/report-origin.ts +12 -1
  377. package/src/self-implement/run-ledger-compact.ts +1 -1
  378. package/src/session/chat.ts +17 -5
  379. package/src/session/index.ts +23 -10
  380. package/src/skills/shared-agent-skill-roots.ts +25 -0
  381. package/src/steward/failure-streak.ts +78 -0
  382. package/src/steward/steward-cards.ts +24 -0
  383. package/src/steward/triage-budget.ts +127 -0
  384. package/src/steward/triage-plan.ts +75 -0
  385. package/src/steward/triage.ts +244 -42
  386. package/src/task-cards/card-store.ts +1 -1
  387. package/src/task-orchestrator/surfaces/pod-bun-cache.ts +18 -0
  388. package/src/task-orchestrator/surfaces/pod-command-job.ts +12 -3
  389. package/src/task-orchestrator/surfaces/pod-ledger-collect.ts +11 -5
  390. package/src/task-orchestrator/surfaces/pod-ledger-events.ts +68 -0
  391. package/src/task-orchestrator/surfaces/self-implement-pod.ts +78 -4
  392. package/src/telegram.ts +145 -2
  393. package/src/tool-runtime/elanous-skills-list-runtime.ts +3 -3
  394. package/src/tool-runtime/self-cognition-runtimes.ts +160 -2
  395. package/src/user-config.ts +84 -4
  396. package/src/version/packed-revision.json +1 -1
  397. package/src/video-pipeline/recipes/character.ts +42 -5
  398. package/src/video-pipeline/recipes/explainer.ts +213 -0
  399. package/src/video-pipeline/recipes/ffmpeg.ts +1 -1
  400. package/src/video-pipeline/recipes/free-line.ts +16 -3
  401. package/src/video-pipeline/recipes/remote.ts +7 -1
  402. package/src/video-pipeline/vflow-reference.ts +109 -0
  403. package/src/video-pipeline/walk-line.ts +3 -2
  404. package/apps/pwa/out/_next/static/chunks/06ef2eba-d1b99ac6d2ea663c.js +0 -1
  405. package/apps/pwa/out/_next/static/chunks/1413-7179a49332db5a80.js +0 -1
  406. package/apps/pwa/out/_next/static/chunks/150-25c277137a9638ab.js +0 -1
  407. package/apps/pwa/out/_next/static/chunks/1640-bc99ec23bbe29d12.js +0 -1
  408. package/apps/pwa/out/_next/static/chunks/2300-de059d0ab2a16630.js +0 -1
  409. package/apps/pwa/out/_next/static/chunks/2684-05b0a81e75298c16.js +0 -1
  410. package/apps/pwa/out/_next/static/chunks/3026-2ed7e317d9b02102.js +0 -25
  411. package/apps/pwa/out/_next/static/chunks/3611-77496ada38cd6358.js +0 -1
  412. package/apps/pwa/out/_next/static/chunks/3717-68957c4dc9ceec90.js +0 -1
  413. package/apps/pwa/out/_next/static/chunks/3929-46ba9af6f9d895cc.js +0 -1
  414. package/apps/pwa/out/_next/static/chunks/4015-62c5a3744698a8da.js +0 -1
  415. package/apps/pwa/out/_next/static/chunks/4217-3c4317a7905f9eeb.js +0 -1
  416. package/apps/pwa/out/_next/static/chunks/4240-3230f230fae2d7d5.js +0 -1
  417. package/apps/pwa/out/_next/static/chunks/4271-e53e075ebd48593b.js +0 -1
  418. package/apps/pwa/out/_next/static/chunks/4377.3b125fef79576dfd.js +0 -5
  419. package/apps/pwa/out/_next/static/chunks/4853-35fdbe6bdbcdc0fc.js +0 -1
  420. package/apps/pwa/out/_next/static/chunks/5007-6a3b30e23ff68a6e.js +0 -1
  421. package/apps/pwa/out/_next/static/chunks/5244-12b424c42070f5ff.js +0 -1
  422. package/apps/pwa/out/_next/static/chunks/5611-df00af3e4e4a61bb.js +0 -1
  423. package/apps/pwa/out/_next/static/chunks/5890-dca2321773be829a.js +0 -1
  424. package/apps/pwa/out/_next/static/chunks/6123-37c9dc57ddaa7ab0.js +0 -1
  425. package/apps/pwa/out/_next/static/chunks/6588-b7975304a302ab91.js +0 -1
  426. package/apps/pwa/out/_next/static/chunks/6604-c03961962b6273b6.js +0 -1
  427. package/apps/pwa/out/_next/static/chunks/7109-cf8c87e968e83a65.js +0 -1
  428. package/apps/pwa/out/_next/static/chunks/7178-30f77877525a2efb.js +0 -1
  429. package/apps/pwa/out/_next/static/chunks/7262-871563fc9663730b.js +0 -1
  430. package/apps/pwa/out/_next/static/chunks/7294-f0eeebb92aa93459.js +0 -1
  431. package/apps/pwa/out/_next/static/chunks/7429-881af44deed6958f.js +0 -1
  432. package/apps/pwa/out/_next/static/chunks/7527.943753b6ed829f09.js +0 -1
  433. package/apps/pwa/out/_next/static/chunks/764-a01e858525a190c0.js +0 -1
  434. package/apps/pwa/out/_next/static/chunks/7868-e35d5f7985ecd3f1.js +0 -1
  435. package/apps/pwa/out/_next/static/chunks/8320-51484af7b01fdfa5.js +0 -1
  436. package/apps/pwa/out/_next/static/chunks/9131-52f5fad51cceca04.js +0 -1
  437. package/apps/pwa/out/_next/static/chunks/9238.2cd5f47f4bf7a2c3.js +0 -1
  438. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-70c404c7bb6d7f0f.js +0 -1
  439. package/apps/pwa/out/_next/static/chunks/app/approvals/page-3ffd80166b1050aa.js +0 -1
  440. package/apps/pwa/out/_next/static/chunks/app/bots/page-4bcc63e272ae8205.js +0 -1
  441. package/apps/pwa/out/_next/static/chunks/app/chat/page-880734bd07d62882.js +0 -1
  442. package/apps/pwa/out/_next/static/chunks/app/control/page-72bd384898d88955.js +0 -1
  443. package/apps/pwa/out/_next/static/chunks/app/design-check/page-1018bbc9586ecae5.js +0 -1
  444. package/apps/pwa/out/_next/static/chunks/app/editor/page-de86f8c38076dd7b.js +0 -1
  445. package/apps/pwa/out/_next/static/chunks/app/healthz/route-70c404c7bb6d7f0f.js +0 -1
  446. package/apps/pwa/out/_next/static/chunks/app/intake/page-cd6447196d8bafe6.js +0 -1
  447. package/apps/pwa/out/_next/static/chunks/app/layout-e733630c47fa102b.js +0 -1
  448. package/apps/pwa/out/_next/static/chunks/app/live/page-d1c1a8357b161875.js +0 -1
  449. package/apps/pwa/out/_next/static/chunks/app/market/page-60c514128e81d787.js +0 -1
  450. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-8b637b7e325e13c1.js +0 -1
  451. package/apps/pwa/out/_next/static/chunks/app/not-found-63301d11dbe73836.js +0 -1
  452. package/apps/pwa/out/_next/static/chunks/app/observatory/page-a8cf0dc472060db2.js +0 -1
  453. package/apps/pwa/out/_next/static/chunks/app/page-02fba54881ccfa49.js +0 -1
  454. package/apps/pwa/out/_next/static/chunks/app/reflection/page-d5e8e90f0038f8de.js +0 -1
  455. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-b1ef6824f494466a.js +0 -1
  456. package/apps/pwa/out/_next/static/chunks/app/sessions/page-d589bb0f233b1009.js +0 -1
  457. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-c9bbaebef4cda059.js +0 -1
  458. package/apps/pwa/out/_next/static/chunks/app/settings/page-3639ce7916b92fed.js +0 -1
  459. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-7450ae7478955653.js +0 -1
  460. package/apps/pwa/out/_next/static/chunks/app/setup/layout-70c404c7bb6d7f0f.js +0 -1
  461. package/apps/pwa/out/_next/static/chunks/app/setup/page-b41ca4abfd618452.js +0 -1
  462. package/apps/pwa/out/_next/static/chunks/app/share/page-b333dd79ebee3fa9.js +0 -1
  463. package/apps/pwa/out/_next/static/chunks/app/showroom/page-8be1227492793655.js +0 -1
  464. package/apps/pwa/out/_next/static/chunks/app/tasks/page-6e03e9371b552e0d.js +0 -1
  465. package/apps/pwa/out/_next/static/chunks/app/term/page-911411e9fca18d03.js +0 -1
  466. package/apps/pwa/out/_next/static/chunks/app/trace/page-792170e649b37088.js +0 -1
  467. package/apps/pwa/out/_next/static/chunks/app/vault/page-c40463466937bc91.js +0 -1
  468. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-509c798b80384536.js +0 -1
  469. package/apps/pwa/out/_next/static/chunks/app/workflows/page-1cac2aa21d77c417.js +0 -1
  470. package/apps/pwa/out/_next/static/chunks/app/workspace/page-9626799d9b4a2cd1.js +0 -1
  471. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-84cd419494e16b0f.js +0 -1
  472. package/apps/pwa/out/_next/static/chunks/framework-361487d2da603917.js +0 -1
  473. package/apps/pwa/out/_next/static/chunks/main-app-607f5beb94cb2e07.js +0 -1
  474. package/apps/pwa/out/_next/static/chunks/main-d0222d219e29dddf.js +0 -1
  475. package/apps/pwa/out/_next/static/chunks/pages/_app-a26980a31126decc.js +0 -1
  476. package/apps/pwa/out/_next/static/chunks/pages/_error-edb2b37decf23e4d.js +0 -1
  477. package/apps/pwa/out/_next/static/css/eaa74e8bb2f62269.css +0 -1
  478. package/apps/pwa/out/_next/static/ktMqfrBbf8BMGac0jqLrb/_buildManifest.js +0 -1
  479. /package/apps/pwa/out/_next/static/{ktMqfrBbf8BMGac0jqLrb → keajW7DDyghEs1y8oJe6T}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7178],{2103:(e,t,n)=>{n.d(t,{In:()=>d,OG:()=>s});var l=n(77947);let i="elanous.pwa.role",r="elanous:pwa-role";function o(){try{let e=window.localStorage.getItem(i);if("general"===e||"contributor"===e)return e}catch(e){}return"owner"}function s(e){try{window.localStorage.setItem(i,e)}catch(e){}"function"==typeof window.dispatchEvent&&window.dispatchEvent(new Event(r))}function a(e){if("function"!=typeof window.addEventListener)return()=>{};window.addEventListener(r,e);let t=t=>{(t.key===i||null===t.key)&&e()};return window.addEventListener("storage",t),()=>{window.removeEventListener(r,e),window.removeEventListener("storage",t)}}function d(){return(0,l.useSyncExternalStore)(a,o,()=>"owner")}},8666:(e,t,n)=>{n.d(t,{AF:()=>l});let l={all:["nexus"],health:()=>[...l.all,"health"],snapshot:()=>[...l.all,"snapshot"],tabs:e=>e?[...l.all,"tabs",{kind:e}]:[...l.all,"tabs"],tab:e=>[...l.all,"tab",e],templates:()=>[...l.all,"templates"],template:e=>[...l.all,"template",e],config:()=>[...l.all,"config"],switches:()=>[...l.all,"switches"],switch:e=>[...l.all,"switch",e],secrets:()=>[...l.all,"secrets"],bindingChannels:()=>[...l.all,"bindings","channels"],bindings:e=>[...l.all,"bindings",e],binding:(e,t)=>[...l.all,"binding",e,t],logsTail:(e,t)=>t?[...l.all,"logs",e,{lines:t}]:[...l.all,"logs",e],workflows:()=>[...l.all,"workflows"],workflow:e=>[...l.all,"workflow",e],workflowRun:e=>[...l.all,"workflow-run",e],workflowRuns:()=>[...l.all,"workflow-runs"],pendingApprovals:()=>[...l.all,"workflow-pending-approvals"],platforms:()=>[...l.all,"platforms"],providers:()=>[...l.all,"providers"],worktrees:()=>[...l.all,"worktrees"],designCheck:()=>[...l.all,"design-check"],designPreviews:()=>[...l.all,"design-previews"],designPreview:e=>[...l.all,"design-preview",e],registryCatalog:()=>[...l.all,"registry-catalog"],resolvedView:()=>[...l.all,"resolved-view"]};l.snapshot(),l.tabs(),l.health(),l.snapshot(),l.config(),l.switches()},26253:(e,t,n)=>{n.d(t,{vm:()=>S,f4:()=>P,OE:()=>x,Ue:()=>M,Ye:()=>C});var l=n(58002),i=n(8917),r=n(55396),o=n(52978),s=n(32531),a=n(28817),d=n(99888),c=n(69495),h=n(69636),u=n(11284),b=n(85627),f=n(23321),w=n(83528),v=n(69427),g=n(21625),k=n(36501),p=n(46729),m=n(19875),y=n(95711),A=n(13581),E=n(73816),L=n(33499);function C(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"owner",l=e=>{var t;return null!=(t=e.visibility)?t:"public"},i=e.filter(e=>(0,L.EX)(n,e.href));return{main:i.filter(e=>"public"===l(e)),labs:t.showLabs?i.filter(e=>"labs"===l(e)):[],hidden:t.showHidden?i.filter(e=>"hidden"===l(e)):[]}}let P="elanous.nav.showLabs",S="elanous.nav.showHidden",x=[{href:"/share",category:"system-share-target",reason:"운영체제가 공유 동작으로 호출하는 Share Target 진입점."},{href:"/missions",category:"dynamic-route-parent",reason:"`[id]`를 받는 동적 주소이며 부모 경로 자체는 없다."},{href:"/setup",category:"provider-onboarding",reason:"LLM provider 온보딩 진입점."},{href:"/setup/done",category:"provider-onboarding-complete",reason:"LLM provider 온보딩 완료 화면."},{href:"/settings/devices",category:"settings-subpage",reason:"Settings 아래 Device fleet 하위 화면."},{href:"/workflows",category:"workflow-legacy-redirect",reason:"기존 워크플로 링크를 /editor?mode=workflow 로 전달한다."},{href:"/workflows/chat-ui",category:"workflow-subflow",reason:"Workflows에서 여는 hosted chat 하위 흐름."},{href:"/",category:"root-welcome",reason:"첫 방문자를 위한 루트 welcome 화면."},{href:"/404",category:"error-page",reason:"오류 페이지."},{href:"/morning",category:"unwired-screen",reason:"부르는 백엔드가 아직 없는 미배선 화면."},{href:"/botlab",category:"diagnostic-readonly",reason:"봇 화면 \xab벽\xbb을 한 자리에서 보는 읽기 진단 화면(#15390 \xb7 봇 운영자용)."}],M=[{href:"/term",label:"Terminal",hint:"터미널 + agent dock",icon:l.A,kind:"term"},{href:"/chat",label:"Chat",hint:"채팅 (스트리밍 \xb7 multimodal \xb7 mic)",icon:i.A,kind:"chat"},{href:"/intake",label:"Intake",hint:"넣으면 흡수 \xb7 작업 \xb7 그래프로 (URL \xb7 미션 \xb7 메모)",icon:r.A,kind:null},{href:"/approvals",label:"Approvals",hint:"아이디어 PR 요약 \xb7 승인하고 머지",icon:o.A,kind:null},{href:"/showroom",label:"Showroom",hint:"multi-agent 동시 비교 (broadcast \xb7 CV-3)",icon:s.A,kind:null,visibility:"labs"},{href:"/live",label:"Live",hint:"런이 판단\xb7기획하는 신호 (진짜 수 \xb7 쇼 모드)",icon:a.A,kind:null},{href:"/trace",label:"Trace",hint:"렌즈를 좁혀 런을 따라간다 (플릿 → 런 → 판단)",icon:d.A,kind:null},{href:"/bots",label:"Bots",hint:"봇 신원 + 공통 명령 카탈로그 (읽기 전용)",icon:c.A,kind:null,visibility:"hidden"},{href:"/observatory",label:"Observatory",hint:"subject 관측 (talk \xb7 screen \xb7 agent)",icon:h.A,kind:null,visibility:"hidden"},{href:"/autopilot",label:"Missions",hint:"미션 \xb7 작업 (미션 계보\xb7골 던지기\xb7작업 보드\xb7자율행동)",icon:u.A,kind:null,activeAlso:["/tasks","/missions"]},{href:"/tasks",label:"Tasks",hint:"작업 보드 (Missions 안 ② 작업)",icon:b.A,kind:"tasks",visibility:"hidden"},{href:"/board",label:"보드",hint:"태스크 카드 흐름 (스튜어드 → 실행 → 착지 → 릴리스)",icon:b.A,kind:null,visibility:"labs"},{href:"/design-check",label:"Design",hint:"디자인 시스템 고르기 \xb7 시안 \xb7 URL 로 내 시스템",icon:f.A,kind:null},{href:"/vault",label:"Vault",hint:"Obsidian 노트 (브라우저\xb7에디터\xb7검색\xb7그래프)",icon:w.A,kind:null},{href:"/market",label:"마켓",hint:"플러그인 찾아보기 \xb7 상세 \xb7 설치됨",icon:v.A,kind:null},{href:"/scheduler",label:"Schedules",hint:"예약 잡 종합 현황 (크론\xb7데몬\xb7launchd)",icon:g.A,kind:null},{href:"/sessions",label:"Sessions",hint:"세션 카드 데크 (스와이프 결정)",icon:k.A,kind:null,visibility:"hidden"},{href:"/reflection",label:"Reflection",hint:"오늘의 회고 (5분 갱신)",icon:p.A,kind:null,visibility:"hidden"},{href:"/editor",label:"편집기",hint:"워크플로 \xb7 실행 그래프 작성\xb7편집",icon:m.A,kind:null,visibility:"labs",activeAlso:["/workflows"]},{href:"/worktrees",label:"Worktrees",hint:"격리 작업 트리 목록\xb7상태",icon:m.A,kind:null,visibility:"hidden"},{href:"/control",label:"Control",hint:"데몬 제어 패널",icon:y.A,kind:"control",visibility:"hidden"},{href:"/settings",label:"Settings",hint:"환경 + provider + theme",icon:A.A,kind:"settings"},{href:"/workspace",label:"Workspace",hint:"여러 탭 동시 보기",icon:E.A,kind:null,visibility:"labs"}]},33499:(e,t,n)=>{n.d(t,{EX:()=>r,dY:()=>i});let l={"/":"stable","/404":"stable","/setup":"stable","/setup/done":"stable","/chat":"stable","/term":"stable","/live":"stable","/market":"stable","/sessions":"stable","/settings":"beta","/editor":"beta","/intake":"beta","/trace":"beta","/board":"beta","/autopilot":"beta","/missions/[id]":"beta","/tasks":"beta","/workspace":"beta","/reflection":"beta","/vault":"beta","/observatory":"beta","/showroom":"beta","/workflows":"beta","/approvals":"tool","/worktrees":"tool","/design-check":"tool","/control":"tool","/scheduler":"ops","/dashboard":"ops","/bots":"ops","/botlab":"ops","/morning":"broken","/settings/devices":"broken","/workflows/chat-ui":"broken","/share":"system"};function i(e){var t;let n=(null==(t=e.split(/[?#]/,1)[0])?void 0:t.replace(/\/+$/,""))||"/";return Object.prototype.hasOwnProperty.call(l,n)?l[n]:n.startsWith("/missions/")&&-1===n.slice(10).indexOf("/")?l["/missions/[id]"]:void 0}function r(e,t){var n;let l=i(t);return!!l&&("owner"===e||"system"!==l&&((null==(n=t.split(/[?#]/,1)[0])?void 0:n.replace(/\/+$/,""))==="/settings"||"stable"===l||"contributor"===e&&("beta"===l||"tool"===l)))}},49413:(e,t,n)=>{n.d(t,{cn:()=>r});var l=n(24477),i=n(80313);function r(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,i.QP)((0,l.$)(t))}},62866:(e,t,n)=>{n.d(t,{M1:()=>d,Qj:()=>c,tI:()=>a});var l=n(58443),i=n(77947),r=n(93741),o=n(66328);let s=(0,i.createContext)(null);function a(e){let{client:t,queryClient:n,defaultStaleTimeMs:a,children:d}=e,c=(0,i.useMemo)(()=>null!=n?n:new r.E({defaultOptions:{queries:{staleTime:null!=a?a:2e3,refetchOnWindowFocus:!1}}}),[n,a]);return(0,l.jsx)(s.Provider,{value:t,children:(0,l.jsx)(o.Ht,{client:c,children:d})})}function d(){let e=(0,i.useContext)(s);if(!e)throw Error("useNexusClient must be used within <NexusProvider>");return e}function c(){return(0,i.useContext)(s)}},67714:(e,t,n)=>{n.d(t,{_r:()=>r});var l=n(77947),i=n(62866);function r(){let e=(0,i.Qj)(),[t,n]=(0,l.useState)({data:void 0,isError:!1,isPending:!0});return(0,l.useEffect)(()=>{if(!e)return void n({data:void 0,isError:!1,isPending:!0});let t=!0,l=()=>{e.getHealth().then(e=>{t&&n({data:e,isError:!1,isPending:!1})}).catch(()=>{t&&n(e=>({...e,isError:!0,isPending:!1}))})};l();let i=setInterval(l,6e4);return()=>{t=!1,clearInterval(i)}},[e]),{...t,isLoading:t.isPending&&null!==e}}n(8666)},81163:(e,t,n)=>{n.d(t,{C:()=>r,P:()=>i});let l="셋업 모드 — 먼저 LLM 을 정하세요";function i(e,t){return(null==e?void 0:e.setupMode)!==!0||"/"!==t?null:"/setup"}function r(e,t){if((null==e?void 0:e.setupMode)!==!0||"/setup"===t||t.startsWith("/setup/"))return null;let n=e.setupMissing;return n&&n.length>0?"".concat(l," (").concat(n.join(", "),")"):l}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7262],{5131:(e,t,n)=>{n.d(t,{Qh:()=>y,lW:()=>v,o:()=>j});var r=n(58443),s=n(77947),a=n(34015),o=n(861),l=n(58703),i=n(52247),c=n(66420),d=n(96284),u=n(18941),m=n(71290),f=n(73632),p=n(65233),h=n(48683),x=n(23783),g=n(79935);let b={cli:"cli",pwa:"pwa",tg:"tg",dc:"dc"};async function v(e){if(!e||"undefined"==typeof navigator||!navigator.clipboard)return!1;try{return await navigator.clipboard.writeText(e),!0}catch(e){return!1}}function j(e){return e?e.length<=8?e:"".concat(e.slice(0,8),"…"):"—"}function y(){var e,t,n,j,y;let w=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},k=(0,a.Q)(),N=(0,l.t)(),[I,S]=(0,s.useState)(!1),[C,D]=(0,s.useState)(!1),[E,L]=(0,s.useState)(!1),M=(0,s.useRef)(null),T=(0,s.useRef)(null),A=(0,s.useRef)(null),R=null!=(e=w.sessionId)?e:k.sessionId,U=N.find(e=>e.id===R);(0,s.useEffect)(()=>()=>{M.current&&clearTimeout(M.current),T.current&&clearTimeout(T.current)},[]),(0,s.useEffect)(()=>{if(!C)return;let e=e=>{A.current&&!A.current.contains(e.target)&&D(!1)},t=e=>{"Escape"===e.key&&D(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[C]);let P=async()=>{if(!R)return;let e=await v(R);(0,x.cY)("webterm.session-pill.copy",{sessionId:R,ok:e,source:"dropdown"}),e&&(L(!0),T.current&&clearTimeout(T.current),T.current=setTimeout(()=>L(!1),1200))},O=I?"한 번 더 누르면 새 대화가 시작됩니다 — 지금 대화는 그대로 저장되고 세션 목록에 남습니다":"새 대화 시작 (두 번 클릭) — 빈 세션에서 새로 시작합니다",F=null!=(t=null==U?void 0:U.lastMsgPreview)?t:null;return(0,r.jsxs)("div",{ref:A,className:"relative flex items-center",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1 rounded-md border border-border bg-card px-2 py-1 text-[11px]",children:[(0,r.jsx)("span",{className:"text-muted-foreground font-mono",children:"sess:"}),(0,r.jsx)(g.S,{sessionId:R,source:"pill"}),(null==U?void 0:U.origin)&&(0,r.jsx)("span",{className:"ml-1 rounded bg-muted px-1 py-0.5 font-mono text-[9px] uppercase text-muted-foreground",children:null!=(n=b[U.origin])?n:U.origin}),F&&(0,r.jsx)("span",{className:"ml-1 max-w-[180px] truncate border-l border-border pl-2 text-muted-foreground",title:F,children:F}),(0,r.jsxs)("span",{className:"ml-1 flex items-center gap-1 border-l border-border pl-1.5",children:[(0,r.jsx)("button",{type:"button",onClick:()=>{if(!I){S(!0),(0,x.cY)("webterm.session-pill.fork-armed",{sessionId:R}),M.current&&clearTimeout(M.current),M.current=setTimeout(()=>{S(!1),(0,x.cY)("webterm.session-pill.fork-disarmed-timeout",{sessionId:R})},4e3);return}M.current&&(clearTimeout(M.current),M.current=null),S(!1);let e=(0,o.Zr)();(0,x.cY)("webterm.session-pill.fork-confirmed",{previous:R,next:e}),k.setSessionId(e)},className:I?"rounded p-0.5 bg-destructive text-destructive-foreground hover:bg-destructive/90":"rounded p-0.5 hover:bg-secondary",title:O,"aria-label":O,children:(0,r.jsx)(i.A,{className:"h-3 w-3"})}),I?(0,r.jsx)("span",{className:"text-[10px] text-destructive","aria-live":"polite",children:"fork?"}):null,(0,r.jsx)("button",{type:"button",onClick:()=>D(e=>!e),"aria-label":"session menu",className:"rounded p-0.5 hover:bg-secondary",title:"세션 메뉴",children:(0,r.jsx)(c.A,{className:"h-3 w-3"})})]})]}),C&&(0,r.jsxs)("div",{role:"menu",className:"absolute left-0 top-7 z-50 w-72 rounded-md border border-border bg-popover py-1 text-xs shadow-md",children:[(0,r.jsxs)("button",{type:"button",role:"menuitem",onClick:()=>{let e=(0,o.Zr)();(0,x.cY)("webterm.session-pill.new-chat",{previous:R,next:e,source:"menu"}),k.setSessionId(e),D(!1)},className:"flex w-full items-start gap-2 px-3 py-1.5 text-left hover:bg-secondary",children:[(0,r.jsx)(d.A,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground"}),(0,r.jsxs)("span",{children:["새 대화 시작",(0,r.jsx)("span",{className:"block text-[10px] text-muted-foreground",children:"빈 세션에서 새로 시작합니다 \xb7 지금 대화는 세션 목록에 남습니다"})]})]}),w.onAttachRequest&&(0,r.jsxs)("button",{type:"button",role:"menuitem",onClick:()=>{w.onAttachRequest(),D(!1)},className:"flex w-full items-center gap-2 px-3 py-1.5 hover:bg-secondary",children:[(0,r.jsx)(u.A,{className:"h-3.5 w-3.5 text-muted-foreground"}),"다른 세션 attach"]}),(0,r.jsxs)("div",{className:"px-3 py-1.5 text-muted-foreground",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(m.A,{className:"h-3 w-3 shrink-0"}),(0,r.jsx)("span",{className:"text-[10px] uppercase tracking-wide",children:"세션 ID"})]}),(0,r.jsxs)("div",{className:"mt-1 flex items-center gap-1.5",children:[(0,r.jsx)("span",{className:"flex-1 select-all break-all font-mono text-[11px] text-foreground",title:R||"",children:R||"(미설정)"}),(0,r.jsx)("button",{type:"button",onClick:()=>void P(),disabled:!R,className:"shrink-0 rounded p-1 hover:bg-secondary disabled:cursor-not-allowed disabled:opacity-50",title:E?"복사됨":"세션 ID 전체 복사","aria-label":"세션 ID 복사","data-elanous-action":"session-id-copy-dropdown",children:E?(0,r.jsx)(f.A,{className:"h-3 w-3 text-emerald-500"}):(0,r.jsx)(p.A,{className:"h-3 w-3"})})]}),(0,r.jsxs)("div",{className:"mt-1 text-[10px]",children:[null!=(j=null==U?void 0:U.msgCount)?j:0," 메시지",(null==U?void 0:U.origin)&&" \xb7 ".concat(null!=(y=b[U.origin])?y:U.origin)]})]}),w.onForgetRequest&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"my-1 border-t border-border"}),(0,r.jsxs)("button",{type:"button",role:"menuitem",onClick:()=>{w.onForgetRequest(),D(!1)},className:"flex w-full items-center gap-2 px-3 py-1.5 text-rose-500 hover:bg-rose-500/10",children:[(0,r.jsx)(h.A,{className:"h-3.5 w-3.5"}),"이 세션 잊기"]})]})]})]})}},8476:(e,t,n)=>{n.d(t,{KW:()=>a,jU:()=>r,nj:()=>s});class r{async list(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.client.fetchJson("/v1/sessions/store".concat(e?"?includeEmpty=1":""))}async transcript(e){return this.client.fetchJson("/v1/sessions/store/".concat(encodeURIComponent(e)))}async fork(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.client.fetchJson("/v1/sessions/store/".concat(encodeURIComponent(e),"/fork"),{method:"POST",...void 0!==t.beforeUser?{headers:{"content-type":"application/json"},body:JSON.stringify({beforeUser:t.beforeUser})}:{}})}async delete(e){return this.client.fetchJson("/v1/sessions/store/".concat(encodeURIComponent(e)),{method:"DELETE"})}constructor(e){this.client=e}}function s(e,t){let n=t.trim().toLowerCase();if(!n)return{kind:"none"};let r=e.filter(e=>e.id.toLowerCase().startsWith(n));return 1===r.length?{kind:"one",id:r[0].id}:0===r.length?{kind:"none"}:{kind:"ambiguous",count:r.length}}function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),n=Date.parse(e);if(!Number.isFinite(n))return"";let r=Math.max(0,Math.floor((t-n)/1e3));return r<30?"방금":r<3600?"".concat(Math.floor(r/60),"분 전"):r<86400?"".concat(Math.floor(r/3600),"시간 전"):"".concat(Math.floor(r/86400),"일 전")}},19002:(e,t,n)=>{n.d(t,{V:()=>T});var r=n(58443),s=n(77947),a=n(50580),o=n(22444),l=n(19989),i=n(853),c=n(64648),d=n(89704),u=n(19990),m=n(12906),f=n(19418),p=n(49413),h=n(89234),x=n(32353),g=n(54770),b=n(77306),v=n(26882),j=n(34015),y=n(23783),w=n(75355);function k(e){let{open:t,image:n,filename:a="photo.jpg",onClose:o}=e,{config:l}=(0,j.Q)(),[i,c]=(0,s.useState)("idle"),[m,f]=(0,s.useState)(""),[p,h]=(0,s.useState)("minimal"),[x,g]=(0,s.useState)("minimal"),k=(0,w.hn)(),[N,I]=(0,s.useState)(k.defaultUseLlmVision),[S,C]=(0,s.useState)(k.defaultPreferHandwriting),[D,E]=(0,s.useState)(""),[L,M]=(0,s.useState)(""),[T,A]=(0,s.useState)("");async function R(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:N,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:S;if(!n)return;if(!l.baseUrl){M("Daemon URL 미설정 — Settings 에서 입력"),c("error");return}c("ocr"),M("");let s=new FormData;s.append("image",n,a),s.append("polishMode",e);let o=[];t&&o.push("context-aware","diagrams"),r&&o.push("handwriting"),o.length>0&&s.append("strengths",o.join(",")),(0,y.cY)("notes.ocr.start",{polishMode:e,vision:t,handwriting:r,filename:a,size:n.size});try{let t=await fetch("".concat(l.baseUrl,"/v1/notes/from-image"),{method:"POST",body:s,...l.token?{headers:{authorization:"Bearer ".concat(l.token)}}:{}});if(!t.ok){let e=await t.text().catch(()=>"");M("OCR 실패 (HTTP ".concat(t.status,") ").concat(e.slice(0,160))),c("error"),(0,y.cY)("notes.ocr.error",{status:t.status,detail:e.slice(0,200)});return}let n=await t.json(),r=n.usedLlmPolish?n.polishMode:"minimal";if(0===n.markdown.trim().length){M(n.usedLlmPolish?"이미지에서 텍스트를 추출하지 못했습니다. 다른 사진으로 다시 시도해주세요.":"이미지에서 텍스트를 추출하지 못했습니다. 다른 사진을 사용하거나 polishMode를 'enrich'로 바꾸어 LLM polish를 시도해주세요."),h(n.polishMode),g(r),E(n.provider),c("error"),(0,y.cY)("notes.ocr.empty",{provider:n.provider,requested:e,applied:r,usedLlmPolish:n.usedLlmPolish});return}f(n.markdown),A(n.markdown),E(n.provider),h(n.polishMode),g(r),c("review"),(0,y.cY)("notes.ocr.ok",{provider:n.provider,requested:e,applied:r,usedLlmPolish:n.usedLlmPolish,chars:n.markdown.length})}catch(e){M("OCR 실패: ".concat(String(e instanceof Error?e.message:e))),c("error"),(0,y.cY)("notes.ocr.exception",{reason:String(e)})}}async function U(){if(!l.baseUrl){M("Daemon URL 미설정"),c("error");return}let e=m!==T;c("saving"),(0,y.cY)("notes.save.start",{provider:D,selectedPolishMode:p,appliedPolishMode:x,edited:e,chars:m.length}),e&&P("edit");try{let e=await fetch("".concat(l.baseUrl,"/v1/notes/save"),{method:"POST",headers:{"content-type":"application/json",...l.token?{authorization:"Bearer ".concat(l.token)}:{}},body:JSON.stringify({markdown:m,sourceProvider:D,polishMode:x})});if(!e.ok){let t=await e.text().catch(()=>"");M("저장 실패 (HTTP ".concat(e.status,") ").concat(t.slice(0,160))),c("error"),(0,y.cY)("notes.save.error",{status:e.status,detail:t.slice(0,200)});return}let t=await e.json();c("saved"),d.oR.success("\uD83D\uDCDD 저장됨 — ".concat(t.vaultLabel," \xb7 ").concat(t.knowledgeId)),(0,y.cY)("notes.save.ok",{knowledgeId:t.knowledgeId,vaultLabel:t.vaultLabel}),setTimeout(o,400)}catch(e){M("저장 실패: ".concat(String(e instanceof Error?e.message:e))),c("error"),(0,y.cY)("notes.save.exception",{reason:String(e)})}}function P(e){l.baseUrl&&fetch("".concat(l.baseUrl,"/v1/metrics/notes-event"),{method:"POST",headers:{"content-type":"application/json",...l.token?{authorization:"Bearer ".concat(l.token)}:{}},body:JSON.stringify({type:e,polishMode:p})}).catch(()=>{})}function O(){let e=m!==T;(0,y.cY)("notes.cancel",{phase:i,edited:e,chars:m.length}),P("cancel"),e&&"review"===i&&P("discard"),o()}return(0,s.useEffect)(()=>{if(!t){c("idle"),f(""),A(""),E(""),M(""),h("minimal"),g("minimal");let e=(0,w.hn)();I(e.defaultUseLlmVision),C(e.defaultPreferHandwriting)}},[t]),(0,s.useEffect)(()=>{t&&n&&"idle"===i&&R(p)},[t,n]),(0,r.jsx)(v.lG,{open:t,onOpenChange:e=>{e||O()},children:(0,r.jsxs)(v.Cf,{className:"sm:max-w-lg",children:[(0,r.jsxs)(v.c7,{children:[(0,r.jsx)(v.L3,{children:"사진 → 마크다운 노트"}),(0,r.jsx)(v.rr,{children:"OCR 로 추출한 본문을 검토 + 편집 후 저장합니다."})]}),"ocr"===i&&(0,r.jsxs)("div",{className:"flex items-center justify-center gap-2 py-12 text-muted-foreground",children:[(0,r.jsx)(b.A,{className:"h-4 w-4 animate-spin"}),(0,r.jsx)("span",{children:"OCR 인식 중…"})]}),"saving"===i&&(0,r.jsxs)("div",{className:"flex items-center justify-center gap-2 py-12 text-muted-foreground",children:[(0,r.jsx)(b.A,{className:"h-4 w-4 animate-spin"}),(0,r.jsx)("span",{children:"저장 중…"})]}),"saved"===i&&(0,r.jsx)("div",{className:"flex items-center justify-center py-12 text-emerald-600",children:"✓ 저장 완료"}),"error"===i&&(0,r.jsxs)("div",{className:"space-y-3 py-4",children:[(0,r.jsx)("div",{className:"rounded-md bg-destructive/10 p-3 text-sm text-destructive",children:L}),(0,r.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,r.jsx)(u.$,{variant:"ghost",onClick:O,children:"닫기"}),n&&(0,r.jsx)(u.$,{onClick:()=>R(p),children:"다시 시도"})]})]}),"review"===i&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[(0,r.jsxs)("span",{children:["provider: ",(0,r.jsx)("code",{children:D||"?"})]}),(0,r.jsx)("span",{children:"\xb7"}),(0,r.jsxs)("label",{className:"flex items-center gap-1",children:["polish:",(0,r.jsxs)("select",{value:p,onChange:e=>{let t=e.target.value;h(t),t!==x&&R(t)},className:"rounded border border-input bg-background px-1 py-0.5","aria-label":"polish mode",children:[(0,r.jsx)("option",{value:"minimal",children:"minimal (raw)"}),(0,r.jsx)("option",{value:"enrich",children:"enrich (polished)"})]})]}),(0,r.jsx)("span",{children:"\xb7"}),(0,r.jsxs)("label",{className:"flex items-center gap-1",title:"LLM 비전 우선시 — 더 정확하지만 느림 + 비쌈",children:[(0,r.jsx)("input",{type:"checkbox",checked:N,onChange:e=>{let t=e.target.checked;I(t),R(p,t,S)},"aria-label":"prefer LLM vision"}),"LLM 비전"]}),(0,r.jsx)("span",{children:"\xb7"}),(0,r.jsxs)("label",{className:"flex items-center gap-1",title:"손글씨 우선시 — handwriting strength 추가 (registry 점수 boost)",children:[(0,r.jsx)("input",{type:"checkbox",checked:S,onChange:e=>{let t=e.target.checked;C(t),R(p,N,t)},"aria-label":"prefer handwriting"}),"손글씨"]}),(0,r.jsx)("span",{children:"\xb7"}),(0,r.jsxs)("span",{"data-testid":"notes-applied-polish",children:["applied: ",(0,r.jsx)("code",{children:x}),"enrich"===p&&"minimal"===x&&(0,r.jsx)("span",{className:"ml-1 text-amber-600",children:"(LLM polish 비활성)"})]}),(0,r.jsx)(u.$,{type:"button",variant:"ghost",size:"sm",className:"ml-auto text-xs",onClick:()=>R(p),"aria-label":"re-run OCR",children:"Re-OCR"})]}),(0,r.jsx)("textarea",{value:m,onChange:e=>f(e.target.value),rows:12,placeholder:"markdown 본문…","aria-label":"markdown editor",className:"w-full resize-y rounded-md border border-input bg-background px-3 py-2 font-mono text-xs shadow-xs focus:outline-none focus:ring-2 focus:ring-ring"})]}),(0,r.jsxs)(v.Es,{children:[(0,r.jsx)(u.$,{variant:"outline",onClick:O,children:"취소"}),(0,r.jsx)(u.$,{onClick:()=>void U(),disabled:0===m.trim().length,children:"저장"})]})]})]})})}function N(){let e=(0,s.useRef)(null),[t,n]=(0,s.useState)(!1),[a,o]=(0,s.useState)(null),[l,i]=(0,s.useState)("photo.jpg");return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button",onClick:()=>{var t;return null==(t=e.current)?void 0:t.click()},"aria-label":"save photo as note",title:"사진 → 마크다운 노트로 저장",className:"rounded p-1.5 text-muted-foreground hover:bg-accent hover:text-foreground",children:(0,r.jsx)(g.A,{className:"h-3.5 w-3.5"})}),(0,r.jsx)("input",{ref:e,type:"file",accept:"image/*",capture:"environment",className:"hidden",onChange:function(e){var t;let r=null==(t=e.target.files)?void 0:t[0];e.target.value="",r&&(o(r),i(r.name),n(!0))}}),(0,r.jsx)(k,{open:t,image:a,filename:l,onClose:function(){n(!1),o(null)}})]})}var I=n(52171),S=n(76588);function C(){var e,t,n;let{client:a}=(0,j.Q)(),[o,l]=(0,s.useState)([]),[i,c]=(0,s.useState)(""),[u,m]=(0,s.useState)(!1),f=(0,s.useCallback)(async()=>{try{var e,t;let n=await a.fetchJson("/v1/setup/llm-providers");l(null!=(e=n.providers)?e:[]),c(null!=(t=n.activeProvider)?t:"")}catch(e){}},[a]);(0,s.useEffect)(()=>{f()},[f]);let p=o.filter(e=>"apiKey"===e.flow&&e.hasSavedKey||"auto"===e.flow),h=(0,s.useCallback)(async()=>{if(u||0===p.length)return;let e=p.findIndex(e=>e.provider===i),t=p[(e+1)%p.length];if(t.provider!==i||1!==p.length){m(!0);try{let e=await a.fetchJson("/v1/setup/llm-provider",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({provider:t.provider})});if(e&&e.error)d.oR.error("provider 전환 실패: ".concat(e.error));else{var n,r;c(null!=(r=null==e||null==(n=e.active)?void 0:n.provider)?r:t.provider)}}catch(e){d.oR.error("provider 전환 실패: ".concat(e instanceof Error?e.message:e))}finally{m(!1)}}},[u,p,i,a]);if(0===p.length)return null;let x=null!=(n=null!=(t=null==(e=o.find(e=>e.provider===i))?void 0:e.label)?t:i)?n:p[0].label;return(0,r.jsx)("button",{type:"button",onClick:()=>void h(),disabled:u||p.length<2,className:"rounded-full border border-border bg-card px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:text-foreground disabled:opacity-60",title:p.length<2?"LLM provider: ".concat(x):"클릭하면 다음 provider 로 순환 (현재 ".concat(x,")"),children:x})}var D=n(64385);let E=[],L="elanous.pwa.chat.promptHistory.v1";function M(e,t){let n=e.lastIndexOf(t);if(n<0)return null;let r=e.slice(n+1);if(/[\s]/.test(r))return null;if(n>0){let t=e[n-1];if(!/\s/.test(t))return null}return r}function T(e){let{onSubmit:t,disabled:n,attachments:g=E,onAttached:b,onRemoveAttachment:v,tabId:y,voice:w,onListFiles:k,onListSkills:T,prefill:A}=e,{config:R}=(0,j.Q)(),U=(0,S.o1)("chatInput",y),[P,O]=(0,s.useState)(()=>{let e=(0,S.N2)(U);return"string"==typeof e?e:""}),[F,_]=(0,s.useState)(()=>(function(){try{let e=window.localStorage.getItem(L);if(!e)return[];let t=JSON.parse(e);if(!Array.isArray(t))return[];return t.filter(e=>"string"==typeof e)}catch(e){return[]}})()),[Y,z]=(0,s.useState)(-1),H=(0,s.useRef)(""),q=!P.startsWith("/")||/\s/.test(P)?null:P.slice(1),J=null!==q?function(e){let t=e.trim().toLowerCase();return 0===t.length?m.bK:m.bK.filter(e=>e.name.toLowerCase().startsWith(t))}(q):[],[$,B]=(0,s.useState)(0);(0,s.useEffect)(()=>{B(0)},[q]);let K=k?M(P,"@"):null,[V,W]=(0,s.useState)([]),[G,Q]=(0,s.useState)(""),[Z,X]=(0,s.useState)(0);(0,s.useEffect)(()=>{if(null===K||!k)return;X(0);let e=setTimeout(()=>{k(K).then(e=>{W(e.entries),Q(e.cwd)}).catch(()=>{})},200);return()=>clearTimeout(e)},[K,k]),(0,s.useEffect)(()=>{null===K&&(W([]),Q(""),X(0))},[K]);let[ee,et]=(0,s.useState)(!1),[en,er]=(0,s.useState)(0),es=(0,s.useRef)(""),ea=ee?0===P.trim().length?F:F.filter(e=>e.toLowerCase().includes(P.trim().toLowerCase())):[],eo=()=>{O(es.current),et(!1),er(0),es.current=""},el=T?M(P,"$"):null,[ei,ec]=(0,s.useState)([]),[ed,eu]=(0,s.useState)(0),[em,ef]=(0,s.useState)(D.kv);(0,s.useEffect)(()=>(ef((0,D.Vm)()),(0,D.$L)(ef)),[]);let{prediction:ep,predict:eh,clear:ex}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{baseUrl:t,token:n,enabled:r=!0,debounceMs:a=300}=e,[o,l]=(0,s.useState)(null),[i,c]=(0,s.useState)(!1),[d,u]=(0,s.useState)(null),m=(0,s.useRef)(null),f=(0,s.useRef)(null),p=(0,s.useCallback)(()=>{m.current&&(clearTimeout(m.current),m.current=null),f.current&&(f.current.abort(),f.current=null)},[]),h=(0,s.useCallback)(()=>{p(),l(null),u(null)},[p]),x=(0,s.useCallback)(function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(p(),!r||!t||0===e.trim().length&&0===s.length)return void l(null);m.current=setTimeout(async()=>{m.current=null;let r=new AbortController;f.current=r,c(!0);try{let a="".concat(t,"/v1/llm/route/predict"),o={"Content-Type":"application/json"};n&&n.length>0&&(o.Authorization="Bearer ".concat(n));let i=await fetch(a,{method:"POST",headers:o,body:JSON.stringify({text:e,attachments:s.map(e=>({kind:e}))}),signal:r.signal});if(r.signal.aborted)return;if(!i.ok)return void u("http-".concat(i.status));let c=await i.json();l(c),u(null)}catch(e){if(r.signal.aborted)return;u(e instanceof Error?e.message:String(e))}finally{f.current===r&&(f.current=null),c(!1)}},a)},[t,n,r,a,p]);return(0,s.useEffect)(()=>()=>p(),[p]),{prediction:o,inflight:i,error:d,predict:x,clear:h}}({baseUrl:R.baseUrl,token:R.token,enabled:em.autoRouting});(0,s.useEffect)(()=>{if(!em.autoRouting)return void ex();eh(P,g.map(e=>{var t;return(null==(t=e.mediaType)?void 0:t.startsWith("image/"))?"image":"document"}))},[P,em.autoRouting,g,eh,ex]),(0,s.useEffect)(()=>{if(null===el||!T)return;eu(0);let e=setTimeout(()=>{T(el).then(e=>{ec(e.entries)}).catch(()=>{})},200);return()=>clearTimeout(e)},[el,T]),(0,s.useEffect)(()=>{null===el&&(ec([]),eu(0))},[el]),(0,s.useEffect)(()=>{let e=(0,f.ht)();e&&(O(e),d.oR.success("\uD83D\uDCE5 공유 받음 — 검토 후 보내세요"))},[]),(0,s.useEffect)(()=>{A&&(O(A.text),(0,f.ht)())},[A]);let eg=(0,s.useRef)(null);(0,s.useEffect)(()=>(eg.current&&clearTimeout(eg.current),eg.current=setTimeout(()=>{0===P.length?(0,S.yd)(U):(0,S.Os)(U,P)},300),()=>{eg.current&&clearTimeout(eg.current)}),[P,U]);let eb=()=>ev(P),ev=e=>{let r=e.trim();!n&&(r||0!==g.length)&&(r.length>0&&(_(e=>{if(e[0]===r)return e;let t=[r,...e].slice(0,50);try{window.localStorage.setItem(L,JSON.stringify(t))}catch(e){}return t}),z(-1),H.current=""),t(r),O(""),(0,S.yd)(U))},ej=e=>{let t=P.lastIndexOf("@");if(t<0)return;let n=P.slice(0,t),r=e.isDir?"".concat(e.relPath,"/"):e.relPath;O("".concat(n,"@").concat(r).concat(e.isDir?"":" "))},ey=e=>{let t=P.lastIndexOf("$");if(t<0)return;let n=P.slice(0,t);O("".concat(n,"/run-skill ").concat(e.name," "))},ew=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:J[Math.min(Math.max($,0),J.length-1)];e&&O(":".concat(e.name," "))};(0,s.useEffect)(()=>{!(Y<0)&&F[Y]&&P!==F[Y]&&(z(-1),H.current="")},[P]);let ek=(0,m.FM)(P);return(0,r.jsxs)("div",{className:"border-t border-border bg-background p-3",children:[ee&&(0,r.jsxs)("div",{className:"mb-2 overflow-hidden rounded-md border border-border bg-card shadow-md",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-3 py-1.5 text-[10px] uppercase tracking-wide text-muted-foreground",children:[(0,r.jsx)("span",{children:"\uD83D\uDD0E reverse-i-search"}),(0,r.jsxs)("span",{className:"text-xs font-semibold",children:[ea.length," match",1===ea.length?"":"es"]})]}),0===ea.length?(0,r.jsx)("div",{className:"px-3 py-2 text-xs text-muted-foreground",children:0===P.length?"history 가 비어 있음":"일치 없음 — '".concat(P,"'")}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("ul",{className:"divide-y divide-border",children:ea.slice(0,8).map((e,t)=>{let n=t===en;return(0,r.jsx)("li",{role:"button",tabIndex:-1,onMouseDown:n=>{n.preventDefault(),er(t),requestAnimationFrame(()=>{et(!1),es.current="",O(e)})},className:(0,p.cn)("flex cursor-pointer items-center gap-2 px-3 py-1.5 text-sm",n?"bg-accent/15 font-semibold":"hover:bg-accent/8"),children:(0,r.jsx)("span",{className:"line-clamp-2",children:e})},"".concat(e,"-").concat(t))})}),ea.length>8&&(0,r.jsxs)("div",{className:"px-3 py-1 text-[10px] text-muted-foreground",children:["+ ",ea.length-8," more (refine query)"]})]})]}),null!==K&&V.length>0&&(0,r.jsxs)("div",{className:"mb-2 overflow-hidden rounded-md border border-border bg-card shadow-md",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-3 py-1.5 text-[10px] uppercase tracking-wide text-muted-foreground",children:[(0,r.jsxs)("span",{title:G,children:["\uD83D\uDCC1 ",G.length>48?"…"+G.slice(-45):G]}),(0,r.jsx)("span",{className:"text-xs font-semibold",children:V.length})]}),(0,r.jsx)("ul",{className:"divide-y divide-border",children:V.slice(0,12).map((e,t)=>{let n=t===Z;return(0,r.jsxs)("li",{role:"button",tabIndex:-1,onMouseDown:n=>{n.preventDefault(),X(t),requestAnimationFrame(()=>ej(e))},className:(0,p.cn)("flex cursor-pointer items-center gap-2 px-3 py-1.5 text-sm",n?"bg-accent/15":"hover:bg-accent/8"),children:[(0,r.jsx)("span",{className:"text-xs",children:e.isDir?"\uD83D\uDCC2":"\uD83D\uDCC4"}),(0,r.jsxs)("span",{className:(0,p.cn)("font-mono",n?"font-semibold":"font-normal"),children:[e.name,e.isDir?"/":""]}),e.isDir&&(0,r.jsx)("span",{className:"ml-auto text-[10px] uppercase text-muted-foreground",children:"dir"})]},e.relPath)})}),V.length>12&&(0,r.jsxs)("div",{className:"px-3 py-1 text-[10px] text-muted-foreground",children:["+ ",V.length-12," more (refine query)"]})]}),null!==el&&ei.length>0&&(0,r.jsxs)("div",{className:"mb-2 overflow-hidden rounded-md border border-border bg-card shadow-md",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-3 py-1.5 text-[10px] uppercase tracking-wide text-muted-foreground",children:[(0,r.jsx)("span",{children:"✨ skills"}),(0,r.jsx)("span",{className:"text-xs font-semibold",children:ei.length})]}),(0,r.jsx)("ul",{className:"divide-y divide-border",children:ei.map((e,t)=>{let n=t===ed;return(0,r.jsxs)("li",{role:"button",tabIndex:-1,onMouseDown:n=>{n.preventDefault(),eu(t),requestAnimationFrame(()=>ey(e))},className:(0,p.cn)("flex cursor-pointer flex-col gap-0.5 px-3 py-1.5",n?"bg-accent/15":"hover:bg-accent/8"),children:[(0,r.jsx)("span",{className:(0,p.cn)("font-mono text-sm",n?"font-semibold":"font-normal"),children:e.name}),e.description.length>0&&(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:e.description})]},e.name)})})]}),null!==q&&(0,r.jsxs)("div",{className:"mb-2 overflow-hidden rounded-md border border-border bg-card shadow-md",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-3 py-1.5 text-[10px] uppercase tracking-wide text-muted-foreground",children:[(0,r.jsx)("span",{children:"slash commands"}),(0,r.jsx)("span",{className:"text-xs font-semibold",children:J.length})]}),0===J.length?(0,r.jsx)("div",{className:"px-3 py-2 text-xs text-muted-foreground",children:"일치하는 명령 없음"}):(0,r.jsx)("ul",{className:"divide-y divide-border",children:J.map((e,t)=>{let n=t===$;return(0,r.jsxs)("li",{role:"button",tabIndex:-1,onMouseDown:n=>{n.preventDefault(),B(t),ew(e)},className:(0,p.cn)("flex cursor-pointer items-center gap-2 px-3 py-1.5 text-sm",n?"bg-accent/15":"hover:bg-accent/8"),children:[(0,r.jsxs)("span",{className:(0,p.cn)("font-mono",n?"font-semibold text-foreground":"text-foreground/86"),children:[":",e.name]}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:e.description})]},e.name)})})]}),g.length>0&&(0,r.jsx)("ul",{className:"mb-2 flex flex-wrap gap-1.5",children:g.map(e=>{var t,n;let s="string"==typeof e.mediaType&&e.mediaType.startsWith("image/");return(0,r.jsxs)("li",{className:"inline-flex items-center gap-1.5 rounded-md border border-border bg-card px-1.5 py-0.5 text-[11px]",title:null!=(t=e.path)?t:e.filename,children:[s?(0,r.jsx)("img",{src:function(e,t,n){if(!e)return"";let r=e.includes("?")?"&":"?",s=n?"".concat(r,"auth=").concat(encodeURIComponent(n)):"";return"".concat(null!=t?t:"").concat(e).concat(s)}(e.downloadUrl,R.baseUrl,R.token),alt:e.filename,className:"h-6 w-6 rounded-sm object-cover",loading:"lazy"}):(0,r.jsx)(a.A,{className:"h-3 w-3 text-muted-foreground","aria-hidden":!0}),(0,r.jsx)("span",{className:"max-w-[160px] truncate font-mono",children:e.filename}),(0,r.jsx)("span",{className:"text-muted-foreground",children:(n=e.size)<1024?"".concat(n," B"):n<1048576?"".concat((n/1024).toFixed(1)," kB"):"".concat((n/1024/1024).toFixed(1)," MB")}),v&&(0,r.jsx)("button",{type:"button",onClick:()=>v(e.id),"aria-label":"remove ".concat(e.filename),className:"rounded text-muted-foreground hover:text-rose-500",children:(0,r.jsx)(o.A,{className:"h-3 w-3"})})]},e.id)})}),(0,r.jsxs)("div",{className:"relative flex flex-wrap items-end gap-2 sm:flex-nowrap",children:[(0,r.jsxs)("div",{className:"flex shrink-0 basis-full items-center gap-0.5 pb-1 sm:basis-auto","data-elanous-composer-tools":!0,children:[(0,r.jsx)(h.T,{onAttached:b?e=>b([e]):void 0}),(0,r.jsx)(x.u,{onAttached:b}),(0,r.jsx)(N,{}),(0,r.jsx)(I.z,{}),(0,r.jsx)(C,{}),em.autoRouting&&ep&&(0,r.jsx)("span",{className:"text-xs text-muted-foreground",title:"입력 의도 분류 \xb7 ACP 송신 경로는 변경하지 않습니다",children:ep.mission})]}),(0,r.jsx)("textarea",{value:P,onChange:e=>O(e.target.value),onKeyDown:e=>{if(e.ctrlKey&&("r"===e.key||"R"===e.key)){e.preventDefault(),ee||(es.current=P,et(!0),er(0),O(""));return}if(ee){if("Enter"===e.key&&!e.shiftKey){e.preventDefault(),(()=>{if(0===ea.length)return eo();let e=Math.min(Math.max(en,0),ea.length-1),t=ea[e];et(!1),er(0),es.current="",O(t)})();return}if("ArrowUp"===e.key){e.preventDefault(),er(e=>Math.max(0,e-1));return}if("ArrowDown"===e.key){e.preventDefault(),er(e=>Math.min(ea.length-1,e+1));return}if("Escape"===e.key){e.preventDefault(),eo();return}}if("Tab"===e.key&&!e.shiftKey&&(()=>{if(null!==K&&V.length>0){let e=Math.min(Math.max(Z,0),V.length-1),t=V[e],n=P.lastIndexOf("@");if(n<0)return!1;let r=P.slice(0,n),s=t.isDir?"".concat(t.name,"/"):t.name;return O("".concat(r,"@").concat(s)),!0}if(null!==el&&ei.length>0){let e=Math.min(Math.max(ed,0),ei.length-1),t=ei[e],n=P.lastIndexOf("$");if(n<0)return!1;let r=P.slice(0,n);return O("".concat(r,"$").concat(t.name)),!0}if(null!==q&&J.length>0){let e=Math.min(Math.max($,0),J.length-1);return ew(J[e]),!0}return!1})())return void e.preventDefault();if(null!==K&&V.length>0){if("Enter"===e.key&&!e.shiftKey){e.preventDefault(),(()=>{if(0===V.length)return;let e=Math.min(Math.max(Z,0),V.length-1);ej(V[e])})();return}if("ArrowUp"===e.key){e.preventDefault(),X(e=>Math.max(0,e-1));return}if("ArrowDown"===e.key){e.preventDefault(),X(e=>Math.min(V.length-1,e+1));return}if("Escape"===e.key){e.preventDefault();let t=P.lastIndexOf("@");t>=0&&O(P.slice(0,t));return}}if(null!==el&&ei.length>0){if("Enter"===e.key&&!e.shiftKey){e.preventDefault(),(()=>{if(0===ei.length)return;let e=Math.min(Math.max(ed,0),ei.length-1);ey(ei[e])})();return}if("ArrowUp"===e.key){e.preventDefault(),eu(e=>Math.max(0,e-1));return}if("ArrowDown"===e.key){e.preventDefault(),eu(e=>Math.min(ei.length-1,e+1));return}if("Escape"===e.key){e.preventDefault();let t=P.lastIndexOf("$");t>=0&&O(P.slice(0,t));return}}if(null!==q&&J.length>0){if("Enter"===e.key&&!e.shiftKey){e.preventDefault();let t=function(e,t,n){let r=t.find(t=>t.name.toLowerCase()===e.trim().toLowerCase());if(r)return{kind:"run",line:":".concat(r.name)};let s=t[Math.min(Math.max(n,0),t.length-1)];return s?{kind:"complete",value:":".concat(s.name," ")}:null}(q,J,$);(null==t?void 0:t.kind)==="run"?ev(t.line):t&&O(t.value);return}if("ArrowUp"===e.key){e.preventDefault(),B(e=>Math.max(0,e-1));return}if("ArrowDown"===e.key){e.preventDefault(),B(e=>Math.min(J.length-1,e+1));return}if("Escape"===e.key){e.preventDefault(),O("");return}}if("Enter"===e.key&&!e.shiftKey){e.preventDefault(),eb();return}if("ArrowUp"===e.key){(()=>{if(0===F.length||P.includes("\n"))return!1;-1===Y&&(H.current=P);let e=Math.min(Y+1,F.length-1);return e===Y||(z(e),O(F[e]),!0)})()&&e.preventDefault();return}if("ArrowDown"===e.key){(()=>{if(Y<0||P.includes("\n"))return!1;if(0===Y)return z(-1),O(H.current),!0;let e=Y-1;return z(e),O(F[e]),!0})()&&e.preventDefault();return}},placeholder:"message \xb7 `:help` for commands \xb7 Shift+Enter for newline",rows:2,disabled:n,className:(0,p.cn)("min-h-[44px] max-h-[180px] min-w-0 flex-1 resize-y rounded-md border border-input bg-background px-3 py-2 text-sm shadow-xs focus:outline-none focus:ring-2 focus:ring-ring",ek&&"border-accent text-accent-foreground bg-accent/10",n&&"opacity-60")}),w&&(0,r.jsx)("button",{type:"button",onClick:w.onToggle,disabled:w.disabled,title:w.disabled?"daemon URL 미설정":w.phaseLabel,"data-elanous-action":"chat-voice-toggle-inline",className:(0,p.cn)("inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md border transition-colors",w.active?"border-rose-500/40 bg-rose-500/10 text-rose-600 hover:bg-rose-500/20":"border-input bg-background text-foreground hover:bg-muted",w.disabled&&"cursor-not-allowed opacity-50"),children:(0,r.jsxs)("span",{className:"relative inline-flex",children:[w.active?(0,r.jsx)(l.A,{className:"h-4 w-4"}):(0,r.jsx)(i.A,{className:"h-4 w-4"}),(0,r.jsx)("span",{"aria-hidden":!0,className:(0,p.cn)("absolute -right-0.5 -top-0.5 h-1.5 w-1.5 rounded-full",w.dotColor,("listening"===w.phase||"speaking"===w.phase)&&"animate-pulse")})]})}),(0,r.jsx)(u.$,{onClick:eb,disabled:n||!P.trim()&&0===g.length,size:"sm",children:(0,r.jsx)(c.A,{className:"h-4 w-4"})})]}),ek&&(0,r.jsx)("p",{className:"mt-1 text-[11px] text-muted-foreground",children:"meta command — handled locally, not sent to LLM"})]})}},19418:(e,t,n)=>{n.d(t,{ht:()=>a,vn:()=>s});let r="elanous.pwa.sharePrefill";function s(e){try{window.sessionStorage.setItem(r,e)}catch(e){}}function a(){try{var e;let t=null!=(e=window.sessionStorage.getItem(r))?e:"";return window.sessionStorage.removeItem(r),t}catch(e){return""}}},21234:(e,t,n)=>{n.d(t,{D:()=>d});var r=n(58443),s=n(77947),a=n(19989),o=n(34015),l=n(49413),i=n(23783);function c(e){return!Number.isFinite(e)||e<0?"$0.00":"$".concat(e.toFixed(2))}function d(){let{client:e,config:t}=(0,o.Q)(),[n,d]=(0,s.useState)(null),[u,m]=(0,s.useState)(!1),f=!!t.baseUrl,p=(0,s.useCallback)(async()=>{if(f)try{let t=await e.voiceCost();d(t),m(!1)}catch(e){m(!0),(0,i.cY)("chat.voice.cost-pill.error",{reason:e instanceof Error?e.message:String(e)})}},[e,f]);if((0,s.useEffect)(()=>{if(!f)return;p();let e=setInterval(()=>void p(),6e4);return()=>clearInterval(e)},[f,p]),!f)return null;if(u&&!n)return(0,r.jsxs)("div",{className:"inline-flex items-center gap-1 rounded-md border border-border bg-muted/40 px-2 py-1 text-[11px] text-muted-foreground",title:"voice cost — daemon /v1/voice/cost 응답 없음","data-elanous-pill":"voice-cost",children:[(0,r.jsx)(a.A,{className:"h-3 w-3","aria-hidden":!0}),(0,r.jsx)("span",{children:"—"})]});if(!n)return(0,r.jsxs)("div",{className:"inline-flex items-center gap-1 rounded-md border border-border bg-muted/40 px-2 py-1 text-[11px] text-muted-foreground","data-elanous-pill":"voice-cost",children:[(0,r.jsx)(a.A,{className:"h-3 w-3","aria-hidden":!0}),(0,r.jsx)("span",{children:"…"})]});let h=n.totalUsd>0;return(0,r.jsxs)("div",{className:(0,l.cn)("inline-flex items-center gap-1 rounded-md border px-2 py-1 text-[11px]",h?"border-emerald-500/30 bg-emerald-500/5 text-emerald-700 dark:text-emerald-400":"border-border bg-muted/40 text-muted-foreground"),title:"voice cost ".concat(n.monthYYYYMM," \xb7 STT ").concat(c(n.sttUsd)," \xb7 TTS ").concat(c(n.ttsUsd)),"data-elanous-pill":"voice-cost",children:[(0,r.jsx)(a.A,{className:"h-3 w-3","aria-hidden":!0}),(0,r.jsx)("span",{children:c(n.totalUsd)}),(0,r.jsx)("span",{className:"text-muted-foreground",children:"/mo"})]})}},26882:(e,t,n)=>{n.d(t,{Cf:()=>g,Es:()=>v,L3:()=>j,c7:()=>b,lG:()=>p,rr:()=>y});var r=n(58443);n(77947);var s=n(25922),a=n(72021),o=n(94491),l=n(31386),i=n(75921),c=n(63109),d=n(42965),u=n(49413),m=n(19990),f=n(22444);function p(e){let{...t}=e;return(0,r.jsx)(s.D,{"data-slot":"dialog",...t})}function h(e){let{...t}=e;return(0,r.jsx)(a.Z,{"data-slot":"dialog-portal",...t})}function x(e){let{className:t,...n}=e;return(0,r.jsx)(o.X,{"data-slot":"dialog-overlay",className:(0,u.cn)("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",t),...n})}function g(e){let{className:t,children:n,showCloseButton:s=!0,...a}=e;return(0,r.jsxs)(h,{children:[(0,r.jsx)(x,{}),(0,r.jsxs)(l.h,{"data-slot":"dialog-content",className:(0,u.cn)("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a,children:[n,s&&(0,r.jsxs)(i.H,{"data-slot":"dialog-close",render:(0,r.jsx)(m.$,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[(0,r.jsx)(f.A,{}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function b(e){let{className:t,...n}=e;return(0,r.jsx)("div",{"data-slot":"dialog-header",className:(0,u.cn)("flex flex-col gap-2",t),...n})}function v(e){let{className:t,showCloseButton:n=!1,children:s,...a}=e;return(0,r.jsxs)("div",{"data-slot":"dialog-footer",className:(0,u.cn)("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",t),...a,children:[s,n&&(0,r.jsx)(i.H,{render:(0,r.jsx)(m.$,{variant:"outline"}),children:"Close"})]})}function j(e){let{className:t,...n}=e;return(0,r.jsx)(c.L,{"data-slot":"dialog-title",className:(0,u.cn)("font-heading text-base leading-none font-medium",t),...n})}function y(e){let{className:t,...n}=e;return(0,r.jsx)(d.r,{"data-slot":"dialog-description",className:(0,u.cn)("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",t),...n})}},28190:(e,t,n)=>{n.d(t,{g:()=>s,x:()=>r});let r={idle:"bg-slate-400",connecting:"bg-amber-500",listening:"bg-emerald-500",processing:"bg-sky-500",speaking:"bg-fuchsia-500",error:"bg-rose-600"},s={idle:"음성 대기",connecting:"연결 중…",listening:"듣는 중",processing:"생각 중",speaking:"말하는 중",error:"음성 오류"}},58703:(e,t,n)=>{n.d(t,{h:()=>l,t:()=>o});var r=n(77947),s=n(34015),a=n(87139);function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{client:t}=(0,s.Q)(),n=(0,a.hG)(t),o=()=>n.list(),l=(0,r.useSyncExternalStore)(e=>n.subscribe(e),o,o);return(0,r.useEffect)(()=>{if(e.activePoll)return n.enterActive()},[n,e.activePoll]),l}function l(){let{client:e}=(0,s.Q)(),t=(0,a.hG)(e),n=o({activePoll:!0}),[,l]=(0,r.useState)(0);return(0,r.useEffect)(()=>{t.forceRefresh().then(()=>l(e=>e+1))},[t]),n}},61643:(e,t,n)=>{n.d(t,{D:()=>eo});var r=n(58443),s=n(77947),a=n(65333),o=n(23744);let l=[n(87451).A];var i=n(49413),c=n(73632),d=n(65233),u=n(90355),m=n(66420),f=n(23783);function p(e){let{block:t}=e,{msg:n,done:s,metrics:a}=t,o=[];if(a){let e=function(e){let t=Math.max(0,Math.round(e/1e3));return t<60?"".concat(t,"s"):t<3600?"".concat(Math.floor(t/60),"m ").concat(t%60,"s"):"".concat(Math.floor(t/3600),"h ").concat(Math.floor(t%3600/60),"m")}(a.elapsedMs);e&&a.elapsedMs>0&&o.push(e);let t=function(e){if(e<=0)return"";let t=e/1e3;return t>=1?"".concat(t.toFixed(1),"k tokens"):"".concat(e," tokens")}(a.tokenCount);t&&o.push(t)}let l=o.length?" (".concat(o.join(" \xb7 "),")"):"";return(0,r.jsxs)("div",{"data-elanous-block-kind":"agent_thinking","data-elanous-block-id":t.blockId,"data-elanous-done":s?"true":"false",className:(0,i.cn)("inline-flex items-center gap-1.5 rounded-full border bg-muted/30 px-2 py-0.5 text-[11px] font-mono",s?"border-border text-muted-foreground":"border-border/60 text-foreground"),children:[(0,r.jsx)("span",{"aria-hidden":"true",className:(0,i.cn)("inline-block h-1.5 w-1.5 rounded-full",s?"bg-emerald-500":"bg-amber-400 motion-safe:animate-pulse")}),(0,r.jsxs)("span",{children:[s?"✓ ":"",n,s?"":"…",(0,r.jsx)("span",{className:"text-muted-foreground",children:l})]})]})}let h={running:"●",queued:"◌",done:"✓",error:"✗"},x={running:"border-amber-400/50 text-amber-300",queued:"border-border text-muted-foreground",done:"border-emerald-500/40 text-emerald-300",error:"border-destructive/50 text-destructive"};function g(e){let{block:t}=e,n=h[t.status],s=x[t.status];return(0,r.jsxs)("div",{"data-elanous-block-kind":"agent_status","data-elanous-block-id":t.blockId,"data-monad-agent-id":t.agentId,"data-elanous-status":t.status,className:(0,i.cn)("inline-flex items-center gap-1.5 rounded border bg-muted/20 px-2 py-0.5 text-[11px] font-mono",s),children:[(0,r.jsx)("span",{"aria-hidden":"true",className:(0,i.cn)("running"===t.status?"motion-safe:animate-pulse":void 0),children:n}),(0,r.jsx)("span",{className:"font-semibold",children:t.agentId}),(0,r.jsx)("span",{className:"uppercase tracking-wide text-[10px] text-muted-foreground",children:t.status}),t.lastEvent&&(0,r.jsxs)("span",{className:"ml-1 truncate text-muted-foreground",children:["\xb7 ",t.lastEvent]})]})}let b={pending:"○","in-progress":"◐",done:"●",skipped:"⊘"},v={pending:"text-muted-foreground","in-progress":"text-amber-300",done:"text-emerald-400",skipped:"text-muted-foreground/60 line-through"};function j(e){let{block:t}=e;return(0,r.jsxs)("div",{"data-elanous-block-kind":"agent_plan","data-elanous-block-id":t.blockId,"data-elanous-plan-ref":t.ref,className:"rounded border border-border bg-muted/20 px-2 py-1.5 text-xs font-mono",children:[(0,r.jsxs)("div",{className:"mb-1 flex items-center justify-between text-[10px] uppercase tracking-wide text-muted-foreground",children:[(0,r.jsxs)("span",{children:["Plan \xb7 ",t.ref]}),"number"==typeof t.activeIndex&&t.steps.length>0&&(0,r.jsxs)("span",{children:[t.activeIndex+1,"/",t.steps.length]})]}),(0,r.jsx)("ol",{className:"m-0 list-none space-y-0.5 p-0",children:t.steps.map((e,n)=>{let s=n===t.activeIndex;return(0,r.jsxs)("li",{"data-elanous-step-index":n,"data-elanous-step-status":e.status,className:(0,i.cn)("flex items-start gap-2 leading-snug",v[e.status],s&&"done"!==e.status?"font-semibold motion-safe:animate-pulse":void 0),children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"select-none",children:b[e.status]}),(0,r.jsx)("span",{className:"flex-1 whitespace-pre-wrap",children:e.text})]},n)})})]})}let y={add:"bg-emerald-500/10 text-emerald-300",del:"bg-rose-500/10 text-rose-300",ctx:"text-muted-foreground"},w={add:"+",del:"-",ctx:" "};function k(e){let{block:t}=e,[n,a]=(0,s.useState)(!1),{adds:o,dels:l}=function(e){let t=0,n=0;for(let r of e.hunks)for(let e of r.lines)"add"===e.kind?t+=1:"del"===e.kind&&(n+=1);return{adds:t,dels:n}}(t),c=t.hunks.length;return(0,r.jsxs)("div",{"data-elanous-block-kind":"tool_diff","data-elanous-block-id":t.blockId,"data-elanous-file-path":t.filePath,className:"rounded border border-border bg-muted/20 px-2 py-1 text-xs font-mono",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>a(!n),"aria-expanded":n,className:"flex w-full items-center gap-2 text-left",children:[(0,r.jsx)("span",{"aria-hidden":"true",children:"⌥"}),(0,r.jsx)("span",{className:"font-semibold truncate",children:t.filePath}),t.language&&(0,r.jsxs)("span",{className:"text-[10px] text-muted-foreground",children:["\xb7",t.language]}),(0,r.jsxs)("span",{className:"ml-auto flex items-center gap-1.5 text-[10px]",children:[o>0&&(0,r.jsxs)("span",{className:"text-emerald-300",children:["+",o]}),l>0&&(0,r.jsxs)("span",{className:"text-rose-300",children:["-",l]}),(0,r.jsxs)("span",{className:"text-muted-foreground",children:[c," hunk",1===c?"":"s"]}),(0,r.jsx)("span",{"aria-hidden":"true",className:"text-muted-foreground",children:n?"▾":"▸"})]})]}),n&&(0,r.jsx)("div",{className:"mt-1 overflow-x-auto rounded bg-background/40",children:t.hunks.map((e,t)=>(0,r.jsxs)("div",{"data-elanous-hunk-index":t,className:"border-t border-border/40 first:border-t-0",children:[(0,r.jsxs)("div",{className:"px-2 py-0.5 text-[10px] text-muted-foreground bg-muted/30",children:["@@ -",e.oldStart,",",e.oldLines," +",e.newStart,",",e.newLines," @@"]}),(0,r.jsx)("pre",{className:"m-0 whitespace-pre p-0 text-[11px] leading-tight",children:e.lines.map((e,t)=>(0,r.jsxs)("div",{"data-elanous-line-kind":e.kind,className:(0,i.cn)("flex items-baseline px-2 py-px",y[e.kind]),children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"w-3 shrink-0 select-none",children:w[e.kind]}),(0,r.jsx)("span",{className:"flex-1",children:e.text})]},t))})]},t))})]})}function N(e){var t,n,s,a;let{hit:o}=e;return(0,r.jsx)("li",{"data-elanous-search-hit-file":o.filePath,"data-elanous-search-hit-line":o.line,className:"rounded px-2 py-1 hover:bg-muted/30",children:(0,r.jsxs)("a",{href:function(e){var t;let n=null!=(t=e.column)?t:1;return"vscode://file/".concat(e.filePath,":").concat(e.line,":").concat(n)}(o),className:"block",target:"_blank",rel:"noopener",children:[(0,r.jsxs)("div",{className:"flex items-baseline gap-2 text-[11px]",children:[(0,r.jsx)("span",{className:"font-semibold truncate",children:o.filePath}),(0,r.jsxs)("span",{className:"text-muted-foreground",children:[":",o.line]}),void 0!==o.column&&(0,r.jsxs)("span",{className:"text-muted-foreground",children:[":",o.column]})]}),(null!=(s=null==(t=o.contextBefore)?void 0:t.length)?s:0)>0&&(0,r.jsx)("pre",{className:"m-0 mt-0.5 whitespace-pre-wrap break-words text-[10px] text-muted-foreground/70",children:o.contextBefore.join("\n")}),(0,r.jsx)("pre",{className:"m-0 whitespace-pre-wrap break-words text-[10px] text-foreground",children:o.snippet}),(null!=(a=null==(n=o.contextAfter)?void 0:n.length)?a:0)>0&&(0,r.jsx)("pre",{className:"m-0 whitespace-pre-wrap break-words text-[10px] text-muted-foreground/70",children:o.contextAfter.join("\n")})]})})}function I(e){let{block:t}=e,[n,a]=(0,s.useState)(!1),o=t.hits.length,l=n?t.hits:t.hits.slice(0,5),c=o-l.length;return(0,r.jsxs)("div",{"data-elanous-block-kind":"tool_search_hits","data-elanous-block-id":t.blockId,"data-elanous-search-query":t.query,"data-elanous-accum-count":t.accumCount,className:(0,i.cn)("rounded border border-border bg-muted/20 px-2 py-1 text-xs font-mono"),children:[(0,r.jsxs)("div",{className:"flex items-baseline gap-2 mb-1",children:[(0,r.jsx)("span",{"aria-hidden":"true",children:"\uD83D\uDD0E"}),(0,r.jsx)("span",{className:"font-semibold",children:t.query}),(0,r.jsxs)("span",{className:"text-[10px] text-muted-foreground",children:[t.accumCount," hit",1===t.accumCount?"":"s"]}),t.truncated&&(0,r.jsx)("span",{className:"text-[10px] text-amber-300",children:"truncated"})]}),0===o?(0,r.jsx)("div",{className:"text-[10px] text-muted-foreground italic",children:"(no hits yet)"}):(0,r.jsx)("ul",{className:"m-0 list-none space-y-0.5 p-0",children:l.map((e,t)=>(0,r.jsx)(N,{hit:e},"".concat(e.filePath,":").concat(e.line,":").concat(t)))}),c>0&&(0,r.jsxs)("button",{type:"button",onClick:()=>a(!0),className:"mt-1 w-full rounded bg-muted/40 px-2 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/60",children:["+ ",c," more"]}),n&&o>5&&(0,r.jsx)("button",{type:"button",onClick:()=>a(!1),className:"mt-1 w-full rounded bg-muted/40 px-2 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/60",children:"collapse"})]})}let S={stdout:"text-foreground",stderr:"text-rose-300",http:"text-amber-300",generic:"text-muted-foreground"},C={stdout:"▌",stderr:"▌",http:"↹",generic:"\xb7"};function D(e){var t;let{block:n}=e,[a,o]=(0,s.useState)(!1),l=n.lines.length,c=0===l?"":n.lines[l-1],d=void 0===n.exitCode?"":0===n.exitCode?"text-emerald-300":"text-rose-300";return(0,r.jsxs)("div",{"data-elanous-block-kind":"tool_progress","data-elanous-block-id":n.blockId,"data-elanous-stream":n.stream,"data-elanous-done":n.done?"true":"false",className:"rounded border border-border bg-muted/20 px-2 py-1 text-xs font-mono",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>o(!a),"aria-expanded":a,className:"flex w-full items-center gap-2 text-left",children:[(0,r.jsx)("span",{"aria-hidden":"true",className:(0,i.cn)(S[n.stream],!n.done&&"motion-safe:animate-pulse"),children:C[n.stream]}),(0,r.jsx)("span",{className:"uppercase tracking-wide text-[10px] text-muted-foreground",children:n.stream}),!a&&c&&(0,r.jsx)("span",{className:(0,i.cn)("flex-1 truncate",S[n.stream]),children:c}),(0,r.jsxs)("span",{className:"ml-auto flex items-center gap-1.5 text-[10px] text-muted-foreground",children:[(0,r.jsxs)("span",{children:[l," line",1===l?"":"s"]}),void 0!==n.bytesSoFar&&(0,r.jsxs)("span",{children:["\xb7 ",(t=n.bytesSoFar)<1024?"".concat(t,"B"):t<1048576?"".concat((t/1024).toFixed(1),"KB"):"".concat((t/1048576).toFixed(1),"MB")]}),void 0!==n.exitCode&&(0,r.jsxs)("span",{className:d,children:["\xb7 exit ",n.exitCode]}),n.done&&!n.exitCode&&(0,r.jsx)("span",{className:"text-emerald-300",children:"\xb7 ✓"}),(0,r.jsx)("span",{"aria-hidden":"true",children:a?"▾":"▸"})]})]}),a&&(0,r.jsx)("pre",{className:(0,i.cn)("m-0 mt-1 max-h-64 overflow-auto rounded bg-background/40 p-1.5 text-[11px] leading-tight whitespace-pre",S[n.stream]),children:0===n.lines.length?"(no output yet)":n.lines.join("\n")})]})}function E(e){var t;let{group:n}=e,s=function(e){if(0===e.samples.length)return"";if(1===e.samples.length)return"M0,".concat(9," L").concat(80,",").concat(9);let t=e.max-e.min||1,n=e.samples.map((n,r)=>{let s=r/(e.samples.length-1)*80,a=(n.value-e.min)/t;return"".concat(s.toFixed(1),",").concat((18-18*a).toFixed(1))});return"M".concat(n[0]," L").concat(n.slice(1).join(" L"))}(n);return(0,r.jsxs)("div",{"data-elanous-perf-metric":n.metric,"data-elanous-perf-latest":n.latest,className:"flex items-center gap-2 text-[10px] font-mono",children:[(0,r.jsx)("span",{className:"text-muted-foreground truncate min-w-[120px]",children:n.metric}),(0,r.jsx)("svg",{width:80,height:18,viewBox:"0 0 ".concat(80," ").concat(18),className:"shrink-0","aria-label":"".concat(n.metric," sparkline"),children:(0,r.jsx)("path",{d:s,fill:"none",stroke:"currentColor",strokeWidth:"1",strokeLinejoin:"round",strokeLinecap:"round",className:"text-amber-400"})}),(0,r.jsx)("span",{className:"text-foreground tabular-nums",children:(t=n.latest)>=1e3?(t/1e3).toFixed(1)+"k":t>=10?t.toFixed(0):t.toFixed(1)}),n.unit&&(0,r.jsx)("span",{className:"text-muted-foreground",children:n.unit})]})}function L(e){let{block:t}=e,n=(0,s.useMemo)(()=>(function(e){let t=new Map;for(let n of e){let e=t.get(n.metric);e?e.push(n):t.set(n.metric,[n])}let n=[];for(let[e,r]of t.entries()){let t=1/0,s=-1/0;for(let e of r)e.value<t&&(t=e.value),e.value>s&&(s=e.value);let a=r[r.length-1].value,o={metric:e,samples:r,latest:a,min:t,max:s},l=r[r.length-1].unit;void 0!==l&&(o.unit=l),n.push(o)}return n.sort((e,t)=>t.samples.length-e.samples.length),n})(t.samples),[t.samples]);return 0===n.length?(0,r.jsx)("div",{"data-elanous-block-kind":"perf_session","data-elanous-block-id":t.blockId,className:"rounded border border-border bg-muted/20 px-2 py-1 text-[10px] text-muted-foreground italic",children:"(no perf samples yet)"}):(0,r.jsx)("div",{"data-elanous-block-kind":"perf_session","data-elanous-block-id":t.blockId,"data-elanous-perf-metric-count":n.length,className:(0,i.cn)("rounded border border-border bg-muted/20 px-2 py-1","flex flex-col gap-0.5"),children:n.map(e=>(0,r.jsx)(E,{group:e},e.metric))})}let M="'none'";function T(e){let t=function(e){if(!e)return[];let t=new Set;for(let n of e)if("string"==typeof n)try{let e=new URL(n);if("http:"!==e.protocol&&"https:"!==e.protocol||e.username||e.password||"/"!==e.pathname||e.search||e.hash)continue;t.add(e.origin)}catch(e){}return[...t]}(e);return t.length>0?t.join(" "):M}let A="ui/notifications/tool-result",R=(e,t,n)=>"".concat(e,":").concat(t,":").concat(typeof n,":").concat(String(n));function U(e,t,n){return{jsonrpc:"2.0",id:e,error:{code:t,message:n}}}function P(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function O(e){return{frames:{...e.frames},pending:{...e.pending},pushes:[...e.pushes],unmatched:[...e.unmatched],nextGeneration:e.nextGeneration}}function F(e){return{jsonrpc:"2.0",method:A,params:{content:[],_meta:{"elanous/resultOmittedReason":e}}}}function _(e){let{message:t,omitted:n,bytes:r}=function(e){if(!(P(e)&&(!("content"in e)||Array.isArray(e.content))))return{message:F("not_a_tool_result"),omitted:"not_a_tool_result",bytes:-1};let t={jsonrpc:"2.0",method:A,params:e};try{structuredClone(t);let e=new TextEncoder().encode(JSON.stringify(t)).byteLength;if(e<=65536)return{message:t,bytes:e};return{message:F("too_large"),omitted:"too_large",bytes:e}}catch(e){return{message:F("unserializable"),omitted:"unserializable",bytes:-1}}}(e.result);return{kind:"notify",frameId:e.frameId,message:t,bytes:r,...n?{omitted:n}:{}}}function Y(e,t){for(let[n,r]of(delete e.frames[t],Object.entries(e.pending)))r.frameId===t&&delete e.pending[n];e.pushes=e.pushes.filter(e=>e.frameId!==t)}function z(e){return{frames:{},pending:{},pushes:[],unmatched:[],nextGeneration:e.nextGeneration}}function H(e,t,n,r,s){let a=R(t,n,r),o=e.frames[t];if(!e.pending[a]||!o||o.generation!==n)return{state:e,actions:[]};let l=O(e);return delete l.pending[a],{state:l,actions:[{kind:"respond",frameId:t,message:"result"in s?{jsonrpc:"2.0",id:r,result:s.result}:{jsonrpc:"2.0",id:r,error:{code:-32603,message:"Daemon tool call failed",data:s.error}}}]}}let q=new WeakMap;var J=n(34015);function $(e){let{html:t,connectDomains:n,resourceDomains:a,server:o,tool:l,toolCallId:i,toolResult:c}=e,d=function(){let{connectDomains:e,resourceDomains:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=T(e),r=T(t);return["default-src ".concat(M),"connect-src ".concat(n),"img-src ".concat(r),"media-src ".concat(r),"style-src ".concat(r),"font-src ".concat(r),"script-src 'unsafe-inline' ".concat(r),"base-uri ".concat(M),"form-action ".concat(M),"navigate-to ".concat(M)].join("; ")}({connectDomains:n,resourceDomains:a}),u='<meta http-equiv="Content-Security-Policy" content="'.concat(d,'">').concat(t),m=(0,s.useRef)(null),p=(0,s.useId)(),h=(0,s.useContext)(J.C),[x,g]=(0,s.useState)(!1),[b,v]=(0,s.useState)(null),j=(0,s.useCallback)(()=>{var e,t;g(!0),v(null!=(t=null==(e=m.current)?void 0:e.contentWindow)?t:null)},[]);return(0,s.useEffect)(()=>{if(b&&h)return function(e,t){let n=e.register({frameId:t.frameId,source:t.source,server:t.server,...void 0!==t.tool?{tool:t.tool}:{},...void 0!==t.toolCallId?{toolCallId:t.toolCallId}:{}}),r=void 0!==t.toolResult&&void 0!==t.tool;return(0,f.cY)("mcp-app.bridge.attach",{frameId:t.frameId,server:t.server,hasTool:void 0!==t.tool,hasToolCallId:void 0!==t.toolCallId,hasToolResult:void 0!==t.toolResult,published:r,...r?{}:{skipped:void 0===t.tool?"no-tool":"no-tool-result"}}),r&&e.publish({server:t.server,tool:t.tool,...void 0!==t.toolCallId?{toolCallId:t.toolCallId}:{},result:t.toolResult}),n}(function(e,t){let n=q.get(e);if(n)return n;let r=function(e,t){let n={frames:{},pending:{},pushes:[],unmatched:[],nextGeneration:1},r=(e,t)=>{var r;let s=null==(r=n.frames[e])?void 0:r.source;if("function"!=typeof(null==s?void 0:s.postMessage))return"no-target";try{return s.postMessage(t,"*"),"posted"}catch(e){return"threw"}},s=e=>{for(let a of e){if("observe"===a.kind&&(0,f.cY)("mcp-app.bridge.discard",{reason:a.reason,...a.method?{method:a.method}:{}}),"notify"===a.kind){let e=r(a.frameId,a.message);(0,f.cY)("mcp-app.bridge.push",{frameId:a.frameId,post:e,bytes:a.bytes,maxBytes:65536,...a.omitted?{omitted:a.omitted}:{}})}"respond"===a.kind&&r(a.frameId,a.message),"daemon-tool-call"===a.kind&&t.callWidgetTool({server:a.server,tool:a.tool,arguments:a.arguments}).then(e=>{let t=H(n,a.frameId,a.generation,a.id,{result:e});n=t.state,s(t.actions)},e=>{let t=H(n,a.frameId,a.generation,a.id,{error:String(e)});n=t.state,s(t.actions)})}},a=e=>{let t=function(e,t,n){let r=Object.values(e.frames).find(e=>e.source===t);if(!r)return{state:e,actions:[{kind:"observe",reason:"untrusted-source"}]};if(!P(n)||"2.0"!==n.jsonrpc||"string"!=typeof n.method)return{state:e,actions:[{kind:"observe",reason:"malformed-message"}]};if("notifications/initialized"===n.method||"ui/notifications/initialized"===n.method){var s;if(r.ready)return{state:e,actions:[]};let t=O(e);t.frames[r.frameId]={...r,ready:!0};let n=t.pushes.filter(e=>e.frameId===r.frameId&&e.generation===r.generation);return t.pushes=t.pushes.filter(e=>e.frameId!==r.frameId||e.generation!==r.generation),{state:t,actions:n.map(_)}}if(!("string"==typeof(s=n.id)||"number"==typeof s&&Number.isFinite(s)))return{state:e,actions:[]};if("ui/initialize"===n.method)return{state:e,actions:[{kind:"respond",frameId:r.frameId,message:{jsonrpc:"2.0",id:n.id,result:{protocolVersion:"2025-11-21",hostInfo:{name:"elanous",version:"1"},hostCapabilities:{serverTools:{}},hostContext:{}}}}]};if("ui/open-link"===n.method||"tools/call"!==n.method)return{state:e,actions:[{kind:"observe",reason:"unknown-method",method:n.method},{kind:"respond",frameId:r.frameId,message:U(n.id,-32601,"Method not found")}]};if(!P(n.params)||"string"!=typeof n.params.name)return{state:e,actions:[{kind:"respond",frameId:r.frameId,message:U(n.id,-32602,"Invalid params")}]};let a=R(r.frameId,r.generation,n.id);if(e.pending[a])return{state:e,actions:[{kind:"respond",frameId:r.frameId,message:U(n.id,-32600,"Duplicate request id")}]};let o=O(e);return o.pending[a]={frameId:r.frameId,id:n.id,generation:r.generation},{state:o,actions:[{kind:"daemon-tool-call",frameId:r.frameId,id:n.id,generation:r.generation,server:r.server,tool:n.params.name,arguments:n.params.arguments}]}}(n,e.source,e.data);n=t.state,s(t.actions)};return e.addEventListener("message",a),{register(e){var t;let r=function(e,t){let n=O(e);for(let[e,r]of Object.entries(n.frames))(e===t.frameId||r.source===t.source)&&Y(n,e);let r=n.nextGeneration++;n.frames[t.frameId]={...t,generation:r,ready:!1};let s=n.unmatched.filter(e=>e.server===t.server&&e.tool===t.tool&&void 0!==e.toolCallId&&e.toolCallId===t.toolCallId);for(let e of(n.unmatched=n.unmatched.filter(e=>!s.includes(e)),s))n.pushes.push({...e,frameId:t.frameId,generation:r});return{state:n,actions:[]}}(n,e);n=r.state,s(r.actions);let a=null==(t=n.frames[e.frameId])?void 0:t.generation;return()=>{void 0!==a&&(n=function(e,t,n){let r=e.frames[t];if(!r||void 0!==n&&r.generation!==n)return{state:e,actions:[]};let s=O(e);return Y(s,t),{state:s,actions:[]}}(n,e.frameId,a).state)}},publish(e){let t=function(e,t){let n=e,r=[],s=!1;for(let a of Object.values(e.frames)){if(a.server!==t.server||a.tool!==t.tool||(void 0!==t.toolCallId||void 0!==a.toolCallId)&&t.toolCallId!==a.toolCallId)continue;s=!0;let e=function(e,t){let n=e.frames[t.frameId];if(!n||n.generation!==t.generation)return{state:e,actions:[]};if(n.ready)return{state:e,actions:[_(t)]};let r=O(e);return r.pushes.push(t),{state:r,actions:[]}}(n,{...t,frameId:a.frameId,generation:a.generation});n=e.state,r.push(...e.actions)}if(!s&&void 0!==t.toolCallId){let e=O(n);e.unmatched=[...e.unmatched,t],n=e}return{state:n,actions:r}}(n,e);n=t.state,s(t.actions)},disposeConversation(){n=z(n)},close(){e.removeEventListener("message",a),n=z(n)}}}(t,{async callWidgetTool(t){let{tool:n,arguments:r}=t;return e.fetchJson("/v1/mcp/widgets/call",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({toolName:n,args:null!=r?r:{}})})}});return q.set(e,r),r}(h.client,window),{frameId:p,source:b,server:null!=o?o:"",...void 0!==l?{tool:l}:{},...void 0!==i?{toolCallId:i}:{},...void 0!==c?{toolResult:c}:{}})},[b,h,p,o,l,i,c]),(0,r.jsx)("iframe",{ref:m,"data-elanous-mcp-app-frame":"true","data-elanous-mcp-server":null!=o?o:"",sandbox:"allow-scripts",srcDoc:u,title:"MCP App",onLoad:j,className:"mt-2 w-full rounded border border-border bg-background transition-[height] ".concat(x?"h-96":"h-10")})}function B(e,t){let n=e.headers.get(t);if(null!==n)return n.split(",").map(e=>e.trim()).filter(e=>e.length>0)}async function K(e,t){if(!t.server||!t.uri)return null;try{let n=await e.fetchResponse(function(e,t){let n=new URLSearchParams({server:e,uri:t});return"".concat("/v1/mcp/resources","?").concat(n.toString())}(t.server,t.uri),t.signal?{signal:t.signal}:void 0);if(!n.ok)return null;let r=await n.text();if(0===r.length)return null;let s=B(n,"x-elanous-mcp-app-connect-domains"),a=B(n,"x-elanous-mcp-app-resource-domains");return{html:r,...s?{connectDomains:s}:{},...a?{resourceDomains:a}:{}}}catch(e){return null}}let V=["__","."];function W(e){var t,n,a,o,l,i;let{block:c}=e,d=function(e){for(let t of V){let n=e.indexOf(t);if(n>0)return e.slice(0,n)}return""}(c.toolName),u=(0,s.useContext)(J.C),[m,p]=(0,s.useState)(null);(0,s.useEffect)(()=>{if(c.html||!u||!d||!c.screenUrl)return;let e=new AbortController,t=!0,n=Date.now();return(0,f.cY)("mcp-app.body.fetch",{server:d,uri:c.screenUrl,reason:"not-embedded"}),K(u.client,{server:d,uri:c.screenUrl,signal:e.signal}).then(e=>{var r,s,a,o,l;t&&((0,f.cY)("mcp-app.body.fetched",{server:d,elapsedMs:Date.now()-n,ok:null!==e,bytes:null!=(a=null==e?void 0:e.html.length)?a:0,connectDomains:null!=(o=null==e||null==(r=e.connectDomains)?void 0:r.length)?o:null,resourceDomains:null!=(l=null==e||null==(s=e.resourceDomains)?void 0:s.length)?l:null}),p(e))}).catch(e=>{t&&(0,f.cY)("mcp-app.body.fetched",{server:d,elapsedMs:Date.now()-n,ok:!1,threw:!0,reason:e instanceof Error?e.message.slice(0,200):String(e).slice(0,200)})}),()=>{t=!1,e.abort()}},[c.html,c.screenUrl,u,d]);let h=null!=(n=null!=(t=c.html)?t:null==m?void 0:m.html)?n:void 0,{connectDomains:x,resourceDomains:g}={...(null!=(a=c.connectDomains)?a:null==m?void 0:m.connectDomains)?{connectDomains:null!=(o=c.connectDomains)?o:null==m?void 0:m.connectDomains}:{},...(null!=(l=c.resourceDomains)?l:null==m?void 0:m.resourceDomains)?{resourceDomains:null!=(i=c.resourceDomains)?i:null==m?void 0:m.resourceDomains}:{}};return(0,r.jsxs)("section",{"data-elanous-block-kind":"mcp_app","data-elanous-tool-id":c.toolId,"data-elanous-tool-name":c.toolName,className:"rounded border border-border bg-muted/40 px-3 py-2 text-sm",children:[(0,r.jsx)("div",{className:"font-medium",children:c.toolName}),(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:c.toolId}),(0,r.jsx)("div",{className:"mt-1 break-all font-mono text-xs",children:c.screenUrl}),h&&(0,r.jsx)($,{html:h,connectDomains:x,resourceDomains:g,server:d,tool:c.toolName,toolCallId:c.toolId,toolResult:c.toolResult}),c.fallbackText&&(0,r.jsx)("p",{className:"mt-2 whitespace-pre-wrap text-sm",children:c.fallbackText})]})}let G={pre:function(e){let{children:t}=e,n=(0,s.useMemo)(()=>(function e(t){if(null==t||"boolean"==typeof t)return"";if("string"==typeof t||"number"==typeof t)return String(t);if(Array.isArray(t))return t.map(e).join("");if("object"==typeof t&&"props"in t){let n=t.props;return e(null==n?void 0:n.children)}return""})(t),[t]),a=(0,s.useMemo)(()=>(function e(t){if(null==t||"object"!=typeof t)return null;if(Array.isArray(t)){for(let n of t){let t=e(n);if(t)return t}return null}let n=t.props;if((null==n?void 0:n.className)&&"string"==typeof n.className){var r;let e=/language-([\w+-]+)/.exec(n.className);if(e)return null!=(r=e[1])?r:null}return(null==n?void 0:n.children)?e(n.children):null})(t),[t]),o=(0,s.useMemo)(()=>"string"==typeof n&&0!==n.length&&(n.length>800||n.split("\n").length>12),[n]),[l,i]=(0,s.useState)(!o),[p,h]=(0,s.useState)(!1);if(!o)return(0,r.jsx)("pre",{children:t});let x=function(e){let t=e.split("\n");return t.length<=8?e:t.slice(0,8).join("\n")+"\n…"}(n),g=n.split("\n").length,b=async()=>{try{var e;await (null==(e=navigator.clipboard)?void 0:e.writeText(n)),h(!0),(0,f.cY)("pwa.code-block.copy",{lang:a,lineCount:g}),setTimeout(()=>h(!1),1500)}catch(e){(0,f.cY)("pwa.code-block.copy-error",{reason:String(e)})}};return(0,r.jsxs)("div",{className:"my-2 overflow-hidden rounded-md border border-border bg-muted/40","data-testid":"collapsible-code-block",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2 border-b border-border bg-muted/60 px-2 py-1 text-[11px] text-muted-foreground",children:[(0,r.jsxs)("span",{className:"font-mono",children:[null!=a?a:"code"," \xb7 ",g," lines \xb7 ",n.length," chars"]}),(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>{b()},"aria-label":"copy code",className:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 hover:bg-muted hover:text-foreground",children:[p?(0,r.jsx)(c.A,{className:"h-3 w-3"}):(0,r.jsx)(d.A,{className:"h-3 w-3"}),p?"copied":"copy"]}),(0,r.jsxs)("button",{type:"button",onClick:()=>i(e=>!e),"aria-label":l?"collapse code":"expand code",className:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 hover:bg-muted hover:text-foreground",children:[l?(0,r.jsx)(u.A,{className:"h-3 w-3"}):(0,r.jsx)(m.A,{className:"h-3 w-3"}),l?"collapse":"show all"]})]})]}),(0,r.jsx)("pre",{className:"!my-0 overflow-x-auto !rounded-none !bg-transparent !p-2 !text-[13px]",children:l?t:x})]})}};function Q(e){let{text:t}=e;return(0,r.jsx)("div",{className:"prose prose-sm max-w-none break-words [&_pre]:bg-muted [&_pre]:p-2 [&_pre]:rounded [&_code]:font-mono [&_code]:text-xs [&_p]:my-1 [&_table]:text-xs",children:(0,r.jsx)(o.oz,{remarkPlugins:l,components:G,children:t})})}function Z(e){let{block:t}=e,[n,a]=(0,s.useState)(!1),o="running"===t.status?"⋯":"done"===t.status?"✓":"✗",l="running"===t.status?"text-muted-foreground border-border":"error"===t.status?"text-destructive border-destructive/40":"text-foreground border-border",c=!!t.args&&Object.keys(t.args).length>0,d=[t.startedAt,t.endedAt].filter(e=>"number"==typeof e).map(e=>new Date(e).toLocaleTimeString()).join(" → ");return(0,r.jsxs)("div",{"data-elanous-block-kind":"tool_use","data-elanous-tool-name":t.name,"data-elanous-tool-status":t.status,className:(0,i.cn)("rounded border bg-muted/40 px-2 py-1 text-xs font-mono",l),children:[(0,r.jsxs)("button",{type:"button",onClick:c?()=>a(!n):void 0,className:(0,i.cn)("flex w-full items-center gap-2 text-left",c?"cursor-pointer":"cursor-default"),"aria-expanded":c?n:void 0,children:[(0,r.jsx)("span",{"aria-hidden":"true",children:o}),(0,r.jsx)("span",{className:"font-semibold",children:t.name}),t.summary&&(0,r.jsx)("span",{className:"ml-1 truncate text-muted-foreground",children:t.summary}),d&&(0,r.jsx)("span",{className:"ml-auto text-muted-foreground",children:d}),c&&(0,r.jsx)("span",{className:"ml-auto text-muted-foreground","aria-hidden":"true",children:n?"▾":"▸"})]}),n&&c&&(0,r.jsx)("pre",{className:"mt-1 overflow-x-auto rounded bg-background/60 p-1.5 text-[10px] leading-tight",children:JSON.stringify(t.args,null,2)})]})}function X(e){let{blocks:t}=e;return(0,r.jsx)("div",{className:"flex flex-col gap-2",children:t.map((e,t)=>{if("text"===e.kind)return(0,r.jsx)(Q,{text:e.text},t);if("image"===e.kind){var n;return(0,r.jsx)("img",{src:e.src,alt:null!=(n=e.alt)?n:"inline image (".concat(e.mediaType,")"),className:"max-w-full rounded border border-border","data-elanous-block-kind":"image","data-elanous-media-type":e.mediaType},t)}return"tool_use"===e.kind?(0,r.jsx)(Z,{block:e},"".concat(e.id,"-").concat(t)):"mcp_app"===e.kind?(0,r.jsx)(W,{block:e},"".concat(e.toolId,"-").concat(t)):"agent_thinking"===e.kind?(0,r.jsx)(p,{block:e},"thinking-".concat(e.blockId)):"agent_status"===e.kind?(0,r.jsx)(g,{block:e},"status-".concat(e.blockId)):"agent_plan"===e.kind?(0,r.jsx)(j,{block:e},"plan-".concat(e.blockId)):"tool_diff"===e.kind?(0,r.jsx)(k,{block:e},"diff-".concat(e.blockId)):"tool_search_hits"===e.kind?(0,r.jsx)(I,{block:e},"search-".concat(e.blockId)):"tool_progress"===e.kind?(0,r.jsx)(D,{block:e},"progress-".concat(e.blockId)):"perf_session"===e.kind?(0,r.jsx)(L,{block:e},"perf-".concat(e.blockId)):null})})}function ee(e){var t,n,s,a;let{message:o}=e,l="user"===o.role,c="meta"===o.role,d="system"===o.role,u=new Date(o.timestamp).toLocaleTimeString();if(c)return(0,r.jsx)("div",{className:"px-2 py-1 text-[11px] text-muted-foreground italic",children:(0,r.jsx)("pre",{className:"whitespace-pre-wrap font-mono text-[11px]",children:o.text})});if(d){let e="error"===(null!=(a=null==(s=o.meta)?void 0:s.systemLevel)?a:"note");return(0,r.jsx)("div",{className:"px-3 py-2",children:(0,r.jsxs)("div",{className:(0,i.cn)("rounded-md border px-3 py-2 text-xs font-mono",e?"border-rose-500/60 bg-rose-500/10 text-rose-300":"border-border/60 bg-muted/40 text-muted-foreground italic"),children:[(0,r.jsxs)("div",{className:"flex items-baseline gap-2",children:[(0,r.jsx)("span",{className:(0,i.cn)("shrink-0 text-[10px] font-semibold uppercase tracking-wide",e?"text-rose-400":"text-muted-foreground/70"),children:e?"⚠ Error":"Note"}),(0,r.jsx)("pre",{className:"flex-1 whitespace-pre-wrap break-all",children:o.text})]}),(0,r.jsx)("div",{className:"mt-1 text-[10px] text-muted-foreground/80",children:u})]})})}let m=Array.isArray(o.blocks)&&o.blocks.length>0;return(0,r.jsx)("div",{className:(0,i.cn)("flex gap-3 px-4 py-3",l?"justify-end":"justify-start"),children:(0,r.jsxs)("div",{className:(0,i.cn)("max-w-[85%] rounded-lg px-3 py-2 text-sm shadow-sm",l?"bg-primary text-primary-foreground":"bg-card text-card-foreground border border-border"),children:[m?(0,r.jsx)(X,{blocks:o.blocks}):(0,r.jsx)(Q,{text:o.text}),(0,r.jsxs)("div",{className:"mt-1 flex items-center gap-2 text-[10px] text-muted-foreground",children:[(0,r.jsx)("span",{children:u}),o.terminalId&&(0,r.jsx)("span",{title:"이 메시지가 나눈 터미널",className:"rounded border border-border/60 bg-muted/60 px-1 font-mono text-[9px] leading-4",children:o.terminalId}),(null==(t=o.meta)?void 0:t.provider)&&(0,r.jsxs)("span",{title:"답한 LLM",children:["\xb7 ",o.meta.provider,o.meta.model?" \xb7 ".concat(o.meta.model):""]}),(null==(n=o.meta)?void 0:n.stopReason)&&(0,r.jsxs)("span",{children:["\xb7 ",o.meta.stopReason]})]})]})})}function et(e){return en(e)>240}function en(e){return Math.max(0,e.scrollHeight-e.clientHeight-e.scrollTop)}function er(e){var t;return null!=(t=null==e?void 0:e.querySelector('[data-slot="scroll-area-viewport"],[data-radix-scroll-area-viewport]'))?t:null}let es=["wheel","touchmove","pointerdown","keydown"];var ea=n(76588);function eo(e){let{messages:t,pending:n,tabId:o}=e,l=(0,s.useRef)(null),i=(0,s.useRef)(null),c=(0,ea.o1)("chatScroll",o);(0,s.useEffect)(()=>{let e=er(i.current);if(!e)return;let t=(0,ea.N2)(c);"number"==typeof t&&t>0&&(e.scrollTop=t)},[c]),(0,s.useEffect)(()=>{let e=er(i.current);if(!e)return;let t=null,n=()=>{t&&clearTimeout(t),t=setTimeout(()=>{(0,ea.Os)(c,e.scrollTop)},250)};return e.addEventListener("scroll",n,{passive:!0}),()=>{e.removeEventListener("scroll",n),t&&clearTimeout(t)}},[c]);let[d,u]=(0,s.useState)(!1),m=(0,s.useRef)({stuck:!0}),f=(0,s.useRef)(!1),p=(0,s.useRef)(t.length);(0,s.useEffect)(()=>{let e=t[t.length-1];t.length>p.current&&(null==e?void 0:e.role)==="user"&&(f.current=!0),p.current=t.length},[t]),(0,s.useEffect)(()=>{var e,t;let n=er(i.current),r=null==(e=l.current)?void 0:e.parentElement;if(!n||!r)return;let s=!1,a=e=>{var t;!s&&(u(et({scrollTop:n.scrollTop,scrollHeight:n.scrollHeight,clientHeight:n.clientHeight})),t=m.current,(f.current||t.stuck)&&(f.current=!1,n.scrollTo({top:n.scrollHeight,behavior:e?"auto":"smooth"})))};a(!1);let o=()=>({scrollTop:n.scrollTop,scrollHeight:n.scrollHeight,clientHeight:n.clientHeight}),c=null,d=()=>{let e=o();m.current=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:96;return{stuck:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:96;return en(e)<=t}(t,n)}}(m.current,e),u(et(e))},p=()=>{u(et(o()))},h=e=>{var t;if("keydown"!==e.type||"PageUp"===(t=e.key)||"PageDown"===t||"Home"===t||"End"===t||"ArrowUp"===t||"ArrowDown"===t||" "===t||"Spacebar"===t){if("pointerdown"===e.type){s=!0,n.scrollTo({top:n.scrollTop,behavior:"auto"});return}"function"==typeof requestAnimationFrame?(null!==c&&cancelAnimationFrame(c),c=requestAnimationFrame(()=>{c=null,d()})):d()}},x=()=>{s&&(s=!1,d())};n.addEventListener("scroll",p,{passive:!0});let g=null!=(t=i.current)?t:n;for(let e of es)g.addEventListener(e,h,{passive:!0});let b=window;null==b||b.addEventListener("pointerup",x,{passive:!0}),null==b||b.addEventListener("pointercancel",x,{passive:!0});let v=()=>{for(let e of(null!==c&&"function"==typeof cancelAnimationFrame&&(cancelAnimationFrame(c),c=null),n.removeEventListener("scroll",p),es))g.removeEventListener(e,h);null==b||b.removeEventListener("pointerup",x),null==b||b.removeEventListener("pointercancel",x)};if("undefined"==typeof ResizeObserver)return v;let j=new ResizeObserver(()=>{a(!0)});return j.observe(r),()=>{j.disconnect(),v()}},[t.length,n]);let h=(0,s.useCallback)(()=>{let e=er(i.current);m.current={stuck:!0},null==e||e.scrollTo({top:e.scrollHeight,behavior:"smooth"})},[]);return 0!==t.length||n?(0,r.jsxs)("div",{ref:i,className:"relative flex-1 min-h-0",children:[(0,r.jsx)(a.F,{className:"h-full",children:(0,r.jsxs)("div",{className:"flex flex-col gap-1 pt-2 ".concat("pb-24"),children:[t.map(e=>(0,r.jsx)(ee,{message:e},e.id)),n&&(0,r.jsx)("div",{className:"flex justify-start px-4 py-3",children:(0,r.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-border bg-card px-3 py-2 text-sm text-muted-foreground",children:[(0,r.jsx)("span",{className:"h-1.5 w-1.5 animate-pulse rounded-full bg-primary"}),"thinking…"]})}),(0,r.jsx)("div",{ref:l})]})}),d&&(0,r.jsx)("button",{type:"button",onClick:h,"data-elanous-jump-to-bottom":"true",className:"absolute bottom-3 left-1/2 -translate-x-1/2 rounded-full border border-border bg-card/95 px-3 py-1.5 text-xs shadow-lg backdrop-blur transition-colors hover:bg-accent",children:"맨 아래로 ↓"})]}):(0,r.jsxs)("div",{className:"flex flex-1 items-center justify-center p-8 text-center text-sm text-muted-foreground",children:["Start a conversation. Type ",(0,r.jsx)("code",{className:"mx-1 rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:":help"})," to see meta commands."]})}},61777:(e,t,n)=>{n.d(t,{$:()=>o});var r=n(77947);let s=/[.!?。!?]+\s*/g;function a(){return void 0!==window.speechSynthesis}function o(e){var t;let[n,o]=(0,r.useState)(!1);(0,r.useEffect)(()=>{o(a())},[]);let[,l]=(0,r.useState)({}),i=(0,r.useRef)(""),c=(0,r.useRef)(e.enabled);c.current=e.enabled;let d=null!=(t=e.maxBufferChars)?t:80,u=(0,r.useRef)(e.language);u.current=e.language,(0,r.useEffect)(()=>{var e,t;if(!n)return;let r=()=>l({});return window.speechSynthesis.getVoices(),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)}},[n]),(0,r.useEffect)(()=>{n&&(e.enabled||(window.speechSynthesis.cancel(),i.current=""))},[e.enabled,n]);let m=(0,r.useCallback)(e=>{if(!n||!c.current)return;let t=e.trim();if(!t)return;let r=new SpeechSynthesisUtterance(t),s=function(e){var t;if(!a()||!e)return null;let n=window.speechSynthesis.getVoices();if(0===n.length)return null;let r=e.toLowerCase(),s=n.find(e=>e.lang.toLowerCase()===r);if(s)return s;let o=r.split("-")[0];return null!=(t=n.find(e=>e.lang.toLowerCase().startsWith(o)))?t:null}(u.current);s&&(r.voice=s),u.current&&(r.lang=u.current),window.speechSynthesis.speak(r)},[n]),f=(0,r.useCallback)(e=>{if(!e||!c.current)return;i.current+=e;let{sentences:t,remainder:n}=function(e){let t,n=[],r=0;for(s.lastIndex=0;null!==(t=s.exec(e));){let s=t.index+t[0].length,a=e.slice(r,s).trim();a&&n.push(a),r=s}return{sentences:n,remainder:e.slice(r)}}(i.current);for(let e of(i.current=n,t))m(e);if(i.current.length>=d){let e=i.current;i.current="",m(e)}},[d,m]);return{pushText:f,flush:(0,r.useCallback)(()=>{let e=i.current.trim();i.current="",e&&m(e)},[m]),cancel:(0,r.useCallback)(()=>{n&&(window.speechSynthesis.cancel(),i.current="")},[n]),supported:n}}},64385:(e,t,n)=>{n.d(t,{$L:()=>i,Kz:()=>l,Vm:()=>o,kv:()=>a});let r="elanous.pwa.chat.autoRouting",s="elanous-chat-routing-changed",a={autoRouting:!1};function o(){return{autoRouting:function(e,t){try{let n=window.localStorage.getItem(e);if("1"===n)return!0;if("0"===n)return!1;return t}catch(e){return t}}(r,a.autoRouting)}}function l(e){try{window.localStorage.setItem(r,e?"1":"0")}catch(e){}window.dispatchEvent(new CustomEvent(s))}function i(e){let t=()=>e(o()),n=t=>{t.key===r&&e(o())};return window.addEventListener(s,t),window.addEventListener("storage",n),()=>{window.removeEventListener(s,t),window.removeEventListener("storage",n)}}},65333:(e,t,n)=>{n.d(t,{F:()=>d});var r=n(58443);n(77947);var s=n(564),a=n(73536),o=n(78490),l=n(76546),i=n(13230),c=n(49413);function d(e){let{className:t,children:n,...l}=e;return(0,r.jsxs)(s.V,{"data-slot":"scroll-area",className:(0,c.cn)("relative",t),...l,children:[(0,r.jsx)(a.B,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",children:n}),(0,r.jsx)(u,{}),(0,r.jsx)(o.I,{})]})}function u(e){let{className:t,orientation:n="vertical",...s}=e;return(0,r.jsx)(l.V,{"data-slot":"scroll-area-scrollbar","data-orientation":n,orientation:n,className:(0,c.cn)("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",t),...s,children:(0,r.jsx)(i.l,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}},75355:(e,t,n)=>{n.d(t,{hn:()=>a,qv:()=>o,sg:()=>l});let r="elanous.ocr.prefs",s={defaultUseLlmVision:!1,defaultPreferHandwriting:!1};function a(){if("undefined"==typeof localStorage)return{...s};try{let e=localStorage.getItem(r);if(!e)return{...s};let t=JSON.parse(e);return{defaultUseLlmVision:"boolean"==typeof t.defaultUseLlmVision?t.defaultUseLlmVision:s.defaultUseLlmVision,defaultPreferHandwriting:"boolean"==typeof t.defaultPreferHandwriting?t.defaultPreferHandwriting:s.defaultPreferHandwriting}}catch(e){return{...s}}}function o(e){if("undefined"==typeof localStorage)return{...s,...e};let t={...a(),...e};try{localStorage.setItem(r,JSON.stringify(t))}catch(e){}return t}function l(){if("undefined"==typeof localStorage)return{...s};try{localStorage.removeItem(r)}catch(e){}return{...s}}},76588:(e,t,n)=>{function r(e,t){return"".concat("elanous.pwa.snapshot.").concat(e,".").concat(t&&t.length>0?t:"singleton")}function s(){try{return window.localStorage}catch(e){return null}}function a(e){let t=s();if(!t)return null;try{let n=t.getItem(e);if(null===n)return null;return JSON.parse(n)}catch(n){try{t.removeItem(e)}catch(e){}return null}}function o(e,t){let n,r=s();if(r){try{n=JSON.stringify(t)}catch(e){return}if(!(n.length>262144))try{r.setItem(e,n)}catch(e){}}}function l(e){let t=s();if(t)try{t.removeItem(e)}catch(e){}}n.d(t,{N2:()=>a,Os:()=>o,o1:()=>r,yd:()=>l})},79935:(e,t,n)=>{n.d(t,{S:()=>d});var r=n(58443),s=n(77947),a=n(73632),o=n(65233),l=n(49413),i=n(5131),c=n(23783);function d(e){let{sessionId:t,source:n="inline",variant:d="default",className:u,showCopyIcon:m=!0}=e,[f,p]=(0,s.useState)(!1),h=(0,s.useRef)(null);(0,s.useEffect)(()=>()=>{h.current&&clearTimeout(h.current)},[]);let x=async()=>{if(!t)return;let e=await (0,i.lW)(t);(0,c.cY)("webterm.session-id-chip.copy",{sessionId:t,ok:e,source:n}),e&&(p(!0),h.current&&clearTimeout(h.current),h.current=setTimeout(()=>p(!1),1200))},g=(0,i.o)(t),b=!t,v=t?"세션 ID 전체 (".concat(t.length,"자): ").concat(t,"\n\xb7 클릭하면 자동 복사 — 단축 표시 (앞 8자 + …)\n\xb7 새 세션 fork 시 다른 ID 발급 (crypto.randomUUID v4)"):"세션 미설정";return(0,r.jsxs)("span",{role:"button",tabIndex:b?-1:0,"aria-disabled":b,onClick:b?void 0:e=>{e.stopPropagation(),x()},onKeyDown:b?void 0:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),e.stopPropagation(),x())},title:v,"aria-label":t?"세션 ID ".concat(t," 복사"):"세션 미설정","data-elanous-session-id":null!=t?t:"","data-elanous-action":"session-id-copy",className:(0,l.cn)("inline-flex items-center gap-1 rounded font-mono transition-colors select-none focus:outline-none focus:ring-1 focus:ring-ring","default"===d?"px-1 py-0.5 hover:bg-secondary":"opacity-70 hover:opacity-100 hover:bg-muted/40 px-0.5",f&&"bg-emerald-500/10 text-emerald-600 dark:text-emerald-400",b&&"cursor-not-allowed opacity-40",!b&&"cursor-copy",u),children:[(0,r.jsx)("span",{children:g}),m&&(f?(0,r.jsx)(a.A,{className:"h-3 w-3","aria-hidden":!0}):(0,r.jsx)(o.A,{className:"h-3 w-3 opacity-60","aria-hidden":!0}))]})}},83654:(e,t,n)=>{n.d(t,{rm:()=>l});var r=n(58443),s=n(77947),a=n(34015),o=n(33158);function l(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{loadStatus:n=o.gh,pollMs:l=6e4,initialStatus:i}=t,{config:c}=(0,a.Q)(),[d,u]=(0,s.useState)(void 0===i?void 0:i);if((0,s.useEffect)(()=>{let e=!1,t=async()=>{if(!c.baseUrl){e||u(null);return}let t=await n({baseUrl:c.baseUrl,...c.token?{token:c.token}:{}});e||u(t)};if(t(),l<=0)return()=>{e=!0};let r=setInterval(()=>{t()},l);return()=>{e=!0,clearInterval(r)}},[c.baseUrl,c.token,n,l]),void 0===d)return null;if(null===d)return(0,r.jsx)("div",{className:"rounded-md border border-border bg-muted/40 px-2 py-1 text-[11px] text-muted-foreground",title:"예산 상태를 읽지 못했습니다","data-elanous-pill":"budget","data-budget-status":"unread",children:"budget —"});let m="warning"===(e=d.status)||"cap-exceeded"===e;return(0,r.jsx)("div",{className:m?"rounded-md border border-amber-500/50 bg-amber-500/10 px-2 py-1 text-[11px] font-medium text-amber-700 dark:text-amber-300":"rounded-md border border-border bg-muted/40 px-2 py-1 text-[11px] text-muted-foreground",title:"".concat(d.monthYYYYMM," \xb7 ").concat(d.status),"data-elanous-pill":"budget","data-budget-status":d.status,"data-budget-emphasis":m?"true":"false",children:function(e){let t="이번 달 ".concat(function(e){let t=Number.isFinite(e)?e:0;return"$".concat(t.toFixed(2))}(e.monthSoFarUsd));return null!=e.percent&&Number.isFinite(e.percent)?"".concat(t," \xb7 ").concat(e.percent,"%"):t}(d)})}},87139:(e,t,n)=>{n.d(t,{hG:()=>c});var r=n(8476),s=n(23783);let a=new Set(["cli","pwa","tg","dc"]);function o(e){var t;let n;e.origin&&a.has(e.origin)?n=e.origin:"telegram"===e.source?n="tg":"cli"===e.source&&(n="cli");let r=(null!=(t=e.preview)?t:"").trim();return{id:e.id,msgCount:e.messageCount,lastTurnAt:e.updatedAt,...r?{lastMsgPreview:r}:{},...n?{origin:n}:{}}}class l{list(){return this.cache}start(){!this.disposed&&(this.timer||(this.scheduleTimer(),this.openEventStream(),this.forceRefresh()))}stop(){this.timer&&(clearInterval(this.timer),this.timer=null,this.currentIntervalMs=null),this.closeEventStream()}dispose(){this.disposed=!0,this.stop(),this.listeners.clear()}enterActive(){this.activeCount+=1,this.scheduleTimer();let e=!1;return()=>{e||(e=!0,this.activeCount=Math.max(0,this.activeCount-1),this.scheduleTimer())}}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}forceRefresh(){if(this.inFlight)return this.inFlight;let e=this.fetchAndStore().finally(()=>{this.inFlight=null});return this.inFlight=e,e}async forget(e){(0,s.cY)("webterm.sessions.forget",{sessionId:e}),await this.api.delete(e),await this.forceRefresh()}scheduleTimer(){if(this.disposed)return;let e=this.activeCount>0?this.opts.activeIntervalMs:this.opts.idleIntervalMs;this.currentIntervalMs===e&&this.timer||(this.timer&&(clearInterval(this.timer),this.timer=null),this.currentIntervalMs=e,this.timer=setInterval(()=>{this.forceRefresh()},e))}openEventStream(){if(this.es||this.disposed||"undefined"==typeof EventSource)return;let e=this.client.sessionStoreEventsUrl();if(e)try{let t=new EventSource(e),n=()=>{this.sseDebounce&&clearTimeout(this.sseDebounce),this.sseDebounce=setTimeout(()=>{this.forceRefresh()},500)};t.addEventListener("session.created",n),t.addEventListener("session.updated",n),t.onmessage=n,this.es=t}catch(e){this.es=null}}closeEventStream(){var e;this.sseDebounce&&(clearTimeout(this.sseDebounce),this.sseDebounce=null),null==(e=this.es)||e.close(),this.es=null}async fetchAndStore(){try{let e=await this.api.list(),t=(Array.isArray(null==e?void 0:e.sessions)?e.sessions:[]).map(o);if(function(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let r=e[n],s=t[n];if(r.id!==s.id||r.msgCount!==s.msgCount||r.lastTurnAt!==s.lastTurnAt||r.lastMsgPreview!==s.lastMsgPreview||r.origin!==s.origin)return!1}return!0}(this.cache,t))return;for(let e of(this.cache=t,this.listeners))try{e()}catch(e){}}catch(e){(0,s.cY)("webterm.sessions.fetch.error",{err:String(e)})}}constructor(e,t={activeIntervalMs:1e4,idleIntervalMs:6e4}){this.client=e,this.opts=t,this.cache=[],this.listeners=new Set,this.activeCount=0,this.timer=null,this.currentIntervalMs=null,this.inFlight=null,this.es=null,this.sseDebounce=null,this.disposed=!1,this.api=new r.jU(e)}}let i=null;function c(e){if(i&&i.client===e)return i.svc;i&&i.svc.dispose();let t=new l(e);return i={client:e,svc:t},t.start(),t}},89234:(e,t,n)=>{n.d(t,{T:()=>u});var r=n(58443),s=n(77947),a=n(77306),o=n(13851),l=n(34015),i=n(89704),c=n(23783),d=n(79609);function u(e){let{onAttached:t}=e,{config:n}=(0,l.Q)(),[u,m]=(0,s.useState)(!1),f=(0,s.useRef)(null),p=async e=>{var r;let s=null==(r=e.target.files)?void 0:r[0];if(e.target.value="",s){if(!n.baseUrl)return void i.oR.error("Daemon URL 미설정 — Settings 에서 입력");m(!0),(0,c.cY)("webterm.attach.pick",{filename:s.name,size:s.size,type:s.type});try{let e=await (0,d.v)({baseUrl:n.baseUrl,...n.token?{token:n.token}:{},file:s,filename:s.name});if(!e.ok){(0,c.cY)("webterm.attach.error",{status:e.status,detail:e.reason.slice(0,200)}),i.oR.error("업로드 실패 (".concat(e.status,")"));return}let{meta:r}=e;(0,c.cY)("webterm.attach.ok",{id:r.id,size:r.size}),i.oR.success("\uD83D\uDCCE ".concat(r.filename," (").concat((r.size/1024).toFixed(1)," kB)")),null==t||t(r)}catch(e){(0,c.cY)("webterm.attach.exception",{reason:String(e)}),i.oR.error("업로드 실패: ".concat(String(e instanceof Error?e.message:e)))}finally{m(!1)}}};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button",onClick:()=>{var e;return null==(e=f.current)?void 0:e.click()},disabled:u,"aria-label":"attach photo",title:"attach photo (camera or file)",className:"rounded p-1.5 text-muted-foreground hover:bg-accent hover:text-foreground disabled:opacity-50",children:u?(0,r.jsx)(a.A,{className:"h-3.5 w-3.5 animate-spin"}):(0,r.jsx)(o.A,{className:"h-3.5 w-3.5"})}),(0,r.jsx)("input",{ref:f,type:"file",accept:"image/*",capture:"environment",className:"hidden",onChange:p})]})}},97228:(e,t,n)=>{n.d(t,{vG:()=>a});var r=n(58443),s=n(77947);function a(e){let{children:t}=e;return!function(){let[e,t]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{"public"===new URLSearchParams(window.location.search).get("capture")&&t(!0)},[]),e}()?(0,r.jsx)(r.Fragment,{children:t}):null}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7294],{28300:(e,t,n)=>{n.d(t,{g:()=>l});var r=n(77947);let l="undefined"!=typeof document?r.useLayoutEffect:()=>{}},30084:(e,t,n)=>{n.d(t,{U:()=>o,a:()=>l});var r=n(47277);function l(e,t,n,l){var o,i,c,f,s;let d=(0,r.j)(u).current;return o=d,i=e,c=t,f=n,s=l,(o.refs[0]!==i||o.refs[1]!==c||o.refs[2]!==f||o.refs[3]!==s)&&a(d,[e,t,n,l]),d.callback}function o(e){var t,n;let l=(0,r.j)(u).current;return t=l,n=e,(t.refs.length!==n.length||t.refs.some((e,t)=>e!==n[t]))&&a(l,e),l.callback}function u(){return{callback:null,cleanup:null,refs:[]}}function a(e,t){if(e.refs=t,t.every(e=>null==e)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),null!=n){let r=Array(t.length).fill(null);for(let e=0;e<t.length;e+=1){let l=t[e];if(null!=l)switch(typeof l){case"function":{let t=l(n);"function"==typeof t&&(r[e]=t);break}case"object":l.current=n}}e.cleanup=()=>{for(let e=0;e<t.length;e+=1){let n=t[e];if(null!=n)switch(typeof n){case"function":{let t=r[e];"function"==typeof t?t():n(null);break}case"object":n.current=null}}}}}}},34420:(e,t,n)=>{function r(){}n.d(t,{t0:()=>l,tE:()=>r}),Object.freeze([]);let l=Object.freeze({})},44746:(e,t,n)=>{n.d(t,{_:()=>l});let r=parseInt(n(77947).version,10);function l(e){return r>=e}},45130:(e,t,n)=>{let r;function l(){return"undefined"!=typeof window}function o(e){return a(e)?(e.nodeName||"").toLowerCase():"#document"}function u(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function a(e){return!!l()&&(e instanceof Node||e instanceof u(e).Node)}function i(e){return!!l()&&(e instanceof Element||e instanceof u(e).Element)}function c(e){return!!l()&&(e instanceof HTMLElement||e instanceof u(e).HTMLElement)}function f(e){return!!l()&&"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof u(e).ShadowRoot)}function s(e){let{overflow:t,overflowX:n,overflowY:r,display:l}=p(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&"inline"!==l&&"contents"!==l}function d(){return null==r&&(r="undefined"!=typeof CSS&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),r}function v(e){return/^(html|body|#document)$/.test(o(e))}function p(e){return u(e).getComputedStyle(e)}function y(e){var t;if("html"===o(e))return e;let n=e.assignedSlot||e.parentNode||f(e)&&e.host||(null==(t=(a(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement);return f(n)?n.host:n}n.d(t,{$4:()=>y,L9:()=>p,Ll:()=>a,Ng:()=>f,Tc:()=>d,ZU:()=>s,eu:()=>v,mq:()=>o,sb:()=>c,vq:()=>i,zk:()=>u})},47277:(e,t,n)=>{n.d(t,{j:()=>o});var r=n(77947);let l={};function o(e,t){let n=r.useRef(l);return n.current===l&&(n.current=e(t)),n}},49255:(e,t,n)=>{n.d(t,{s:()=>f});var r=n(77947),l=n(45130),o=n(68578),u=n(28300),a=n(67123),i=n(76629);let c=r.createContext(void 0);function f(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{disabled:t=!1,focusableWhenDisabled:n,tabIndex:l=0,native:f=!0,composite:d}=e,v=r.useRef(null),p=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=r.useContext(c);if(void 0===t&&!e)throw Error((0,i.A)(16));return t}(!0),y=null!=d?d:void 0!==p,{props:b}=function(e){let{focusableWhenDisabled:t,disabled:n,composite:l=!1,tabIndex:o=0,isNativeButton:u}=e,a=l&&!1!==t,i=l&&!1===t;return{props:r.useMemo(()=>{let e={onKeyDown(e){n&&t&&"Tab"!==e.key&&e.preventDefault()}};return l||(e.tabIndex=o,!u&&n&&(e.tabIndex=t?o:-1)),(u&&(t||a)||!u&&n)&&(e["aria-disabled"]=n),u&&(!t||i)&&(e.disabled=n),e},[l,n,t,a,i,u,o])}}({focusableWhenDisabled:n,disabled:t,composite:y,tabIndex:l,isNativeButton:f}),m=r.useCallback(()=>{let e=v.current;s(e)&&y&&t&&void 0===b.disabled&&e.disabled&&(e.disabled=!1)},[t,b.disabled,y]);return(0,u.g)(m,[m]),{getButtonProps:r.useCallback(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{onClick:n,onMouseDown:r,onKeyUp:l,onKeyDown:o,onPointerDown:u,...i}=e,c=f?"button":void 0;return(0,a.v6)({type:c,onClick(e){if(t)return void e.preventDefault();null==n||n(e)},onMouseDown(e){t||null==r||r(e)},onKeyDown(e){var r;if(t||((0,a.PT)(e),null==o||o(e),e.baseUIHandlerPrevented))return;let l=e.target===e.currentTarget,u=e.currentTarget,i=s(u),c=!f&&!!((null==(r=u)?void 0:r.tagName)==="A"&&(null==r?void 0:r.href)),d=l&&(f?i:!c),v="Enter"===e.key,p=" "===e.key,b=u.getAttribute("role"),m=(null==b?void 0:b.startsWith("menuitem"))||"option"===b||"gridcell"===b;if(l&&y&&p){if(e.defaultPrevented&&m)return;e.preventDefault(),c||f&&i?(u.click(),e.preventBaseUIHandler()):d&&(null==n||n(e),e.preventBaseUIHandler());return}d&&(!f&&(p||v)&&e.preventDefault(),!f&&v&&(null==n||n(e)))},onKeyUp(e){if(!t){if((0,a.PT)(e),null==l||l(e),e.target===e.currentTarget&&f&&y&&s(e.currentTarget)&&" "===e.key)return void e.preventDefault();!e.baseUIHandlerPrevented&&(e.target!==e.currentTarget||f||y||" "!==e.key||null==n||n(e))}},onPointerDown(e){if(t)return void e.preventDefault();null==u||u(e)}},f?void 0:{role:"button"},b,i)},[t,b,y,f]),buttonRef:(0,o.K)(e=>{v.current=e,m()})}}function s(e){return(0,l.sb)(e)&&"BUTTON"===e.tagName}},63326:(e,t,n)=>{n.d(t,{$:()=>u});var r=n(77947),l=n(49255),o=n(78583);let u=r.forwardRef(function(e,t){let{render:n,className:r,disabled:u=!1,focusableWhenDisabled:a=!1,nativeButton:i=!0,style:c,...f}=e,{getButtonProps:s,buttonRef:d}=(0,l.s)({disabled:u,focusableWhenDisabled:a,native:i});return(0,o.o)("button",e,{state:{disabled:u},ref:[t,d],props:[f,s]})})},66235:(e,t,n)=>{n.d(t,{r:()=>r});function r(e,t){return e&&!t?e:!e&&t?t:e||t?{...e,...t}:void 0}},67123:(e,t,n)=>{n.d(t,{PT:()=>v,VN:()=>p,lZ:()=>u,v6:()=>o});var r=n(66235);let l={};function o(e,t,n,r,l){if(!n&&!r&&!l&&!e)return a(t);let o=a(e);return t&&(o=i(o,t)),n&&(o=i(o,n)),r&&(o=i(o,r)),l&&(o=i(o,l)),o}function u(e){if(0===e.length)return l;if(1===e.length)return a(e[0]);let t=a(e[0]);for(let n=1;n<e.length;n+=1)t=i(t,e[n]);return t}function a(e){return f(e)?{...s(e,l)}:function(e){let t={...e};for(let e in t){let n=t[e];c(e,n)&&(t[e]=d(n))}return t}(e)}function i(e,t){return f(t)?s(t,e):function(e,t){if(!t)return e;for(let n in t){let l=t[n];switch(n){case"style":e[n]=(0,r.r)(e.style,l);break;case"className":e[n]=p(e.className,l);break;default:c(n,l)?e[n]=function(e,t){return t?e?(...n)=>{let r=n[0];if(y(r)){v(r);let l=t(...n);return r.baseUIHandlerPrevented||e?.(...n),l}let l=t(...n);return e?.(...n),l}:d(t):e}(e[n],l):e[n]=l}}return e}(e,t)}function c(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),l=e.charCodeAt(2);return 111===n&&110===r&&l>=65&&l<=90&&("function"==typeof t||void 0===t)}function f(e){return"function"==typeof e}function s(e,t){return f(e)?e(t):e??l}function d(e){return e?(...t)=>{let n=t[0];return y(n)&&v(n),e(...t)}:e}function v(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function p(e,t){return t?e?t+" "+e:t:e}function y(e){return null!=e&&"object"==typeof e&&"nativeEvent"in e}},68578:(e,t,n)=>{n.d(t,{K:()=>i});var r,l=n(77947),o=n(47277);let u=(r||(r=n.t(l,2)))["useInsertionEffect".concat(Math.random().toFixed(1)).slice(0,-3)],a=u&&u!==l.useLayoutEffect?u:e=>e();function i(e){let t=(0,o.j)(c).current;return t.next=e,a(t.effect),t.trampoline}function c(){let e={next:void 0,callback:f,trampoline:function(){for(var t,n=arguments.length,r=Array(n),l=0;l<n;l++)r[l]=arguments[l];return null==(t=e.callback)?void 0:t.call(e,...r)},effect:()=>{e.callback=e.next}};return e}function f(){}},69426:(e,t,n)=>{n.d(t,{F:()=>u});var r=n(24477);let l=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,o=r.$,u=(e,t)=>n=>{var r;if((null==t?void 0:t.variants)==null)return o(e,null==n?void 0:n.class,null==n?void 0:n.className);let{variants:u,defaultVariants:a}=t,i=Object.keys(u).map(e=>{let t=null==n?void 0:n[e],r=null==a?void 0:a[e];if(null===t)return null;let o=l(t)||l(r);return u[e][o]}),c=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return void 0===r||(e[n]=r),e},{});return o(e,i,null==t||null==(r=t.compoundVariants)?void 0:r.reduce((e,t)=>{let{class:n,className:r,...l}=t;return Object.entries(l).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...a,...c}[t]):({...a,...c})[t]===n})?[...e,n,r]:e},[]),null==n?void 0:n.class,null==n?void 0:n.className)}},76629:(e,t,n)=>{n.d(t,{A:()=>r});let r=function(e,...t){let n=new URL("https://base-ui.com/production-error");return n.searchParams.set("code",e.toString()),t.forEach(e=>n.searchParams.append("args[]",e)),`Base UI error #${e}; visit ${n} for the full message.`}},78583:(e,t,n)=>{n.d(t,{o:()=>s});var r=n(76629),l=n(77947),o=n(30084),u=n(44746);function a(e){if(!l.isValidElement(e))return null;let t=e.props;return((0,u._)(19)?t?.ref:e.ref)??null}var i=n(66235),c=n(34420),f=n(67123);function s(e,t,n={}){let u=t.render,v=function(e,t={}){var n;let{className:r,style:l,render:u}=e,{state:s=c.t0,ref:d,props:v,stateAttributesMapping:p,enabled:y=!0}=t,b=y?"function"==typeof r?r(s):r:void 0,m=y?"function"==typeof l?l(s):l:void 0,h=y?function(e,t){let n={};for(let r in e){let l=e[r];if(t?.hasOwnProperty(r)){let e=t[r](l);null!=e&&Object.assign(n,e);continue}!0===l?n[`data-${r.toLowerCase()}`]="":l&&(n[`data-${r.toLowerCase()}`]=l.toString())}return n}(s,p):c.t0,g=y&&v?Array.isArray(n=v)?(0,f.lZ)(n):(0,f.v6)(void 0,n):void 0,k=y?(0,i.r)(h,g)??{}:c.t0;return("undefined"!=typeof document&&(y?Array.isArray(d)?k.ref=(0,o.U)([k.ref,a(u),...d]):k.ref=(0,o.a)(k.ref,a(u),d):(0,o.a)(null,null)),y)?(void 0!==b&&(k.className=(0,f.VN)(k.className,b)),void 0!==m&&(k.style=(0,i.r)(k.style,m)),k):c.t0}(t,n);return!1===n.enabled?null:function(e,t,n,o){if(t){if("function"==typeof t)return t(n,o);let e=(0,f.v6)(n,t.props);e.ref=n.ref;let r=t;return r?.$$typeof===d&&(r=l.Children.toArray(t)[0]),l.cloneElement(r,e)}if(e&&"string"==typeof e){var u,a;return u=e,a=n,"button"===u?(0,l.createElement)("button",{type:"button",...a,key:a.key}):"img"===u?(0,l.createElement)("img",{alt:"",...a,key:a.key}):l.createElement(u,a)}throw Error((0,r.A)(8))}(e,u,v,n.state??c.t0)}let d=Symbol.for("react.lazy")}}]);