elanous 0.2.9 → 0.2.11

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 (694) hide show
  1. package/apps/pwa/out/404/index.html +1 -1
  2. package/apps/pwa/out/404.html +1 -1
  3. package/apps/pwa/out/_next/static/Y4zKzL62sakG5momz3SoQ/_buildManifest.js +1 -0
  4. package/apps/pwa/out/_next/static/chunks/1159-0c5ef8bc21cb6afb.js +1 -0
  5. package/apps/pwa/out/_next/static/chunks/1394-556de6d71bbdb0fb.js +1 -0
  6. package/apps/pwa/out/_next/static/chunks/1452.93700483b9d4fc61.js +9 -0
  7. package/apps/pwa/out/_next/static/chunks/{6062-73e68343a9814f6a.js → 1829-b453a1b22d3999bb.js} +1 -1
  8. package/apps/pwa/out/_next/static/chunks/2176-c379e3ebce874151.js +1 -0
  9. package/apps/pwa/out/_next/static/chunks/2310-7a59f043f6db207e.js +1 -0
  10. package/apps/pwa/out/_next/static/chunks/2426.8c6ee0c668d53def.js +1 -0
  11. package/apps/pwa/out/_next/static/chunks/2548-6e316138d347cefe.js +1 -0
  12. package/apps/pwa/out/_next/static/chunks/3170-7ec60a56fa0e4728.js +1 -0
  13. package/apps/pwa/out/_next/static/chunks/3278-ae6ef084769f6195.js +1 -0
  14. package/apps/pwa/out/_next/static/chunks/3454-988a53dac60a1763.js +1 -0
  15. package/apps/pwa/out/_next/static/chunks/3638-aa80b4641ea439db.js +1 -0
  16. package/apps/pwa/out/_next/static/chunks/3735-fe3402553ac1c9c6.js +1 -0
  17. package/apps/pwa/out/_next/static/chunks/3869-a39d1d9921e10d43.js +1 -0
  18. package/apps/pwa/out/_next/static/chunks/390.c373e31b3b9d0c41.js +5 -0
  19. package/apps/pwa/out/_next/static/chunks/3992-2e522a8ac5f2afde.js +25 -0
  20. package/apps/pwa/out/_next/static/chunks/4215-c9d91dd644ec1719.js +1 -0
  21. package/apps/pwa/out/_next/static/chunks/4508-5d0161d1e724d735.js +1 -0
  22. package/apps/pwa/out/_next/static/chunks/4685-c3c1c625b71accd1.js +1 -0
  23. package/apps/pwa/out/_next/static/chunks/4733-623a79345b171e1c.js +1 -0
  24. package/apps/pwa/out/_next/static/chunks/4883.3bd969ea1d3aaaff.js +2 -0
  25. package/apps/pwa/out/_next/static/chunks/507-5acd98bd6dab2d8a.js +1 -0
  26. package/apps/pwa/out/_next/static/chunks/5445-745eb795c5963d79.js +1 -0
  27. package/apps/pwa/out/_next/static/chunks/5532.6899a12958a89b72.js +1 -0
  28. package/apps/pwa/out/_next/static/chunks/5845-e6c003ce8d5fd36a.js +1 -0
  29. package/apps/pwa/out/_next/static/chunks/5978-b27004c677119115.js +1 -0
  30. package/apps/pwa/out/_next/static/chunks/{8046cadf-211ca3c0e00f2b72.js → 5cd7e3a9-404fd6b8d0ecd44c.js} +1 -1
  31. package/apps/pwa/out/_next/static/chunks/6048-4c5c33579bc4ef78.js +1 -0
  32. package/apps/pwa/out/_next/static/chunks/6303-422dbf0f67c72aac.js +1 -0
  33. package/apps/pwa/out/_next/static/chunks/6751-bb3595948b2e311b.js +1 -0
  34. package/apps/pwa/out/_next/static/chunks/7274-19b7279f18b47ab3.js +1 -0
  35. package/apps/pwa/out/_next/static/chunks/{4323.c5dfb6f503304775.js → 7334.a6679d9168f37aa8.js} +1 -1
  36. package/apps/pwa/out/_next/static/chunks/7551-a0e0707b79164ddd.js +1 -0
  37. package/apps/pwa/out/_next/static/chunks/7777-79f845045aa1ed86.js +1 -0
  38. package/apps/pwa/out/_next/static/chunks/79f8be9e-957d68913b590b08.js +1 -0
  39. package/apps/pwa/out/_next/static/chunks/8025-cc24ee5d8f2fb6f8.js +1 -0
  40. package/apps/pwa/out/_next/static/chunks/8039-df92e08fede5de8f.js +1 -0
  41. package/apps/pwa/out/_next/static/chunks/8206-c6684dcde12be721.js +1 -0
  42. package/apps/pwa/out/_next/static/chunks/8421-1c4acfb1395a0edf.js +1 -0
  43. package/apps/pwa/out/_next/static/chunks/8605-ea5bee9dfae512c7.js +1 -0
  44. package/apps/pwa/out/_next/static/chunks/8725.bf46bb1395dd0fa2.js +1 -0
  45. package/apps/pwa/out/_next/static/chunks/8734-252d511cd276c0dc.js +1 -0
  46. package/apps/pwa/out/_next/static/chunks/8834-ca1cb09c1cb1a6bf.js +1 -0
  47. package/apps/pwa/out/_next/static/chunks/{2415.ed6428ff334c7ce2.js → 9269.d2a4795bc6812717.js} +1 -1
  48. package/apps/pwa/out/_next/static/chunks/9538-2816b90923606459.js +1 -0
  49. package/apps/pwa/out/_next/static/chunks/9656-c1540088f5859c80.js +1 -0
  50. package/apps/pwa/out/_next/static/chunks/9906-482c6619b3fdda20.js +1 -0
  51. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-d16993889b125c42.js +1 -0
  52. package/apps/pwa/out/_next/static/chunks/app/approvals/page-1dcdc58fc2de2454.js +1 -0
  53. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-6a061bd97f0b9398.js +1 -0
  54. package/apps/pwa/out/_next/static/chunks/app/board/page-cb95a7432c9ee744.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/app/botlab/{page-f972fc1c00a62e88.js → page-b12b6d2f8d2d1aea.js} +1 -1
  56. package/apps/pwa/out/_next/static/chunks/app/bots/page-b9efe868bfd36255.js +1 -0
  57. package/apps/pwa/out/_next/static/chunks/app/chat/page-7c97dcdfe2e37a60.js +1 -0
  58. package/apps/pwa/out/_next/static/chunks/app/consult/page-8fd36984f549270a.js +1 -0
  59. package/apps/pwa/out/_next/static/chunks/app/control/page-5721537ca8a3598c.js +1 -0
  60. package/apps/pwa/out/_next/static/chunks/app/design-check/page-b654240a572e4c48.js +1 -0
  61. package/apps/pwa/out/_next/static/chunks/app/editor/page-b9750abc897508c3.js +1 -0
  62. package/apps/pwa/out/_next/static/chunks/app/exec/page-4cd1de371f8ad048.js +1 -0
  63. package/apps/pwa/out/_next/static/chunks/app/field/page-d99f89657828421c.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/app/healthz/route-d16993889b125c42.js +1 -0
  65. package/apps/pwa/out/_next/static/chunks/app/inside/page-50cb2a0eb15e6c83.js +1 -0
  66. package/apps/pwa/out/_next/static/chunks/app/intake/page-c8b1ccda6ba7ae98.js +1 -0
  67. package/apps/pwa/out/_next/static/chunks/app/layout-d6b1d156fb95e74b.js +1 -0
  68. package/apps/pwa/out/_next/static/chunks/app/live/page-2a9932ddb62d76bd.js +1 -0
  69. package/apps/pwa/out/_next/static/chunks/app/market/page-9688f5b4f1ff950f.js +1 -0
  70. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-6b15dd6456c5df09.js +1 -0
  71. package/apps/pwa/out/_next/static/chunks/app/morning/{page-adfbd2ba9598e59a.js → page-35414e0a007b4082.js} +1 -1
  72. package/apps/pwa/out/_next/static/chunks/app/not-found-e7a529e0507ac86c.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/app/observatory/page-e001823c35c9dd67.js +1 -0
  74. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-371423d1a573d64b.js +1 -0
  75. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-4b764b125339ac17.js +1 -0
  76. package/apps/pwa/out/_next/static/chunks/app/ops/seats/page-cdf8e4b01067bcf1.js +1 -0
  77. package/apps/pwa/out/_next/static/chunks/app/outputs/page-3a24072b35470157.js +1 -0
  78. package/apps/pwa/out/_next/static/chunks/app/page-94c82eb0ae5abb32.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/app/reflection/page-0be8d4b2ced75ba0.js +1 -0
  80. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-d37cb0d52f9b6bd5.js +1 -0
  81. package/apps/pwa/out/_next/static/chunks/app/sessions/page-686da0df9bf23e5c.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-4dc614f3ce043e63.js +1 -0
  83. package/apps/pwa/out/_next/static/chunks/app/settings/page-53f80edc6b8dc07c.js +1 -0
  84. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-d02c782fc792e2af.js +1 -0
  85. package/apps/pwa/out/_next/static/chunks/app/setup/layout-d16993889b125c42.js +1 -0
  86. package/apps/pwa/out/_next/static/chunks/app/setup/page-239c17b911b84e72.js +1 -0
  87. package/apps/pwa/out/_next/static/chunks/app/share/page-dc6a79fb003f746c.js +1 -0
  88. package/apps/pwa/out/_next/static/chunks/app/showroom/page-0fffb84cafdc9da6.js +1 -0
  89. package/apps/pwa/out/_next/static/chunks/app/tasks/page-1218753c82d585f6.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/app/term/page-4b5935e67531efb5.js +1 -0
  91. package/apps/pwa/out/_next/static/chunks/app/today/page-3285bc87caf1eaa5.js +1 -0
  92. package/apps/pwa/out/_next/static/chunks/app/trace/page-ad553b0e06505ecd.js +1 -0
  93. package/apps/pwa/out/_next/static/chunks/app/vault/page-fca096e3e860306f.js +1 -0
  94. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-9ebfa78f0d9885c3.js +1 -0
  95. package/apps/pwa/out/_next/static/chunks/app/workflows/page-3dc5f21f7e39622d.js +1 -0
  96. package/apps/pwa/out/_next/static/chunks/app/workspace/page-c6da2b468454532d.js +1 -0
  97. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-93bc70e36f595414.js +1 -0
  98. package/apps/pwa/out/_next/static/chunks/{2ea96958-e8c7e112de50b067.js → f48170cc-d05d28bf87a43bf4.js} +1 -1
  99. package/apps/pwa/out/_next/static/chunks/framework-172630e6aa5e2d7f.js +1 -0
  100. package/apps/pwa/out/_next/static/chunks/main-app-f0fe2d7477845181.js +1 -0
  101. package/apps/pwa/out/_next/static/chunks/main-fc98ac70b44eccb0.js +1 -0
  102. package/apps/pwa/out/_next/static/chunks/pages/_app-5bd7f10271f72413.js +1 -0
  103. package/apps/pwa/out/_next/static/chunks/pages/_error-97d0d85ea05fef9b.js +1 -0
  104. package/apps/pwa/out/_next/static/chunks/webpack-9e4d02d567b98240.js +1 -0
  105. package/apps/pwa/out/_next/static/css/543f56bcb1f79fca.css +1 -0
  106. package/apps/pwa/out/approvals/index.html +1 -1
  107. package/apps/pwa/out/approvals/index.txt +23 -23
  108. package/apps/pwa/out/autopilot/index.html +1 -1
  109. package/apps/pwa/out/autopilot/index.txt +23 -23
  110. package/apps/pwa/out/board/index.html +1 -1
  111. package/apps/pwa/out/board/index.txt +23 -23
  112. package/apps/pwa/out/botlab/index.html +1 -1
  113. package/apps/pwa/out/botlab/index.txt +22 -22
  114. package/apps/pwa/out/bots/index.html +1 -1
  115. package/apps/pwa/out/bots/index.txt +22 -22
  116. package/apps/pwa/out/chat/index.html +1 -1
  117. package/apps/pwa/out/chat/index.txt +22 -22
  118. package/apps/pwa/out/consult/index.html +1 -1
  119. package/apps/pwa/out/consult/index.txt +23 -23
  120. package/apps/pwa/out/control/index.html +1 -1
  121. package/apps/pwa/out/control/index.txt +23 -23
  122. package/apps/pwa/out/design-check/index.html +1 -1
  123. package/apps/pwa/out/design-check/index.txt +23 -23
  124. package/apps/pwa/out/editor/index.html +1 -1
  125. package/apps/pwa/out/editor/index.txt +23 -23
  126. package/apps/pwa/out/exec/index.html +1 -1
  127. package/apps/pwa/out/exec/index.txt +23 -23
  128. package/apps/pwa/out/field/index.html +1 -1
  129. package/apps/pwa/out/field/index.txt +23 -23
  130. package/apps/pwa/out/healthz +1 -1
  131. package/apps/pwa/out/index.html +1 -1
  132. package/apps/pwa/out/index.txt +22 -22
  133. package/apps/pwa/out/inside/index.html +1 -0
  134. package/apps/pwa/out/inside/index.txt +31 -0
  135. package/apps/pwa/out/intake/index.html +1 -1
  136. package/apps/pwa/out/intake/index.txt +23 -23
  137. package/apps/pwa/out/live/index.html +1 -1
  138. package/apps/pwa/out/live/index.txt +23 -23
  139. package/apps/pwa/out/market/index.html +1 -1
  140. package/apps/pwa/out/market/index.txt +22 -22
  141. package/apps/pwa/out/missions/placeholder/index.html +1 -1
  142. package/apps/pwa/out/missions/placeholder/index.txt +22 -22
  143. package/apps/pwa/out/morning/index.html +1 -1
  144. package/apps/pwa/out/morning/index.txt +23 -23
  145. package/apps/pwa/out/observatory/index.html +1 -1
  146. package/apps/pwa/out/observatory/index.txt +23 -23
  147. package/apps/pwa/out/ops/checklist/index.html +1 -1
  148. package/apps/pwa/out/ops/checklist/index.txt +22 -22
  149. package/apps/pwa/out/ops/release/index.html +1 -1
  150. package/apps/pwa/out/ops/release/index.txt +22 -22
  151. package/apps/pwa/out/ops/seats/index.html +1 -0
  152. package/apps/pwa/out/ops/seats/index.txt +30 -0
  153. package/apps/pwa/out/outputs/index.html +1 -0
  154. package/apps/pwa/out/outputs/index.txt +30 -0
  155. package/apps/pwa/out/reflection/index.html +1 -1
  156. package/apps/pwa/out/reflection/index.txt +23 -23
  157. package/apps/pwa/out/scheduler/index.html +1 -1
  158. package/apps/pwa/out/scheduler/index.txt +23 -23
  159. package/apps/pwa/out/sessions/index.html +1 -1
  160. package/apps/pwa/out/sessions/index.txt +22 -22
  161. package/apps/pwa/out/settings/devices/index.html +1 -1
  162. package/apps/pwa/out/settings/devices/index.txt +23 -23
  163. package/apps/pwa/out/settings/index.html +1 -1
  164. package/apps/pwa/out/settings/index.txt +23 -23
  165. package/apps/pwa/out/setup/done/index.html +1 -1
  166. package/apps/pwa/out/setup/done/index.txt +23 -23
  167. package/apps/pwa/out/setup/index.html +1 -1
  168. package/apps/pwa/out/setup/index.txt +23 -23
  169. package/apps/pwa/out/share/index.html +1 -1
  170. package/apps/pwa/out/share/index.txt +23 -23
  171. package/apps/pwa/out/showroom/index.html +1 -1
  172. package/apps/pwa/out/showroom/index.txt +22 -22
  173. package/apps/pwa/out/tasks/index.html +1 -1
  174. package/apps/pwa/out/tasks/index.txt +23 -23
  175. package/apps/pwa/out/term/index.html +1 -1
  176. package/apps/pwa/out/term/index.txt +23 -24
  177. package/apps/pwa/out/today/index.html +1 -0
  178. package/apps/pwa/out/today/index.txt +33 -0
  179. package/apps/pwa/out/trace/index.html +1 -1
  180. package/apps/pwa/out/trace/index.txt +23 -23
  181. package/apps/pwa/out/vault/index.html +1 -1
  182. package/apps/pwa/out/vault/index.txt +23 -23
  183. package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
  184. package/apps/pwa/out/workflows/chat-ui/index.txt +23 -23
  185. package/apps/pwa/out/workflows/index.html +1 -1
  186. package/apps/pwa/out/workflows/index.txt +23 -23
  187. package/apps/pwa/out/workspace/index.html +1 -1
  188. package/apps/pwa/out/workspace/index.txt +23 -24
  189. package/apps/pwa/out/worktrees/index.html +1 -1
  190. package/apps/pwa/out/worktrees/index.txt +23 -23
  191. package/graphs/drafts/draft-cleanup.yaml +19 -0
  192. package/graphs/drafts/recipes.yaml +23 -0
  193. package/graphs/field/field-feed.yaml +2 -0
  194. package/graphs/implement-loop.yaml +1 -1
  195. package/graphs/intake/intake-daily.yaml +2 -1
  196. package/graphs/ops/recipes.yaml +3 -0
  197. package/graphs/ops/secret-exposure.yaml +24 -0
  198. package/graphs/release/recipes.yaml +3 -0
  199. package/graphs/release/release-loop.yaml +4 -1
  200. package/graphs/video/explainer-line.yaml +2 -2
  201. package/package.json +2 -1
  202. package/plugins/card-followup/graphs/run-step.ts +48 -13
  203. package/plugins/doc-draft/graphs/doc-draft.yaml +3 -3
  204. package/plugins/doc-draft/graphs/run-step.ts +13 -6
  205. package/plugins/elanous-hwp/README.md +25 -0
  206. package/plugins/elanous-hwp/cli.ts +22 -0
  207. package/plugins/elanous-hwp/converter.ts +237 -0
  208. package/plugins/elanous-hwp/fixtures/fixed-controls.hwpx +0 -0
  209. package/plugins/elanous-hwp/fixtures/fixed-table-controls.hwpx +0 -0
  210. package/plugins/elanous-hwp/fixtures/fixed.hwpx +0 -0
  211. package/plugins/elanous-hwp/plugin.json +16 -0
  212. package/plugins/elanous-hwp/plugin.ts +40 -0
  213. package/scripts/ci-public-export-leak-gate.ts +75 -14
  214. package/scripts/ci-public-leak-gate.ts +44 -9
  215. package/scripts/ci-pwa-build-gate.ts +160 -0
  216. package/scripts/context-hooks/claude-stop.sh +4 -0
  217. package/scripts/context-hooks/emit.ts +24 -0
  218. package/scripts/context-hooks/post-tool-use.sh +4 -0
  219. package/scripts/coord-channel-watch.sh +54 -8
  220. package/scripts/coord-digest.ts +199 -0
  221. package/scripts/coord-post.sh +60 -3
  222. package/scripts/coord-requests-bridge.ts +143 -0
  223. package/scripts/field-feed/lib.ts +4 -0
  224. package/scripts/fleet/node-setup.sh +20 -3
  225. package/scripts/homebrew-formula-bump.ts +69 -0
  226. package/scripts/install.ps1 +68 -9
  227. package/scripts/install.sh +39 -12
  228. package/scripts/lib/pwa-scenarios/scenarios.ts +20 -0
  229. package/scripts/lib/tui-regress-checks.ts +146 -0
  230. package/scripts/marketing/measure-site-numbers.ts +169 -0
  231. package/scripts/measure-gate-shards.ts +309 -0
  232. package/scripts/memory-lifecycle-cycle.ts +2 -2
  233. package/scripts/mission-request-judge.ts +31 -1
  234. package/scripts/morning-report.ts +2 -2
  235. package/scripts/opportunity-scan.ts +1 -1
  236. package/scripts/ops-now-probe.ts +327 -0
  237. package/scripts/publish-internal-dist.ts +11 -1
  238. package/scripts/release-loop/auto-approve-node.ts +21 -4
  239. package/scripts/release-loop/cut-branch.ts +84 -0
  240. package/scripts/release-loop/cutoff.ts +19 -8
  241. package/scripts/release-loop/gate-node.ts +14 -13
  242. package/scripts/release-loop/mac-smoke-node.ts +229 -0
  243. package/scripts/release-loop/node-verdict.ts +3 -3
  244. package/scripts/release-loop/ops-upgrade-node.ts +72 -16
  245. package/scripts/release-loop/release-readiness.ts +9 -0
  246. package/scripts/release-loop/tui-node-checks.ts +42 -0
  247. package/scripts/release-loop/tui-sim-node.ts +32 -8
  248. package/scripts/release-loop/unattended-release.ts +5 -3
  249. package/scripts/release-loop/version-node.ts +112 -13
  250. package/scripts/repo-watch-cycle.ts +1 -1
  251. package/scripts/retro-cycle.ts +2 -2
  252. package/scripts/schedule-health-report.ts +1 -1
  253. package/scripts/signal-digest-cycle.ts +2 -7
  254. package/scripts/signal-digest-photo.ts +11 -0
  255. package/scripts/storyboard/storyboard.ts +5 -161
  256. package/scripts/tech1-public-measure.ts +94 -0
  257. package/scripts/test-diet/lib.ts +30 -1
  258. package/scripts/test-diet/node.ts +83 -8
  259. package/scripts/test-timeout-audit.ts +114 -0
  260. package/scripts/tree-sync-alert.ts +1 -1
  261. package/scripts/tui-regress.ts +71 -0
  262. package/scripts/ux/demo-rehearsal.ts +243 -0
  263. package/scripts/ux/lib/rehearsal-verdict.ts +73 -0
  264. package/scripts/waitlist-daily-digest.ts +1 -1
  265. package/skills/diagram-master/SKILL.md +366 -0
  266. package/skills/diagram-master/references/engines/excalidraw/color-palette.md +67 -0
  267. package/skills/diagram-master/references/engines/excalidraw/element-templates.md +182 -0
  268. package/skills/diagram-master/references/engines/excalidraw/json-schema.md +71 -0
  269. package/skills/diagram-master/references/engines/excalidraw/render_excalidraw.py +189 -0
  270. package/skills/diagram-master/references/engines/excalidraw/render_template.html +57 -0
  271. package/skills/diagram-master/references/engines/matplotlib/matplotlib-patterns.md +235 -0
  272. package/skills/diagram-master/references/engines/matplotlib/render_matplotlib.py +184 -0
  273. package/skills/diagram-master/references/engines/mermaid/domain-templates.md +435 -0
  274. package/skills/diagram-master/references/engines/mermaid/render_mermaid.py +116 -0
  275. package/skills/diagram-master/references/engines/mermaid/syntax-reference.md +2247 -0
  276. package/skills/diagram-master/references/engines/nanobannana/render_nanobannana2.py +168 -0
  277. package/skills/diagram-master/references/engines/svg/color-palette.md +188 -0
  278. package/skills/diagram-master/references/engines/svg/html-base-template.html +332 -0
  279. package/skills/diagram-master/references/engines/svg/interactivity-patterns.md +435 -0
  280. package/skills/diagram-master/references/engines/svg/render_interactive_svg.py +212 -0
  281. package/skills/diagram-master/references/engines/svg/svg-element-templates.md +349 -0
  282. package/skills/diagram-master/references/examples/README.md +69 -0
  283. package/skills/diagram-master/references/examples/ref_grid_architecture.png +0 -0
  284. package/skills/diagram-master/references/examples/ref_layered_flow.png +0 -0
  285. package/skills/diagram-master/references/pyproject.toml +16 -0
  286. package/skills/diagram-master/references/quality-checklist.md +33 -0
  287. package/skills/diagram-master/references/routing-guide.md +164 -0
  288. package/skills/diagram-master/references/uv.lock +1356 -0
  289. package/skills/explainer-video/SKILL.md +4 -0
  290. package/skills/explainer-video/engine/reel.mjs +18 -13
  291. package/skills/explainer-video/engine/reel.sh +24 -5
  292. package/skills/explainer-video/engine/stitch.mjs +145 -0
  293. package/skills/google-workspace/SKILL.md +33 -0
  294. package/skills/google-workspace/scripts/gws-safe.sh +177 -0
  295. package/skills/grill-me/SKILL.md +1 -1
  296. package/skills/lecture-note-digitizer/SKILL.md +926 -0
  297. package/skills/lecture-note-digitizer/references/convert_to_pdf.py +30 -0
  298. package/skills/lecture-note-digitizer/references/extract_slide_diagram.py +73 -0
  299. package/skills/lecture-note-digitizer/references/html-template.md +167 -0
  300. package/skills/lecture-note-digitizer/references/katex-style-guide.md +165 -0
  301. package/skills/omni-crawl/SKILL.md +21 -11
  302. package/skills/omni-crawl/scripts/main.ts +6 -6
  303. package/skills/omni-crawl/src/router.ts +3 -3
  304. package/skills/omni-digest/SKILL.md +17 -9
  305. package/skills/omni-digest/digest.md +2 -2
  306. package/skills/omni-digest/src/fetch.ts +30 -3
  307. package/skills/pitch-deck/SKILL.md +36 -0
  308. package/skills/pitch-deck/template.html +80 -0
  309. package/skills/youtube-master/SKILL.md +163 -0
  310. package/skills/youtube-master/package-lock.json +558 -0
  311. package/skills/youtube-master/package.json +13 -0
  312. package/skills/youtube-master/references/study-note-template.md +124 -0
  313. package/skills/youtube-master/scripts/main.ts +435 -0
  314. package/skills/youtube-master/scripts/transcribe-local.ts +24 -0
  315. package/skills/youtube-master/src/audio.ts +63 -0
  316. package/skills/youtube-master/src/domain-staging.ts +50 -0
  317. package/skills/youtube-master/src/env.ts +36 -0
  318. package/skills/youtube-master/src/obsidian.ts +155 -0
  319. package/skills/youtube-master/src/router.ts +110 -0
  320. package/skills/youtube-master/src/stt.ts +199 -0
  321. package/skills/youtube-master/src/study-note.ts +175 -0
  322. package/skills/youtube-master/src/summarize.ts +358 -0
  323. package/skills/youtube-master/src/transcript.ts +76 -0
  324. package/skills/youtube-master/src/types.ts +91 -0
  325. package/skills/youtube-master/src/util.ts +93 -0
  326. package/skills/youtube-master/src/youtube.ts +70 -0
  327. package/skills/youtube-master/tsconfig.json +13 -0
  328. package/src/acp/codex-approval-adapter.ts +9 -3
  329. package/src/acp/core-turn-bridge.ts +117 -18
  330. package/src/acp/fact-question.ts +11 -0
  331. package/src/acp/server.ts +53 -9
  332. package/src/acp/tool-approval.ts +126 -0
  333. package/src/acp/turn-runner.ts +36 -0
  334. package/src/agent/monad-agent-turn.ts +8 -0
  335. package/src/agent-mission/driver.ts +80 -10
  336. package/src/agent-mission/pty-decision.ts +71 -0
  337. package/src/agent-mission/review-loop.ts +30 -0
  338. package/src/ask-user-question/pending-questions.ts +25 -10
  339. package/src/ask-user-question/types.ts +9 -0
  340. package/src/auth/setup-link-tokens.ts +16 -5
  341. package/src/autopilot/build/integrity-gate.ts +12 -0
  342. package/src/autopilot/build/llm-conflict-merge.ts +16 -3
  343. package/src/autopilot/tool-registry.ts +2 -0
  344. package/src/boot/daemon-prompt-turn.ts +8 -0
  345. package/src/boot/daemon-runtime.ts +9 -3
  346. package/src/boot/daemon-tools/index.ts +8 -0
  347. package/src/boot/daemon-tools/types.ts +2 -0
  348. package/src/boot/daemon-tools/web-search.ts +4 -0
  349. package/src/card-followup/core.ts +109 -0
  350. package/src/chat/ctrl-c-in-input.ts +14 -0
  351. package/src/chat/index.ts +53 -0
  352. package/src/chat/pickers/state.ts +6 -2
  353. package/src/cli/agent-cli.ts +7 -0
  354. package/src/cli/decisions-cli.ts +25 -3
  355. package/src/cli/doctor-bundle-upload.ts +68 -0
  356. package/src/cli/doctor-cli.ts +38 -4
  357. package/src/cli/drive-input-jail.ts +101 -0
  358. package/src/cli/hooks-cli.ts +17 -3
  359. package/src/cli/make-cli.ts +43 -0
  360. package/src/cli/ops-cli.ts +20 -0
  361. package/src/cli/persona-cli.ts +90 -4
  362. package/src/cli/plugin-cli.ts +31 -22
  363. package/src/cli/pod-cli.ts +61 -2
  364. package/src/cli/pr-cli.ts +82 -17
  365. package/src/cli/pty-drive-cli.ts +41 -7
  366. package/src/cli/pty-drive-verdict.ts +40 -0
  367. package/src/cli/pwa-stop.ts +163 -13
  368. package/src/cli/pwa-test.ts +3 -0
  369. package/src/cli/release-cli.ts +80 -24
  370. package/src/cli/self-update.ts +14 -0
  371. package/src/cli/setup-cli.ts +43 -1
  372. package/src/cli/skills-cli.ts +17 -1
  373. package/src/cli/storyboard-cli.ts +37 -0
  374. package/src/cli/test-state-dir-flag.ts +11 -4
  375. package/src/connectors/linear.ts +146 -0
  376. package/src/context-bus/claude-hooks-install.ts +10 -0
  377. package/src/context-bus/context-now-surfaces.ts +48 -0
  378. package/src/context-bus/context-now.ts +104 -0
  379. package/src/context-bus/coord-events.ts +115 -0
  380. package/src/context-bus/external-events.ts +52 -0
  381. package/src/context-bus/long-term-memory.ts +108 -0
  382. package/src/dashboard/dashboard-boot-fixture.ts +23 -0
  383. package/src/dashboard/index.ts +63 -21
  384. package/src/dashboard/slash-runtime/dashboard-handlers.ts +14 -1
  385. package/src/dashboard/slash-runtime/help-from-registry.ts +43 -28
  386. package/src/decisions/decision-cards.ts +58 -3
  387. package/src/decisions/decision-ledger.ts +85 -6
  388. package/src/decisions/decision-linear-projection.ts +157 -0
  389. package/src/decisions/web-push-decision-cards.ts +50 -0
  390. package/src/directive/interpretation-card.ts +36 -0
  391. package/src/discord/sprint21-runtime.ts +5 -1
  392. package/src/discord-self-message.ts +32 -0
  393. package/src/discord-slash-wire.ts +5 -1
  394. package/src/discord.ts +19 -2
  395. package/src/domains/coo-admin-tool.ts +62 -0
  396. package/src/domains/core-tools.ts +13 -4
  397. package/src/domains/elanous-card.ts +29 -0
  398. package/src/domains/ops-facts-tool.ts +76 -0
  399. package/src/domains/outbound-alert.ts +46 -13
  400. package/src/domains/release-tool.ts +168 -0
  401. package/src/domains/telegram-kind-route.ts +65 -9
  402. package/src/exec-requests/default-outputs.ts +25 -0
  403. package/src/exec-requests/planner.ts +106 -28
  404. package/src/exec-requests/runner.ts +123 -12
  405. package/src/exec-requests/store.ts +11 -2
  406. package/src/execution-loop/launch-gate.ts +100 -0
  407. package/src/field/field-media.ts +10 -7
  408. package/src/field/field-reel.ts +19 -5
  409. package/src/field-note/index.ts +201 -0
  410. package/src/field-note/transcribe.ts +248 -0
  411. package/src/git-fs/worktree.ts +45 -6
  412. package/src/graph-kinds/registry.ts +3 -3
  413. package/src/graph-runner/graph-approval-card.ts +113 -0
  414. package/src/graph-runner/graph-cli.ts +189 -4
  415. package/src/graph-runner/graph-grow-llm.ts +37 -0
  416. package/src/graph-runner/graph-grow.ts +47 -0
  417. package/src/graph-runner/graph-notify.ts +25 -3
  418. package/src/graph-runner/runner.ts +453 -35
  419. package/src/grok/agent-search.ts +8 -2
  420. package/src/guardian/secret-exposure-scan.ts +101 -0
  421. package/src/harness/browser-verify.ts +25 -2
  422. package/src/harness/harness-cli-command.ts +478 -42
  423. package/src/harness/harness-incidents-writer.fixture.ts +24 -0
  424. package/src/harness/harness-incidents.ts +129 -0
  425. package/src/harness/harness-pod-dispatch.ts +43 -23
  426. package/src/harness/harness-seams.ts +38 -4
  427. package/src/harness/harness-stop.ts +75 -6
  428. package/src/harness/launch-registry.ts +91 -0
  429. package/src/harness/process-garbage.ts +5 -3
  430. package/src/hitl/clarification-policy.ts +3 -1
  431. package/src/hooks/dispatch.ts +82 -0
  432. package/src/hooks/expose.ts +254 -0
  433. package/src/hooks/github-shadow.ts +108 -0
  434. package/src/hooks/providers.ts +71 -5
  435. package/src/hooks/queue.ts +1 -1
  436. package/src/hooks/receiver.ts +21 -20
  437. package/src/index.ts +206 -49
  438. package/src/intake-plane/author-goals.ts +37 -4
  439. package/src/intake-plane/categorize.ts +18 -46
  440. package/src/intake-plane/check.ts +3 -0
  441. package/src/intake-plane/discord-seat-work.ts +57 -2
  442. package/src/intake-plane/front-route-classifier.ts +33 -39
  443. package/src/intake-plane/persona-answer.ts +30 -0
  444. package/src/intake-plane/runtime-callables.ts +8 -1
  445. package/src/intake-plane/seat-doc-route.ts +170 -6
  446. package/src/intake-plane/telegram-seat-work.ts +80 -4
  447. package/src/intake-plane/telegram-work.ts +1 -0
  448. package/src/intake-plane/wish-folder.ts +67 -0
  449. package/src/intent-gate/gate.ts +30 -10
  450. package/src/live/detail-switch.ts +5 -0
  451. package/src/llm/difficulty.ts +57 -0
  452. package/src/llm/judge-layer.ts +101 -0
  453. package/src/llm/mission-router.ts +33 -19
  454. package/src/loops/contract/examples/cmo-seat.loop.yaml +51 -0
  455. package/src/loops/contract/examples/orchestrator.loop.yaml +57 -0
  456. package/src/loops/contract/examples/steward.loop.yaml +50 -0
  457. package/src/loops/contract/loop-agent.schema.json +138 -0
  458. package/src/loops/contract/validate.ts +64 -0
  459. package/src/loops/registry.ts +20 -6
  460. package/src/market/signed-index.ts +4 -0
  461. package/src/maturity/bot-command-maturity.ts +45 -0
  462. package/src/maturity/cli-maturity.ts +34 -0
  463. package/src/maturity/feature-maturity.ts +120 -1
  464. package/src/maturity/tui-slash-maturity.ts +31 -0
  465. package/src/memory.ts +32 -4
  466. package/src/model-tier/index.ts +2 -2
  467. package/src/model-tier/tier-resolver.ts +20 -20
  468. package/src/model-tier/types.ts +6 -6
  469. package/src/mss/logging/log-store.ts +15 -0
  470. package/src/nexus/api/config-model-tier.ts +5 -4
  471. package/src/nexus/api/exec-requests.ts +33 -3
  472. package/src/nexus/api/fabric-plans.ts +53 -0
  473. package/src/nexus/api/harness-api.ts +5 -1
  474. package/src/nexus/api/health.ts +2 -0
  475. package/src/nexus/api/http-server.ts +89 -1
  476. package/src/nexus/api/inside-events.ts +226 -0
  477. package/src/nexus/api/meta-api.ts +32 -8
  478. package/src/nexus/api/missions.ts +6 -1
  479. package/src/nexus/api/ops-api.ts +10 -1
  480. package/src/nexus/api/ops-seats-sources.ts +37 -7
  481. package/src/nexus/api/ops-seats.ts +49 -6
  482. package/src/nexus/api/outputs-route.ts +44 -0
  483. package/src/nexus/api/seat-requests.ts +132 -10
  484. package/src/nexus/api/sessions-store.ts +42 -0
  485. package/src/nexus/api/setup-codex-login.ts +160 -0
  486. package/src/nexus/api/sub-seat-charters.ts +34 -0
  487. package/src/nexus/api/tabs-mutations.ts +3 -1
  488. package/src/nexus/api/trace.ts +18 -6
  489. package/src/nexus/api/usage-api.ts +102 -0
  490. package/src/nexus/api/workflow-run-event-bridge.ts +1 -0
  491. package/src/nexus/api/workflows.ts +80 -6
  492. package/src/nexus/index.ts +47 -4
  493. package/src/nexus/kinds/webterm.ts +2 -1
  494. package/src/nexus/webterm/pty.ts +6 -2
  495. package/src/onboarding/cli-auth-status.ts +80 -0
  496. package/src/onboarding/first-run.ts +89 -0
  497. package/src/onboarding/lan-address.ts +45 -0
  498. package/src/onboarding/voice-ai.ts +3 -3
  499. package/src/onboarding/web-first.ts +119 -24
  500. package/src/onboarding.ts +4 -0
  501. package/src/ops-now/ops-now-refresh.ts +100 -0
  502. package/src/org/seat-budget.ts +48 -0
  503. package/src/org/stall-escalation.ts +63 -0
  504. package/src/outputs/ledger.ts +120 -0
  505. package/src/persona/persona-todo.ts +79 -0
  506. package/src/persona/presets.ts +116 -2
  507. package/src/persona/team-set.ts +155 -0
  508. package/src/plugins/install/plugin-install.ts +14 -0
  509. package/src/plugins/maker/market-bundle.ts +109 -0
  510. package/src/plugins/maker/plugin-maker.ts +254 -11
  511. package/src/plugins/maker/wizard-generate.ts +103 -0
  512. package/src/pod-lease/admission.ts +150 -0
  513. package/src/pod-lease/dependency-state.ts +85 -0
  514. package/src/pod-lease/host-lease.ts +127 -0
  515. package/src/project/project-store.ts +115 -0
  516. package/src/project/project-suggestion.ts +16 -0
  517. package/src/project/session-context.ts +24 -0
  518. package/src/release-loop/checklist.ts +79 -5
  519. package/src/release-loop/feature-store.ts +159 -24
  520. package/src/release-loop/next-md-merge.ts +58 -0
  521. package/src/release-loop/release-note.ts +59 -4
  522. package/src/release-loop/release-schedule.ts +53 -0
  523. package/src/repl/index.ts +7 -0
  524. package/src/seat-dispatch/ceo-commands.ts +41 -8
  525. package/src/seat-dispatch/ceo-intent.ts +38 -0
  526. package/src/seat-dispatch/seat-ask.ts +130 -0
  527. package/src/seat-dispatch/seat-questions.ts +100 -0
  528. package/src/seat-loop/seat-loop.ts +750 -0
  529. package/src/seat-loop/seat-report.ts +99 -0
  530. package/src/self-dev/decompose.ts +66 -11
  531. package/src/self-dev/dev-cli.ts +4 -1
  532. package/src/self-dev/dev-pipeline.ts +37 -1
  533. package/src/self-dev/draft-sweep.ts +38 -33
  534. package/src/self-dev/draft-triage-rules.ts +8 -5
  535. package/src/self-dev/fabric-plan-core.ts +297 -0
  536. package/src/self-dev/orchestrate.ts +36 -4
  537. package/src/self-dev/release-path-guard.ts +62 -0
  538. package/src/self-dev/run-store.ts +10 -1
  539. package/src/self-dev/shard-aggregate.ts +230 -0
  540. package/src/self-dev/shard-placement.ts +60 -0
  541. package/src/self-dev/shard-plan.ts +48 -0
  542. package/src/self-dev/shard-pod-run.ts +77 -0
  543. package/src/self-dev/shard-run.ts +105 -0
  544. package/src/self-implement/execution-clarification.ts +115 -0
  545. package/src/self-implement/gate-baseline.ts +1 -1
  546. package/src/self-implement/gate-cli.ts +46 -4
  547. package/src/self-implement/gate-scope.ts +37 -7
  548. package/src/self-implement/graph-variant.ts +171 -0
  549. package/src/self-implement/harness-policy-gates.ts +1 -1
  550. package/src/self-implement/headless-elanous-driver.ts +22 -3
  551. package/src/self-implement/host-regate.ts +22 -1
  552. package/src/self-implement/importer-test-index.ts +2 -1
  553. package/src/self-implement/l8-merge-queue.ts +130 -0
  554. package/src/self-implement/orchestrator.ts +279 -12
  555. package/src/self-implement/pipeline-shape.ts +1 -1
  556. package/src/self-implement/route-consumer-test-index.ts +122 -0
  557. package/src/self-implement/run-status-mapping.ts +5 -3
  558. package/src/self-implement/seams.ts +72 -11
  559. package/src/self-implement/test-seams.ts +1 -0
  560. package/src/self-implement/uncommitted-work.ts +59 -0
  561. package/src/session/chat.ts +2 -0
  562. package/src/session/index.ts +45 -13
  563. package/src/shell-env-bootstrap.ts +17 -0
  564. package/src/skills/gift-install.ts +215 -0
  565. package/src/skills/tools/web-search.ts +4 -1
  566. package/src/steward/directive.ts +51 -2
  567. package/src/steward/launch.ts +266 -0
  568. package/src/steward/outcome-notify.ts +115 -0
  569. package/src/steward/steward-cards.ts +25 -11
  570. package/src/steward/triage-plan.ts +32 -4
  571. package/src/steward/triage.ts +129 -13
  572. package/src/steward/working-backwards.ts +64 -0
  573. package/src/storyboard/storyboard.ts +141 -0
  574. package/src/task-cards/card-cli.ts +25 -1
  575. package/src/task-cards/card-store.ts +2 -2
  576. package/src/task-orchestrator/mission.ts +5 -0
  577. package/src/task-orchestrator/store.ts +12 -3
  578. package/src/task-orchestrator/surfaces/pod-command-job.ts +29 -7
  579. package/src/task-orchestrator/surfaces/pod-lease.ts +397 -0
  580. package/src/task-orchestrator/surfaces/pod-pool.ts +127 -26
  581. package/src/task-orchestrator/surfaces/self-implement-pod.ts +214 -40
  582. package/src/task-orchestrator/surfaces/self-implement.ts +15 -2
  583. package/src/task-orchestrator/types.ts +2 -0
  584. package/src/telegram-card-followup.ts +153 -0
  585. package/src/telegram-commands.ts +10 -1
  586. package/src/telegram-project-command.ts +71 -0
  587. package/src/telegram-report.ts +29 -19
  588. package/src/telegram-run.ts +7 -0
  589. package/src/telegram.ts +58 -11
  590. package/src/tool-runtime/self-cognition-runtimes.ts +13 -3
  591. package/src/tool-runtime/types.ts +4 -0
  592. package/src/tui-client/dashboard-session.ts +2 -0
  593. package/src/user-config.ts +216 -27
  594. package/src/version/packed-revision.json +1 -1
  595. package/src/web-push/notify-exec-request.ts +32 -0
  596. package/src/web-search/grok.ts +7 -1
  597. package/src/web-search/index.ts +28 -1
  598. package/src/web-search/provider.ts +4 -0
  599. package/src/web-search/x-intent.ts +5 -0
  600. package/src/workflow-runtime/executor.ts +277 -47
  601. package/src/workflow-runtime/index.ts +1 -0
  602. package/src/workflow-runtime/nodes/subworkflow.ts +60 -0
  603. package/src/workflow-runtime/plugin-kind-node.ts +1 -1
  604. package/src/workflow-runtime/schema.ts +79 -4
  605. package/src/workflow-runtime/types.ts +35 -4
  606. package/apps/pwa/out/_next/static/bFI5EEwg7T6aG88ibX4Zq/_buildManifest.js +0 -1
  607. package/apps/pwa/out/_next/static/chunks/1105-c473ed46272fba79.js +0 -1
  608. package/apps/pwa/out/_next/static/chunks/1201-09613bce624467c0.js +0 -1
  609. package/apps/pwa/out/_next/static/chunks/1377-1efeffbbac0963ff.js +0 -1
  610. package/apps/pwa/out/_next/static/chunks/1470.98a6ab61ccb4131c.js +0 -1
  611. package/apps/pwa/out/_next/static/chunks/216-5acd01cbde4acda7.js +0 -1
  612. package/apps/pwa/out/_next/static/chunks/2330-c2f07246c8788af1.js +0 -1
  613. package/apps/pwa/out/_next/static/chunks/2375-cb6debea56cce4fb.js +0 -1
  614. package/apps/pwa/out/_next/static/chunks/2929-617f1e66a55be184.js +0 -1
  615. package/apps/pwa/out/_next/static/chunks/2977-e38442e86289f1d3.js +0 -1
  616. package/apps/pwa/out/_next/static/chunks/2982-2a2df543be3d2e5a.js +0 -25
  617. package/apps/pwa/out/_next/static/chunks/3403.4bc97b4066945a94.js +0 -5
  618. package/apps/pwa/out/_next/static/chunks/3441-a1dd4acfeda14488.js +0 -1
  619. package/apps/pwa/out/_next/static/chunks/371-4ad6af55dad02ced.js +0 -1
  620. package/apps/pwa/out/_next/static/chunks/4114-3e63117452378807.js +0 -1
  621. package/apps/pwa/out/_next/static/chunks/5080-1613752891fcadb4.js +0 -10
  622. package/apps/pwa/out/_next/static/chunks/5609-012bb3557211f07e.js +0 -1
  623. package/apps/pwa/out/_next/static/chunks/5791-bb82743fa6299562.js +0 -1
  624. package/apps/pwa/out/_next/static/chunks/6090-85a3f05f954e5697.js +0 -1
  625. package/apps/pwa/out/_next/static/chunks/6284-69db415193d5f8bd.js +0 -1
  626. package/apps/pwa/out/_next/static/chunks/6320-baac91d68843a9a6.js +0 -1
  627. package/apps/pwa/out/_next/static/chunks/6416-505ba707cacafbba.js +0 -1
  628. package/apps/pwa/out/_next/static/chunks/6725-68ab7cc0b1faf00d.js +0 -1
  629. package/apps/pwa/out/_next/static/chunks/6998-a654fe5c58271600.js +0 -1
  630. package/apps/pwa/out/_next/static/chunks/7032-f4ef698518fba61c.js +0 -1
  631. package/apps/pwa/out/_next/static/chunks/7647.2fcd30d894d5ee30.js +0 -1
  632. package/apps/pwa/out/_next/static/chunks/7673-2eda1507d38dadb8.js +0 -1
  633. package/apps/pwa/out/_next/static/chunks/7990-e12efba616f46e03.js +0 -1
  634. package/apps/pwa/out/_next/static/chunks/8067-d976b441a104ab74.js +0 -1
  635. package/apps/pwa/out/_next/static/chunks/8142-744998d65d7bb17e.js +0 -1
  636. package/apps/pwa/out/_next/static/chunks/8519-5632377cce994f86.js +0 -1
  637. package/apps/pwa/out/_next/static/chunks/8619-4365e03a2862830f.js +0 -1
  638. package/apps/pwa/out/_next/static/chunks/8630-cdfc61e82c653ffc.js +0 -1
  639. package/apps/pwa/out/_next/static/chunks/8894-e263b332208e3957.js +0 -1
  640. package/apps/pwa/out/_next/static/chunks/920-f7dceb78f1c585ef.js +0 -1
  641. package/apps/pwa/out/_next/static/chunks/9454-139040d37c79dbc9.js +0 -1
  642. package/apps/pwa/out/_next/static/chunks/9651-3cd291a6fa1370d2.js +0 -1
  643. package/apps/pwa/out/_next/static/chunks/9740-8f5ff96c522b5f55.js +0 -1
  644. package/apps/pwa/out/_next/static/chunks/ae787e4c-f2998de7f1ba72a4.js +0 -1
  645. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-859cea1570b6227a.js +0 -1
  646. package/apps/pwa/out/_next/static/chunks/app/approvals/page-fb7c2d458f32fcad.js +0 -1
  647. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-35e2713597dd24d1.js +0 -1
  648. package/apps/pwa/out/_next/static/chunks/app/board/page-918b656f064577ba.js +0 -1
  649. package/apps/pwa/out/_next/static/chunks/app/bots/page-5f30e00693527ebd.js +0 -1
  650. package/apps/pwa/out/_next/static/chunks/app/chat/page-7fbae173b3c103a7.js +0 -1
  651. package/apps/pwa/out/_next/static/chunks/app/consult/page-3b4edcce364062ea.js +0 -1
  652. package/apps/pwa/out/_next/static/chunks/app/control/page-c5794f484c251f44.js +0 -1
  653. package/apps/pwa/out/_next/static/chunks/app/design-check/page-1130d8eefcd87e76.js +0 -1
  654. package/apps/pwa/out/_next/static/chunks/app/editor/page-973996d584f008c1.js +0 -1
  655. package/apps/pwa/out/_next/static/chunks/app/exec/page-016e2bda04eecb1f.js +0 -1
  656. package/apps/pwa/out/_next/static/chunks/app/field/page-b4d6d9a3b56f2940.js +0 -1
  657. package/apps/pwa/out/_next/static/chunks/app/healthz/route-859cea1570b6227a.js +0 -1
  658. package/apps/pwa/out/_next/static/chunks/app/intake/page-ec49a466121233ba.js +0 -1
  659. package/apps/pwa/out/_next/static/chunks/app/layout-f72db356744ceade.js +0 -1
  660. package/apps/pwa/out/_next/static/chunks/app/live/page-a6fd9b50d1b85378.js +0 -1
  661. package/apps/pwa/out/_next/static/chunks/app/market/page-8b0402a46a749a3d.js +0 -1
  662. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-037f83e2a1edc8e2.js +0 -1
  663. package/apps/pwa/out/_next/static/chunks/app/not-found-46fedff57d4bec67.js +0 -1
  664. package/apps/pwa/out/_next/static/chunks/app/observatory/page-0cf318e9dcee2bbf.js +0 -1
  665. package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-899b327cb8b6845c.js +0 -1
  666. package/apps/pwa/out/_next/static/chunks/app/ops/release/page-6c1e6ba743a29dfe.js +0 -1
  667. package/apps/pwa/out/_next/static/chunks/app/page-1a8e4807292f6b17.js +0 -1
  668. package/apps/pwa/out/_next/static/chunks/app/reflection/page-28deba6bcb834916.js +0 -1
  669. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-de68e2205794037d.js +0 -1
  670. package/apps/pwa/out/_next/static/chunks/app/sessions/page-c71c33a573230672.js +0 -1
  671. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-0df30e0c7e50148a.js +0 -1
  672. package/apps/pwa/out/_next/static/chunks/app/settings/page-4fc56790fe0d2682.js +0 -1
  673. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-59df2aebb38a7c1e.js +0 -1
  674. package/apps/pwa/out/_next/static/chunks/app/setup/layout-859cea1570b6227a.js +0 -1
  675. package/apps/pwa/out/_next/static/chunks/app/setup/page-4647be5dbcbd0795.js +0 -1
  676. package/apps/pwa/out/_next/static/chunks/app/share/page-e025892bda74b743.js +0 -1
  677. package/apps/pwa/out/_next/static/chunks/app/showroom/page-a0955de73b89f078.js +0 -1
  678. package/apps/pwa/out/_next/static/chunks/app/tasks/page-369846d2921af584.js +0 -1
  679. package/apps/pwa/out/_next/static/chunks/app/term/page-72cbc1c8cdd0f65d.js +0 -1
  680. package/apps/pwa/out/_next/static/chunks/app/trace/page-77b28bfb0996d5ea.js +0 -1
  681. package/apps/pwa/out/_next/static/chunks/app/vault/page-3220c4934f49c6c2.js +0 -1
  682. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-90670589b87abea8.js +0 -1
  683. package/apps/pwa/out/_next/static/chunks/app/workflows/page-7df9243ed021a4cc.js +0 -1
  684. package/apps/pwa/out/_next/static/chunks/app/workspace/page-4498c3853f4f688d.js +0 -1
  685. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-35bedde6d885f08f.js +0 -1
  686. package/apps/pwa/out/_next/static/chunks/framework-ea806bb57f2b8923.js +0 -1
  687. package/apps/pwa/out/_next/static/chunks/main-8d2302399c2c8f87.js +0 -1
  688. package/apps/pwa/out/_next/static/chunks/main-app-6870f30ea99f8346.js +0 -1
  689. package/apps/pwa/out/_next/static/chunks/pages/_app-b10928c60f0b8488.js +0 -1
  690. package/apps/pwa/out/_next/static/chunks/pages/_error-689039227d443fab.js +0 -1
  691. package/apps/pwa/out/_next/static/chunks/webpack-e5bea36f183b25e6.js +0 -1
  692. package/apps/pwa/out/_next/static/css/f92f63a5df0ba229.css +0 -1
  693. package/src/dashboard/turn-typeahead-echo.ts +0 -23
  694. /package/apps/pwa/out/_next/static/{bFI5EEwg7T6aG88ibX4Zq → Y4zKzL62sakG5momz3SoQ}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4508],{75820:(e,t,s)=>{function n(e){let t=e.filter(e=>"cron"===e.kind&&e.id).map(e=>e.id);return t.length?"/scheduler?ids=".concat(t.map(encodeURIComponent).join(",")):null}s.d(t,{NE:()=>d,Yt:()=>i,on:()=>n});let a=["task","goal-loop","single-shot"],r=["scheduler","monitor-trigger"];function l(e){var t,s,n,l,i,d,o;let c=e.autopilot,u=null!=(t=null==c?void 0:c.executionModel)?t:null;return{id:e.id,goal:e.title||e.description||e.id,source:null!=(s=null==c?void 0:c.origin)?s:"human",status:null!=(n=null==c?void 0:c.apmStatus)?n:e.status,model:u,tier:null!=(l=null==c?void 0:c.tier)?l:null,engine:null!=(i=null==c?void 0:c.engine)?i:null,kind:(o=null!=(d=null==c?void 0:c.executionModel)?d:null)&&a.includes(o)?"finite":o&&r.includes(o)?"continuous":"other",reviewDue:!1,createdAt:new Date(e.createdAt).toISOString(),isAutopilot:null!=c,toxStatus:e.status,taskCount:e.taskCount,taskCounts:e.taskStatusCounts}}class i{async triagePreview(e,t){return this.client.fetchJson("/v1/autopilot/triage-preview",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({goal:e,...t?{category:t}:{}})})}async commitMission(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"intake",s=arguments.length>2?arguments[2]:void 0;return this.client.fetchJson("/v1/autopilot/triage-preview",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({goal:e,commit:!0,source:t,...s?{category:s}:{}})})}async missions(e,t){let s=new URLSearchParams({...e?{status:e}:{},...t?{source:t}:{}}).toString();return this.client.fetchJson("/v1/autopilot/missions".concat(s?"?".concat(s):""))}async missionsUnified(e){var t,s;let n=new URLSearchParams({...e?{status:e}:{}}).toString(),a=await this.client.fetchJson("/v1/missions".concat(n?"?".concat(n):"")),r=null!=(t=a.missions)?t:[];return{ok:!0,total:null!=(s=a.total)?s:r.length,missions:r.map(l)}}async trace(e){return this.client.fetchJson("/v1/autopilot/trace?id=".concat(encodeURIComponent(e)))}async missionArcMap(){var e,t,s;let n=await this.client.fetchJson("/v1/missions"),a=new Map;for(let r of null!=(e=n.missions)?e:[]){let e=null==(t=r.autopilot)?void 0:t.arcs;e&&e.length>0&&a.set(r.id,{apmStatus:null==(s=r.autopilot)?void 0:s.apmStatus,arcs:e})}return a}async missionAction(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.client.fetchJson("/v1/autopilot/mission-action",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({id:e,action:t,...s})})}async repoWatch(){return this.client.fetchJson("/v1/autopilot/repo-watch")}async autonomy(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50,t=arguments.length>1?arguments[1]:void 0,s=new URLSearchParams({limit:String(e),...t?{loop:t}:{}});return this.client.fetchJson("/v1/autopilot/autonomy?".concat(s.toString()))}async arming(){return this.client.fetchJson("/v1/autopilot/arming")}constructor(e){this.client=e}}let d={task:{label:"작업 분해",tone:"bg-sky-500/15 text-sky-200 ring-sky-500/30"},"goal-loop":{label:"목표 루프",tone:"bg-violet-500/15 text-violet-200 ring-violet-500/30"},scheduler:{label:"스케줄러",tone:"bg-emerald-500/15 text-emerald-200 ring-emerald-500/30"},"monitor-trigger":{label:"감시 트리거",tone:"bg-amber-500/15 text-amber-200 ring-amber-500/30"},hybrid:{label:"하이브리드",tone:"bg-fuchsia-500/15 text-fuchsia-200 ring-fuchsia-500/30"},fanout:{label:"병렬 팬아웃",tone:"bg-cyan-500/15 text-cyan-200 ring-cyan-500/30"},"single-shot":{label:"즉답",tone:"bg-muted text-muted-foreground ring-border"},"hitl-delegate":{label:"HITL 위임",tone:"bg-rose-500/15 text-rose-200 ring-rose-500/30"}}},83750:(e,t,s)=>{s.d(t,{r:()=>i});var n=s(54456),a=s(86048),r=s.n(a);let l=[{key:"autopilot",href:"/autopilot",num:"①",label:"미션",sub:"Autopilot"},{key:"tasks",href:"/tasks",num:"②",label:"작업",sub:"Tasks"},{key:"scheduler",href:"/scheduler",num:"③",label:"스케줄",sub:"Schedules"}];function i(e){let{active:t}=e;return(0,n.jsxs)("nav",{"aria-label":"Mission Fabric 파이프라인","data-testid":"fabric-stage-header",className:"flex flex-wrap items-center gap-1 text-xs",children:[(0,n.jsx)("span",{className:"mr-1 text-muted-foreground",children:"Missions"}),l.map((e,s)=>(0,n.jsxs)("span",{className:"flex items-center gap-1",children:[(0,n.jsxs)(r(),{href:e.href,"aria-current":e.key===t?"page":void 0,className:["rounded px-2 py-1 ring-1 transition-colors",e.key===t?"bg-primary/15 font-medium text-foreground ring-primary/40":"text-muted-foreground ring-border hover:bg-muted hover:text-foreground"].join(" "),children:[(0,n.jsx)("span",{className:"mr-1",children:e.num}),e.label,(0,n.jsx)("span",{className:"ml-1 text-[10px] opacity-70",children:e.sub})]}),s<l.length-1&&(0,n.jsx)("span",{className:"text-muted-foreground/50","aria-hidden":!0,children:"→"})]},e.key))]})}},84508:(e,t,s)=>{s.d(t,{B:()=>T});var n=s(54456),a=s(60500),r=s(36581),l=s(10080);class i{buildSnapshot(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:80;return this.client.fetchJson("/v1/builds/".concat(encodeURIComponent(e),"?tail=").concat(t))}list(){return this.client.fetchJson("/v1/tasks")}detail(e){return this.client.fetchJson("/v1/tasks/".concat(encodeURIComponent(e)))}constructor(e){this.client=e}}var d=s(75820),o=s(50733),c=s(71829),u=s(98025);class m extends Error{constructor(e,t,s){super("fluent-chain ".concat(e," on ").concat(t)),this.status=e,this.path=t,this.body=s,this.name="FluentChainApiError"}}function x(e){var t;let s=e.baseUrl.replace(/\/+$/,""),n=null!=(t=e.fetchImpl)?t:fetch,a="/v1/next-fluent/preview";return{async preview(t){let r={"content-type":"application/json"};e.authHeader&&(r.authorization=e.authHeader);let l=await n("".concat(s).concat(a),{method:"POST",headers:r,body:JSON.stringify(t)});if(204===l.status)return{kind:"no-suggestions",enabled:!0};let i=await l.json().catch(()=>null);if(409===l.status){let e=!!i&&"object"==typeof i&&"enabled"in i&&!!i.enabled;return e?{kind:"no-suggestions",enabled:e}:{kind:"disabled"}}if(503===l.status&&i&&"object"==typeof i&&"next-fluent-not-wired"===i.error)return{kind:"disabled"};if(!l.ok||!(null==i?void 0:i.card))throw new m(l.status,a,i);return{kind:"card",card:i.card}},async dispatch(t,a){let r={"content-type":"application/json"};e.authHeader&&(r.authorization=e.authHeader);let l=u.m,i=await n("".concat(s).concat(l),{method:"POST",headers:r,body:JSON.stringify({refId:t,action:a})}),d=await i.json().catch(()=>null);return d&&"object"==typeof d&&"ok"in d?d:{ok:!1,error:"dispatch ".concat(i.status)}}}}function p(e){var t;let[s,r]=(0,a.useState)({kind:"loading"});if((0,a.useEffect)(()=>{var t;let s=!1;return(null!=(t=e.api)?t:x({baseUrl:window.location.origin})).preview(e.trigger).then(e=>{s||("card"===e.kind?r({kind:"card",card:e.card}):"no-suggestions"===e.kind?r({kind:"empty"}):r({kind:"disabled"}))}).catch(e=>{s||r({kind:"error",message:e instanceof Error?e.message:String(e)})}),()=>{s=!0}},[e.api,e.trigger.refId,e.trigger.refKind,e.trigger.outcome,e.trigger.completedAt]),"loading"===s.kind)return(0,n.jsx)("span",{className:"text-xs opacity-60",children:"checking next-action…"});if("disabled"===s.kind||"empty"===s.kind)return null;if("error"===s.kind)return(0,n.jsxs)("span",{className:"text-xs text-rose-700",children:["next-action: ",s.message]});let l=null!=(t=e.limit)?t:3,i=s.card.suggestions.slice(0,l);return 0===i.length?null:(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-1 text-xs","data-fluent-ref":e.trigger.refId,children:[(0,n.jsx)("span",{className:"opacity-60",children:"next:"}),i.map(t=>(0,n.jsxs)("button",{type:"button",className:"rounded-full border border-zinc-300 bg-white px-2 py-0.5 hover:bg-zinc-50",onClick:()=>{var s;return null==(s=e.onChoose)?void 0:s.call(e,t.kind,t)},title:t.reason||t.kind,children:[t.kind,"none"!==t.endorsedBy&&(0,n.jsxs)("span",{className:"ml-1 text-[10px] opacity-60",children:["\xb7 ",t.endorsedBy]})]},t.kind))]})}class h extends Error{constructor(e,t,s){super("idle-nudge ".concat(e," on ").concat(t)),this.status=e,this.path=t,this.body=s,this.name="IdleNudgeApiError"}}function g(e){let[t,s]=(0,a.useState)({kind:"loading"});if((0,a.useEffect)(()=>{var t;let n=!1;return(null!=(t=e.api)?t:function(e){var t;let s=e.baseUrl.replace(/\/+$/,""),n=null!=(t=e.fetchImpl)?t:fetch,a=u.J3;return{async preview(t){let r={"content-type":"application/json"};e.authHeader&&(r.authorization=e.authHeader);let l=await n("".concat(s).concat(a),{method:"POST",headers:r,body:JSON.stringify(t)}),i=await l.json().catch(()=>null);if(!l.ok)throw new h(l.status,a,i);return i}}}({baseUrl:window.location.origin})).preview(e.request).then(e=>{n||("nudge"===e.decision.kind&&e.record?s({kind:"nudge",decision:e.decision,record:e.record}):"defer"===e.decision.kind?s({kind:"defer",nextAt:e.decision.nextEligibleAt}):s({kind:"idle"}))}).catch(e=>{n||s({kind:"error",message:e instanceof h?"Idle-nudge error (".concat(e.status,")"):e instanceof Error?e.message:String(e)})}),()=>{n=!0}},[e.api,e.request.taskId,e.request.observedAt,e.request.status,e.request.enteredStatusAt]),"loading"===t.kind||"idle"===t.kind)return null;if("defer"===t.kind)return(0,n.jsxs)("span",{className:"text-[10px] opacity-60",children:["nudge deferred until ",new Date(t.nextAt).toLocaleTimeString()]});if("error"===t.kind)return(0,n.jsx)("span",{className:"text-[10px] text-rose-700",children:t.message});let r=Math.round(t.decision.idleMs/36e5);return(0,n.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1 rounded-full border border-amber-300 bg-amber-50 px-2 py-0.5 text-[11px] text-amber-900 hover:bg-amber-100",onClick:()=>{var s;return null==(s=e.onOpenShowroom)?void 0:s.call(e,t.record.showroomSessionId)},title:"Idle ".concat(r,"h \xb7 click to open nudge room"),"data-task-id":t.record.taskId,children:[(0,n.jsx)("span",{"aria-hidden":!0,children:"⏳"}),"idle ",r,"h \xb7 ",t.record.lanes.length," lanes"]})}var f=s(83750);let b=(0,a.createContext)(null),v=new Set(["ready","running","review","blocked"]),y=new Set(["done","failed"]),k=[{id:"backlog",label:"Backlog",statuses:["backlog","blocked"]},{id:"scheduled",label:"Scheduled",statuses:["scheduled"]},{id:"ready",label:"Ready",statuses:["ready"]},{id:"running",label:"Running",statuses:["running"]},{id:"review",label:"Review",statuses:["review"]},{id:"closed",label:"Closed",statuses:["done","failed","cancelled","superseded"]}],j={urgent:"bg-red-500/15 text-red-300 ring-red-500/30",high:"bg-amber-500/15 text-amber-200 ring-amber-500/30",medium:"bg-sky-500/15 text-sky-200 ring-sky-500/30",low:"bg-muted text-muted-foreground ring-border"},N={pending:"bg-slate-500/15 text-slate-300 ring-slate-500/30",active:"bg-sky-500/15 text-sky-200 ring-sky-500/30",verifying:"bg-amber-500/15 text-amber-200 ring-amber-500/30",done:"bg-emerald-500/15 text-emerald-300 ring-emerald-500/30",failed:"bg-red-500/15 text-red-300 ring-red-500/30"};function w(e){let t=Math.max(0,Math.floor((Date.now()-e)/1e3));if(t<60)return"".concat(t,"s ago");let s=Math.floor(t/60);if(s<60)return"".concat(s,"m ago");let n=Math.floor(s/60);return n<24?"".concat(n,"h ago"):"".concat(Math.floor(n/24),"d ago")}let S={running:0,review:1,ready:2,blocked:3,backlog:4,done:5,failed:5,cancelled:6,superseded:6,scheduled:3};function C(e){var t;let{group:s,selectedId:r,onSelect:l,arcDetail:i}=e,d=s.total>0?Math.round(s.doneCount/s.total*100):0,[o,c]=(0,a.useState)(!1),u=(null!=(t=null==i?void 0:i.length)?t:0)>0;return(0,n.jsxs)("section",{className:"rounded-2xl border border-border bg-muted/20 p-3",children:[(0,n.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-2",children:[!s.isStandalone&&(0,n.jsx)("span",{className:"text-xs",children:"\uD83C\uDFAF"}),u&&(0,n.jsx)("button",{type:"button",onClick:()=>c(e=>!e),className:"text-xs text-muted-foreground hover:text-foreground",title:"아크 상세",children:o?"▾":"▸"}),(0,n.jsx)("h2",{className:"text-sm font-semibold",title:s.missionTitle,children:s.missionTitle}),(0,n.jsxs)("span",{className:"rounded-full bg-background px-2 py-0.5 text-[11px] text-muted-foreground",children:[s.doneCount,"/",s.total," \xb7 ",d,"%"]}),s.runningCount>0&&(0,n.jsxs)("span",{className:"animate-pulse rounded-full bg-sky-500/15 px-2 py-0.5 text-[10px] text-sky-200 ring-1 ring-sky-500/30",children:["● ",s.runningCount," 빌드중"]}),s.failedCount>0&&(0,n.jsxs)("span",{className:"rounded-full bg-red-500/15 px-2 py-0.5 text-[10px] text-red-300 ring-1 ring-red-500/30",children:["✗ ",s.failedCount," 실패"]})]}),s.arcs.length>0&&(0,n.jsx)("div",{className:"mb-2 flex flex-wrap gap-1.5",children:s.arcs.map((e,t)=>{var s;return(0,n.jsxs)("span",{className:"flex items-center gap-1 text-[10px]",children:[t>0&&(0,n.jsx)("span",{className:"text-muted-foreground",children:"→"}),(0,n.jsxs)("span",{className:"rounded-full px-2 py-0.5 ring-1 ".concat(null!=(s=N[e.status])?s:N.pending),children:["⬡ ",e.name," ",e.done,"/",e.total]})]},e.name)})}),o&&u&&(0,n.jsx)("div",{className:"mb-3 space-y-1.5 rounded-xl border border-border bg-background/40 p-2",children:i.map((e,t)=>{var s,a,r,l;let i="failed"===e.status||(null==(s=e.verifyResult)?void 0:s.ok)===!1;return(0,n.jsxs)("div",{className:"text-[11px]",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:["아크 ",t+1]}),(0,n.jsxs)("span",{className:"rounded-full px-2 py-0.5 ring-1 ".concat(null!=(l=N[e.status])?l:N.pending),children:["⬡ ",e.name," \xb7 ",e.status]}),e.dependsOnArcs.length>0&&(0,n.jsxs)("span",{className:"text-muted-foreground",children:["← 선행 ",e.dependsOnArcs.length]})]}),(0,n.jsx)("div",{className:"mt-0.5 pl-1 text-muted-foreground",children:e.intent}),i&&(null==(a=e.verifyResult)?void 0:a.missing)&&(0,n.jsxs)("div",{className:"mt-0.5 rounded-md bg-red-500/10 px-2 py-1 text-red-300",children:["\uD83D\uDD12 아크 통합검증 실패: ",e.verifyResult.missing,(0,n.jsx)("div",{className:"text-red-400/70",children:"→ arc-revise 초안 카드가 발송됩니다(페이즈는 완료돼도 아크로는 미충족)."})]}),(null==(r=e.verifyResult)?void 0:r.ok)&&(0,n.jsxs)("div",{className:"mt-0.5 pl-1 text-emerald-400/70",children:["✓ 통합검증 통과: ",e.verifyResult.evidence.slice(0,80)]}),e.preflightVerdict&&"founded"!==e.preflightVerdict.verdict&&(0,n.jsxs)("div",{className:"mt-0.5 rounded-md bg-amber-500/10 px-2 py-1 text-amber-300",children:["⚠️ pre-flight: ","mirage"===e.preflightVerdict.verdict?"허상 의심":"과대 범위"," → ",e.preflightVerdict.action,(0,n.jsx)("div",{className:"text-amber-400/70",children:e.preflightVerdict.reason.slice(0,120)})]})]},e.arcId)})}),(0,n.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2 xl:grid-cols-3",children:s.tasks.map(e=>(0,n.jsx)(A,{task:e,selected:e.id===r,onClick:()=>l(e.id)},e.id))})]})}function I(e){var t;let{api:s,buildId:r}=e,[l,i]=(0,a.useState)(null),[d,o]=(0,a.useState)(null),c=(0,a.useRef)(null);return(0,a.useEffect)(()=>{let e,t=!1,n=async()=>{try{let a=await s.buildSnapshot(r,120);if(t)return;i(a),o(null),"running"===a.build.status&&(e=window.setTimeout(()=>void n(),2e3))}catch(e){t||o(e instanceof Error?e.message:String(e))}};return n(),()=>{t=!0,e&&window.clearTimeout(e)}},[s,r]),(0,a.useEffect)(()=>{c.current&&(c.current.scrollTop=c.current.scrollHeight)},[l]),(0,n.jsxs)("div",{className:"space-y-1.5",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 text-[11px]",children:[(0,n.jsx)("span",{className:"font-medium",children:"빌드 로그"}),(0,n.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5 text-muted-foreground",children:r}),l&&(0,n.jsx)("span",{className:"rounded-full px-2 py-0.5 ring-1 ".concat("running"===l.build.status?"bg-sky-500/15 text-sky-200 ring-sky-500/30":"bg-muted text-muted-foreground ring-border"),children:"running"===l.build.status?"● 라이브":l.build.status}),(null==l?void 0:l.diffStat)&&(0,n.jsxs)("span",{className:"text-muted-foreground",children:["+",l.diffStat.insertions,"/-",l.diffStat.deletions," \xb7 ",l.diffStat.files,"파일"]})]}),d&&(0,n.jsxs)("div",{className:"text-[11px] text-red-300",children:["로그 조회 실패: ",d]}),(0,n.jsx)("div",{ref:c,className:"max-h-64 overflow-auto rounded-lg border border-border bg-background/60 p-2 font-mono text-[10px] leading-relaxed text-muted-foreground",children:(null==l||null==(t=l.logTail)?void 0:t.length)?l.logTail.map((e,t)=>(0,n.jsx)("div",{className:"whitespace-pre-wrap break-all",children:e},t)):(0,n.jsx)("div",{className:"opacity-60",children:"로그 대기 중…"})})]})}function A(e){var t,s,a;let{task:r,selected:l,onClick:i}=e;return(0,n.jsxs)("button",{type:"button",onClick:i,className:["w-full rounded-xl border p-3 text-left transition-colors",l?"border-primary bg-primary/10 ring-1 ring-primary/40":"border-border bg-card hover:bg-accent/40"].join(" "),children:[(0,n.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,n.jsxs)("div",{className:"min-w-0",children:[r.missionTitle&&(0,n.jsxs)("div",{className:"mb-1 flex items-center gap-1 truncate text-[10px] text-indigo-300",title:r.missionTitle,children:[(0,n.jsx)("span",{className:"shrink-0",children:"\uD83C\uDFAF 미션"}),(0,n.jsx)("span",{className:"truncate opacity-80",children:r.missionTitle})]}),(0,n.jsx)("div",{className:"text-sm font-medium leading-5",children:r.title}),(0,n.jsx)("div",{className:"mt-1 text-[11px] text-muted-foreground",children:r.id})]}),(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[r.dryRun&&(0,n.jsx)("span",{className:"rounded-full bg-emerald-500/15 px-2 py-0.5 text-[10px] text-emerald-300",children:"dry run"}),(0,n.jsx)("span",{className:"rounded-full px-2 py-0.5 text-[10px] ring-1 ".concat(null!=(t=j[r.priority])?t:j.low),children:r.priority})]})]}),(0,n.jsxs)("div",{className:"mt-3 flex flex-wrap gap-1.5 text-[11px] text-muted-foreground",children:[(0,n.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5",children:r.surfaceKind}),"running"===r.status&&r.build&&(0,n.jsxs)("span",{className:"flex items-center gap-1 rounded-full bg-sky-500/15 px-2 py-0.5 text-sky-200 ring-1 ring-sky-500/30",title:"빌드 ".concat(r.build.buildId," \xb7 ").concat(r.build.backend).concat(r.build.maxTurns?" \xb7 ".concat(r.build.maxTurns,"턴"):""),children:[(0,n.jsx)("span",{className:"animate-pulse",children:"●"})," 빌드중 ",r.build.backend.replace(/^elanous-self:/,"")," 시도",r.build.attemptSeq]}),r.arcName&&(0,n.jsxs)("span",{className:"rounded-full px-2 py-0.5 ring-1 ".concat(null!=(a=N[null!=(s=r.arcStatus)?s:"pending"])?a:N.pending),title:"아크: ".concat(r.arcName).concat(r.arcStatus?" \xb7 ".concat(r.arcStatus):""),children:["⬡ ",r.arcName,r.phaseIndexInArc&&r.arcTotalPhases?" \xb7 ".concat(r.phaseIndexInArc,"/").concat(r.arcTotalPhases):""]}),r.featureName&&(0,n.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5",children:r.featureName}),r.scheduleText&&(0,n.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5",children:r.scheduleText}),r.showroomSessionId&&(0,n.jsx)("a",{href:"/showroom?session=".concat(encodeURIComponent(r.showroomSessionId)),onClick:e=>e.stopPropagation(),className:"rounded-full bg-sky-500/15 px-2 py-0.5 text-sky-200 ring-1 ring-sky-500/30 hover:bg-sky-500/25",title:"Open showroom session ".concat(r.showroomSessionId),children:"↗ showroom"})]}),(0,n.jsxs)("div",{className:"mt-3 flex items-center justify-between text-[11px] text-muted-foreground",children:[(0,n.jsxs)("span",{children:["attempt ",r.attempt,"/",r.maxRetries]}),(0,n.jsx)("span",{children:w(r.updatedAt)})]}),(0,n.jsx)(M,{task:r})]})}function M(e){let{task:t}=e,s=y.has(t.status),r=v.has(t.status),l=(0,a.useContext)(b);return s||r?(0,n.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-2",onClick:e=>e.stopPropagation(),children:[s&&(0,n.jsx)(p,{trigger:{refId:t.id,refKind:"task",finishedSurface:function(e){switch(e){case"terminal-pane":case"vw-slot":case"subagent":case"skill":case"chat-prompt":case"cron":case"llm-direct":case"acx-session":case"showroom":return e;default:return null}}(t.surfaceKind),outcome:"done"===t.status?"ok":"failed",completedAt:t.updatedAt,...t.featureName?{tags:[t.featureName]}:{}},...l?{onChoose:e=>{l(t.id,e)}}:{}}),r&&(0,n.jsx)(g,{request:{taskId:t.id,status:t.status,enteredStatusAt:t.updatedAt,observedAt:Date.now(),taskTitle:t.title}})]}):null}function R(e){let{label:t,value:s}=e;return(0,n.jsxs)("div",{className:"space-y-1",children:[(0,n.jsx)("div",{className:"text-[11px] uppercase tracking-wide text-muted-foreground",children:t}),(0,n.jsx)("div",{className:"text-sm",children:s})]})}function T(){var e,t,s,u,m,p;let{client:h}=(0,r.Q)(),g=(0,a.useMemo)(()=>new i(h),[h]),v=(0,a.useMemo)(()=>new d.Yt(h),[h]),[y,j]=(0,a.useState)(""),[N,M]=(0,a.useState)(!1),[T,J]=(0,a.useState)(new Map),[E,O]=(0,a.useState)([]),[D,P]=(0,a.useState)(null),[U,_]=(0,a.useState)(null),[F,H]=(0,a.useState)(null),[q,z]=(0,a.useState)(!1),[L,K]=(0,a.useState)(!1),[V,B]=(0,a.useState)("mission"),$=(0,a.useCallback)(async()=>{(0,o.cY)("webterm.tasks.list.refresh",{}),z(!0);try{let e=await g.list();O(e.tasks),P(e.summary),v.missionArcMap().then(J).catch(()=>{}),_(t=>t&&e.tasks.some(e=>e.id===t)?t:null)}catch(e){c.oR.error("task board failed: ".concat(e instanceof Error?e.message:e))}finally{z(!1)}},[g,v]),Y=(0,a.useCallback)(async(e,t)=>{try{var s;let n=await x({baseUrl:window.location.origin}).dispatch(e,t);n.ok?c.oR.success("".concat(t," 실행됨")):c.oR.error("".concat(t," 실패: ").concat(null!=(s=n.error)?s:""))}catch(e){c.oR.error("".concat(t," 실패: ").concat(e instanceof Error?e.message:e))}await $()},[$]),G=(0,a.useCallback)(async()=>{let e=y.trim();if(e&&!N){M(!0);try{let t=await v.commitMission(e,"intake");t.ok?(c.oR.success("태스크 생성 → 미션 fabric 이 플랜화 중".concat(t.missionId?" (".concat(t.missionId,")"):"")),j(""),setTimeout(()=>void $(),1200)):c.oR.error("태스크 생성 실패")}catch(e){c.oR.error("태스크 생성 실패: ".concat(e instanceof Error?e.message:e))}finally{M(!1)}}},[y,N,v,$]);(0,a.useEffect)(()=>{$();let e=window.setInterval(()=>void $(),15e3);return()=>window.clearInterval(e)},[$]),(0,a.useEffect)(()=>{if(!U)return void H(null);let e=!1;return K(!0),(async()=>{try{var t;let s=await g.detail(U);if(e)return;H({task:s.task,executions:s.executions.map(e=>({id:e.id,status:e.status,startedAt:e.startedAt,durationMs:e.durationMs,output:e.output})),events:s.events,linkedSchedulerJob:null!=(t=s.linkedSchedulerJob)?t:null})}catch(t){e||c.oR.error("task detail failed: ".concat(t instanceof Error?t.message:t))}finally{e||K(!1)}})(),()=>{e=!0}},[g,U]);let W=(0,a.useMemo)(()=>k.map(e=>({...e,tasks:E.filter(t=>e.statuses.some(e=>e===t.status))})),[E]),Q=(0,a.useMemo)(()=>(function(e){var t,s,n,a,r,l,i;let d=new Map;for(let n of e){let e=n.missionTitle?null!=(t=n.goalSlug)?t:n.missionTitle:"__standalone__";(null!=(s=d.get(e))?s:d.set(e,[]).get(e)).push(n)}let o=[];for(let[e,t]of Array.from(d.entries())){let s="__standalone__"===e,d=new Map;for(let e of t)if(e.arcName){let t=null!=(l=d.get(e.arcName))?l:{name:e.arcName,total:0,done:0,status:null!=(a=e.arcStatus)?a:"pending",index:null!=(r=e.arcIndex)?r:0};t.total+=1,"done"===e.status&&(t.done+=1),e.arcStatus&&(t.status=e.arcStatus),d.set(e.arcName,t)}let c=[...t].sort((e,t)=>{var s,n;return(null!=(s=S[e.status])?s:9)-(null!=(n=S[t.status])?n:9)||t.createdAt-e.createdAt});o.push({key:e,missionTitle:s?"독립 태스크 (미션 외)":null!=(i=null==(n=t[0])?void 0:n.missionTitle)?i:e,tasks:c,total:t.length,doneCount:t.filter(e=>"done"===e.status).length,runningCount:t.filter(e=>"running"===e.status).length,failedCount:t.filter(e=>"failed"===e.status).length,arcs:Array.from(d.values()).sort((e,t)=>e.index-t.index),isStandalone:s})}return o.sort((e,t)=>{if(e.isStandalone!==t.isStandalone)return e.isStandalone?1:-1;let s=e.runningCount>0||e.doneCount<e.total;return s!==(t.runningCount>0||t.doneCount<t.total)?s?-1:1:t.total-e.total})})(E),[E]);return(0,n.jsx)(b.Provider,{value:Y,children:(0,n.jsxs)("div",{className:"mx-auto max-w-[1600px] space-y-4 p-4",children:[(0,n.jsx)(f.r,{active:"tasks"}),(0,n.jsxs)("header",{className:"flex flex-col gap-3 lg:flex-row lg:items-end lg:justify-between",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"text-xl font-semibold tracking-tight",children:"Task Manager"}),(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"TOX board snapshot for backlog, running work, and closed items."})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[D&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"rounded-lg border border-border bg-card px-3 py-2 text-xs",children:[(0,n.jsx)("div",{className:"text-muted-foreground",children:"open"}),(0,n.jsx)("div",{className:"text-sm font-semibold",children:D.open})]}),(0,n.jsxs)("div",{className:"rounded-lg border border-border bg-card px-3 py-2 text-xs",children:[(0,n.jsx)("div",{className:"text-muted-foreground",children:"closed"}),(0,n.jsx)("div",{className:"text-sm font-semibold",children:D.terminal})]}),(0,n.jsxs)("div",{className:"rounded-lg border border-border bg-card px-3 py-2 text-xs",children:[(0,n.jsx)("div",{className:"text-muted-foreground",children:"linked schedules"}),(0,n.jsx)("div",{className:"text-sm font-semibold",children:D.linkedScheduler})]})]}),(0,n.jsxs)("div",{className:"flex rounded-lg border border-border bg-card p-0.5 text-xs",children:[(0,n.jsx)("button",{type:"button",onClick:()=>B("mission"),className:"rounded-md px-2.5 py-1 ".concat("mission"===V?"bg-primary/20 text-primary":"text-muted-foreground hover:text-foreground"),children:"\uD83C\uDFAF 미션별"}),(0,n.jsx)("button",{type:"button",onClick:()=>B("kanban"),className:"rounded-md px-2.5 py-1 ".concat("kanban"===V?"bg-primary/20 text-primary":"text-muted-foreground hover:text-foreground"),children:"칸반"})]}),(0,n.jsx)(l.$,{size:"sm",variant:"outline",onClick:()=>void $(),disabled:q,children:"Refresh"})]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2 rounded-xl border border-border bg-card p-2",children:[(0,n.jsx)("span",{className:"pl-1 text-sm text-muted-foreground",children:"+"}),(0,n.jsx)("input",{type:"text",value:y,onChange:e=>j(e.target.value),onKeyDown:e=>{"Enter"===e.key&&G()},placeholder:"새 태스크(골)를 입력하면 미션 fabric 이 플랜화→구현→DONE… 예: 'README 중복 정리 리포트 만들어줘'",className:"min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground/60",disabled:N}),(0,n.jsx)(l.$,{size:"sm",onClick:()=>void G(),disabled:N||!y.trim(),children:N?"생성 중…":"Create Task"})]}),(0,n.jsxs)("div",{className:"flex flex-col gap-4 xl:flex-row xl:items-start",children:[(0,n.jsx)("section",{className:"min-w-0 flex-1 space-y-3",children:"mission"===V?(0,n.jsx)("div",{className:"space-y-3",children:Q.length>0?Q.map(e=>{var t;return(0,n.jsx)(C,{group:e,selectedId:U,onSelect:_,arcDetail:null==(t=T.get(e.key))?void 0:t.arcs},e.key)}):(0,n.jsx)("div",{className:"rounded-xl border border-dashed border-border px-3 py-12 text-center text-sm text-muted-foreground",children:"미션/태스크 없음"})}):(0,n.jsx)("div",{className:"pb-2",children:(0,n.jsx)("div",{className:"flex flex-wrap gap-3",children:W.map(e=>(0,n.jsxs)("div",{className:"min-w-[170px] flex-1 rounded-2xl border border-border bg-muted/30 p-3",children:[(0,n.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,n.jsx)("h2",{className:"text-sm font-semibold",children:e.label}),(0,n.jsx)("span",{className:"rounded-full bg-background px-2 py-0.5 text-[11px] text-muted-foreground",children:e.tasks.length})]}),(0,n.jsx)("div",{className:"space-y-2",children:e.tasks.length>0?e.tasks.map(e=>(0,n.jsx)(A,{task:e,selected:e.id===U,onClick:()=>_(e.id)},e.id)):(0,n.jsx)("div",{className:"rounded-xl border border-dashed border-border px-3 py-8 text-center text-xs text-muted-foreground",children:"no tasks"})})]},e.id))})})}),U&&(0,n.jsxs)("aside",{className:"w-full shrink-0 space-y-3 rounded-2xl border border-border bg-card p-4 xl:w-[360px]",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("h2",{className:"text-base font-semibold",children:"Detail"}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(null==F?void 0:F.task)&&(0,n.jsx)("span",{className:"rounded-full bg-muted px-2 py-0.5 text-[11px] text-muted-foreground",children:F.task.status}),(0,n.jsx)("button",{type:"button",onClick:()=>_(null),className:"rounded-md px-1.5 py-0.5 text-xs text-muted-foreground hover:bg-accent/40 hover:text-foreground","aria-label":"Close detail",children:"✕"})]})]}),L||!F?(0,n.jsx)("div",{className:"text-sm text-muted-foreground",children:"Loading task detail…"}):(0,n.jsxs)("div",{className:"space-y-4",children:[(()=>{let e=E.find(e=>e.id===U);return(null==e?void 0:e.status)==="running"&&e.build?(0,n.jsx)(I,{api:g,buildId:e.build.buildId}):null})(),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-lg font-semibold leading-6",children:F.task.title}),(0,n.jsx)("div",{className:"mt-1 text-xs text-muted-foreground",children:F.task.id}),F.task.description&&(0,n.jsx)("p",{className:"mt-3 whitespace-pre-wrap text-sm text-muted-foreground",children:F.task.description})]}),(0,n.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,n.jsx)(R,{label:"Surface",value:F.task.surface.kind}),(0,n.jsx)(R,{label:"Priority",value:F.task.priority}),(0,n.jsx)(R,{label:"Goal",value:null!=(u=F.task.goalSlug)?u:"—"}),(0,n.jsx)(R,{label:"Feature",value:null!=(m=F.task.featureName)?m:"—"}),(0,n.jsx)(R,{label:"Depends On",value:F.task.dependsOn.length>0?F.task.dependsOn.join(", "):"—"}),(0,n.jsx)(R,{label:"Schedule",value:null!=(p=F.task.schedulerJobId)?p:"—"})]}),F.linkedSchedulerJob&&(0,n.jsxs)("div",{className:"rounded-xl border border-border bg-muted/40 px-3 py-2 text-sm",children:["linked schedule: ",F.linkedSchedulerJob.title,(0,n.jsx)("span",{className:"ml-2 text-xs text-muted-foreground",children:F.linkedSchedulerJob.taskId}),(null==(e=F.linkedSchedulerJob.taskMeta)?void 0:e.dryRun)&&(0,n.jsxs)("span",{className:"ml-2 rounded-full bg-emerald-500/15 px-2 py-0.5 text-[10px] text-emerald-300",children:["dry run",F.linkedSchedulerJob.taskMeta.dryRunOutcome?" \xb7 ".concat(F.linkedSchedulerJob.taskMeta.dryRunOutcome):""]})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("div",{className:"text-sm font-semibold",children:"Acceptance"}),(null==(s=F.task.acceptance)||null==(t=s.criteria)?void 0:t.length)?(0,n.jsx)("ul",{className:"space-y-1 text-sm text-muted-foreground",children:F.task.acceptance.criteria.map(e=>(0,n.jsx)("li",{className:"rounded-lg bg-muted/50 px-3 py-2",children:e},e))}):(0,n.jsx)("div",{className:"text-sm text-muted-foreground",children:"No acceptance criteria."})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("div",{className:"text-sm font-semibold",children:"Recent Executions"}),F.executions.length>0?(0,n.jsx)("div",{className:"space-y-2",children:F.executions.map(e=>(0,n.jsxs)("div",{className:"rounded-xl border border-border bg-background p-3",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,n.jsx)("span",{className:"font-medium",children:e.status}),(0,n.jsx)("span",{className:"text-xs text-muted-foreground",children:w(e.startedAt)})]}),void 0!==e.durationMs&&(0,n.jsxs)("div",{className:"mt-1 text-xs text-muted-foreground",children:["duration ",Math.round(e.durationMs/1e3),"s"]}),e.output&&(0,n.jsx)("pre",{className:"mt-2 max-h-28 overflow-auto whitespace-pre-wrap rounded-lg bg-muted p-2 text-xs text-muted-foreground",children:e.output.slice(0,600)})]},e.id))}):(0,n.jsx)("div",{className:"text-sm text-muted-foreground",children:"No executions recorded yet."})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("div",{className:"text-sm font-semibold",children:"Recent Events"}),F.events.length>0?(0,n.jsx)("div",{className:"space-y-1",children:F.events.slice(-8).reverse().map((e,t)=>(0,n.jsxs)("div",{className:"flex items-center justify-between rounded-lg bg-muted/50 px-3 py-2 text-xs",children:[(0,n.jsx)("span",{children:e.kind}),(0,n.jsx)("span",{className:"text-muted-foreground",children:w(e.timestamp)})]},"".concat(e.kind,"-").concat(e.timestamp,"-").concat(t)))}):(0,n.jsx)("div",{className:"text-sm text-muted-foreground",children:"No events recorded yet."})]})]})]})]})]})})}},98025:(e,t,s)=>{s.d(t,{GM:()=>i,J3:()=>l,WF:()=>n,bR:()=>r,m:()=>d,r5:()=>a});let n="/v1/devices",a="/v1/approvals/merges",r="/v1/templates/capability-preview",l="/v1/idle-nudge/preview",i="/v1/morning-digest/showroom",d="/v1/next-fluent/dispatch"}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4685],{24685:(e,t,r)=>{r.d(t,{$M:()=>p,hA:()=>h,tg:()=>v});var n=r(54456),i=r(60500),a=r(46773);let d="elanous.pwa.workspace",s=new Set(["chat","term","intake","tasks","workflows","control","settings"]);function l(e){return!!e&&"object"==typeof e&&"string"==typeof e.id&&0!==e.id.length&&"string"==typeof e.kind&&!!s.has(e.kind)&&"number"==typeof e.createdAt&&("chat"!==e.kind||"string"==typeof e.sessionId&&0!==e.sessionId.length&&(void 0===e.title||"string"==typeof e.title))&&!0}var u=r(58229),c=r(1355);let o={maxAlive:8},f={maxAlive:5},b=(0,i.createContext)(null);function p(e){let{children:t}=e,[r,s]=(0,i.useReducer)(a.an,a.Tx,e=>e),[p,h]=(0,i.useState)(null),v=(0,i.useRef)(!1);(0,i.useEffect)(()=>{if(v.current)return;v.current=!0;let e=function(){var e;let t,r=null;try{r=window.localStorage.getItem(d)}catch(e){return a.Tx}if(!r)return a.Tx;try{t=JSON.parse(r)}catch(e){return a.Tx}if(!t||"object"!=typeof t)return a.Tx;let n=t;return 1!==n.version?a.Tx:(e=n.state)&&"object"==typeof e&&Array.isArray(e.tabs)&&e.tabs.every(l)&&Array.isArray(e.order)&&e.order.every(e=>"string"==typeof e)&&Array.isArray(e.frozenIds)&&e.frozenIds.every(e=>"string"==typeof e)&&(null===e.activeId||"string"==typeof e.activeId)&&1?function(e){let t=new Set(e.tabs.map(e=>e.id)),r=e.order.filter(e=>t.has(e));for(let t of e.tabs)r.includes(t.id)||r.push(t.id);let n=e.frozenIds.filter(e=>t.has(e)),i=e.activeId;if(null!==i&&!t.has(i)){var a;i=null!=(a=r[0])?a:null}return null===i&&r.length>0&&(i=r[0]),{tabs:e.tabs,order:r,frozenIds:n,activeId:i}}(n.state):a.Tx}();(e.tabs.length>0||null!==e.activeId)&&s({type:"replace",state:e})},[]),(0,i.useEffect)(()=>{if(v.current)try{window.localStorage.setItem(d,JSON.stringify({version:1,state:r}))}catch(e){}},[r]);let I=(0,i.useRef)(new Map);(0,i.useEffect)(()=>{r.activeId&&I.current.set(r.activeId,Date.now())},[r.activeId]);let[y,k]=(0,i.useState)(o);(0,i.useEffect)(()=>{let e=window.matchMedia("(min-width: 768px)"),t=()=>k(e.matches?o:f);return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),(0,i.useEffect)(()=>{if(!v.current)return;let e=function(e,t,r){let n=new Set(e.frozenIds),i=e.tabs.map(e=>e.id).filter(e=>!n.has(e));if(i.length<=t.maxAlive)return{freezeCandidates:[]};let a=new Map(e.tabs.map(e=>[e.id,e])),d=i.map(e=>{var t,n;let i=a.get(e),d=null!=(n=null!=(t=r.get(e))?t:null==i?void 0:i.createdAt)?n:0;return{id:e,ts:d}});d.sort((e,t)=>e.ts-t.ts);let s=i.length-t.maxAlive,l=[];for(let{id:t}of d){if(l.length>=s)break;t!==e.activeId&&l.push(t)}return{freezeCandidates:l}}(r,y,I.current);if(0!==e.freezeCandidates.length)for(let t of e.freezeCandidates)s({type:"freezeTab",id:t})},[r,y]);let g=(0,i.useCallback)(e=>{let t,r="undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"t-".concat(Date.now().toString(36),"-").concat(Math.random().toString(36).slice(2,10));if("chat"===e.kind){var n;let i=null!=(n=e.sessionId)?n:(0,c.f6)();t=(0,a.MJ)({id:r,sessionId:i,...void 0!==e.title?{title:e.title}:{}})}else t=(0,a.ax)({id:r,kind:e.kind});return s({type:"addTab",tab:t}),r},[]),m=(0,i.useCallback)(e=>{s({type:"closeTab",id:e}),I.current.delete(e)},[]),x=(0,i.useCallback)(e=>{s({type:"activateTab",id:e})},[]),w=(0,i.useCallback)((e,t)=>{s({type:"reorderTab",id:e,toIndex:t})},[]),T=(0,i.useCallback)((e,t)=>{s({type:"updateTab",id:e,patch:t})},[]),z=(0,i.useCallback)(e=>{if("chat"===e)return null;if((0,u.k)(e)){let t=r.tabs.find(t=>t.kind===e);if(t)return s({type:"activateTab",id:t.id}),t.id}return g({kind:e})},[r.tabs,g]),A=(0,i.useCallback)(e=>{h(e)},[]),C=(0,i.useCallback)(()=>{h(null)},[]),M=(0,i.useMemo)(()=>({state:r,addTab:g,closeTab:m,activateTab:x,reorderTab:w,updateChatTab:T,activateOrAdd:z,pickerMode:p,openPicker:A,closePicker:C}),[r,g,m,x,w,T,z,p,A,C]);return(0,n.jsx)(b.Provider,{value:M,children:t})}function h(){let e=(0,i.useContext)(b);if(!e)throw Error("useWorkspace must be used inside <WorkspaceProvider>");return e}function v(){return(0,i.useContext)(b)}},46773:(e,t,r)=>{r.d(t,{MJ:()=>d,Tx:()=>i,an:()=>a,ax:()=>s,ub:()=>l});var n=r(58229);let i={tabs:[],activeId:null,order:[],frozenIds:[]};function a(e,t){switch(t.type){case"addTab":{var r;let i=t.tab,a=null==(r=t.activate)||r;if((0,n.k)(i.kind)){let t=e.tabs.find(e=>e.kind===i.kind);if(t)return a?{...e,activeId:t.id}:e}if(e.tabs.some(e=>e.id===i.id))return a?{...e,activeId:i.id}:e;let d=[...e.tabs,i],s=[...e.order,i.id];return{...e,tabs:d,order:s,activeId:a?i.id:e.activeId}}case"closeTab":{if(0>e.tabs.findIndex(e=>e.id===t.id))return e;let r=e.tabs.filter(e=>e.id!==t.id),n=e.order.filter(e=>e!==t.id),i=e.frozenIds.filter(e=>e!==t.id),a=e.activeId;if(e.activeId===t.id)if(0===n.length)a=null;else{let r=Math.min(Math.max(e.order.indexOf(t.id)-1,0),n.length-1);a=n[r]}return{...e,tabs:r,order:n,frozenIds:i,activeId:a}}case"activateTab":{if(!e.tabs.some(e=>e.id===t.id)||e.activeId===t.id)return e;let r=e.frozenIds.filter(e=>e!==t.id);return{...e,activeId:t.id,frozenIds:r}}case"reorderTab":{if(!e.tabs.some(e=>e.id===t.id))return e;let r=e.order.indexOf(t.id);if(r<0)return e;let n=Math.max(0,Math.min(t.toIndex,e.order.length-1));if(n===r)return e;let i=[...e.order];return i.splice(r,1),i.splice(n,0,t.id),{...e,order:i}}case"updateTab":{let r=e.tabs.findIndex(e=>e.id===t.id);if(r<0)return e;let n=e.tabs[r],i={};if("chat"===n.kind&&("sessionId"in t.patch&&"string"==typeof t.patch.sessionId&&(i.sessionId=t.patch.sessionId),"title"in t.patch&&(i.title=t.patch.title)),0===Object.keys(i).length)return e;let a={...n,...i},d=[...e.tabs];return d[r]=a,{...e,tabs:d}}case"freezeTab":if(!e.tabs.some(e=>e.id===t.id)||e.activeId===t.id||e.frozenIds.includes(t.id))return e;return{...e,frozenIds:[...e.frozenIds,t.id]};case"unfreezeTab":if(!e.frozenIds.includes(t.id))return e;return{...e,frozenIds:e.frozenIds.filter(e=>e!==t.id)};case"replace":return t.state}}function d(e){var t;return{id:e.id,kind:"chat",sessionId:e.sessionId,...void 0!==e.title?{title:e.title}:{},createdAt:null!=(t=e.createdAt)?t:Date.now()}}function s(e){var t;return{id:e.id,kind:e.kind,createdAt:null!=(t=e.createdAt)?t:Date.now()}}function l(e){let t=new Map(e.tabs.map(e=>[e.id,e])),r=[];for(let n of e.order){let e=t.get(n);e&&r.push(e)}return r}},58229:(e,t,r)=>{r.d(t,{k:()=>n});function n(e){return"chat"!==e}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4733],{3641:(e,t,r)=>{function n(e){let{moduleIds:t}=e;return null}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadChunks",{enumerable:!0,get:function(){return n}}),r(54456),r(51989),r(69458),r(84551)},5227:(e,t,r)=>{r.d(t,{R:()=>n});function n(e){return e?.ownerDocument||document}},6045:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(18494).A)("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]])},9083:(e,t,r)=>{r.d(t,{EW:()=>o,RS:()=>a,gR:()=>l});var n=r(39827);function a(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function l(e,t){if(!e||!t)return!1;let r=t.getRootNode?.();if(e.contains(t))return!0;if(r&&(0,n.Ng)(r)){let r=t;for(;r;){if(e===r)return!0;r=r.parentNode||r.host}}return!1}function o(e){return"composedPath"in e?e.composedPath()[0]:e.target}},10851:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,r(40121).createAsyncLocalStorage)()},13290:(e,t,r)=>{r.d(t,{N7:()=>l,Np:()=>o,SR:()=>u,Ui:()=>a,Xn:()=>i,dv:()=>n,jv:()=>s,zJ:()=>d});let n="none",a="trigger-press",l="trigger-hover",o="outside-press",u="close-press",i="focus-out",s="escape-key",d="imperative-action"},18494:(e,t,r)=>{r.d(t,{A:()=>s});var n=r(60500);let a=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim()},l=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var o={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let u=(0,n.createContext)({}),i=(0,n.forwardRef)((e,t)=>{var r,l,i;let{color:s,size:d,strokeWidth:c,absoluteStrokeWidth:f,className:h="",children:p,iconNode:y,...m}=e,{size:v=24,strokeWidth:g=2,absoluteStrokeWidth:k=!1,color:b="currentColor",className:j=""}=null!=(r=(0,n.useContext)(u))?r:{},w=(null!=f?f:k)?24*Number(null!=c?c:g)/Number(null!=d?d:v):null!=c?c:g;return(0,n.createElement)("svg",{ref:t,...o,width:null!=(l=null!=d?d:v)?l:o.width,height:null!=(i=null!=d?d:v)?i:o.height,stroke:null!=s?s:b,strokeWidth:w,className:a("lucide",j,h),...!p&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(m)&&{"aria-hidden":"true"},...m},[...y.map(e=>{let[t,r]=e;return(0,n.createElement)(t,r)}),...Array.isArray(p)?p:[p]])}),s=(e,t)=>{let r=(0,n.forwardRef)((r,o)=>{let{className:u,...s}=r;return(0,n.createElement)(i,{ref:o,iconNode:t,className:a("lucide-".concat(l(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),"lucide-".concat(e),u),...s})});return r.displayName=l(e),r}},26199:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let n=r(73323)._(r(35583));function a(e,t){var r;let a={};"function"==typeof e&&(a.loader=e);let l={...a,...t};return(0,n.default)({...l,modules:null==(r=l.loadableGenerated)?void 0:r.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},31470:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(18494).A)("maximize-2",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]])},35044:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(18494).A)("minimize-2",[["path",{d:"m14 10 7-7",key:"oa77jy"}],["path",{d:"M20 10h-6V4",key:"mjg0md"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M4 14h6v6",key:"rmj7iw"}]])},35448:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(18494).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},35583:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i}});let n=r(54456),a=r(60500),l=r(62004);function o(e){return{default:e&&"default"in e?e.default:e}}r(3641);let u={loader:()=>Promise.resolve(o(()=>null)),loading:null,ssr:!0},i=function(e){let t={...u,...e},r=(0,a.lazy)(()=>t.loader().then(o)),i=t.loading;function s(e){let o=i?(0,n.jsx)(i,{isLoading:!0,pastDelay:!0,error:null}):null,u=!t.ssr||!!t.loading,s=u?a.Suspense:a.Fragment,d=t.ssr?(0,n.jsxs)(n.Fragment,{children:[null,(0,n.jsx)(r,{...e})]}):(0,n.jsx)(l.BailoutToCSR,{reason:"next/dynamic",children:(0,n.jsx)(r,{...e})});return(0,n.jsx)(s,{...u?{fallback:o}:{},children:d})}return s.displayName="LoadableComponent",s}},37288:(e,t,r)=>{r.d(t,{d:()=>a});var n=r(56601);function a(e,t,r,a){let l=!1,o=!1,u=a??n.t0;return{reason:e,event:t??new Event("base-ui"),cancel(){l=!0},allowPropagation(){o=!0},get isCanceled(){return l},get isPropagationAllowed(){return o},trigger:r,...u}}},38806:(e,t,r)=>{r.d(t,{e:()=>a});var n=r(94664);function a(e){return(0,n.B)(e,"base-ui")}},40121:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{bindSnapshot:function(){return o},createAsyncLocalStorage:function(){return l},createSnapshot:function(){return u}});let r=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class n{disable(){throw r}getStore(){}run(){throw r}exit(){throw r}enterWith(){throw r}static bind(e){return e}}let a="undefined"!=typeof globalThis&&globalThis.AsyncLocalStorage;function l(){return a?new a:new n}function o(e){return a?a.bind(e):n.bind(e)}function u(){return a?a.snapshot():function(e,...t){return e(...t)}}},60302:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(18494).A)("upload",[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]])},60796:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(18494).A)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]])},61856:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(18494).A)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]])},62004:(e,t,r)=>{function n(e){let{reason:t,children:r}=e;return r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return n}}),r(82424)},67621:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(18494).A)("messages-square",[["path",{d:"M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z",key:"1n2ejm"}],["path",{d:"M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1",key:"1qfcsi"}]])},69458:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorage",{enumerable:!0,get:function(){return n.workAsyncStorageInstance}});let n=r(10851)},77834:(e,t,r)=>{r.d(t,{default:()=>a.a});var n=r(26199),a=r.n(n)},80581:(e,t,r)=>{var n=r(35793);r.o(n,"useParams")&&r.d(t,{useParams:function(){return n.useParams}}),r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})},94664:(e,t,r)=>{r.d(t,{B:()=>u});var n=r(60500);let a={...r.t(n,2)},l=0,o=a.useId;function u(e,t){if(void 0!==o){let r=o();return null!=e?e:t?"".concat(t,"-").concat(r):r}return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mui",[r,a]=n.useState(e),o=e||r;return n.useEffect(()=>{null==r&&(l+=1,a("".concat(t,"-").concat(l)))},[r,t]),o}(e,t)}}}]);
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4883],{74883:(e,t,r)=>{r.r(t),r.d(t,{SHELL_READY_CAP_MS:()=>X,XtermView:()=>q});var n,l,i,s,o,a=r(54456),u=r(60500),c=r(29074),h=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;(this._terminal.rows!==e.rows||this._terminal.cols!==e.cols)&&(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core._renderService.dimensions;if(0===e.css.cell.width||0===e.css.cell.height)return;let t=0===this._terminal.options.scrollback?0:this._terminal.options.overviewRuler?.width||14,r=window.getComputedStyle(this._terminal.element.parentElement),n=parseInt(r.getPropertyValue("height")),l=Math.max(0,parseInt(r.getPropertyValue("width"))),i=window.getComputedStyle(this._terminal.element),s={top:parseInt(i.getPropertyValue("padding-top")),bottom:parseInt(i.getPropertyValue("padding-bottom")),right:parseInt(i.getPropertyValue("padding-right")),left:parseInt(i.getPropertyValue("padding-left"))},o=s.top+s.bottom;return{cols:Math.max(2,Math.floor((l-(s.right+s.left)-t)/e.css.cell.width)),rows:Math.max(1,Math.floor((n-o)/e.css.cell.height))}}},d=r(11530),f=r(74778),m=0,p=0,g=0,b=0;function _(e){let t=e.toString(16);return t.length<2?"0"+t:t}function C(e,t){return e<t?(t+.05)/(e+.05):(e+.05)/(t+.05)}(e=>{e.toCss=function(e,t,r,n){return void 0!==n?`#${_(e)}${_(t)}${_(r)}${_(n)}`:`#${_(e)}${_(t)}${_(r)}`},e.toRgba=function(e,t,r,n=255){return(e<<24|t<<16|r<<8|n)>>>0},e.toColor=function(t,r,n,l){return{css:e.toCss(t,r,n,l),rgba:e.toRgba(t,r,n,l)}}})(n||={}),(e=>{function t(e,t){return b=Math.round(255*t),[m,p,g]=o.toChannels(e.rgba),{css:n.toCss(m,p,g,b),rgba:n.toRgba(m,p,g,b)}}e.blend=function(e,t){if(1==(b=(255&t.rgba)/255))return{css:t.css,rgba:t.rgba};let r=t.rgba>>24&255,l=t.rgba>>16&255,i=t.rgba>>8&255,s=e.rgba>>24&255,o=e.rgba>>16&255,a=e.rgba>>8&255;return m=s+Math.round((r-s)*b),p=o+Math.round((l-o)*b),g=a+Math.round((i-a)*b),{css:n.toCss(m,p,g),rgba:n.toRgba(m,p,g)}},e.isOpaque=function(e){return(255&e.rgba)==255},e.ensureContrastRatio=function(e,t,r){let l=o.ensureContrastRatio(e.rgba,t.rgba,r);if(l)return n.toColor(l>>24&255,l>>16&255,l>>8&255)},e.opaque=function(e){let t=(255|e.rgba)>>>0;return[m,p,g]=o.toChannels(t),{css:n.toCss(m,p,g),rgba:t}},e.opacity=t,e.multiplyOpacity=function(e,r){return b=255&e.rgba,t(e,b*r/255)},e.toColorRGB=function(e){return[e.rgba>>24&255,e.rgba>>16&255,e.rgba>>8&255]}})(l||={}),(e=>{let t,r;try{let e=document.createElement("canvas");e.width=1,e.height=1;let n=e.getContext("2d",{willReadFrequently:!0});n&&((t=n).globalCompositeOperation="copy",r=t.createLinearGradient(0,0,1,1))}catch{}e.toColor=function(e){if(e.match(/#[\da-f]{3,8}/i))switch(e.length){case 4:return m=parseInt(e.slice(1,2).repeat(2),16),p=parseInt(e.slice(2,3).repeat(2),16),g=parseInt(e.slice(3,4).repeat(2),16),n.toColor(m,p,g);case 5:return m=parseInt(e.slice(1,2).repeat(2),16),p=parseInt(e.slice(2,3).repeat(2),16),g=parseInt(e.slice(3,4).repeat(2),16),b=parseInt(e.slice(4,5).repeat(2),16),n.toColor(m,p,g,b);case 7:return{css:e,rgba:(parseInt(e.slice(1),16)<<8|255)>>>0};case 9:return{css:e,rgba:parseInt(e.slice(1),16)>>>0}}let l=e.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(l)return m=parseInt(l[1]),p=parseInt(l[2]),g=parseInt(l[3]),b=Math.round((void 0===l[5]?1:parseFloat(l[5]))*255),n.toColor(m,p,g,b);if(!t||!r||(t.fillStyle=r,t.fillStyle=e,"string"!=typeof t.fillStyle)||(t.fillRect(0,0,1,1),[m,p,g,b]=t.getImageData(0,0,1,1).data,255!==b))throw Error("css.toColor: Unsupported css format");return{rgba:n.toRgba(m,p,g,b),css:e}}})(i||={}),(e=>{function t(e,t,r){let n=e/255,l=t/255,i=r/255;return .2126*(n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))+.7152*(l<=.03928?l/12.92:Math.pow((l+.055)/1.055,2.4))+.0722*(i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4))}e.relativeLuminance=function(e){return t(e>>16&255,e>>8&255,255&e)},e.relativeLuminance2=t})(s||={}),(e=>{function t(e,t,r){let n=e>>24&255,l=e>>16&255,i=e>>8&255,o=t>>24&255,a=t>>16&255,u=t>>8&255,c=C(s.relativeLuminance2(o,a,u),s.relativeLuminance2(n,l,i));for(;c<r&&(o>0||a>0||u>0);)o-=Math.max(0,Math.ceil(.1*o)),a-=Math.max(0,Math.ceil(.1*a)),u-=Math.max(0,Math.ceil(.1*u)),c=C(s.relativeLuminance2(o,a,u),s.relativeLuminance2(n,l,i));return(o<<24|a<<16|u<<8|255)>>>0}function r(e,t,r){let n=e>>24&255,l=e>>16&255,i=e>>8&255,o=t>>24&255,a=t>>16&255,u=t>>8&255,c=C(s.relativeLuminance2(o,a,u),s.relativeLuminance2(n,l,i));for(;c<r&&(o<255||a<255||u<255);)o=Math.min(255,o+Math.ceil((255-o)*.1)),a=Math.min(255,a+Math.ceil((255-a)*.1)),u=Math.min(255,u+Math.ceil((255-u)*.1)),c=C(s.relativeLuminance2(o,a,u),s.relativeLuminance2(n,l,i));return(o<<24|a<<16|u<<8|255)>>>0}e.blend=function(e,t){if(1==(b=(255&t)/255))return t;let r=e>>24&255,l=e>>16&255,i=e>>8&255;return m=r+Math.round(((t>>24&255)-r)*b),p=l+Math.round(((t>>16&255)-l)*b),g=i+Math.round(((t>>8&255)-i)*b),n.toRgba(m,p,g)},e.ensureContrastRatio=function(e,n,l){let i=s.relativeLuminance(e>>8),o=s.relativeLuminance(n>>8);if(C(i,o)<l){if(o<i){let o=t(e,n,l),a=C(i,s.relativeLuminance(o>>8));if(a<l){let t=r(e,n,l);return a>C(i,s.relativeLuminance(t>>8))?o:t}return o}let a=r(e,n,l),u=C(i,s.relativeLuminance(a>>8));if(u<l){let r=t(e,n,l);return u>C(i,s.relativeLuminance(r>>8))?a:r}return a}},e.reduceLuminance=t,e.increaseLuminance=r,e.toChannels=function(e){return[e>>24&255,e>>16&255,e>>8&255,255&e]}})(o||={});var w=Object.freeze((()=>{let e=[i.toColor("#2e3436"),i.toColor("#cc0000"),i.toColor("#4e9a06"),i.toColor("#c4a000"),i.toColor("#3465a4"),i.toColor("#75507b"),i.toColor("#06989a"),i.toColor("#d3d7cf"),i.toColor("#555753"),i.toColor("#ef2929"),i.toColor("#8ae234"),i.toColor("#fce94f"),i.toColor("#729fcf"),i.toColor("#ad7fa8"),i.toColor("#34e2e2"),i.toColor("#eeeeec")],t=[0,95,135,175,215,255];for(let r=0;r<216;r++){let l=t[r/36%6|0],i=t[r/6%6|0],s=t[r%6];e.push({css:n.toCss(l,i,s),rgba:n.toRgba(l,i,s)})}for(let t=0;t<24;t++){let r=8+10*t;e.push({css:n.toCss(r,r,r),rgba:n.toRgba(r,r,r)})}return e})());function v(e,t,r){return Math.max(t,Math.min(e,r))}var y=class{constructor(e){this._buffer=e}serialize(e,t){let r=this._buffer.getNullCell(),n=this._buffer.getNullCell(),l=r,i=e.start.y,s=e.end.y,o=e.start.x,a=e.end.x;this._beforeSerialize(s-i,i,s);for(let t=i;t<=s;t++){let i=this._buffer.getLine(t);if(i){let s=t===e.start.y?o:0,u=t===e.end.y?a:i.length;for(let e=s;e<u;e++){let s=i.getCell(e,l===r?n:r);if(!s){console.warn(`Can't get cell at row=${t}, col=${e}`);continue}this._nextCell(s,l,t,e),l=s}}this._rowEnd(t,t===s)}return this._afterSerialize(),this._serializeString(t)}_nextCell(e,t,r,n){}_rowEnd(e,t){}_beforeSerialize(e,t,r){}_afterSerialize(){}_serializeString(e){return""}};function x(e,t){return e.getFgColorMode()===t.getFgColorMode()&&e.getFgColor()===t.getFgColor()}function S(e,t){return e.getBgColorMode()===t.getBgColorMode()&&e.getBgColor()===t.getBgColor()}function R(e,t){return e.isInverse()===t.isInverse()&&e.isBold()===t.isBold()&&e.isUnderline()===t.isUnderline()&&e.isOverline()===t.isOverline()&&e.isBlink()===t.isBlink()&&e.isInvisible()===t.isInvisible()&&e.isItalic()===t.isItalic()&&e.isDim()===t.isDim()&&e.isStrikethrough()===t.isStrikethrough()}var I=class extends y{constructor(e,t){super(e),this._terminal=t,this._rowIndex=0,this._allRows=[],this._allRowSeparators=[],this._currentRow="",this._nullCellCount=0,this._cursorStyle=this._buffer.getNullCell(),this._cursorStyleRow=0,this._cursorStyleCol=0,this._backgroundCell=this._buffer.getNullCell(),this._firstRow=0,this._lastCursorRow=0,this._lastCursorCol=0,this._lastContentCursorRow=0,this._lastContentCursorCol=0,this._thisRowLastChar=this._buffer.getNullCell(),this._thisRowLastSecondChar=this._buffer.getNullCell(),this._nextRowFirstChar=this._buffer.getNullCell()}_beforeSerialize(e,t,r){this._allRows=Array(e),this._lastContentCursorRow=t,this._lastCursorRow=t,this._firstRow=t}_rowEnd(e,t){this._nullCellCount>0&&!S(this._cursorStyle,this._backgroundCell)&&(this._currentRow+=`\x1b[${this._nullCellCount}X`);let r="";if(!t){e-this._firstRow>=this._terminal.rows&&this._buffer.getLine(this._cursorStyleRow)?.getCell(this._cursorStyleCol,this._backgroundCell);let t=this._buffer.getLine(e),n=this._buffer.getLine(e+1);if(n.isWrapped){r="";let l=t.getCell(t.length-1,this._thisRowLastChar),i=t.getCell(t.length-2,this._thisRowLastSecondChar),s=n.getCell(0,this._nextRowFirstChar),o=s.getWidth()>1,a=!1;(s.getChars()&&o?this._nullCellCount<=1:this._nullCellCount<=0)&&((l.getChars()||0===l.getWidth())&&S(l,s)&&(a=!0),o&&(i.getChars()||0===i.getWidth())&&S(l,s)&&S(i,s)&&(a=!0)),a||(r="-".repeat(this._nullCellCount+1)+"\x1b[1D\x1b[1X",this._nullCellCount>0&&(r+=`\x1b[A\x1b[${t.length-this._nullCellCount}C\x1b[${this._nullCellCount}X\x1b[${t.length-this._nullCellCount}D\x1b[B`),this._lastContentCursorRow=e+1,this._lastContentCursorCol=0,this._lastCursorRow=e+1,this._lastCursorCol=0)}else r=`\r
2
+ `,this._lastCursorRow=e+1,this._lastCursorCol=0}this._allRows[this._rowIndex]=this._currentRow,this._allRowSeparators[this._rowIndex++]=r,this._currentRow="",this._nullCellCount=0}_diffStyle(e,t){let r=[],n=!x(e,t),l=!S(e,t),i=!R(e,t);if(n||l||i)if(e.isAttributeDefault())t.isAttributeDefault()||r.push(0);else{if(n){let t=e.getFgColor();e.isFgRGB()?r.push(38,2,t>>>16&255,t>>>8&255,255&t):e.isFgPalette()?t>=16?r.push(38,5,t):r.push(8&t?90+(7&t):30+(7&t)):r.push(39)}if(l){let t=e.getBgColor();e.isBgRGB()?r.push(48,2,t>>>16&255,t>>>8&255,255&t):e.isBgPalette()?t>=16?r.push(48,5,t):r.push(8&t?100+(7&t):40+(7&t)):r.push(49)}i&&(e.isInverse()!==t.isInverse()&&r.push(e.isInverse()?7:27),e.isBold()!==t.isBold()&&r.push(e.isBold()?1:22),e.isUnderline()!==t.isUnderline()&&r.push(e.isUnderline()?4:24),e.isOverline()!==t.isOverline()&&r.push(e.isOverline()?53:55),e.isBlink()!==t.isBlink()&&r.push(e.isBlink()?5:25),e.isInvisible()!==t.isInvisible()&&r.push(e.isInvisible()?8:28),e.isItalic()!==t.isItalic()&&r.push(e.isItalic()?3:23),e.isDim()!==t.isDim()&&r.push(e.isDim()?2:22),e.isStrikethrough()!==t.isStrikethrough()&&r.push(e.isStrikethrough()?9:29))}return r}_nextCell(e,t,r,n){if(0===e.getWidth())return;let l=""===e.getChars(),i=this._diffStyle(e,this._cursorStyle);if(l?!S(this._cursorStyle,e):i.length>0){this._nullCellCount>0&&(S(this._cursorStyle,this._backgroundCell)||(this._currentRow+=`\x1b[${this._nullCellCount}X`),this._currentRow+=`\x1b[${this._nullCellCount}C`,this._nullCellCount=0),this._lastContentCursorRow=this._lastCursorRow=r,this._lastContentCursorCol=this._lastCursorCol=n,this._currentRow+=`\x1b[${i.join(";")}m`;let e=this._buffer.getLine(r);void 0!==e&&(e.getCell(n,this._cursorStyle),this._cursorStyleRow=r,this._cursorStyleCol=n)}l?this._nullCellCount+=e.getWidth():(this._nullCellCount>0&&(S(this._cursorStyle,this._backgroundCell)||(this._currentRow+=`\x1b[${this._nullCellCount}X`),this._currentRow+=`\x1b[${this._nullCellCount}C`,this._nullCellCount=0),this._currentRow+=e.getChars(),this._lastContentCursorRow=this._lastCursorRow=r,this._lastContentCursorCol=this._lastCursorCol=n+e.getWidth())}_serializeString(e){let t=this._allRows.length;this._buffer.length-this._firstRow<=this._terminal.rows&&(t=this._lastContentCursorRow+1-this._firstRow,this._lastCursorCol=this._lastContentCursorCol,this._lastCursorRow=this._lastContentCursorRow);let r="";for(let e=0;e<t;e++)r+=this._allRows[e],e+1<t&&(r+=this._allRowSeparators[e]);if(!e){var n,l;let e=this._buffer.baseY+this._buffer.cursorY,t=this._buffer.cursorX;(e!==this._lastCursorRow||t!==this._lastCursorCol)&&((n=e-this._lastCursorRow)>0?r+=`\x1b[${n}B`:n<0&&(r+=`\x1b[${-n}A`),(l=t-this._lastCursorCol)>0?r+=`\x1b[${l}C`:l<0&&(r+=`\x1b[${-l}D`))}let i=this._terminal._core._inputHandler._curAttrData,s=this._diffStyle(i,this._cursorStyle);return s.length>0&&(r+=`\x1b[${s.join(";")}m`),r}},k=class{activate(e){this._terminal=e}_serializeBufferByScrollback(e,t,r){let n=t.length,l=void 0===r?n:v(r+e.rows,0,n);return this._serializeBufferByRange(e,t,{start:n-l,end:n-1},!1)}_serializeBufferByRange(e,t,r,n){return new I(t,e).serialize({start:{x:0,y:"number"==typeof r.start?r.start:r.start.line},end:{x:e.cols,y:"number"==typeof r.end?r.end:r.end.line}},n)}_serializeBufferAsHTML(e,t){let r=e.buffer.active,n=new M(r,e,t),l=t.onlySelection??!1,i=t.range;if(i)return n.serialize({start:{x:i.startCol,y:(i.startLine,i.startLine)},end:{x:e.cols,y:(i.endLine,i.endLine)}});if(!l){let l=r.length,i=t.scrollback,s=void 0===i?l:v(i+e.rows,0,l);return n.serialize({start:{x:0,y:l-s},end:{x:e.cols,y:l-1}})}let s=this._terminal?.getSelectionPosition();return void 0!==s?n.serialize({start:{x:s.start.x,y:s.start.y},end:{x:s.end.x,y:s.end.y}}):""}_serializeModes(e){let t="",r=e.modes;if(r.applicationCursorKeysMode&&(t+="\x1b[?1h"),r.applicationKeypadMode&&(t+="\x1b[?66h"),r.bracketedPasteMode&&(t+="\x1b[?2004h"),r.insertMode&&(t+="\x1b[4h"),r.originMode&&(t+="\x1b[?6h"),r.reverseWraparoundMode&&(t+="\x1b[?45h"),r.sendFocusMode&&(t+="\x1b[?1004h"),!1===r.wraparoundMode&&(t+="\x1b[?7l"),"none"!==r.mouseTrackingMode)switch(r.mouseTrackingMode){case"x10":t+="\x1b[?9h";break;case"vt200":t+="\x1b[?1000h";break;case"drag":t+="\x1b[?1002h";break;case"any":t+="\x1b[?1003h"}return t}serialize(e){if(!this._terminal)throw Error("Cannot use addon until it has been loaded");let t=e?.range?this._serializeBufferByRange(this._terminal,this._terminal.buffer.normal,e.range,!0):this._serializeBufferByScrollback(this._terminal,this._terminal.buffer.normal,e?.scrollback);if(!e?.excludeAltBuffer&&"alternate"===this._terminal.buffer.active.type){let e=this._serializeBufferByScrollback(this._terminal,this._terminal.buffer.alternate,void 0);t+=`\x1b[?1049h\x1b[H${e}`}return e?.excludeModes||(t+=this._serializeModes(this._terminal)),t}serializeAsHTML(e){if(!this._terminal)throw Error("Cannot use addon until it has been loaded");return this._serializeBufferAsHTML(this._terminal,e||{})}dispose(){}},M=class extends y{constructor(e,t,r){super(e),this._terminal=t,this._options=r,this._currentRow="",this._htmlContent="",t._core._themeService?this._ansiColors=t._core._themeService.colors.ansi:this._ansiColors=w}_padStart(e,t,r){return t|=0,r=r??" ",e.length>t?e:((t-=e.length)>r.length&&(r+=r.repeat(t/r.length)),r.slice(0,t)+e)}_beforeSerialize(e,t,r){this._htmlContent+="<html><body>\x3c!--StartFragment--\x3e<pre>";let n="#000000",l="#ffffff";this._options.includeGlobalBackground&&(n=this._terminal.options.theme?.foreground??"#ffffff",l=this._terminal.options.theme?.background??"#000000");let i=[];i.push("color: "+n+";"),i.push("background-color: "+l+";"),i.push("font-family: "+this._terminal.options.fontFamily+";"),i.push("font-size: "+this._terminal.options.fontSize+"px;"),this._htmlContent+="<div style='"+i.join(" ")+"'>"}_afterSerialize(){this._htmlContent+="</div>",this._htmlContent+="</pre>\x3c!--EndFragment--\x3e</body></html>"}_rowEnd(e,t){this._htmlContent+="<div><span>"+this._currentRow+"</span></div>",this._currentRow=""}_getHexColor(e,t){let r=t?e.getFgColor():e.getBgColor();return(t?e.isFgRGB():e.isBgRGB())?"#"+[r>>16&255,r>>8&255,255&r].map(e=>this._padStart(e.toString(16),2,"0")).join(""):(t?e.isFgPalette():e.isBgPalette())?this._ansiColors[r].css:void 0}_diffStyle(e,t){let r=[],n=!x(e,t),l=!S(e,t),i=!R(e,t);if(n||l||i){let t=this._getHexColor(e,!0);t&&r.push("color: "+t+";");let n=this._getHexColor(e,!1);return n&&r.push("background-color: "+n+";"),e.isInverse()&&r.push("color: #000000; background-color: #BFBFBF;"),e.isBold()&&r.push("font-weight: bold;"),e.isUnderline()&&e.isOverline()?r.push("text-decoration: overline underline;"):e.isUnderline()?r.push("text-decoration: underline;"):e.isOverline()&&r.push("text-decoration: overline;"),e.isBlink()&&r.push("text-decoration: blink;"),e.isInvisible()&&r.push("visibility: hidden;"),e.isItalic()&&r.push("font-style: italic;"),e.isDim()&&r.push("opacity: 0.5;"),e.isStrikethrough()&&r.push("text-decoration: line-through;"),r}}_nextCell(e,t,r,n){if(0===e.getWidth())return;let l=""===e.getChars(),i=this._diffStyle(e,t);i&&(this._currentRow+=0===i.length?"</span><span>":"</span><span style='"+i.join(" ")+"'>"),l?this._currentRow+=" ":this._currentRow+=function(e){switch(e){case"&":return"&amp;";case"<":return"&lt;"}return e}(e.getChars())}_serializeString(){return this._htmlContent}};r(42252);var E=r(36581),z=r(50733),L=r(8017);let B="elanous.pwa.peerId",N=null;function Y(){if(N)return N;let e=window.sessionStorage.getItem(B);return e&&0!==e.length||(e=function(){if("undefined"!=typeof crypto&&"function"==typeof crypto.getRandomValues){let e=new Uint32Array(2);return crypto.getRandomValues(e),(BigInt(e[0])<<32n|BigInt(e[1])).toString(36).slice(0,8)}return Math.random().toString(36).slice(2,10)}(),window.sessionStorage.setItem(B,e)),N=e,e}var F=r(31734),T=r(19719);let D=/^\x1b\[[?>=][\d;]*[a-zA-Z$]/,A=/^\x1b\[\d+;\d+R$/,$=/^\x1b\[0?n$/,O=/^\x1b\][\d;]+;[^\x07\x1b]*(?:\x07|\x1b\\)$/,P=/^\x1b\[\d+;\d+;\d+t$/;var j=r(41015);let G="elanous.pwa.termFocusStartDisabled",U="elanous.pwa.termFontSize",V=e=>(e.ctrlKey||e.metaKey)&&e.shiftKey&&!e.altKey;function W(e){return Number.isFinite(e)?Math.min(32,Math.max(9,Math.round(e))):13}var H=r(94757);let X=2e3;function q(e){var t;let{sessionId:n,terminalId:l,clearRequest:i=0,readOnly:s=!1,onForeignInputActivity:o}=e,m=(0,u.useRef)(null),p=(0,u.useRef)(null),g=(0,u.useRef)(null),{compact:b}=(0,H.K)(),[_,C]=(0,u.useState)(!1),w=(0,u.useRef)(_);w.current=_;let v=(0,u.useRef)(!1);(0,u.useEffect)(()=>{var e,t;if(!v.current&&b&&(v.current=!0,null==(e=(t=window).matchMedia)?void 0:e.call(t,"(pointer: coarse)").matches)){let e=null;try{e=window.localStorage}catch(e){}!function(e){try{return(null==e?void 0:e.getItem(G))==="1"}catch(e){return!1}}(e)&&(w.current=!0,C(!0))}},[b]);let y=()=>{let e=w.current;if(w.current=!e,e)try{var t=window.localStorage;try{null==t||t.setItem(G,"1")}catch(e){}}catch(e){}C(!e)},x=(0,u.useRef)(void 0),S=(0,u.useRef)(l);S.current!==l&&(S.current=l,x.current=void 0);let R=(0,u.useRef)(n),I=(0,u.useRef)(o);I.current=o;let{client:M,config:B,setSessionId:N}=(0,E.Q)(),[q,K]=(0,u.useState)(()=>({state:"CONNECTING",terminalId:l,connectingSince:Date.now()})),[J,Q]=(0,u.useState)(0),Z=(0,u.useRef)(0),[ee,et]=(0,u.useState)(()=>Date.now()),[er,en]=(0,u.useState)(null),el=(null==er?void 0:er.terminalId)===l?er:null,ei=q.terminalId===l?q.state:"CONNECTING",es=q.terminalId===l?q.connectingSince:ee;(0,u.useEffect)(()=>{if("CONNECTING"!==ei)return;et(Date.now());let e=window.setInterval(()=>et(Date.now()),1e3);return()=>window.clearInterval(e)},[ei,l]),(0,u.useEffect)(()=>{var e,t,i;if(!m.current)return;let o=new c.B({fontFamily:'"JetBrainsMono Nerd Font", "JetBrains Mono", monospace',fontSize:function(e){try{let t=null==e?void 0:e.getItem(U);return t?W(Number(t)):13}catch(e){return 13}}(window.localStorage),theme:{background:"#0d0c08",foreground:"#e9e3d4",cursor:"#e9e3d4"},allowProposedApi:!0,scrollback:5e3,cursorBlink:!s,disableStdin:s});(0,z.cY)("webterm.xterm.boot",{sessionId:n,terminalId:l,readOnly:s});let a=new h;o.loadAddon(a),o.loadAddon(new d.c((e,t)=>(0,z.cY)("webterm.link.click",{uri:t}))),o.loadAddon(new f.I);let u=new k;o.loadAddon(u),(async()=>{try{let e=await r.e(7334).then(r.bind(r,7334));o.loadAddon(new e.WebglAddon)}catch(e){(0,z.cY)("webterm.webgl.fallback",{reason:String(e)})}})(),(async()=>{try{let e=await r.e(390).then(r.bind(r,20390));o.loadAddon(new e.ImageAddon),(0,z.cY)("webterm.image-addon.loaded")}catch(e){(0,z.cY)("webterm.image-addon.fallback",{reason:String(e)})}})(),o.unicode.activeVersion="11",o.open(m.current),p.current=o;let b=g.current;b&&(b.__elanousTerm=o),a.fit();let _=(0,F.o1)("xtermScrollback",l),C=(0,F.N2)(_);"string"==typeof C&&C.length>0&&o.write(C);let w=()=>{},v=!1,y=M.connectAcp({...n?{sessionId:n}:{},onSession:e=>{e&&(v=!0,R.current=e,w(e)),e&&e!==n&&((0,z.cY)("webterm.acp.session.adopted",{from:n,to:e}),N(e))}});(0,z.cY)("webterm.acp.session.attach",{sessionId:n,terminalId:l});let x=y.onState((e,t)=>{let r=Date.now();K(n=>({state:e,terminalId:l,connectingSince:"CONNECTING"===e?r:n.connectingSince,...(null==t?void 0:t.message)?{reason:t.message}:{}})),"OPEN"===e&&(Z.current=0),"CONNECTING"===e&&et(r),(0,z.cY)("webterm.xterm.acp-state",{terminalId:l,state:e,reason:null==t?void 0:t.message})}),S=()=>{},E=!1,B=Date.now(),G=new Promise(e=>{let t=!1;S=r=>{t||(t=!0,(0,z.cY)("webterm.shell.ready",{terminalId:l,via:r,ms:Date.now()-B}),e())}}),V=setTimeout(()=>S("cap-".concat(X,"ms")),X);y.ready.then(e=>e?(v||(R.current=e),queueMicrotask(()=>w(R.current)),y.send("terminal/spawn",{sessionId:R.current,terminalId:l,cols:o.cols,rows:o.rows,replay:!0})):void S("no-session")).then(e=>{if(void 0===e)return;(0,z.cY)("webterm.spawn.result",e);let t="string"!=typeof e.snapshot||0===e.snapshot.trim().length;if("spawned"===e.status||"attached"===e.status&&t?E=!0:S("attached"===e.status?"attached":"status:".concat(String(e.status))),!s&&R.current){try{a.fit()}catch(e){}(0,z.cY)("webterm.xterm.size-sync",{terminalId:l,cols:o.cols,rows:o.rows,status:e.status}),y.send("terminal/resize",{sessionId:R.current,terminalId:l,cols:o.cols,rows:o.rows}).catch(e=>(0,z.cY)("webterm.resize.send-error",{reason:String(e)}))}"attached"===e.status&&"string"==typeof e.snapshot&&e.snapshot.length>0&&((0,z.cY)("webterm.attach.replay",{terminalId:l,bytes:e.snapshot.length}),o.write("\x1b[2J\x1b[H"+e.snapshot.split("\n").join("\r\n")+"\r\n"))}).catch(e=>{(0,z.cY)("webterm.spawn.error",{reason:String(e)}),S("spawn-error")});let H=y.on("sessionUpdate",e=>{var t,r,n;let i=null!=(r=e.params)?r:{},s=R.current;if(i.sessionId&&s&&i.sessionId!==s)return;let a=i.update;if(!a||"agent_thought_chunk"!==a.sessionUpdate)return;let u=(null==(t=a.content)?void 0:t.type)==="text"?a.content.text:null;if(!u)return;let c=(0,L.L)(u);c&&("terminalOutput"===c.method&&c.payload.terminalId===l?((0,z.cY)("webterm.ws.frame.in",{terminalId:l,bytes:c.payload.data.length}),o.write(c.payload.data),E&&(E=!1,S("first-output"))):"terminalExit"===c.method&&c.payload.terminalId===l?((0,z.cY)("webterm.pty.exit",{terminalId:l,code:c.payload.code}),o.write("\r\n\x1b[2m[exit ".concat(c.payload.code,"]\x1b[0m\r\n"))):"terminalInputActivity"===c.method&&c.payload.terminalId===l&&c.payload.peerId!==Y()&&((0,z.cY)("webterm.peer.input",{terminalId:l,peerId:c.payload.peerId.slice(0,4),bytes:c.payload.bytes}),null==(n=I.current)||n.call(I,{peerId:c.payload.peerId,bytes:c.payload.bytes,timestamp:c.payload.timestamp})))}),q=function(e){let t,{send:r,ready:n,getSessionId:l,terminalId:i,getPeerId:s,log:o,shellReady:a}=e,u=!a,c=[],h="",d=!1,f=!1,m=!1,p=!1,g=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(m)return;let r=new TextEncoder().encode(t+c.join("")).length;c.length=0,o("webterm.input.send-error",{reason:String(e),dropped:r})},b=async()=>{if(h&&u&&!f&&!m){f=!0;try{for(;c.length&&!m;){let e=c.shift();try{let t=l();await r("terminal/input",{sessionId:d&&t?t:h,terminalId:i,data:e,peerId:s()})}catch(t){g(t,e);break}}}finally{f=!1}}};return a&&a.then(()=>{u=!0,b()}),n.then(e=>{if(!m){if(!e){p=!0,g(t="ACP handshake returned no session");return}h=e,b()}},e=>{p=!0,t=e,g(e)}),{confirmSession(e){!m&&h&&e&&(d=!0)},push(e){if(!m){if(p)return void g(t,e);c.push(e),b()}},dispose(){m=!0,c.length=0}}}({send:(e,t)=>y.send(e,t),ready:y.ready,shellReady:G,getSessionId:()=>R.current,terminalId:l,getPeerId:Y,log:(e,t)=>{(0,z.cY)(e,t),t.dropped>0&&en({terminalId:l,dropped:t.dropped})}});w=q.confirmSession;let J=s?null:(0,j.WU)(l,q.push),Q=s?null:(0,j.JW)(l,o),ee=s?null:o.onData(e=>{if(e&&!(e.length<2)&&27===e.charCodeAt(0)&&(D.test(e)||A.test(e)||$.test(e)||O.test(e)||P.test(e)))return void(0,z.cY)("webterm.xterm.onData.capability-swallow",{terminalId:l,bytes:e.length});(0,z.cY)("webterm.xterm.onData",{terminalId:l,bytes:e.length}),q.push(e)}),er=s?null:o.onResize(e=>{let{cols:t,rows:r}=e;(0,z.cY)("webterm.xterm.onResize",{terminalId:l,cols:t,rows:r}),y.send("terminal/resize",{sessionId:R.current,terminalId:l,cols:t,rows:r}).catch(e=>(0,z.cY)("webterm.resize.send-error",{reason:String(e)}))}),el=m.current,ei=null,es=e=>{if(1!==e.touches.length){ei=null;return}ei={y:e.touches[0].clientY,viewportY:o.buffer.active.viewportY,wheelSent:0,bufferType:o.buffer.active.type}},eo=e=>{var t,r;if(!ei||1!==e.touches.length)return;let n=o.buffer.active.type;if(n!==ei.bufferType){ei={y:e.touches[0].clientY,viewportY:o.buffer.active.viewportY,wheelSent:0,bufferType:n};return}let l=null==(t=o.element)?void 0:t.querySelector(".xterm-screen"),i=o.rows>0?(null!=(r=null==l?void 0:l.getBoundingClientRect().height)?r:0)/o.rows:0;if(!(i>0))return;let s="alternate"===n?(0,T.kI)({startY:ei.y,currentY:e.touches[0].clientY,cellHeight:i,sentSteps:ei.wheelSent}):(0,T.Yf)({startY:ei.y,currentY:e.touches[0].clientY,cellHeight:i,startViewportY:ei.viewportY,currentViewportY:o.buffer.active.viewportY}),a=(0,T.BX)({bufferType:n,mouseTracking:o.modes.mouseTrackingMode,lines:s});if("scrollback"===a.kind)o.scrollLines(a.lines),(0,z.cY)("webterm.touch-scroll",{kind:a.kind,lines:a.lines,bufferType:n});else if("wheel"===a.kind){let t=o.element;if(!t)return;(0,T.fb)(t,a.steps,e.touches[0].clientX,e.touches[0].clientY),ei.wheelSent+=a.steps,(0,z.cY)("webterm.touch-scroll",{kind:a.kind,steps:a.steps,bufferType:n})}},ea=()=>{ei=null};null==(e=el.addEventListener)||e.call(el,"touchstart",es,{passive:!0}),null==(t=el.addEventListener)||t.call(el,"touchmove",eo,{passive:!0}),null==(i=el.addEventListener)||i.call(el,"touchend",ea,{passive:!0});let eu=function(e){var t,r;let n=null!=(t=e.trailingDebounceMs)?t:32,l=null,i=!1,s=()=>{if((l=null,!i)&&e.onTrailing)try{e.onTrailing()}catch(e){}},o=t=>{var r,o;if(i)return;let a=performance.now(),u=null==(o=e.target)||null==(r=o.getBoundingClientRect)?void 0:r.call(o),c=u?Math.round(u.width):void 0,h=u?Math.round(u.height):void 0;if((null==u?void 0:u.height)===0){null!==l&&(clearTimeout(l),l=null),(0,z.cY)("webterm.resize.skip",{source:t,...void 0!==c?{w:c}:{},h:h,reason:"zero-height"});return}let d=null;try{e.onImmediate()}catch(e){d=e instanceof Error?e.message:String(e)}(0,z.cY)("webterm.resize.trigger",{source:t,dt:Math.round((performance.now()-a)*100)/100,...void 0!==c?{w:c}:{},...void 0!==h?{h:h}:{},...d?{err:d}:{}}),e.onTrailing&&(null!==l&&clearTimeout(l),l=setTimeout(s,n))},a=null;"undefined"!=typeof ResizeObserver&&(a=new ResizeObserver(()=>o("ro"))).observe(e.target);let u=()=>o("win");window.addEventListener("resize",u);let c=null!=(r=window.visualViewport)?r:null,h=()=>o("vv");return c&&c.addEventListener("resize",h),{dispose(){if(!i){if(i=!0,null!==l&&(clearTimeout(l),l=null),a){try{a.disconnect()}catch(e){}a=null}window.removeEventListener("resize",u),c&&c.removeEventListener("resize",h)}},flushPending(){null!==l&&(clearTimeout(l),s())}}}({target:m.current,onImmediate:()=>{try{a.fit()}catch(e){}},onTrailing:()=>{try{a.fit()}catch(e){}}});return()=>{var e,t,r;try{let e=u.serialize();"string"==typeof e&&(0,F.Os)((0,F.o1)("xtermScrollback",l),e)}catch(e){(0,z.cY)("webterm.xterm.snapshot.error",{reason:String(e)})}try{eu.dispose()}catch(e){}null==(e=el.removeEventListener)||e.call(el,"touchstart",es),null==(t=el.removeEventListener)||t.call(el,"touchmove",eo),null==(r=el.removeEventListener)||r.call(el,"touchend",ea),null==Q||Q(),null==J||J(),q.dispose(),clearTimeout(V),H(),x();try{null==ee||ee.dispose()}catch(e){}try{null==er||er.dispose()}catch(e){}try{y.close()}catch(e){}p.current===o&&(p.current=null),(null==b?void 0:b.__elanousTerm)===o&&delete b.__elanousTerm;try{o.dispose()}catch(e){}(0,z.cY)("webterm.xterm.teardown",{terminalId:l})}},[l,s,M,J]);let eo="FAILED"===ei||"CLOSED"===ei?(t=q.reason)&&/auth_failed|\b1008\b|unauthori[sz]ed|\b401\b/i.test(t)?"auth":"transient":null,ea=(0,u.useRef)(B.token);(0,u.useEffect)(()=>{ea.current!==B.token&&(ea.current=B.token,"auth"===eo&&B.token&&((0,z.cY)("webterm.acp.reconnect",{terminalId:l,why:"token-changed"}),Q(e=>e+1)))},[B.token]),(0,u.useEffect)(()=>{var e,t,r;if(null===eo)return;let n=e=>{Z.current+=1,(0,z.cY)("webterm.acp.reconnect",{terminalId:l,why:e,attempt:Z.current,reason:q.reason}),Q(e=>e+1)},i="undefined"==typeof document?null:document,s=window,o=()=>{(null==i?void 0:i.visibilityState)==="visible"&&n("visible")},a=()=>n("online");null==i||null==(e=i.addEventListener)||e.call(i,"visibilitychange",o),null==s||null==(t=s.addEventListener)||t.call(s,"online",a);let u="transient"===eo?setTimeout(()=>n("backoff"),(r=Z.current,Math.min(3e4,1e3*2**Math.max(0,r)))):void 0;return()=>{var e,t;null==i||null==(e=i.removeEventListener)||e.call(i,"visibilitychange",o),null==s||null==(t=s.removeEventListener)||t.call(s,"online",a),void 0!==u&&clearTimeout(u)}},[eo,l]),(0,u.useEffect)(()=>{var e;e=x.current,void 0!==e&&e!==i&&p.current&&(p.current.clear(),(0,z.cY)("webterm.controls.clear.applied",{terminalId:l})),x.current=i},[i,l]);let eu="CONNECTING"===ei?Z.current>0?"다시 연결 중(".concat(Z.current,"회)"):"연결 중":"OPEN"===ei?"연결됨":"auth"===eo?"토큰 없음":"FAILED"===ei?"연결 실패 \xb7 곧 다시 붙습니다":"연결 끊김 \xb7 곧 다시 붙습니다",ec="OPEN"===ei?"text-emerald-300":"CONNECTING"===ei?"text-amber-300":"text-red-300",eh=l.trim()||"대상 미지정",ed=Math.max(0,Math.floor((ee-es)/1e3));return(0,u.useEffect)(()=>{if("undefined"==typeof document)return;let e=()=>{var e;let t=g.current;if(!t)return!1;let r=document.activeElement;return!!(r&&t.contains(r))||!(r?null==(e=r.closest)?void 0:e.call(r,"[data-xterm-host]"):null)&&document.querySelector("[data-xterm-host]")===t},t=t=>{if(V(t)&&("KeyF"===t.code||"F"===t.key||"f"===t.key)&&e()){t.preventDefault(),t.stopPropagation(),y();return}let r=V(t)?"Equal"===t.code||"NumpadAdd"===t.code||"+"===t.key||"="===t.key?1:"Minus"===t.code||"NumpadSubtract"===t.code||"_"===t.key||"-"===t.key?-1:0:0,n=p.current;if(0!==r&&n&&e()){t.preventDefault(),t.stopPropagation();let e=W((null!=(l=n.options.fontSize)?l:13)+r);n.options.fontSize=e;var l,i=window.localStorage;try{null==i||i.setItem(U,String(W(e)))}catch(e){}(0,z.cY)("webterm.focus-mode",{event:"font",size:e})}};return document.addEventListener("keydown",t,!0),()=>document.removeEventListener("keydown",t,!0)},[]),(0,u.useEffect)(()=>{var e,t,r,n,i;if((0,z.cY)("webterm.focus-mode",{event:_?"on":"off",terminalId:l}),"undefined"!=typeof document){try{_&&!document.fullscreenElement&&(null==(t=(r=document.documentElement).requestFullscreen)||t.call(r).catch(()=>{})),!_&&document.fullscreenElement&&(null==(n=(i=document).exitFullscreen)||n.call(i).catch(()=>{}))}catch(e){}_&&(null==(e=p.current)||e.focus())}},[_,l]),(0,a.jsxs)("div",{ref:g,"data-xterm-host":!0,"data-focus-mode":_?"1":void 0,className:_?"fixed inset-0 z-[90] h-[100dvh] w-screen bg-[#0d0c08]":"relative h-full w-full bg-[#0d0c08]",children:[(0,a.jsx)("div",{ref:m,className:"h-full w-full"}),(0,a.jsx)("button",{type:"button","data-share-hide":!0,onClick:y,"aria-pressed":_,"aria-label":_?"집중 모드 끄기":"집중 모드 — 터미널만 크게",title:_?"집중 모드 끄기 (Ctrl/⌘+Shift+F)":"집중 모드 — 터미널만 크게 (Ctrl/⌘+Shift+F \xb7 글자 Ctrl/⌘+Shift+\xb1)",className:_?"absolute bottom-2 right-2 z-40 rounded bg-black/60 px-2 py-1 text-xs text-[#e9e3d4]/70 hover:text-[#e9e3d4]":"absolute bottom-2 right-2 z-20 rounded bg-black/60 px-2 py-1 text-xs text-[#e9e3d4]/70 hover:text-[#e9e3d4]",children:_?"⤡ 나가기":"⤢ 집중"}),el&&(0,a.jsxs)("div",{role:"alert",className:"pointer-events-none absolute bottom-2 left-2 right-2 rounded bg-red-950/95 px-3 py-2 text-sm text-red-100",children:["터미널 입력 전송 실패: ",el.dropped,"바이트가 버려졌습니다. 명령이 일부만 실행됐을 수 있습니다. 입력을 확인하고 다시 입력하세요."]}),"auth"===eo&&(0,a.jsxs)("div",{role:"alert",className:"absolute left-2 right-2 top-10 z-30 space-y-1 rounded bg-amber-950/95 px-3 py-2 text-sm text-amber-100","data-webterm-auth-missing":!0,children:[(0,a.jsx)("p",{children:"이 기기에 소유자 토큰이 없어 터미널에 연결하지 못했습니다 — 설정에서 토큰을 붙이면 바로 연결됩니다."}),(0,a.jsx)("p",{className:"text-xs text-amber-200/90",children:"토큰 얻기: 이미 연결된 기기의 설정 › 연결 토큰 만들기 에서 만들거나, 데몬 기계에서 pbcopy < ~/.elanous/acp-token → 이 기기의 설정 › 데몬 연결 › 연결 토큰 칸에 붙여 넣기"}),(0,a.jsx)("a",{href:"/app/settings/#bearer-token",className:"inline-block font-medium underline","data-webterm-auth-settings":!0,children:"설정 열기 →"})]}),(0,a.jsxs)("span",{"aria-live":"polite",className:"sr-only",children:["ACP: ",eu]}),(0,a.jsxs)("span",{className:"pointer-events-none absolute right-2 top-2 rounded bg-black/70 px-2 py-1 text-xs ".concat(ec),children:["ACP: ",eu,"CONNECTING"===ei&&(0,a.jsxs)("span",{"data-share-hide":!0,children:[" \xb7 ","".concat(ed,"초 \xb7 ").concat(eh," \xb7 ").concat(B.baseUrl)]})]})]})}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[507],{5883:(e,t,n)=>{n.d(t,{sS:()=>f});var r=n(60500),i=n(50733);async function o(e){let t=new Blob(["\nclass ElanousCaptureProcessor extends AudioWorkletProcessor {\n constructor(opts) {\n super();\n const o = opts.processorOptions || {};\n this.targetHz = o.targetHz | 0 || 16000;\n this.frameBytes = o.frameBytes | 0 || 640;\n // int16 → 2 bytes per sample\n this.frameSamples = this.frameBytes >> 1;\n this.outBuf = new Int16Array(this.frameSamples);\n this.outIdx = 0;\n this.ratio = sampleRate / this.targetHz;\n this.acc = 0;\n }\n process(inputs) {\n const input = inputs[0];\n if (!input || !input[0]) return true;\n const ch0 = input[0];\n for (let i = 0; i < ch0.length; i++) {\n this.acc += 1;\n if (this.acc < this.ratio) continue;\n this.acc -= this.ratio;\n const v = Math.max(-1, Math.min(1, ch0[i]));\n this.outBuf[this.outIdx++] = v < 0 ? Math.round(v * 0x8000) : Math.round(v * 0x7fff);\n if (this.outIdx >= this.frameSamples) {\n const copy = new Int16Array(this.outBuf);\n this.port.postMessage(copy.buffer, [copy.buffer]);\n this.outBuf = new Int16Array(this.frameSamples);\n this.outIdx = 0;\n }\n }\n return true;\n }\n}\nregisterProcessor('elanous-capture', ElanousCaptureProcessor);\n"],{type:"application/javascript"}),n=URL.createObjectURL(t);try{await e.audioWorklet.addModule(n)}finally{URL.revokeObjectURL(n)}}async function a(e){var t,n,r,a;let s=null!=(t=e.targetSampleRateHz)?t:16e3,l=null!=(n=e.framePcmBytes)?n:640,c=null,u=null,d=null,p=null,f=null;(0,i.cY)("voice.capture.start",{targetHz:s,frameBytes:l});try{(0,i.cY)("voice.capture.gum-request",{hasMediaDevices:"undefined"!=typeof navigator&&!!navigator.mediaDevices,hasGetUserMedia:"undefined"!=typeof navigator&&"function"==typeof(null==(r=navigator.mediaDevices)?void 0:r.getUserMedia)}),c=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,channelCount:1}}),(0,i.cY)("voice.capture.gum-ok",{tracks:c.getTracks().map(e=>({kind:e.kind,label:e.label,state:e.readyState}))}),u=new AudioContext,(0,i.cY)("voice.capture.audiocontext",{sampleRate:u.sampleRate,state:u.state}),await o(u),(0,i.cY)("voice.capture.worklet-loaded"),(d=new AudioWorkletNode(u,"elanous-capture",{processorOptions:{targetHz:s,frameBytes:l}})).port.onmessage=t=>{e.onFrame(new Uint8Array(t.data))},p=u.createMediaStreamSource(c),(f=u.createGain()).gain.value=1,p.connect(f),f.connect(d),(0,i.cY)("voice.capture.wired",{hasGain:!0})}catch(n){let t=n instanceof Error?n:Error(String(n));throw(0,i.cY)("voice.capture.error",{name:t.name,message:t.message}),null==(a=e.onError)||a.call(e,t),c&&c.getTracks().forEach(e=>e.stop()),u&&await u.close(),t}let h=!1;return{async stop(){if(!h){h=!0;try{null==p||p.disconnect()}catch(e){}try{null==f||f.disconnect()}catch(e){}try{null==d||d.disconnect()}catch(e){}try{null==c||c.getTracks().forEach(e=>e.stop())}catch(e){}try{await (null==u?void 0:u.close())}catch(e){}}},setMicGain(e){if(!f||!u)return;let t=Number.isFinite(e)?Math.max(0,Math.min(1,e)):1;try{let e=u.currentTime;f.gain.cancelScheduledValues(e),f.gain.setValueAtTime(f.gain.value,e),f.gain.linearRampToValueAtTime(t,e+.005),(0,i.cY)("voice.mic.duck.set",{gain:t})}catch(e){try{f.gain.value=t}catch(e){}(0,i.cY)("voice.mic.duck.fallback",{gain:t,err:e instanceof Error?e.message:String(e)})}}}}let s={UPSTREAM_PCM:1,UPSTREAM_FINALIZE:2,UPSTREAM_HELLO:3,UPSTREAM_INTERRUPT:4,DOWNSTREAM_PCM:129,DOWNSTREAM_STATE:130,DOWNSTREAM_ERROR:131,DOWNSTREAM_TRANSCRIPT:132};function l(e,t){let n=new ArrayBuffer(4+t.byteLength),r=new DataView(n);return r.setUint8(0,e),r.setUint8(1,0),r.setUint16(2,0,!1),new Uint8Array(n,4).set(t),n}function c(e){return JSON.parse(new TextDecoder().decode(e))}var u=n(12502),d=n(67159);function p(e){return"speaking"===e?.5:1}function f(e){let[t,n]=(0,r.useState)("idle"),[o,f]=(0,r.useState)(null),[h,m]=(0,r.useState)(!1),g=(0,r.useRef)(null),y=(0,r.useRef)(null),v=(0,r.useRef)(null),k=(0,r.useRef)(e.onTranscript);(0,r.useEffect)(()=>{k.current=e.onTranscript},[e.onTranscript]);let b=(0,r.useRef)(e.onSpeechActivity);(0,r.useEffect)(()=>{b.current=e.onSpeechActivity},[e.onSpeechActivity]);let w=(0,r.useRef)(null);if(null===w.current){let e=(0,d.lu)();w.current=(0,u.cK)({speakingThresholdMultiplier:e.speakingThresholdMultiplier})}let x=(0,r.useRef)("idle"),A=(0,r.useCallback)(e=>{var t,r;let i=x.current;if(x.current=e,null==(t=w.current)||t.setSpeakingActive("speaking"===e),p(i)!==p(e))try{null==(r=g.current)||r.setMicGain(p(e))}catch(e){}n(e)},[]),I=(0,r.useCallback)(async()=>{var e,t,n;try{null==(e=v.current)||e.close()}catch(e){}try{await (null==(t=g.current)?void 0:t.stop())}catch(e){}try{await (null==(n=y.current)?void 0:n.close())}catch(e){}g.current=null,y.current=null,v.current=null},[]);(0,r.useEffect)(()=>()=>{I()},[I]);let S=(0,r.useCallback)(async()=>{f(null),A("connecting");try{let t=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=null!=(e=t.inputSampleRateHz)?e:24e3,r=new AudioContext,i=0,o=[];function a(){for(let e of o){try{e.stop()}catch(e){}try{e.disconnect()}catch(e){}}o=[],i=r.currentTime}async function s(){a();try{await r.close()}catch(e){}}return{enqueue:function(e){try{let t=e.byteLength>>1,a=new DataView(e.buffer,e.byteOffset,e.byteLength),s=new Float32Array(t);for(let e=0;e<t;e++){let t=a.getInt16(2*e,!0);s[e]=t<0?t/32768:t/32767}let l=r.createBuffer(1,t,n);l.copyToChannel(s,0);let c=r.createBufferSource();c.buffer=l,c.connect(r.destination);let u=r.currentTime,d=Math.max(u,i);c.start(d),i=d+l.duration,o.push(c),c.onended=()=>{o=o.filter(e=>e!==c)}}catch(e){var a;null==(a=t.onError)||a.call(t,e instanceof Error?e:Error(String(e)))}},cancel:a,close:s}}({onError:e=>f(e.message)});y.current=t;let n=function(e){let t,n="connecting",r=t=>{var r;n=t,null==(r=e.onSocketState)||r.call(e,t),(0,i.cY)("voice.ws.state",{state:t,url:e.url})};(0,i.cY)("voice.ws.construct",{url:e.url,hasToken:!!e.token,location:window.location.href,pageProto:window.location.protocol,wsProto:e.url.startsWith("wss:")?"wss":e.url.startsWith("ws:")?"ws":"(other)"});try{(t=new WebSocket(e.url)).binaryType="arraybuffer",(0,i.cY)("voice.ws.constructed",{readyState:t.readyState,url:t.url})}catch(a){var o;r("error");let t=a instanceof Error?a.message:String(a);return(0,i.cY)("voice.ws.construct-throw",{msg:t,url:e.url}),null==(o=e.onError)||o.call(e,{error:"ws construct failed: ".concat(t)}),{sendUpstreamPcm(){},finalize(){},sendInterrupt(){},close(){},getState:()=>n}}return t.onopen=()=>{var n;(0,i.cY)("voice.ws.open",{readyState:t.readyState,url:t.url,protocol:t.protocol,extensions:t.extensions}),r("open");let o={...null!=(n=e.hello)?n:{},...e.token?{token:e.token}:{}},a=new TextEncoder().encode(JSON.stringify(o));t.send(l(s.UPSTREAM_HELLO,a)),(0,i.cY)("voice.ws.hello-sent",{helloKeys:Object.keys(o)})},t.onmessage=t=>{var n,r,i,o,a,l;if("string"==typeof t.data){null==(n=e.onError)||n.call(e,{error:"unexpected text frame: ".concat(t.data.slice(0,200))});return}try{let n=function(e){if(e.byteLength<4)throw Error("frame too short (".concat(e.byteLength," bytes)"));let t=new DataView(e);return{kind:t.getUint8(0),flags:t.getUint8(1),payload:new Uint8Array(e,4)}}(t.data);switch(n.kind){case s.DOWNSTREAM_PCM:e.onDownstreamPcm(n.payload);break;case s.DOWNSTREAM_STATE:{let{state:t}=c(n.payload);null==(r=e.onState)||r.call(e,t);break}case s.DOWNSTREAM_ERROR:{let t=c(n.payload);null==(i=e.onError)||i.call(e,t);break}case s.DOWNSTREAM_TRANSCRIPT:{let t=c(n.payload);null==(o=e.onTranscript)||o.call(e,t);break}default:null==(a=e.onError)||a.call(e,{error:"unknown frame kind 0x".concat(n.kind.toString(16))})}}catch(t){null==(l=e.onError)||l.call(e,{error:t instanceof Error?t.message:String(t)})}},t.onclose=e=>{(0,i.cY)("voice.ws.close",{code:e.code,reason:e.reason,wasClean:e.wasClean,readyState:t.readyState,priorState:n}),r("closed")},t.onerror=n=>{var o;let a={readyState:t.readyState,url:t.url,eventType:n.type,isTrusted:n.isTrusted};(0,i.cY)("voice.ws.error",a),r("error"),null==(o=e.onError)||o.call(e,{error:"websocket transport error (readyState=".concat(t.readyState,", url=").concat(t.url,")")})},{sendUpstreamPcm:function(e){"open"===n&&t.send(l(s.UPSTREAM_PCM,e))},finalize:function(){"open"===n&&t.send(l(s.UPSTREAM_FINALIZE,new Uint8Array(0)))},sendInterrupt:function(){"open"===n&&t.send(l(s.UPSTREAM_INTERRUPT,new Uint8Array(0)))},close:function(){if("closed"!==n&&"closing"!==n){r("closing");try{t.close(1e3,"client-close")}catch(e){}}},getState:()=>n}}({url:e.wsUrl,...e.token?{token:e.token}:{},hello:{surface:"pwa",userAgent:navigator.userAgent},onDownstreamPcm:e=>{t.enqueue(e),A("speaking")},onState:e=>A(function(e){switch(e){case"connecting":return"connecting";case"streaming":return"listening";default:return"idle"}}(e)),onTranscript:e=>{if("final"===e.kind){var t;null==(t=k.current)||t.call(k,e.text)}},onError:e=>{A("error"),f(e.error)},onSocketState:e=>{let t="connecting"===e?"connecting":"error"===e?"error":"closed"===e?"idle":null;t&&A(t)}});v.current=n,g.current=await a({onFrame:e=>{n.sendUpstreamPcm(e);let t=w.current;if(t&&t.push(e)){(0,i.cY)("voice.barge-in.rms-fire");let e=b.current;try{null==e||e()}catch(e){}if("speaking"===x.current){var r,o;try{null==(r=y.current)||r.cancel()}catch(e){}try{null==(o=v.current)||o.sendInterrupt()}catch(e){}A("listening"),(0,i.cY)("voice.barge-in.auto-fire")}}},onError:e=>{A("error"),f(e.message)}}),m(!0),A("listening")}catch(e){A("error"),f(e instanceof Error?e.message:String(e)),await I()}},[e.wsUrl,e.token,I,A]),T=(0,r.useCallback)(async()=>{var e,t;m(!1),null==(e=v.current)||e.finalize(),await I(),null==(t=w.current)||t.reset(),A("idle")},[I,A]),C=(0,r.useCallback)(async()=>{h?await T():await S()},[h,S,T]),E=(0,r.useCallback)(async()=>{h||await S()},[h,S]);return{phase:t,errorMsg:o,active:h,start:S,stop:T,toggle:C,forceListen:E,interrupt:(0,r.useCallback)(()=>{var e,t;try{null==(e=y.current)||e.cancel()}catch(e){}try{null==(t=v.current)||t.sendInterrupt()}catch(e){}"speaking"===x.current&&(A("listening"),(0,i.cY)("voice.barge-in.manual-fire"))},[A])}}},10037:(e,t,n)=>{n.d(t,{C5:()=>a,hG:()=>c});var r=n(79450),i=n(50733);let o=new Set(["cli","pwa","tg","dc"]);function a(e){var t;let n;e.origin&&o.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 s{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,i.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(a);if(function(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let r=e[n],i=t[n];if(r.id!==i.id||r.msgCount!==i.msgCount||r.lastTurnAt!==i.lastTurnAt||r.lastMsgPreview!==i.lastMsgPreview||r.origin!==i.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,i.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 l=null;function c(e){if(l&&l.client===e)return l.svc;l&&l.svc.dispose();let t=new s(e);return l={client:e,svc:t},t.start(),t}},10310:(e,t,n)=>{n.d(t,{K4:()=>i,VQ:()=>a});let r=new Set(["normal","warn","danger","success","info","muted"]);function i(e,t){switch(t.kind){case"agent.thinking":return function(e,t){var n,r;let i=null!=(n=t.payload)?n:{},o=null!=(r=i.msg)?r:"Thinking",a=i.metrics&&"number"==typeof i.metrics.elapsedMs&&"number"==typeof i.metrics.tokenCount?{elapsedMs:i.metrics.elapsedMs,tokenCount:i.metrics.tokenCount}:void 0,s={kind:"agent_thinking",blockId:t.blockId,msg:o,done:"end"===t.phase,...a?{metrics:a}:{},...t.asciiFallback.length>0?{asciiFallback:t.asciiFallback}:{}},l=e.findIndex(e=>"agent_thinking"===e.kind&&e.blockId===t.blockId);return -1===l?e.push(s):e[l]=s,"applied"}(e,t);case"agent.status":var n=e,r=t;let i=r.payload;if(!i||"string"!=typeof i.agentId||"string"!=typeof i.status)return"unhandled";let a={kind:"agent_status",blockId:r.blockId,agentId:i.agentId,status:i.status,...void 0!==i.lastEvent?{lastEvent:i.lastEvent}:{}},s=n.findIndex(e=>"agent_status"===e.kind&&e.blockId===r.blockId);return -1===s?n.push(a):n[s]=a,"applied";case"agent.plan":var l=e,c=t;let u=c.payload;if(!u||"string"!=typeof u.ref||!Array.isArray(u.steps))return"unhandled";let d={kind:"agent_plan",blockId:c.blockId,ref:u.ref,steps:u.steps.map(e=>({text:e.text,status:e.status})),...void 0!==u.activeIndex?{activeIndex:u.activeIndex}:{}},p=l.findIndex(e=>"agent_plan"===e.kind&&e.blockId===c.blockId);return -1===p?l.push(d):l[p]=d,"applied";case"tool.diff":var f=e,h=t;let m=h.payload;if(!m||"string"!=typeof m.filePath||!Array.isArray(m.hunks))return"unhandled";for(let e of m.hunks)if("number"!=typeof e.oldStart||"number"!=typeof e.oldLines||"number"!=typeof e.newStart||"number"!=typeof e.newLines||!Array.isArray(e.lines))return"unhandled";let g={kind:"tool_diff",blockId:h.blockId,filePath:m.filePath,...void 0!==m.language?{language:m.language}:{},hunks:m.hunks.map(e=>({oldStart:e.oldStart,oldLines:e.oldLines,newStart:e.newStart,newLines:e.newLines,lines:e.lines.map(e=>({kind:e.kind,text:e.text}))})),...void 0!==h.parentToolCallId?{parentToolCallId:h.parentToolCallId}:{}},y=f.findIndex(e=>"tool_diff"===e.kind&&e.blockId===h.blockId);return -1===y?f.push(g):f[y]=g,"applied";case"tool.search-hit":return function(e,t){let n=t.payload;if(!n||"string"!=typeof n.query||!Array.isArray(n.hits)||"number"!=typeof n.accumCount)return"unhandled";for(let e of n.hits)if("string"!=typeof e.filePath||"number"!=typeof e.line||"string"!=typeof e.snippet)return"unhandled";let r=e.findIndex(e=>"tool_search_hits"===e.kind&&e.blockId===t.blockId),i=n.hits.map(e=>({filePath:e.filePath,line:e.line,snippet:e.snippet,...void 0!==e.column?{column:e.column}:{},...Array.isArray(e.contextBefore)?{contextBefore:[...e.contextBefore]}:{},...Array.isArray(e.contextAfter)?{contextAfter:[...e.contextAfter]}:{}})),o=i;if(-1!==r&&"delta"===t.phase){let t=e[r],n=new Set(t.hits.map(e=>{var t;return"".concat(e.filePath,":").concat(e.line,":").concat(null!=(t=e.column)?t:0)})),a=i.filter(e=>{var t;return!n.has("".concat(e.filePath,":").concat(e.line,":").concat(null!=(t=e.column)?t:0))});o=[...t.hits,...a]}let a={kind:"tool_search_hits",blockId:t.blockId,query:n.query,hits:o,accumCount:n.accumCount,...n.truncated?{truncated:!0}:{},...void 0!==t.parentToolCallId?{parentToolCallId:t.parentToolCallId}:{}};return -1===r?e.push(a):e[r]=a,"applied"}(e,t);case"tool.progress":return function(e,t){let n,r=t.payload;if(!r||"string"!=typeof r.stream||!o.has(r.stream)||!Array.isArray(r.lines))return"unhandled";for(let e of r.lines)if("string"!=typeof e)return"unhandled";let i=e.findIndex(e=>"tool_progress"===e.kind&&e.blockId===t.blockId);if(-1===i)n=[...r.lines];else{let o=e[i];n="update"===t.phase?[...r.lines]:[...o.lines,...r.lines]}let a={kind:"tool_progress",blockId:t.blockId,stream:r.stream,lines:n,done:"end"===t.phase,...void 0!==r.bytesSoFar?{bytesSoFar:r.bytesSoFar}:{},...void 0!==r.exitCode?{exitCode:r.exitCode}:{},...void 0!==t.parentToolCallId?{parentToolCallId:t.parentToolCallId}:{}};return -1===i?e.push(a):e[i]=a,"applied"}(e,t);case"debug.line":return function(e,t){let n,r=t.payload;if(!r||"string"!=typeof r.category||"string"!=typeof r.event||"number"!=typeof r.loggedAt)return"unhandled";let i={seq:t.seq,category:r.category,event:r.event,...void 0!==r.data?{data:r.data}:{},loggedAt:r.loggedAt},o=e.findIndex(e=>"debug_session"===e.kind&&e.blockId===t.blockId);-1===o?n=[i]:(n=[...e[o].lines,i]).length>200&&n.splice(0,n.length-200);let a={kind:"debug_session",blockId:t.blockId,lines:n};return -1===o?e.push(a):e[o]=a,"applied"}(e,t);case"perf.tick":return function(e,t){let n,r=t.payload;if(!r||"string"!=typeof r.metric||0===r.metric.length||"number"!=typeof r.value||!Number.isFinite(r.value))return"unhandled";let i={seq:t.seq,metric:r.metric,value:r.value,..."string"==typeof r.unit?{unit:r.unit}:{},emittedAt:t.emittedAt},o=e.findIndex(e=>"perf_session"===e.kind&&e.blockId===t.blockId);-1===o?n=[i]:(n=[...e[o].samples,i]).length>60&&n.splice(0,n.length-60);let a={kind:"perf_session",blockId:t.blockId,samples:n};return -1===o?e.push(a):e[o]=a,"applied"}(e,t);default:return"unhandled"}}let o=new Set(["stdout","stderr","http","generic"]);function a(e,t){let n=t.payload;if(!n||"string"!=typeof n.key||0===n.key.length)return"unhandled";if("end"===t.phase)return e.has(n.key)?(e.delete(n.key),"applied"):"unhandled";if("string"!=typeof n.value)return"unhandled";let i={key:n.key,value:n.value,..."number"==typeof n.priority&&Number.isFinite(n.priority)?{priority:n.priority}:{},..."string"==typeof n.tone&&r.has(n.tone)?{tone:n.tone}:{},..."string"==typeof n.glyph&&n.glyph.length>0?{glyph:n.glyph}:{}};return e.set(n.key,i),"applied"}},12127:(e,t,n)=>{n.d(t,{z:()=>g});var r=n(54456),i=n(60500),o=n(75591),a=n(93684),s=n(75361),l=n(3389),c=n(71829),u=n(36581),d=n(50733),p=n(21569);function f(){var e,t;if("undefined"==typeof globalThis)return null;let n=globalThis;return null!=(t=null!=(e=n.SpeechRecognition)?e:n.webkitSpeechRecognition)?t:null}async function h(e){var t,n;let r=e.transcript.trim();if(!r)return{ok:!1,status:0,reason:"empty transcript"};let i=e.baseUrl.replace(/\/$/,"");if(!i)return{ok:!1,status:0,reason:"baseUrl not configured"};let o=null!=(t=e.fetchImpl)?t:"undefined"!=typeof fetch?fetch:null;if(!o)return{ok:!1,status:0,reason:"fetch unavailable"};try{let t=await o("".concat(i,"/v1/intake"),{method:"POST",headers:{"content-type":"application/json",...e.token?{authorization:"Bearer ".concat(e.token)}:{}},body:JSON.stringify(function(e){let t={text:e.transcript.trim(),actor:"pwa-voice",channelContext:{kind:"pwa-voice"}};return e.intakeId&&(t.intakeId=e.intakeId),t}({transcript:r,...e.intakeId?{intakeId:e.intakeId}:{}}))});if(!t.ok){let e=await t.text().catch(()=>"");return{ok:!1,status:t.status,reason:e||"HTTP ".concat(t.status)}}let a=await t.json().catch(()=>({}));return{ok:!0,intakeId:null!=(n=a.intakeId)?n:""}}catch(e){return{ok:!1,status:0,reason:String(e instanceof Error?e.message:e)}}}function m(e){let{phase:t,transcript:n,onTranscriptChange:i,error:c,apiAvailable:u,onPressStart:d,onPressEnd:p,onConfirm:f,onCancel:h}=e,m="recording"===t,g="submitting"===t;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button",onPointerDown:u?d:void 0,onPointerUp:u?p:void 0,onPointerLeave:m?p:void 0,disabled:!u||g,"aria-label":u?"음성 메모 (길게 누르기)":"음성 메모 (브라우저 미지원)",title:u?"길게 눌러 녹음 → intake 저장":"브라우저가 Web Speech API 미지원","data-testid":"showroom-voice-button","data-phase":t,className:"rounded p-1.5 transition disabled:cursor-not-allowed disabled:opacity-50 ".concat(m?"animate-pulse bg-red-500 text-white":"text-muted-foreground hover:bg-accent hover:text-foreground"),children:g?(0,r.jsx)(o.A,{className:"h-3.5 w-3.5 animate-spin"}):(0,r.jsx)(a.A,{className:"h-3.5 w-3.5"})}),("review"===t||"submitting"===t)&&(0,r.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":"Voice intake review","data-testid":"showroom-voice-modal",className:"fixed inset-0 z-40 flex items-center justify-center bg-black/40 p-4 backdrop-blur-sm",children:(0,r.jsxs)("div",{className:"flex w-[min(calc(100vw-2rem),28rem)] flex-col gap-3 rounded-2xl border border-zinc-200 bg-white p-4 shadow-2xl dark:border-zinc-800 dark:bg-zinc-900",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-sm font-medium text-zinc-900 dark:text-zinc-100",children:"음성 메모 검토"}),(0,r.jsx)("button",{type:"button",onClick:h,disabled:g,"aria-label":"cancel","data-testid":"showroom-voice-cancel",className:"rounded p-1 text-zinc-500 hover:bg-zinc-100 disabled:opacity-50 dark:text-zinc-400 dark:hover:bg-zinc-800",children:(0,r.jsx)(s.A,{className:"h-4 w-4"})})]}),(0,r.jsx)("textarea",{value:n,onChange:e=>i(e.target.value),disabled:g,placeholder:"(녹음된 텍스트가 비어있습니다)",rows:4,"data-testid":"showroom-voice-transcript",className:"rounded border border-zinc-300 bg-white px-2 py-1.5 text-sm text-zinc-900 disabled:opacity-50 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-100"}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("button",{type:"button",onClick:h,disabled:g,"data-testid":"showroom-voice-discard",className:"flex-1 rounded-lg border border-zinc-300 bg-white px-3 py-1.5 text-sm font-medium text-zinc-800 transition hover:bg-zinc-100 disabled:opacity-50 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-100 dark:hover:bg-zinc-700",children:"버리기"}),(0,r.jsx)("button",{type:"button",onClick:f,disabled:g||0===n.trim().length,"data-testid":"showroom-voice-confirm",className:"flex-1 rounded-lg border border-emerald-500 bg-emerald-500 px-3 py-1.5 text-sm font-semibold text-white transition hover:bg-emerald-600 disabled:cursor-not-allowed disabled:opacity-50",children:(0,r.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,r.jsx)(l.A,{className:"h-3.5 w-3.5"}),"Intake 저장"]})})]}),c&&(0,r.jsx)("div",{role:"alert","data-testid":"showroom-voice-error",className:"text-xs text-red-600 dark:text-red-400",children:c})]})})]})}function g(){arguments.length>0&&void 0!==arguments[0]&&arguments[0];let{config:e}=(0,u.Q)(),[t,n]=(0,i.useState)("idle"),[o,a]=(0,i.useState)(""),[s,l]=(0,i.useState)(null),g=(0,i.useRef)(null),[y,v]=(0,i.useState)(!0);(0,i.useEffect)(()=>{v(null!==f())},[]);let k=()=>{n("idle"),a(""),l(null),g.current=null},b=async()=>{var t;if(0===o.trim().length)return;if(!e.baseUrl)return void l("Daemon URL 미설정 — Settings 에서 입력");n("submitting"),l(null),(0,d.cY)("showroom.voice.submit",{len:o.trim().length});let r=await h({baseUrl:e.baseUrl,...e.token?{token:e.token}:{},transcript:o});if(!r.ok){l("intake 실패: ".concat(r.reason)),n("review"),(0,d.cY)("showroom.voice.error",{status:r.status});return}c.oR.success("\uD83D\uDCE5 음성 메모 저장됨 \xb7 intake ".concat(r.intakeId||"(id 없음)")),(0,d.cY)("showroom.voice.ok",{intakeId:r.intakeId}),p.K.emit({surface:"pwa",intent:{layer:"utterance",kind:"pwa.utterance.voice_send",target:{kind:"intake",id:null!=(t=r.intakeId)?t:"(unknown)"},value:{transcriptLen:o.trim().length}},...r.intakeId?{context:{active_workflow_run_id:r.intakeId}}:{}}),k()};return(0,r.jsx)(m,{phase:t,transcript:o,onTranscriptChange:a,error:s,apiAvailable:y,onPressStart:()=>{if("idle"!==t)return;l(null),a(""),(0,d.cY)("showroom.voice.press-start",{});let e=function(){var e,t,n;let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=null!=(e=r.recognitionImpl)?e:f();if(!i)return null;let o=new i;o.lang=null!=(t=r.lang)?t:"ko-KR",o.interimResults=!0,o.continuous=!0;let a="",s=!0,l=null,c=new Promise(e=>{l=e});o.onresult=e=>{var t;let n="";for(let t=0;t<e.results.length;t+=1){let r=e.results[t];if(!r)continue;let i=r[0];i&&(n+=i.transcript)}a=n,null==(t=r.onUpdate)||t.call(r,n)},o.onerror=e=>{var t;null==(t=r.onError)||t.call(r,{code:e.error,message:e.message})},o.onend=()=>{s=!1,l&&(l(a),l=null)};try{o.start()}catch(e){return null==(n=r.onError)||n.call(r,{code:"start-failed",message:String(e)}),null}return{get transcript(){return a},get active(){return s},async stop(){try{o.stop()}catch(e){}return c},async abort(){try{o.abort()}catch(e){}return c}}}({lang:"ko-KR",onUpdate:e=>a(e),onError:e=>{l("음성 인식 오류: ".concat(e.code)),(0,d.cY)("showroom.voice.recog-error",{code:e.code,message:e.message})}});if(!e)return void l("Web Speech API 미사용 — 브라우저가 미지원");g.current=e,n("recording")},onPressEnd:()=>{if("recording"!==t)return;let e=g.current;if(!e)return void n("idle");(0,d.cY)("showroom.voice.press-end",{}),e.stop().then(e=>{if(a(e),0===e.trim().length)return void k();n("review")})},onConfirm:()=>{b()},onCancel:k})}},12502:(e,t,n)=>{n.d(t,{Si:()=>a,cK:()=>o});var r=n(60500),i=n(50733);function o(){var e,t,n,r;let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=null!=(e=i.threshold)?e:.04,a=null!=(t=i.speakingThresholdMultiplier)?t:2,s=null!=(n=i.sustainMs)?n:150,l=null!=(r=i.frameMs)?r:20,c=Math.max(1,Math.ceil(s/l)),u=Math.max(1,Math.ceil(500/l)),d=0,p=0,f=!1,h=!1,m=()=>h?o*a:o;return{push(e){if(function(e){if(e.byteLength<2)return 0;let t=e.byteLength>>1,n=new Int16Array(e.buffer,e.byteOffset,t),r=0;for(let e=0;e<t;e+=1){let t=n[e]/32768;r+=t*t}return Math.sqrt(r/t)}(e)>=m()){if(d+=1,p=0,!f&&d>=c)return f=!0,!0}else d=0,p+=1,f&&p>=u&&(f=!1);return!1},reset(){d=0,p=0,f=!1},setSpeakingActive(e){h!==e&&(h=e,d=0,p=0)},effectiveThreshold:m}}function a(e){var t,n;let o=(0,r.useRef)(e.enabled);o.current=e.enabled;let a=(0,r.useRef)(e.onActivate);a.current=e.onActivate;let s=null!=(t=e.thresholdMs)?t:250,l=null==(n=e.ignoreFocusedInput)||n;(0,r.useEffect)(()=>{let e=null,t=!1,n=n=>{!(!o.current||"Space"!==n.code&&" "!==n.key||n.repeat||l&&function(e){if(!(e instanceof HTMLElement))return!1;let t=e.tagName;return"INPUT"===t||"TEXTAREA"===t||e.isContentEditable}(n.target))&&(t||(t=!0,e=setTimeout(()=>{t&&((0,i.cY)("voice.barge-in.spacebar-longpress",{ms:s}),a.current(n))},s)))},r=n=>{(!n||"Space"===n.code||" "===n.key)&&(t=!1,e&&(clearTimeout(e),e=null))};return window.addEventListener("keydown",n),window.addEventListener("keyup",r),window.addEventListener("blur",()=>r()),()=>{e&&clearTimeout(e),window.removeEventListener("keydown",n),window.removeEventListener("keyup",r),window.removeEventListener("blur",()=>r())}},[s,l])}},12841:(e,t,n)=>{n.d(t,{bK:()=>er,Ju:()=>G,yN:()=>eh,Wl:()=>H,FM:()=>ef,uS:()=>J,$Q:()=>ey,tw:()=>eg,ki:()=>ee,ZH:()=>eb,py:()=>ek,lY:()=>ev,HD:()=>em,er:()=>X});var r=n(30898),i=n(86127),o=n(46942);let a={OP:"COO",MK:"CMO",TC:"CTO",UX:"CXO"},s="[A-Za-z0-9_-]{1,39}",l={seat:RegExp("^elanous://seat-loop/(?:OP|MK|TC|UX)/\\d{4}-\\d{2}-\\d{2}#\\d+$"),event:new RegExp("^elanous://context/event/".concat(s,"$")),cell:new RegExp("^elanous://release/\\d+\\.\\d+\\.\\d+/checklist#".concat(s,"$")),decision:new RegExp("^elanous://decisions/".concat(s,"$"))};function c(e,t){if(!l[e].test(t))return!1;let n="seat"===e?t.replace(/\/seat-loop\/(?:OP|MK|TC|UX)\//,"/seat-loop/seat/"):t;return(0,i.t)(n)===n}function u(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function d(e){if(!u(e)||"string"!=typeof e.source)return!1;switch(e.kind){case"version":return"string"==typeof e.version;case"cell":return"string"==typeof e.version&&"string"==typeof e.id&&"string"==typeof e.title&&"string"==typeof e.status&&(null===e.owner||"string"==typeof e.owner);case"decision":return"string"==typeof e.id&&"string"==typeof e.title&&"string"==typeof e.status&&(null===e.dueAt||"string"==typeof e.dueAt);case"seat":return"string"==typeof e.seat&&"string"==typeof e.at&&"string"==typeof e.status&&(null===e.id||"string"==typeof e.id)&&(null===e.title||"string"==typeof e.title);default:return!1}}function p(e){return u(e)&&"string"==typeof e.at&&"string"==typeof e.kind&&"string"==typeof e.summary&&"string"==typeof e.source}function f(e){return Array.from((0,i.t)(e).trim()).slice(0,30).join("")}function h(e,t){var n,r;return Number.isFinite(Date.parse(e))&&null!=(r=null==(n=(0,o.z)({date:"",seats:[{seat:"TC",now:{text:"출처",at:e},landed:null,blocked:null,pendingDecisions:null,checklist:null}]},t)[0])?void 0:n.ago)?r:null}function m(e,t){if(!(u(e)&&"string"==typeof e.at&&(null===e.topic||"string"==typeof e.topic)&&Array.isArray(e.facts)&&e.facts.every(d)&&Array.isArray(e.events)&&e.events.every(p)&&Array.isArray(e.guide)&&e.guide.every(e=>"string"==typeof e)))return null;let n=e.facts.filter(e=>"seat"===e.kind).sort((e,t)=>t.at.localeCompare(e.at)).filter(e=>Object.hasOwn(a,e.seat)&&c("seat",e.source)).map(e=>({label:(0,i.t)("".concat(a[e.seat]," 자리 루프").concat(e.title?" \xb7 ".concat(f(e.title)):"")),ago:h(e.at,t),source:e.source})),r=e.events.filter(e=>c("event",e.source)).sort((e,t)=>t.at.localeCompare(e.at)).map(e=>({label:(0,i.t)("조율 채널 \xb7 ".concat(f(e.summary))),ago:h(e.at,t),source:e.source}));return[...n,...r,...e.facts.filter(e=>"cell"===e.kind&&c("cell",e.source)).map(e=>({label:(0,i.t)("".concat(e.version," 체크리스트 ").concat(e.id)),ago:null,source:e.source})),...e.facts.filter(e=>"decision"===e.kind&&"open"===e.status&&c("decision",e.source)).map(e=>({label:(0,i.t)("결정 대기 ".concat(e.id)),ago:null,source:e.source}))].slice(0,6)}var g=n(10310),y=n(43712),v=n(1355);async function k(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};try{var r,i;let o=await e.fork(t,n);if(o.ok&&o.id)return{kind:"forked",id:o.id};if(!o.ok&&("not_found"===o.error||/^HTTP 404(?=\s|:|$)/.test(null!=(r=o.error)?r:"")))return{kind:"empty"};return{kind:"error",error:(null!=(i=o.error)?i:"Fork failed").split(/\r?\n/,1)[0]}}catch(t){if((null==t?void 0:t.status)===404)return{kind:"empty"};let e=t instanceof Error?t.message:String(t);if("not_found"===e||/^HTTP 404(?=\s|:|$)/.test(e))return{kind:"empty"};return{kind:"error",error:e.split(/\r?\n/,1)[0]}}}var b=n(79450),w=n(50733),x=n(63868),A=n(63118),I=n(66290);let S={codex:"balanced",luna:"budget",terra:"better",sol:"best",sonnet:"better",opus:"best",grok:"better"},T=[...I.Ql,...Object.keys(S)].join(" \xb7 "),C=["low","medium","high"];function E(e,t){if("model"===e){if(!t.length)return{kind:"model"};let e=t[0].toLowerCase(),n=(0,I.mp)(e)?e:Object.hasOwn(S,e)?S[e]:void 0;return 1===t.length&&n?{kind:"model",tier:n}:{kind:"model",invalid:!0}}return"reasoning"===e?t.length?1===t.length&&C.includes(t[0])?{kind:"reasoning",level:t[0]}:{kind:"reasoning",invalid:!0}:{kind:"reasoning"}:t.length?1===t.length&&"next"===t[0]?{kind:"provider",action:"next"}:2===t.length&&"use"===t[0]?{kind:"provider",action:"use",name:t[1]}:{kind:"provider",action:"show",invalid:!0}:{kind:"provider",action:"show"}}async function M(e){try{return(await e.client.fetchJson("/v1/setup/llm-providers")).activeProvider||e.provider}catch(t){return e.provider}}async function R(e,t){var n,r,i,o,a,s,l;if("model"===e.kind){if(e.invalid)return"쓸 수 있는 값: ".concat(T);if(!e.tier){let e=t.daemon?null==(r=await (0,A.me)(t.daemon))?void 0:r.llm:void 0;return e?"현재 모델: ".concat(e," \xb7 ").concat((0,I.f7)(await M(t),e).model," \xb7 쓸 수 있는 값: ").concat(T):"현재 모델: 확인할 수 없음 \xb7 쓸 수 있는 값: ".concat(T)}if(!(null==(n=t.daemon)?void 0:n.baseUrl)||"synced"!==await (0,A.tM)(t.daemon,e.tier))return"모델 설정을 저장하지 못했습니다 — 데몬 연결을 확인하세요";let i=await M(t);return"모델: ".concat((0,I.f7)(i,e.tier).model,"(으)로 바꿨습니다")}if("reasoning"===e.kind){if(e.invalid)return"쓸 수 있는 값: ".concat(C.join(" \xb7 "));if(e.level)return"추론 강도는 설정 화면에서 바꾸세요";let n=t.daemon?null==(i=await (0,A.me)(t.daemon))?void 0:i.llm:void 0;return n?"현재 추론 단계: 확인할 수 없음 \xb7 모델 티어 기본값: ".concat(null!=(o=(0,I.f7)(await M(t),n).reasoningLevel)?o:"off"," \xb7 추론 강도는 설정 화면에서 바꾸세요"):"현재 추론 단계: 확인할 수 없음 \xb7 추론 강도는 설정 화면에서 바꾸세요"}if(e.invalid)return"쓸 수 있는 값: next \xb7 use <이름>";try{let n=await t.client.fetchJson("/v1/setup/llm-providers"),r=(null!=(s=n.providers)?s:[]).filter(e=>"apiKey"===e.flow&&e.hasSavedKey||"auto"===e.flow),i=r.map(e=>e.provider).join(" \xb7 ");if("show"===e.action)return"현재 프로바이더: ".concat(n.activeProvider||"(없음)"," \xb7 쓸 수 있는 값: ").concat(i||"(없음)");let o="next"===e.action?r[(r.findIndex(e=>e.provider===n.activeProvider)+1)%r.length]:r.find(t=>t.provider===e.name);if(!o)return"쓸 수 있는 값: ".concat(i||"(없음)");if("next"===e.action&&o.provider===n.activeProvider)return"현재 프로바이더: ".concat(n.activeProvider);let c=await t.client.fetchJson("/v1/setup/llm-provider",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({provider:o.provider})});return(null==c?void 0:c.error)?"프로바이더 전환 실패: ".concat(c.error):"프로바이더: ".concat(null!=(l=null==c||null==(a=c.active)?void 0:a.provider)?l:o.provider,"(으)로 바꿨습니다")}catch(e){return"프로바이더 상태를 읽거나 저장하지 못했습니다 — 데몬 연결을 확인하세요"}}var P=n(10037);let _="쓰는 법: /resume <id 앞자리> (4자 이상)",U="대화 목록을 못 읽었습니다",D="elanous-session-";function j(e){return e.startsWith(D)?e.slice(D.length):e}function O(e,t){return"sessions"===e?{kind:"sessions",count:1===t.length&&/^[1-9]\d*$/.test(t[0])?Math.min(Number(t[0]),30):10}:{kind:"resume",...1===t.length&&t[0].length>=4?{prefix:t[0]}:{}}}function N(e,t){let n=j(e),r=n.toLowerCase(),i=8;for(let n of t){if(n.id===e)continue;let t=j(n.id).toLowerCase(),o=0;for(;o<r.length&&o<t.length&&r[o]===t[o];)o++;i=Math.max(i,o+1)}return n.slice(0,i)}async function L(e,t){if("resume"===e.kind&&!e.prefix)return{text:_};try{let n=await new b.jU(t.client).list();if(!n.ok||!Array.isArray(n.sessions))return{text:U};let r=n.sessions.map(P.C5);return"sessions"===e.kind?{text:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Date.now(),i=[...e].sort((e,t)=>(Date.parse(t.lastTurnAt)||0)-(Date.parse(e.lastTurnAt)||0)).slice(0,n);return[...0===i.length?["대화가 없습니다"]:i.map(n=>{var i;return"".concat(N(n.id,e)).concat(n.id===t?" (지금)":""," \xb7 ").concat(n.msgCount,"개 \xb7 ").concat((0,b.KW)(n.lastTurnAt,r)," \xb7 ").concat((null!=(i=n.lastMsgPreview)?i:"").slice(0,40))}),"이어가기: /resume <앞자리>"].join("\n")}(r,t.sessionId,e.count)}:function(e,t,n){let r=j(e).toLowerCase();if(r.length<4)return{text:_};let i=t.filter(e=>j(e.id).toLowerCase().startsWith(r));if(0===i.length)return{text:"그런 대화가 없습니다 — /sessions 로 목록"};if(i.length>1)return{text:"".concat(i.map(e=>N(e.id,t)).join(" \xb7 "),"\n더 길게 쳐 주세요")};let o=i[0].id;return o===n?{text:"이미 이 대화입니다"}:{newSessionId:o,text:"".concat(N(o,t)," 대화로 옮겼습니다")}}(e.prefix,r,t.sessionId)}catch(e){return{text:U}}}var z=n(93337),Y=n(95734);let F=/^https?:\/\/[^\s"']+\.(png|jpe?g|webp|gif)(\?[^\s"']*)?$/i,B=/https?:\/\/[^\s"'<>)\]]+?\.(?:png|jpe?g|webp|gif)(?:\?[^\s"'<>)\]]*)?/gi;function W(e){var t,n;let r=null==(t=(null!=(n=e.split("?")[0])?n:"").split(".").pop())?void 0:t.toLowerCase();return"jpg"===r||"jpeg"===r?"image/jpeg":"webp"===r?"image/webp":"gif"===r?"image/gif":"image/png"}function J(e){if(!e||"object"!=typeof e||Array.isArray(e))return[];let t=new Set,n=[],r=[],i=(e,o)=>{if(o>4||null===e)return;if(Array.isArray(e)){for(let t of e)i(t,o+1);return}if("object"!=typeof e)return;let a="string"==typeof e.uri?e.uri:e.result_url;if("string"==typeof a&&F.test(a)&&!t.has(a)){t.add(a);let r="string"==typeof e.description?e.description:"string"==typeof e.name?e.name:void 0;n.push({src:a,mediaType:W(a),...r?{alt:r}:{}})}for(let[t,n]of Object.entries(e)){if("string"==typeof n&&("output"===t||"text"===t)){r.push(n);continue}i(n,o+1)}};for(let o of(i(e,0),r))for(let e of o.matchAll(B)){let r=e[0];t.has(r)||(t.add(r),n.push({src:r,mediaType:W(r)}))}return n}let K=new Map,$=new Set,Z=[],q=!1;function H(){return q&&(Z=Array.from(K.values()).sort((e,t)=>{var n,r;return(null!=(n=e.priority)?n:50)-(null!=(r=t.priority)?r:50)}),q=!1),Z}function X(e){return $.add(e),()=>{$.delete(e)}}function V(e){return"hud.segment"===e.kind&&("applied"===(0,g.VQ)(K,e)&&function(){for(let e of(q=!0,$))try{e()}catch(e){(0,w.cY)("chat-runtime.hud.subscriber-error",e)}}(),!0)}function G(e){V(e)}let Q=/^\[elanous\/feedback\/[a-zA-Z]+\] /;function ee(e,t){let n=(0,r.h)(t);return!(!n||e.some(e=>"text"===e.kind&&e.text===n))&&(e.push({kind:"text",text:n}),!0)}function et(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return;let n=(Array.isArray(e.content)?e.content:[]).filter(e=>null!==e&&"object"==typeof e&&!Array.isArray(e)&&"resource"===e.type).map(e=>e.resource).find(e=>{var n;return!(null===e||"object"!=typeof e||Array.isArray(e))&&e.uri===t&&"string"==typeof(n=e.mimeType)&&"text/html"===n.split(";")[0].trim().toLowerCase()&&"string"==typeof e.text});if(!n)return;let r=n._meta,i=r&&"object"==typeof r&&!Array.isArray(r)?r.ui:void 0,o=i&&"object"==typeof i&&!Array.isArray(i)?i.csp:void 0,a=o&&"object"==typeof o&&!Array.isArray(o)?o.connectDomains:void 0,s=o&&"object"==typeof o&&!Array.isArray(o)?o.resourceDomains:void 0,l=Array.isArray(a)?a.filter(e=>"string"==typeof e):void 0,c=Array.isArray(s)?s.filter(e=>"string"==typeof e):void 0;return{html:n.text,...l?{connectDomains:l}:{},...c?{resourceDomains:c}:{}}}let en="예산 상태를 읽지 못했습니다",er=[{name:"help",description:"이 도움말 보기"},{name:"session",description:"현재 대화 ID 보기"},{name:"fork",description:"현재 대화를 복사해 새 대화로 분기"},{name:"rewind",description:"N개 사용자 턴 이전으로 분기 (/rewind N)"},{name:"undo",description:"마지막 사용자 턴 이전으로 분기"},{name:"budget",description:"이번 달 지출과 알림 기준 보기"},{name:"history",description:"최근 N개 로컬 대화 요약 (기본 10개, 역할: 앞 80자)"},{name:"clear",description:"로컬 대화 기록 지우기"},{name:"sessions",description:"최근 대화 목록 보기 (/sessions [N])"},{name:"resume",description:"대화 이어가기 (/resume <id 앞자리>)"},{name:"model",description:"모델 티어 보기\xb7바꾸기 (/model <티어|별칭>)"},{name:"reasoning",description:"추론 단계 보기\xb7설정 안내 (/reasoning <low|medium|high>)"},{name:"provider",description:"프로바이더 보기\xb7바꾸기 (/provider next|use <이름>)"}],ei=["help","session","fork","budget","history","clear"],eo=["메타 명령(:이름 또는 /이름) (Meta commands):",...er.map(e=>{let{name:t,description:n}=e;return" ".concat(ei.includes(t)?":":"/").concat(t.padEnd(16)).concat(n)})].join("\n"),ea=new Set(["help","?","resume","clear","cls","status","st","now","remaining","setup","quit","q","exit","run-skill","rs","run","ad","design","design-check","local","ll","session","sess","fork","rewind","mission","resume-turn","context","ctx","paste","sync","s","plugin","plugins","widget","widgets","log","memory","mem","export","delta","diffs","theme","debug","rebind","api-allow","api","prompt","prompts","history","hist","inputs","research","rsh","harness","plan","chat","dashboard","dash","telegram","tg","tablet","surface","term","terminal","claude","codex","gemini","acp","conv","handoff","agent-room","showroom","sr","reply","capture","inject","relay","lane","control","default","qc","voice-chat","vc","auto-tts","tts","autotts","directive"]),es={m:"model",r:"reasoning",think:"reasoning",p:"provider"},el=new Set([...ea].filter(e=>"harness"!==e&&!er.some(t=>t.name===e))),ec=ei.map(e=>"/".concat(e)).join(" ");async function eu(e,t,n){var r;let i=(null!=(r=n.messages)?r:[]).filter(e=>"user"===e.role).length,o=(t,r)=>((0,w.cY)("webterm.chat.fork",{command:e,outcome:t,sessionId:n.sessionId}),{text:r});if("fork"===e&&t.length>0)return o("invalid","쓰는 법: /fork");if("undo"===e&&t.length>0)return o("invalid","쓰는 법: /undo");if("rewind"===e&&(1!==t.length||!/^[1-9]\d*$/.test(t[0])))return o("invalid","쓰는 법: /rewind N (양의 정수)");let a="undo"===e?1:"rewind"===e?Number(t[0]):0;if("fork"!==e&&(!Number.isSafeInteger(a)||a>i))return o("out-of-range","되돌릴 사용자 턴이 부족합니다 (".concat(i,"개)"));let s=await k(new b.jU(n.client),n.sessionId,"fork"===e?{}:{beforeUser:i-a+1});if("error"===s.kind)return o("error","대화 분기 실패 — ".concat(s.error));if("empty"===s.kind&&"fork"!==e)return o("empty","저장된 대화가 없어 되돌릴 수 없습니다");let l="forked"===s.kind?s.id:(0,v.Zr)();return(0,w.cY)("webterm.chat.fork",{command:e,outcome:"empty"===s.kind?"empty":"forked",sessionId:n.sessionId,newSessionId:l,..."fork"===e?{}:{beforeUser:i-a+1}}),{text:"fork"===e?"forked → new session ".concat(l):"".concat(a,"개 사용자 턴 이전으로 분기했습니다 → ").concat(l),newSessionId:l}}async function ed(e,t){if(!e)return{text:"무엇을 맡길까요? /harness <한 줄>"};try{let{acceptanceId:n}=await (0,Y.ZJ)(t.client,e);return{text:"하니스 접수 \xb7 ".concat(n.slice(0,8)),harnessAsk:{acceptanceId:n}}}catch(t){let e=(t instanceof Error?t.message:String(t)).split(/\r?\n/,1)[0].slice(0,200);return{text:"하니스 접수 실패 — ".concat(e)}}}let ep={":help":async()=>({text:eo}),":session":async(e,t)=>({text:"session = ".concat(t.sessionId)}),":fork":async()=>{let e=(0,v.Zr)();return{text:"forked → new session ".concat(e),newSessionId:e}},":rewind":async(e,t)=>eu("rewind",e,t),":undo":async(e,t)=>eu("undo",e,t),":budget":async(e,t)=>{let n=t.daemon;if(!(null==n?void 0:n.baseUrl))return{text:en};let r=await (0,x.gh)(n);return r?{text:function(e){let t=Number.isFinite(e.monthSoFarUsd)?e.monthSoFarUsd:0;return"budget ".concat(e.monthYYYYMM,": $").concat(t.toFixed(2)," \xb7 알림 ").concat(e.notifyAtPct,"%")}(r)}:{text:en}},":history":async(e,t)=>{var n;let r=Number(e[0]),i=Number.isFinite(r)&&r>0?Math.floor(r):10;return{text:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10;return 0===e.length?"아직 대화가 없습니다":e.slice(Math.max(0,e.length-t)).map(e=>"".concat(e.role,": ").concat(e.text.slice(0,80))).join("\n")}(null!=(n=t.messages)?n:[],i)}},":clear":async()=>({text:"__CLEAR__"}),":sessions":async(e,t)=>L(O("sessions",e),t),":resume":async(e,t)=>L(O("resume",e),t),":model":async(e,t)=>({text:await R(E("model",e),t)}),":reasoning":async(e,t)=>({text:await R(E("reasoning",e),t)}),":provider":async(e,t)=>({text:await R(E("provider",e),t)})};function ef(e){let t=e.trimStart();if(t.startsWith(":"))return!0;if(!t.startsWith("/")||t.length<2||/\s/.test(t[1]))return!1;let[n]=t.split(/\s+/);return!n.slice(1).includes("/")}async function eh(e,t){let n=e.trim(),r=(0,z.dz)(e);if(null!==r&&!n.startsWith("/"))return ed(r,t);if(!n.startsWith(":")&&!n.startsWith("/"))return null;let[i,...o]=n.split(/\s+/);if(i.startsWith("/")&&!ef(e))return null;if("/harness"===i&&null===r)return{text:"무엇을 맡길까요? /harness <한 줄>"};let a=i.startsWith("/"),s=a?":".concat(i.slice(1)):i,l=a&&Object.hasOwn(es,i.slice(1))?es[i.slice(1)]:i.slice(1),c=":".concat(l),u=!a&&":provider"===c&&o.length>0&&"next"!==o[0]&&"use"!==o[0],d=a&&":fork"===c?(e,t)=>eu("fork",e,t):!u&&Object.hasOwn(ep,c)?ep[c]:void 0;if(!d){if(a){let e=el.has(i.slice(1));return(0,w.cY)("webterm.chat.meta-command",{cmd:s,outcome:e?"unsupported-tui":"unknown"}),{text:e?"".concat(i," 은 PWA 채팅에서 아직 안 됩니다 — 지금 되는 명령: ").concat(ec):"모르는 명령입니다: ".concat(i," — /help 로 목록 보기")}}return(0,w.cY)("webterm.chat.meta-command",{cmd:s,outcome:"unknown"}),{text:"unknown meta command: ".concat(i)}}return(0,w.cY)("webterm.chat.meta-command",{cmd:s,outcome:"ok"}),d(o,t)}async function em(e,t){var n,r,i;let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,w.cY)("webterm.chat.runturn.stream.start",{sessionId:t.sessionId,provider:t.provider,len:e.length,contentBlocks:null!=(r=null==(n=o.userContent)?void 0:n.length)?r:0});let a=[],s=-1,l=0,c=0,u=0,d=0,p=()=>a.map(e=>({...e})),f=e=>{(0,w.cY)("webterm.chat.runturn.stream.end",{stopReason:e.stopReason,sessionId:e.sessionId,...void 0!==e.error?{error:e.error}:{},images:l,tools:c,mcpApps:u,feedback:d})},h=await t.client.promptStream({sessionId:t.sessionId||void 0,userText:e,...o.userContent&&o.userContent.length>0?{userContent:o.userContent}:{},provider:t.provider||void 0},{onError:o.onError,onTextDelta:e=>{var t,n;let{full:r}=e;-1===s?(s=a.length,a.push({kind:"text",text:r})):a[s]={kind:"text",text:r},null==(t=o.onPartial)||t.call(o,r),null==(n=o.onPartialBlocks)||n.call(o,p())},onImageBlock:e=>{var t;let{src:n,mediaType:r,alt:i}=e;l+=1,a.push(void 0!==i?{kind:"image",src:n,mediaType:r,alt:i}:{kind:"image",src:n,mediaType:r}),null==(t=o.onPartialBlocks)||t.call(o,p())},onFeedback:e=>{if(!V(e)&&"applied"===(0,g.K4)(a,e)){var t;d+=1,null==(t=o.onPartialBlocks)||t.call(o,p())}},onToolCall:e=>{var t;let{id:n,name:r,args:i}=e;c+=1,a.push({kind:"tool_use",id:n,name:r,status:"running",startedAt:Date.now(),args:i}),null==(t=o.onPartialBlocks)||t.call(o,p())},onToolResult:e=>{var t;let{id:n,name:r,ok:i,summary:s,rawOutput:l,resourceUri:d}=e,f=a.findIndex(e=>"tool_use"===e.kind&&e.id===n),h=i?"done":"error",g="context_now"===r?m(l,Date.now()):null;if(-1===f)c+=1,a.push({kind:"tool_use",id:n,name:r,status:h,startedAt:Date.now(),endedAt:Date.now(),...void 0!==s?{summary:s}:{},...null!==g?{sources:g}:{}});else{let e={...a[f],status:h,endedAt:Date.now(),...void 0!==s?{summary:s}:{},...null!==g?{sources:g}:{}};null===g&&delete e.sources,a[f]=e}if(ee(a,l),"string"==typeof d&&d.trim().length>0){u+=1;let e=et(l,d);a.push({kind:"mcp_app",toolId:n,toolName:r,screenUrl:d,...void 0!==l?{toolResult:l}:{},...e||{},...void 0!==s?{fallbackText:s}:{}})}null==(t=o.onPartialBlocks)||t.call(o,p())},...o.signal?{signal:o.signal}:{},...!0===o.debugTap?{debugTap:!0}:{}}).catch(e=>{var t;throw f({stopReason:(null==(t=o.signal)?void 0:t.aborted)===!0?"aborted":"error",error:e instanceof Error?e.message:String(e)}),e});f({stopReason:h.stopReason,sessionId:h.sessionId}),-1!==s&&h.text&&(a[s]={kind:"text",text:h.text});let y=l>0||c>0||u>0||d>0;return{message:{id:"m-".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,6)),role:"assistant",text:null!=(i=h.text)?i:"",timestamp:Date.now(),meta:{provider:t.provider,stopReason:h.stopReason},...y?{blocks:p()}:{}},newSessionId:h.sessionId!==t.sessionId?h.sessionId:void 0}}function eg(e,t){return{id:"u-".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,6)),role:"user",text:e,timestamp:Date.now(),...t?{terminalId:t}:{}}}function ey(e,t){return{id:"meta-".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,6)),role:"meta",text:e,timestamp:Date.now(),...t?{terminalId:t}:{}}}function ev(e,t,n){let r=null,i=[],o=-1,a=0,s=0,l=0,c=0,u=!1,d=()=>{r=null,i.length=0,o=-1,a=0,s=0,l=0,c=0,u=!1},p=()=>i.map(e=>({...e}));return e.subscribeChatEvents(t,{onTurnBegin:e=>{var t;if(d(),null==(t=n.isLocalTurnInFlight)?void 0:t.call(n)){u=!0;return}let i=n.onPlaceholder({sessionId:e.sessionId});if(null===i){u=!0;return}r=i},onTextDelta:e=>{let{full:t}=e;u||null===r||(-1===o?(o=i.length,i.push({kind:"text",text:t})):i[o]={kind:"text",text:t},n.onPartialBlocks(r,p()))},onImageBlock:e=>{let{src:t,mediaType:o,alt:s}=e;u||null===r||(a+=1,i.push(void 0!==s?{kind:"image",src:t,mediaType:o,alt:s}:{kind:"image",src:t,mediaType:o}),n.onPartialBlocks(r,p()))},onFeedback:e=>{V(e)||u||null===r||"applied"===(0,g.K4)(i,e)&&(c+=1,n.onPartialBlocks(r,p()))},onToolCall:e=>{let{id:t,name:o,args:a}=e;u||null===r||(s+=1,i.push({kind:"tool_use",id:t,name:o,status:"running",startedAt:Date.now(),args:a}),n.onPartialBlocks(r,p()))},onToolResult:e=>{let{id:t,name:o,ok:a,summary:c,rawOutput:d,resourceUri:f}=e;if(u||null===r)return;let h=i.findIndex(e=>"tool_use"===e.kind&&e.id===t),g=a?"done":"error",y="context_now"===o?m(d,Date.now()):null;if(-1===h)s+=1,i.push({kind:"tool_use",id:t,name:o,status:g,startedAt:Date.now(),endedAt:Date.now(),...void 0!==c?{summary:c}:{},...null!==y?{sources:y}:{}});else{let e={...i[h],status:g,endedAt:Date.now(),...void 0!==c?{summary:c}:{},...null!==y?{sources:y}:{}};null===y&&delete e.sources,i[h]=e}if(ee(i,d),"string"==typeof f&&f.trim().length>0){l+=1;let e=et(d,f);i.push({kind:"mcp_app",toolId:t,toolName:o,screenUrl:f,...void 0!==d?{toolResult:d}:{},...e||{},...void 0!==c?{fallbackText:c}:{}})}n.onPartialBlocks(r,p())},onTurnEnd:e=>{var f;if(u||null===r){(0,w.cY)("webterm.chat.runturn.observer.end",{sessionId:t,stopReason:e.stopReason,dropped:!0,reason:u?"dropped-turn":"no-placeholder"}),d();return}-1!==o&&e.text&&(i[o]={kind:"text",text:e.text});let h=a>0||s>0||l>0||c>0;(0,w.cY)("webterm.chat.runturn.observer.end",{sessionId:t,stopReason:e.stopReason,dropped:!1,images:a,tools:s,mcpApps:l,feedback:c});let m={id:"m-obs-".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,6)),role:"assistant",text:null!=(f=e.text)?f:"",timestamp:Date.now(),meta:{...n.provider?{provider:n.provider}:{},stopReason:e.stopReason},...h?{blocks:p()}:{}};n.onFinalize(r,m),d()},onError:e=>{null!==r&&n.onError&&n.onError(r,e),d()}})}async function ek(e,t,n){var r,i;let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=n.sessionId;if(!a)throw Error("runChatTurnAcp: sessionId required (daemon handshake first)");let s=[],l=-1,c=0,u=0,d=0,p="",f=-1,h="",m=0,v=0,k=0,b=()=>{if(-1===f)return!1;let e=s[f];return!e.done&&(s[f]={...e,done:!0},!0)},x=()=>s.map(e=>({...e})),A=e.on("sessionUpdate",e=>{var t,n,r,i,w,A,I,S,T,C;let E=e.params;if(!E||E.sessionId!==a)return;let M=E.update;if(M){if("agent_message_chunk"===M.sessionUpdate){let e=M.content;if((null==e?void 0:e.type)==="text"&&"string"==typeof e.text&&e.text.length>0){let r=e.text;p+=r,-1===l?(b(),l=s.length,s.push({kind:"text",text:p})):s[l]={kind:"text",text:p},null==(t=o.onPartial)||t.call(o,p),null==(n=o.onPartialBlocks)||n.call(o,x())}else if((null==e?void 0:e.type)==="image"&&"string"==typeof e.data&&"string"==typeof e.mimeType){c+=1;let t={kind:"image",src:e.data,mediaType:e.mimeType};"string"==typeof e.uri&&(t.alt=e.uri),b(),s.push(t),null==(r=o.onPartialBlocks)||r.call(o,x())}}else if("agent_thought_chunk"===M.sessionUpdate){let e=M.content;if((null==e?void 0:e.type)==="text"&&"string"==typeof e.text&&e.text.length>0){let t=function(e){let t=e.split("\n"),n=t[0];if(!n)return null;let r=/^\[elanous\/feedback\/([a-zA-Z]+)\] (.+)$/.exec(n);if(!r||"emit"!==r[1])return null;let i=[];for(let e=1;e<t.length;e+=1){let n=t[e];if(/^<<elanous-feedback-end /.test(n))break;i.push(n)}try{let e=JSON.parse(i.join("\n"));return(0,y.L)(e)?{method:"emit",payload:e}:null}catch(e){return null}}(e.text);if(t){V(t.payload)||"applied"===(0,g.K4)(s,t.payload)&&(v+=1,null==(w=o.onPartialBlocks)||w.call(o,x()));return}if(Q.test(e.text)){k+=1;return}if(h+=e.text,-1===f)m+=1,f=s.length,s.push({kind:"agent_thinking",blockId:"acp-thought-".concat(a),msg:h,done:!1});else{let e=s[f];s[f]={...e,msg:h}}null==(i=o.onPartialBlocks)||i.call(o,x())}}else if("tool_call"===M.sessionUpdate&&"string"==typeof M.toolCallId)u+=1,s.push({kind:"tool_use",id:M.toolCallId,name:null!=(I=M.title)?I:"",status:"running",startedAt:Date.now(),...M.rawInput?{args:M.rawInput}:{}}),null==(A=o.onPartialBlocks)||A.call(o,x());else if("tool_call_update"===M.sessionUpdate&&"string"==typeof M.toolCallId){let e=s.findIndex(e=>"tool_use"===e.kind&&e.id===M.toolCallId),t="completed"===M.status?"done":"error";if(-1===e)u+=1,s.push({kind:"tool_use",id:M.toolCallId,name:null!=(T=M.title)?T:"",status:t,startedAt:Date.now(),endedAt:Date.now(),...M.title?{summary:M.title}:{}});else{let n=s[e];s[e]={...n,status:t,endedAt:Date.now(),...M.title?{summary:M.title}:{}}}for(let e of(ee(s,M.rawOutput),J(M.rawOutput)))s.some(t=>"image"===t.kind&&t.src===e.src)||(c+=1,s.push({kind:"image",...e}));let n=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return;let t=e._meta,n=t&&"object"==typeof t&&!Array.isArray(t)?t.ui:void 0,r=n&&"object"==typeof n&&!Array.isArray(n)?n.resourceUri:void 0;if("string"==typeof r&&r.trim().length>0)return r;let i=e["ui/resourceUri"];return"string"==typeof i&&i.trim().length>0?i:void 0}(M.rawOutput);if(n){d+=1;let e=et(M.rawOutput,n);s.push({kind:"mcp_app",toolId:M.toolCallId,toolName:null!=(C=M.title)?C:"",screenUrl:n,...void 0!==M.rawOutput?{toolResult:M.rawOutput}:{},...e||{},...M.title?{fallbackText:M.title}:{}})}null==(S=o.onPartialBlocks)||S.call(o,x())}}}),I=()=>{e.send("session/cancel",{sessionId:a}).catch(()=>{})},S=o.signal;if(S){if(S.aborted)throw A(),Error("aborted");S.addEventListener("abort",I,{once:!0})}let T=o.userContent&&o.userContent.length>0?o.userContent:[{type:"text",text:t}];(0,w.cY)("webterm.chat.runturn.acp.start",{sessionId:a,provider:n.provider,len:t.length,blocks:T.length});let C=e=>{(0,w.cY)("webterm.chat.runturn.acp.end",{sessionId:a,stopReason:e.stopReason,...void 0!==e.error?{error:e.error}:{},textLen:p.length,images:c,tools:u,mcpApps:d,thoughts:m,feedbackEnvelopes:k})};try{let t=await e.send("session/prompt",{sessionId:a,prompt:T}),i=null!=(r=null==t?void 0:t.stopReason)?r:"end_turn";b(),C({stopReason:i});let o=c>0||u>0||d>0||m>0||v>0;return{message:{id:"m-acp-".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,6)),role:"assistant",text:p,timestamp:Date.now(),meta:{provider:n.provider,stopReason:i},...o?{blocks:x()}:{}}}}catch(e){throw C({stopReason:(null==S?void 0:S.aborted)===!0?"aborted":"error",error:e instanceof Error?e.message:String(e)}),e}finally{b()&&(null==(i=o.onPartialBlocks)||i.call(o,x())),S&&S.removeEventListener("abort",I),A()}}function eb(e,t,n){var r;let i=null!=(r=n.idleFinalizeMs)?r:3e3,o=null,a=[],s=-1,l=0,c=0,u=null,d=()=>{if(null!==o)return!0;let e=n.onPlaceholder({sessionId:t});return null!==e&&(o=e,(0,w.cY)("webterm.chat.acp.foreign-turn.start",{id:e}),!0)},p=e.on("sessionUpdate",e=>{var r,p,f,h;if((null==(r=n.isLocalTurnInFlight)?void 0:r.call(n))||(null==(p=n.isRemoteSseTurnInFlight)?void 0:p.call(n)))return;let m=e.params;if(!m||m.sessionId!==t)return;let g=m.update;if(!g)return;let y=!1;if("agent_message_chunk"===g.sessionUpdate){let e=g.content;if((null==e?void 0:e.type)==="text"&&"string"==typeof e.text&&e.text.length>0){if(!d())return;let t=e.text;if(-1===s)s=a.length,a.push({kind:"text",text:t});else{let e=a[s];a[s]={kind:"text",text:e.text+t}}y=!0}else if((null==e?void 0:e.type)==="image"&&"string"==typeof e.data&&"string"==typeof e.mimeType){if(!d())return;l+=1;let t={kind:"image",src:e.data,mediaType:e.mimeType};"string"==typeof e.uri&&(t.alt=e.uri),a.push(t),y=!0}}else if("tool_call"===g.sessionUpdate&&"string"==typeof g.toolCallId){if(!d())return;c+=1,a.push({kind:"tool_use",id:g.toolCallId,name:null!=(f=g.title)?f:"",status:"running",startedAt:Date.now(),...g.rawInput?{args:g.rawInput}:{}}),y=!0}else if("tool_call_update"===g.sessionUpdate&&"string"==typeof g.toolCallId){if(!d())return;let e=a.findIndex(e=>"tool_use"===e.kind&&e.id===g.toolCallId),t="completed"===g.status?"done":"error";if(-1===e)c+=1,a.push({kind:"tool_use",id:g.toolCallId,name:null!=(h=g.title)?h:"",status:t,startedAt:Date.now(),endedAt:Date.now(),...g.title?{summary:g.title}:{}});else{let n=a[e];a[e]={...n,status:t,endedAt:Date.now(),...g.title?{summary:g.title}:{}}}y=!0}y&&null!==o&&(n.onPartialBlocks(o,a.map(e=>({...e}))),u&&clearTimeout(u),u=setTimeout(()=>{let e=o;if(e&&(0,w.cY)("webterm.chat.acp.foreign-turn.end",{id:e,images:l,tools:c}),u&&(clearTimeout(u),u=null),o=null,a=[],s=-1,l=0,c=0,e&&n.onFinalize)try{n.onFinalize(e)}catch(e){(0,w.cY)("webterm.chat.acp.finalize.error",{reason:String(e)})}},i))});return()=>{p(),u&&(clearTimeout(u),u=null)}}Object.defineProperty(ep,":harness",{value:async(e,t)=>ed(e.join(" "),t)})},21259:(e,t,n)=>{n.d(t,{u:()=>d});var r=n(54456),i=n(60500),o=n(75591),a=n(6838),s=n(36581),l=n(71829),c=n(50733),u=n(55499);function d(e){let{onAttached:t}=e,{config:n}=(0,s.Q)(),[d,p]=(0,i.useState)(!1),f=(0,i.useRef)(null),h=async e=>{let r=e.target.files;if(e.target.value="",!r||0===r.length)return;if(!n.baseUrl)return void l.oR.error("Daemon URL 미설정 — Settings 에서 입력");p(!0);let i=Array.from(r);(0,c.cY)("webterm.files.pick",{count:i.length,totalBytes:i.reduce((e,t)=>e+t.size,0)});try{let e=await (0,u.K)(i.map(e=>({file:e,filename:e.name})),{baseUrl:n.baseUrl,...n.token?{token:n.token}:{}}),r=e.filter(e=>e.ok),o=e.filter(e=>!e.ok);r.length>0&&(l.oR.success(1===r.length?"\uD83D\uDCCE ".concat(r[0].meta.filename):"\uD83D\uDCCE ".concat(r.length," files attached")),null==t||t(r.map(e=>e.meta))),o.length>0&&l.oR.error(1===o.length?"업로드 실패: ".concat(o[0].reason.slice(0,80)):"".concat(o.length," 파일 업로드 실패"))}finally{p(!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:d,"aria-label":"attach files",title:"attach files (Files.app \xb7 iCloud \xb7 multi-select)",className:"rounded p-1.5 text-muted-foreground hover:bg-accent hover:text-foreground disabled:opacity-50",children:d?(0,r.jsx)(o.A,{className:"h-3.5 w-3.5 animate-spin"}):(0,r.jsx)(a.A,{className:"h-3.5 w-3.5"})}),(0,r.jsx)("input",{ref:f,type:"file",multiple:!0,className:"hidden",onChange:h})]})}},21569:(e,t,n)=>{n.d(t,{K:()=>r}),n(60500);let r={emit:async function(e){return{ok:!1,reason:"not-configured"}}}},30898:(e,t,n)=>{n.d(t,{g:()=>a,h:()=>s});let r=["coo-admin","release-schedule","release-checklist"],i=/^ {0,3}(`{3,}|~{3,})([^\r\n]*)$/,o=/^ {0,3}(`{3,}|~{3,})[ \t]*$/;function a(e){let t,n=[],a=[],s=0;for(let l of e.matchAll(/[^\r\n]*(?:\r?\n|$)/g)){let c=l[0];if(!c)continue;let u=l.index,d=c.replace(/\r?\n$/,"");if(!t){let e=i.exec(d);e&&!("`"===e[1][0]&&e[2].includes("`"))&&(t={marker:e[1],start:u,bodyStart:u+c.length,isCard:/^elanous-card[ \t]*$/.test(e[2])});continue}let p=o.exec(d);if(p&&p[1][0]===t.marker[0]&&!(p[1].length<t.marker.length)){if(t.isCard)try{let i=JSON.parse(e.slice(t.bodyStart,u));!(null===i||"object"!=typeof i||Array.isArray(i))&&"string"==typeof i.kind&&r.includes(i.kind)&&Array.isArray(i.items)&&i.items.every(e=>!(null===e||"object"!=typeof e||Array.isArray(e))&&"string"==typeof e.title&&(null===e.due||"string"==typeof e.due&&/^\d{4}-\d{2}-\d{2}$/.test(e.due))&&(null===e.daysLeft||"number"==typeof e.daysLeft&&Number.isFinite(e.daysLeft))&&"string"==typeof e.state&&"string"==typeof e.owner&&(void 0===e.url||"string"==typeof e.url))&&(n.push(i),a.push(e.slice(s,t.start)),s=u+c.length)}catch(e){}t=void 0}}return a.push(e.slice(s)),{text:a.join(""),cards:n}}function s(e){let t=[],n=(e,r)=>{if("string"==typeof e)return void t.push(e);if(!(r>2)&&null!==e&&"object"==typeof e){if(Array.isArray(e)){for(let t of e)n(t,r+1);return}for(let t of["output","text","content","result"])t in e&&n(e[t],r+1)}};return n(e,0),t.flatMap(e=>a(e).cards).map(e=>"```elanous-card\n"+JSON.stringify(e)+"\n```\n").join("")}},38223:(e,t,n)=>{n.d(t,{g:()=>s,q:()=>a});var r=n(86127);let i=[{id:"OP",seat:"COO"},{id:"MK",seat:"CMO"},{id:"TC",seat:"CTO"},{id:"UX",seat:"CXO"}];function o(e){return(0,r.t)(e.replace(/\s+/g," ")).trim()}function a(e){var t;let n=e.split("\n"),r=(e,t)=>{let n=e.trim();return t&&(n=(n=n.replace(/^\*\*\[[^\]]+\]\*\*\s*/,"")).replace(/^(?:📌\S*\s*)?\d{4}-\d{2}-\d{2}\s+\d{1,2}:\d{2}\s*KST\s*/,"")),o(n=(n=(n=(n=(n=(n=n.replace(/^→\s*(?:[A-Z]{1,4}|전원|전체)(?=\s|·|$)(?:\s*·\s*(?:[A-Z]{1,4}|전원|전체)(?=\s|·|$))*\s*(?:·)?\s*/u,"")).replace(/^—\s*/,"")).replace(/^[-*]\s+/,"").replace(/\*\*|`|__/g,"").replace(/^#+\s*/,"").trim()).replace(/^(?:보고|요청|정정|결정|사고|안내)\s*·\s*/,"")).replace(RegExp("^(?:\\p{Extended_Pictographic}\\uFE0F?)+\\s*","u"),"")).replace(/^(?:보고|요청|정정|결정|사고|안내)\s*·\s*/,""))},i=r(null!=(t=n[0])?t:"",!0);if(i)return i;let a=n.slice(1).find(e=>e.trim());return a?r(a,!1):""}function s(e,t){var n;let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now();return{seats:i.map(t=>{var n;let{id:r,seat:i}=t,o=null==e?void 0:e.seats.find(e=>e.seat===r);return{seat:i,now:(null==o?void 0:o.now)&&Array.from(a(o.now.text)).slice(0,40).join("")||"못 읽음",landedToday:(null==o?void 0:o.landed)==null?"못 읽음":o.landed.length,blocked:(null==o?void 0:o.blocked)==null?"못 읽음":o.blocked.length,decisionsWaiting:null!=(n=null==o?void 0:o.pendingDecisions)?n:"못 읽음"}}),runs:(null!=(n=null==t?void 0:t.entries)?n:[]).filter(e=>"running"===e.status).sort((e,t)=>{var n,r;return(Date.parse(null!=(n=t.lastActivityTimestamp)?n:"")||0)-(Date.parse(null!=(r=e.lastActivityTimestamp)?r:"")||0)}).slice(0,6).map(e=>{var t;let n=Date.parse(null!=(t=e.lastActivityTimestamp)?t:"");return{id6:function(e){let t=e.replace(/^run-/i,"");return/^[a-z0-9]{6}/i.test(t)&&o(t.slice(0,6))||"못 읽음"}(e.runId),stage:o(e.lastPhase||e.status)||"못 읽음",elapsedSec:Number.isFinite(n)?Math.max(0,Math.floor((r-n)/1e3)):"못 읽음"}})}}},46942:(e,t,n)=>{n.d(t,{z:()=>o});var r=n(38223);let i=[{id:"OP",seat:"COO"},{id:"MK",seat:"CMO"},{id:"TC",seat:"CTO"},{id:"UX",seat:"CXO"}];function o(e,t){return e?i.flatMap(n=>{var i;let{id:o,seat:a}=n,s=null==(i=e.seats.find(e=>e.seat===o))?void 0:i.now;if(!s)return[];let l=Array.from((0,r.q)(s.text)).slice(0,24).join("");if(!l)return[];let c=Math.max(0,Math.floor((t-Date.parse(s.at))/6e4));return[{seat:a,text:l,ago:c<1?"방금":c<60?"".concat(c,"분 전"):c<1440?"".concat(Math.floor(c/60),"시간 전"):"하루 넘음"}]}):[]}},55499:(e,t,n)=>{n.d(t,{K:()=>o,v:()=>i});var r=n(50733);async function i(e){var t;let n=e.baseUrl.replace(/\/$/,"");if(!n)return{ok:!1,status:0,reason:"baseUrl not configured"};let i=null!=(t=e.filename)?t:e.file instanceof File?e.file.name:"upload.bin";(0,r.cY)("webterm.attach.upload.begin",{filename:i,size:e.file.size,type:e.file.type});let o=new FormData;o.append("file",e.file,i),o.append("filename",i);try{let t=await fetch("".concat(n,"/v1/attachments"),{method:"POST",body:o,...e.token?{headers:{authorization:"Bearer ".concat(e.token)}}:{}});if(!t.ok){let e=await t.text().catch(()=>"");return(0,r.cY)("webterm.attach.upload.error",{status:t.status,detail:e.slice(0,200)}),{ok:!1,status:t.status,reason:e||"HTTP ".concat(t.status)}}let i=await t.json();return(0,r.cY)("webterm.attach.upload.ok",{id:i.id,size:i.size}),{ok:!0,meta:i}}catch(t){let e=String(t instanceof Error?t.message:t);return(0,r.cY)("webterm.attach.upload.exception",{reason:e}),{ok:!1,status:0,reason:e}}}async function o(e,t){return Promise.all(e.map(e=>i({baseUrl:t.baseUrl,...void 0!==t.token?{token:t.token}:{},file:e.file,...void 0!==e.filename?{filename:e.filename}:{}})))}},79450:(e,t,n)=>{n.d(t,{KW:()=>o,jU:()=>r,nj:()=>i});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 i(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 o(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),"일 전")}},86127:(e,t,n)=>{n.d(t,{t:()=>d});let r=/\brun-([0-9a-f]{8})-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi,i=/(?:\/(?:Users|home|private)\/[\w.%@+~/-]+|\b[A-Za-z]:\\(?:[^\\\s,;<>"']+\\)*[^\\\s,;<>"']+)/g,o=/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/gi,a=RegExp("(?<![A-Za-z0-9_-])(?:[A-Za-z0-9_]{40,}|(?:sk|ghp|gho|ghs|github_pat|xox[abpr])[-_][A-Za-z0-9_-]{20,})(?![A-Za-z0-9_-])","g"),s=/\b(?:OP|MK|TC|UX)\b/g,l=/\bmsb(\d+)\b/gi,c=/(?:\u{1F451}|🪑|🅞|🅜|🅣|🅤|🅢|🅕)\uFE0F?/gu,u={OP:"COO",MK:"CMO",TC:"CTO",UX:"CXO"};function d(e){let t,n=e;do t=n,n=n.replace(r,(e,t)=>"run-".concat(t.slice(0,6))).replace(i,"").replace(o,"").replace(c,"").replace(a,"").replace(s,e=>u[e]).replace(l,(e,t)=>"remote-".concat(t));while(n!==t&&function(e){return[r,i,o,a,s,c,l].flatMap(t=>[...e.matchAll(t)].map(e=>e[0]))}(n).length>0);return n}},93337:(e,t,n)=>{function r(e){let t=e.trim();if(/^\/harness(?:[ \t]|$)/.test(t)){let e=t.slice(8).trim();return/[\r\n]/.test(e)?null:e}return/^하니스로\s/.test(t)?e:null}function i(e){switch(e){case"accepted":return"접수됨";case"flow-settled":return"골 저작 끝";case"launch-started":return"런 도는 중";case"launch-settled":return"런 끝";case"launch-failed":return"발사 실패";default:return"알 수 없는 단계"}}function o(e){return"launch-settled"===e||"launch-failed"===e}n.d(t,{SK:()=>i,dz:()=>r,rr:()=>o})},95734:(e,t,n)=>{n.d(t,{Gm:()=>c,IH:()=>o,PM:()=>s,ZJ:()=>a,cE:()=>i,dy:()=>l,sg:()=>u});let r=/https?:\/\/[^\s<>"']+/g;function i(e){return e.slice(0,40)}async function o(e,t){let n=function(e){var t;let n=null!=(t=e.match(r))?t:[];return 0===n.length?[{text:e}]:n.map(e=>({url:e}))}(t),i=await e.fetchJson("/v1/intake-ledger/items",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({items:n,source:"pwa"})});return{ids:i.ids,added:i.added,merged:i.merged}}async function a(e,t){return{acceptanceId:(await e.fetchJson("/v1/harness/ask",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({text:t})})).acceptanceId}}function s(e,t){return e.fetchJson("/v1/harness/ask-status?acceptanceId=".concat(encodeURIComponent(t)))}function l(e,t){return e.fetchJson("/v1/harness/run-events?runId=".concat(encodeURIComponent(t)))}function c(e,t){return e.fetchJson("/v1/intake-ledger/items/".concat(encodeURIComponent(t)))}function u(e,t,n){return e.fetchJson("/v1/intake/route",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({text:t,consent:"route",source:"pwa",...(null==n?void 0:n.classify)!==void 0?{classify:n.classify}:{}})})}}}]);