elanous 0.2.6 → 0.2.8

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 (517) hide show
  1. package/.env.example +10 -7
  2. package/README.md +4 -0
  3. package/apps/pwa/out/404/index.html +1 -1
  4. package/apps/pwa/out/404.html +1 -1
  5. package/apps/pwa/out/_next/static/chunks/1105-c473ed46272fba79.js +1 -0
  6. package/apps/pwa/out/_next/static/chunks/1201-09613bce624467c0.js +1 -0
  7. package/apps/pwa/out/_next/static/chunks/1377-1efeffbbac0963ff.js +1 -0
  8. package/apps/pwa/out/_next/static/chunks/1470.98a6ab61ccb4131c.js +1 -0
  9. package/apps/pwa/out/_next/static/chunks/216-5acd01cbde4acda7.js +1 -0
  10. package/apps/pwa/out/_next/static/chunks/2330-c2f07246c8788af1.js +1 -0
  11. package/apps/pwa/out/_next/static/chunks/{3995-bee512a7063036ce.js → 2375-cb6debea56cce4fb.js} +1 -1
  12. package/apps/pwa/out/_next/static/chunks/2415.ed6428ff334c7ce2.js +1 -0
  13. package/apps/pwa/out/_next/static/chunks/2929-617f1e66a55be184.js +1 -0
  14. package/apps/pwa/out/_next/static/chunks/2977-e38442e86289f1d3.js +1 -0
  15. package/apps/pwa/out/_next/static/chunks/2982-2a2df543be3d2e5a.js +25 -0
  16. package/apps/pwa/out/_next/static/chunks/{8d0d9faf-97887ff99713b84e.js → 2ea96958-e8c7e112de50b067.js} +1 -1
  17. package/apps/pwa/out/_next/static/chunks/{5329.8b7e4bca684b6eec.js → 3403.4bc97b4066945a94.js} +2 -2
  18. package/apps/pwa/out/_next/static/chunks/3441-a1dd4acfeda14488.js +1 -0
  19. package/apps/pwa/out/_next/static/chunks/371-4ad6af55dad02ced.js +1 -0
  20. package/apps/pwa/out/_next/static/chunks/4114-3e63117452378807.js +1 -0
  21. package/apps/pwa/out/_next/static/chunks/{7633.0654fe6ea259c1ee.js → 4323.c5dfb6f503304775.js} +1 -1
  22. package/apps/pwa/out/_next/static/chunks/4836-3084c58c1725a40b.js +1 -0
  23. package/apps/pwa/out/_next/static/chunks/{2984-977cfa339fcd65a5.js → 5080-1613752891fcadb4.js} +3 -3
  24. package/apps/pwa/out/_next/static/chunks/5609-012bb3557211f07e.js +1 -0
  25. package/apps/pwa/out/_next/static/chunks/{763-7d0e1913b5074e98.js → 5791-bb82743fa6299562.js} +1 -1
  26. package/apps/pwa/out/_next/static/chunks/{4240-7153881b0b377306.js → 6062-73e68343a9814f6a.js} +1 -1
  27. package/apps/pwa/out/_next/static/chunks/6090-85a3f05f954e5697.js +1 -0
  28. package/apps/pwa/out/_next/static/chunks/6284-69db415193d5f8bd.js +1 -0
  29. package/apps/pwa/out/_next/static/chunks/6320-baac91d68843a9a6.js +1 -0
  30. package/apps/pwa/out/_next/static/chunks/6416-505ba707cacafbba.js +1 -0
  31. package/apps/pwa/out/_next/static/chunks/6725-68ab7cc0b1faf00d.js +1 -0
  32. package/apps/pwa/out/_next/static/chunks/6998-a654fe5c58271600.js +1 -0
  33. package/apps/pwa/out/_next/static/chunks/7032-f4ef698518fba61c.js +1 -0
  34. package/apps/pwa/out/_next/static/chunks/7647.2fcd30d894d5ee30.js +1 -0
  35. package/apps/pwa/out/_next/static/chunks/7673-2eda1507d38dadb8.js +1 -0
  36. package/apps/pwa/out/_next/static/chunks/7990-e12efba616f46e03.js +1 -0
  37. package/apps/pwa/out/_next/static/chunks/{91ff6dda-3b33d42d20657429.js → 8046cadf-211ca3c0e00f2b72.js} +1 -1
  38. package/apps/pwa/out/_next/static/chunks/8067-d976b441a104ab74.js +1 -0
  39. package/apps/pwa/out/_next/static/chunks/8142-744998d65d7bb17e.js +1 -0
  40. package/apps/pwa/out/_next/static/chunks/8519-5632377cce994f86.js +1 -0
  41. package/apps/pwa/out/_next/static/chunks/8619-4365e03a2862830f.js +1 -0
  42. package/apps/pwa/out/_next/static/chunks/8894-7317998f6cb97d8c.js +1 -0
  43. package/apps/pwa/out/_next/static/chunks/920-f7dceb78f1c585ef.js +1 -0
  44. package/apps/pwa/out/_next/static/chunks/9454-a3e0953307216c58.js +1 -0
  45. package/apps/pwa/out/_next/static/chunks/9651-3cd291a6fa1370d2.js +1 -0
  46. package/apps/pwa/out/_next/static/chunks/9740-8f5ff96c522b5f55.js +1 -0
  47. package/apps/pwa/out/_next/static/chunks/ae787e4c-f2998de7f1ba72a4.js +1 -0
  48. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-859cea1570b6227a.js +1 -0
  49. package/apps/pwa/out/_next/static/chunks/app/approvals/page-9aa47b0bc6d570ff.js +1 -0
  50. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-f4d2ecbbae6088d6.js +1 -0
  51. package/apps/pwa/out/_next/static/chunks/app/board/page-2053e49930c82748.js +1 -0
  52. package/apps/pwa/out/_next/static/chunks/app/botlab/page-d4b6df905f185055.js +1 -0
  53. package/apps/pwa/out/_next/static/chunks/app/bots/page-a70ba27c33003dd0.js +1 -0
  54. package/apps/pwa/out/_next/static/chunks/app/chat/page-186fc6952f027acc.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/app/consult/page-18166f885d831d3e.js +1 -0
  56. package/apps/pwa/out/_next/static/chunks/app/control/page-1c9d6cfe68b121c2.js +1 -0
  57. package/apps/pwa/out/_next/static/chunks/app/design-check/page-cbbe03c0da7b081a.js +1 -0
  58. package/apps/pwa/out/_next/static/chunks/app/editor/page-c108ff1fdb665c97.js +1 -0
  59. package/apps/pwa/out/_next/static/chunks/app/exec/page-147a328753d983e2.js +1 -0
  60. package/apps/pwa/out/_next/static/chunks/app/field/page-799395a9df7d95aa.js +1 -0
  61. package/apps/pwa/out/_next/static/chunks/app/healthz/route-859cea1570b6227a.js +1 -0
  62. package/apps/pwa/out/_next/static/chunks/app/intake/page-6a8158b71d1fe9d7.js +1 -0
  63. package/apps/pwa/out/_next/static/chunks/app/layout-9567560270857531.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/app/live/page-e7ed3d010153d818.js +1 -0
  65. package/apps/pwa/out/_next/static/chunks/app/market/page-c0c0d19d51342d3e.js +1 -0
  66. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-2e002ad8faa43291.js +1 -0
  67. package/apps/pwa/out/_next/static/chunks/app/morning/page-b672e02e4bec8deb.js +1 -0
  68. package/apps/pwa/out/_next/static/chunks/app/not-found-1ba4a5d857276334.js +1 -0
  69. package/apps/pwa/out/_next/static/chunks/app/observatory/page-9db2226f38c542fb.js +1 -0
  70. package/apps/pwa/out/_next/static/chunks/app/page-70ee65f5f7a151dc.js +1 -0
  71. package/apps/pwa/out/_next/static/chunks/app/reflection/page-0bb8e43203efb23b.js +1 -0
  72. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-092e1bcf27d751cc.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/app/sessions/page-eb52580c4b75b905.js +1 -0
  74. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-7464c1987dd76e6d.js +1 -0
  75. package/apps/pwa/out/_next/static/chunks/app/settings/page-e573437b0a1c728f.js +1 -0
  76. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-294300625e49e4d3.js +1 -0
  77. package/apps/pwa/out/_next/static/chunks/app/setup/layout-859cea1570b6227a.js +1 -0
  78. package/apps/pwa/out/_next/static/chunks/app/setup/page-085847b088675978.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/app/share/page-9fe9d38c36999eb4.js +1 -0
  80. package/apps/pwa/out/_next/static/chunks/app/showroom/page-d8ab4d1489223459.js +1 -0
  81. package/apps/pwa/out/_next/static/chunks/app/tasks/page-6141f67f531d8b6a.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/app/term/page-295a02b1026b8255.js +1 -0
  83. package/apps/pwa/out/_next/static/chunks/app/trace/page-1eb9a0e1e054209d.js +1 -0
  84. package/apps/pwa/out/_next/static/chunks/app/vault/page-82efa177a30f3741.js +1 -0
  85. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-d0be51cec4f62606.js +1 -0
  86. package/apps/pwa/out/_next/static/chunks/app/workflows/page-2e367075ffdbc062.js +1 -0
  87. package/apps/pwa/out/_next/static/chunks/app/workspace/page-647ed2b66c1d49f1.js +1 -0
  88. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-ba058c56e38f2792.js +1 -0
  89. package/apps/pwa/out/_next/static/chunks/framework-ea806bb57f2b8923.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/main-8d2302399c2c8f87.js +1 -0
  91. package/apps/pwa/out/_next/static/chunks/main-app-6870f30ea99f8346.js +1 -0
  92. package/apps/pwa/out/_next/static/chunks/pages/_app-b10928c60f0b8488.js +1 -0
  93. package/apps/pwa/out/_next/static/chunks/pages/_error-689039227d443fab.js +1 -0
  94. package/apps/pwa/out/_next/static/chunks/{webpack-37b8bf78a3c6eec5.js → webpack-e5bea36f183b25e6.js} +1 -1
  95. package/apps/pwa/out/_next/static/css/5ef72a618a8994f3.css +1 -0
  96. package/apps/pwa/out/_next/static/lywc8m_HDzH9MKSDQhyEj/_buildManifest.js +1 -0
  97. package/apps/pwa/out/approvals/index.html +1 -1
  98. package/apps/pwa/out/approvals/index.txt +22 -22
  99. package/apps/pwa/out/autopilot/index.html +1 -1
  100. package/apps/pwa/out/autopilot/index.txt +22 -22
  101. package/apps/pwa/out/board/index.html +1 -1
  102. package/apps/pwa/out/board/index.txt +22 -22
  103. package/apps/pwa/out/botlab/index.html +1 -1
  104. package/apps/pwa/out/botlab/index.txt +21 -21
  105. package/apps/pwa/out/bots/index.html +1 -1
  106. package/apps/pwa/out/bots/index.txt +21 -21
  107. package/apps/pwa/out/chat/index.html +1 -1
  108. package/apps/pwa/out/chat/index.txt +21 -21
  109. package/apps/pwa/out/consult/index.html +1 -0
  110. package/apps/pwa/out/consult/index.txt +32 -0
  111. package/apps/pwa/out/control/index.html +1 -1
  112. package/apps/pwa/out/control/index.txt +22 -22
  113. package/apps/pwa/out/design-check/index.html +1 -1
  114. package/apps/pwa/out/design-check/index.txt +22 -22
  115. package/apps/pwa/out/editor/index.html +1 -1
  116. package/apps/pwa/out/editor/index.txt +22 -22
  117. package/apps/pwa/out/exec/index.html +1 -0
  118. package/apps/pwa/out/exec/index.txt +32 -0
  119. package/apps/pwa/out/field/index.html +1 -0
  120. package/apps/pwa/out/field/index.txt +32 -0
  121. package/apps/pwa/out/healthz +1 -1
  122. package/apps/pwa/out/index.html +1 -1
  123. package/apps/pwa/out/index.txt +21 -21
  124. package/apps/pwa/out/intake/index.html +1 -1
  125. package/apps/pwa/out/intake/index.txt +22 -22
  126. package/apps/pwa/out/live/index.html +1 -1
  127. package/apps/pwa/out/live/index.txt +22 -22
  128. package/apps/pwa/out/market/index.html +1 -1
  129. package/apps/pwa/out/market/index.txt +21 -21
  130. package/apps/pwa/out/missions/placeholder/index.html +1 -1
  131. package/apps/pwa/out/missions/placeholder/index.txt +21 -21
  132. package/apps/pwa/out/morning/index.html +1 -1
  133. package/apps/pwa/out/morning/index.txt +22 -22
  134. package/apps/pwa/out/observatory/index.html +1 -1
  135. package/apps/pwa/out/observatory/index.txt +22 -22
  136. package/apps/pwa/out/reflection/index.html +1 -1
  137. package/apps/pwa/out/reflection/index.txt +22 -22
  138. package/apps/pwa/out/scheduler/index.html +1 -1
  139. package/apps/pwa/out/scheduler/index.txt +22 -22
  140. package/apps/pwa/out/sessions/index.html +1 -1
  141. package/apps/pwa/out/sessions/index.txt +21 -21
  142. package/apps/pwa/out/settings/devices/index.html +1 -1
  143. package/apps/pwa/out/settings/devices/index.txt +22 -22
  144. package/apps/pwa/out/settings/index.html +1 -1
  145. package/apps/pwa/out/settings/index.txt +22 -22
  146. package/apps/pwa/out/setup/done/index.html +1 -1
  147. package/apps/pwa/out/setup/done/index.txt +22 -22
  148. package/apps/pwa/out/setup/index.html +1 -1
  149. package/apps/pwa/out/setup/index.txt +22 -22
  150. package/apps/pwa/out/share/index.html +1 -1
  151. package/apps/pwa/out/share/index.txt +22 -22
  152. package/apps/pwa/out/showroom/index.html +1 -1
  153. package/apps/pwa/out/showroom/index.txt +21 -21
  154. package/apps/pwa/out/tasks/index.html +1 -1
  155. package/apps/pwa/out/tasks/index.txt +22 -22
  156. package/apps/pwa/out/term/index.html +1 -1
  157. package/apps/pwa/out/term/index.txt +22 -22
  158. package/apps/pwa/out/trace/index.html +1 -1
  159. package/apps/pwa/out/trace/index.txt +22 -22
  160. package/apps/pwa/out/vault/index.html +1 -1
  161. package/apps/pwa/out/vault/index.txt +22 -22
  162. package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
  163. package/apps/pwa/out/workflows/chat-ui/index.txt +22 -22
  164. package/apps/pwa/out/workflows/index.html +1 -1
  165. package/apps/pwa/out/workflows/index.txt +22 -22
  166. package/apps/pwa/out/workspace/index.html +1 -1
  167. package/apps/pwa/out/workspace/index.txt +22 -22
  168. package/apps/pwa/out/worktrees/index.html +1 -1
  169. package/apps/pwa/out/worktrees/index.txt +22 -22
  170. package/bin/elanous.cjs +107 -0
  171. package/graphs/field/field-feed.yaml +24 -0
  172. package/graphs/field/recipes.yaml +12 -0
  173. package/graphs/landing/landing-heal.yaml +3 -1
  174. package/graphs/landing/recipes.yaml +3 -0
  175. package/graphs/release/recipes.yaml +10 -0
  176. package/graphs/release/release-loop.yaml +10 -3
  177. package/graphs/test-diet/recipes.yaml +9 -0
  178. package/graphs/test-diet/test-diet.yaml +22 -0
  179. package/package.json +6 -5
  180. package/persona-presets/_index.yaml +10 -0
  181. package/persona-presets/_schema.json +146 -0
  182. package/persona-presets/dana.yaml +26 -0
  183. package/persona-presets/haru.yaml +27 -0
  184. package/persona-presets/kai.yaml +27 -0
  185. package/persona-presets/leo.yaml +27 -0
  186. package/persona-presets/mira.yaml +30 -0
  187. package/persona-presets/nari.yaml +27 -0
  188. package/persona-presets/sora.yaml +27 -0
  189. package/persona-presets/yuna.yaml +27 -0
  190. package/plugins/card-followup/README.md +13 -4
  191. package/plugins/card-followup/graphs/card-followup.yaml +3 -1
  192. package/plugins/card-followup/graphs/recipes.yaml +5 -1
  193. package/plugins/card-followup/graphs/run-step.ts +122 -18
  194. package/plugins/card-followup/graphs/sales-strategy.ts +173 -0
  195. package/plugins/card-followup/plugin.json +1 -1
  196. package/plugins/doc-draft/README.md +13 -0
  197. package/plugins/doc-draft/examples/brief-sample.json +8 -0
  198. package/plugins/doc-draft/graphs/doc-draft.yaml +14 -0
  199. package/plugins/doc-draft/graphs/recipes.yaml +9 -0
  200. package/plugins/doc-draft/graphs/run-step.ts +113 -0
  201. package/plugins/doc-draft/plugin.json +24 -0
  202. package/plugins/geo-check/README.md +3 -1
  203. package/plugins/geo-check/graphs/run-step.ts +58 -13
  204. package/plugins/geo-check/plugin.json +1 -1
  205. package/plugins/job-coach/.codex-plugin/plugin.json +1 -1
  206. package/plugins/job-coach/README.md +1 -1
  207. package/plugins/job-coach/graphs/run-step.ts +2 -2
  208. package/plugins/job-coach/plugin.json +1 -1
  209. package/plugins/job-coach/plugin.ts +1 -1
  210. package/scripts/affinity/endcard.sh +3 -2
  211. package/scripts/affinity/reframe.sh +3 -1
  212. package/scripts/ci-public-export-leak-gate.ts +48 -0
  213. package/scripts/codex-quota-alert.ts +122 -258
  214. package/scripts/coord-tracks.json +4 -4
  215. package/scripts/field-feed/deliver-node.ts +57 -0
  216. package/scripts/field-feed/feed-node.ts +67 -0
  217. package/scripts/field-feed/lib.ts +164 -0
  218. package/scripts/field-feed/reel-node.ts +24 -0
  219. package/scripts/field-feed/start.ts +62 -0
  220. package/scripts/fixtures/vflow-sample.ndjson +6 -0
  221. package/scripts/install.sh +109 -21
  222. package/scripts/landing-heal/clean-checkout.ts +114 -0
  223. package/scripts/landing-heal/run-mission.ts +38 -3
  224. package/scripts/lib/pwa-scenarios/scenarios.ts +2 -1
  225. package/scripts/persona-presets/lint.ts +79 -0
  226. package/scripts/public-export.ts +8 -4
  227. package/scripts/release-loop/baseline-from-logs.ts +92 -0
  228. package/scripts/release-loop/checklist-gate-node.ts +2 -2
  229. package/scripts/release-loop/env-known-failures.ts +31 -0
  230. package/scripts/release-loop/gate-node.ts +108 -22
  231. package/scripts/release-loop/known-issues-node.ts +159 -0
  232. package/scripts/release-loop/npm-publish-node.ts +124 -0
  233. package/scripts/release-loop/ops-upgrade-node.ts +95 -0
  234. package/scripts/release-loop/publish-node.ts +23 -1
  235. package/scripts/release-loop/release-readiness.ts +58 -0
  236. package/scripts/release-loop/shard-plan.ts +17 -0
  237. package/scripts/release-loop/unattended-release.ts +93 -0
  238. package/scripts/storyboard/storyboard.ts +167 -0
  239. package/scripts/test-diet/lib.ts +88 -0
  240. package/scripts/test-diet/node.ts +102 -0
  241. package/scripts/ux/measure-first-text.ts +102 -0
  242. package/scripts/vflow-collect.ts +20 -7
  243. package/scripts/vflow-search.ts +73 -0
  244. package/scripts/video-free-line-test-walker.ts +36 -0
  245. package/scripts/video-pipeline.ts +2 -2
  246. package/skills/explainer-video/SKILL.md +12 -9
  247. package/skills/explainer-video/engine/build.mjs +1 -1
  248. package/skills/explainer-video/engine/reel.mjs +138 -31
  249. package/skills/explainer-video/engine/reel.sh +2 -1
  250. package/skills/explainer-video/examples/elanous-0.2.5/script.json +1 -1
  251. package/skills/grill-me/SKILL.md +1 -1
  252. package/skills/omni-digest/docs/diagrams/noncode-terminal-promotion-path-2026-08-13.mmd +1 -1
  253. package/src/a2a/server.ts +2 -0
  254. package/src/acp/auth-methods.ts +30 -0
  255. package/src/acp/elanous-aware-peers.ts +30 -0
  256. package/src/acp/server.ts +96 -20
  257. package/src/agent/monad-agent-turn.ts +25 -6
  258. package/src/agent/shared-app-tools.ts +5 -3
  259. package/src/agent-substrate/review-intent.ts +6 -2
  260. package/src/agent-substrate/shard-boundary-intent.ts +70 -0
  261. package/src/auth/github-app-token.ts +4 -1
  262. package/src/autopilot/track-agent-shadow.ts +151 -0
  263. package/src/autopilot/track-agent.ts +23 -3
  264. package/src/boot/acp-server-help.ts +16 -0
  265. package/src/boot/daemon-prompt-turn.ts +31 -10
  266. package/src/boot/daemon-tools/index.ts +7 -1
  267. package/src/budget/codex-credit-pace.ts +84 -0
  268. package/src/budget/codex-credit-plan.ts +154 -0
  269. package/src/budget/codex-reset-credit-state.ts +2 -0
  270. package/src/channel-import/detect.ts +191 -0
  271. package/src/channel-import/run.ts +111 -0
  272. package/src/chat/chat-cli.ts +4 -1
  273. package/src/chat/short-question.ts +40 -0
  274. package/src/cli/agent-cli.ts +24 -15
  275. package/src/cli/ask-bare.ts +42 -0
  276. package/src/cli/cli-user-error.ts +25 -0
  277. package/src/cli/codex-credit-plan-view.ts +25 -0
  278. package/src/cli/config-test-sync.ts +4 -0
  279. package/src/cli/decisions-cli.ts +13 -3
  280. package/src/cli/dependence-gauge.ts +237 -0
  281. package/src/cli/doctor-bundle.ts +128 -0
  282. package/src/cli/doctor-cli.ts +41 -1
  283. package/src/cli/doctor-local-llm.ts +95 -0
  284. package/src/cli/doctor-modes.ts +48 -0
  285. package/src/cli/import-cli.ts +60 -0
  286. package/src/cli/intake-cli.ts +12 -2
  287. package/src/cli/intake-source-cli.ts +58 -0
  288. package/src/cli/machine-cli.ts +23 -0
  289. package/src/cli/mcp-login.ts +13 -4
  290. package/src/cli/msg-cli.ts +137 -0
  291. package/src/cli/persona-cli.ts +116 -0
  292. package/src/cli/plugin-cli.ts +25 -0
  293. package/src/cli/pr-cli.ts +36 -0
  294. package/src/cli/provider-cli.ts +5 -0
  295. package/src/cli/release-cli.ts +50 -8
  296. package/src/cli/release-run-if-ready.ts +48 -0
  297. package/src/cli/setup-cli.ts +27 -6
  298. package/src/cli/setup-recommend.ts +8 -0
  299. package/src/cli/skills-cli.ts +173 -0
  300. package/src/cli/start-cli.ts +13 -4
  301. package/src/cli/usage-cli.ts +11 -1
  302. package/src/codex/setup.ts +37 -16
  303. package/src/dashboard/index.ts +18 -2
  304. package/src/dashboard/slash-runtime/dashboard-handlers.ts +2 -2
  305. package/src/dashboard/slash-runtime/help-from-registry.ts +4 -2
  306. package/src/decisions/decision-cards.ts +291 -0
  307. package/src/decisions/decision-ledger.ts +5 -2
  308. package/src/decisions/discord-decision-cards.ts +133 -0
  309. package/src/decisions/telegram-decision-cards.ts +100 -0
  310. package/src/directives/version-at.ts +77 -0
  311. package/src/discord.ts +73 -6
  312. package/src/domains/core-tools.ts +37 -14
  313. package/src/domains/outbound-alert.ts +94 -12
  314. package/src/domains/repeated-failure.ts +1 -1
  315. package/src/error-report/report.ts +200 -0
  316. package/src/exec-requests/planner.ts +146 -0
  317. package/src/exec-requests/runner.ts +378 -0
  318. package/src/exec-requests/store.ts +78 -0
  319. package/src/field/field-feed-auto.ts +48 -0
  320. package/src/field/field-media.ts +8 -3
  321. package/src/field/field-reel.ts +203 -0
  322. package/src/grok/credential.ts +7 -5
  323. package/src/harness/aside-run-status.ts +33 -0
  324. package/src/harness/browser-verify.ts +48 -17
  325. package/src/harness/harness-cli-command.ts +25 -3
  326. package/src/harness/image-load-state.ts +21 -0
  327. package/src/harness/process-garbage.ts +45 -0
  328. package/src/hooks/error-report.ts +210 -0
  329. package/src/hooks/receiver.ts +41 -1
  330. package/src/import/apply.ts +128 -0
  331. package/src/import/plan.ts +197 -0
  332. package/src/index.ts +168 -21
  333. package/src/input-core/text-entry.ts +13 -5
  334. package/src/instance/leader.ts +13 -1
  335. package/src/intake-plane/collect-github.ts +5 -3
  336. package/src/intake-plane/collect-telegram-saved.ts +15 -3
  337. package/src/intake-plane/discord-seat-work.ts +56 -0
  338. package/src/intake-plane/intake-sources.ts +202 -0
  339. package/src/intake-plane/items.ts +28 -12
  340. package/src/intake-plane/seat-answer.ts +96 -0
  341. package/src/intake-plane/seat-doc-route.ts +221 -0
  342. package/src/intake-plane/submit-intake-work.ts +9 -1
  343. package/src/intake-plane/telegram-seat-work.ts +72 -0
  344. package/src/llm/model-defaults.ts +24 -1
  345. package/src/llm.ts +5 -4
  346. package/src/machines/machine-ledger.ts +127 -0
  347. package/src/market/pack-internal-refs.ts +28 -0
  348. package/src/market/publish.ts +31 -4
  349. package/src/maturity/feature-maturity.ts +65 -0
  350. package/src/model-tier/turn-tier.ts +24 -0
  351. package/src/msg/msg-store.ts +149 -0
  352. package/src/native-tool-catalog.ts +2 -1
  353. package/src/nexus/api/chat-fast-path-config.ts +28 -0
  354. package/src/nexus/api/consult-requests.ts +128 -0
  355. package/src/nexus/api/discord-trigger-bot.ts +3 -0
  356. package/src/nexus/api/error-reports.ts +108 -0
  357. package/src/nexus/api/exec-requests.ts +51 -0
  358. package/src/nexus/api/field-uploads.ts +40 -3
  359. package/src/nexus/api/graph-approvals-feed.ts +140 -0
  360. package/src/nexus/api/graph-approvals.ts +71 -4
  361. package/src/nexus/api/http-server.ts +82 -8
  362. package/src/nexus/api/outbound-report.ts +7 -0
  363. package/src/nexus/api/running-runs-background.ts +68 -0
  364. package/src/nexus/api/running-runs-child.ts +6 -0
  365. package/src/nexus/api/seat-requests.ts +254 -0
  366. package/src/nexus/api/share-captures.ts +91 -0
  367. package/src/nexus/api/skill-problems.ts +56 -0
  368. package/src/nexus/api/terminals.ts +24 -8
  369. package/src/nexus/api/trace-run-scan.ts +37 -0
  370. package/src/nexus/api/trace.ts +19 -3
  371. package/src/nexus/index.ts +28 -1
  372. package/src/nexus/setup-status.ts +11 -7
  373. package/src/notify/llm-budget-alert.ts +16 -10
  374. package/src/oauth/browser-availability.ts +14 -0
  375. package/src/oauth/codex-account-rotation.ts +26 -4
  376. package/src/oauth/codex-account-store.ts +20 -2
  377. package/src/oauth/codex-browser-login.ts +173 -0
  378. package/src/oauth/codex-quota-policy.ts +16 -0
  379. package/src/oauth/codex.ts +4 -1
  380. package/src/oauth/fallback-chain.ts +5 -5
  381. package/src/oauth/store.ts +42 -5
  382. package/src/onboarding/continue-here.ts +34 -0
  383. package/src/onboarding/entry-hints.ts +8 -0
  384. package/src/onboarding/full-screen-io.ts +35 -3
  385. package/src/onboarding/help/skills.md +1 -1
  386. package/src/onboarding/non-interactive.ts +1 -0
  387. package/src/onboarding/subscription-hint.ts +27 -0
  388. package/src/onboarding/web-first.ts +90 -0
  389. package/src/onboarding.ts +287 -26
  390. package/src/persona/presets.ts +105 -0
  391. package/src/plugins/maker/node-install.ts +92 -0
  392. package/src/plugins/maker/node-maker.ts +139 -0
  393. package/src/plugins/maker/plugin-maker.ts +19 -7
  394. package/src/policy/llm-policy.ts +268 -0
  395. package/src/prompt-library/session-guidance.ts +7 -1
  396. package/src/prompt-library/universal-preamble.ts +2 -2
  397. package/src/relay/relay-cli.ts +20 -0
  398. package/src/relay/relay-server.ts +220 -0
  399. package/src/release-loop/checklist.ts +37 -13
  400. package/src/self-dev/decompose.ts +1 -0
  401. package/src/self-dev/dev-pipeline.ts +6 -3
  402. package/src/self-dev/orchestrate.ts +18 -11
  403. package/src/self-dev/run-record-mirror.ts +44 -0
  404. package/src/self-dev/run-store.ts +12 -3
  405. package/src/self-implement/harness-policy-gates.ts +4 -1
  406. package/src/self-implement/report-origin.ts +12 -1
  407. package/src/session/chat.ts +17 -5
  408. package/src/shell-env-bootstrap.ts +44 -7
  409. package/src/skills/connect-claude-plugin.ts +142 -0
  410. package/src/skills/connect.ts +70 -0
  411. package/src/skills/index.ts +29 -1
  412. package/src/skills/repair.ts +124 -0
  413. package/src/skills/runner.ts +11 -2
  414. package/src/skills/shared-agent-skill-roots.ts +25 -0
  415. package/src/skills/trigger-extract.ts +1 -1
  416. package/src/steward/failure-streak.ts +78 -0
  417. package/src/steward/steward-cards.ts +24 -0
  418. package/src/steward/triage-budget.ts +127 -0
  419. package/src/steward/triage-plan.ts +75 -0
  420. package/src/steward/triage.ts +244 -42
  421. package/src/task-cards/card-store.ts +1 -1
  422. package/src/task-orchestrator/surfaces/pod-command-job.ts +16 -8
  423. package/src/task-orchestrator/surfaces/pod-ledger-collect.ts +11 -5
  424. package/src/task-orchestrator/surfaces/pod-ledger-events.ts +68 -0
  425. package/src/task-orchestrator/surfaces/self-implement-pod.ts +78 -4
  426. package/src/telegram-commands.ts +13 -0
  427. package/src/telegram.ts +72 -2
  428. package/src/tool-runtime/elanous-skills-list-runtime.ts +3 -3
  429. package/src/tool-runtime/self-cognition-runtimes.ts +160 -2
  430. package/src/user-config.ts +189 -15
  431. package/src/version/packed-revision.json +1 -1
  432. package/src/video-pipeline/recipes/character.ts +42 -5
  433. package/src/video-pipeline/recipes/ffmpeg.ts +1 -1
  434. package/src/video-pipeline/recipes/free-line.ts +16 -3
  435. package/src/video-pipeline/recipes/remote.ts +7 -1
  436. package/src/video-pipeline/vflow-reference.ts +109 -0
  437. package/apps/pwa/out/_next/static/chunks/1169-696263ac7af8c4d4.js +0 -1
  438. package/apps/pwa/out/_next/static/chunks/1883.c91a2648af4842fd.js +0 -1
  439. package/apps/pwa/out/_next/static/chunks/1947-9d64872eeb9cfdec.js +0 -1
  440. package/apps/pwa/out/_next/static/chunks/2808-dc06482994b40f70.js +0 -1
  441. package/apps/pwa/out/_next/static/chunks/3165-95515ca5f299a120.js +0 -1
  442. package/apps/pwa/out/_next/static/chunks/3190-e9282753e7ebde85.js +0 -1
  443. package/apps/pwa/out/_next/static/chunks/4259-99614149577e77cb.js +0 -1
  444. package/apps/pwa/out/_next/static/chunks/4283-329eabeaf233e6cd.js +0 -1
  445. package/apps/pwa/out/_next/static/chunks/4328-cb5058b1acc2de5e.js +0 -25
  446. package/apps/pwa/out/_next/static/chunks/4801-ecee6ef62b349b18.js +0 -1
  447. package/apps/pwa/out/_next/static/chunks/5110-8058791dd25a2e14.js +0 -1
  448. package/apps/pwa/out/_next/static/chunks/5330-c41e9670f594c38f.js +0 -1
  449. package/apps/pwa/out/_next/static/chunks/5423-e95fd125d1794349.js +0 -1
  450. package/apps/pwa/out/_next/static/chunks/5478-b5eae07dc79ea619.js +0 -1
  451. package/apps/pwa/out/_next/static/chunks/5787-96ee6642b9a661e5.js +0 -1
  452. package/apps/pwa/out/_next/static/chunks/6448-79d72368589f98bc.js +0 -1
  453. package/apps/pwa/out/_next/static/chunks/6522-9866c002b5531836.js +0 -1
  454. package/apps/pwa/out/_next/static/chunks/6729-b4a558b7aa891e0c.js +0 -1
  455. package/apps/pwa/out/_next/static/chunks/6969-cb03f9410b7d2e03.js +0 -1
  456. package/apps/pwa/out/_next/static/chunks/7007-3b9861091bb8dd21.js +0 -1
  457. package/apps/pwa/out/_next/static/chunks/7930-8dc7e20fc6fc19ca.js +0 -1
  458. package/apps/pwa/out/_next/static/chunks/8071-187edbc22a86741f.js +0 -1
  459. package/apps/pwa/out/_next/static/chunks/8198-d4101ad70cb9a579.js +0 -1
  460. package/apps/pwa/out/_next/static/chunks/8250.4a2c5553a07cdf47.js +0 -1
  461. package/apps/pwa/out/_next/static/chunks/8293-123b91e7b0330dc0.js +0 -1
  462. package/apps/pwa/out/_next/static/chunks/8296-d6d5d87dfa911d41.js +0 -1
  463. package/apps/pwa/out/_next/static/chunks/8305-603963c33ee8eec3.js +0 -1
  464. package/apps/pwa/out/_next/static/chunks/8612-4a0066f20951b8fd.js +0 -1
  465. package/apps/pwa/out/_next/static/chunks/9181-cf4e1b61c4783f92.js +0 -1
  466. package/apps/pwa/out/_next/static/chunks/9262-26c2ecbd5a67e4a2.js +0 -1
  467. package/apps/pwa/out/_next/static/chunks/9328-45abdebce4fbecb7.js +0 -1
  468. package/apps/pwa/out/_next/static/chunks/9355-dbc67205adf8745f.js +0 -1
  469. package/apps/pwa/out/_next/static/chunks/9763.255b90dd69875689.js +0 -1
  470. package/apps/pwa/out/_next/static/chunks/9933-66d31ec25c0231af.js +0 -1
  471. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-bd06fb55f4da0381.js +0 -1
  472. package/apps/pwa/out/_next/static/chunks/app/approvals/page-4e586142da455a25.js +0 -1
  473. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-889ad5cddcf45b0d.js +0 -1
  474. package/apps/pwa/out/_next/static/chunks/app/board/page-47ba401d56572c27.js +0 -1
  475. package/apps/pwa/out/_next/static/chunks/app/botlab/page-0b54f9c83458e038.js +0 -1
  476. package/apps/pwa/out/_next/static/chunks/app/bots/page-4fcc296ef6c8ed90.js +0 -1
  477. package/apps/pwa/out/_next/static/chunks/app/chat/page-fe9fda494a87f4e5.js +0 -1
  478. package/apps/pwa/out/_next/static/chunks/app/control/page-f9642e25ce129590.js +0 -1
  479. package/apps/pwa/out/_next/static/chunks/app/design-check/page-e1063e8ba5f3e2e7.js +0 -1
  480. package/apps/pwa/out/_next/static/chunks/app/editor/page-9d0df30027d8aa9d.js +0 -1
  481. package/apps/pwa/out/_next/static/chunks/app/healthz/route-bd06fb55f4da0381.js +0 -1
  482. package/apps/pwa/out/_next/static/chunks/app/intake/page-d97adf2c9455b8d0.js +0 -1
  483. package/apps/pwa/out/_next/static/chunks/app/layout-236b80d202110362.js +0 -1
  484. package/apps/pwa/out/_next/static/chunks/app/live/page-21a30f35f1a276ad.js +0 -1
  485. package/apps/pwa/out/_next/static/chunks/app/market/page-b1a5be357c4fa25d.js +0 -1
  486. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-1705a60303f7f573.js +0 -1
  487. package/apps/pwa/out/_next/static/chunks/app/morning/page-76b337c11ad0e237.js +0 -1
  488. package/apps/pwa/out/_next/static/chunks/app/not-found-7c0f85fbb56f64c6.js +0 -1
  489. package/apps/pwa/out/_next/static/chunks/app/observatory/page-65ca16b20617b44d.js +0 -1
  490. package/apps/pwa/out/_next/static/chunks/app/page-e7f9b8fc29411c1d.js +0 -1
  491. package/apps/pwa/out/_next/static/chunks/app/reflection/page-92ea6213d1aeec04.js +0 -1
  492. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-a913a005aacb5476.js +0 -1
  493. package/apps/pwa/out/_next/static/chunks/app/sessions/page-2d78804a40dfdef6.js +0 -1
  494. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-08a99148e780ac00.js +0 -1
  495. package/apps/pwa/out/_next/static/chunks/app/settings/page-deb674e7ed36f815.js +0 -1
  496. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-49f8de0534d192d7.js +0 -1
  497. package/apps/pwa/out/_next/static/chunks/app/setup/layout-bd06fb55f4da0381.js +0 -1
  498. package/apps/pwa/out/_next/static/chunks/app/setup/page-ba162a28d2176e18.js +0 -1
  499. package/apps/pwa/out/_next/static/chunks/app/share/page-1ff1a37b550ab41a.js +0 -1
  500. package/apps/pwa/out/_next/static/chunks/app/showroom/page-ccaa698f56c0fbdb.js +0 -1
  501. package/apps/pwa/out/_next/static/chunks/app/tasks/page-53b944082de1d7db.js +0 -1
  502. package/apps/pwa/out/_next/static/chunks/app/term/page-9b70adf1552789bf.js +0 -1
  503. package/apps/pwa/out/_next/static/chunks/app/trace/page-30d482aa63241fe8.js +0 -1
  504. package/apps/pwa/out/_next/static/chunks/app/vault/page-aecf786f54651d8a.js +0 -1
  505. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-6ab9b62c7b6e08f2.js +0 -1
  506. package/apps/pwa/out/_next/static/chunks/app/workflows/page-08949735455e0c9a.js +0 -1
  507. package/apps/pwa/out/_next/static/chunks/app/workspace/page-a1479005234a46c2.js +0 -1
  508. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-c3890e90bd232732.js +0 -1
  509. package/apps/pwa/out/_next/static/chunks/beb5cf10-9adcc10b83930090.js +0 -1
  510. package/apps/pwa/out/_next/static/chunks/framework-d68d41c88e05c801.js +0 -1
  511. package/apps/pwa/out/_next/static/chunks/main-app-11c63971b7a9593b.js +0 -1
  512. package/apps/pwa/out/_next/static/chunks/main-d09452353bd0d9cc.js +0 -1
  513. package/apps/pwa/out/_next/static/chunks/pages/_app-184d727cebeca767.js +0 -1
  514. package/apps/pwa/out/_next/static/chunks/pages/_error-21bbbbac99b720b1.js +0 -1
  515. package/apps/pwa/out/_next/static/css/eaa74e8bb2f62269.css +0 -1
  516. package/apps/pwa/out/_next/static/qMI0jnlZaBjjm4aIDYNGM/_buildManifest.js +0 -1
  517. /package/apps/pwa/out/_next/static/{qMI0jnlZaBjjm4aIDYNGM → lywc8m_HDzH9MKSDQhyEj}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- <!DOCTYPE html><!--qMI0jnlZaBjjm4aIDYNGM--><html lang="ko" class="font-sans __variable_45c93f"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><link rel="preload" href="/app/_next/static/media/22a5144ee8d83bca-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/app/_next/static/css/eaa74e8bb2f62269.css" data-precedence="next"/><link rel="stylesheet" href="/app/_next/static/css/04dabcbcc4bfa6db.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/app/_next/static/chunks/webpack-37b8bf78a3c6eec5.js"/><script src="/app/_next/static/chunks/91ff6dda-3b33d42d20657429.js" async=""></script><script src="/app/_next/static/chunks/4259-99614149577e77cb.js" async=""></script><script src="/app/_next/static/chunks/main-app-11c63971b7a9593b.js" async=""></script><script src="/app/_next/static/chunks/3165-95515ca5f299a120.js" async=""></script><script src="/app/_next/static/chunks/8612-4a0066f20951b8fd.js" async=""></script><script src="/app/_next/static/chunks/4240-7153881b0b377306.js" async=""></script><script src="/app/_next/static/chunks/5423-e95fd125d1794349.js" async=""></script><script src="/app/_next/static/chunks/5110-8058791dd25a2e14.js" async=""></script><script src="/app/_next/static/chunks/8071-187edbc22a86741f.js" async=""></script><script src="/app/_next/static/chunks/5478-b5eae07dc79ea619.js" async=""></script><script src="/app/_next/static/chunks/5787-96ee6642b9a661e5.js" async=""></script><script src="/app/_next/static/chunks/3995-bee512a7063036ce.js" async=""></script><script src="/app/_next/static/chunks/7007-3b9861091bb8dd21.js" async=""></script><script src="/app/_next/static/chunks/9328-45abdebce4fbecb7.js" async=""></script><script src="/app/_next/static/chunks/1947-9d64872eeb9cfdec.js" async=""></script><script src="/app/_next/static/chunks/763-7d0e1913b5074e98.js" async=""></script><script src="/app/_next/static/chunks/app/layout-236b80d202110362.js" async=""></script><script src="/app/_next/static/chunks/6448-79d72368589f98bc.js" async=""></script><script src="/app/_next/static/chunks/app/not-found-7c0f85fbb56f64c6.js" async=""></script><script src="/app/_next/static/chunks/app/worktrees/page-c3890e90bd232732.js" async=""></script><meta name="next-size-adjust" content=""/><link rel="preload" as="font" type="font/ttf" href="/app/fonts/JetBrainsMonoNerdFontMono-Regular.ttf" crossorigin="anonymous"/><meta name="theme-color" content="#1e1e2e"/><title>elanous</title><meta name="description" content="elanous — voice · chat · intake · control · terminal."/><meta name="application-name" content="elanous"/><link rel="manifest" href="/app/manifest.webmanifest"/><link rel="icon" href="/app/icons/elanous-32.png" sizes="32x32" type="image/png"/><link rel="icon" href="/app/icons/elanous-16.png" sizes="16x16" type="image/png"/><link rel="apple-touch-icon" href="/app/icons/elanous-180.png" sizes="180x180" type="image/png"/><script src="/app/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-screen bg-background text-foreground antialiased"><div hidden=""><!--$--><!--/$--></div><div class="flex h-screen w-full flex-col bg-background text-foreground"><header class="flex h-9 shrink-0 items-center gap-1 border-b border-border bg-background px-2 text-xs"><button type="button" aria-label="open menu" title="open menu" class="flex shrink-0 items-center gap-1.5 rounded-md p-2 text-muted-foreground hover:bg-accent hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-4 w-4" aria-hidden="true"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg><span class="hidden text-[11px] font-medium leading-none sm:inline">메뉴</span></button><div class="ml-auto flex items-center gap-1"><a aria-label="voice" title="voice (HTTPS Tailscale Serve 필요)" class="rounded-md p-1.5 text-muted-foreground hover:bg-accent hover:text-foreground" href="/app/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mic h-4 w-4" aria-hidden="true"><path d="M12 19v3"></path><path d="M19 10v2a7 7 0 0 1-14 0v-2"></path><rect x="9" y="2" width="6" height="13" rx="3"></rect></svg></a><div class="relative"><button type="button" aria-label="settings" title="session — · theme catppuccin-mocha" class="rounded-md p-1.5 hover:bg-accent text-muted-foreground hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings h-4 w-4" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg></button></div></div></header><div class="flex flex-1 min-h-0"><aside class="hidden md:flex md:w-10 md:flex-col border-r border-sidebar-border bg-sidebar text-sidebar-foreground"><nav class="flex h-full flex-col"><ul class="flex-1 space-y-1 px-1 py-2"><li class="group/nav relative"><a title="Terminal — 터미널 + agent dock" aria-label="Terminal — 터미널 + agent dock" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/term/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-terminal h-4 w-4 shrink-0 text-current" aria-hidden="true"><path d="m7 11 2-2-2-2"></path><path d="M11 13h4"></path><rect width="18" height="18" x="3" y="3" rx="2" ry="2"></rect></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">Terminal</span><span class="ml-1 text-muted-foreground">— <!-- -->터미널 + agent dock</span></span></li><li class="group/nav relative"><a title="Chat — 채팅 (스트리밍 · multimodal · mic)" aria-label="Chat — 채팅 (스트리밍 · multimodal · mic)" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/chat/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square h-4 w-4 shrink-0 text-current" aria-hidden="true"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">Chat</span><span class="ml-1 text-muted-foreground">— <!-- -->채팅 (스트리밍 · multimodal · mic)</span></span></li><li class="group/nav relative"><a title="Intake — 넣으면 흡수 · 작업 · 그래프로 (URL · 미션 · 메모)" aria-label="Intake — 넣으면 흡수 · 작업 · 그래프로 (URL · 미션 · 메모)" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/intake/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-inbox h-4 w-4 shrink-0 text-current" aria-hidden="true"><polyline points="22 12 16 12 14 15 10 15 8 12 2 12"></polyline><path d="M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"></path></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">Intake</span><span class="ml-1 text-muted-foreground">— <!-- -->넣으면 흡수 · 작업 · 그래프로 (URL · 미션 · 메모)</span></span></li><li class="group/nav relative"><a title="Approvals — 아이디어 PR 요약 · 승인하고 머지" aria-label="Approvals — 아이디어 PR 요약 · 승인하고 머지" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/approvals/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-git-pull-request h-4 w-4 shrink-0 text-current" aria-hidden="true"><circle cx="18" cy="18" r="3"></circle><circle cx="6" cy="6" r="3"></circle><path d="M13 6h3a2 2 0 0 1 2 2v7"></path><line x1="6" x2="6" y1="9" y2="21"></line></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">Approvals</span><span class="ml-1 text-muted-foreground">— <!-- -->아이디어 PR 요약 · 승인하고 머지</span></span></li><li class="group/nav relative"><a title="Live — 런이 판단·기획하는 신호 (진짜 수 · 쇼 모드)" aria-label="Live — 런이 판단·기획하는 신호 (진짜 수 · 쇼 모드)" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/live/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-activity h-4 w-4 shrink-0 text-current" aria-hidden="true"><path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2"></path></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">Live</span><span class="ml-1 text-muted-foreground">— <!-- -->런이 판단·기획하는 신호 (진짜 수 · 쇼 모드)</span></span></li><li class="group/nav relative"><a title="Trace — 렌즈를 좁혀 런을 따라간다 (플릿 → 런 → 판단)" aria-label="Trace — 렌즈를 좁혀 런을 따라간다 (플릿 → 런 → 판단)" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/trace/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-crosshair h-4 w-4 shrink-0 text-current" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><line x1="22" x2="18" y1="12" y2="12"></line><line x1="6" x2="2" y1="12" y2="12"></line><line x1="12" x2="12" y1="6" y2="2"></line><line x1="12" x2="12" y1="22" y2="18"></line></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">Trace</span><span class="ml-1 text-muted-foreground">— <!-- -->렌즈를 좁혀 런을 따라간다 (플릿 → 런 → 판단)</span></span></li><li class="group/nav relative"><a title="Missions — 미션 · 작업 (미션 계보·골 던지기·작업 보드·자율행동)" aria-label="Missions — 미션 · 작업 (미션 계보·골 던지기·작업 보드·자율행동)" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/autopilot/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-compass h-4 w-4 shrink-0 text-current" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z"></path></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">Missions</span><span class="ml-1 text-muted-foreground">— <!-- -->미션 · 작업 (미션 계보·골 던지기·작업 보드·자율행동)</span></span></li><li class="group/nav relative"><a title="Design — 디자인 시스템 고르기 · 시안 · URL 로 내 시스템" aria-label="Design — 디자인 시스템 고르기 · 시안 · URL 로 내 시스템" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/design-check/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-palette h-4 w-4 shrink-0 text-current" aria-hidden="true"><path d="M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z"></path><circle cx="13.5" cy="6.5" r=".5" fill="currentColor"></circle><circle cx="17.5" cy="10.5" r=".5" fill="currentColor"></circle><circle cx="6.5" cy="12.5" r=".5" fill="currentColor"></circle><circle cx="8.5" cy="7.5" r=".5" fill="currentColor"></circle></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">Design</span><span class="ml-1 text-muted-foreground">— <!-- -->디자인 시스템 고르기 · 시안 · URL 로 내 시스템</span></span></li><li class="group/nav relative"><a title="Vault — Obsidian 노트 (브라우저·에디터·검색·그래프)" aria-label="Vault — Obsidian 노트 (브라우저·에디터·검색·그래프)" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/vault/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open h-4 w-4 shrink-0 text-current" aria-hidden="true"><path d="M12 7v14"></path><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"></path></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">Vault</span><span class="ml-1 text-muted-foreground">— <!-- -->Obsidian 노트 (브라우저·에디터·검색·그래프)</span></span></li><li class="group/nav relative"><a title="마켓 — 플러그인 찾아보기 · 상세 · 설치됨" aria-label="마켓 — 플러그인 찾아보기 · 상세 · 설치됨" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/market/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-store h-4 w-4 shrink-0 text-current" aria-hidden="true"><path d="M15 21v-5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v5"></path><path d="M17.774 10.31a1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.451 0 1.12 1.12 0 0 0-1.548 0 2.5 2.5 0 0 1-3.452 0 1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.77-3.248l2.889-4.184A2 2 0 0 1 7 2h10a2 2 0 0 1 1.653.873l2.895 4.192a2.5 2.5 0 0 1-3.774 3.244"></path><path d="M4 10.95V19a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8.05"></path></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">마켓</span><span class="ml-1 text-muted-foreground">— <!-- -->플러그인 찾아보기 · 상세 · 설치됨</span></span></li><li class="group/nav relative"><a title="Schedules — 예약 잡 종합 현황 (크론·데몬·launchd)" aria-label="Schedules — 예약 잡 종합 현황 (크론·데몬·launchd)" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/scheduler/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar-clock h-4 w-4 shrink-0 text-current" aria-hidden="true"><path d="M16 14v2.2l1.6 1"></path><path d="M16 2v4"></path><path d="M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5"></path><path d="M3 10h5"></path><path d="M8 2v4"></path><circle cx="16" cy="16" r="6"></circle></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">Schedules</span><span class="ml-1 text-muted-foreground">— <!-- -->예약 잡 종합 현황 (크론·데몬·launchd)</span></span></li><li class="group/nav relative"><a title="Settings — 환경 + provider + theme" aria-label="Settings — 환경 + provider + theme" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/settings/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings h-4 w-4 shrink-0 text-current" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">Settings</span><span class="ml-1 text-muted-foreground">— <!-- -->환경 + provider + theme</span></span></li></ul></nav></aside><main class="flex-1 overflow-auto min-w-0"><div class="mx-auto max-w-2xl space-y-2 p-6"><h1 class="text-xl font-semibold tracking-tight">Worktrees</h1><p class="text-sm text-muted-foreground">Connect to a NEXUS daemon to see active worktrees.</p></div><!--$--><!--/$--></main></div></div><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><script src="/app/_next/static/chunks/webpack-37b8bf78a3c6eec5.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n"])</script><script>self.__next_f.push([1,"2:I[94529,[\"3165\",\"static/chunks/3165-95515ca5f299a120.js\",\"8612\",\"static/chunks/8612-4a0066f20951b8fd.js\",\"4240\",\"static/chunks/4240-7153881b0b377306.js\",\"5423\",\"static/chunks/5423-e95fd125d1794349.js\",\"5110\",\"static/chunks/5110-8058791dd25a2e14.js\",\"8071\",\"static/chunks/8071-187edbc22a86741f.js\",\"5478\",\"static/chunks/5478-b5eae07dc79ea619.js\",\"5787\",\"static/chunks/5787-96ee6642b9a661e5.js\",\"3995\",\"static/chunks/3995-bee512a7063036ce.js\",\"7007\",\"static/chunks/7007-3b9861091bb8dd21.js\",\"9328\",\"static/chunks/9328-45abdebce4fbecb7.js\",\"1947\",\"static/chunks/1947-9d64872eeb9cfdec.js\",\"763\",\"static/chunks/763-7d0e1913b5074e98.js\",\"7177\",\"static/chunks/app/layout-236b80d202110362.js\"],\"ServiceWorkerRegister\"]\n"])</script><script>self.__next_f.push([1,"3:I[13914,[\"3165\",\"static/chunks/3165-95515ca5f299a120.js\",\"8612\",\"static/chunks/8612-4a0066f20951b8fd.js\",\"4240\",\"static/chunks/4240-7153881b0b377306.js\",\"5423\",\"static/chunks/5423-e95fd125d1794349.js\",\"5110\",\"static/chunks/5110-8058791dd25a2e14.js\",\"8071\",\"static/chunks/8071-187edbc22a86741f.js\",\"5478\",\"static/chunks/5478-b5eae07dc79ea619.js\",\"5787\",\"static/chunks/5787-96ee6642b9a661e5.js\",\"3995\",\"static/chunks/3995-bee512a7063036ce.js\",\"7007\",\"static/chunks/7007-3b9861091bb8dd21.js\",\"9328\",\"static/chunks/9328-45abdebce4fbecb7.js\",\"1947\",\"static/chunks/1947-9d64872eeb9cfdec.js\",\"763\",\"static/chunks/763-7d0e1913b5074e98.js\",\"7177\",\"static/chunks/app/layout-236b80d202110362.js\"],\"NewBuildBanner\"]\n"])</script><script>self.__next_f.push([1,"4:I[45787,[\"3165\",\"static/chunks/3165-95515ca5f299a120.js\",\"8612\",\"static/chunks/8612-4a0066f20951b8fd.js\",\"4240\",\"static/chunks/4240-7153881b0b377306.js\",\"5423\",\"static/chunks/5423-e95fd125d1794349.js\",\"5110\",\"static/chunks/5110-8058791dd25a2e14.js\",\"8071\",\"static/chunks/8071-187edbc22a86741f.js\",\"5478\",\"static/chunks/5478-b5eae07dc79ea619.js\",\"5787\",\"static/chunks/5787-96ee6642b9a661e5.js\",\"3995\",\"static/chunks/3995-bee512a7063036ce.js\",\"7007\",\"static/chunks/7007-3b9861091bb8dd21.js\",\"9328\",\"static/chunks/9328-45abdebce4fbecb7.js\",\"1947\",\"static/chunks/1947-9d64872eeb9cfdec.js\",\"763\",\"static/chunks/763-7d0e1913b5074e98.js\",\"7177\",\"static/chunks/app/layout-236b80d202110362.js\"],\"DaemonProvider\"]\n"])</script><script>self.__next_f.push([1,"5:I[84619,[\"3165\",\"static/chunks/3165-95515ca5f299a120.js\",\"8612\",\"static/chunks/8612-4a0066f20951b8fd.js\",\"4240\",\"static/chunks/4240-7153881b0b377306.js\",\"5423\",\"static/chunks/5423-e95fd125d1794349.js\",\"5110\",\"static/chunks/5110-8058791dd25a2e14.js\",\"8071\",\"static/chunks/8071-187edbc22a86741f.js\",\"5478\",\"static/chunks/5478-b5eae07dc79ea619.js\",\"5787\",\"static/chunks/5787-96ee6642b9a661e5.js\",\"3995\",\"static/chunks/3995-bee512a7063036ce.js\",\"7007\",\"static/chunks/7007-3b9861091bb8dd21.js\",\"9328\",\"static/chunks/9328-45abdebce4fbecb7.js\",\"1947\",\"static/chunks/1947-9d64872eeb9cfdec.js\",\"763\",\"static/chunks/763-7d0e1913b5074e98.js\",\"7177\",\"static/chunks/app/layout-236b80d202110362.js\"],\"NexusClientProvider\"]\n"])</script><script>self.__next_f.push([1,"6:I[69004,[\"3165\",\"static/chunks/3165-95515ca5f299a120.js\",\"8612\",\"static/chunks/8612-4a0066f20951b8fd.js\",\"4240\",\"static/chunks/4240-7153881b0b377306.js\",\"5423\",\"static/chunks/5423-e95fd125d1794349.js\",\"5110\",\"static/chunks/5110-8058791dd25a2e14.js\",\"8071\",\"static/chunks/8071-187edbc22a86741f.js\",\"5478\",\"static/chunks/5478-b5eae07dc79ea619.js\",\"5787\",\"static/chunks/5787-96ee6642b9a661e5.js\",\"3995\",\"static/chunks/3995-bee512a7063036ce.js\",\"7007\",\"static/chunks/7007-3b9861091bb8dd21.js\",\"9328\",\"static/chunks/9328-45abdebce4fbecb7.js\",\"1947\",\"static/chunks/1947-9d64872eeb9cfdec.js\",\"763\",\"static/chunks/763-7d0e1913b5074e98.js\",\"7177\",\"static/chunks/app/layout-236b80d202110362.js\"],\"ThemeProvider\"]\n"])</script><script>self.__next_f.push([1,"7:I[32427,[\"3165\",\"static/chunks/3165-95515ca5f299a120.js\",\"8612\",\"static/chunks/8612-4a0066f20951b8fd.js\",\"4240\",\"static/chunks/4240-7153881b0b377306.js\",\"5423\",\"static/chunks/5423-e95fd125d1794349.js\",\"5110\",\"static/chunks/5110-8058791dd25a2e14.js\",\"8071\",\"static/chunks/8071-187edbc22a86741f.js\",\"5478\",\"static/chunks/5478-b5eae07dc79ea619.js\",\"5787\",\"static/chunks/5787-96ee6642b9a661e5.js\",\"3995\",\"static/chunks/3995-bee512a7063036ce.js\",\"7007\",\"static/chunks/7007-3b9861091bb8dd21.js\",\"9328\",\"static/chunks/9328-45abdebce4fbecb7.js\",\"1947\",\"static/chunks/1947-9d64872eeb9cfdec.js\",\"763\",\"static/chunks/763-7d0e1913b5074e98.js\",\"7177\",\"static/chunks/app/layout-236b80d202110362.js\"],\"TooltipProvider\"]\n"])</script><script>self.__next_f.push([1,"8:I[42908,[\"3165\",\"static/chunks/3165-95515ca5f299a120.js\",\"8612\",\"static/chunks/8612-4a0066f20951b8fd.js\",\"4240\",\"static/chunks/4240-7153881b0b377306.js\",\"5423\",\"static/chunks/5423-e95fd125d1794349.js\",\"5110\",\"static/chunks/5110-8058791dd25a2e14.js\",\"8071\",\"static/chunks/8071-187edbc22a86741f.js\",\"5478\",\"static/chunks/5478-b5eae07dc79ea619.js\",\"5787\",\"static/chunks/5787-96ee6642b9a661e5.js\",\"3995\",\"static/chunks/3995-bee512a7063036ce.js\",\"7007\",\"static/chunks/7007-3b9861091bb8dd21.js\",\"9328\",\"static/chunks/9328-45abdebce4fbecb7.js\",\"1947\",\"static/chunks/1947-9d64872eeb9cfdec.js\",\"763\",\"static/chunks/763-7d0e1913b5074e98.js\",\"7177\",\"static/chunks/app/layout-236b80d202110362.js\"],\"ToastProvider\"]\n"])</script><script>self.__next_f.push([1,"9:I[84428,[\"3165\",\"static/chunks/3165-95515ca5f299a120.js\",\"8612\",\"static/chunks/8612-4a0066f20951b8fd.js\",\"4240\",\"static/chunks/4240-7153881b0b377306.js\",\"5423\",\"static/chunks/5423-e95fd125d1794349.js\",\"5110\",\"static/chunks/5110-8058791dd25a2e14.js\",\"8071\",\"static/chunks/8071-187edbc22a86741f.js\",\"5478\",\"static/chunks/5478-b5eae07dc79ea619.js\",\"5787\",\"static/chunks/5787-96ee6642b9a661e5.js\",\"3995\",\"static/chunks/3995-bee512a7063036ce.js\",\"7007\",\"static/chunks/7007-3b9861091bb8dd21.js\",\"9328\",\"static/chunks/9328-45abdebce4fbecb7.js\",\"1947\",\"static/chunks/1947-9d64872eeb9cfdec.js\",\"763\",\"static/chunks/763-7d0e1913b5074e98.js\",\"7177\",\"static/chunks/app/layout-236b80d202110362.js\"],\"AppShell\"]\n"])</script><script>self.__next_f.push([1,"a:I[70655,[\"3165\",\"static/chunks/3165-95515ca5f299a120.js\",\"8612\",\"static/chunks/8612-4a0066f20951b8fd.js\",\"4240\",\"static/chunks/4240-7153881b0b377306.js\",\"5423\",\"static/chunks/5423-e95fd125d1794349.js\",\"5110\",\"static/chunks/5110-8058791dd25a2e14.js\",\"8071\",\"static/chunks/8071-187edbc22a86741f.js\",\"5478\",\"static/chunks/5478-b5eae07dc79ea619.js\",\"5787\",\"static/chunks/5787-96ee6642b9a661e5.js\",\"3995\",\"static/chunks/3995-bee512a7063036ce.js\",\"7007\",\"static/chunks/7007-3b9861091bb8dd21.js\",\"9328\",\"static/chunks/9328-45abdebce4fbecb7.js\",\"1947\",\"static/chunks/1947-9d64872eeb9cfdec.js\",\"763\",\"static/chunks/763-7d0e1913b5074e98.js\",\"7177\",\"static/chunks/app/layout-236b80d202110362.js\"],\"MaturityBanner\"]\n"])</script><script>self.__next_f.push([1,"b:I[55850,[],\"\"]\nc:I[26184,[],\"\"]\nd:I[13746,[\"3165\",\"static/chunks/3165-95515ca5f299a120.js\",\"8612\",\"static/chunks/8612-4a0066f20951b8fd.js\",\"5423\",\"static/chunks/5423-e95fd125d1794349.js\",\"6448\",\"static/chunks/6448-79d72368589f98bc.js\",\"9328\",\"static/chunks/9328-45abdebce4fbecb7.js\",\"4345\",\"static/chunks/app/not-found-7c0f85fbb56f64c6.js\"],\"default\"]\ne:I[63787,[],\"ClientPageRoot\"]\nf:I[79999,[\"8612\",\"static/chunks/8612-4a0066f20951b8fd.js\",\"5110\",\"static/chunks/5110-8058791dd25a2e14.js\",\"3995\",\"static/chunks/3995-bee512a7063036ce.js\",\"2975\",\"static/chunks/app/worktrees/page-c3890e90bd232732.js\"],\"default\"]\n12:I[69219,[],\"OutletBoundary\"]\n14:I[91698,[],\"AsyncMetadataOutlet\"]\n16:I[69219,[],\"ViewportBoundary\"]\n18:I[69219,[],\"MetadataBoundary\"]\n19:\"$Sreact.suspense\"\n1b:I[57762,[],\"\"]\n:HL[\"/app/_next/static/media/22a5144ee8d83bca-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/app/_next/static/css/eaa74e8bb2f62269.css\",\"style\"]\n:HL[\"/app/_next/static/css/04dabcbcc4bfa6db.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"qMI0jnlZaBjjm4aIDYNGM\",\"p\":\"/app\",\"c\":[\"\",\"worktrees\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"worktrees\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/app/_next/static/css/eaa74e8bb2f62269.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/app/_next/static/css/04dabcbcc4bfa6db.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ko\",\"className\":\"font-sans __variable_45c93f\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"link\",null,{\"rel\":\"preload\",\"as\":\"font\",\"type\":\"font/ttf\",\"href\":\"/app/fonts/JetBrainsMonoNerdFontMono-Regular.ttf\",\"crossOrigin\":\"anonymous\"}]}],[\"$\",\"body\",null,{\"className\":\"min-h-screen bg-background text-foreground antialiased\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$L9\",null,{\"children\":[[\"$\",\"$La\",null,{}],[\"$\",\"$Lb\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lc\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$Ld\",null,{}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]}]}]}]}]}]]}]]}]]}],{\"children\":[\"worktrees\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lc\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$Le\",null,{\"Component\":\"$f\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@10\",\"$@11\"]}],null,[\"$\",\"$L12\",null,{\"children\":[\"$L13\",[\"$\",\"$L14\",null,{\"promise\":\"$@15\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$L16\",null,{\"children\":\"$L17\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$L18\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$19\",null,{\"fallback\":null,\"children\":\"$L1a\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$1b\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"10:{}\n11:\"$0:f:0:1:2:children:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"17:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#1e1e2e\"}]]\n13:null\n"])</script><script>self.__next_f.push([1,"1c:I[2394,[],\"IconMark\"]\n"])</script><script>self.__next_f.push([1,"15:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"elanous\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"elanous — voice · chat · intake · control · terminal.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"elanous\"}],[\"$\",\"link\",\"3\",{\"rel\":\"manifest\",\"href\":\"/app/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/app/icons/elanous-32.png\",\"sizes\":\"32x32\",\"type\":\"image/png\"}],[\"$\",\"link\",\"5\",{\"rel\":\"icon\",\"href\":\"/app/icons/elanous-16.png\",\"sizes\":\"16x16\",\"type\":\"image/png\"}],[\"$\",\"link\",\"6\",{\"rel\":\"apple-touch-icon\",\"href\":\"/app/icons/elanous-180.png\",\"sizes\":\"180x180\",\"type\":\"image/png\"}],[\"$\",\"$L1c\",\"7\",{}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"1a:\"$15:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--lywc8m_HDzH9MKSDQhyEj--><html lang="ko" class="font-sans __variable_45c93f"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><link rel="preload" href="/app/_next/static/media/22a5144ee8d83bca-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/app/_next/static/css/5ef72a618a8994f3.css" data-precedence="next"/><link rel="stylesheet" href="/app/_next/static/css/04dabcbcc4bfa6db.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/app/_next/static/chunks/webpack-e5bea36f183b25e6.js"/><script src="/app/_next/static/chunks/8046cadf-211ca3c0e00f2b72.js" async=""></script><script src="/app/_next/static/chunks/6725-68ab7cc0b1faf00d.js" async=""></script><script src="/app/_next/static/chunks/main-app-6870f30ea99f8346.js" async=""></script><script src="/app/_next/static/chunks/2977-e38442e86289f1d3.js" async=""></script><script src="/app/_next/static/chunks/920-f7dceb78f1c585ef.js" async=""></script><script src="/app/_next/static/chunks/6062-73e68343a9814f6a.js" async=""></script><script src="/app/_next/static/chunks/7990-e12efba616f46e03.js" async=""></script><script src="/app/_next/static/chunks/6998-a654fe5c58271600.js" async=""></script><script src="/app/_next/static/chunks/1201-09613bce624467c0.js" async=""></script><script src="/app/_next/static/chunks/7032-f4ef698518fba61c.js" async=""></script><script src="/app/_next/static/chunks/8519-5632377cce994f86.js" async=""></script><script src="/app/_next/static/chunks/2375-cb6debea56cce4fb.js" async=""></script><script src="/app/_next/static/chunks/9454-a3e0953307216c58.js" async=""></script><script src="/app/_next/static/chunks/8067-d976b441a104ab74.js" async=""></script><script src="/app/_next/static/chunks/8619-4365e03a2862830f.js" async=""></script><script src="/app/_next/static/chunks/5791-bb82743fa6299562.js" async=""></script><script src="/app/_next/static/chunks/app/layout-9567560270857531.js" async=""></script><script src="/app/_next/static/chunks/6416-505ba707cacafbba.js" async=""></script><script src="/app/_next/static/chunks/app/not-found-1ba4a5d857276334.js" async=""></script><script src="/app/_next/static/chunks/app/worktrees/page-ba058c56e38f2792.js" async=""></script><meta name="next-size-adjust" content=""/><link rel="preload" as="font" type="font/ttf" href="/app/fonts/JetBrainsMonoNerdFontMono-Regular.ttf" crossorigin="anonymous"/><meta name="theme-color" content="#1e1e2e"/><title>elanous</title><meta name="description" content="elanous — voice · chat · intake · control · terminal."/><meta name="application-name" content="elanous"/><link rel="manifest" href="/app/manifest.webmanifest"/><link rel="icon" href="/app/icons/elanous-32.png" sizes="32x32" type="image/png"/><link rel="icon" href="/app/icons/elanous-16.png" sizes="16x16" type="image/png"/><link rel="apple-touch-icon" href="/app/icons/elanous-180.png" sizes="180x180" type="image/png"/><script src="/app/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-screen bg-background text-foreground antialiased"><div hidden=""><!--$--><!--/$--></div><div class="flex h-screen w-full flex-col bg-background text-foreground"><header class="flex h-9 shrink-0 items-center gap-1 border-b border-border bg-background px-2 text-xs"><button type="button" aria-label="open menu" title="open menu" class="flex shrink-0 items-center gap-1.5 rounded-md p-2 text-muted-foreground hover:bg-accent hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-4 w-4" aria-hidden="true"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg><span class="hidden text-[11px] font-medium leading-none sm:inline">메뉴</span></button><div class="ml-auto flex items-center gap-1"><button type="button" data-share-capture-ui="true" aria-label="공유용 캡처" title="공유용 캡처 (beta) — 주소·토큰을 가린 사진을 데몬에 저장" class="rounded-md p-1.5 text-muted-foreground hover:bg-accent hover:text-foreground disabled:opacity-50"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-camera h-4 w-4" aria-hidden="true"><path d="M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z"></path><circle cx="12" cy="13" r="3"></circle></svg></button><a aria-label="voice" title="voice (HTTPS Tailscale Serve 필요)" class="rounded-md p-1.5 text-muted-foreground hover:bg-accent hover:text-foreground" href="/app/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mic h-4 w-4" aria-hidden="true"><path d="M12 19v3"></path><path d="M19 10v2a7 7 0 0 1-14 0v-2"></path><rect x="9" y="2" width="6" height="13" rx="3"></rect></svg></a><div class="relative"><button type="button" aria-label="settings" title="session — · theme catppuccin-mocha" class="rounded-md p-1.5 hover:bg-accent text-muted-foreground hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings h-4 w-4" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg></button></div></div></header><div class="flex flex-1 min-h-0"><aside class="hidden md:flex md:w-10 md:flex-col border-r border-sidebar-border bg-sidebar text-sidebar-foreground"><nav class="flex h-full flex-col"><ul class="flex-1 space-y-1 px-1 py-2"><li class="group/nav relative"><a title="Terminal — 터미널 + agent dock" aria-label="Terminal — 터미널 + agent dock" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/term/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-terminal h-4 w-4 shrink-0 text-current" aria-hidden="true"><path d="m7 11 2-2-2-2"></path><path d="M11 13h4"></path><rect width="18" height="18" x="3" y="3" rx="2" ry="2"></rect></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">Terminal</span><span class="ml-1 text-muted-foreground">— <!-- -->터미널 + agent dock</span></span></li><li class="group/nav relative"><a title="Chat — 채팅 (스트리밍 · multimodal · mic)" aria-label="Chat — 채팅 (스트리밍 · multimodal · mic)" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/chat/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square h-4 w-4 shrink-0 text-current" aria-hidden="true"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">Chat</span><span class="ml-1 text-muted-foreground">— <!-- -->채팅 (스트리밍 · multimodal · mic)</span></span></li><li class="group/nav relative"><a title="Live — 런이 판단·기획하는 신호 (진짜 수 · 쇼 모드)" aria-label="Live — 런이 판단·기획하는 신호 (진짜 수 · 쇼 모드)" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/live/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-activity h-4 w-4 shrink-0 text-current" aria-hidden="true"><path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2"></path></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">Live</span><span class="ml-1 text-muted-foreground">— <!-- -->런이 판단·기획하는 신호 (진짜 수 · 쇼 모드)</span></span></li><li class="group/nav relative"><a title="마켓 — 플러그인 찾아보기 · 상세 · 설치됨" aria-label="마켓 — 플러그인 찾아보기 · 상세 · 설치됨" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/market/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-store h-4 w-4 shrink-0 text-current" aria-hidden="true"><path d="M15 21v-5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v5"></path><path d="M17.774 10.31a1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.451 0 1.12 1.12 0 0 0-1.548 0 2.5 2.5 0 0 1-3.452 0 1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.77-3.248l2.889-4.184A2 2 0 0 1 7 2h10a2 2 0 0 1 1.653.873l2.895 4.192a2.5 2.5 0 0 1-3.774 3.244"></path><path d="M4 10.95V19a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8.05"></path></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">마켓</span><span class="ml-1 text-muted-foreground">— <!-- -->플러그인 찾아보기 · 상세 · 설치됨</span></span></li><li class="group/nav relative"><a title="Settings — 환경 + provider + theme" aria-label="Settings — 환경 + provider + theme" class="flex items-center rounded-md text-sm transition-colors justify-center px-1.5 py-2 text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground" href="/app/settings/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings h-4 w-4 shrink-0 text-current" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg></a><span role="tooltip" class="pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden"><span class="font-medium">Settings</span><span class="ml-1 text-muted-foreground">— <!-- -->환경 + provider + theme</span></span></li></ul></nav></aside><main class="flex-1 overflow-auto min-w-0"><div class="mx-auto max-w-2xl space-y-2 p-6"><h1 class="text-xl font-semibold tracking-tight">Worktrees</h1><p class="text-sm text-muted-foreground">Connect to a NEXUS daemon to see active worktrees.</p></div><!--$--><!--/$--></main></div></div><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><script src="/app/_next/static/chunks/webpack-e5bea36f183b25e6.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n"])</script><script>self.__next_f.push([1,"2:I[67976,[\"2977\",\"static/chunks/2977-e38442e86289f1d3.js\",\"920\",\"static/chunks/920-f7dceb78f1c585ef.js\",\"6062\",\"static/chunks/6062-73e68343a9814f6a.js\",\"7990\",\"static/chunks/7990-e12efba616f46e03.js\",\"6998\",\"static/chunks/6998-a654fe5c58271600.js\",\"1201\",\"static/chunks/1201-09613bce624467c0.js\",\"7032\",\"static/chunks/7032-f4ef698518fba61c.js\",\"8519\",\"static/chunks/8519-5632377cce994f86.js\",\"2375\",\"static/chunks/2375-cb6debea56cce4fb.js\",\"9454\",\"static/chunks/9454-a3e0953307216c58.js\",\"8067\",\"static/chunks/8067-d976b441a104ab74.js\",\"8619\",\"static/chunks/8619-4365e03a2862830f.js\",\"5791\",\"static/chunks/5791-bb82743fa6299562.js\",\"7177\",\"static/chunks/app/layout-9567560270857531.js\"],\"ServiceWorkerRegister\"]\n"])</script><script>self.__next_f.push([1,"3:I[12248,[\"2977\",\"static/chunks/2977-e38442e86289f1d3.js\",\"920\",\"static/chunks/920-f7dceb78f1c585ef.js\",\"6062\",\"static/chunks/6062-73e68343a9814f6a.js\",\"7990\",\"static/chunks/7990-e12efba616f46e03.js\",\"6998\",\"static/chunks/6998-a654fe5c58271600.js\",\"1201\",\"static/chunks/1201-09613bce624467c0.js\",\"7032\",\"static/chunks/7032-f4ef698518fba61c.js\",\"8519\",\"static/chunks/8519-5632377cce994f86.js\",\"2375\",\"static/chunks/2375-cb6debea56cce4fb.js\",\"9454\",\"static/chunks/9454-a3e0953307216c58.js\",\"8067\",\"static/chunks/8067-d976b441a104ab74.js\",\"8619\",\"static/chunks/8619-4365e03a2862830f.js\",\"5791\",\"static/chunks/5791-bb82743fa6299562.js\",\"7177\",\"static/chunks/app/layout-9567560270857531.js\"],\"NewBuildBanner\"]\n"])</script><script>self.__next_f.push([1,"4:I[38519,[\"2977\",\"static/chunks/2977-e38442e86289f1d3.js\",\"920\",\"static/chunks/920-f7dceb78f1c585ef.js\",\"6062\",\"static/chunks/6062-73e68343a9814f6a.js\",\"7990\",\"static/chunks/7990-e12efba616f46e03.js\",\"6998\",\"static/chunks/6998-a654fe5c58271600.js\",\"1201\",\"static/chunks/1201-09613bce624467c0.js\",\"7032\",\"static/chunks/7032-f4ef698518fba61c.js\",\"8519\",\"static/chunks/8519-5632377cce994f86.js\",\"2375\",\"static/chunks/2375-cb6debea56cce4fb.js\",\"9454\",\"static/chunks/9454-a3e0953307216c58.js\",\"8067\",\"static/chunks/8067-d976b441a104ab74.js\",\"8619\",\"static/chunks/8619-4365e03a2862830f.js\",\"5791\",\"static/chunks/5791-bb82743fa6299562.js\",\"7177\",\"static/chunks/app/layout-9567560270857531.js\"],\"DaemonProvider\"]\n"])</script><script>self.__next_f.push([1,"5:I[8687,[\"2977\",\"static/chunks/2977-e38442e86289f1d3.js\",\"920\",\"static/chunks/920-f7dceb78f1c585ef.js\",\"6062\",\"static/chunks/6062-73e68343a9814f6a.js\",\"7990\",\"static/chunks/7990-e12efba616f46e03.js\",\"6998\",\"static/chunks/6998-a654fe5c58271600.js\",\"1201\",\"static/chunks/1201-09613bce624467c0.js\",\"7032\",\"static/chunks/7032-f4ef698518fba61c.js\",\"8519\",\"static/chunks/8519-5632377cce994f86.js\",\"2375\",\"static/chunks/2375-cb6debea56cce4fb.js\",\"9454\",\"static/chunks/9454-a3e0953307216c58.js\",\"8067\",\"static/chunks/8067-d976b441a104ab74.js\",\"8619\",\"static/chunks/8619-4365e03a2862830f.js\",\"5791\",\"static/chunks/5791-bb82743fa6299562.js\",\"7177\",\"static/chunks/app/layout-9567560270857531.js\"],\"NexusClientProvider\"]\n"])</script><script>self.__next_f.push([1,"6:I[94936,[\"2977\",\"static/chunks/2977-e38442e86289f1d3.js\",\"920\",\"static/chunks/920-f7dceb78f1c585ef.js\",\"6062\",\"static/chunks/6062-73e68343a9814f6a.js\",\"7990\",\"static/chunks/7990-e12efba616f46e03.js\",\"6998\",\"static/chunks/6998-a654fe5c58271600.js\",\"1201\",\"static/chunks/1201-09613bce624467c0.js\",\"7032\",\"static/chunks/7032-f4ef698518fba61c.js\",\"8519\",\"static/chunks/8519-5632377cce994f86.js\",\"2375\",\"static/chunks/2375-cb6debea56cce4fb.js\",\"9454\",\"static/chunks/9454-a3e0953307216c58.js\",\"8067\",\"static/chunks/8067-d976b441a104ab74.js\",\"8619\",\"static/chunks/8619-4365e03a2862830f.js\",\"5791\",\"static/chunks/5791-bb82743fa6299562.js\",\"7177\",\"static/chunks/app/layout-9567560270857531.js\"],\"ThemeProvider\"]\n"])</script><script>self.__next_f.push([1,"7:I[85039,[\"2977\",\"static/chunks/2977-e38442e86289f1d3.js\",\"920\",\"static/chunks/920-f7dceb78f1c585ef.js\",\"6062\",\"static/chunks/6062-73e68343a9814f6a.js\",\"7990\",\"static/chunks/7990-e12efba616f46e03.js\",\"6998\",\"static/chunks/6998-a654fe5c58271600.js\",\"1201\",\"static/chunks/1201-09613bce624467c0.js\",\"7032\",\"static/chunks/7032-f4ef698518fba61c.js\",\"8519\",\"static/chunks/8519-5632377cce994f86.js\",\"2375\",\"static/chunks/2375-cb6debea56cce4fb.js\",\"9454\",\"static/chunks/9454-a3e0953307216c58.js\",\"8067\",\"static/chunks/8067-d976b441a104ab74.js\",\"8619\",\"static/chunks/8619-4365e03a2862830f.js\",\"5791\",\"static/chunks/5791-bb82743fa6299562.js\",\"7177\",\"static/chunks/app/layout-9567560270857531.js\"],\"TooltipProvider\"]\n"])</script><script>self.__next_f.push([1,"8:I[21545,[\"2977\",\"static/chunks/2977-e38442e86289f1d3.js\",\"920\",\"static/chunks/920-f7dceb78f1c585ef.js\",\"6062\",\"static/chunks/6062-73e68343a9814f6a.js\",\"7990\",\"static/chunks/7990-e12efba616f46e03.js\",\"6998\",\"static/chunks/6998-a654fe5c58271600.js\",\"1201\",\"static/chunks/1201-09613bce624467c0.js\",\"7032\",\"static/chunks/7032-f4ef698518fba61c.js\",\"8519\",\"static/chunks/8519-5632377cce994f86.js\",\"2375\",\"static/chunks/2375-cb6debea56cce4fb.js\",\"9454\",\"static/chunks/9454-a3e0953307216c58.js\",\"8067\",\"static/chunks/8067-d976b441a104ab74.js\",\"8619\",\"static/chunks/8619-4365e03a2862830f.js\",\"5791\",\"static/chunks/5791-bb82743fa6299562.js\",\"7177\",\"static/chunks/app/layout-9567560270857531.js\"],\"ToastProvider\"]\n"])</script><script>self.__next_f.push([1,"9:I[85258,[\"2977\",\"static/chunks/2977-e38442e86289f1d3.js\",\"920\",\"static/chunks/920-f7dceb78f1c585ef.js\",\"6062\",\"static/chunks/6062-73e68343a9814f6a.js\",\"7990\",\"static/chunks/7990-e12efba616f46e03.js\",\"6998\",\"static/chunks/6998-a654fe5c58271600.js\",\"1201\",\"static/chunks/1201-09613bce624467c0.js\",\"7032\",\"static/chunks/7032-f4ef698518fba61c.js\",\"8519\",\"static/chunks/8519-5632377cce994f86.js\",\"2375\",\"static/chunks/2375-cb6debea56cce4fb.js\",\"9454\",\"static/chunks/9454-a3e0953307216c58.js\",\"8067\",\"static/chunks/8067-d976b441a104ab74.js\",\"8619\",\"static/chunks/8619-4365e03a2862830f.js\",\"5791\",\"static/chunks/5791-bb82743fa6299562.js\",\"7177\",\"static/chunks/app/layout-9567560270857531.js\"],\"AppShell\"]\n"])</script><script>self.__next_f.push([1,"a:I[51411,[\"2977\",\"static/chunks/2977-e38442e86289f1d3.js\",\"920\",\"static/chunks/920-f7dceb78f1c585ef.js\",\"6062\",\"static/chunks/6062-73e68343a9814f6a.js\",\"7990\",\"static/chunks/7990-e12efba616f46e03.js\",\"6998\",\"static/chunks/6998-a654fe5c58271600.js\",\"1201\",\"static/chunks/1201-09613bce624467c0.js\",\"7032\",\"static/chunks/7032-f4ef698518fba61c.js\",\"8519\",\"static/chunks/8519-5632377cce994f86.js\",\"2375\",\"static/chunks/2375-cb6debea56cce4fb.js\",\"9454\",\"static/chunks/9454-a3e0953307216c58.js\",\"8067\",\"static/chunks/8067-d976b441a104ab74.js\",\"8619\",\"static/chunks/8619-4365e03a2862830f.js\",\"5791\",\"static/chunks/5791-bb82743fa6299562.js\",\"7177\",\"static/chunks/app/layout-9567560270857531.js\"],\"MaturityBanner\"]\n"])</script><script>self.__next_f.push([1,"b:I[57048,[],\"\"]\nc:I[75854,[],\"\"]\nd:I[70766,[\"2977\",\"static/chunks/2977-e38442e86289f1d3.js\",\"920\",\"static/chunks/920-f7dceb78f1c585ef.js\",\"7990\",\"static/chunks/7990-e12efba616f46e03.js\",\"6416\",\"static/chunks/6416-505ba707cacafbba.js\",\"9454\",\"static/chunks/9454-a3e0953307216c58.js\",\"4345\",\"static/chunks/app/not-found-1ba4a5d857276334.js\"],\"default\"]\ne:I[79013,[],\"ClientPageRoot\"]\nf:I[81403,[\"920\",\"static/chunks/920-f7dceb78f1c585ef.js\",\"6998\",\"static/chunks/6998-a654fe5c58271600.js\",\"2375\",\"static/chunks/2375-cb6debea56cce4fb.js\",\"2975\",\"static/chunks/app/worktrees/page-ba058c56e38f2792.js\"],\"default\"]\n12:I[78357,[],\"OutletBoundary\"]\n14:I[70112,[],\"AsyncMetadataOutlet\"]\n16:I[78357,[],\"ViewportBoundary\"]\n18:I[78357,[],\"MetadataBoundary\"]\n19:\"$Sreact.suspense\"\n1b:I[26324,[],\"\"]\n:HL[\"/app/_next/static/media/22a5144ee8d83bca-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/app/_next/static/css/5ef72a618a8994f3.css\",\"style\"]\n:HL[\"/app/_next/static/css/04dabcbcc4bfa6db.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"lywc8m_HDzH9MKSDQhyEj\",\"p\":\"/app\",\"c\":[\"\",\"worktrees\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"worktrees\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/app/_next/static/css/5ef72a618a8994f3.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/app/_next/static/css/04dabcbcc4bfa6db.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ko\",\"className\":\"font-sans __variable_45c93f\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"link\",null,{\"rel\":\"preload\",\"as\":\"font\",\"type\":\"font/ttf\",\"href\":\"/app/fonts/JetBrainsMonoNerdFontMono-Regular.ttf\",\"crossOrigin\":\"anonymous\"}]}],[\"$\",\"body\",null,{\"className\":\"min-h-screen bg-background text-foreground antialiased\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$L9\",null,{\"children\":[[\"$\",\"$La\",null,{}],[\"$\",\"$Lb\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lc\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$Ld\",null,{}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]}]}]}]}]}]]}]]}]]}],{\"children\":[\"worktrees\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lc\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$Le\",null,{\"Component\":\"$f\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@10\",\"$@11\"]}],null,[\"$\",\"$L12\",null,{\"children\":[\"$L13\",[\"$\",\"$L14\",null,{\"promise\":\"$@15\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$L16\",null,{\"children\":\"$L17\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$L18\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$19\",null,{\"fallback\":null,\"children\":\"$L1a\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$1b\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"10:{}\n11:\"$0:f:0:1:2:children:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"17:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#1e1e2e\"}]]\n13:null\n"])</script><script>self.__next_f.push([1,"1c:I[48592,[],\"IconMark\"]\n"])</script><script>self.__next_f.push([1,"15:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"elanous\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"elanous — voice · chat · intake · control · terminal.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"elanous\"}],[\"$\",\"link\",\"3\",{\"rel\":\"manifest\",\"href\":\"/app/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/app/icons/elanous-32.png\",\"sizes\":\"32x32\",\"type\":\"image/png\"}],[\"$\",\"link\",\"5\",{\"rel\":\"icon\",\"href\":\"/app/icons/elanous-16.png\",\"sizes\":\"16x16\",\"type\":\"image/png\"}],[\"$\",\"link\",\"6\",{\"rel\":\"apple-touch-icon\",\"href\":\"/app/icons/elanous-180.png\",\"sizes\":\"180x180\",\"type\":\"image/png\"}],[\"$\",\"$L1c\",\"7\",{}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"1a:\"$15:metadata\"\n"])</script></body></html>
@@ -1,32 +1,32 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[94529,["3165","static/chunks/3165-95515ca5f299a120.js","8612","static/chunks/8612-4a0066f20951b8fd.js","4240","static/chunks/4240-7153881b0b377306.js","5423","static/chunks/5423-e95fd125d1794349.js","5110","static/chunks/5110-8058791dd25a2e14.js","8071","static/chunks/8071-187edbc22a86741f.js","5478","static/chunks/5478-b5eae07dc79ea619.js","5787","static/chunks/5787-96ee6642b9a661e5.js","3995","static/chunks/3995-bee512a7063036ce.js","7007","static/chunks/7007-3b9861091bb8dd21.js","9328","static/chunks/9328-45abdebce4fbecb7.js","1947","static/chunks/1947-9d64872eeb9cfdec.js","763","static/chunks/763-7d0e1913b5074e98.js","7177","static/chunks/app/layout-236b80d202110362.js"],"ServiceWorkerRegister"]
3
- 3:I[13914,["3165","static/chunks/3165-95515ca5f299a120.js","8612","static/chunks/8612-4a0066f20951b8fd.js","4240","static/chunks/4240-7153881b0b377306.js","5423","static/chunks/5423-e95fd125d1794349.js","5110","static/chunks/5110-8058791dd25a2e14.js","8071","static/chunks/8071-187edbc22a86741f.js","5478","static/chunks/5478-b5eae07dc79ea619.js","5787","static/chunks/5787-96ee6642b9a661e5.js","3995","static/chunks/3995-bee512a7063036ce.js","7007","static/chunks/7007-3b9861091bb8dd21.js","9328","static/chunks/9328-45abdebce4fbecb7.js","1947","static/chunks/1947-9d64872eeb9cfdec.js","763","static/chunks/763-7d0e1913b5074e98.js","7177","static/chunks/app/layout-236b80d202110362.js"],"NewBuildBanner"]
4
- 4:I[45787,["3165","static/chunks/3165-95515ca5f299a120.js","8612","static/chunks/8612-4a0066f20951b8fd.js","4240","static/chunks/4240-7153881b0b377306.js","5423","static/chunks/5423-e95fd125d1794349.js","5110","static/chunks/5110-8058791dd25a2e14.js","8071","static/chunks/8071-187edbc22a86741f.js","5478","static/chunks/5478-b5eae07dc79ea619.js","5787","static/chunks/5787-96ee6642b9a661e5.js","3995","static/chunks/3995-bee512a7063036ce.js","7007","static/chunks/7007-3b9861091bb8dd21.js","9328","static/chunks/9328-45abdebce4fbecb7.js","1947","static/chunks/1947-9d64872eeb9cfdec.js","763","static/chunks/763-7d0e1913b5074e98.js","7177","static/chunks/app/layout-236b80d202110362.js"],"DaemonProvider"]
5
- 5:I[84619,["3165","static/chunks/3165-95515ca5f299a120.js","8612","static/chunks/8612-4a0066f20951b8fd.js","4240","static/chunks/4240-7153881b0b377306.js","5423","static/chunks/5423-e95fd125d1794349.js","5110","static/chunks/5110-8058791dd25a2e14.js","8071","static/chunks/8071-187edbc22a86741f.js","5478","static/chunks/5478-b5eae07dc79ea619.js","5787","static/chunks/5787-96ee6642b9a661e5.js","3995","static/chunks/3995-bee512a7063036ce.js","7007","static/chunks/7007-3b9861091bb8dd21.js","9328","static/chunks/9328-45abdebce4fbecb7.js","1947","static/chunks/1947-9d64872eeb9cfdec.js","763","static/chunks/763-7d0e1913b5074e98.js","7177","static/chunks/app/layout-236b80d202110362.js"],"NexusClientProvider"]
6
- 6:I[69004,["3165","static/chunks/3165-95515ca5f299a120.js","8612","static/chunks/8612-4a0066f20951b8fd.js","4240","static/chunks/4240-7153881b0b377306.js","5423","static/chunks/5423-e95fd125d1794349.js","5110","static/chunks/5110-8058791dd25a2e14.js","8071","static/chunks/8071-187edbc22a86741f.js","5478","static/chunks/5478-b5eae07dc79ea619.js","5787","static/chunks/5787-96ee6642b9a661e5.js","3995","static/chunks/3995-bee512a7063036ce.js","7007","static/chunks/7007-3b9861091bb8dd21.js","9328","static/chunks/9328-45abdebce4fbecb7.js","1947","static/chunks/1947-9d64872eeb9cfdec.js","763","static/chunks/763-7d0e1913b5074e98.js","7177","static/chunks/app/layout-236b80d202110362.js"],"ThemeProvider"]
7
- 7:I[32427,["3165","static/chunks/3165-95515ca5f299a120.js","8612","static/chunks/8612-4a0066f20951b8fd.js","4240","static/chunks/4240-7153881b0b377306.js","5423","static/chunks/5423-e95fd125d1794349.js","5110","static/chunks/5110-8058791dd25a2e14.js","8071","static/chunks/8071-187edbc22a86741f.js","5478","static/chunks/5478-b5eae07dc79ea619.js","5787","static/chunks/5787-96ee6642b9a661e5.js","3995","static/chunks/3995-bee512a7063036ce.js","7007","static/chunks/7007-3b9861091bb8dd21.js","9328","static/chunks/9328-45abdebce4fbecb7.js","1947","static/chunks/1947-9d64872eeb9cfdec.js","763","static/chunks/763-7d0e1913b5074e98.js","7177","static/chunks/app/layout-236b80d202110362.js"],"TooltipProvider"]
8
- 8:I[42908,["3165","static/chunks/3165-95515ca5f299a120.js","8612","static/chunks/8612-4a0066f20951b8fd.js","4240","static/chunks/4240-7153881b0b377306.js","5423","static/chunks/5423-e95fd125d1794349.js","5110","static/chunks/5110-8058791dd25a2e14.js","8071","static/chunks/8071-187edbc22a86741f.js","5478","static/chunks/5478-b5eae07dc79ea619.js","5787","static/chunks/5787-96ee6642b9a661e5.js","3995","static/chunks/3995-bee512a7063036ce.js","7007","static/chunks/7007-3b9861091bb8dd21.js","9328","static/chunks/9328-45abdebce4fbecb7.js","1947","static/chunks/1947-9d64872eeb9cfdec.js","763","static/chunks/763-7d0e1913b5074e98.js","7177","static/chunks/app/layout-236b80d202110362.js"],"ToastProvider"]
9
- 9:I[84428,["3165","static/chunks/3165-95515ca5f299a120.js","8612","static/chunks/8612-4a0066f20951b8fd.js","4240","static/chunks/4240-7153881b0b377306.js","5423","static/chunks/5423-e95fd125d1794349.js","5110","static/chunks/5110-8058791dd25a2e14.js","8071","static/chunks/8071-187edbc22a86741f.js","5478","static/chunks/5478-b5eae07dc79ea619.js","5787","static/chunks/5787-96ee6642b9a661e5.js","3995","static/chunks/3995-bee512a7063036ce.js","7007","static/chunks/7007-3b9861091bb8dd21.js","9328","static/chunks/9328-45abdebce4fbecb7.js","1947","static/chunks/1947-9d64872eeb9cfdec.js","763","static/chunks/763-7d0e1913b5074e98.js","7177","static/chunks/app/layout-236b80d202110362.js"],"AppShell"]
10
- a:I[70655,["3165","static/chunks/3165-95515ca5f299a120.js","8612","static/chunks/8612-4a0066f20951b8fd.js","4240","static/chunks/4240-7153881b0b377306.js","5423","static/chunks/5423-e95fd125d1794349.js","5110","static/chunks/5110-8058791dd25a2e14.js","8071","static/chunks/8071-187edbc22a86741f.js","5478","static/chunks/5478-b5eae07dc79ea619.js","5787","static/chunks/5787-96ee6642b9a661e5.js","3995","static/chunks/3995-bee512a7063036ce.js","7007","static/chunks/7007-3b9861091bb8dd21.js","9328","static/chunks/9328-45abdebce4fbecb7.js","1947","static/chunks/1947-9d64872eeb9cfdec.js","763","static/chunks/763-7d0e1913b5074e98.js","7177","static/chunks/app/layout-236b80d202110362.js"],"MaturityBanner"]
11
- b:I[55850,[],""]
12
- c:I[26184,[],""]
13
- d:I[13746,["3165","static/chunks/3165-95515ca5f299a120.js","8612","static/chunks/8612-4a0066f20951b8fd.js","5423","static/chunks/5423-e95fd125d1794349.js","6448","static/chunks/6448-79d72368589f98bc.js","9328","static/chunks/9328-45abdebce4fbecb7.js","4345","static/chunks/app/not-found-7c0f85fbb56f64c6.js"],"default"]
14
- e:I[63787,[],"ClientPageRoot"]
15
- f:I[79999,["8612","static/chunks/8612-4a0066f20951b8fd.js","5110","static/chunks/5110-8058791dd25a2e14.js","3995","static/chunks/3995-bee512a7063036ce.js","2975","static/chunks/app/worktrees/page-c3890e90bd232732.js"],"default"]
16
- 12:I[69219,[],"OutletBoundary"]
17
- 14:I[91698,[],"AsyncMetadataOutlet"]
18
- 16:I[69219,[],"ViewportBoundary"]
19
- 18:I[69219,[],"MetadataBoundary"]
2
+ 2:I[67976,["2977","static/chunks/2977-e38442e86289f1d3.js","920","static/chunks/920-f7dceb78f1c585ef.js","6062","static/chunks/6062-73e68343a9814f6a.js","7990","static/chunks/7990-e12efba616f46e03.js","6998","static/chunks/6998-a654fe5c58271600.js","1201","static/chunks/1201-09613bce624467c0.js","7032","static/chunks/7032-f4ef698518fba61c.js","8519","static/chunks/8519-5632377cce994f86.js","2375","static/chunks/2375-cb6debea56cce4fb.js","9454","static/chunks/9454-a3e0953307216c58.js","8067","static/chunks/8067-d976b441a104ab74.js","8619","static/chunks/8619-4365e03a2862830f.js","5791","static/chunks/5791-bb82743fa6299562.js","7177","static/chunks/app/layout-9567560270857531.js"],"ServiceWorkerRegister"]
3
+ 3:I[12248,["2977","static/chunks/2977-e38442e86289f1d3.js","920","static/chunks/920-f7dceb78f1c585ef.js","6062","static/chunks/6062-73e68343a9814f6a.js","7990","static/chunks/7990-e12efba616f46e03.js","6998","static/chunks/6998-a654fe5c58271600.js","1201","static/chunks/1201-09613bce624467c0.js","7032","static/chunks/7032-f4ef698518fba61c.js","8519","static/chunks/8519-5632377cce994f86.js","2375","static/chunks/2375-cb6debea56cce4fb.js","9454","static/chunks/9454-a3e0953307216c58.js","8067","static/chunks/8067-d976b441a104ab74.js","8619","static/chunks/8619-4365e03a2862830f.js","5791","static/chunks/5791-bb82743fa6299562.js","7177","static/chunks/app/layout-9567560270857531.js"],"NewBuildBanner"]
4
+ 4:I[38519,["2977","static/chunks/2977-e38442e86289f1d3.js","920","static/chunks/920-f7dceb78f1c585ef.js","6062","static/chunks/6062-73e68343a9814f6a.js","7990","static/chunks/7990-e12efba616f46e03.js","6998","static/chunks/6998-a654fe5c58271600.js","1201","static/chunks/1201-09613bce624467c0.js","7032","static/chunks/7032-f4ef698518fba61c.js","8519","static/chunks/8519-5632377cce994f86.js","2375","static/chunks/2375-cb6debea56cce4fb.js","9454","static/chunks/9454-a3e0953307216c58.js","8067","static/chunks/8067-d976b441a104ab74.js","8619","static/chunks/8619-4365e03a2862830f.js","5791","static/chunks/5791-bb82743fa6299562.js","7177","static/chunks/app/layout-9567560270857531.js"],"DaemonProvider"]
5
+ 5:I[8687,["2977","static/chunks/2977-e38442e86289f1d3.js","920","static/chunks/920-f7dceb78f1c585ef.js","6062","static/chunks/6062-73e68343a9814f6a.js","7990","static/chunks/7990-e12efba616f46e03.js","6998","static/chunks/6998-a654fe5c58271600.js","1201","static/chunks/1201-09613bce624467c0.js","7032","static/chunks/7032-f4ef698518fba61c.js","8519","static/chunks/8519-5632377cce994f86.js","2375","static/chunks/2375-cb6debea56cce4fb.js","9454","static/chunks/9454-a3e0953307216c58.js","8067","static/chunks/8067-d976b441a104ab74.js","8619","static/chunks/8619-4365e03a2862830f.js","5791","static/chunks/5791-bb82743fa6299562.js","7177","static/chunks/app/layout-9567560270857531.js"],"NexusClientProvider"]
6
+ 6:I[94936,["2977","static/chunks/2977-e38442e86289f1d3.js","920","static/chunks/920-f7dceb78f1c585ef.js","6062","static/chunks/6062-73e68343a9814f6a.js","7990","static/chunks/7990-e12efba616f46e03.js","6998","static/chunks/6998-a654fe5c58271600.js","1201","static/chunks/1201-09613bce624467c0.js","7032","static/chunks/7032-f4ef698518fba61c.js","8519","static/chunks/8519-5632377cce994f86.js","2375","static/chunks/2375-cb6debea56cce4fb.js","9454","static/chunks/9454-a3e0953307216c58.js","8067","static/chunks/8067-d976b441a104ab74.js","8619","static/chunks/8619-4365e03a2862830f.js","5791","static/chunks/5791-bb82743fa6299562.js","7177","static/chunks/app/layout-9567560270857531.js"],"ThemeProvider"]
7
+ 7:I[85039,["2977","static/chunks/2977-e38442e86289f1d3.js","920","static/chunks/920-f7dceb78f1c585ef.js","6062","static/chunks/6062-73e68343a9814f6a.js","7990","static/chunks/7990-e12efba616f46e03.js","6998","static/chunks/6998-a654fe5c58271600.js","1201","static/chunks/1201-09613bce624467c0.js","7032","static/chunks/7032-f4ef698518fba61c.js","8519","static/chunks/8519-5632377cce994f86.js","2375","static/chunks/2375-cb6debea56cce4fb.js","9454","static/chunks/9454-a3e0953307216c58.js","8067","static/chunks/8067-d976b441a104ab74.js","8619","static/chunks/8619-4365e03a2862830f.js","5791","static/chunks/5791-bb82743fa6299562.js","7177","static/chunks/app/layout-9567560270857531.js"],"TooltipProvider"]
8
+ 8:I[21545,["2977","static/chunks/2977-e38442e86289f1d3.js","920","static/chunks/920-f7dceb78f1c585ef.js","6062","static/chunks/6062-73e68343a9814f6a.js","7990","static/chunks/7990-e12efba616f46e03.js","6998","static/chunks/6998-a654fe5c58271600.js","1201","static/chunks/1201-09613bce624467c0.js","7032","static/chunks/7032-f4ef698518fba61c.js","8519","static/chunks/8519-5632377cce994f86.js","2375","static/chunks/2375-cb6debea56cce4fb.js","9454","static/chunks/9454-a3e0953307216c58.js","8067","static/chunks/8067-d976b441a104ab74.js","8619","static/chunks/8619-4365e03a2862830f.js","5791","static/chunks/5791-bb82743fa6299562.js","7177","static/chunks/app/layout-9567560270857531.js"],"ToastProvider"]
9
+ 9:I[85258,["2977","static/chunks/2977-e38442e86289f1d3.js","920","static/chunks/920-f7dceb78f1c585ef.js","6062","static/chunks/6062-73e68343a9814f6a.js","7990","static/chunks/7990-e12efba616f46e03.js","6998","static/chunks/6998-a654fe5c58271600.js","1201","static/chunks/1201-09613bce624467c0.js","7032","static/chunks/7032-f4ef698518fba61c.js","8519","static/chunks/8519-5632377cce994f86.js","2375","static/chunks/2375-cb6debea56cce4fb.js","9454","static/chunks/9454-a3e0953307216c58.js","8067","static/chunks/8067-d976b441a104ab74.js","8619","static/chunks/8619-4365e03a2862830f.js","5791","static/chunks/5791-bb82743fa6299562.js","7177","static/chunks/app/layout-9567560270857531.js"],"AppShell"]
10
+ a:I[51411,["2977","static/chunks/2977-e38442e86289f1d3.js","920","static/chunks/920-f7dceb78f1c585ef.js","6062","static/chunks/6062-73e68343a9814f6a.js","7990","static/chunks/7990-e12efba616f46e03.js","6998","static/chunks/6998-a654fe5c58271600.js","1201","static/chunks/1201-09613bce624467c0.js","7032","static/chunks/7032-f4ef698518fba61c.js","8519","static/chunks/8519-5632377cce994f86.js","2375","static/chunks/2375-cb6debea56cce4fb.js","9454","static/chunks/9454-a3e0953307216c58.js","8067","static/chunks/8067-d976b441a104ab74.js","8619","static/chunks/8619-4365e03a2862830f.js","5791","static/chunks/5791-bb82743fa6299562.js","7177","static/chunks/app/layout-9567560270857531.js"],"MaturityBanner"]
11
+ b:I[57048,[],""]
12
+ c:I[75854,[],""]
13
+ d:I[70766,["2977","static/chunks/2977-e38442e86289f1d3.js","920","static/chunks/920-f7dceb78f1c585ef.js","7990","static/chunks/7990-e12efba616f46e03.js","6416","static/chunks/6416-505ba707cacafbba.js","9454","static/chunks/9454-a3e0953307216c58.js","4345","static/chunks/app/not-found-1ba4a5d857276334.js"],"default"]
14
+ e:I[79013,[],"ClientPageRoot"]
15
+ f:I[81403,["920","static/chunks/920-f7dceb78f1c585ef.js","6998","static/chunks/6998-a654fe5c58271600.js","2375","static/chunks/2375-cb6debea56cce4fb.js","2975","static/chunks/app/worktrees/page-ba058c56e38f2792.js"],"default"]
16
+ 12:I[78357,[],"OutletBoundary"]
17
+ 14:I[70112,[],"AsyncMetadataOutlet"]
18
+ 16:I[78357,[],"ViewportBoundary"]
19
+ 18:I[78357,[],"MetadataBoundary"]
20
20
  19:"$Sreact.suspense"
21
- 1b:I[57762,[],""]
21
+ 1b:I[26324,[],""]
22
22
  :HL["/app/_next/static/media/22a5144ee8d83bca-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
23
- :HL["/app/_next/static/css/eaa74e8bb2f62269.css","style"]
23
+ :HL["/app/_next/static/css/5ef72a618a8994f3.css","style"]
24
24
  :HL["/app/_next/static/css/04dabcbcc4bfa6db.css","style"]
25
- 0:{"P":null,"b":"qMI0jnlZaBjjm4aIDYNGM","p":"/app","c":["","worktrees",""],"i":false,"f":[[["",{"children":["worktrees",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/app/_next/static/css/eaa74e8bb2f62269.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/app/_next/static/css/04dabcbcc4bfa6db.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"ko","className":"font-sans __variable_45c93f","children":[["$","head",null,{"children":["$","link",null,{"rel":"preload","as":"font","type":"font/ttf","href":"/app/fonts/JetBrainsMonoNerdFontMono-Regular.ttf","crossOrigin":"anonymous"}]}],["$","body",null,{"className":"min-h-screen bg-background text-foreground antialiased","children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":["$","$L5",null,{"children":["$","$L6",null,{"children":["$","$L7",null,{"children":["$","$L8",null,{"children":["$","$L9",null,{"children":[["$","$La",null,{}],["$","$Lb",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Lc",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","$Ld",null,{}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}]}]}]}]}]}]]}]]}]]}],{"children":["worktrees",["$","$1","c",{"children":[null,["$","$Lb",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Lc",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Le",null,{"Component":"$f","searchParams":{},"params":{},"promises":["$@10","$@11"]}],null,["$","$L12",null,{"children":["$L13",["$","$L14",null,{"promise":"$@15"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$L16",null,{"children":"$L17"}],["$","meta",null,{"name":"next-size-adjust","content":""}]],["$","$L18",null,{"children":["$","div",null,{"hidden":true,"children":["$","$19",null,{"fallback":null,"children":"$L1a"}]}]}]]}],false]],"m":"$undefined","G":["$1b",[]],"s":false,"S":true}
25
+ 0:{"P":null,"b":"lywc8m_HDzH9MKSDQhyEj","p":"/app","c":["","worktrees",""],"i":false,"f":[[["",{"children":["worktrees",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/app/_next/static/css/5ef72a618a8994f3.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/app/_next/static/css/04dabcbcc4bfa6db.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"ko","className":"font-sans __variable_45c93f","children":[["$","head",null,{"children":["$","link",null,{"rel":"preload","as":"font","type":"font/ttf","href":"/app/fonts/JetBrainsMonoNerdFontMono-Regular.ttf","crossOrigin":"anonymous"}]}],["$","body",null,{"className":"min-h-screen bg-background text-foreground antialiased","children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":["$","$L5",null,{"children":["$","$L6",null,{"children":["$","$L7",null,{"children":["$","$L8",null,{"children":["$","$L9",null,{"children":[["$","$La",null,{}],["$","$Lb",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Lc",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","$Ld",null,{}],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}]}]}]}]}]}]]}]]}]]}],{"children":["worktrees",["$","$1","c",{"children":[null,["$","$Lb",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Lc",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Le",null,{"Component":"$f","searchParams":{},"params":{},"promises":["$@10","$@11"]}],null,["$","$L12",null,{"children":["$L13",["$","$L14",null,{"promise":"$@15"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$L16",null,{"children":"$L17"}],["$","meta",null,{"name":"next-size-adjust","content":""}]],["$","$L18",null,{"children":["$","div",null,{"hidden":true,"children":["$","$19",null,{"fallback":null,"children":"$L1a"}]}]}]]}],false]],"m":"$undefined","G":["$1b",[]],"s":false,"S":true}
26
26
  10:{}
27
27
  11:"$0:f:0:1:2:children:2:children:1:props:children:0:props:params"
28
28
  17:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","2",{"name":"theme-color","content":"#1e1e2e"}]]
29
29
  13:null
30
- 1c:I[2394,[],"IconMark"]
30
+ 1c:I[48592,[],"IconMark"]
31
31
  15:{"metadata":[["$","title","0",{"children":"elanous"}],["$","meta","1",{"name":"description","content":"elanous — voice · chat · intake · control · terminal."}],["$","meta","2",{"name":"application-name","content":"elanous"}],["$","link","3",{"rel":"manifest","href":"/app/manifest.webmanifest","crossOrigin":"$undefined"}],["$","link","4",{"rel":"icon","href":"/app/icons/elanous-32.png","sizes":"32x32","type":"image/png"}],["$","link","5",{"rel":"icon","href":"/app/icons/elanous-16.png","sizes":"16x16","type":"image/png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/app/icons/elanous-180.png","sizes":"180x180","type":"image/png"}],["$","$L1c","7",{}]],"error":null,"digest":"$undefined"}
32
32
  1a:"$15:metadata"
@@ -0,0 +1,107 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+ // npm 설치 입구(R6) — `npm i -g elanous` 는 이 파일을 `elanous`·`eln` 으로 건다. Node 로 뜬다.
4
+ // Bun 을 찾으면 `bin/elanous.mjs`(실제 배포 엔트리)로 그대로 넘기고, 없으면 설치를 안내한다.
5
+ // ⛔ 한 줄 설치기(install.sh · install.ps1)는 이 파일을 거치지 않는다 — Bun 절대 경로로 `.mjs` 를 직접 부른다.
6
+
7
+ const { spawn, spawnSync } = require('node:child_process');
8
+ const { existsSync, readFileSync, readSync } = require('node:fs');
9
+ const { delimiter, join } = require('node:path');
10
+ const os = require('node:os');
11
+
12
+ const ROOT = join(__dirname, '..');
13
+ const ENTRY = join(__dirname, 'elanous.mjs');
14
+ const IS_WIN = process.platform === 'win32';
15
+ const BUN_EXE = IS_WIN ? 'bun.exe' : 'bun';
16
+ const INSTALL_UNIX = 'curl -fsSL https://bun.sh/install | bash';
17
+ const INSTALL_WIN = 'powershell -c "irm bun.sh/install.ps1 | iex"';
18
+
19
+ /** Bun 후보 — ELANOUS_BUN → PATH → BUN_INSTALL/~/.bun/bin → npm `bun` 패키지(있을 때만). 처음 실재하는 것. */
20
+ function findBun(env) {
21
+ const candidates = [];
22
+ if (env.ELANOUS_BUN) candidates.push(env.ELANOUS_BUN);
23
+ for (const dir of String(env.PATH || env.Path || '').split(delimiter)) if (dir) candidates.push(join(dir, BUN_EXE));
24
+ const home = env.HOME || env.USERPROFILE || os.homedir();
25
+ candidates.push(join(env.BUN_INSTALL || join(home, '.bun'), 'bin', BUN_EXE));
26
+ try { candidates.push(require.resolve('bun/bin/bun.exe')); } catch { /* npm `bun` 패키지는 의존에 넣지 않는다 — 있으면 쓸 뿐 */ }
27
+ return candidates.find((p) => { try { return existsSync(p); } catch { return false; } }) || null;
28
+ }
29
+
30
+ /** Bun 없이도 `--version` 은 답한다 — 판은 package.json, 커밋은 팩에 구운 packed-revision.json(없으면 unknown). */
31
+ function packedVersion() {
32
+ let version = 'unknown';
33
+ let commit = 'unknown';
34
+ try { version = JSON.parse(readFileSync(join(ROOT, 'package.json'), 'utf8')).version || 'unknown'; } catch { /* 지어내지 않는다 */ }
35
+ try { commit = JSON.parse(readFileSync(join(ROOT, 'src', 'version', 'packed-revision.json'), 'utf8')).commit || 'unknown'; } catch { /* 체크아웃이면 없다 */ }
36
+ return `${version} ${commit}`;
37
+ }
38
+
39
+ function run(bun, args) {
40
+ const child = spawn(bun, [ENTRY, ...args], { stdio: 'inherit' });
41
+ // SIGINT 는 터미널이 프로세스 그룹 전체(자식 포함)에 보낸다 → 부모는 무시하고 자식(TUI)이 처리한다.
42
+ // SIGTERM·SIGHUP·SIGQUIT 는 부모 «하나»에만 올 수 있다(kill <pid> · launchd · 크론) → 자식에게 넘긴다(TC 리뷰 #22241).
43
+ try { process.on('SIGINT', () => {}); } catch { /* Windows */ }
44
+ for (const sig of ['SIGTERM', 'SIGHUP', 'SIGQUIT']) {
45
+ try { process.on(sig, () => { try { child.kill(sig); } catch { /* 이미 끝났다 */ } }); } catch { /* Windows 일부 신호 */ }
46
+ }
47
+ child.on('error', (err) => {
48
+ process.stderr.write(`elanous: Bun 을 실행하지 못했습니다 (${bun}): ${err.message}\n`);
49
+ process.exit(1);
50
+ });
51
+ child.on('exit', (code, signal) => {
52
+ if (signal) {
53
+ for (const sig of ['SIGINT', 'SIGTERM', 'SIGHUP', 'SIGQUIT']) process.removeAllListeners(sig);
54
+ process.kill(process.pid, signal);
55
+ return;
56
+ }
57
+ process.exit(code == null ? 1 : code);
58
+ });
59
+ }
60
+
61
+ function askYes(question) {
62
+ process.stderr.write(question);
63
+ const buf = Buffer.alloc(16);
64
+ try {
65
+ const n = readSync(0, buf, 0, buf.length, null);
66
+ return /^\s*y/i.test(buf.toString('utf8', 0, n));
67
+ } catch {
68
+ return false;
69
+ }
70
+ }
71
+
72
+ function main() {
73
+ const args = process.argv.slice(2);
74
+ let bun = findBun(process.env);
75
+ if (bun) return run(bun, args);
76
+
77
+ if (args.length === 1 && (args[0] === '--version' || args[0] === '-V')) {
78
+ process.stdout.write(`${packedVersion()}\n`);
79
+ return process.exit(0);
80
+ }
81
+
82
+ const install = IS_WIN ? INSTALL_WIN : INSTALL_UNIX;
83
+ process.stderr.write([
84
+ 'elanous needs Bun (>= 1.3.5), and Bun was not found. / elanous 는 Bun 위에서 돕니다 — Bun 을 찾지 못했습니다.',
85
+ ` Install Bun: ${install}`,
86
+ ' Then open a new shell and run elanous again. (Or set ELANOUS_BUN=<path to bun>.)',
87
+ '',
88
+ ].join('\n'));
89
+
90
+ const interactive = process.stdin.isTTY && process.stderr.isTTY && !process.env.CI && !IS_WIN;
91
+ if (!interactive) return process.exit(1);
92
+ if (!askYes('Run the official Bun installer now? / 지금 공식 설치기를 실행할까요? [y/N] ')) return process.exit(1);
93
+
94
+ const r = spawnSync('bash', ['-c', INSTALL_UNIX], { stdio: 'inherit' });
95
+ if (r.status !== 0) {
96
+ process.stderr.write('elanous: Bun 설치가 끝나지 않았습니다 — 위 안내대로 직접 설치해 주세요.\n');
97
+ return process.exit(1);
98
+ }
99
+ bun = findBun(process.env);
100
+ if (!bun) {
101
+ process.stderr.write('elanous: Bun 을 설치했지만 찾지 못했습니다 — 새 셸에서 다시 실행해 주세요.\n');
102
+ return process.exit(1);
103
+ }
104
+ return run(bun, args);
105
+ }
106
+
107
+ main();
@@ -0,0 +1,24 @@
1
+ # 현장 피드 (EV10c · EV10d · 대표 10-01 18:4x) — 현장 폴더 → 릴스 ⊕ 4:5 캐러셀 ⊕ 캡션 → «게시 대기» → 사람이 고치고 «최종 게시» → 게시 준비 묶음.
2
+ # 정본 = <folder>/feed/feed-draft.json. PWA «게시 대기» 카드가 그 파일을 고치고(PUT), 승인 뒤 deliver 가 그 최신본을 읽는다.
3
+ # 시작·재개 = scripts/field-feed/start.ts(런을 띄우고 승인 결정이 기록되면 --resume). ⛔ 인스타 자동 게시 없음.
4
+ graph_id: field-feed
5
+ loop:
6
+ title: 현장 피드
7
+ description: 현장 사진에서 릴스·캐러셀·캡션을 만들어 게시 대기열에 올리고, 사람이 승인하면 게시 준비 묶음을 보낸다
8
+ trigger:
9
+ events: [manual]
10
+ version: 1
11
+ entry_node: reel
12
+ terminal_nodes: [done, failed]
13
+ nodes:
14
+ - { node_id: reel, kind: agent, recipe: 'cmd:reel', max_visits: 1 }
15
+ - { node_id: feed, kind: agent, recipe: 'cmd:feed', max_visits: 1 }
16
+ - { node_id: post, kind: hitl, recipe: 'approval:post', max_visits: 1 }
17
+ - { node_id: deliver, kind: agent, recipe: 'cmd:deliver', max_visits: 1 }
18
+ - { node_id: done, kind: gate, max_visits: 1 }
19
+ - { node_id: failed, kind: gate, max_visits: 1 }
20
+ edges:
21
+ - { from: reel, on: outcome, map: { ok: feed, fail: feed, error: feed } }
22
+ - { from: feed, on: outcome, map: { ok: post, fail: failed, error: failed } }
23
+ - { from: post, on: outcome, map: { ok: deliver, fail: failed, error: failed } }
24
+ - { from: deliver, on: outcome, map: { ok: done, fail: failed, error: failed } }
@@ -0,0 +1,12 @@
1
+ # reel: 데몬 자동 렌더가 이미 끝냈으면 그대로 쓴다(같은 사진을 두 번 렌더하지 않는다). 릴스가 실패해도 캐러셀은 간다.
2
+ reel:
3
+ command: 'bun "$ELANOUS_GRAPH_DIR/../../scripts/field-feed/reel-node.ts"'
4
+ timeout_ms: 600000
5
+ feed:
6
+ command: 'bun "$ELANOUS_GRAPH_DIR/../../scripts/field-feed/feed-node.ts"'
7
+ timeout_ms: 300000
8
+ post:
9
+ approval: '{"kind":"feed-preview"}'
10
+ deliver:
11
+ command: 'bun "$ELANOUS_GRAPH_DIR/../../scripts/field-feed/deliver-node.ts"'
12
+ timeout_ms: 300000
@@ -12,11 +12,13 @@ nodes:
12
12
  - { node_id: collect, kind: observe, recipe: 'cmd:collect', max_visits: 1 }
13
13
  - { node_id: must-fix-match, kind: judge, recipe: 'cmd:must-fix-match', max_visits: 1 }
14
14
  - { node_id: verify-needed, kind: observe, recipe: 'cmd:verify-needed', max_visits: 1 }
15
+ - { node_id: clean-checkout, kind: observe, recipe: 'cmd:clean-checkout', max_visits: 1 }
15
16
  - { node_id: report, kind: observe, recipe: 'cmd:report', max_visits: 1 }
16
17
  - { node_id: done, kind: gate, recipe: none, max_visits: 1 }
17
18
  - { node_id: failed, kind: gate, recipe: none, max_visits: 1 }
18
19
  edges:
19
20
  - { from: collect, on: outcome, map: { ok: must-fix-match, fail: failed } }
20
21
  - { from: must-fix-match, on: outcome, map: { ok: verify-needed, fail: failed } }
21
- - { from: verify-needed, on: outcome, map: { ok: report, fail: failed } }
22
+ - { from: verify-needed, on: outcome, map: { ok: clean-checkout, fail: failed } }
23
+ - { from: clean-checkout, on: outcome, map: { ok: report, fail: failed } }
22
24
  - { from: report, on: outcome, map: { ok: done, fail: failed } }
@@ -4,5 +4,8 @@ must-fix-match:
4
4
  command: 'bun scripts/landing-heal/run-mission.ts must-fix-match'
5
5
  verify-needed:
6
6
  command: 'bun scripts/landing-heal/run-mission.ts verify-needed'
7
+ clean-checkout:
8
+ command: 'bun scripts/landing-heal/run-mission.ts clean-checkout'
9
+ timeout_ms: 1380000
7
10
  report:
8
11
  command: 'bun scripts/landing-heal/run-mission.ts report'
@@ -26,6 +26,9 @@ tui:
26
26
  docs:
27
27
  command: 'bun scripts/release-loop/docs-node.ts --json'
28
28
  timeout_ms: 1800000
29
+ known-issues:
30
+ command: 'bun scripts/release-loop/known-issues-node.ts'
31
+ timeout_ms: 600000
29
32
  notes-check:
30
33
  command: 'bun scripts/announce-loop/check-node.ts --json'
31
34
  timeout_ms: 600000
@@ -37,12 +40,19 @@ publish:
37
40
  publish-command:
38
41
  command: 'bun scripts/release-loop/publish-node.ts'
39
42
  timeout_ms: 1800000
43
+ npm-publish:
44
+ command: 'bun scripts/release-loop/npm-publish-node.ts'
45
+ # 40m default wait + two 5m commands + up to 83 bounded 15s registry inspections.
46
+ timeout_ms: 4500000
40
47
  docs-land:
41
48
  command: 'bun scripts/release-loop/docs-land-node.ts'
42
49
  timeout_ms: 1800000
43
50
  verify:
44
51
  command: 'bun scripts/release-loop/verify-node.ts'
45
52
  timeout_ms: 1800000
53
+ ops-upgrade:
54
+ command: 'bun scripts/release-loop/ops-upgrade-node.ts'
55
+ timeout_ms: 1200000
46
56
  version-dev-bump:
47
57
  command: 'bun scripts/release-loop/version-node.ts dev-bump --json'
48
58
  timeout_ms: 1800000
@@ -1,4 +1,5 @@
1
1
  # Inputs gateRemote (SSH host, e.g. node-b) and gateRemoteMirror (bare mirror path, default ~/mirror/elanous-agent.git): run gate sweeps in temporary remote clones without a matching caller checkout; omit gateRemote for local execution.
2
+ # Optional opsHosts: ['local', '<ssh-host>']; omit for no operational upgrades. Optional internalDist publishes the release checkout to the internal feed first; opsRestart: true explicitly allows daemon restarts.
2
3
  graph_id: release-loop
3
4
  loop:
4
5
  title: 릴리스
@@ -19,12 +20,15 @@ nodes:
19
20
  - { node_id: upgrade, kind: gate, recipe: 'cmd:upgrade', max_visits: 1 }
20
21
  - { node_id: tui, kind: gate, recipe: 'cmd:tui', max_visits: 1 }
21
22
  - { node_id: docs, kind: agent, recipe: 'cmd:docs', max_visits: 1 }
23
+ - { node_id: known-issues, kind: agent, recipe: 'cmd:known-issues', max_visits: 1 }
22
24
  - { node_id: notes-check, kind: gate, recipe: 'cmd:notes-check', max_visits: 1 }
23
25
  - { node_id: auto-approve, kind: gate, recipe: 'cmd:auto-approve', max_visits: 1 }
24
26
  - { node_id: approve-publish, kind: hitl, recipe: 'approval:publish', max_visits: 1 }
25
27
  - { node_id: publish, kind: git, recipe: 'cmd:publish-command', max_visits: 1 }
28
+ - { node_id: npm-publish, kind: git, recipe: 'cmd:npm-publish', max_visits: 1 }
26
29
  - { node_id: docs-land, kind: git, recipe: 'cmd:docs-land', max_visits: 1 }
27
30
  - { node_id: verify, kind: gate, recipe: 'cmd:verify', max_visits: 1 }
31
+ - { node_id: ops-upgrade, kind: agent, recipe: 'cmd:ops-upgrade', max_visits: 1 }
28
32
  - { node_id: version-dev-bump, kind: git, recipe: 'cmd:version-dev-bump', max_visits: 1 }
29
33
  - { node_id: done, kind: gate, max_visits: 1 }
30
34
  - { node_id: failed, kind: gate, max_visits: 1 }
@@ -37,11 +41,14 @@ edges:
37
41
  - { from: prepare, on: outcome, map: { ok: upgrade, fail: failed, error: failed } }
38
42
  - { from: upgrade, on: outcome, map: { ok: tui, fail: failed, error: failed } }
39
43
  - { from: tui, on: outcome, map: { ok: docs, fail: failed, error: failed } }
40
- - { from: docs, on: outcome, map: { ok: notes-check, fail: failed, error: failed } }
44
+ - { from: docs, on: outcome, map: { ok: known-issues, fail: failed, error: failed } }
45
+ - { from: known-issues, on: outcome, map: { ok: notes-check, fail: failed, error: failed } }
41
46
  - { from: notes-check, on: outcome, map: { ok: auto-approve, fail: failed, error: failed } }
42
47
  - { from: auto-approve, on: outcome, map: { ok: publish, fail: approve-publish, error: approve-publish } }
43
48
  - { from: approve-publish, on: outcome, map: { ok: publish, fail: failed } }
44
- - { from: publish, on: outcome, map: { ok: docs-land, fail: failed, error: failed } }
49
+ - { from: publish, on: outcome, map: { ok: npm-publish, fail: failed, error: failed } }
50
+ - { from: npm-publish, on: outcome, map: { ok: docs-land, fail: docs-land, error: docs-land } }
45
51
  - { from: docs-land, on: outcome, map: { ok: verify, fail: failed, error: failed } }
46
- - { from: verify, on: outcome, map: { ok: version-dev-bump, fail: failed, error: failed } }
52
+ - { from: verify, on: outcome, map: { ok: ops-upgrade, fail: failed, error: failed } }
53
+ - { from: ops-upgrade, on: outcome, map: { ok: version-dev-bump, fail: version-dev-bump, error: version-dev-bump } }
47
54
  - { from: version-dev-bump, on: outcome, map: { ok: done, fail: failed, error: failed } }
@@ -0,0 +1,9 @@
1
+ pick:
2
+ command: 'bun scripts/test-diet/node.ts pick'
3
+ timeout_ms: 120000
4
+ measure:
5
+ command: 'bun scripts/test-diet/node.ts measure'
6
+ timeout_ms: 14400000
7
+ record:
8
+ command: 'bun scripts/test-diet/node.ts record'
9
+ timeout_ms: 300000