elanous 0.2.0 → 0.2.5

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 (1249) hide show
  1. package/.env.example +6 -0
  2. package/README.md +17 -15
  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/06ef2eba-d1b99ac6d2ea663c.js +1 -0
  6. package/apps/pwa/out/_next/static/chunks/1413-7179a49332db5a80.js +1 -0
  7. package/apps/pwa/out/_next/static/chunks/150-25c277137a9638ab.js +1 -0
  8. package/apps/pwa/out/_next/static/chunks/1640-bc99ec23bbe29d12.js +1 -0
  9. package/apps/pwa/out/_next/static/chunks/1751.50b96ea9c37b49b6.js +1 -0
  10. package/apps/pwa/out/_next/static/chunks/2300-de059d0ab2a16630.js +1 -0
  11. package/apps/pwa/out/_next/static/chunks/2684-05b0a81e75298c16.js +1 -0
  12. package/apps/pwa/out/_next/static/chunks/3026-2ed7e317d9b02102.js +25 -0
  13. package/apps/pwa/out/_next/static/chunks/3611-77496ada38cd6358.js +1 -0
  14. package/apps/pwa/out/_next/static/chunks/3717-68957c4dc9ceec90.js +1 -0
  15. package/apps/pwa/out/_next/static/chunks/3929-46ba9af6f9d895cc.js +1 -0
  16. package/apps/pwa/out/_next/static/chunks/4015-62c5a3744698a8da.js +1 -0
  17. package/apps/pwa/out/_next/static/chunks/4217-3c4317a7905f9eeb.js +1 -0
  18. package/apps/pwa/out/_next/static/chunks/4240-3230f230fae2d7d5.js +1 -0
  19. package/apps/pwa/out/_next/static/chunks/4271-e53e075ebd48593b.js +1 -0
  20. package/apps/pwa/out/_next/static/chunks/4377.3b125fef79576dfd.js +5 -0
  21. package/apps/pwa/out/_next/static/chunks/4440-18bb160d95819f4e.js +1 -0
  22. package/apps/pwa/out/_next/static/chunks/4853-35fdbe6bdbcdc0fc.js +1 -0
  23. package/apps/pwa/out/_next/static/chunks/{2a79f15a-2013e4d421d6df88.js → 4daa2798-1363d725c79f3593.js} +1 -1
  24. package/apps/pwa/out/_next/static/chunks/5007-6a3b30e23ff68a6e.js +1 -0
  25. package/apps/pwa/out/_next/static/chunks/5244-12b424c42070f5ff.js +1 -0
  26. package/apps/pwa/out/_next/static/chunks/5348-bbf838e119661eee.js +1 -0
  27. package/apps/pwa/out/_next/static/chunks/5391-8793f88b03b30161.js +1 -0
  28. package/apps/pwa/out/_next/static/chunks/5611-df00af3e4e4a61bb.js +1 -0
  29. package/apps/pwa/out/_next/static/chunks/5890-dca2321773be829a.js +1 -0
  30. package/apps/pwa/out/_next/static/chunks/6123-37c9dc57ddaa7ab0.js +1 -0
  31. package/apps/pwa/out/_next/static/chunks/6588-b7975304a302ab91.js +1 -0
  32. package/apps/pwa/out/_next/static/chunks/6604-c03961962b6273b6.js +1 -0
  33. package/apps/pwa/out/_next/static/chunks/7109-cf8c87e968e83a65.js +1 -0
  34. package/apps/pwa/out/_next/static/chunks/7178-30f77877525a2efb.js +1 -0
  35. package/apps/pwa/out/_next/static/chunks/7262-871563fc9663730b.js +1 -0
  36. package/apps/pwa/out/_next/static/chunks/7294-f0eeebb92aa93459.js +1 -0
  37. package/apps/pwa/out/_next/static/chunks/7429-881af44deed6958f.js +1 -0
  38. package/apps/pwa/out/_next/static/chunks/{5927.8378481a12cc8044.js → 7527.943753b6ed829f09.js} +1 -1
  39. package/apps/pwa/out/_next/static/chunks/764-a01e858525a190c0.js +1 -0
  40. package/apps/pwa/out/_next/static/chunks/7868-e35d5f7985ecd3f1.js +1 -0
  41. package/apps/pwa/out/_next/static/chunks/8320-51484af7b01fdfa5.js +1 -0
  42. package/apps/pwa/out/_next/static/chunks/{6804.8ed6ab492bc5fc0a.js → 8617.465ca22a319c95b3.js} +1 -1
  43. package/apps/pwa/out/_next/static/chunks/{320-d7013ec072863e5e.js → 8918-482b30ce2a8ebf4c.js} +4 -4
  44. package/apps/pwa/out/_next/static/chunks/9131-52f5fad51cceca04.js +1 -0
  45. package/apps/pwa/out/_next/static/chunks/{2598.814f64e3268634e7.js → 9238.2cd5f47f4bf7a2c3.js} +1 -1
  46. package/apps/pwa/out/_next/static/chunks/9704-3221c102623c8d73.js +1 -0
  47. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-70c404c7bb6d7f0f.js +1 -0
  48. package/apps/pwa/out/_next/static/chunks/app/approvals/page-3ffd80166b1050aa.js +1 -0
  49. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-f89e9a303515a033.js +1 -0
  50. package/apps/pwa/out/_next/static/chunks/app/board/page-4f403cd060442c95.js +1 -0
  51. package/apps/pwa/out/_next/static/chunks/app/botlab/page-0ac5d053f0444d21.js +1 -0
  52. package/apps/pwa/out/_next/static/chunks/app/bots/page-4bcc63e272ae8205.js +1 -0
  53. package/apps/pwa/out/_next/static/chunks/app/chat/page-880734bd07d62882.js +1 -0
  54. package/apps/pwa/out/_next/static/chunks/app/control/page-72bd384898d88955.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/app/design-check/page-1018bbc9586ecae5.js +1 -0
  56. package/apps/pwa/out/_next/static/chunks/app/editor/page-de86f8c38076dd7b.js +1 -0
  57. package/apps/pwa/out/_next/static/chunks/app/healthz/route-70c404c7bb6d7f0f.js +1 -0
  58. package/apps/pwa/out/_next/static/chunks/app/intake/page-cd6447196d8bafe6.js +1 -0
  59. package/apps/pwa/out/_next/static/chunks/app/layout-e733630c47fa102b.js +1 -0
  60. package/apps/pwa/out/_next/static/chunks/app/live/page-d1c1a8357b161875.js +1 -0
  61. package/apps/pwa/out/_next/static/chunks/app/market/page-60c514128e81d787.js +1 -0
  62. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-8b637b7e325e13c1.js +1 -0
  63. package/apps/pwa/out/_next/static/chunks/app/morning/page-bccce0babceae30f.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/app/not-found-63301d11dbe73836.js +1 -0
  65. package/apps/pwa/out/_next/static/chunks/app/observatory/page-a8cf0dc472060db2.js +1 -0
  66. package/apps/pwa/out/_next/static/chunks/app/page-02fba54881ccfa49.js +1 -0
  67. package/apps/pwa/out/_next/static/chunks/app/reflection/page-d5e8e90f0038f8de.js +1 -0
  68. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-b1ef6824f494466a.js +1 -0
  69. package/apps/pwa/out/_next/static/chunks/app/sessions/page-d589bb0f233b1009.js +1 -0
  70. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-c9bbaebef4cda059.js +1 -0
  71. package/apps/pwa/out/_next/static/chunks/app/settings/page-3639ce7916b92fed.js +1 -0
  72. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-7450ae7478955653.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/app/setup/layout-70c404c7bb6d7f0f.js +1 -0
  74. package/apps/pwa/out/_next/static/chunks/app/setup/page-b41ca4abfd618452.js +1 -0
  75. package/apps/pwa/out/_next/static/chunks/app/share/page-b333dd79ebee3fa9.js +1 -0
  76. package/apps/pwa/out/_next/static/chunks/app/showroom/page-8be1227492793655.js +1 -0
  77. package/apps/pwa/out/_next/static/chunks/app/tasks/page-6e03e9371b552e0d.js +1 -0
  78. package/apps/pwa/out/_next/static/chunks/app/term/page-911411e9fca18d03.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/app/trace/page-792170e649b37088.js +1 -0
  80. package/apps/pwa/out/_next/static/chunks/app/vault/page-c40463466937bc91.js +1 -0
  81. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-509c798b80384536.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/app/workflows/page-1cac2aa21d77c417.js +1 -0
  83. package/apps/pwa/out/_next/static/chunks/app/workspace/page-9626799d9b4a2cd1.js +1 -0
  84. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-84cd419494e16b0f.js +1 -0
  85. package/apps/pwa/out/_next/static/chunks/f6f3850d-7f324c6566002113.js +1 -0
  86. package/apps/pwa/out/_next/static/chunks/framework-361487d2da603917.js +1 -0
  87. package/apps/pwa/out/_next/static/chunks/main-app-607f5beb94cb2e07.js +1 -0
  88. package/apps/pwa/out/_next/static/chunks/main-d0222d219e29dddf.js +1 -0
  89. package/apps/pwa/out/_next/static/chunks/pages/_app-a26980a31126decc.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/pages/_error-edb2b37decf23e4d.js +1 -0
  91. package/apps/pwa/out/_next/static/chunks/webpack-2bf59c720fe9542c.js +1 -0
  92. package/apps/pwa/out/_next/static/css/eaa74e8bb2f62269.css +1 -0
  93. package/apps/pwa/out/_next/static/ktMqfrBbf8BMGac0jqLrb/_buildManifest.js +1 -0
  94. package/apps/pwa/out/approvals/index.html +1 -0
  95. package/apps/pwa/out/approvals/index.txt +32 -0
  96. package/apps/pwa/out/autopilot/index.html +1 -1
  97. package/apps/pwa/out/autopilot/index.txt +29 -26
  98. package/apps/pwa/out/board/index.html +1 -0
  99. package/apps/pwa/out/board/index.txt +32 -0
  100. package/apps/pwa/out/botlab/index.html +1 -1
  101. package/apps/pwa/out/botlab/index.txt +26 -23
  102. package/apps/pwa/out/bots/index.html +1 -1
  103. package/apps/pwa/out/bots/index.txt +26 -23
  104. package/apps/pwa/out/chat/index.html +1 -2
  105. package/apps/pwa/out/chat/index.txt +26 -23
  106. package/apps/pwa/out/control/index.html +1 -1
  107. package/apps/pwa/out/control/index.txt +29 -26
  108. package/apps/pwa/out/design-check/index.html +1 -1
  109. package/apps/pwa/out/design-check/index.txt +29 -26
  110. package/apps/pwa/out/editor/index.html +1 -0
  111. package/apps/pwa/out/editor/index.txt +33 -0
  112. package/apps/pwa/out/healthz +1 -1
  113. package/apps/pwa/out/icons/elanous-16.png +0 -0
  114. package/apps/pwa/out/icons/elanous-180.png +0 -0
  115. package/apps/pwa/out/icons/elanous-192.png +0 -0
  116. package/apps/pwa/out/icons/elanous-32.png +0 -0
  117. package/apps/pwa/out/icons/elanous-512.png +0 -0
  118. package/apps/pwa/out/index.html +1 -1
  119. package/apps/pwa/out/index.txt +26 -23
  120. package/apps/pwa/out/intake/index.html +1 -1
  121. package/apps/pwa/out/intake/index.txt +29 -26
  122. package/apps/pwa/out/live/index.html +1 -0
  123. package/apps/pwa/out/live/index.txt +32 -0
  124. package/apps/pwa/out/manifest.webmanifest +5 -2
  125. package/apps/pwa/out/market/index.html +1 -0
  126. package/apps/pwa/out/market/index.txt +29 -0
  127. package/apps/pwa/out/missions/placeholder/index.html +1 -1
  128. package/apps/pwa/out/missions/placeholder/index.txt +26 -23
  129. package/apps/pwa/out/morning/index.html +1 -1
  130. package/apps/pwa/out/morning/index.txt +29 -26
  131. package/apps/pwa/out/observatory/index.html +1 -1
  132. package/apps/pwa/out/observatory/index.txt +29 -26
  133. package/apps/pwa/out/reflection/index.html +1 -1
  134. package/apps/pwa/out/reflection/index.txt +27 -24
  135. package/apps/pwa/out/scheduler/index.html +1 -1
  136. package/apps/pwa/out/scheduler/index.txt +29 -26
  137. package/apps/pwa/out/sessions/index.html +1 -1
  138. package/apps/pwa/out/sessions/index.txt +26 -23
  139. package/apps/pwa/out/settings/devices/index.html +1 -1
  140. package/apps/pwa/out/settings/devices/index.txt +29 -26
  141. package/apps/pwa/out/settings/index.html +1 -1
  142. package/apps/pwa/out/settings/index.txt +29 -26
  143. package/apps/pwa/out/setup/done/index.html +1 -1
  144. package/apps/pwa/out/setup/done/index.txt +29 -26
  145. package/apps/pwa/out/setup/index.html +1 -1
  146. package/apps/pwa/out/setup/index.txt +29 -26
  147. package/apps/pwa/out/share/index.html +1 -1
  148. package/apps/pwa/out/share/index.txt +29 -26
  149. package/apps/pwa/out/showroom/index.html +1 -1
  150. package/apps/pwa/out/showroom/index.txt +26 -23
  151. package/apps/pwa/out/sw-strategies.js +44 -0
  152. package/apps/pwa/out/sw.js +6 -44
  153. package/apps/pwa/out/tasks/index.html +1 -1
  154. package/apps/pwa/out/tasks/index.txt +29 -26
  155. package/apps/pwa/out/term/index.html +1 -1
  156. package/apps/pwa/out/term/index.txt +29 -26
  157. package/apps/pwa/out/trace/index.html +1 -0
  158. package/apps/pwa/out/trace/index.txt +32 -0
  159. package/apps/pwa/out/vault/index.html +1 -1
  160. package/apps/pwa/out/vault/index.txt +29 -26
  161. package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
  162. package/apps/pwa/out/workflows/chat-ui/index.txt +29 -26
  163. package/apps/pwa/out/workflows/index.html +1 -1
  164. package/apps/pwa/out/workflows/index.txt +29 -27
  165. package/apps/pwa/out/workspace/index.html +1 -1
  166. package/apps/pwa/out/workspace/index.txt +29 -26
  167. package/apps/pwa/out/worktrees/index.html +1 -1
  168. package/apps/pwa/out/worktrees/index.txt +29 -26
  169. package/catalog/resources.yaml +14 -17
  170. package/docs/design/systems/LICENSE +201 -0
  171. package/docs/design/systems/NOTICE.md +29 -0
  172. package/docs/design/systems/SOURCE.json +291 -0
  173. package/docs/design/systems/application/DESIGN.md +71 -0
  174. package/docs/design/systems/application/manifest.json +54 -0
  175. package/docs/design/systems/application/tokens.css +63 -0
  176. package/docs/design/systems/artistic/DESIGN.md +71 -0
  177. package/docs/design/systems/artistic/manifest.json +54 -0
  178. package/docs/design/systems/artistic/tokens.css +63 -0
  179. package/docs/design/systems/bento/DESIGN.md +71 -0
  180. package/docs/design/systems/bento/manifest.json +54 -0
  181. package/docs/design/systems/bento/tokens.css +63 -0
  182. package/docs/design/systems/bold/DESIGN.md +71 -0
  183. package/docs/design/systems/bold/manifest.json +54 -0
  184. package/docs/design/systems/bold/tokens.css +63 -0
  185. package/docs/design/systems/brutalism/DESIGN.md +71 -0
  186. package/docs/design/systems/brutalism/manifest.json +54 -0
  187. package/docs/design/systems/brutalism/tokens.css +63 -0
  188. package/docs/design/systems/cafe/DESIGN.md +71 -0
  189. package/docs/design/systems/cafe/manifest.json +54 -0
  190. package/docs/design/systems/cafe/tokens.css +63 -0
  191. package/docs/design/systems/claymorphism/DESIGN.md +71 -0
  192. package/docs/design/systems/claymorphism/manifest.json +54 -0
  193. package/docs/design/systems/claymorphism/tokens.css +63 -0
  194. package/docs/design/systems/clean/DESIGN.md +71 -0
  195. package/docs/design/systems/clean/manifest.json +54 -0
  196. package/docs/design/systems/clean/tokens.css +63 -0
  197. package/docs/design/systems/colorful/DESIGN.md +71 -0
  198. package/docs/design/systems/colorful/manifest.json +54 -0
  199. package/docs/design/systems/colorful/tokens.css +63 -0
  200. package/docs/design/systems/contemporary/DESIGN.md +71 -0
  201. package/docs/design/systems/contemporary/manifest.json +54 -0
  202. package/docs/design/systems/contemporary/tokens.css +63 -0
  203. package/docs/design/systems/corporate/DESIGN.md +71 -0
  204. package/docs/design/systems/corporate/manifest.json +54 -0
  205. package/docs/design/systems/corporate/tokens.css +63 -0
  206. package/docs/design/systems/cosmic/DESIGN.md +71 -0
  207. package/docs/design/systems/cosmic/manifest.json +54 -0
  208. package/docs/design/systems/cosmic/tokens.css +63 -0
  209. package/docs/design/systems/creative/DESIGN.md +71 -0
  210. package/docs/design/systems/creative/manifest.json +54 -0
  211. package/docs/design/systems/creative/tokens.css +63 -0
  212. package/docs/design/systems/dashboard/DESIGN.md +71 -0
  213. package/docs/design/systems/dashboard/manifest.json +54 -0
  214. package/docs/design/systems/dashboard/tokens.css +63 -0
  215. package/docs/design/systems/default/DESIGN.md +62 -0
  216. package/docs/design/systems/default/manifest.json +69 -0
  217. package/docs/design/systems/default/tokens.css +200 -0
  218. package/docs/design/systems/dithered/DESIGN.md +71 -0
  219. package/docs/design/systems/dithered/manifest.json +54 -0
  220. package/docs/design/systems/dithered/tokens.css +63 -0
  221. package/docs/design/systems/doodle/DESIGN.md +71 -0
  222. package/docs/design/systems/doodle/manifest.json +54 -0
  223. package/docs/design/systems/doodle/tokens.css +63 -0
  224. package/docs/design/systems/dramatic/DESIGN.md +71 -0
  225. package/docs/design/systems/dramatic/manifest.json +54 -0
  226. package/docs/design/systems/dramatic/tokens.css +63 -0
  227. package/docs/design/systems/editorial/DESIGN.md +71 -0
  228. package/docs/design/systems/editorial/manifest.json +54 -0
  229. package/docs/design/systems/editorial/tokens.css +63 -0
  230. package/docs/design/systems/elegant/DESIGN.md +71 -0
  231. package/docs/design/systems/elegant/manifest.json +54 -0
  232. package/docs/design/systems/elegant/tokens.css +63 -0
  233. package/docs/design/systems/energetic/DESIGN.md +72 -0
  234. package/docs/design/systems/energetic/manifest.json +54 -0
  235. package/docs/design/systems/energetic/tokens.css +63 -0
  236. package/docs/design/systems/enterprise/DESIGN.md +71 -0
  237. package/docs/design/systems/enterprise/manifest.json +54 -0
  238. package/docs/design/systems/enterprise/tokens.css +63 -0
  239. package/docs/design/systems/expressive/DESIGN.md +71 -0
  240. package/docs/design/systems/expressive/manifest.json +54 -0
  241. package/docs/design/systems/expressive/tokens.css +63 -0
  242. package/docs/design/systems/fantasy/DESIGN.md +71 -0
  243. package/docs/design/systems/fantasy/manifest.json +54 -0
  244. package/docs/design/systems/fantasy/tokens.css +63 -0
  245. package/docs/design/systems/flat/DESIGN.md +71 -0
  246. package/docs/design/systems/flat/manifest.json +54 -0
  247. package/docs/design/systems/flat/tokens.css +63 -0
  248. package/docs/design/systems/friendly/DESIGN.md +71 -0
  249. package/docs/design/systems/friendly/manifest.json +54 -0
  250. package/docs/design/systems/friendly/tokens.css +63 -0
  251. package/docs/design/systems/glassmorphism/DESIGN.md +71 -0
  252. package/docs/design/systems/glassmorphism/manifest.json +54 -0
  253. package/docs/design/systems/glassmorphism/tokens.css +63 -0
  254. package/docs/design/systems/gradient/DESIGN.md +71 -0
  255. package/docs/design/systems/gradient/manifest.json +54 -0
  256. package/docs/design/systems/gradient/tokens.css +63 -0
  257. package/docs/design/systems/luxury/DESIGN.md +71 -0
  258. package/docs/design/systems/luxury/manifest.json +54 -0
  259. package/docs/design/systems/luxury/tokens.css +63 -0
  260. package/docs/design/systems/minimal/DESIGN.md +71 -0
  261. package/docs/design/systems/minimal/manifest.json +54 -0
  262. package/docs/design/systems/minimal/tokens.css +63 -0
  263. package/docs/design/systems/modern/DESIGN.md +71 -0
  264. package/docs/design/systems/modern/manifest.json +54 -0
  265. package/docs/design/systems/modern/tokens.css +63 -0
  266. package/docs/design/systems/mono/DESIGN.md +71 -0
  267. package/docs/design/systems/mono/manifest.json +54 -0
  268. package/docs/design/systems/mono/tokens.css +63 -0
  269. package/docs/design/systems/neobrutalism/DESIGN.md +71 -0
  270. package/docs/design/systems/neobrutalism/manifest.json +54 -0
  271. package/docs/design/systems/neobrutalism/tokens.css +63 -0
  272. package/docs/design/systems/neon/DESIGN.md +71 -0
  273. package/docs/design/systems/neon/manifest.json +54 -0
  274. package/docs/design/systems/neon/tokens.css +63 -0
  275. package/docs/design/systems/neumorphism/DESIGN.md +71 -0
  276. package/docs/design/systems/neumorphism/manifest.json +54 -0
  277. package/docs/design/systems/neumorphism/tokens.css +63 -0
  278. package/docs/design/systems/paper/DESIGN.md +71 -0
  279. package/docs/design/systems/paper/manifest.json +54 -0
  280. package/docs/design/systems/paper/tokens.css +63 -0
  281. package/docs/design/systems/perspective/DESIGN.md +71 -0
  282. package/docs/design/systems/perspective/manifest.json +54 -0
  283. package/docs/design/systems/perspective/tokens.css +63 -0
  284. package/docs/design/systems/premium/DESIGN.md +71 -0
  285. package/docs/design/systems/premium/manifest.json +54 -0
  286. package/docs/design/systems/premium/tokens.css +63 -0
  287. package/docs/design/systems/professional/DESIGN.md +71 -0
  288. package/docs/design/systems/professional/manifest.json +54 -0
  289. package/docs/design/systems/professional/tokens.css +63 -0
  290. package/docs/design/systems/publication/DESIGN.md +71 -0
  291. package/docs/design/systems/publication/manifest.json +54 -0
  292. package/docs/design/systems/publication/tokens.css +63 -0
  293. package/docs/design/systems/refined/DESIGN.md +71 -0
  294. package/docs/design/systems/refined/manifest.json +54 -0
  295. package/docs/design/systems/refined/tokens.css +63 -0
  296. package/docs/design/systems/retro/DESIGN.md +71 -0
  297. package/docs/design/systems/retro/manifest.json +54 -0
  298. package/docs/design/systems/retro/tokens.css +63 -0
  299. package/docs/design/systems/shadcn/DESIGN.md +71 -0
  300. package/docs/design/systems/shadcn/manifest.json +54 -0
  301. package/docs/design/systems/shadcn/tokens.css +255 -0
  302. package/docs/design/systems/simple/DESIGN.md +71 -0
  303. package/docs/design/systems/simple/manifest.json +54 -0
  304. package/docs/design/systems/simple/tokens.css +63 -0
  305. package/docs/design/systems/skeumorphism/DESIGN.md +71 -0
  306. package/docs/design/systems/skeumorphism/manifest.json +54 -0
  307. package/docs/design/systems/skeumorphism/tokens.css +63 -0
  308. package/docs/design/systems/sleek/DESIGN.md +71 -0
  309. package/docs/design/systems/sleek/manifest.json +54 -0
  310. package/docs/design/systems/sleek/tokens.css +63 -0
  311. package/docs/design/systems/spacious/DESIGN.md +71 -0
  312. package/docs/design/systems/spacious/manifest.json +54 -0
  313. package/docs/design/systems/spacious/tokens.css +63 -0
  314. package/docs/design/systems/storytelling/DESIGN.md +71 -0
  315. package/docs/design/systems/storytelling/manifest.json +54 -0
  316. package/docs/design/systems/storytelling/tokens.css +63 -0
  317. package/docs/design/systems/tom-modern/DESIGN.md +361 -0
  318. package/docs/design/systems/tom-modern/manifest.json +16 -0
  319. package/docs/design/systems/tom-modern/tokens.css +99 -0
  320. package/docs/design/systems/vibrant/DESIGN.md +71 -0
  321. package/docs/design/systems/vibrant/manifest.json +54 -0
  322. package/docs/design/systems/vibrant/tokens.css +63 -0
  323. package/docs/design/systems/vintage/DESIGN.md +71 -0
  324. package/docs/design/systems/vintage/manifest.json +54 -0
  325. package/docs/design/systems/vintage/tokens.css +63 -0
  326. package/docs/design/systems/warm-editorial/DESIGN.md +65 -0
  327. package/docs/design/systems/warm-editorial/manifest.json +54 -0
  328. package/docs/design/systems/warm-editorial/tokens.css +63 -0
  329. package/docs/goal-context/01-goal-authoring-checks.md +18 -0
  330. package/docs/goal-context/steward-directives-2026-09-28.md +42 -0
  331. package/graphs/catalog/catalog.yaml +615 -0
  332. package/graphs/default-loop.yaml +1 -1
  333. package/graphs/document-loop.yaml +1 -1
  334. package/graphs/examples/stale-draft-digest/digest.ts +26 -0
  335. package/graphs/examples/stale-draft-digest/recipes.yaml +8 -0
  336. package/graphs/examples/stale-draft-digest/stale-draft-digest.yaml +22 -0
  337. package/graphs/heal/heal-loop.yaml +155 -0
  338. package/graphs/heal/recipes.yaml +19 -0
  339. package/graphs/implement-loop.yaml +2 -2
  340. package/graphs/intake/intake-daily.yaml +55 -0
  341. package/graphs/intake/recipes.yaml +16 -0
  342. package/graphs/landing/landing-heal.yaml +22 -0
  343. package/graphs/landing/recipes.yaml +8 -0
  344. package/graphs/launch/launch-head.yaml +66 -0
  345. package/graphs/launch/recipes.yaml +8 -0
  346. package/graphs/operate-loop.yaml +1 -1
  347. package/graphs/ops/docs-publish.yaml +31 -0
  348. package/graphs/ops/recipes.yaml +8 -0
  349. package/graphs/release/recipes.yaml +45 -0
  350. package/graphs/release/release-loop.yaml +45 -0
  351. package/graphs/research-loop.yaml +1 -1
  352. package/graphs/steward/recipes.yaml +12 -0
  353. package/graphs/steward/steward.yaml +45 -0
  354. package/graphs/video/README.md +1 -0
  355. package/graphs/video/broll-line.yaml +54 -0
  356. package/graphs/video/explainer-line.yaml +58 -0
  357. package/package.json +9 -5
  358. package/plugins/job-coach/.agents/plugins/marketplace.json +12 -0
  359. package/plugins/job-coach/.codex-plugin/plugin.json +23 -0
  360. package/plugins/job-coach/.mcp.json +9 -0
  361. package/plugins/job-coach/README.md +32 -0
  362. package/plugins/job-coach/connectors/ncs/server.ts +90 -0
  363. package/plugins/job-coach/examples/interview-sample.md +11 -0
  364. package/plugins/job-coach/graphs/course-links.ts +46 -0
  365. package/plugins/job-coach/graphs/gap-judge.ts +44 -0
  366. package/plugins/job-coach/graphs/recipes.yaml +45 -0
  367. package/plugins/job-coach/graphs/report-enterprise.yaml +28 -0
  368. package/plugins/job-coach/graphs/report.yaml +20 -0
  369. package/plugins/job-coach/graphs/run-step.ts +302 -0
  370. package/plugins/job-coach/plugin.json +26 -0
  371. package/plugins/job-coach/plugin.ts +6 -0
  372. package/plugins/job-coach/skills/career-report/SKILL.md +6 -0
  373. package/plugins/job-coach/skills/enterprise-ai-fit/SKILL.md +8 -0
  374. package/plugins/job-coach/skills/enterprise-competency/SKILL.md +8 -0
  375. package/plugins/job-coach/skills/enterprise-needs/SKILL.md +8 -0
  376. package/plugins/job-coach/skills/enterprise-roadmap/SKILL.md +8 -0
  377. package/plugins/job-coach/skills/enterprise-task-analysis/SKILL.md +8 -0
  378. package/plugins/job-coach/skills/interview-to-profile/SKILL.md +23 -0
  379. package/plugins/job-coach/skills/run-report/SKILL.md +15 -0
  380. package/scripts/backup/elanous-backup.sh +143 -14
  381. package/scripts/backup/elanous-restore.sh +122 -0
  382. package/scripts/build-docs-site.ts +4 -3
  383. package/scripts/ci-daemon-port-gate.ts +164 -0
  384. package/scripts/ci-typecheck-changed.ts +15 -1
  385. package/scripts/cli-json-exit-scan.ts +126 -0
  386. package/scripts/codex-quota-alert-format.ts +52 -0
  387. package/scripts/codex-quota-alert.ts +63 -13
  388. package/scripts/continuation-dogfood.ts +2 -1
  389. package/scripts/coord-channel-watch.sh +28 -9
  390. package/scripts/coord-post.sh +49 -12
  391. package/scripts/coord-tracks.json +6 -5
  392. package/scripts/cron-run.ts +37 -16
  393. package/scripts/daemon-port-baseline.txt +9 -0
  394. package/scripts/design/extract-corpus-bench.ts +469 -0
  395. package/scripts/design/extract-corpus-score.ts +510 -0
  396. package/scripts/design/vendor-open-design-systems.ts +100 -0
  397. package/scripts/docs-lint.ts +1 -1
  398. package/scripts/eval-bot-vs-grok.ts +79 -0
  399. package/scripts/eval-grok-live-baseline.ts +36 -0
  400. package/scripts/fixtures/front-route-corpus.sample.json +17 -0
  401. package/scripts/fleet/node-setup.sh +80 -7
  402. package/scripts/heal/run-role.ts +328 -0
  403. package/scripts/install-role-watch.sh +95 -0
  404. package/scripts/install.ps1 +11 -1
  405. package/scripts/install.sh +81 -9
  406. package/scripts/isolation-hardcode-baseline.txt +1 -1
  407. package/scripts/landing-heal/must-fix-match.ts +63 -0
  408. package/scripts/landing-heal/run-mission.ts +195 -0
  409. package/scripts/lib/front-route-measurement.ts +131 -0
  410. package/scripts/lib/pwa-scenarios/acp-replay.ts +79 -0
  411. package/scripts/lib/pwa-scenarios/cdp-driver.ts +67 -0
  412. package/scripts/lib/pwa-scenarios/runner.ts +200 -0
  413. package/scripts/lib/pwa-scenarios/scenarios.ts +202 -0
  414. package/scripts/lib/tui-sim-keys.ts +42 -0
  415. package/scripts/market/db-check.ts +212 -0
  416. package/scripts/market-posture-cycle.ts +63 -4
  417. package/scripts/measure-front-route-classifier.ts +56 -0
  418. package/scripts/media/ocr-leak-scan.sh +21 -0
  419. package/scripts/nightly-docops.ts +1 -1
  420. package/scripts/ops/channel-bot-token-migrate.ts +146 -0
  421. package/scripts/ops-health-check.ts +15 -3
  422. package/scripts/pty-scenarios/run.ts +272 -0
  423. package/scripts/public-export.ts +2 -3
  424. package/scripts/public-import-pr.ts +80 -6
  425. package/scripts/public-leak-baseline.txt +0 -7
  426. package/scripts/publish-internal-dist.ts +118 -0
  427. package/scripts/pwa-scenarios.ts +106 -0
  428. package/scripts/rebrand-elanous.ts +1 -1
  429. package/scripts/red-sweep-diff.ts +1 -1
  430. package/scripts/release-loop/auto-approve-node.ts +72 -0
  431. package/scripts/release-loop/cutoff.ts +139 -0
  432. package/scripts/release-loop/docs-land-node.ts +65 -0
  433. package/scripts/release-loop/docs-node.ts +172 -0
  434. package/scripts/release-loop/gate-diff.ts +29 -0
  435. package/scripts/release-loop/gate-node.ts +641 -0
  436. package/scripts/release-loop/node-verdict.ts +85 -0
  437. package/scripts/release-loop/prepare-node.ts +31 -0
  438. package/scripts/release-loop/publish-node.ts +61 -0
  439. package/scripts/release-loop/pwa-node-verdict.ts +45 -0
  440. package/scripts/release-loop/pwa-scenarios-node.ts +140 -0
  441. package/scripts/release-loop/release-docs.ts +109 -0
  442. package/scripts/release-loop/test-durations.ts +63 -0
  443. package/scripts/release-loop/tui-node-checks.ts +29 -0
  444. package/scripts/release-loop/tui-sim-node.ts +113 -0
  445. package/scripts/release-loop/upgrade-node.ts +26 -0
  446. package/scripts/release-loop/verify-node.ts +21 -0
  447. package/scripts/release-loop/version-node.ts +147 -0
  448. package/scripts/release-upgrade-check.sh +53 -0
  449. package/scripts/se-mission-prepare.ts +9 -15
  450. package/scripts/test-audit-coverage-per-file.sh +16 -0
  451. package/scripts/test-audit-meaningless.ts +88 -0
  452. package/scripts/test-audit-overlap-and-weak.ts +73 -0
  453. package/scripts/test-deterministic.ts +29 -6
  454. package/scripts/tui-sim.ts +59 -14
  455. package/scripts/uninstall.sh +10 -3
  456. package/scripts/ux/bump-installed.sh +20 -0
  457. package/scripts/ux/lib/cdp.ts +72 -0
  458. package/scripts/ux/record-page.ts +50 -0
  459. package/scripts/video-broll-line.ts +89 -0
  460. package/scripts/waitlist-daily-digest.ts +108 -0
  461. package/scripts/window-landings.sh +1 -1
  462. package/skills/explainer-video/SKILL.md +99 -0
  463. package/skills/explainer-video/engine/brand/elanous-mark-on-dark.svg +1 -0
  464. package/skills/explainer-video/engine/build.mjs +431 -0
  465. package/skills/explainer-video/engine/vo.ts +37 -0
  466. package/skills/explainer-video/examples/elanous-0.2.5/script.json +155 -0
  467. package/skills/motion-broll/LICENSE +25 -0
  468. package/skills/motion-broll/SKILL.md +150 -0
  469. package/skills/motion-broll/SOURCE.md +6 -0
  470. package/skills/motion-broll/engine/base.css +19 -0
  471. package/skills/motion-broll/engine/beats.js +11 -0
  472. package/skills/motion-broll/engine/build.py +21 -0
  473. package/skills/motion-broll/engine/fonts/Geist-Variable.woff2 +0 -0
  474. package/skills/motion-broll/engine/fonts/GeistMono-Medium.woff2 +0 -0
  475. package/skills/motion-broll/engine/fonts/OFL-Geist.txt +92 -0
  476. package/skills/motion-broll/engine/motion.js +146 -0
  477. package/skills/motion-broll/engine/render.js +22 -0
  478. package/skills/motion-broll/examples/opus-aoe2/01-opus-drop.html +41 -0
  479. package/skills/motion-broll/examples/opus-aoe2/02-pip-builds.html +110 -0
  480. package/skills/motion-broll/examples/opus-aoe2/03-effort-slider.html +38 -0
  481. package/skills/motion-broll/examples/opus-aoe2/04-master-prompt.html +56 -0
  482. package/skills/motion-broll/examples/opus-aoe2/05-low-vs-max.html +49 -0
  483. package/skills/motion-broll/examples/opus-aoe2/06-chapter.html +18 -0
  484. package/skills/motion-broll/examples/opus-aoe2/plan.json +14 -0
  485. package/skills/motion-broll/reference/engine-api.md +106 -0
  486. package/skills/motion-broll/scripts/composite.py +14 -0
  487. package/skills/motion-broll/scripts/inspect_video.py +34 -0
  488. package/skills/motion-broll/scripts/make_pages.py +34 -0
  489. package/skills/motion-broll/scripts/setup.sh +16 -0
  490. package/skills/motion-broll/scripts/words.py +13 -0
  491. package/skills/motion-broll/templates/compare.html +135 -0
  492. package/skills/motion-broll/templates/viewer.html +97 -0
  493. package/skills/omni-digest/SKILL.md +260 -0
  494. package/skills/omni-digest/digest.md +197 -0
  495. package/skills/omni-digest/docs/diagrams/noncode-terminal-promotion-path-2026-08-13.mmd +32 -0
  496. package/skills/omni-digest/package-lock.json +558 -0
  497. package/skills/omni-digest/package.json +13 -0
  498. package/skills/omni-digest/scripts/main.ts +404 -0
  499. package/skills/omni-digest/src/delegate.ts +34 -0
  500. package/skills/omni-digest/src/detect.ts +46 -0
  501. package/skills/omni-digest/src/diagram.ts +72 -0
  502. package/skills/omni-digest/src/domain-staging.ts +50 -0
  503. package/skills/omni-digest/src/env.ts +38 -0
  504. package/skills/omni-digest/src/fetch.ts +237 -0
  505. package/skills/omni-digest/src/media.ts +180 -0
  506. package/skills/omni-digest/src/obsidian.ts +69 -0
  507. package/skills/omni-digest/src/ocr.ts +149 -0
  508. package/skills/omni-digest/src/router.ts +60 -0
  509. package/skills/omni-digest/src/summarize.ts +87 -0
  510. package/skills/omni-digest/src/types.ts +124 -0
  511. package/skills/omni-digest/src/util.ts +34 -0
  512. package/skills/omni-digest/src/visual.ts +129 -0
  513. package/skills/omni-digest/src/x-api.ts +151 -0
  514. package/skills/omni-digest/tsconfig.json +13 -0
  515. package/src/a2a/agent-card.ts +29 -0
  516. package/src/a2a/server.ts +173 -0
  517. package/src/acp/auto-persist.ts +3 -6
  518. package/src/acp/backend-registry.ts +6 -10
  519. package/src/acp/channel-browser-shell.ts +1 -535
  520. package/src/acp/client.ts +106 -36
  521. package/src/acp/fs-roots.ts +20 -4
  522. package/src/acp/obsidian-tags.ts +6 -3
  523. package/src/acp/server.ts +189 -32
  524. package/src/agent/nested-agent-env.ts +1 -0
  525. package/src/agent/pty-binding.ts +1 -1
  526. package/src/agent/spawn-embodied-agent-in-vw.ts +5 -336
  527. package/src/agent/subagent-callable.ts +39 -1
  528. package/src/agent-mission/browser-login.ts +241 -0
  529. package/src/agent-mission/capabilities-cli.ts +33 -0
  530. package/src/agent-mission/capability-matrix.ts +31 -0
  531. package/src/agent-mission/capability-readers.ts +79 -0
  532. package/src/agent-mission/capability-types.ts +15 -0
  533. package/src/agent-mission/claude-headless.ts +131 -0
  534. package/src/agent-mission/claude-subscription.ts +57 -0
  535. package/src/agent-mission/doc-guided-install.ts +185 -0
  536. package/src/agent-mission/driver.ts +900 -69
  537. package/src/agent-mission/env-profile.ts +68 -0
  538. package/src/agent-mission/handoff.ts +128 -0
  539. package/src/agent-mission/in-agent-plugin.ts +311 -0
  540. package/src/agent-mission/mission-cli.ts +25 -1
  541. package/src/agent-mission/parse.ts +9 -4
  542. package/src/agent-mission/pr-review-watch.ts +62 -13
  543. package/src/agent-mission/resource-ladder.ts +235 -0
  544. package/src/agent-mission/tool-install.ts +249 -0
  545. package/src/agent-mission/tool-ladder.ts +37 -0
  546. package/src/agent-room/room-builder.ts +6 -600
  547. package/src/agent-substrate/review-intent.ts +43 -1
  548. package/src/auth/acp-token.ts +16 -0
  549. package/src/auth/github-app-token.ts +112 -0
  550. package/src/auth/scope.ts +8 -4
  551. package/src/auth/temp-tokens.ts +131 -0
  552. package/src/auto-research/obsidian-bridge.ts +2 -0
  553. package/src/autopilot/build/integrity-gate.ts +27 -4
  554. package/src/autopilot/build/isolated-instance.ts +2 -1
  555. package/src/autopilot/build/llm-conflict-merge.ts +27 -0
  556. package/src/autopilot/gh-rest-fallback.ts +177 -0
  557. package/src/autopilot/llm-control-brain.ts +54 -12
  558. package/src/autopilot/mission-engine.ts +15 -1
  559. package/src/autopilot/mission-notify.ts +4 -2
  560. package/src/autopilot/mission-origin.ts +5 -5
  561. package/src/autopilot/mission-phase-track.ts +52 -0
  562. package/src/autopilot/mission-tool.ts +1 -1
  563. package/src/autopilot/pr-manager.ts +51 -4
  564. package/src/autopilot/pty-control-loop.ts +94 -2
  565. package/src/autopilot/track-agent.ts +138 -0
  566. package/src/autopilot/track-courier.ts +153 -0
  567. package/src/boot/acp-server.ts +18 -18
  568. package/src/boot/check-same-origin.ts +19 -5
  569. package/src/boot/daemon-multi-llm-runtime.ts +14 -8
  570. package/src/boot/daemon-prompt-turn.ts +2 -0
  571. package/src/boot/daemon-runtime.ts +36 -14
  572. package/src/boot/daemon-tools/index.ts +16 -0
  573. package/src/boot/daemon-tools/self-implement.ts +4 -0
  574. package/src/boot/daemon-tools/types.ts +3 -0
  575. package/src/boot/daemon-tools/web-search.ts +2 -1
  576. package/src/boot/ws-bridge.ts +11 -0
  577. package/src/browser-cdp/chrome-flags.ts +7 -0
  578. package/src/browser-cdp/client.ts +2 -0
  579. package/src/browser-pane/mount.ts +1 -246
  580. package/src/budget/codex-reset-credit-state.ts +15 -0
  581. package/src/budget/fetchers/codex.ts +2 -1
  582. package/src/budget/run-usage-rollup.ts +11 -4
  583. package/src/budget/unified-usage.ts +2 -1
  584. package/src/capture/tui-self-report.ts +10 -0
  585. package/src/channel-bot-token.ts +126 -0
  586. package/src/chat/index.ts +57 -52
  587. package/src/chat/input-text-key.ts +2 -2
  588. package/src/chat/log-scroll-key.ts +12 -0
  589. package/src/chat/mode/manual.ts +2 -4
  590. package/src/chat/pickers/state.ts +10 -27
  591. package/src/chat/search/modal.ts +14 -2
  592. package/src/chat/submit-trace.ts +30 -0
  593. package/src/chat/tool-render/types.ts +1 -1
  594. package/src/chat/turn-typeahead.ts +2 -1
  595. package/src/chat/wrap.ts +6 -8
  596. package/src/cli/__fixtures__/agent-help-before/agent.txt +18 -0
  597. package/src/cli/__fixtures__/agent-help-before/registry.txt +13 -0
  598. package/src/cli/__fixtures__/agent-help-before/root.txt +100 -0
  599. package/src/cli/__fixtures__/agent-help-before/tier.txt +15 -0
  600. package/src/cli/a2a-cli.ts +52 -0
  601. package/src/cli/agent-cli.ts +726 -0
  602. package/src/cli/autopilot-cli.ts +739 -0
  603. package/src/cli/bg-launch.ts +20 -4
  604. package/src/cli/claude-plugin-setup.ts +199 -0
  605. package/src/cli/config-test-sync.ts +94 -10
  606. package/src/cli/connector-cli.ts +204 -0
  607. package/src/cli/control-cli.ts +220 -0
  608. package/src/cli/control-join-cli.ts +142 -0
  609. package/src/cli/decisions-cli.ts +94 -0
  610. package/src/cli/docs-cli.ts +38 -0
  611. package/src/cli/doctor-cli.ts +262 -77
  612. package/src/cli/doctor-distro.ts +17 -1
  613. package/src/cli/doctor-fix.ts +145 -17
  614. package/src/cli/doctor-llm-assist.ts +71 -0
  615. package/src/cli/doctor-private-files.ts +66 -0
  616. package/src/cli/doctor-readiness.ts +23 -28
  617. package/src/cli/fleet-cli.ts +63 -0
  618. package/src/cli/g6a-registration-probe.ts +16 -0
  619. package/src/cli/git-install-plan.ts +51 -0
  620. package/src/cli/hooks-cli.ts +44 -0
  621. package/src/cli/ingest-token-cli.ts +21 -0
  622. package/src/cli/intake-cli.ts +416 -0
  623. package/src/cli/labels-cli.ts +74 -0
  624. package/src/cli/leader-cli.ts +10 -159
  625. package/src/cli/live-cli.ts +48 -0
  626. package/src/cli/llm-detect-cli.ts +130 -0
  627. package/src/cli/logs-cli.ts +231 -7
  628. package/src/cli/machine-cli.ts +38 -0
  629. package/src/cli/mcp-call.ts +52 -13
  630. package/src/cli/mcp-gateway-cli.ts +94 -0
  631. package/src/cli/mcp-login.ts +116 -8
  632. package/src/cli/mcp-reload.ts +20 -3
  633. package/src/cli/nexus-dist.ts +18 -13
  634. package/src/cli/nexus-ios-bind.ts +20 -7
  635. package/src/cli/ops-cli.ts +225 -0
  636. package/src/cli/plugin-cli.ts +201 -0
  637. package/src/cli/pod-cli.ts +83 -0
  638. package/src/cli/port-lease-local.ts +124 -0
  639. package/src/cli/pr-cli.ts +12 -1
  640. package/src/cli/pr-lineage.ts +2 -1
  641. package/src/cli/provider-cli.ts +720 -0
  642. package/src/cli/pty-record-cli.ts +63 -0
  643. package/src/cli/pty-takeover-cli.ts +57 -40
  644. package/src/cli/pty-web-address.ts +52 -0
  645. package/src/cli/publish-cli.ts +44 -0
  646. package/src/cli/pwa-build.ts +18 -12
  647. package/src/cli/pwa-dev.ts +13 -8
  648. package/src/cli/pwa-registry.ts +6 -0
  649. package/src/cli/pwa-share.ts +65 -22
  650. package/src/cli/pwa-show.ts +20 -4
  651. package/src/cli/pwa-start.ts +102 -27
  652. package/src/cli/pwa-test.ts +201 -96
  653. package/src/cli/release-cli.ts +177 -7
  654. package/src/cli/remotes-cli.ts +20 -1
  655. package/src/cli/remotes.ts +2 -1
  656. package/src/cli/repo-cli.ts +315 -36
  657. package/src/cli/research-cli.ts +66 -0
  658. package/src/cli/role-cli.ts +320 -0
  659. package/src/cli/schedule-cli.ts +246 -0
  660. package/src/cli/self-update.ts +103 -12
  661. package/src/cli/setup-cli.ts +64 -2
  662. package/src/cli/shadow-cli.ts +188 -0
  663. package/src/cli/share-auto-mount.ts +12 -8
  664. package/src/cli/start-cli.ts +240 -0
  665. package/src/cli/stdout-flush.ts +8 -0
  666. package/src/cli/storage-cli.ts +334 -0
  667. package/src/cli/tailscale-serve.ts +34 -19
  668. package/src/cli/tasks-cli.ts +176 -0
  669. package/src/cli/test-state-dir-flag.ts +1 -1
  670. package/src/cli/usage-cli.ts +15 -4
  671. package/src/cli/where-cli.ts +22 -55
  672. package/src/code-edit/diff-render.ts +6 -32
  673. package/src/code-edit/source-delta-browser.ts +0 -1
  674. package/src/codex/models.ts +1 -1
  675. package/src/config.ts +8 -13
  676. package/src/connectors/event-ledger.ts +41 -0
  677. package/src/connectors/linear-projector.ts +88 -0
  678. package/src/connectors/linear.ts +143 -0
  679. package/src/connectors/types.ts +19 -0
  680. package/src/control-plane/lease-holder.ts +41 -0
  681. package/src/control-plane/ledger.ts +146 -0
  682. package/src/control-plane/light-member.ts +164 -0
  683. package/src/control-plane/member-tokens.ts +88 -0
  684. package/src/control-plane/member.ts +159 -0
  685. package/src/control-plane/port-lease-heartbeat.ts +101 -0
  686. package/src/control-plane/ports.ts +40 -0
  687. package/src/control-plane/primary.ts +169 -0
  688. package/src/control-plane/server.ts +216 -0
  689. package/src/dashboard/acp-boot.ts +14 -38
  690. package/src/dashboard/assistant-render-state-runtime.ts +2 -2
  691. package/src/dashboard/assistant-sample-runtime.ts +2 -2
  692. package/src/dashboard/auto-compact-runtime.ts +11 -16
  693. package/src/dashboard/browser-help-runtime.ts +2 -3
  694. package/src/dashboard/chat/acp-chat.ts +2 -5
  695. package/src/dashboard/code-edit-post-turn-runtime.ts +1 -2
  696. package/src/dashboard/compact-surface-assembly.ts +0 -14
  697. package/src/dashboard/compact-surface-dispatch.ts +1 -38
  698. package/src/dashboard/compact-surface-inventory.ts +0 -8
  699. package/src/dashboard/compact-surface-runtime.ts +0 -14
  700. package/src/dashboard/context-menu-provider-boot.ts +0 -9
  701. package/src/dashboard/context-window-runtime-boot.ts +0 -37
  702. package/src/dashboard/index.ts +331 -2562
  703. package/src/dashboard/input/chat-main-plain-turn-runtime.ts +0 -6
  704. package/src/dashboard/input/chat-main-slash-command.ts +2 -2
  705. package/src/dashboard/input/dashboard-priority-key-route.ts +1 -43
  706. package/src/dashboard/input/mouse-modal-surface-runtime.ts +1 -5
  707. package/src/dashboard/input/mouse-wiring.ts +2 -3
  708. package/src/dashboard/input/no-provider-reply.ts +13 -0
  709. package/src/dashboard/layout-display-runtime-registration.ts +0 -10
  710. package/src/dashboard/modals/pane-multi.ts +1 -1
  711. package/src/dashboard/replay-preview.ts +1 -1
  712. package/src/dashboard/runtime/approvers.ts +0 -1
  713. package/src/dashboard/runtime/state-snapshot.ts +0 -90
  714. package/src/dashboard/scenario-runtime-boot.ts +16 -16
  715. package/src/dashboard/slash-runtime/dashboard-handlers.ts +134 -1456
  716. package/src/dashboard/slash-runtime/design-pick.ts +96 -0
  717. package/src/dashboard/slash-runtime/help-from-registry.ts +77 -0
  718. package/src/dashboard/slash-runtime/unknown-slash-reply.ts +78 -0
  719. package/src/dashboard/stale-install-check.ts +77 -0
  720. package/src/dashboard/surface-registry-wiring.ts +2 -15
  721. package/src/dashboard/turn-message-runtime.ts +0 -4
  722. package/src/dashboard/turn-preamble.ts +1 -1
  723. package/src/dashboard/turn-stream-formatter.ts +2 -2
  724. package/src/dashboard/turn-stream-runtime.ts +2 -2
  725. package/src/dashboard-pane-context-menu.ts +0 -14
  726. package/src/debug/log.ts +7 -0
  727. package/src/decide/boundary-shadow.ts +131 -0
  728. package/src/decisions/decision-ledger.ts +404 -0
  729. package/src/design/apply-direction.ts +209 -0
  730. package/src/design/css-root-tokens.ts +89 -0
  731. package/src/design/custom-system-create.ts +230 -0
  732. package/src/design/design-directions.ts +61 -41
  733. package/src/design/design-gate.ts +241 -0
  734. package/src/design/design-library.ts +57 -0
  735. package/src/design/design-previews.ts +138 -0
  736. package/src/design/design-systems.ts +61 -0
  737. package/src/design/lint-artifact-run.ts +46 -6
  738. package/src/design/lint-artifact.ts +5 -1
  739. package/src/design/open-design-client.ts +247 -0
  740. package/src/design/system-from-extract.ts +767 -0
  741. package/src/design/system-schema.ts +123 -0
  742. package/src/discord-slash-wire.ts +2 -1
  743. package/src/discord-test-runner.ts +2 -1
  744. package/src/discord-voice-wire.ts +2 -1
  745. package/src/discord.ts +1 -1
  746. package/src/dispatch/opportunistic-launcher.ts +24 -1
  747. package/src/domains/ops-status.ts +35 -2
  748. package/src/domains/outbound-alert.ts +24 -6
  749. package/src/domains/repeated-failure.ts +89 -0
  750. package/src/domains/schedule-manage-tool.ts +28 -8
  751. package/src/domains/schedule-migrate.ts +22 -4
  752. package/src/domains/schedule-registry.ts +88 -33
  753. package/src/domains/schedule-runs.ts +132 -0
  754. package/src/domains/schedule-state.ts +152 -0
  755. package/src/domains/telegram-kind-route.ts +21 -0
  756. package/src/element-registry/address.ts +1 -3
  757. package/src/execution-loop/dispatch-task.ts +139 -0
  758. package/src/execution-loop/gate-decision-summary.ts +29 -0
  759. package/src/execution-loop/gates.ts +197 -0
  760. package/src/git-fs/gh-cli.ts +47 -17
  761. package/src/git-fs/retry.ts +1 -0
  762. package/src/git-fs/runner.ts +1 -0
  763. package/src/git-fs/worktree.ts +6 -5
  764. package/src/github/pr-labels.ts +68 -0
  765. package/src/graph-kinds/installed-plugin-nodes.ts +95 -0
  766. package/src/graph-kinds/plugin-nodes.ts +68 -0
  767. package/src/graph-kinds/registry.ts +118 -0
  768. package/src/graph-runner/graph-cli.ts +103 -0
  769. package/src/graph-runner/graph-notify.ts +220 -0
  770. package/src/graph-runner/graph-tick.ts +119 -0
  771. package/src/graph-runner/release-manifest.ts +93 -0
  772. package/src/graph-runner/runner.ts +487 -0
  773. package/src/grok/credential.ts +158 -5
  774. package/src/grounding/ensure-grounding.ts +131 -0
  775. package/src/grounding/mirror-export.ts +89 -0
  776. package/src/grounding/mirror-manifest.ts +252 -0
  777. package/src/grounding/sources-cli.ts +209 -0
  778. package/src/grounding/sources.ts +333 -0
  779. package/src/grounding/token.ts +121 -0
  780. package/src/harness/harness-cli-command.ts +415 -23
  781. package/src/harness/harness-pod-dispatch.ts +116 -0
  782. package/src/harness/harness-stop.ts +260 -0
  783. package/src/harness/harness-substrate-default.ts +40 -0
  784. package/src/harness/harness-worktrees.ts +1 -1
  785. package/src/harness/harness-write-boundary.ts +2 -0
  786. package/src/harness/llm-decompose.ts +2 -1
  787. package/src/harness/self-send-decide.ts +233 -0
  788. package/src/harness/self-send-target.ts +22 -1
  789. package/src/harness/shell-relay.ts +5 -0
  790. package/src/harness/worktree-branch-prefix.ts +4 -3
  791. package/src/hooks/providers.ts +77 -0
  792. package/src/hooks/queue.ts +73 -0
  793. package/src/hooks/receiver.ts +133 -0
  794. package/src/index.ts +712 -3409
  795. package/src/input-core/dispatcher.ts +1 -1
  796. package/src/input-core/drag-esc-interceptor.ts +1 -1
  797. package/src/instance/current.ts +5 -5
  798. package/src/instance/leader.ts +10 -326
  799. package/src/instance/nexus-run-refusal.ts +27 -92
  800. package/src/instance/project-local-exclude.ts +27 -0
  801. package/src/instance/resolve.ts +46 -175
  802. package/src/intake-plane/capture.ts +14 -1
  803. package/src/intake-plane/check.ts +34 -14
  804. package/src/intake-plane/collect-github.ts +258 -0
  805. package/src/intake-plane/collect-pod.ts +100 -0
  806. package/src/intake-plane/collect-telegram-saved.ts +91 -0
  807. package/src/intake-plane/digest.ts +111 -0
  808. package/src/intake-plane/enrich-plugins.ts +1 -1
  809. package/src/intake-plane/front-classifier.ts +56 -0
  810. package/src/intake-plane/front-route-classifier.ts +80 -0
  811. package/src/intake-plane/front-route-rules.ts +152 -0
  812. package/src/intake-plane/grounding-docs.ts +185 -0
  813. package/src/intake-plane/harness-target.ts +20 -0
  814. package/src/intake-plane/intake-to-tasks.ts +303 -0
  815. package/src/intake-plane/items.ts +247 -0
  816. package/src/intake-plane/link-ledger.ts +27 -0
  817. package/src/intake-plane/route.ts +104 -0
  818. package/src/intake-plane/runtime-callables.ts +3 -1
  819. package/src/intake-plane/sketch-ledger.ts +34 -0
  820. package/src/intake-plane/slash.ts +30 -2
  821. package/src/intake-plane/submit-intake-work.ts +160 -0
  822. package/src/intake-plane/telegram-work.ts +56 -0
  823. package/src/iul/sidebar-shell.ts +0 -165
  824. package/src/launch-head/capability-check.ts +162 -0
  825. package/src/launch-head/launch-head-cli.ts +242 -0
  826. package/src/launch-head/load-balance.ts +81 -0
  827. package/src/live/detail-switch.ts +180 -0
  828. package/src/llm/provider-detect.ts +247 -0
  829. package/src/llm/provider-probe.ts +57 -0
  830. package/src/llm/usable-llm.ts +32 -0
  831. package/src/llm.ts +55 -23
  832. package/src/log-entry.ts +1 -1
  833. package/src/log-pane/attachment-popup.ts +1 -2
  834. package/src/loops/loop-cli.ts +37 -0
  835. package/src/loops/registry.ts +196 -0
  836. package/src/market/official-keys.ts +5 -0
  837. package/src/market/publish.ts +329 -0
  838. package/src/market/signed-index.ts +156 -0
  839. package/src/market/tgz.ts +121 -0
  840. package/src/mcp/client.ts +1 -1
  841. package/src/mcp/mcp-oauth.ts +40 -5
  842. package/src/mcp/server.ts +75 -7
  843. package/src/mcp-gateway/gateway.ts +128 -0
  844. package/src/mcp-gateway/pat-store.ts +124 -0
  845. package/src/mss/logging/log-store.ts +91 -2
  846. package/src/mss/logging/scoped-level.ts +5 -9
  847. package/src/native-tool-catalog.ts +66 -345
  848. package/src/nexus/api/connect-info.ts +23 -25
  849. package/src/nexus/api/context-url.ts +1 -1
  850. package/src/nexus/api/design-check.ts +90 -59
  851. package/src/nexus/api/design-previews-route.ts +182 -0
  852. package/src/nexus/api/design-system-create-route.ts +123 -0
  853. package/src/nexus/api/graph-approvals.ts +125 -0
  854. package/src/nexus/api/graph-kinds.ts +69 -0
  855. package/src/nexus/api/graphs-api.ts +221 -0
  856. package/src/nexus/api/harness-api.ts +31 -2
  857. package/src/nexus/api/health.ts +15 -0
  858. package/src/nexus/api/http-server.ts +328 -43
  859. package/src/nexus/api/image-generate.ts +3 -0
  860. package/src/nexus/api/ingest-token.ts +175 -0
  861. package/src/nexus/api/intake-ledger-api.ts +54 -0
  862. package/src/nexus/api/intake-route.ts +111 -0
  863. package/src/nexus/api/json-response.ts +33 -0
  864. package/src/nexus/api/live-detail.ts +47 -0
  865. package/src/nexus/api/live-shipped.ts +78 -0
  866. package/src/nexus/api/log-fabric.ts +42 -2
  867. package/src/nexus/api/markdown-publish.ts +3 -2
  868. package/src/nexus/api/mcp-http.ts +14 -9
  869. package/src/nexus/api/mcp-oauth-hint.ts +31 -0
  870. package/src/nexus/api/mcp-public-allowlist.ts +33 -0
  871. package/src/nexus/api/merge-approvals-gate.ts +79 -0
  872. package/src/nexus/api/merge-approvals.ts +307 -0
  873. package/src/nexus/api/meta-api.ts +18 -0
  874. package/src/nexus/api/next-fluent-wiring.ts +7 -9
  875. package/src/nexus/api/plugins-credentials-api.ts +47 -0
  876. package/src/nexus/api/plugins-market.ts +209 -0
  877. package/src/nexus/api/pod-credential-api.ts +187 -0
  878. package/src/nexus/api/public-routes.ts +87 -0
  879. package/src/nexus/api/rest-route-paths.ts +15 -0
  880. package/src/nexus/api/schedules-action.ts +12 -3
  881. package/src/nexus/api/schedules-read.ts +228 -0
  882. package/src/nexus/api/sessions-store.ts +8 -2
  883. package/src/nexus/api/setup-answer-priority.ts +130 -0
  884. package/src/nexus/api/setup-channel-bot.ts +56 -0
  885. package/src/nexus/api/setup-child-llm.ts +228 -0
  886. package/src/nexus/api/setup-obsidian-skills.ts +93 -0
  887. package/src/nexus/api/task-cards-api.ts +34 -0
  888. package/src/nexus/api/tasks-create.ts +136 -0
  889. package/src/nexus/api/telegram-trigger-bot.ts +3 -3
  890. package/src/nexus/api/terminals.ts +204 -18
  891. package/src/nexus/api/trace.ts +405 -0
  892. package/src/nexus/api/vault-api.ts +140 -7
  893. package/src/nexus/api/worktrees.ts +18 -2
  894. package/src/nexus/boot/register-mcp-clients.ts +135 -16
  895. package/src/nexus/daemon-endpoint.ts +85 -0
  896. package/src/nexus/default-port.ts +1 -0
  897. package/src/nexus/index.ts +362 -143
  898. package/src/nexus/onboarding/pwa-share-prompt.ts +31 -8
  899. package/src/nexus/onboarding/tailscale-probe.ts +9 -1
  900. package/src/nexus/outbound/router.ts +1 -1
  901. package/src/nexus/setup-status.ts +58 -0
  902. package/src/nexus/supervisor/lock.ts +8 -0
  903. package/src/nexus/webterm/pty.ts +15 -0
  904. package/src/oauth/codex-account-rotation.ts +122 -16
  905. package/src/oauth/codex-account-store.ts +88 -19
  906. package/src/oauth/codex-quota-policy.ts +55 -0
  907. package/src/oauth/store.ts +28 -25
  908. package/src/obsidian/default-vault.ts +17 -0
  909. package/src/obsidian/vault-write-guard.ts +46 -0
  910. package/src/onboarding/help/llm.md +2 -2
  911. package/src/onboarding.ts +27 -4
  912. package/src/panes/alt-skip-predicate.ts +4 -3
  913. package/src/panes/external-terminal-pane.ts +3 -4
  914. package/src/panes/factory.ts +1 -18
  915. package/src/panes/index.ts +1 -5
  916. package/src/panes/pane-cycle.ts +1 -1
  917. package/src/panes/types.ts +1 -1
  918. package/src/platform/env-literal.ts +4 -0
  919. package/src/plugin-hooks/dispatcher.ts +10 -4
  920. package/src/plugins/core/host.ts +108 -4
  921. package/src/plugins/core/manifest.ts +104 -7
  922. package/src/plugins/install/market-fetch.ts +250 -0
  923. package/src/plugins/install/plugin-credentials.ts +106 -0
  924. package/src/plugins/install/plugin-install.ts +518 -0
  925. package/src/policy/claude-subscription-guard.ts +25 -0
  926. package/src/preview/terminal.ts +24 -1
  927. package/src/preview-pane/mount.ts +1 -142
  928. package/src/prompt/references.ts +4 -51
  929. package/src/prompt-library/universal-preamble.ts +8 -2
  930. package/src/pty-shell/pty-control-ipc.ts +57 -3
  931. package/src/pty-shell/pty-mouse.ts +75 -0
  932. package/src/pty-shell/pty-recording.ts +108 -0
  933. package/src/pty-shell/registry.ts +53 -3
  934. package/src/python/resolve-python.ts +1 -1
  935. package/src/release-loop/checklist.ts +191 -0
  936. package/src/release-loop/manifest.ts +65 -0
  937. package/src/release-loop/release-note.ts +177 -0
  938. package/src/roles/lease-cas.ts +52 -0
  939. package/src/roles/machine-name.ts +48 -0
  940. package/src/roles/machine-profile.ts +65 -0
  941. package/src/roles/role-lease-read.ts +81 -0
  942. package/src/roles/role-lease.ts +63 -0
  943. package/src/roles/role-watch.ts +69 -0
  944. package/src/self-dev/ask-launch-flow.ts +39 -22
  945. package/src/self-dev/ask-launch-io.ts +1 -1
  946. package/src/self-dev/dev-cli.ts +290 -159
  947. package/src/self-dev/dev-pipeline.ts +157 -9
  948. package/src/self-dev/draft-sweep.ts +231 -0
  949. package/src/self-dev/draft-triage-rules.ts +42 -0
  950. package/src/self-dev/entrance-baseline.ts +156 -4
  951. package/src/self-dev/fabric-decompose-adapter.ts +10 -0
  952. package/src/self-dev/launch-preflight.ts +1 -1
  953. package/src/self-dev/orchestrate.ts +297 -20
  954. package/src/self-dev/repair-signals.ts +6 -0
  955. package/src/self-dev/run-store.ts +20 -5
  956. package/src/self-dev/run-supervisor.ts +43 -3
  957. package/src/self-implement/abandoned-classification.ts +15 -1
  958. package/src/self-implement/blocked-draft-policy.ts +6 -0
  959. package/src/self-implement/budget-gate.ts +236 -0
  960. package/src/self-implement/child-llm-preference.ts +84 -0
  961. package/src/self-implement/decision-events.ts +57 -0
  962. package/src/self-implement/decision-signal-press.ts +5 -2
  963. package/src/self-implement/dependency-change-gate.ts +90 -0
  964. package/src/self-implement/gate-baseline.ts +35 -2
  965. package/src/self-implement/gate-cli.ts +29 -7
  966. package/src/self-implement/gate-scope.ts +7 -1
  967. package/src/self-implement/goal-author-decompose.ts +22 -4
  968. package/src/self-implement/goal-author.ts +41 -3
  969. package/src/self-implement/goal-boundary.ts +65 -0
  970. package/src/self-implement/goal-clarification-escalation.ts +1 -0
  971. package/src/self-implement/goal-documents-dir.ts +6 -1
  972. package/src/self-implement/goal-execution-records.ts +58 -0
  973. package/src/self-implement/goal-run-store.ts +42 -24
  974. package/src/self-implement/graph-authority.ts +13 -28
  975. package/src/self-implement/graph-catalog.ts +48 -0
  976. package/src/self-implement/graph-run-contract.ts +127 -0
  977. package/src/self-implement/graph-templates.ts +14 -7
  978. package/src/self-implement/graph-yaml.ts +35 -6
  979. package/src/self-implement/harness-policy-gates.ts +42 -0
  980. package/src/self-implement/headless-elanous-driver.ts +30 -6
  981. package/src/self-implement/heal-triage.ts +229 -0
  982. package/src/self-implement/host-regate.ts +244 -0
  983. package/src/self-implement/non-git-consent.ts +23 -0
  984. package/src/self-implement/orchestrator.ts +488 -134
  985. package/src/self-implement/pipeline-shape.ts +1 -1
  986. package/src/self-implement/pr-evidence-artifact.ts +6 -19
  987. package/src/self-implement/prior-draft-findings.ts +128 -0
  988. package/src/self-implement/pwa-import-graph.ts +65 -0
  989. package/src/self-implement/repo-provision.ts +18 -21
  990. package/src/self-implement/report-origin.ts +39 -0
  991. package/src/self-implement/rework-policy.ts +21 -0
  992. package/src/self-implement/run-ledger-compact.ts +438 -0
  993. package/src/self-implement/run-ledger.ts +212 -29
  994. package/src/self-implement/run-report.ts +24 -0
  995. package/src/self-implement/run-status-mapping.ts +2 -0
  996. package/src/self-implement/running-runs.ts +112 -14
  997. package/src/self-implement/scoped-typecheck-config.ts +49 -0
  998. package/src/self-implement/seams.ts +207 -40
  999. package/src/self-implement/self-implement-cli.ts +17 -2
  1000. package/src/self-implement/shadow-repo.ts +350 -0
  1001. package/src/self-implement/supervision-vocabulary.ts +7 -0
  1002. package/src/shell-runner/dispatch.ts +3 -0
  1003. package/src/shell-runner/index.ts +0 -7
  1004. package/src/skills/runner.ts +0 -69
  1005. package/src/skills/tools/agent-room-slash.ts +2 -1
  1006. package/src/skills/tools/agent-room.ts +8 -140
  1007. package/src/skills/tools/agent.ts +5 -3
  1008. package/src/skills/tools/context.ts +5 -140
  1009. package/src/skills/tools/control.ts +4 -188
  1010. package/src/skills/tools/dashboard-slash.ts +3 -11
  1011. package/src/skills/tools/dashboard-state.ts +3 -5
  1012. package/src/skills/tools/dev-harness.ts +45 -2
  1013. package/src/skills/tools/omni-search.ts +29 -1
  1014. package/src/skills/tools/shell.ts +11 -29
  1015. package/src/skills/tools/spawn-coding-agent-headless.ts +6 -9
  1016. package/src/ssh/ssh-picker-modal.ts +1 -1
  1017. package/src/steward/directive.ts +99 -0
  1018. package/src/steward/steward-cards.ts +45 -0
  1019. package/src/steward/triage.ts +239 -0
  1020. package/src/storage/cli-bin.ts +67 -0
  1021. package/src/storage/object-store-visibility.ts +169 -0
  1022. package/src/storage/object-store.ts +452 -0
  1023. package/src/storage/s3.ts +53 -10
  1024. package/src/storage/storage-detect.ts +337 -0
  1025. package/src/surface/address.ts +3 -5
  1026. package/src/surface/index.ts +0 -6
  1027. package/src/surface/llm-tools.ts +1 -2
  1028. package/src/surface/shell-runner-boot.ts +4 -89
  1029. package/src/task-cards/card-cli.ts +64 -0
  1030. package/src/task-cards/card-store.ts +241 -0
  1031. package/src/task-orchestrator/boot.ts +27 -1
  1032. package/src/task-orchestrator/dispatcher.ts +49 -7
  1033. package/src/task-orchestrator/external-fingerprint.ts +10 -0
  1034. package/src/task-orchestrator/external-policy.ts +86 -0
  1035. package/src/task-orchestrator/feedback-loop.ts +4 -2
  1036. package/src/task-orchestrator/graph.ts +18 -1
  1037. package/src/task-orchestrator/runtimes/create.ts +128 -0
  1038. package/src/task-orchestrator/store.ts +78 -18
  1039. package/src/task-orchestrator/surface-registry.ts +5 -2
  1040. package/src/task-orchestrator/surfaces/external-exec.ts +180 -0
  1041. package/src/task-orchestrator/surfaces/idea-approval-pr.ts +118 -0
  1042. package/src/task-orchestrator/surfaces/index.ts +4 -3
  1043. package/src/task-orchestrator/surfaces/pod-account-broker.ts +60 -5
  1044. package/src/task-orchestrator/surfaces/pod-artifact-return.ts +194 -0
  1045. package/src/task-orchestrator/surfaces/pod-command-job.ts +369 -0
  1046. package/src/task-orchestrator/surfaces/pod-ledger-collect.ts +207 -0
  1047. package/src/task-orchestrator/surfaces/pod-pool.ts +128 -12
  1048. package/src/task-orchestrator/surfaces/pod-skills.ts +11 -3
  1049. package/src/task-orchestrator/surfaces/pod-source-bundle.ts +147 -0
  1050. package/src/task-orchestrator/surfaces/pod-source-receive.ts +129 -0
  1051. package/src/task-orchestrator/surfaces/pod-source-spec.ts +77 -0
  1052. package/src/task-orchestrator/surfaces/self-implement-pod.ts +930 -45
  1053. package/src/task-orchestrator/surfaces/self-implement.ts +8 -1
  1054. package/src/task-orchestrator/tox-loop.ts +204 -0
  1055. package/src/task-orchestrator/types.ts +21 -1
  1056. package/src/telegram-commands.ts +8 -0
  1057. package/src/telegram-report.ts +14 -7
  1058. package/src/telegram-run.ts +18 -5
  1059. package/src/telegram.ts +92 -22
  1060. package/src/tool-runtime/acp-session-runtime.ts +28 -7
  1061. package/src/tool-runtime/agent-runtime.ts +1 -0
  1062. package/src/tool-runtime/context-runtime.ts +18 -35
  1063. package/src/tool-runtime/control-runtime.ts +8 -21
  1064. package/src/tool-runtime/dashboard-state-runtime.ts +1 -5
  1065. package/src/tool-runtime/elanous-asana-runtimes.ts +205 -0
  1066. package/src/tool-runtime/elanous-control-runtimes.ts +16 -2
  1067. package/src/tool-runtime/elanous-task-submit-runtime.ts +124 -0
  1068. package/src/tool-runtime/index.ts +4 -1
  1069. package/src/tool-runtime/scenario-runtimes.ts +22 -21
  1070. package/src/tool-runtime/scenario-target-mount.ts +6 -32
  1071. package/src/tool-runtime/types.ts +8 -0
  1072. package/src/tui/chat/attachment-summary.ts +4 -4
  1073. package/src/tui-client/acp-transport-ws-client.ts +72 -5
  1074. package/src/tui-client/headless-core-guard.ts +0 -1
  1075. package/src/tui.ts +11 -7
  1076. package/src/typecheck-ratchet.ts +15 -0
  1077. package/src/ui/hover-presenter.ts +3 -7
  1078. package/src/user-config.ts +453 -190
  1079. package/src/util/spawn-sync-output.ts +15 -0
  1080. package/src/version/code-revision.ts +34 -9
  1081. package/src/version/packed-revision.json +1 -1
  1082. package/src/video-pipeline/broll-agent.ts +102 -0
  1083. package/src/video-pipeline/recipes/broll.ts +263 -0
  1084. package/src/video-pipeline/walk-line.ts +2 -1
  1085. package/src/views/scratch-image-size.ts +10 -0
  1086. package/src/voice/channel-adapters/pwa-voice-adapter.ts +2 -18
  1087. package/src/voice/channel-adapters/telegram-voice-adapter.ts +1 -6
  1088. package/src/voice/voice-tts-singleton.ts +46 -8
  1089. package/src/web-push/vapid-keys.ts +1 -1
  1090. package/src/web-search/free.ts +77 -0
  1091. package/src/web-search/index.ts +7 -5
  1092. package/src/web-terminal/preview-tap-registry.ts +152 -43
  1093. package/src/workflow-runtime/deps-bridge.ts +4 -3
  1094. package/src/workflow-runtime/executor.ts +18 -22
  1095. package/src/workflow-runtime/node-catalog.ts +20 -1
  1096. package/src/workflow-runtime/nodes/bash.ts +1 -0
  1097. package/src/workflow-runtime/nodes/task.ts +74 -0
  1098. package/src/workflow-runtime/nodes/triggers.ts +24 -1
  1099. package/src/workflow-runtime/plugin-kind-node.ts +166 -0
  1100. package/src/workflow-runtime/schema.ts +98 -2
  1101. package/src/workflow-runtime/triggers/webhook-router.ts +43 -3
  1102. package/src/workflow-runtime/triggers/webhook-source.ts +19 -1
  1103. package/src/workflow-runtime/types.ts +76 -5
  1104. package/apps/pwa/out/_next/static/Ksn99fVf2HUWhSyV1-FC8/_buildManifest.js +0 -1
  1105. package/apps/pwa/out/_next/static/chunks/1176-4943bd83b00e53a2.js +0 -25
  1106. package/apps/pwa/out/_next/static/chunks/1380-9c652e1002032c86.js +0 -1
  1107. package/apps/pwa/out/_next/static/chunks/1863-2ea170dfec26b88b.js +0 -1
  1108. package/apps/pwa/out/_next/static/chunks/2091-2d6b7f4f16300f83.js +0 -1
  1109. package/apps/pwa/out/_next/static/chunks/2347-366617ec73babe3b.js +0 -1
  1110. package/apps/pwa/out/_next/static/chunks/3089-e60cc8f5d35ee239.js +0 -1
  1111. package/apps/pwa/out/_next/static/chunks/3158-c77ed9ea34f9cc9f.js +0 -1
  1112. package/apps/pwa/out/_next/static/chunks/3607-f0b5c5ee18fcf56a.js +0 -1
  1113. package/apps/pwa/out/_next/static/chunks/3659-05b2d5d971b42dbc.js +0 -1
  1114. package/apps/pwa/out/_next/static/chunks/3736-b6a7bfdcb8f56ec6.js +0 -1
  1115. package/apps/pwa/out/_next/static/chunks/3839-eebf298e89a7bb77.js +0 -1
  1116. package/apps/pwa/out/_next/static/chunks/4012.832a2824b978e7ee.js +0 -5
  1117. package/apps/pwa/out/_next/static/chunks/4706-d85d7f3345f3ff91.js +0 -1
  1118. package/apps/pwa/out/_next/static/chunks/526-17a6a2e0e6dc4498.js +0 -1
  1119. package/apps/pwa/out/_next/static/chunks/5508-676ac75f2757ad40.js +0 -1
  1120. package/apps/pwa/out/_next/static/chunks/5583-8a0317f4b8e68db9.js +0 -1
  1121. package/apps/pwa/out/_next/static/chunks/6258-b58f722b10e8d31d.js +0 -1
  1122. package/apps/pwa/out/_next/static/chunks/6820-32fd097e6186fdc9.js +0 -1
  1123. package/apps/pwa/out/_next/static/chunks/6852-983db7ca958634b7.js +0 -1
  1124. package/apps/pwa/out/_next/static/chunks/7235-e583e4a015e159b9.js +0 -1
  1125. package/apps/pwa/out/_next/static/chunks/7482-7b417330b24a996a.js +0 -1
  1126. package/apps/pwa/out/_next/static/chunks/7701-99b7d4dedb955bf8.js +0 -1
  1127. package/apps/pwa/out/_next/static/chunks/77f1928d-bd3777589042d3ea.js +0 -1
  1128. package/apps/pwa/out/_next/static/chunks/8366-36956cafc5e33614.js +0 -1
  1129. package/apps/pwa/out/_next/static/chunks/8370-23d0de995be666f8.js +0 -1
  1130. package/apps/pwa/out/_next/static/chunks/8617-307421f3b0e8b2a2.js +0 -1
  1131. package/apps/pwa/out/_next/static/chunks/8837-e45de46a9fedf1f5.js +0 -1
  1132. package/apps/pwa/out/_next/static/chunks/9058-0e8055a5ea3ebdd6.js +0 -1
  1133. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-84b84eca12acada4.js +0 -1
  1134. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-1f23568c29e88f7a.js +0 -1
  1135. package/apps/pwa/out/_next/static/chunks/app/botlab/page-bf6fc9aafd6135a7.js +0 -1
  1136. package/apps/pwa/out/_next/static/chunks/app/bots/page-3f8539ae4b719d2e.js +0 -1
  1137. package/apps/pwa/out/_next/static/chunks/app/chat/page-d2900febb74ecf32.js +0 -1
  1138. package/apps/pwa/out/_next/static/chunks/app/control/page-e82dec647dd79c36.js +0 -1
  1139. package/apps/pwa/out/_next/static/chunks/app/dashboard/page-096ec743a8ee955a.js +0 -1
  1140. package/apps/pwa/out/_next/static/chunks/app/design-check/page-255c2ceded4b3493.js +0 -1
  1141. package/apps/pwa/out/_next/static/chunks/app/healthz/route-84b84eca12acada4.js +0 -1
  1142. package/apps/pwa/out/_next/static/chunks/app/intake/page-2db61b2f9efba61f.js +0 -1
  1143. package/apps/pwa/out/_next/static/chunks/app/layout-e11ee17f221aaa9b.js +0 -1
  1144. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-e075974e029ce4c4.js +0 -1
  1145. package/apps/pwa/out/_next/static/chunks/app/morning/page-ec5b68a9af3366a0.js +0 -1
  1146. package/apps/pwa/out/_next/static/chunks/app/not-found-986c177afb4adae6.js +0 -1
  1147. package/apps/pwa/out/_next/static/chunks/app/observatory/page-a72781461af2f2a3.js +0 -1
  1148. package/apps/pwa/out/_next/static/chunks/app/page-92781cbaafc487ad.js +0 -1
  1149. package/apps/pwa/out/_next/static/chunks/app/reflection/page-2c14d2a1f2930f33.js +0 -1
  1150. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-22ee4bf8070b2b4d.js +0 -1
  1151. package/apps/pwa/out/_next/static/chunks/app/sessions/page-9c06e4a8297942a8.js +0 -1
  1152. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-d0cd32f6d373798f.js +0 -1
  1153. package/apps/pwa/out/_next/static/chunks/app/settings/page-0c1642018d87ebb8.js +0 -1
  1154. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-93e5e97d614df487.js +0 -1
  1155. package/apps/pwa/out/_next/static/chunks/app/setup/layout-84b84eca12acada4.js +0 -1
  1156. package/apps/pwa/out/_next/static/chunks/app/setup/page-b1ce871940d7393e.js +0 -1
  1157. package/apps/pwa/out/_next/static/chunks/app/share/page-ae154addf345febe.js +0 -1
  1158. package/apps/pwa/out/_next/static/chunks/app/showroom/page-90af3aa813d2053c.js +0 -1
  1159. package/apps/pwa/out/_next/static/chunks/app/tasks/page-f3f962fda428a738.js +0 -1
  1160. package/apps/pwa/out/_next/static/chunks/app/term/page-1c1f7cc1d5def06d.js +0 -1
  1161. package/apps/pwa/out/_next/static/chunks/app/vault/page-09d4cbdaaacf06c1.js +0 -1
  1162. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-e877b8e8ca90b27f.js +0 -1
  1163. package/apps/pwa/out/_next/static/chunks/app/workflows/page-71d902f463dea526.js +0 -1
  1164. package/apps/pwa/out/_next/static/chunks/app/workspace/page-40ea576cefa25fe6.js +0 -1
  1165. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-a56a3f178c3831f6.js +0 -1
  1166. package/apps/pwa/out/_next/static/chunks/bcc499d1-804a270d878e0842.js +0 -1
  1167. package/apps/pwa/out/_next/static/chunks/framework-b25b7c5501c59b6d.js +0 -1
  1168. package/apps/pwa/out/_next/static/chunks/main-a9ec9da43387afff.js +0 -1
  1169. package/apps/pwa/out/_next/static/chunks/main-app-aa2c05954aaa6754.js +0 -1
  1170. package/apps/pwa/out/_next/static/chunks/pages/_app-bb3768fb4b84aebb.js +0 -1
  1171. package/apps/pwa/out/_next/static/chunks/pages/_error-2820ba75b87b2f5e.js +0 -1
  1172. package/apps/pwa/out/_next/static/chunks/webpack-58c73b145f189b1c.js +0 -1
  1173. package/apps/pwa/out/_next/static/css/effec8adf767aa75.css +0 -1
  1174. package/apps/pwa/out/dashboard/index.html +0 -1
  1175. package/apps/pwa/out/dashboard/index.txt +0 -26
  1176. package/src/acp/resident-shell.ts +0 -244
  1177. package/src/agent/spawn-local-llm-in-vw.ts +0 -240
  1178. package/src/dashboard/agent-spawn-tools-boot.ts +0 -14
  1179. package/src/dashboard/dock-picker-inventory.ts +0 -41
  1180. package/src/dashboard/goal-plan-hud-bridge.ts +0 -112
  1181. package/src/dashboard/hud-mirror.ts +0 -207
  1182. package/src/dashboard/input/mouse-dock-runtime.ts +0 -156
  1183. package/src/dashboard/input/mouse-hover-runtime.ts +0 -46
  1184. package/src/dashboard/input/mouse-pill-context-runtime.ts +0 -74
  1185. package/src/dashboard/input/mouse-workspace-restore-runtime.ts +0 -64
  1186. package/src/dashboard/input/scratch-actions.ts +0 -36
  1187. package/src/dashboard/input/virtual-window-key-router.ts +0 -24
  1188. package/src/dashboard/rich-scratch-viewers.ts +0 -77
  1189. package/src/dashboard/scratch-slash-runtime.ts +0 -36
  1190. package/src/dashboard/scratch-state-runtime.ts +0 -42
  1191. package/src/dashboard/scratch-widget-runtime.ts +0 -37
  1192. package/src/dashboard/sim-shell.ts +0 -313
  1193. package/src/dashboard/virtual-window-control-runtime.ts +0 -57
  1194. package/src/dashboard/virtual-window-help-runtime.ts +0 -113
  1195. package/src/dashboard/virtual-window-input-runtime.ts +0 -99
  1196. package/src/dashboard/virtual-window-mutation-runtime.ts +0 -102
  1197. package/src/dashboard/virtual-window-split-runtime.ts +0 -70
  1198. package/src/dashboard/vw-popup-openers.ts +0 -126
  1199. package/src/dashboard/window-picker-popup.ts +0 -74
  1200. package/src/dashboard/window-slash-runtime.ts +0 -108
  1201. package/src/dashboard/windowing/companion-slash.ts +0 -78
  1202. package/src/dashboard/windowing/fast-switch.ts +0 -138
  1203. package/src/dashboard/windowing/lifecycle.ts +0 -185
  1204. package/src/dashboard/windowing/virtual-windows.ts +0 -259
  1205. package/src/dashboard/windowing/visibility-chord.ts +0 -77
  1206. package/src/iul/resident-vw.ts +0 -55
  1207. package/src/panes/content-adapter.ts +0 -162
  1208. package/src/prompt/vw-reference.ts +0 -153
  1209. package/src/shell-runner/external-terminal-pane.ts +0 -157
  1210. package/src/sim/resident-vw.ts +0 -48
  1211. package/src/skills/tools/spawn-coding-agent-vw.ts +0 -181
  1212. package/src/skills/tools/virtual-windows.ts +0 -632
  1213. package/src/surface/adapters/window-surface-adapter.ts +0 -141
  1214. package/src/tool-runtime/layout-runtimes.ts +0 -81
  1215. package/src/tool-runtime/scenario-window-mount.ts +0 -207
  1216. package/src/views/ui-mode.ts +0 -100
  1217. package/src/virtual-window-context-menu.ts +0 -97
  1218. package/src/virtual-windows/addressing.ts +0 -195
  1219. package/src/virtual-windows/benchmark-preset.ts +0 -119
  1220. package/src/virtual-windows/event-bus.ts +0 -202
  1221. package/src/virtual-windows/layout/apply-planner.ts +0 -189
  1222. package/src/virtual-windows/layout/index.ts +0 -68
  1223. package/src/virtual-windows/layout/layout-commands.ts +0 -186
  1224. package/src/virtual-windows/layout/layout-tools.ts +0 -262
  1225. package/src/virtual-windows/layout/persistence.ts +0 -219
  1226. package/src/virtual-windows/layout/presets.ts +0 -114
  1227. package/src/virtual-windows/layout/restore-planner.ts +0 -223
  1228. package/src/virtual-windows/layout/serializer.ts +0 -197
  1229. package/src/virtual-windows/layout/tree.ts +0 -147
  1230. package/src/virtual-windows/layout/types.ts +0 -63
  1231. package/src/virtual-windows/layout-tree.ts +0 -389
  1232. package/src/virtual-windows/navigation.ts +0 -251
  1233. package/src/virtual-windows/pane-capture.ts +0 -142
  1234. package/src/virtual-windows/pane-content.ts +0 -611
  1235. package/src/virtual-windows/pane-spawner.ts +0 -278
  1236. package/src/virtual-windows/pty-tail-content.ts +0 -291
  1237. package/src/virtual-windows/resident-window.ts +0 -59
  1238. package/src/virtual-windows/secondary-action.ts +0 -25
  1239. package/src/virtual-windows/terminal-slot-content.ts +0 -165
  1240. package/src/virtual-windows/virtual-window.ts +0 -1301
  1241. package/src/virtual-windows/vw-local-input-target-popup.ts +0 -110
  1242. package/src/virtual-windows/vw-rename-modal.ts +0 -77
  1243. package/src/virtual-windows/vw-selector-popup.ts +0 -177
  1244. package/src/virtual-windows/window-registry.ts +0 -519
  1245. package/src/voice/channel-adapters/discord-voice-adapter.ts +0 -202
  1246. package/src/voice/voice-pwa-dispatch.ts +0 -245
  1247. package/src/window-picker-modal.ts +0 -135
  1248. /package/apps/pwa/out/_next/static/{Ksn99fVf2HUWhSyV1-FC8 → ktMqfrBbf8BMGac0jqLrb}/_ssgManifest.js +0 -0
  1249. /package/src/dashboard/{companion-slash-runtime.ts → companion-messages-runtime.ts} +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6604],{27131:(e,t,n)=>{n.d(t,{GM:()=>l,J3:()=>i,WF:()=>r,bR:()=>s,m:()=>d,r5:()=>a});let r="/v1/devices",a="/v1/approvals/merges",s="/v1/templates/capability-preview",i="/v1/idle-nudge/preview",l="/v1/morning-digest/showroom",d="/v1/next-fluent/dispatch"},41200:(e,t,n)=>{n.d(t,{SY:()=>_});var r=n(58443),a=n(77947),s=n(34015),i=n(19990);let l=/https?:\/\/[^\s<>"']+/g;function d(e){return e.slice(0,40)}async function o(e,t){let n=function(e){var t;let n=null!=(t=e.match(l))?t:[];return 0===n.length?[{text:e}]:n.map(e=>({url:e}))}(t),r=await e.fetchJson("/v1/intake-ledger/items",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({items:n,source:"pwa"})});return{ids:r.ids,added:r.added,merged:r.merged}}async function c(e,t){return{acceptanceId:(await e.fetchJson("/v1/harness/ask",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({text:t})})).acceptanceId}}function u(e,t,n){return e.fetchJson("/v1/intake/route",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({text:t,consent:"route",source:"pwa",...(null==n?void 0:n.classify)!==void 0?{classify:n.classify}:{}})})}let m=["absorbed","discarded","routed","checked"],p={new:"대기 중",queued:"대기 중",absorbed:"흡수됨",routed:"다른 갈래로 넘김",checked:"확인됨",discarded:"버림",deferred:"미룸"};function g(e){var t,n,r;return null===e?{label:"찾을 수 없음",settled:!1,noteRef:null}:{label:Object.hasOwn(p,e.status)?p[e.status]:e.status,settled:m.includes(e.status),noteRef:null!=(r=null==(n=e.outputs)||null==(t=n.find(e=>"note"===e.kind))?void 0:t.ref)?r:null}}let f={"headless.spawn":"실행 시작","gate.baseline":"게이트 검사","review.diff-scope":"리뷰 중","headless.done":"실행 종료","run-terminal":"종료"};function h(e){var t,n,r,a,s;let i=e.at(-1),l=e.find(e=>"run-terminal"===e.event),d=null==l||null==(t=l.payload)?void 0:t.runStatus;return{stage:i?null!=(r=f[i.event])?r:i.event:null,lastEventAt:null!=(a=null==i?void 0:i.ts)?a:null,done:void 0!==l,outcome:l?"completed"===d||"failed"===d?d:"unknown":null,error:null!=(s=null==l||null==(n=l.payload)?void 0:n.error)?s:null}}var x=n(89704),v=n(23783),k=n(92364);class b{preview(e){return this.client.fetchJson("/v1/intake/pipeline-preview",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(e)})}commit(e){return this.client.fetchJson("/v1/intake/pipeline-commit",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(e)})}async submitPhotoOcr(e,t){let n=new FormData;return n.append("image",e,t),n.append("polishMode","minimal"),await this.client.fetchJson("/v1/notes/from-image",{method:"POST",body:n})}constructor(e){this.client=e}}var y=n(63);let w={pending:"대기",approved:"승인",rejected:"거절",deferred:"잠시 멈춤"},j={pending:"bg-muted text-muted-foreground ring-border",approved:"bg-emerald-500/15 text-emerald-700 ring-emerald-500/30",rejected:"bg-rose-500/15 text-rose-700 ring-rose-500/30",deferred:"bg-amber-500/15 text-amber-700 ring-amber-500/30"},N={high:"bg-orange-500/15 text-orange-700 ring-orange-500/30",medium:"bg-sky-500/15 text-sky-700 ring-sky-500/30",low:"bg-muted text-muted-foreground ring-border"},I={research:"\uD83D\uDD0D","research-and-plan":"\uD83D\uDCCB","dev-feature":"⚙","dev-spec":"\uD83D\uDCD0",cognitive:"\uD83E\uDDE0",debug:"\uD83D\uDEE0","workflow-update":"↻"};function S(e){var t,n;let{card:a,verdict:s,active:i,stackIndex:l=0}=e,d=i?0:6*l,o=i?1:Math.max(.92,1-.04*l),c=i?1:Math.max(.6,1-.18*l),{task:u}=a,m=u.urls.length+u.keywords.length+u.refs.length;return(0,r.jsxs)("article",{"data-testid":"memo-intake-card","data-task-key":u.taskKey,"data-active":i?"true":"false","data-stack-index":l,"data-verdict":s,className:"absolute inset-0 flex flex-col gap-2 rounded-2xl border border-border bg-card p-5 shadow-lg ring-1 ring-foreground/5",style:{zIndex:i?30:30-l,transform:"translateY(".concat(d,"px) scale(").concat(o,")"),opacity:c},children:[(0,r.jsxs)("header",{className:"flex items-start justify-between gap-3",children:[(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)("p",{className:"truncate text-[10px] uppercase tracking-wider text-muted-foreground","data-testid":"memo-card-mission",children:a.missionTitle}),(0,r.jsx)("h3",{className:"font-heading text-base font-medium leading-snug","data-testid":"memo-card-title",children:u.title})]}),(0,r.jsx)("span",{"data-testid":"memo-card-verdict",className:"shrink-0 rounded-full px-2 py-0.5 text-[10px] font-medium ring-1 ".concat(j[s]),children:w[s]})]}),(0,r.jsx)("p",{className:"line-clamp-3 text-sm text-foreground","data-testid":"memo-card-intent",children:u.intent}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5 text-[10px]",children:[(0,r.jsxs)("span",{"data-testid":"memo-card-category",className:"inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-muted-foreground ring-1 ring-border",children:[(0,r.jsx)("span",{"aria-hidden":!0,children:null!=(t=I[u.category])?t:"•"}),u.category]}),(0,r.jsx)("span",{"data-testid":"memo-card-priority",className:"rounded-full px-2 py-0.5 font-medium ring-1 ".concat(null!=(n=N[u.priority])?n:N.low),children:u.priority}),u.workflowEligible?(0,r.jsx)("span",{"data-testid":"memo-card-workflow",className:"rounded-full bg-violet-500/15 px-2 py-0.5 text-violet-700 ring-1 ring-violet-500/30",children:"workflow"}):(0,r.jsx)("span",{"data-testid":"memo-card-workflow",className:"rounded-full bg-muted px-2 py-0.5 text-muted-foreground ring-1 ring-border",children:"no-workflow"}),m>0&&(0,r.jsxs)("span",{"data-testid":"memo-card-refs",className:"rounded-full bg-muted px-2 py-0.5 text-muted-foreground ring-1 ring-border",children:[m," ref",1===m?"":"s"]})]}),i&&(0,r.jsxs)("footer",{"data-testid":"memo-card-hint",className:"mt-auto grid grid-cols-2 gap-1 pt-2 text-[10px] text-muted-foreground",children:[(0,r.jsx)("span",{children:"← 거절"}),(0,r.jsx)("span",{className:"text-right",children:"승인 →"}),(0,r.jsx)("span",{children:"↑ 잠시 멈춤"}),(0,r.jsx)("span",{className:"text-right",children:"펼치기 ↓"})]})]})}function R(e,t,n,r){y.K.emit({surface:"pwa",intent:{layer:"selection",kind:"pwa.selection.toggle_change",target:{kind:"toggle",id:e},value:{from:t,to:n}},...r?{context:{active_workflow_run_id:r}}:{}})}let C={left:"reject",right:"approve",up:"defer",down:"expand"},E={ArrowLeft:"reject",ArrowRight:"approve",ArrowUp:"defer",ArrowDown:"expand"," ":"approve"},O={reject:"rejected",approve:"approved",defer:"deferred"};function L(){let{initialMemo:e,onClose:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{client:n}=(0,s.Q)(),l=(0,a.useMemo)(()=>new b(n),[n]),[d,o]=(0,a.useState)(null!=e?e:""),[c,u]=(0,a.useState)(!1),[m,p]=(0,a.useState)(null),[g,f]=(0,a.useState)({}),[h,k]=(0,a.useState)(0),[y,w]=(0,a.useState)(null),[j,N]=(0,a.useState)(null),[I,S]=(0,a.useState)(!1),[C,E]=(0,a.useState)(""),L=(0,a.useRef)(null),[P,D]=(0,a.useState)(!1),[K,A]=(0,a.useState)(!1),[$,_]=(0,a.useState)(!1),[U,X]=(0,a.useState)(!1),V=(0,a.useMemo)(()=>m?function(e){let t=[];for(let n of e)for(let e of n.tasks)t.push({missionId:n.id,missionTitle:n.title,task:e});return t}(m.decomposition.missions):[],[m]),H=(0,a.useMemo)(()=>{let e={approved:0,rejected:0,deferred:0,pending:0};for(let n of V){var t;let r=null!=(t=g[n.task.taskKey])?t:"pending";e[r]+=1}return e},[V,g]),B=H.approved+H.rejected+H.deferred>0,F=(0,a.useMemo)(()=>V.filter(e=>"approved"===g[e.task.taskKey]).map(e=>e.task.taskKey),[V,g]),W=(0,a.useCallback)(()=>{p(null),f({}),k(0),w(null),N(null),S(!1),E(""),null==t||t()},[t]),q=(0,a.useCallback)(()=>{var e;null==(e=L.current)||e.click()},[]),Q=(0,a.useCallback)(async e=>{var t,n;let r=null==(t=e.target.files)?void 0:t[0];if(e.target.value="",r){(0,v.cY)("intake.memo-preview.photo.pick",{name:r.name,size:r.size,type:r.type}),D(!0);try{let e=await l.submitPhotoOcr(r,r.name||"memo-photo.jpg"),t=(null!=(n=e.markdown)?n:"").trim();if(!t)return void x.oR.error("OCR 결과가 비어 있습니다 — 사진을 다시 찍거나 다른 이미지를 선택하세요.");o(e=>e.trim()?"".concat(t,"\n\n---\n\n").concat(e):t),x.oR.success("OCR 추가됨 (provider=".concat(e.provider," \xb7 ").concat(t.length,"자) — 수정 후 Run preview 누르세요."))}catch(e){x.oR.error("OCR 실패: ".concat(e instanceof Error?e.message:e)),(0,v.cY)("intake.memo-preview.photo.error",{err:String(e)})}finally{D(!1)}}},[l]),G=(0,a.useCallback)(async()=>{let e=d.trim(),t=C.trim();if(e&&t&&m){(0,v.cY)("intake.memo-preview.refine",{hintLen:t.length,useRealLlm:K}),u(!0),w(null),N(null);try{let n=await l.preview({rawText:e,refinementHint:t,priorDecomposition:{missions:m.decomposition.missions},...K?{useRealLlm:!0}:{},...U?{useRealEnrich:!0}:{}});p(n),f({}),k(0),E(""),S(!1)}catch(e){x.oR.error("refine failed: ".concat(e instanceof Error?e.message:e)),(0,v.cY)("intake.memo-preview.refine.error",{err:String(e)})}finally{u(!1)}}},[l,d,C,m,K,U]),Z=(0,a.useCallback)(async()=>{let e=d.trim();if(e){(0,v.cY)("intake.memo-preview.submit",{length:e.length,useRealLlm:K,useRealEnrich:U}),u(!0),w(null),N(null);try{let t=await l.preview({rawText:e,...K?{useRealLlm:!0}:{},...U?{useRealEnrich:!0}:{}});p(t),f({}),k(0)}catch(e){x.oR.error("pipeline preview failed: ".concat(e instanceof Error?e.message:e)),(0,v.cY)("intake.memo-preview.error",{err:String(e)})}finally{u(!1)}}},[l,d,K,U]),ee=(0,a.useCallback)(e=>{if(!V.length||h>=V.length)return;let t=V[h];if((0,v.cY)("intake.memo-preview.decision",{taskKey:t.task.taskKey,decision:e}),"expand"===e)return void w(t);f(n=>({...n,[t.task.taskKey]:O[e]})),k(e=>Math.min(e+1,V.length))},[V,h]),et=(0,a.useCallback)(()=>{V.length&&((0,v.cY)("intake.memo-preview.approve-all-pending",{count:H.pending}),f(e=>{let t={...e};for(let e of V){var n;(null!=(n=t[e.task.taskKey])?n:"pending")==="pending"&&(t[e.task.taskKey]="approved")}return t}))},[V,H.pending]),en=(0,a.useCallback)(async()=>{var e,t,n;let r=d.trim();if(!r)return;let a=B?F:void 0;if(B&&0===F.length)return void x.oR.error("승인된 카드가 없습니다 — 카드를 → 스와이프해서 승인하세요.");(0,v.cY)("intake.memo-preview.register.submit",{length:r.length,mode:B?"selective":"express",includeCount:null!=(e=null==a?void 0:a.length)?e:null,useRealLlm:K,commitToTox:$}),u(!0);try{let e={rawText:r,...a?{includeTaskKeys:a}:{},...K?{useRealLlm:!0}:{},...U?{useRealEnrich:!0}:{}},s=$?await l.commit(e):await l.preview({...e,register:!0});p(s);let i=s.register;if(i){let e=null!=(n=null==(t=i.skippedTaskKeys)?void 0:t.length)?n:0;N({missions:i.missionIds.length,tasks:i.taskIds.length,skipped:e});let r=e>0?" \xb7 ".concat(e," skipped"):"",a=$?"~/.elanous/tasks/tasks.db":"in-memory";x.oR.success("registered ".concat(i.missionIds.length," mission").concat(1===i.missionIds.length?"":"s"," \xb7 ").concat(i.taskIds.length," task").concat(1===i.taskIds.length?"":"s"," (").concat(a,")").concat(r))}else x.oR.error("register skipped — endpoint returned no register payload")}catch(e){x.oR.error("register failed: ".concat(e instanceof Error?e.message:e)),(0,v.cY)("intake.memo-preview.register.error",{err:String(e)})}finally{u(!1)}},[l,d,B,F,K,$,U]);return(0,r.jsxs)("section",{className:"mx-auto flex max-w-md flex-col gap-4 p-4","data-testid":"memo-intake-preview",children:[(0,r.jsxs)("header",{className:"space-y-1",children:[(0,r.jsx)("h2",{className:"font-heading text-lg font-medium",children:"New from memo"}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"Raw memo dump → 자동 task graph. ←/→/↑/↓ swipe = 거절/승인/잠시 멈춤/펼치기."}),(0,r.jsxs)("label",{"data-testid":"memo-intake-llm-toggle",className:"flex items-center gap-2 text-[10px] text-muted-foreground",children:[(0,r.jsx)("input",{type:"checkbox",checked:K,onChange:e=>{let t=e.target.checked;R("use-real-llm",K,t,null==m?void 0:m.intakeId),A(t)},disabled:c||P,"data-testid":"memo-intake-llm-toggle-input"}),(0,r.jsxs)("span",{children:[(0,r.jsx)("strong",{className:K?"text-foreground":"",children:"Enable Real LLM"})," ","— ",K?"실 streamLLM 호출 (provider 는 ~/.elanous/config.json \xb7 user-config 우선)":"LLM 미호출 \xb7 skeleton fallback \xb7 pipeline 흐름 + cards 렌더만 검증"]})]}),(0,r.jsxs)("label",{"data-testid":"memo-intake-enrich-toggle",className:"flex items-center gap-2 text-[10px] text-muted-foreground",children:[(0,r.jsx)("input",{type:"checkbox",checked:U,onChange:e=>{let t=e.target.checked;R("use-real-enrich",U,t,null==m?void 0:m.intakeId),X(t)},disabled:c||P,"data-testid":"memo-intake-enrich-toggle-input"}),(0,r.jsxs)("span",{children:[(0,r.jsx)("strong",{className:U?"text-foreground":"",children:"Enable Real enrich"})," ","— ",U?"URL fetch + gh repo view 호출 (keyword crawl 은 stub \xb7 FU-I7b.2)":'모든 enrichment 가 per-row "no plugin" diag \xb7 외부 HTTP 호출 0']})]}),(0,r.jsxs)("label",{"data-testid":"memo-intake-commit-toggle",className:"flex items-center gap-2 text-[10px] text-muted-foreground",children:[(0,r.jsx)("input",{type:"checkbox",checked:$,onChange:e=>{let t=e.target.checked;R("commit-to-tox",$,t,null==m?void 0:m.intakeId),_(t)},disabled:c||P,"data-testid":"memo-intake-commit-toggle-input"}),(0,r.jsxs)("span",{children:[(0,r.jsx)("strong",{className:$?"text-rose-700 dark:text-rose-400":"",children:"Commit to real TOX"})," ","— ",$?"Register 가 ~/.elanous/tasks/tasks.db 에 실 mission/task 쓰기 + workflow YAML 디스크 저장 (되돌릴 수 없음)":"Register 가 in-memory store 만 사용 \xb7 사용자 TOX 미터치"]})]})]}),(0,r.jsx)("textarea",{value:d,onChange:e=>o(e.target.value),placeholder:"- 스크린 레코딩 능력 흡수\n https://github.com/siddharthvaddem/openscreen\n- 이미지 바로 보기 안 되는 이유 분석\n\n==== 다이어그램 강화 ====\n위젯 surface \xb7 Mermaid \xb7 DrawIO repo 확인",rows:6,disabled:c,"data-testid":"memo-intake-textarea",className:"w-full resize-y rounded-md border border-input bg-background px-3 py-2 font-mono text-sm shadow-xs focus:outline-none focus:ring-2 focus:ring-ring"}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)(i.$,{type:"button",size:"sm",onClick:()=>void Z(),disabled:c||P||!d.trim(),"data-testid":"memo-intake-submit",children:c&&!m?"Running…":"Run preview"}),(0,r.jsx)(i.$,{type:"button",size:"sm",variant:"ghost",onClick:q,disabled:c||P,"data-testid":"memo-intake-photo","aria-label":"upload photo for OCR",title:"사진 / 화이트보드 / post-it → OCR → memo",children:P?"⏳ OCR…":"\uD83D\uDCF7 Photo"}),(0,r.jsx)("input",{ref:L,type:"file",accept:"image/*",capture:"environment",className:"hidden","data-testid":"memo-intake-photo-input",onChange:e=>void Q(e)}),m&&(0,r.jsx)(i.$,{type:"button",size:"sm",variant:"ghost",onClick:W,disabled:c,"data-testid":"memo-intake-reset",children:"Reset"})]}),m&&(0,r.jsx)(z,{res:m,registered:j}),m&&null===j&&(0,r.jsx)(T,{open:I,hint:C,busy:c,onToggle:()=>S(e=>!e),onHintChange:E,onSubmit:()=>void G()}),m&&V.length>0&&(0,r.jsx)(J,{cards:V,verdicts:g,topIndex:h,onSwipe:ee}),m&&V.length>0&&(0,r.jsx)(M,{tallies:H,total:V.length}),m&&V.length>0&&(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)(i.$,{type:"button",size:"sm",variant:"ghost",onClick:et,disabled:c||0===H.pending||null!==j,"data-testid":"memo-intake-approve-pending",children:"Approve all pending (".concat(H.pending,")")}),(0,r.jsx)(i.$,{type:"button",size:"sm",onClick:()=>void en(),disabled:c||null!==j||B&&0===F.length,"data-testid":"memo-intake-register",children:j?"Registered ✓ (".concat(j.tasks," tasks)"):c?"Registering…":B?"Register approved (".concat(F.length,")"):"Register all (".concat(V.length,")")}),(0,r.jsx)("span",{className:"text-[10px] text-muted-foreground",children:"".concat(h," / ").concat(V.length," reviewed")})]}),y&&(0,r.jsx)(Y,{card:y,onClose:()=>w(null)})]})}function M(e){let{tallies:t,total:n}=e;return(0,r.jsxs)("div",{"data-testid":"memo-intake-tally",className:"flex flex-wrap items-center gap-2 text-[10px] text-muted-foreground",children:[(0,r.jsxs)("span",{className:"font-medium",children:[n," 카드"]}),(0,r.jsxs)("span",{"data-testid":"memo-tally-approved",className:"rounded-full bg-emerald-500/15 px-2 py-0.5 text-emerald-700 ring-1 ring-emerald-500/30",children:["✓ ",t.approved]}),(0,r.jsxs)("span",{"data-testid":"memo-tally-rejected",className:"rounded-full bg-rose-500/15 px-2 py-0.5 text-rose-700 ring-1 ring-rose-500/30",children:["✗ ",t.rejected]}),(0,r.jsxs)("span",{"data-testid":"memo-tally-deferred",className:"rounded-full bg-amber-500/15 px-2 py-0.5 text-amber-700 ring-1 ring-amber-500/30",children:["⏸ ",t.deferred]}),(0,r.jsxs)("span",{"data-testid":"memo-tally-pending",className:"rounded-full bg-muted px-2 py-0.5 ring-1 ring-border",children:["… ",t.pending]})]})}function T(e){let{open:t,hint:n,busy:a,onToggle:s,onHintChange:l,onSubmit:d}=e;return(0,r.jsxs)("div",{"data-testid":"memo-intake-refine",className:"space-y-2",children:[(0,r.jsx)(i.$,{type:"button",size:"sm",variant:"ghost",onClick:s,disabled:a,"data-testid":"memo-intake-refine-toggle",className:"text-xs",children:t?"↓ Hide refine":"↻ Refine decomposition"}),t&&(0,r.jsxs)("div",{className:"space-y-2 rounded-lg border border-dashed border-border bg-card/30 p-3",children:[(0,r.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"LLM 에 다시 prompt — 원본 memo + 이전 분해 + hint 를 함께 보냅니다. 결과 카드의 verdict 는 초기화됩니다."}),(0,r.jsx)("textarea",{value:n,onChange:e=>l(e.target.value),placeholder:'예: "missions 더 작게" \xb7 "P0 만 남겨" \xb7 "t-9 ~ t-11 을 하나로 합쳐"',rows:2,disabled:a,"data-testid":"memo-intake-refine-textarea",className:"w-full resize-y rounded-md border border-input bg-background px-2 py-1.5 text-xs shadow-xs focus:outline-none focus:ring-2 focus:ring-ring"}),(0,r.jsx)(i.$,{type:"button",size:"sm",onClick:d,disabled:a||!n.trim(),"data-testid":"memo-intake-refine-submit",children:a?"Refining…":"Re-run with hint"})]})]})}function z(e){let{res:t,registered:n}=e;return(0,r.jsxs)("div",{"data-testid":"memo-intake-summary",className:"space-y-1 rounded-lg border border-dashed border-border bg-card/50 p-3 text-xs text-muted-foreground",children:[(0,r.jsxs)("p",{children:["intake ",(0,r.jsx)("code",{"data-testid":"memo-intake-id",className:"rounded bg-muted px-1 text-foreground",children:t.intakeId})," \xb7 ",t.decomposition.fallback?"skeleton fallback":"live"]}),(0,r.jsxs)("p",{children:[t.decomposition.missionCount," mission",1===t.decomposition.missionCount?"":"s"," \xb7"," ",t.decomposition.taskCount," task",1===t.decomposition.taskCount?"":"s"," \xb7"," ","workflow-eligible ",t.categorize.counts.workflowEligible,"/",t.categorize.counts.total," \xb7"," ","deps ",t.align.dependencyCount]}),n&&(0,r.jsxs)("p",{"data-testid":"memo-intake-registered",className:"text-emerald-600 dark:text-emerald-400",children:["✓ registered ",n.missions," mission",1===n.missions?"":"s"," \xb7 ",n.tasks," task",1===n.tasks?"":"s"," (in-memory)",n.skipped>0?" \xb7 ".concat(n.skipped," skipped"):""]})]})}function J(e){let{cards:t,verdicts:n,topIndex:s,onSwipe:i}=e,l=(0,a.useRef)(null),d=(0,a.useRef)(i);if((0,a.useEffect)(()=>{d.current=i},[i]),(0,a.useEffect)(()=>{let e=l.current;if(e)return(0,k.ix)(e,{onSwipe:e=>d.current(C[e])})},[]),(0,a.useEffect)(()=>{if(s>=t.length)return;let e=e=>{let t=E[e.key];t&&(e.preventDefault(),d.current(t))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[s,t.length]),s>=t.length)return(0,r.jsx)("div",{"data-testid":"memo-deck-empty",className:"flex h-72 items-center justify-center rounded-2xl border border-dashed border-border text-sm text-muted-foreground",children:'모든 카드 검토 완료 — 아래 "Approve all & Register" 를 눌러 등록.'});let o=t.slice(s,s+3);return(0,r.jsxs)("div",{ref:l,"data-testid":"memo-deck","data-top-index":s,role:"region","aria-label":"memo intake card deck \xb7 좌우 = 거절/승인 \xb7 위 = 잠시 멈춤 \xb7 아래 = 펼치기",tabIndex:0,className:"relative h-80 select-none touch-none",children:[o.map((e,t)=>{var a;return(0,r.jsx)(S,{card:e,verdict:null!=(a=n[e.task.taskKey])?a:"pending",active:0===t,stackIndex:t},e.task.taskKey)}),(0,r.jsxs)("div",{"data-testid":"memo-deck-progress",className:"absolute -bottom-6 left-0 right-0 text-center text-[10px] text-muted-foreground",children:[s+1," / ",t.length]})]})}function Y(e){let{card:t,onClose:n}=e,{task:a}=t;return(0,r.jsx)("div",{"data-testid":"memo-card-expand",role:"dialog","aria-modal":"true",className:"fixed inset-0 z-50 flex items-end justify-center bg-foreground/40 p-4 sm:items-center",onClick:n,children:(0,r.jsxs)("div",{onClick:e=>e.stopPropagation(),className:"w-full max-w-md space-y-3 rounded-2xl border border-border bg-card p-5 shadow-xl",children:[(0,r.jsxs)("header",{className:"space-y-1",children:[(0,r.jsx)("p",{className:"text-[10px] uppercase tracking-wider text-muted-foreground",children:t.missionTitle}),(0,r.jsx)("h3",{className:"font-heading text-base font-medium",children:a.title})]}),(0,r.jsx)("p",{className:"text-sm text-foreground",children:a.intent}),(a.urls.length>0||a.keywords.length>0||a.refs.length>0)&&(0,r.jsxs)("div",{className:"space-y-1 text-xs text-muted-foreground",children:[a.urls.length>0&&(0,r.jsxs)("p",{"data-testid":"memo-card-expand-urls",children:["URLs: ",a.urls.join(" \xb7 ")]}),a.keywords.length>0&&(0,r.jsxs)("p",{"data-testid":"memo-card-expand-keywords",children:["Keywords: ",a.keywords.join(" \xb7 ")]}),a.refs.length>0&&(0,r.jsxs)("p",{"data-testid":"memo-card-expand-refs",children:["Refs: ",a.refs.join(" \xb7 ")]})]}),(0,r.jsxs)("p",{className:"text-[10px] text-muted-foreground",children:[a.category," \xb7 ",a.priority," priority \xb7 ",a.workflowEligible?"workflow":"no-workflow"," \xb7 confidence ",a.confidence]}),(0,r.jsx)("div",{className:"flex justify-end pt-1",children:(0,r.jsx)(i.$,{type:"button",size:"sm",variant:"ghost",onClick:n,"data-testid":"memo-card-expand-close",children:"Close"})})]})})}let P="elanous.intake.recent",D={absorb:"→ 흡수",tasks:"→ 작업",graph:"→ 그래프","ask-human":"→ 직접 고르세요"};function K(e){if(null==e?void 0:e.storage)return e.storage;try{return globalThis.localStorage}catch(e){return null}}function A(e){try{var t;let n=null==(t=K(e))?void 0:t.getItem(P);if(!n)return[];let r=JSON.parse(n);return Array.isArray(r)?r:[]}catch(e){return[]}}async function $(e,t,n){let r=d(n);return"absorb"===t?{absorbIds:(await o(e,n)).ids,recentPreview:r}:{acceptanceId:(await c(e,n)).acceptanceId,recentPreview:r}}function _(){var e,t;let{state:n,deps:l}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{client:o}=(0,s.Q)(),[c,m]=(0,a.useState)(""),[p,f]=(0,a.useState)(!1),[x,v]=(0,a.useState)(null),[k,b]=(0,a.useState)(null),[y,w]=(0,a.useState)(null),[j,N]=(0,a.useState)(null),[I,S]=(0,a.useState)({}),[R,C]=(0,a.useState)(!1),[E,O]=(0,a.useState)(""),[M,T]=(0,a.useState)([]),[z,J]=(0,a.useState)({}),Y=(0,a.useRef)(z),_=(0,a.useMemo)(()=>[...new Set(M.filter(e=>"absorb"===e.track).flatMap(e=>{var t;return null!=(t=e.ids)?t:[]}))],[M]),U=(0,a.useRef)(_);U.current=_;let X=(0,a.useRef)(()=>{}),[V,H]=(0,a.useState)(null),[B,F]=(0,a.useState)(!1),W=(0,a.useRef)(!1),q=(0,a.useRef)(0),Q=(0,a.useRef)(c);Q.current=c;let G=(0,a.useRef)(null),Z=(0,a.useRef)(I),ee=(0,a.useRef)(M),et=(0,a.useMemo)(()=>[...new Set([...M.filter(e=>"graph"===e.track).map(e=>e.runId),null==j?void 0:j.runId].filter(e=>!!e))],[M,null==j?void 0:j.runId]);(0,a.useEffect)(()=>{T(A(l))},[l]),(0,a.useEffect)(()=>{ee.current=M},[M]),(0,a.useEffect)(()=>{let e=!1,t=new Map,n=async r=>{var a;if(e||!U.current.includes(r)||g(null!=(a=Y.current[r])?a:null).settled)return;let s=null;try{s=await o.fetchJson("/v1/intake-ledger/items/".concat(encodeURIComponent(r)))}catch(e){}e||(Y.current={...Y.current,[r]:s},J(Y.current),U.current.includes(r)&&!g(s).settled?t.set(r,setTimeout(()=>{n(r)},6e4)):t.delete(r))};return X.current=e=>{var r;t.has(e)||g(null!=(r=Y.current[e])?r:null).settled||(t.set(e,null),n(e))},U.current.forEach(X.current),()=>{for(let n of(e=!0,t.values()))null!==n&&clearTimeout(n);t.clear(),X.current=()=>{}}},[o]),(0,a.useEffect)(()=>{_.forEach(X.current)},[_]);let en=(0,a.useCallback)(e=>{var t,n;T(function(e,t){let n=[e,...A(t)].slice(0,20);try{var r;null==(r=K(t))||r.setItem(P,JSON.stringify(n))}catch(e){}return n}({...e,at:null!=(n=null==l||null==(t=l.now)?void 0:t.call(l))?n:new Date().toISOString()},l))},[l]),er=(0,a.useCallback)(async()=>{let e=c.trim();if(e&&!p){f(!0),v(null),b(null);try{var t;let n=await $(o,"absorb",e);b(null!=(t=n.absorbIds)?t:[]),en({track:"absorb",preview:n.recentPreview,ids:n.absorbIds})}catch(e){v(e instanceof Error?e.message:String(e))}finally{f(!1)}}},[p,o,en,c]),ea=(0,a.useCallback)(()=>{let e=c.trim();e&&!p&&(O(e),C(!0),en({track:"split",preview:d(e)}))},[p,en,c]),es=(0,a.useCallback)(async()=>{let e=c.trim();if(e&&!p){f(!0),v(null),w(null),N(null);try{var t;let n=await $(o,"graph",e);w(null!=(t=n.acceptanceId)?t:null),G.current=Date.now(),en({track:"graph",preview:n.recentPreview,acceptanceId:n.acceptanceId})}catch(e){v(e instanceof Error?e.message:String(e))}finally{f(!1)}}},[p,o,en,c]);(0,a.useEffect)(()=>{let e=++q.current;if(H(null),!c.trim())return;let t=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e)},r=e.trim();if(!r)return()=>{};let a=n.setTimeout(()=>t(r),500);return()=>n.clearTimeout(a)}(c,t=>{u(o,t).then(t=>{q.current===e&&H(t)},()=>{q.current===e&&H(null)})});return()=>{++q.current,t()}},[o,c]);let ei=(0,a.useCallback)(async()=>{let e=c.trim();if(!e||W.current||p||(null==V?void 0:V.reason)!=="rule-unknown")return;let t=++q.current;W.current=!0,F(!0);try{let n=await u(o,e,{classify:!0});q.current===t&&Q.current.trim()===e&&H(n)}catch(n){q.current===t&&Q.current.trim()===e&&H({track:"ask-human",confidence:0,reason:"classifier-failed:request-error",decidedBy:"classifier"})}finally{W.current=!1,F(!1)}},[p,o,null==V?void 0:V.reason,c]);(0,a.useEffect)(()=>{if(!y)return;let e=!1,t=async()=>{var t,n;if(e)return;let r=null!=(t=G.current)?t:Date.now();if(!(Date.now()-r>3e5))try{let t=await o.fetchJson("/v1/harness/ask-status?acceptanceId=".concat(encodeURIComponent(y)));if(!e&&(N(t),t.runId&&ee.current.some(e=>"graph"===e.track&&e.acceptanceId===y&&e.runId!==t.runId))){let e=ee.current.map(e=>"graph"===e.track&&e.acceptanceId===y?{...e,runId:t.runId}:e);ee.current=e;try{null==(n=K(l))||n.setItem(P,JSON.stringify(e))}catch(e){}T(e)}}catch(e){}};t();let n=setInterval(()=>{t()},5e3);return()=>{e=!0,clearInterval(n)}},[y,o,l]),(0,a.useEffect)(()=>{Z.current=I},[I]),(0,a.useEffect)(()=>{let e;if(0===et.length)return;let t=!1,n=!1,r=async()=>{if(t||n)return;let a=et.filter(e=>{var t;return!h(null!=(t=Z.current[e])?t:[]).done});if(0!==a.length){n=!0;try{let e=await Promise.allSettled(a.map(e=>o.fetchJson("/v1/harness/run-events?runId=".concat(encodeURIComponent(e)))));if(t)return;let n={};e.forEach((e,t)=>{"fulfilled"===e.status&&(n[a[t]]=e.value)}),Object.keys(n).length>0&&(Z.current={...Z.current,...n},S(Z.current))}finally{n=!1,!t&&et.some(e=>{var t;return!h(null!=(t=Z.current[e])?t:[]).done})&&(e=setTimeout(()=>{r()},3e4))}}};return r(),()=>{t=!0,e&&clearTimeout(e)}},[o,et]);let el=null!=n?n:{text:c,busy:p,error:x,absorbIds:k,acceptanceId:y,graph:j,runEvents:I,splitOpen:R,splitMemo:E,recent:M,route:V},ed=(0,a.useMemo)(()=>{var e,t;return el.acceptanceId?{acceptanceId:el.acceptanceId,phase:null==(e=el.graph)?void 0:e.phase,runId:null==(t=el.graph)?void 0:t.runId}:null},[el.acceptanceId,el.graph]),eo=0===el.text.trim().length,ec=null!=(e=el.route)?e:null,eu=ec?"absorb"===(t=ec.track)?"absorb":"tasks"===t?"split":"graph"===t?"graph":null:null,em=e=>eu===e?"ring-2 ring-ring":void 0;return(0,r.jsxs)("section",{className:"mx-auto flex max-w-lg flex-col gap-4 p-4","data-testid":"intake-front-door",children:[(0,r.jsx)("header",{className:"space-y-1",children:(0,r.jsx)("h1",{className:"font-heading text-lg font-medium",children:"Intake"})}),(0,r.jsx)("textarea",{value:el.text,onChange:e=>m(e.target.value),rows:6,disabled:el.busy,"data-testid":"intake-front-door-field","aria-label":"intake",className:"w-full resize-y rounded-md border border-input bg-background px-3 py-2 text-sm shadow-xs focus:outline-none focus:ring-2 focus:ring-ring"}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground","data-testid":"intake-front-door-explainer",children:"보내면 elanous 가 이 글을 처리합니다(흡수 \xb7 작업 분할 \xb7 그래프 실행)."}),ec&&(0,r.jsxs)("div",{"data-testid":"intake-route-chip","data-auto-submit":"0",className:"space-y-0.5 text-sm",children:[(0,r.jsx)("p",{"data-testid":"intake-route-chip-label",children:D[ec.track]}),"classifier"===ec.decidedBy&&(0,r.jsxs)("p",{"data-testid":"intake-route-chip-classifier",children:["분류기 판정 \xb7 확신 ",Math.round(100*ec.confidence),"%"]}),(0,r.jsx)("p",{"data-testid":"intake-route-chip-reason",className:"text-xs text-muted-foreground",children:function(e){if("classifier"!==e.decidedBy)return e.reason;if(e.reason.startsWith("classifier-failed:"))return"분류기가 못 갈랐습니다 — 직접 골라 주세요";if(e.reason.startsWith("classifier-low-confidence:")){var t,n;let r=e.reason.slice(26);return"분류기 추정: ".concat(null!=(n=null==(t=D[r])?void 0:t.slice(2))?n:r," (확신 낮음)")}return e.reason}(ec)}),"rule-unknown"===ec.reason&&(0,r.jsx)(i.$,{type:"button",size:"sm",variant:"outline",disabled:B||el.busy||eo,onClick:()=>void ei(),"data-testid":"intake-route-classify",children:"분류기로 가르기"})]}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,r.jsx)(i.$,{type:"button",size:"sm",className:em("absorb"),"aria-pressed":"absorb"===eu,disabled:eo||el.busy,onClick:()=>void er(),"data-testid":"intake-absorb","data-emphasized":"absorb"===eu?"true":"false",children:"흡수"}),(0,r.jsx)(i.$,{type:"button",size:"sm",variant:"outline",className:em("split"),"aria-pressed":"split"===eu,disabled:eo||el.busy,onClick:ea,"data-testid":"intake-split","data-emphasized":"split"===eu?"true":"false",children:"작업으로 나누기"}),(0,r.jsx)(i.$,{type:"button",size:"sm",variant:"secondary",className:em("graph"),"aria-pressed":"graph"===eu,disabled:eo||el.busy,onClick:()=>void es(),"data-testid":"intake-graph","data-emphasized":"graph"===eu?"true":"false",children:"그래프로 실행"})]}),el.absorbIds&&(0,r.jsxs)("div",{"data-testid":"intake-absorb-result",className:"space-y-1 text-sm",children:[(0,r.jsx)("p",{children:"대기열에 넣었습니다(아침 정기 흡수에서 처리)"}),(0,r.jsx)("ul",{children:el.absorbIds.map(e=>(0,r.jsx)("li",{"data-testid":"intake-absorb-id",children:e},e))})]}),ed&&(0,r.jsxs)("div",{"data-testid":"intake-graph-result",className:"space-y-1 text-sm",children:[(0,r.jsx)("p",{"data-testid":"intake-acceptance-id",children:ed.acceptanceId}),ed.phase&&(0,r.jsx)("p",{"data-testid":"intake-graph-phase",children:ed.phase}),ed.runId&&(0,r.jsx)("p",{"data-testid":"intake-graph-run",children:ed.runId})]}),el.error&&(0,r.jsx)("p",{className:"text-sm text-destructive","data-testid":"intake-front-door-error",children:el.error}),el.splitOpen&&(0,r.jsx)("div",{"data-testid":"intake-split-host",children:(0,r.jsx)(L,{initialMemo:el.splitMemo,onClose:()=>C(!1)})}),el.recent.length>0&&(0,r.jsx)("ul",{"data-testid":"intake-recent",className:"space-y-1 text-xs text-muted-foreground",children:el.recent.map((e,t)=>{var n;let a=(e=>{var t,n,r;let a=null!=(n=e.runId)?n:e.acceptanceId===el.acceptanceId?null==ed?void 0:ed.runId:void 0;return a?h(null!=(r=null==(t=el.runEvents)?void 0:t[a])?r:[]):null})(e);return(0,r.jsxs)("li",{"data-testid":"intake-recent-row",children:[e.track," \xb7 ",e.preview,e.ids?" \xb7 ".concat(e.ids.join(", ")):"","absorb"===e.track&&(null==(n=e.ids)?void 0:n.map(e=>{var t,n;let a=Object.hasOwn(z,e)?g(null!=(t=z[e])?t:null):null;return(0,r.jsxs)("span",{"data-testid":"intake-absorb-status",children:[" \xb7 흡수: ",null!=(n=null==a?void 0:a.label)?n:"조회 중",(null==a?void 0:a.noteRef)?" \xb7 ".concat(a.noteRef):""]},e)})),e.acceptanceId?" \xb7 ".concat(e.acceptanceId):"",(null==a?void 0:a.stage)&&(0,r.jsxs)("span",{"data-testid":"intake-run-stage",children:[" \xb7 단계: ",a.stage]}),(null==a?void 0:a.lastEventAt)&&(0,r.jsxs)("time",{"data-testid":"intake-run-last-event",dateTime:a.lastEventAt,children:[" \xb7 마지막 사건: ",a.lastEventAt]}),(null==a?void 0:a.done)&&(0,r.jsxs)("span",{"data-testid":"intake-run-outcome",children:[" \xb7 ","completed"===a.outcome?"완료":"failed"===a.outcome?"실패":"결과 미상",a.error?" \xb7 ".concat(a.error.split("\n")[0]):""]})]},"".concat(e.at,"-").concat(t))})})]})}},92364:(e,t,n)=>{function r(e,t){var n,r;let a=null!=(n=t.minDistance)?n:100,s=null!=(r=t.minVelocity)?r:.3,i=0,l=0,d=0,o=!1,c=null,u=e=>{var n;null!=(n=t.shouldIgnore)&&n.call(t,e.target)||(i=e.clientX,l=e.clientY,d=e.timeStamp,o=!0,c=e.pointerId)},m=e=>{if(!o||e.pointerId!==c)return;o=!1,c=null;let n=e.clientX-i,r=e.clientY-l,u=Math.max(1,e.timeStamp-d),m=Math.abs(n),p=Math.abs(r);m<a||p>=m||m/u<s||t.onSwipe(n<0?"left":"right")},p=()=>{o=!1,c=null};return e.addEventListener("pointerdown",u),e.addEventListener("pointerup",m),e.addEventListener("pointercancel",p),()=>{e.removeEventListener("pointerdown",u),e.removeEventListener("pointerup",m),e.removeEventListener("pointercancel",p)}}function a(e,t){let n=0,r=0,a=0,s=!1,i=null,l=e=>{var l;null!=(l=t.shouldIgnore)&&l.call(t,e.target)||(n=e.clientX,r=e.clientY,a=e.timeStamp,s=!0,i=e.pointerId)},d=e=>{if(!s||e.pointerId!==i)return;s=!1,i=null;let l=function(e){var t,n;let r=null!=(t=e.minDistance)?t:100,a=null!=(n=e.minVelocity)?n:.3,s=Math.abs(e.dx),i=Math.abs(e.dy),l=Math.max(1,e.dt),d=Math.max(s,i);return d<r||d/l<a?null:s>=i?e.dx<0?"left":"right":e.dy<0?"up":"down"}({dx:e.clientX-n,dy:e.clientY-r,dt:e.timeStamp-a,...void 0!==t.minDistance?{minDistance:t.minDistance}:{},...void 0!==t.minVelocity?{minVelocity:t.minVelocity}:{}});l&&t.onSwipe(l)},o=()=>{s=!1,i=null};return e.addEventListener("pointerdown",l),e.addEventListener("pointerup",d),e.addEventListener("pointercancel",o),()=>{e.removeEventListener("pointerdown",l),e.removeEventListener("pointerup",d),e.removeEventListener("pointercancel",o)}}n.d(t,{gI:()=>r,ix:()=>a})}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7109],{3784:(t,n,e)=>{e.d(n,{n5:()=>C});var r=e(22120),i=e(31907),u=e(35417),o=e(96534),a=e(52867),s=e(53537);let l=t=>()=>t;function h(t,{sourceEvent:n,target:e,selection:r,mode:i,dispatch:u}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},selection:{value:r,enumerable:!0,configurable:!0},mode:{value:i,enumerable:!0,configurable:!0},_:{value:u}})}function c(t){t.preventDefault(),t.stopImmediatePropagation()}var f={name:"drag"},y={name:"space"},v={name:"handle"},d={name:"center"};let{abs:x,max:p,min:g}=Math;function _(t){return[+t[0],+t[1]]}function w(t){return[_(t[0]),_(t[1])]}var b={name:"x",handles:["w","e"].map(q),input:function(t,n){return null==t?null:[[+t[0],n[0][1]],[+t[1],n[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},A={name:"y",handles:["n","s"].map(q),input:function(t,n){return null==t?null:[[n[0][0],+t[0]],[n[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}};["n","w","e","s","nw","ne","sw","se"].map(q);var m={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},N={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},k={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},M={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},z={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function q(t){return{type:t}}function E(t){return!t.ctrlKey&&!t.button}function K(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function P(){return navigator.maxTouchPoints||"ontouchstart"in this}function T(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function C(){return function(t){var n,e=K,_=E,C=P,V=!0,j=(0,r.A)("start","brush","end"),D=6;function G(n){var e=n.property("__brush",J).selectAll(".overlay").data([q("overlay")]);e.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",m.overlay).merge(e).each(function(){var t=T(this).extent;(0,o.A)(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])}),n.selectAll(".selection").data([q("selection")]).enter().append("rect").attr("class","selection").attr("cursor",m.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=n.selectAll(".handle").data(t.handles,function(t){return t.type});r.exit().remove(),r.enter().append("rect").attr("class",function(t){return"handle handle--"+t.type}).attr("cursor",function(t){return m[t.type]}),n.each(I).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",O).filter(C).on("touchstart.brush",O).on("touchmove.brush",F).on("touchend.brush touchcancel.brush",H).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function I(){var t=(0,o.A)(this),n=T(this).selection;n?(t.selectAll(".selection").style("display",null).attr("x",n[0][0]).attr("y",n[0][1]).attr("width",n[1][0]-n[0][0]).attr("height",n[1][1]-n[0][1]),t.selectAll(".handle").style("display",null).attr("x",function(t){return"e"===t.type[t.type.length-1]?n[1][0]-D/2:n[0][0]-D/2}).attr("y",function(t){return"s"===t.type[0]?n[1][1]-D/2:n[0][1]-D/2}).attr("width",function(t){return"n"===t.type||"s"===t.type?n[1][0]-n[0][0]+D:D}).attr("height",function(t){return"e"===t.type||"w"===t.type?n[1][1]-n[0][1]+D:D})):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function S(t,n,e){var r=t.__brush.emitter;return!r||e&&r.clean?new B(t,n,e):r}function B(t,n,e){this.that=t,this.args=n,this.state=t.__brush,this.active=0,this.clean=e}function O(e){if((!n||e.touches)&&_.apply(this,arguments)){var r,u,l,h,w,q,E,K,P,C,j,D=this,G=e.target.__data__.type,B=(V&&e.metaKey?G="overlay":G)==="selection"?f:V&&e.altKey?d:v,O=t===A?null:M[G],F=t===b?null:z[G],H=T(D),J=H.extent,L=H.selection,Q=J[0][0],R=J[0][1],U=J[1][0],W=J[1][1],X=0,Y=0,Z=O&&F&&V&&e.shiftKey,$=Array.from(e.touches||[e],t=>{let n=t.identifier;return(t=(0,a.A)(t,D)).point0=t.slice(),t.identifier=n,t});(0,s.G)(D);var tt=S(D,arguments,!0).beforestart();if("overlay"===G){L&&(P=!0);let n=[$[0],$[1]||$[0]];H.selection=L=[[r=t===A?Q:g(n[0][0],n[1][0]),l=t===b?R:g(n[0][1],n[1][1])],[w=t===A?U:p(n[0][0],n[1][0]),E=t===b?W:p(n[0][1],n[1][1])]],$.length>1&&tu(e)}else r=L[0][0],l=L[0][1],w=L[1][0],E=L[1][1];u=r,h=l,q=w,K=E;var tn=(0,o.A)(D).attr("pointer-events","none"),te=tn.selectAll(".overlay").attr("cursor",m[G]);if(e.touches)tt.moved=ti,tt.ended=to;else{var tr=(0,o.A)(e.view).on("mousemove.brush",ti,!0).on("mouseup.brush",to,!0);V&&tr.on("keydown.brush",function(t){switch(t.keyCode){case 16:Z=O&&F;break;case 18:B===v&&(O&&(w=q-X*O,r=u+X*O),F&&(E=K-Y*F,l=h+Y*F),B=d,tu(t));break;case 32:(B===v||B===d)&&(O<0?w=q-X:O>0&&(r=u-X),F<0?E=K-Y:F>0&&(l=h-Y),B=y,te.attr("cursor",m.selection),tu(t));break;default:return}c(t)},!0).on("keyup.brush",function(t){switch(t.keyCode){case 16:Z&&(C=j=Z=!1,tu(t));break;case 18:B===d&&(O<0?w=q:O>0&&(r=u),F<0?E=K:F>0&&(l=h),B=v,tu(t));break;case 32:B===y&&(t.altKey?(O&&(w=q-X*O,r=u+X*O),F&&(E=K-Y*F,l=h+Y*F),B=d):(O<0?w=q:O>0&&(r=u),F<0?E=K:F>0&&(l=h),B=v),te.attr("cursor",m[G]),tu(t));break;default:return}c(t)},!0),(0,i.A)(e.view)}I.call(D),tt.start(e,B.name)}function ti(t){for(let n of t.changedTouches||[t])for(let t of $)t.identifier===n.identifier&&(t.cur=(0,a.A)(n,D));if(Z&&!C&&!j&&1===$.length){let t=$[0];x(t.cur[0]-t[0])>x(t.cur[1]-t[1])?j=!0:C=!0}for(let t of $)t.cur&&(t[0]=t.cur[0],t[1]=t.cur[1]);P=!0,c(t),tu(t)}function tu(t){var n;let e=$[0],i=e.point0;switch(X=e[0]-i[0],Y=e[1]-i[1],B){case y:case f:O&&(X=p(Q-r,g(U-w,X)),u=r+X,q=w+X),F&&(Y=p(R-l,g(W-E,Y)),h=l+Y,K=E+Y);break;case v:$[1]?(O&&(u=p(Q,g(U,$[0][0])),q=p(Q,g(U,$[1][0])),O=1),F&&(h=p(R,g(W,$[0][1])),K=p(R,g(W,$[1][1])),F=1)):(O<0?(X=p(Q-r,g(U-r,X)),u=r+X,q=w):O>0&&(X=p(Q-w,g(U-w,X)),u=r,q=w+X),F<0?(Y=p(R-l,g(W-l,Y)),h=l+Y,K=E):F>0&&(Y=p(R-E,g(W-E,Y)),h=l,K=E+Y));break;case d:O&&(u=p(Q,g(U,r-X*O)),q=p(Q,g(U,w+X*O))),F&&(h=p(R,g(W,l-Y*F)),K=p(R,g(W,E+Y*F)))}q<u&&(O*=-1,n=r,r=w,w=n,n=u,u=q,q=n,G in N&&te.attr("cursor",m[G=N[G]])),K<h&&(F*=-1,n=l,l=E,E=n,n=h,h=K,K=n,G in k&&te.attr("cursor",m[G=k[G]])),H.selection&&(L=H.selection),C&&(u=L[0][0],q=L[1][0]),j&&(h=L[0][1],K=L[1][1]),(L[0][0]!==u||L[0][1]!==h||L[1][0]!==q||L[1][1]!==K)&&(H.selection=[[u,h],[q,K]],I.call(D),tt.brush(t,B.name))}function to(t){var e;if(t.stopImmediatePropagation(),t.touches){if(t.touches.length)return;n&&clearTimeout(n),n=setTimeout(function(){n=null},500)}else(0,i.y)(t.view,P),tr.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);tn.attr("pointer-events","all"),te.attr("cursor",m.overlay),H.selection&&(L=H.selection),((e=L)[0][0]===e[1][0]||e[0][1]===e[1][1])&&(H.selection=null,I.call(D)),tt.end(t,B.name)}}function F(t){S(this,arguments).moved(t)}function H(t){S(this,arguments).ended(t)}function J(){var n=this.__brush||{selection:null};return n.extent=w(e.apply(this,arguments)),n.dim=t,n}return G.move=function(n,e,r){n.tween?n.on("start.brush",function(t){S(this,arguments).beforestart().start(t)}).on("interrupt.brush end.brush",function(t){S(this,arguments).end(t)}).tween("brush",function(){var n=this,r=n.__brush,i=S(n,arguments),o=r.selection,a=t.input("function"==typeof e?e.apply(this,arguments):e,r.extent),s=(0,u.A)(o,a);function l(t){r.selection=1===t&&null===a?null:s(t),I.call(n),i.brush()}return null!==o&&null!==a?l:l(1)}):n.each(function(){var n=arguments,i=this.__brush,u=t.input("function"==typeof e?e.apply(this,n):e,i.extent),o=S(this,n).beforestart();(0,s.G)(this),i.selection=null===u?null:u,I.call(this),o.start(r).brush(r).end(r)})},G.clear=function(t,n){G.move(t,null,n)},B.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(t,n){return this.starting?(this.starting=!1,this.emit("start",t,n)):this.emit("brush",t),this},brush:function(t,n){return this.emit("brush",t,n),this},end:function(t,n){return 0==--this.active&&(delete this.state.emitter,this.emit("end",t,n)),this},emit:function(n,e,r){var i=(0,o.A)(this.that).datum();j.call(n,this.that,new h(n,{sourceEvent:e,target:G,selection:t.output(this.state.selection),mode:r,dispatch:j}),i)}},G.extent=function(t){return arguments.length?(e="function"==typeof t?t:l(w(t)),G):e},G.filter=function(t){return arguments.length?(_="function"==typeof t?t:l(!!t),G):_},G.touchable=function(t){return arguments.length?(C="function"==typeof t?t:l(!!t),G):C},G.handleSize=function(t){return arguments.length?(D=+t,G):D},G.keyModifiers=function(t){return arguments.length?(V=!!t,G):V},G.on=function(){var t=j.on.apply(j,arguments);return t===j?G:t},G}(b)}},17505:(t,n,e)=>{e.d(n,{A:()=>a});var r=e(88393),i=e(78201);function u(t){return t.index}function o(t,n){var e=t.get(n);if(!e)throw Error("node not found: "+n);return e}function a(t){var n,e,a,s,l,h,c=u,f=function(t){return 1/Math.min(s[t.source.index],s[t.target.index])},y=(0,r.A)(30),v=1;function d(r){for(var u=0,o=t.length;u<v;++u)for(var a,s,c,f,y,d,x,p=0;p<o;++p)s=(a=t[p]).source,d=((d=Math.sqrt((f=(c=a.target).x+c.vx-s.x-s.vx||(0,i.A)(h))*f+(y=c.y+c.vy-s.y-s.vy||(0,i.A)(h))*y))-e[p])/d*r*n[p],f*=d,y*=d,c.vx-=f*(x=l[p]),c.vy-=y*x,s.vx+=f*(x=1-x),s.vy+=y*x}function x(){if(a){var r,i,u=a.length,h=t.length,f=new Map(a.map((t,n)=>[c(t,n,a),t]));for(r=0,s=Array(u);r<h;++r)(i=t[r]).index=r,"object"!=typeof i.source&&(i.source=o(f,i.source)),"object"!=typeof i.target&&(i.target=o(f,i.target)),s[i.source.index]=(s[i.source.index]||0)+1,s[i.target.index]=(s[i.target.index]||0)+1;for(r=0,l=Array(h);r<h;++r)i=t[r],l[r]=s[i.source.index]/(s[i.source.index]+s[i.target.index]);n=Array(h),p(),e=Array(h),g()}}function p(){if(a)for(var e=0,r=t.length;e<r;++e)n[e]=+f(t[e],e,t)}function g(){if(a)for(var n=0,r=t.length;n<r;++n)e[n]=+y(t[n],n,t)}return null==t&&(t=[]),d.initialize=function(t,n){a=t,h=n,x()},d.links=function(n){return arguments.length?(t=n,x(),d):t},d.id=function(t){return arguments.length?(c=t,d):c},d.iterations=function(t){return arguments.length?(v=+t,d):v},d.strength=function(t){return arguments.length?(f="function"==typeof t?t:(0,r.A)(+t),p(),d):f},d.distance=function(t){return arguments.length?(y="function"==typeof t?t:(0,r.A)(+t),g(),d):y},d}},27196:(t,n,e)=>{e.d(n,{A:()=>r});function r(t,n){var e,r=1;function i(){var i,u,o=e.length,a=0,s=0;for(i=0;i<o;++i)a+=(u=e[i]).x,s+=u.y;for(a=(a/o-t)*r,s=(s/o-n)*r,i=0;i<o;++i)u=e[i],u.x-=a,u.y-=s}return null==t&&(t=0),null==n&&(n=0),i.initialize=function(t){e=t},i.x=function(n){return arguments.length?(t=+n,i):t},i.y=function(t){return arguments.length?(n=+t,i):n},i.strength=function(t){return arguments.length?(r=+t,i):r},i}},27474:(t,n,e)=>{function r(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,u,o,a,s,l,h,c,f,y=t._root,v={data:r},d=t._x0,x=t._y0,p=t._x1,g=t._y1;if(!y)return t._root=v,t;for(;y.length;)if((l=n>=(u=(d+p)/2))?d=u:p=u,(h=e>=(o=(x+g)/2))?x=o:g=o,i=y,!(y=y[c=h<<1|l]))return i[c]=v,t;if(a=+t._x.call(null,y.data),s=+t._y.call(null,y.data),n===a&&e===s)return v.next=y,i?i[c]=v:t._root=v,t;do i=i?i[c]=[,,,,]:t._root=[,,,,],(l=n>=(u=(d+p)/2))?d=u:p=u,(h=e>=(o=(x+g)/2))?x=o:g=o;while((c=h<<1|l)==(f=(s>=o)<<1|a>=u));return i[f]=y,i[c]=v,t}function i(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function u(t){return t[0]}function o(t){return t[1]}function a(t,n,e){var r=new s(null==n?u:n,null==e?o:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function s(t,n,e,r,i,u){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=u,this._root=void 0}function l(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}e.d(n,{A:()=>a});var h=a.prototype=s.prototype;h.copy=function(){var t,n,e=new s(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=l(r),e;for(t=[{source:r,target:e._root=[,,,,]}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=[,,,,]}):r.target[i]=l(n));return e},h.add=function(t){let n=+this._x.call(null,t),e=+this._y.call(null,t);return r(this.cover(n,e),n,e,t)},h.addAll=function(t){var n,e,i,u,o=t.length,a=Array(o),s=Array(o),l=1/0,h=1/0,c=-1/0,f=-1/0;for(e=0;e<o;++e)!(isNaN(i=+this._x.call(null,n=t[e]))||isNaN(u=+this._y.call(null,n)))&&(a[e]=i,s[e]=u,i<l&&(l=i),i>c&&(c=i),u<h&&(h=u),u>f&&(f=u));if(l>c||h>f)return this;for(this.cover(l,h).cover(c,f),e=0;e<o;++e)r(this,a[e],s[e],t[e]);return this},h.cover=function(t,n){if(isNaN(t*=1)||isNaN(n*=1))return this;var e=this._x0,r=this._y0,i=this._x1,u=this._y1;if(isNaN(e))i=(e=Math.floor(t))+1,u=(r=Math.floor(n))+1;else{for(var o,a,s=i-e||1,l=this._root;e>t||t>=i||r>n||n>=u;)switch(a=(n<r)<<1|t<e,(o=[,,,,])[a]=l,l=o,s*=2,a){case 0:i=e+s,u=r+s;break;case 1:e=i-s,u=r+s;break;case 2:i=e+s,r=u-s;break;case 3:e=i-s,r=u-s}this._root&&this._root.length&&(this._root=l)}return this._x0=e,this._y0=r,this._x1=i,this._y1=u,this},h.data=function(){var t=[];return this.visit(function(n){if(!n.length)do t.push(n.data);while(n=n.next)}),t},h.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},h.find=function(t,n,e){var r,u,o,a,s,l,h,c=this._x0,f=this._y0,y=this._x1,v=this._y1,d=[],x=this._root;for(x&&d.push(new i(x,c,f,y,v)),null==e?e=1/0:(c=t-e,f=n-e,y=t+e,v=n+e,e*=e);l=d.pop();)if((x=l.node)&&!((u=l.x0)>y)&&!((o=l.y0)>v)&&!((a=l.x1)<c)&&!((s=l.y1)<f))if(x.length){var p=(u+a)/2,g=(o+s)/2;d.push(new i(x[3],p,g,a,s),new i(x[2],u,g,p,s),new i(x[1],p,o,a,g),new i(x[0],u,o,p,g)),(h=(n>=g)<<1|t>=p)&&(l=d[d.length-1],d[d.length-1]=d[d.length-1-h],d[d.length-1-h]=l)}else{var _=t-this._x.call(null,x.data),w=n-this._y.call(null,x.data),b=_*_+w*w;if(b<e){var A=Math.sqrt(e=b);c=t-A,f=n-A,y=t+A,v=n+A,r=x.data}}return r},h.remove=function(t){if(isNaN(u=+this._x.call(null,t))||isNaN(o=+this._y.call(null,t)))return this;var n,e,r,i,u,o,a,s,l,h,c,f,y=this._root,v=this._x0,d=this._y0,x=this._x1,p=this._y1;if(!y)return this;if(y.length)for(;;){if((l=u>=(a=(v+x)/2))?v=a:x=a,(h=o>=(s=(d+p)/2))?d=s:p=s,n=y,!(y=y[c=h<<1|l]))return this;if(!y.length)break;(n[c+1&3]||n[c+2&3]||n[c+3&3])&&(e=n,f=c)}for(;y.data!==t;)if(r=y,!(y=y.next))return this;return((i=y.next)&&delete y.next,r)?i?r.next=i:delete r.next:n?(i?n[c]=i:delete n[c],(y=n[0]||n[1]||n[2]||n[3])&&y===(n[3]||n[2]||n[1]||n[0])&&!y.length&&(e?e[f]=y:this._root=y)):this._root=i,this},h.removeAll=function(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this},h.root=function(){return this._root},h.size=function(){var t=0;return this.visit(function(n){if(!n.length)do++t;while(n=n.next)}),t},h.visit=function(t){var n,e,r,u,o,a,s=[],l=this._root;for(l&&s.push(new i(l,this._x0,this._y0,this._x1,this._y1));n=s.pop();)if(!t(l=n.node,r=n.x0,u=n.y0,o=n.x1,a=n.y1)&&l.length){var h=(r+o)/2,c=(u+a)/2;(e=l[3])&&s.push(new i(e,h,c,o,a)),(e=l[2])&&s.push(new i(e,r,c,h,a)),(e=l[1])&&s.push(new i(e,h,u,o,c)),(e=l[0])&&s.push(new i(e,r,u,h,c))}return this},h.visitAfter=function(t){var n,e=[],r=[];for(this._root&&e.push(new i(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var u=n.node;if(u.length){var o,a=n.x0,s=n.y0,l=n.x1,h=n.y1,c=(a+l)/2,f=(s+h)/2;(o=u[0])&&e.push(new i(o,a,s,c,f)),(o=u[1])&&e.push(new i(o,c,s,l,f)),(o=u[2])&&e.push(new i(o,a,f,c,h)),(o=u[3])&&e.push(new i(o,c,f,l,h))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},h.x=function(t){return arguments.length?(this._x=t,this):this._x},h.y=function(t){return arguments.length?(this._y=t,this):this._y}},32385:(t,n,e)=>{e.d(n,{A:()=>s});var r=e(27474),i=e(88393),u=e(78201);function o(t){return t.x+t.vx}function a(t){return t.y+t.vy}function s(t){var n,e,s,l=1,h=1;function c(){for(var t,i,c,y,v,d,x,p=n.length,g=0;g<h;++g)for(t=0,i=(0,r.A)(n,o,a).visitAfter(f);t<p;++t)x=(d=e[(c=n[t]).index])*d,y=c.x+c.vx,v=c.y+c.vy,i.visit(_);function _(t,n,e,r,i){var o=t.data,a=t.r,h=d+a;if(o){if(o.index>c.index){var f=y-o.x-o.vx,p=v-o.y-o.vy,g=f*f+p*p;g<h*h&&(0===f&&(g+=(f=(0,u.A)(s))*f),0===p&&(g+=(p=(0,u.A)(s))*p),g=(h-(g=Math.sqrt(g)))/g*l,c.vx+=(f*=g)*(h=(a*=a)/(x+a)),c.vy+=(p*=g)*h,o.vx-=f*(h=1-h),o.vy-=p*h)}return}return n>y+h||r<y-h||e>v+h||i<v-h}}function f(t){if(t.data)return t.r=e[t.data.index];for(var n=t.r=0;n<4;++n)t[n]&&t[n].r>t.r&&(t.r=t[n].r)}function y(){if(n){var r,i,u=n.length;for(r=0,e=Array(u);r<u;++r)e[(i=n[r]).index]=+t(i,r,n)}}return"function"!=typeof t&&(t=(0,i.A)(null==t?1:+t)),c.initialize=function(t,e){n=t,s=e,y()},c.iterations=function(t){return arguments.length?(h=+t,c):h},c.strength=function(t){return arguments.length?(l=+t,c):l},c.radius=function(n){return arguments.length?(t="function"==typeof n?n:(0,i.A)(+n),y(),c):t},c}},45010:(t,n,e)=>{e.d(n,{A:()=>a});var r=e(27474),i=e(88393),u=e(78201),o=e(93805);function a(){var t,n,e,a,s,l=(0,i.A)(-30),h=1,c=1/0,f=.81;function y(e){var i,u=t.length,s=(0,r.A)(t,o.x,o.y).visitAfter(d);for(a=e,i=0;i<u;++i)n=t[i],s.visit(x)}function v(){if(t){var n,e,r=t.length;for(n=0,s=Array(r);n<r;++n)s[(e=t[n]).index]=+l(e,n,t)}}function d(t){var n,e,r,i,u,o=0,a=0;if(t.length){for(r=i=u=0;u<4;++u)(n=t[u])&&(e=Math.abs(n.value))&&(o+=n.value,a+=e,r+=e*n.x,i+=e*n.y);t.x=r/a,t.y=i/a}else{(n=t).x=n.data.x,n.y=n.data.y;do o+=s[n.data.index];while(n=n.next)}t.value=o}function x(t,r,i,o){if(!t.value)return!0;var l=t.x-n.x,y=t.y-n.y,v=o-r,d=l*l+y*y;if(v*v/f<d)return d<c&&(0===l&&(d+=(l=(0,u.A)(e))*l),0===y&&(d+=(y=(0,u.A)(e))*y),d<h&&(d=Math.sqrt(h*d)),n.vx+=l*t.value*a/d,n.vy+=y*t.value*a/d),!0;if(!t.length&&!(d>=c)){(t.data!==n||t.next)&&(0===l&&(d+=(l=(0,u.A)(e))*l),0===y&&(d+=(y=(0,u.A)(e))*y),d<h&&(d=Math.sqrt(h*d)));do t.data!==n&&(v=s[t.data.index]*a/d,n.vx+=l*v,n.vy+=y*v);while(t=t.next)}}return y.initialize=function(n,r){t=n,e=r,v()},y.strength=function(t){return arguments.length?(l="function"==typeof t?t:(0,i.A)(+t),v(),y):l},y.distanceMin=function(t){return arguments.length?(h=t*t,y):Math.sqrt(h)},y.distanceMax=function(t){return arguments.length?(c=t*t,y):Math.sqrt(c)},y.theta=function(t){return arguments.length?(f=t*t,y):Math.sqrt(f)},y}},78201:(t,n,e)=>{e.d(n,{A:()=>r});function r(t){return(t()-.5)*1e-6}},88393:(t,n,e)=>{e.d(n,{A:()=>r});function r(t){return function(){return t}}},93805:(t,n,e)=>{e.d(n,{A:()=>s,x:()=>u,y:()=>o});var r=e(22120),i=e(79876);function u(t){return t.x}function o(t){return t.y}var a=Math.PI*(3-Math.sqrt(5));function s(t){let n;var e,u=1,o=.001,s=1-Math.pow(.001,1/300),l=0,h=.6,c=new Map,f=(0,i.O1)(d),y=(0,r.A)("tick","end"),v=(n=1,()=>(n=(1664525*n+0x3c6ef35f)%0x100000000)/0x100000000);function d(){x(),y.call("tick",e),u<o&&(f.stop(),y.call("end",e))}function x(n){var r,i,o=t.length;void 0===n&&(n=1);for(var a=0;a<n;++a)for(u+=(l-u)*s,c.forEach(function(t){t(u)}),r=0;r<o;++r)null==(i=t[r]).fx?i.x+=i.vx*=h:(i.x=i.fx,i.vx=0),null==i.fy?i.y+=i.vy*=h:(i.y=i.fy,i.vy=0);return e}function p(){for(var n,e=0,r=t.length;e<r;++e){if((n=t[e]).index=e,null!=n.fx&&(n.x=n.fx),null!=n.fy&&(n.y=n.fy),isNaN(n.x)||isNaN(n.y)){var i=10*Math.sqrt(.5+e),u=e*a;n.x=i*Math.cos(u),n.y=i*Math.sin(u)}(isNaN(n.vx)||isNaN(n.vy))&&(n.vx=n.vy=0)}}function g(n){return n.initialize&&n.initialize(t,v),n}return null==t&&(t=[]),p(),e={tick:x,restart:function(){return f.restart(d),e},stop:function(){return f.stop(),e},nodes:function(n){return arguments.length?(t=n,p(),c.forEach(g),e):t},alpha:function(t){return arguments.length?(u=+t,e):u},alphaMin:function(t){return arguments.length?(o=+t,e):o},alphaDecay:function(t){return arguments.length?(s=+t,e):+s},alphaTarget:function(t){return arguments.length?(l=+t,e):l},velocityDecay:function(t){return arguments.length?(h=1-t,e):1-h},randomSource:function(t){return arguments.length?(v=t,c.forEach(g),e):v},force:function(t,n){return arguments.length>1?(null==n?c.delete(t):c.set(t,g(n)),e):c.get(t)},find:function(n,e,r){var i,u,o,a,s,l=0,h=t.length;for(null==r?r=1/0:r*=r,l=0;l<h;++l)(o=(i=n-(a=t[l]).x)*i+(u=e-a.y)*u)<r&&(s=a,r=o);return s},on:function(t,n){return arguments.length>1?(y.on(t,n),e):y.on(t)}}}},99888:(t,n,e)=>{e.d(n,{A:()=>r});let r=(0,e(51719).A)("crosshair",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"22",x2:"18",y1:"12",y2:"12",key:"l9bcsi"}],["line",{x1:"6",x2:"2",y1:"12",y2:"12",key:"13hhkx"}],["line",{x1:"12",x2:"12",y1:"6",y2:"2",key:"10w3f3"}],["line",{x1:"12",x2:"12",y1:"22",y2:"18",key:"15g9kq"}]])}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7178],{2103:(e,t,n)=>{n.d(t,{In:()=>d,OG:()=>s});var l=n(77947);let i="elanous.pwa.role",r="elanous:pwa-role";function o(){try{let e=window.localStorage.getItem(i);if("general"===e||"contributor"===e)return e}catch(e){}return"owner"}function s(e){try{window.localStorage.setItem(i,e)}catch(e){}"function"==typeof window.dispatchEvent&&window.dispatchEvent(new Event(r))}function a(e){if("function"!=typeof window.addEventListener)return()=>{};window.addEventListener(r,e);let t=t=>{(t.key===i||null===t.key)&&e()};return window.addEventListener("storage",t),()=>{window.removeEventListener(r,e),window.removeEventListener("storage",t)}}function d(){return(0,l.useSyncExternalStore)(a,o,()=>"owner")}},8666:(e,t,n)=>{n.d(t,{AF:()=>l});let l={all:["nexus"],health:()=>[...l.all,"health"],snapshot:()=>[...l.all,"snapshot"],tabs:e=>e?[...l.all,"tabs",{kind:e}]:[...l.all,"tabs"],tab:e=>[...l.all,"tab",e],templates:()=>[...l.all,"templates"],template:e=>[...l.all,"template",e],config:()=>[...l.all,"config"],switches:()=>[...l.all,"switches"],switch:e=>[...l.all,"switch",e],secrets:()=>[...l.all,"secrets"],bindingChannels:()=>[...l.all,"bindings","channels"],bindings:e=>[...l.all,"bindings",e],binding:(e,t)=>[...l.all,"binding",e,t],logsTail:(e,t)=>t?[...l.all,"logs",e,{lines:t}]:[...l.all,"logs",e],workflows:()=>[...l.all,"workflows"],workflow:e=>[...l.all,"workflow",e],workflowRun:e=>[...l.all,"workflow-run",e],workflowRuns:()=>[...l.all,"workflow-runs"],pendingApprovals:()=>[...l.all,"workflow-pending-approvals"],platforms:()=>[...l.all,"platforms"],providers:()=>[...l.all,"providers"],worktrees:()=>[...l.all,"worktrees"],designCheck:()=>[...l.all,"design-check"],designPreviews:()=>[...l.all,"design-previews"],designPreview:e=>[...l.all,"design-preview",e],registryCatalog:()=>[...l.all,"registry-catalog"],resolvedView:()=>[...l.all,"resolved-view"]};l.snapshot(),l.tabs(),l.health(),l.snapshot(),l.config(),l.switches()},26253:(e,t,n)=>{n.d(t,{vm:()=>S,f4:()=>P,OE:()=>x,Ue:()=>M,Ye:()=>C});var l=n(58002),i=n(8917),r=n(55396),o=n(52978),s=n(32531),a=n(28817),d=n(99888),c=n(69495),h=n(69636),u=n(11284),b=n(85627),f=n(23321),w=n(83528),v=n(69427),g=n(21625),k=n(36501),p=n(46729),m=n(19875),y=n(95711),A=n(13581),E=n(73816),L=n(33499);function C(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"owner",l=e=>{var t;return null!=(t=e.visibility)?t:"public"},i=e.filter(e=>(0,L.EX)(n,e.href));return{main:i.filter(e=>"public"===l(e)),labs:t.showLabs?i.filter(e=>"labs"===l(e)):[],hidden:t.showHidden?i.filter(e=>"hidden"===l(e)):[]}}let P="elanous.nav.showLabs",S="elanous.nav.showHidden",x=[{href:"/share",category:"system-share-target",reason:"운영체제가 공유 동작으로 호출하는 Share Target 진입점."},{href:"/missions",category:"dynamic-route-parent",reason:"`[id]`를 받는 동적 주소이며 부모 경로 자체는 없다."},{href:"/setup",category:"provider-onboarding",reason:"LLM provider 온보딩 진입점."},{href:"/setup/done",category:"provider-onboarding-complete",reason:"LLM provider 온보딩 완료 화면."},{href:"/settings/devices",category:"settings-subpage",reason:"Settings 아래 Device fleet 하위 화면."},{href:"/workflows",category:"workflow-legacy-redirect",reason:"기존 워크플로 링크를 /editor?mode=workflow 로 전달한다."},{href:"/workflows/chat-ui",category:"workflow-subflow",reason:"Workflows에서 여는 hosted chat 하위 흐름."},{href:"/",category:"root-welcome",reason:"첫 방문자를 위한 루트 welcome 화면."},{href:"/404",category:"error-page",reason:"오류 페이지."},{href:"/morning",category:"unwired-screen",reason:"부르는 백엔드가 아직 없는 미배선 화면."},{href:"/botlab",category:"diagnostic-readonly",reason:"봇 화면 \xab벽\xbb을 한 자리에서 보는 읽기 진단 화면(#15390 \xb7 봇 운영자용)."}],M=[{href:"/term",label:"Terminal",hint:"터미널 + agent dock",icon:l.A,kind:"term"},{href:"/chat",label:"Chat",hint:"채팅 (스트리밍 \xb7 multimodal \xb7 mic)",icon:i.A,kind:"chat"},{href:"/intake",label:"Intake",hint:"넣으면 흡수 \xb7 작업 \xb7 그래프로 (URL \xb7 미션 \xb7 메모)",icon:r.A,kind:null},{href:"/approvals",label:"Approvals",hint:"아이디어 PR 요약 \xb7 승인하고 머지",icon:o.A,kind:null},{href:"/showroom",label:"Showroom",hint:"multi-agent 동시 비교 (broadcast \xb7 CV-3)",icon:s.A,kind:null,visibility:"labs"},{href:"/live",label:"Live",hint:"런이 판단\xb7기획하는 신호 (진짜 수 \xb7 쇼 모드)",icon:a.A,kind:null},{href:"/trace",label:"Trace",hint:"렌즈를 좁혀 런을 따라간다 (플릿 → 런 → 판단)",icon:d.A,kind:null},{href:"/bots",label:"Bots",hint:"봇 신원 + 공통 명령 카탈로그 (읽기 전용)",icon:c.A,kind:null,visibility:"hidden"},{href:"/observatory",label:"Observatory",hint:"subject 관측 (talk \xb7 screen \xb7 agent)",icon:h.A,kind:null,visibility:"hidden"},{href:"/autopilot",label:"Missions",hint:"미션 \xb7 작업 (미션 계보\xb7골 던지기\xb7작업 보드\xb7자율행동)",icon:u.A,kind:null,activeAlso:["/tasks","/missions"]},{href:"/tasks",label:"Tasks",hint:"작업 보드 (Missions 안 ② 작업)",icon:b.A,kind:"tasks",visibility:"hidden"},{href:"/board",label:"보드",hint:"태스크 카드 흐름 (스튜어드 → 실행 → 착지 → 릴리스)",icon:b.A,kind:null,visibility:"labs"},{href:"/design-check",label:"Design",hint:"디자인 시스템 고르기 \xb7 시안 \xb7 URL 로 내 시스템",icon:f.A,kind:null},{href:"/vault",label:"Vault",hint:"Obsidian 노트 (브라우저\xb7에디터\xb7검색\xb7그래프)",icon:w.A,kind:null},{href:"/market",label:"마켓",hint:"플러그인 찾아보기 \xb7 상세 \xb7 설치됨",icon:v.A,kind:null},{href:"/scheduler",label:"Schedules",hint:"예약 잡 종합 현황 (크론\xb7데몬\xb7launchd)",icon:g.A,kind:null},{href:"/sessions",label:"Sessions",hint:"세션 카드 데크 (스와이프 결정)",icon:k.A,kind:null,visibility:"hidden"},{href:"/reflection",label:"Reflection",hint:"오늘의 회고 (5분 갱신)",icon:p.A,kind:null,visibility:"hidden"},{href:"/editor",label:"편집기",hint:"워크플로 \xb7 실행 그래프 작성\xb7편집",icon:m.A,kind:null,visibility:"labs",activeAlso:["/workflows"]},{href:"/worktrees",label:"Worktrees",hint:"격리 작업 트리 목록\xb7상태",icon:m.A,kind:null,visibility:"hidden"},{href:"/control",label:"Control",hint:"데몬 제어 패널",icon:y.A,kind:"control",visibility:"hidden"},{href:"/settings",label:"Settings",hint:"환경 + provider + theme",icon:A.A,kind:"settings"},{href:"/workspace",label:"Workspace",hint:"여러 탭 동시 보기",icon:E.A,kind:null,visibility:"labs"}]},33499:(e,t,n)=>{n.d(t,{EX:()=>r,dY:()=>i});let l={"/":"stable","/404":"stable","/setup":"stable","/setup/done":"stable","/chat":"stable","/term":"stable","/live":"stable","/market":"stable","/sessions":"stable","/settings":"beta","/editor":"beta","/intake":"beta","/trace":"beta","/board":"beta","/autopilot":"beta","/missions/[id]":"beta","/tasks":"beta","/workspace":"beta","/reflection":"beta","/vault":"beta","/observatory":"beta","/showroom":"beta","/workflows":"beta","/approvals":"tool","/worktrees":"tool","/design-check":"tool","/control":"tool","/scheduler":"ops","/dashboard":"ops","/bots":"ops","/botlab":"ops","/morning":"broken","/settings/devices":"broken","/workflows/chat-ui":"broken","/share":"system"};function i(e){var t;let n=(null==(t=e.split(/[?#]/,1)[0])?void 0:t.replace(/\/+$/,""))||"/";return Object.prototype.hasOwnProperty.call(l,n)?l[n]:n.startsWith("/missions/")&&-1===n.slice(10).indexOf("/")?l["/missions/[id]"]:void 0}function r(e,t){var n;let l=i(t);return!!l&&("owner"===e||"system"!==l&&((null==(n=t.split(/[?#]/,1)[0])?void 0:n.replace(/\/+$/,""))==="/settings"||"stable"===l||"contributor"===e&&("beta"===l||"tool"===l)))}},49413:(e,t,n)=>{n.d(t,{cn:()=>r});var l=n(24477),i=n(80313);function r(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,i.QP)((0,l.$)(t))}},62866:(e,t,n)=>{n.d(t,{M1:()=>d,Qj:()=>c,tI:()=>a});var l=n(58443),i=n(77947),r=n(93741),o=n(66328);let s=(0,i.createContext)(null);function a(e){let{client:t,queryClient:n,defaultStaleTimeMs:a,children:d}=e,c=(0,i.useMemo)(()=>null!=n?n:new r.E({defaultOptions:{queries:{staleTime:null!=a?a:2e3,refetchOnWindowFocus:!1}}}),[n,a]);return(0,l.jsx)(s.Provider,{value:t,children:(0,l.jsx)(o.Ht,{client:c,children:d})})}function d(){let e=(0,i.useContext)(s);if(!e)throw Error("useNexusClient must be used within <NexusProvider>");return e}function c(){return(0,i.useContext)(s)}},67714:(e,t,n)=>{n.d(t,{_r:()=>r});var l=n(77947),i=n(62866);function r(){let e=(0,i.Qj)(),[t,n]=(0,l.useState)({data:void 0,isError:!1,isPending:!0});return(0,l.useEffect)(()=>{if(!e)return void n({data:void 0,isError:!1,isPending:!0});let t=!0,l=()=>{e.getHealth().then(e=>{t&&n({data:e,isError:!1,isPending:!1})}).catch(()=>{t&&n(e=>({...e,isError:!0,isPending:!1}))})};l();let i=setInterval(l,6e4);return()=>{t=!1,clearInterval(i)}},[e]),{...t,isLoading:t.isPending&&null!==e}}n(8666)},81163:(e,t,n)=>{n.d(t,{C:()=>r,P:()=>i});let l="셋업 모드 — 먼저 LLM 을 정하세요";function i(e,t){return(null==e?void 0:e.setupMode)!==!0||"/"!==t?null:"/setup"}function r(e,t){if((null==e?void 0:e.setupMode)!==!0||"/setup"===t||t.startsWith("/setup/"))return null;let n=e.setupMissing;return n&&n.length>0?"".concat(l," (").concat(n.join(", "),")"):l}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7262],{5131:(e,t,n)=>{n.d(t,{Qh:()=>y,lW:()=>v,o:()=>j});var r=n(58443),s=n(77947),a=n(34015),o=n(861),l=n(58703),i=n(52247),c=n(66420),d=n(96284),u=n(18941),m=n(71290),f=n(73632),p=n(65233),h=n(48683),x=n(23783),g=n(79935);let b={cli:"cli",pwa:"pwa",tg:"tg",dc:"dc"};async function v(e){if(!e||"undefined"==typeof navigator||!navigator.clipboard)return!1;try{return await navigator.clipboard.writeText(e),!0}catch(e){return!1}}function j(e){return e?e.length<=8?e:"".concat(e.slice(0,8),"…"):"—"}function y(){var e,t,n,j,y;let w=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},k=(0,a.Q)(),N=(0,l.t)(),[I,S]=(0,s.useState)(!1),[C,D]=(0,s.useState)(!1),[E,L]=(0,s.useState)(!1),M=(0,s.useRef)(null),T=(0,s.useRef)(null),A=(0,s.useRef)(null),R=null!=(e=w.sessionId)?e:k.sessionId,U=N.find(e=>e.id===R);(0,s.useEffect)(()=>()=>{M.current&&clearTimeout(M.current),T.current&&clearTimeout(T.current)},[]),(0,s.useEffect)(()=>{if(!C)return;let e=e=>{A.current&&!A.current.contains(e.target)&&D(!1)},t=e=>{"Escape"===e.key&&D(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[C]);let P=async()=>{if(!R)return;let e=await v(R);(0,x.cY)("webterm.session-pill.copy",{sessionId:R,ok:e,source:"dropdown"}),e&&(L(!0),T.current&&clearTimeout(T.current),T.current=setTimeout(()=>L(!1),1200))},O=I?"한 번 더 누르면 새 대화가 시작됩니다 — 지금 대화는 그대로 저장되고 세션 목록에 남습니다":"새 대화 시작 (두 번 클릭) — 빈 세션에서 새로 시작합니다",F=null!=(t=null==U?void 0:U.lastMsgPreview)?t:null;return(0,r.jsxs)("div",{ref:A,className:"relative flex items-center",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1 rounded-md border border-border bg-card px-2 py-1 text-[11px]",children:[(0,r.jsx)("span",{className:"text-muted-foreground font-mono",children:"sess:"}),(0,r.jsx)(g.S,{sessionId:R,source:"pill"}),(null==U?void 0:U.origin)&&(0,r.jsx)("span",{className:"ml-1 rounded bg-muted px-1 py-0.5 font-mono text-[9px] uppercase text-muted-foreground",children:null!=(n=b[U.origin])?n:U.origin}),F&&(0,r.jsx)("span",{className:"ml-1 max-w-[180px] truncate border-l border-border pl-2 text-muted-foreground",title:F,children:F}),(0,r.jsxs)("span",{className:"ml-1 flex items-center gap-1 border-l border-border pl-1.5",children:[(0,r.jsx)("button",{type:"button",onClick:()=>{if(!I){S(!0),(0,x.cY)("webterm.session-pill.fork-armed",{sessionId:R}),M.current&&clearTimeout(M.current),M.current=setTimeout(()=>{S(!1),(0,x.cY)("webterm.session-pill.fork-disarmed-timeout",{sessionId:R})},4e3);return}M.current&&(clearTimeout(M.current),M.current=null),S(!1);let e=(0,o.Zr)();(0,x.cY)("webterm.session-pill.fork-confirmed",{previous:R,next:e}),k.setSessionId(e)},className:I?"rounded p-0.5 bg-destructive text-destructive-foreground hover:bg-destructive/90":"rounded p-0.5 hover:bg-secondary",title:O,"aria-label":O,children:(0,r.jsx)(i.A,{className:"h-3 w-3"})}),I?(0,r.jsx)("span",{className:"text-[10px] text-destructive","aria-live":"polite",children:"fork?"}):null,(0,r.jsx)("button",{type:"button",onClick:()=>D(e=>!e),"aria-label":"session menu",className:"rounded p-0.5 hover:bg-secondary",title:"세션 메뉴",children:(0,r.jsx)(c.A,{className:"h-3 w-3"})})]})]}),C&&(0,r.jsxs)("div",{role:"menu",className:"absolute left-0 top-7 z-50 w-72 rounded-md border border-border bg-popover py-1 text-xs shadow-md",children:[(0,r.jsxs)("button",{type:"button",role:"menuitem",onClick:()=>{let e=(0,o.Zr)();(0,x.cY)("webterm.session-pill.new-chat",{previous:R,next:e,source:"menu"}),k.setSessionId(e),D(!1)},className:"flex w-full items-start gap-2 px-3 py-1.5 text-left hover:bg-secondary",children:[(0,r.jsx)(d.A,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground"}),(0,r.jsxs)("span",{children:["새 대화 시작",(0,r.jsx)("span",{className:"block text-[10px] text-muted-foreground",children:"빈 세션에서 새로 시작합니다 \xb7 지금 대화는 세션 목록에 남습니다"})]})]}),w.onAttachRequest&&(0,r.jsxs)("button",{type:"button",role:"menuitem",onClick:()=>{w.onAttachRequest(),D(!1)},className:"flex w-full items-center gap-2 px-3 py-1.5 hover:bg-secondary",children:[(0,r.jsx)(u.A,{className:"h-3.5 w-3.5 text-muted-foreground"}),"다른 세션 attach"]}),(0,r.jsxs)("div",{className:"px-3 py-1.5 text-muted-foreground",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(m.A,{className:"h-3 w-3 shrink-0"}),(0,r.jsx)("span",{className:"text-[10px] uppercase tracking-wide",children:"세션 ID"})]}),(0,r.jsxs)("div",{className:"mt-1 flex items-center gap-1.5",children:[(0,r.jsx)("span",{className:"flex-1 select-all break-all font-mono text-[11px] text-foreground",title:R||"",children:R||"(미설정)"}),(0,r.jsx)("button",{type:"button",onClick:()=>void P(),disabled:!R,className:"shrink-0 rounded p-1 hover:bg-secondary disabled:cursor-not-allowed disabled:opacity-50",title:E?"복사됨":"세션 ID 전체 복사","aria-label":"세션 ID 복사","data-elanous-action":"session-id-copy-dropdown",children:E?(0,r.jsx)(f.A,{className:"h-3 w-3 text-emerald-500"}):(0,r.jsx)(p.A,{className:"h-3 w-3"})})]}),(0,r.jsxs)("div",{className:"mt-1 text-[10px]",children:[null!=(j=null==U?void 0:U.msgCount)?j:0," 메시지",(null==U?void 0:U.origin)&&" \xb7 ".concat(null!=(y=b[U.origin])?y:U.origin)]})]}),w.onForgetRequest&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"my-1 border-t border-border"}),(0,r.jsxs)("button",{type:"button",role:"menuitem",onClick:()=>{w.onForgetRequest(),D(!1)},className:"flex w-full items-center gap-2 px-3 py-1.5 text-rose-500 hover:bg-rose-500/10",children:[(0,r.jsx)(h.A,{className:"h-3.5 w-3.5"}),"이 세션 잊기"]})]})]})]})}},8476:(e,t,n)=>{n.d(t,{KW:()=>a,jU:()=>r,nj:()=>s});class r{async list(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.client.fetchJson("/v1/sessions/store".concat(e?"?includeEmpty=1":""))}async transcript(e){return this.client.fetchJson("/v1/sessions/store/".concat(encodeURIComponent(e)))}async fork(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.client.fetchJson("/v1/sessions/store/".concat(encodeURIComponent(e),"/fork"),{method:"POST",...void 0!==t.beforeUser?{headers:{"content-type":"application/json"},body:JSON.stringify({beforeUser:t.beforeUser})}:{}})}async delete(e){return this.client.fetchJson("/v1/sessions/store/".concat(encodeURIComponent(e)),{method:"DELETE"})}constructor(e){this.client=e}}function s(e,t){let n=t.trim().toLowerCase();if(!n)return{kind:"none"};let r=e.filter(e=>e.id.toLowerCase().startsWith(n));return 1===r.length?{kind:"one",id:r[0].id}:0===r.length?{kind:"none"}:{kind:"ambiguous",count:r.length}}function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now(),n=Date.parse(e);if(!Number.isFinite(n))return"";let r=Math.max(0,Math.floor((t-n)/1e3));return r<30?"방금":r<3600?"".concat(Math.floor(r/60),"분 전"):r<86400?"".concat(Math.floor(r/3600),"시간 전"):"".concat(Math.floor(r/86400),"일 전")}},19002:(e,t,n)=>{n.d(t,{V:()=>T});var r=n(58443),s=n(77947),a=n(50580),o=n(22444),l=n(19989),i=n(853),c=n(64648),d=n(89704),u=n(19990),m=n(12906),f=n(19418),p=n(49413),h=n(89234),x=n(32353),g=n(54770),b=n(77306),v=n(26882),j=n(34015),y=n(23783),w=n(75355);function k(e){let{open:t,image:n,filename:a="photo.jpg",onClose:o}=e,{config:l}=(0,j.Q)(),[i,c]=(0,s.useState)("idle"),[m,f]=(0,s.useState)(""),[p,h]=(0,s.useState)("minimal"),[x,g]=(0,s.useState)("minimal"),k=(0,w.hn)(),[N,I]=(0,s.useState)(k.defaultUseLlmVision),[S,C]=(0,s.useState)(k.defaultPreferHandwriting),[D,E]=(0,s.useState)(""),[L,M]=(0,s.useState)(""),[T,A]=(0,s.useState)("");async function R(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:N,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:S;if(!n)return;if(!l.baseUrl){M("Daemon URL 미설정 — Settings 에서 입력"),c("error");return}c("ocr"),M("");let s=new FormData;s.append("image",n,a),s.append("polishMode",e);let o=[];t&&o.push("context-aware","diagrams"),r&&o.push("handwriting"),o.length>0&&s.append("strengths",o.join(",")),(0,y.cY)("notes.ocr.start",{polishMode:e,vision:t,handwriting:r,filename:a,size:n.size});try{let t=await fetch("".concat(l.baseUrl,"/v1/notes/from-image"),{method:"POST",body:s,...l.token?{headers:{authorization:"Bearer ".concat(l.token)}}:{}});if(!t.ok){let e=await t.text().catch(()=>"");M("OCR 실패 (HTTP ".concat(t.status,") ").concat(e.slice(0,160))),c("error"),(0,y.cY)("notes.ocr.error",{status:t.status,detail:e.slice(0,200)});return}let n=await t.json(),r=n.usedLlmPolish?n.polishMode:"minimal";if(0===n.markdown.trim().length){M(n.usedLlmPolish?"이미지에서 텍스트를 추출하지 못했습니다. 다른 사진으로 다시 시도해주세요.":"이미지에서 텍스트를 추출하지 못했습니다. 다른 사진을 사용하거나 polishMode를 'enrich'로 바꾸어 LLM polish를 시도해주세요."),h(n.polishMode),g(r),E(n.provider),c("error"),(0,y.cY)("notes.ocr.empty",{provider:n.provider,requested:e,applied:r,usedLlmPolish:n.usedLlmPolish});return}f(n.markdown),A(n.markdown),E(n.provider),h(n.polishMode),g(r),c("review"),(0,y.cY)("notes.ocr.ok",{provider:n.provider,requested:e,applied:r,usedLlmPolish:n.usedLlmPolish,chars:n.markdown.length})}catch(e){M("OCR 실패: ".concat(String(e instanceof Error?e.message:e))),c("error"),(0,y.cY)("notes.ocr.exception",{reason:String(e)})}}async function U(){if(!l.baseUrl){M("Daemon URL 미설정"),c("error");return}let e=m!==T;c("saving"),(0,y.cY)("notes.save.start",{provider:D,selectedPolishMode:p,appliedPolishMode:x,edited:e,chars:m.length}),e&&P("edit");try{let e=await fetch("".concat(l.baseUrl,"/v1/notes/save"),{method:"POST",headers:{"content-type":"application/json",...l.token?{authorization:"Bearer ".concat(l.token)}:{}},body:JSON.stringify({markdown:m,sourceProvider:D,polishMode:x})});if(!e.ok){let t=await e.text().catch(()=>"");M("저장 실패 (HTTP ".concat(e.status,") ").concat(t.slice(0,160))),c("error"),(0,y.cY)("notes.save.error",{status:e.status,detail:t.slice(0,200)});return}let t=await e.json();c("saved"),d.oR.success("\uD83D\uDCDD 저장됨 — ".concat(t.vaultLabel," \xb7 ").concat(t.knowledgeId)),(0,y.cY)("notes.save.ok",{knowledgeId:t.knowledgeId,vaultLabel:t.vaultLabel}),setTimeout(o,400)}catch(e){M("저장 실패: ".concat(String(e instanceof Error?e.message:e))),c("error"),(0,y.cY)("notes.save.exception",{reason:String(e)})}}function P(e){l.baseUrl&&fetch("".concat(l.baseUrl,"/v1/metrics/notes-event"),{method:"POST",headers:{"content-type":"application/json",...l.token?{authorization:"Bearer ".concat(l.token)}:{}},body:JSON.stringify({type:e,polishMode:p})}).catch(()=>{})}function O(){let e=m!==T;(0,y.cY)("notes.cancel",{phase:i,edited:e,chars:m.length}),P("cancel"),e&&"review"===i&&P("discard"),o()}return(0,s.useEffect)(()=>{if(!t){c("idle"),f(""),A(""),E(""),M(""),h("minimal"),g("minimal");let e=(0,w.hn)();I(e.defaultUseLlmVision),C(e.defaultPreferHandwriting)}},[t]),(0,s.useEffect)(()=>{t&&n&&"idle"===i&&R(p)},[t,n]),(0,r.jsx)(v.lG,{open:t,onOpenChange:e=>{e||O()},children:(0,r.jsxs)(v.Cf,{className:"sm:max-w-lg",children:[(0,r.jsxs)(v.c7,{children:[(0,r.jsx)(v.L3,{children:"사진 → 마크다운 노트"}),(0,r.jsx)(v.rr,{children:"OCR 로 추출한 본문을 검토 + 편집 후 저장합니다."})]}),"ocr"===i&&(0,r.jsxs)("div",{className:"flex items-center justify-center gap-2 py-12 text-muted-foreground",children:[(0,r.jsx)(b.A,{className:"h-4 w-4 animate-spin"}),(0,r.jsx)("span",{children:"OCR 인식 중…"})]}),"saving"===i&&(0,r.jsxs)("div",{className:"flex items-center justify-center gap-2 py-12 text-muted-foreground",children:[(0,r.jsx)(b.A,{className:"h-4 w-4 animate-spin"}),(0,r.jsx)("span",{children:"저장 중…"})]}),"saved"===i&&(0,r.jsx)("div",{className:"flex items-center justify-center py-12 text-emerald-600",children:"✓ 저장 완료"}),"error"===i&&(0,r.jsxs)("div",{className:"space-y-3 py-4",children:[(0,r.jsx)("div",{className:"rounded-md bg-destructive/10 p-3 text-sm text-destructive",children:L}),(0,r.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,r.jsx)(u.$,{variant:"ghost",onClick:O,children:"닫기"}),n&&(0,r.jsx)(u.$,{onClick:()=>R(p),children:"다시 시도"})]})]}),"review"===i&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[(0,r.jsxs)("span",{children:["provider: ",(0,r.jsx)("code",{children:D||"?"})]}),(0,r.jsx)("span",{children:"\xb7"}),(0,r.jsxs)("label",{className:"flex items-center gap-1",children:["polish:",(0,r.jsxs)("select",{value:p,onChange:e=>{let t=e.target.value;h(t),t!==x&&R(t)},className:"rounded border border-input bg-background px-1 py-0.5","aria-label":"polish mode",children:[(0,r.jsx)("option",{value:"minimal",children:"minimal (raw)"}),(0,r.jsx)("option",{value:"enrich",children:"enrich (polished)"})]})]}),(0,r.jsx)("span",{children:"\xb7"}),(0,r.jsxs)("label",{className:"flex items-center gap-1",title:"LLM 비전 우선시 — 더 정확하지만 느림 + 비쌈",children:[(0,r.jsx)("input",{type:"checkbox",checked:N,onChange:e=>{let t=e.target.checked;I(t),R(p,t,S)},"aria-label":"prefer LLM vision"}),"LLM 비전"]}),(0,r.jsx)("span",{children:"\xb7"}),(0,r.jsxs)("label",{className:"flex items-center gap-1",title:"손글씨 우선시 — handwriting strength 추가 (registry 점수 boost)",children:[(0,r.jsx)("input",{type:"checkbox",checked:S,onChange:e=>{let t=e.target.checked;C(t),R(p,N,t)},"aria-label":"prefer handwriting"}),"손글씨"]}),(0,r.jsx)("span",{children:"\xb7"}),(0,r.jsxs)("span",{"data-testid":"notes-applied-polish",children:["applied: ",(0,r.jsx)("code",{children:x}),"enrich"===p&&"minimal"===x&&(0,r.jsx)("span",{className:"ml-1 text-amber-600",children:"(LLM polish 비활성)"})]}),(0,r.jsx)(u.$,{type:"button",variant:"ghost",size:"sm",className:"ml-auto text-xs",onClick:()=>R(p),"aria-label":"re-run OCR",children:"Re-OCR"})]}),(0,r.jsx)("textarea",{value:m,onChange:e=>f(e.target.value),rows:12,placeholder:"markdown 본문…","aria-label":"markdown editor",className:"w-full resize-y rounded-md border border-input bg-background px-3 py-2 font-mono text-xs shadow-xs focus:outline-none focus:ring-2 focus:ring-ring"})]}),(0,r.jsxs)(v.Es,{children:[(0,r.jsx)(u.$,{variant:"outline",onClick:O,children:"취소"}),(0,r.jsx)(u.$,{onClick:()=>void U(),disabled:0===m.trim().length,children:"저장"})]})]})]})})}function N(){let e=(0,s.useRef)(null),[t,n]=(0,s.useState)(!1),[a,o]=(0,s.useState)(null),[l,i]=(0,s.useState)("photo.jpg");return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button",onClick:()=>{var t;return null==(t=e.current)?void 0:t.click()},"aria-label":"save photo as note",title:"사진 → 마크다운 노트로 저장",className:"rounded p-1.5 text-muted-foreground hover:bg-accent hover:text-foreground",children:(0,r.jsx)(g.A,{className:"h-3.5 w-3.5"})}),(0,r.jsx)("input",{ref:e,type:"file",accept:"image/*",capture:"environment",className:"hidden",onChange:function(e){var t;let r=null==(t=e.target.files)?void 0:t[0];e.target.value="",r&&(o(r),i(r.name),n(!0))}}),(0,r.jsx)(k,{open:t,image:a,filename:l,onClose:function(){n(!1),o(null)}})]})}var I=n(52171),S=n(76588);function C(){var e,t,n;let{client:a}=(0,j.Q)(),[o,l]=(0,s.useState)([]),[i,c]=(0,s.useState)(""),[u,m]=(0,s.useState)(!1),f=(0,s.useCallback)(async()=>{try{var e,t;let n=await a.fetchJson("/v1/setup/llm-providers");l(null!=(e=n.providers)?e:[]),c(null!=(t=n.activeProvider)?t:"")}catch(e){}},[a]);(0,s.useEffect)(()=>{f()},[f]);let p=o.filter(e=>"apiKey"===e.flow&&e.hasSavedKey||"auto"===e.flow),h=(0,s.useCallback)(async()=>{if(u||0===p.length)return;let e=p.findIndex(e=>e.provider===i),t=p[(e+1)%p.length];if(t.provider!==i||1!==p.length){m(!0);try{let e=await a.fetchJson("/v1/setup/llm-provider",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({provider:t.provider})});if(e&&e.error)d.oR.error("provider 전환 실패: ".concat(e.error));else{var n,r;c(null!=(r=null==e||null==(n=e.active)?void 0:n.provider)?r:t.provider)}}catch(e){d.oR.error("provider 전환 실패: ".concat(e instanceof Error?e.message:e))}finally{m(!1)}}},[u,p,i,a]);if(0===p.length)return null;let x=null!=(n=null!=(t=null==(e=o.find(e=>e.provider===i))?void 0:e.label)?t:i)?n:p[0].label;return(0,r.jsx)("button",{type:"button",onClick:()=>void h(),disabled:u||p.length<2,className:"rounded-full border border-border bg-card px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:text-foreground disabled:opacity-60",title:p.length<2?"LLM provider: ".concat(x):"클릭하면 다음 provider 로 순환 (현재 ".concat(x,")"),children:x})}var D=n(64385);let E=[],L="elanous.pwa.chat.promptHistory.v1";function M(e,t){let n=e.lastIndexOf(t);if(n<0)return null;let r=e.slice(n+1);if(/[\s]/.test(r))return null;if(n>0){let t=e[n-1];if(!/\s/.test(t))return null}return r}function T(e){let{onSubmit:t,disabled:n,attachments:g=E,onAttached:b,onRemoveAttachment:v,tabId:y,voice:w,onListFiles:k,onListSkills:T,prefill:A}=e,{config:R}=(0,j.Q)(),U=(0,S.o1)("chatInput",y),[P,O]=(0,s.useState)(()=>{let e=(0,S.N2)(U);return"string"==typeof e?e:""}),[F,_]=(0,s.useState)(()=>(function(){try{let e=window.localStorage.getItem(L);if(!e)return[];let t=JSON.parse(e);if(!Array.isArray(t))return[];return t.filter(e=>"string"==typeof e)}catch(e){return[]}})()),[Y,z]=(0,s.useState)(-1),H=(0,s.useRef)(""),q=!P.startsWith("/")||/\s/.test(P)?null:P.slice(1),J=null!==q?function(e){let t=e.trim().toLowerCase();return 0===t.length?m.bK:m.bK.filter(e=>e.name.toLowerCase().startsWith(t))}(q):[],[$,B]=(0,s.useState)(0);(0,s.useEffect)(()=>{B(0)},[q]);let K=k?M(P,"@"):null,[V,W]=(0,s.useState)([]),[G,Q]=(0,s.useState)(""),[Z,X]=(0,s.useState)(0);(0,s.useEffect)(()=>{if(null===K||!k)return;X(0);let e=setTimeout(()=>{k(K).then(e=>{W(e.entries),Q(e.cwd)}).catch(()=>{})},200);return()=>clearTimeout(e)},[K,k]),(0,s.useEffect)(()=>{null===K&&(W([]),Q(""),X(0))},[K]);let[ee,et]=(0,s.useState)(!1),[en,er]=(0,s.useState)(0),es=(0,s.useRef)(""),ea=ee?0===P.trim().length?F:F.filter(e=>e.toLowerCase().includes(P.trim().toLowerCase())):[],eo=()=>{O(es.current),et(!1),er(0),es.current=""},el=T?M(P,"$"):null,[ei,ec]=(0,s.useState)([]),[ed,eu]=(0,s.useState)(0),[em,ef]=(0,s.useState)(D.kv);(0,s.useEffect)(()=>(ef((0,D.Vm)()),(0,D.$L)(ef)),[]);let{prediction:ep,predict:eh,clear:ex}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{baseUrl:t,token:n,enabled:r=!0,debounceMs:a=300}=e,[o,l]=(0,s.useState)(null),[i,c]=(0,s.useState)(!1),[d,u]=(0,s.useState)(null),m=(0,s.useRef)(null),f=(0,s.useRef)(null),p=(0,s.useCallback)(()=>{m.current&&(clearTimeout(m.current),m.current=null),f.current&&(f.current.abort(),f.current=null)},[]),h=(0,s.useCallback)(()=>{p(),l(null),u(null)},[p]),x=(0,s.useCallback)(function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(p(),!r||!t||0===e.trim().length&&0===s.length)return void l(null);m.current=setTimeout(async()=>{m.current=null;let r=new AbortController;f.current=r,c(!0);try{let a="".concat(t,"/v1/llm/route/predict"),o={"Content-Type":"application/json"};n&&n.length>0&&(o.Authorization="Bearer ".concat(n));let i=await fetch(a,{method:"POST",headers:o,body:JSON.stringify({text:e,attachments:s.map(e=>({kind:e}))}),signal:r.signal});if(r.signal.aborted)return;if(!i.ok)return void u("http-".concat(i.status));let c=await i.json();l(c),u(null)}catch(e){if(r.signal.aborted)return;u(e instanceof Error?e.message:String(e))}finally{f.current===r&&(f.current=null),c(!1)}},a)},[t,n,r,a,p]);return(0,s.useEffect)(()=>()=>p(),[p]),{prediction:o,inflight:i,error:d,predict:x,clear:h}}({baseUrl:R.baseUrl,token:R.token,enabled:em.autoRouting});(0,s.useEffect)(()=>{if(!em.autoRouting)return void ex();eh(P,g.map(e=>{var t;return(null==(t=e.mediaType)?void 0:t.startsWith("image/"))?"image":"document"}))},[P,em.autoRouting,g,eh,ex]),(0,s.useEffect)(()=>{if(null===el||!T)return;eu(0);let e=setTimeout(()=>{T(el).then(e=>{ec(e.entries)}).catch(()=>{})},200);return()=>clearTimeout(e)},[el,T]),(0,s.useEffect)(()=>{null===el&&(ec([]),eu(0))},[el]),(0,s.useEffect)(()=>{let e=(0,f.ht)();e&&(O(e),d.oR.success("\uD83D\uDCE5 공유 받음 — 검토 후 보내세요"))},[]),(0,s.useEffect)(()=>{A&&(O(A.text),(0,f.ht)())},[A]);let eg=(0,s.useRef)(null);(0,s.useEffect)(()=>(eg.current&&clearTimeout(eg.current),eg.current=setTimeout(()=>{0===P.length?(0,S.yd)(U):(0,S.Os)(U,P)},300),()=>{eg.current&&clearTimeout(eg.current)}),[P,U]);let eb=()=>ev(P),ev=e=>{let r=e.trim();!n&&(r||0!==g.length)&&(r.length>0&&(_(e=>{if(e[0]===r)return e;let t=[r,...e].slice(0,50);try{window.localStorage.setItem(L,JSON.stringify(t))}catch(e){}return t}),z(-1),H.current=""),t(r),O(""),(0,S.yd)(U))},ej=e=>{let t=P.lastIndexOf("@");if(t<0)return;let n=P.slice(0,t),r=e.isDir?"".concat(e.relPath,"/"):e.relPath;O("".concat(n,"@").concat(r).concat(e.isDir?"":" "))},ey=e=>{let t=P.lastIndexOf("$");if(t<0)return;let n=P.slice(0,t);O("".concat(n,"/run-skill ").concat(e.name," "))},ew=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:J[Math.min(Math.max($,0),J.length-1)];e&&O(":".concat(e.name," "))};(0,s.useEffect)(()=>{!(Y<0)&&F[Y]&&P!==F[Y]&&(z(-1),H.current="")},[P]);let ek=(0,m.FM)(P);return(0,r.jsxs)("div",{className:"border-t border-border bg-background p-3",children:[ee&&(0,r.jsxs)("div",{className:"mb-2 overflow-hidden rounded-md border border-border bg-card shadow-md",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-3 py-1.5 text-[10px] uppercase tracking-wide text-muted-foreground",children:[(0,r.jsx)("span",{children:"\uD83D\uDD0E reverse-i-search"}),(0,r.jsxs)("span",{className:"text-xs font-semibold",children:[ea.length," match",1===ea.length?"":"es"]})]}),0===ea.length?(0,r.jsx)("div",{className:"px-3 py-2 text-xs text-muted-foreground",children:0===P.length?"history 가 비어 있음":"일치 없음 — '".concat(P,"'")}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("ul",{className:"divide-y divide-border",children:ea.slice(0,8).map((e,t)=>{let n=t===en;return(0,r.jsx)("li",{role:"button",tabIndex:-1,onMouseDown:n=>{n.preventDefault(),er(t),requestAnimationFrame(()=>{et(!1),es.current="",O(e)})},className:(0,p.cn)("flex cursor-pointer items-center gap-2 px-3 py-1.5 text-sm",n?"bg-accent/15 font-semibold":"hover:bg-accent/8"),children:(0,r.jsx)("span",{className:"line-clamp-2",children:e})},"".concat(e,"-").concat(t))})}),ea.length>8&&(0,r.jsxs)("div",{className:"px-3 py-1 text-[10px] text-muted-foreground",children:["+ ",ea.length-8," more (refine query)"]})]})]}),null!==K&&V.length>0&&(0,r.jsxs)("div",{className:"mb-2 overflow-hidden rounded-md border border-border bg-card shadow-md",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-3 py-1.5 text-[10px] uppercase tracking-wide text-muted-foreground",children:[(0,r.jsxs)("span",{title:G,children:["\uD83D\uDCC1 ",G.length>48?"…"+G.slice(-45):G]}),(0,r.jsx)("span",{className:"text-xs font-semibold",children:V.length})]}),(0,r.jsx)("ul",{className:"divide-y divide-border",children:V.slice(0,12).map((e,t)=>{let n=t===Z;return(0,r.jsxs)("li",{role:"button",tabIndex:-1,onMouseDown:n=>{n.preventDefault(),X(t),requestAnimationFrame(()=>ej(e))},className:(0,p.cn)("flex cursor-pointer items-center gap-2 px-3 py-1.5 text-sm",n?"bg-accent/15":"hover:bg-accent/8"),children:[(0,r.jsx)("span",{className:"text-xs",children:e.isDir?"\uD83D\uDCC2":"\uD83D\uDCC4"}),(0,r.jsxs)("span",{className:(0,p.cn)("font-mono",n?"font-semibold":"font-normal"),children:[e.name,e.isDir?"/":""]}),e.isDir&&(0,r.jsx)("span",{className:"ml-auto text-[10px] uppercase text-muted-foreground",children:"dir"})]},e.relPath)})}),V.length>12&&(0,r.jsxs)("div",{className:"px-3 py-1 text-[10px] text-muted-foreground",children:["+ ",V.length-12," more (refine query)"]})]}),null!==el&&ei.length>0&&(0,r.jsxs)("div",{className:"mb-2 overflow-hidden rounded-md border border-border bg-card shadow-md",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-3 py-1.5 text-[10px] uppercase tracking-wide text-muted-foreground",children:[(0,r.jsx)("span",{children:"✨ skills"}),(0,r.jsx)("span",{className:"text-xs font-semibold",children:ei.length})]}),(0,r.jsx)("ul",{className:"divide-y divide-border",children:ei.map((e,t)=>{let n=t===ed;return(0,r.jsxs)("li",{role:"button",tabIndex:-1,onMouseDown:n=>{n.preventDefault(),eu(t),requestAnimationFrame(()=>ey(e))},className:(0,p.cn)("flex cursor-pointer flex-col gap-0.5 px-3 py-1.5",n?"bg-accent/15":"hover:bg-accent/8"),children:[(0,r.jsx)("span",{className:(0,p.cn)("font-mono text-sm",n?"font-semibold":"font-normal"),children:e.name}),e.description.length>0&&(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:e.description})]},e.name)})})]}),null!==q&&(0,r.jsxs)("div",{className:"mb-2 overflow-hidden rounded-md border border-border bg-card shadow-md",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-3 py-1.5 text-[10px] uppercase tracking-wide text-muted-foreground",children:[(0,r.jsx)("span",{children:"slash commands"}),(0,r.jsx)("span",{className:"text-xs font-semibold",children:J.length})]}),0===J.length?(0,r.jsx)("div",{className:"px-3 py-2 text-xs text-muted-foreground",children:"일치하는 명령 없음"}):(0,r.jsx)("ul",{className:"divide-y divide-border",children:J.map((e,t)=>{let n=t===$;return(0,r.jsxs)("li",{role:"button",tabIndex:-1,onMouseDown:n=>{n.preventDefault(),B(t),ew(e)},className:(0,p.cn)("flex cursor-pointer items-center gap-2 px-3 py-1.5 text-sm",n?"bg-accent/15":"hover:bg-accent/8"),children:[(0,r.jsxs)("span",{className:(0,p.cn)("font-mono",n?"font-semibold text-foreground":"text-foreground/86"),children:[":",e.name]}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:e.description})]},e.name)})})]}),g.length>0&&(0,r.jsx)("ul",{className:"mb-2 flex flex-wrap gap-1.5",children:g.map(e=>{var t,n;let s="string"==typeof e.mediaType&&e.mediaType.startsWith("image/");return(0,r.jsxs)("li",{className:"inline-flex items-center gap-1.5 rounded-md border border-border bg-card px-1.5 py-0.5 text-[11px]",title:null!=(t=e.path)?t:e.filename,children:[s?(0,r.jsx)("img",{src:function(e,t,n){if(!e)return"";let r=e.includes("?")?"&":"?",s=n?"".concat(r,"auth=").concat(encodeURIComponent(n)):"";return"".concat(null!=t?t:"").concat(e).concat(s)}(e.downloadUrl,R.baseUrl,R.token),alt:e.filename,className:"h-6 w-6 rounded-sm object-cover",loading:"lazy"}):(0,r.jsx)(a.A,{className:"h-3 w-3 text-muted-foreground","aria-hidden":!0}),(0,r.jsx)("span",{className:"max-w-[160px] truncate font-mono",children:e.filename}),(0,r.jsx)("span",{className:"text-muted-foreground",children:(n=e.size)<1024?"".concat(n," B"):n<1048576?"".concat((n/1024).toFixed(1)," kB"):"".concat((n/1024/1024).toFixed(1)," MB")}),v&&(0,r.jsx)("button",{type:"button",onClick:()=>v(e.id),"aria-label":"remove ".concat(e.filename),className:"rounded text-muted-foreground hover:text-rose-500",children:(0,r.jsx)(o.A,{className:"h-3 w-3"})})]},e.id)})}),(0,r.jsxs)("div",{className:"relative flex flex-wrap items-end gap-2 sm:flex-nowrap",children:[(0,r.jsxs)("div",{className:"flex shrink-0 basis-full items-center gap-0.5 pb-1 sm:basis-auto","data-elanous-composer-tools":!0,children:[(0,r.jsx)(h.T,{onAttached:b?e=>b([e]):void 0}),(0,r.jsx)(x.u,{onAttached:b}),(0,r.jsx)(N,{}),(0,r.jsx)(I.z,{}),(0,r.jsx)(C,{}),em.autoRouting&&ep&&(0,r.jsx)("span",{className:"text-xs text-muted-foreground",title:"입력 의도 분류 \xb7 ACP 송신 경로는 변경하지 않습니다",children:ep.mission})]}),(0,r.jsx)("textarea",{value:P,onChange:e=>O(e.target.value),onKeyDown:e=>{if(e.ctrlKey&&("r"===e.key||"R"===e.key)){e.preventDefault(),ee||(es.current=P,et(!0),er(0),O(""));return}if(ee){if("Enter"===e.key&&!e.shiftKey){e.preventDefault(),(()=>{if(0===ea.length)return eo();let e=Math.min(Math.max(en,0),ea.length-1),t=ea[e];et(!1),er(0),es.current="",O(t)})();return}if("ArrowUp"===e.key){e.preventDefault(),er(e=>Math.max(0,e-1));return}if("ArrowDown"===e.key){e.preventDefault(),er(e=>Math.min(ea.length-1,e+1));return}if("Escape"===e.key){e.preventDefault(),eo();return}}if("Tab"===e.key&&!e.shiftKey&&(()=>{if(null!==K&&V.length>0){let e=Math.min(Math.max(Z,0),V.length-1),t=V[e],n=P.lastIndexOf("@");if(n<0)return!1;let r=P.slice(0,n),s=t.isDir?"".concat(t.name,"/"):t.name;return O("".concat(r,"@").concat(s)),!0}if(null!==el&&ei.length>0){let e=Math.min(Math.max(ed,0),ei.length-1),t=ei[e],n=P.lastIndexOf("$");if(n<0)return!1;let r=P.slice(0,n);return O("".concat(r,"$").concat(t.name)),!0}if(null!==q&&J.length>0){let e=Math.min(Math.max($,0),J.length-1);return ew(J[e]),!0}return!1})())return void e.preventDefault();if(null!==K&&V.length>0){if("Enter"===e.key&&!e.shiftKey){e.preventDefault(),(()=>{if(0===V.length)return;let e=Math.min(Math.max(Z,0),V.length-1);ej(V[e])})();return}if("ArrowUp"===e.key){e.preventDefault(),X(e=>Math.max(0,e-1));return}if("ArrowDown"===e.key){e.preventDefault(),X(e=>Math.min(V.length-1,e+1));return}if("Escape"===e.key){e.preventDefault();let t=P.lastIndexOf("@");t>=0&&O(P.slice(0,t));return}}if(null!==el&&ei.length>0){if("Enter"===e.key&&!e.shiftKey){e.preventDefault(),(()=>{if(0===ei.length)return;let e=Math.min(Math.max(ed,0),ei.length-1);ey(ei[e])})();return}if("ArrowUp"===e.key){e.preventDefault(),eu(e=>Math.max(0,e-1));return}if("ArrowDown"===e.key){e.preventDefault(),eu(e=>Math.min(ei.length-1,e+1));return}if("Escape"===e.key){e.preventDefault();let t=P.lastIndexOf("$");t>=0&&O(P.slice(0,t));return}}if(null!==q&&J.length>0){if("Enter"===e.key&&!e.shiftKey){e.preventDefault();let t=function(e,t,n){let r=t.find(t=>t.name.toLowerCase()===e.trim().toLowerCase());if(r)return{kind:"run",line:":".concat(r.name)};let s=t[Math.min(Math.max(n,0),t.length-1)];return s?{kind:"complete",value:":".concat(s.name," ")}:null}(q,J,$);(null==t?void 0:t.kind)==="run"?ev(t.line):t&&O(t.value);return}if("ArrowUp"===e.key){e.preventDefault(),B(e=>Math.max(0,e-1));return}if("ArrowDown"===e.key){e.preventDefault(),B(e=>Math.min(J.length-1,e+1));return}if("Escape"===e.key){e.preventDefault(),O("");return}}if("Enter"===e.key&&!e.shiftKey){e.preventDefault(),eb();return}if("ArrowUp"===e.key){(()=>{if(0===F.length||P.includes("\n"))return!1;-1===Y&&(H.current=P);let e=Math.min(Y+1,F.length-1);return e===Y||(z(e),O(F[e]),!0)})()&&e.preventDefault();return}if("ArrowDown"===e.key){(()=>{if(Y<0||P.includes("\n"))return!1;if(0===Y)return z(-1),O(H.current),!0;let e=Y-1;return z(e),O(F[e]),!0})()&&e.preventDefault();return}},placeholder:"message \xb7 `:help` for commands \xb7 Shift+Enter for newline",rows:2,disabled:n,className:(0,p.cn)("min-h-[44px] max-h-[180px] min-w-0 flex-1 resize-y rounded-md border border-input bg-background px-3 py-2 text-sm shadow-xs focus:outline-none focus:ring-2 focus:ring-ring",ek&&"border-accent text-accent-foreground bg-accent/10",n&&"opacity-60")}),w&&(0,r.jsx)("button",{type:"button",onClick:w.onToggle,disabled:w.disabled,title:w.disabled?"daemon URL 미설정":w.phaseLabel,"data-elanous-action":"chat-voice-toggle-inline",className:(0,p.cn)("inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md border transition-colors",w.active?"border-rose-500/40 bg-rose-500/10 text-rose-600 hover:bg-rose-500/20":"border-input bg-background text-foreground hover:bg-muted",w.disabled&&"cursor-not-allowed opacity-50"),children:(0,r.jsxs)("span",{className:"relative inline-flex",children:[w.active?(0,r.jsx)(l.A,{className:"h-4 w-4"}):(0,r.jsx)(i.A,{className:"h-4 w-4"}),(0,r.jsx)("span",{"aria-hidden":!0,className:(0,p.cn)("absolute -right-0.5 -top-0.5 h-1.5 w-1.5 rounded-full",w.dotColor,("listening"===w.phase||"speaking"===w.phase)&&"animate-pulse")})]})}),(0,r.jsx)(u.$,{onClick:eb,disabled:n||!P.trim()&&0===g.length,size:"sm",children:(0,r.jsx)(c.A,{className:"h-4 w-4"})})]}),ek&&(0,r.jsx)("p",{className:"mt-1 text-[11px] text-muted-foreground",children:"meta command — handled locally, not sent to LLM"})]})}},19418:(e,t,n)=>{n.d(t,{ht:()=>a,vn:()=>s});let r="elanous.pwa.sharePrefill";function s(e){try{window.sessionStorage.setItem(r,e)}catch(e){}}function a(){try{var e;let t=null!=(e=window.sessionStorage.getItem(r))?e:"";return window.sessionStorage.removeItem(r),t}catch(e){return""}}},21234:(e,t,n)=>{n.d(t,{D:()=>d});var r=n(58443),s=n(77947),a=n(19989),o=n(34015),l=n(49413),i=n(23783);function c(e){return!Number.isFinite(e)||e<0?"$0.00":"$".concat(e.toFixed(2))}function d(){let{client:e,config:t}=(0,o.Q)(),[n,d]=(0,s.useState)(null),[u,m]=(0,s.useState)(!1),f=!!t.baseUrl,p=(0,s.useCallback)(async()=>{if(f)try{let t=await e.voiceCost();d(t),m(!1)}catch(e){m(!0),(0,i.cY)("chat.voice.cost-pill.error",{reason:e instanceof Error?e.message:String(e)})}},[e,f]);if((0,s.useEffect)(()=>{if(!f)return;p();let e=setInterval(()=>void p(),6e4);return()=>clearInterval(e)},[f,p]),!f)return null;if(u&&!n)return(0,r.jsxs)("div",{className:"inline-flex items-center gap-1 rounded-md border border-border bg-muted/40 px-2 py-1 text-[11px] text-muted-foreground",title:"voice cost — daemon /v1/voice/cost 응답 없음","data-elanous-pill":"voice-cost",children:[(0,r.jsx)(a.A,{className:"h-3 w-3","aria-hidden":!0}),(0,r.jsx)("span",{children:"—"})]});if(!n)return(0,r.jsxs)("div",{className:"inline-flex items-center gap-1 rounded-md border border-border bg-muted/40 px-2 py-1 text-[11px] text-muted-foreground","data-elanous-pill":"voice-cost",children:[(0,r.jsx)(a.A,{className:"h-3 w-3","aria-hidden":!0}),(0,r.jsx)("span",{children:"…"})]});let h=n.totalUsd>0;return(0,r.jsxs)("div",{className:(0,l.cn)("inline-flex items-center gap-1 rounded-md border px-2 py-1 text-[11px]",h?"border-emerald-500/30 bg-emerald-500/5 text-emerald-700 dark:text-emerald-400":"border-border bg-muted/40 text-muted-foreground"),title:"voice cost ".concat(n.monthYYYYMM," \xb7 STT ").concat(c(n.sttUsd)," \xb7 TTS ").concat(c(n.ttsUsd)),"data-elanous-pill":"voice-cost",children:[(0,r.jsx)(a.A,{className:"h-3 w-3","aria-hidden":!0}),(0,r.jsx)("span",{children:c(n.totalUsd)}),(0,r.jsx)("span",{className:"text-muted-foreground",children:"/mo"})]})}},26882:(e,t,n)=>{n.d(t,{Cf:()=>g,Es:()=>v,L3:()=>j,c7:()=>b,lG:()=>p,rr:()=>y});var r=n(58443);n(77947);var s=n(25922),a=n(72021),o=n(94491),l=n(31386),i=n(75921),c=n(63109),d=n(42965),u=n(49413),m=n(19990),f=n(22444);function p(e){let{...t}=e;return(0,r.jsx)(s.D,{"data-slot":"dialog",...t})}function h(e){let{...t}=e;return(0,r.jsx)(a.Z,{"data-slot":"dialog-portal",...t})}function x(e){let{className:t,...n}=e;return(0,r.jsx)(o.X,{"data-slot":"dialog-overlay",className:(0,u.cn)("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",t),...n})}function g(e){let{className:t,children:n,showCloseButton:s=!0,...a}=e;return(0,r.jsxs)(h,{children:[(0,r.jsx)(x,{}),(0,r.jsxs)(l.h,{"data-slot":"dialog-content",className:(0,u.cn)("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...a,children:[n,s&&(0,r.jsxs)(i.H,{"data-slot":"dialog-close",render:(0,r.jsx)(m.$,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[(0,r.jsx)(f.A,{}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function b(e){let{className:t,...n}=e;return(0,r.jsx)("div",{"data-slot":"dialog-header",className:(0,u.cn)("flex flex-col gap-2",t),...n})}function v(e){let{className:t,showCloseButton:n=!1,children:s,...a}=e;return(0,r.jsxs)("div",{"data-slot":"dialog-footer",className:(0,u.cn)("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",t),...a,children:[s,n&&(0,r.jsx)(i.H,{render:(0,r.jsx)(m.$,{variant:"outline"}),children:"Close"})]})}function j(e){let{className:t,...n}=e;return(0,r.jsx)(c.L,{"data-slot":"dialog-title",className:(0,u.cn)("font-heading text-base leading-none font-medium",t),...n})}function y(e){let{className:t,...n}=e;return(0,r.jsx)(d.r,{"data-slot":"dialog-description",className:(0,u.cn)("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",t),...n})}},28190:(e,t,n)=>{n.d(t,{g:()=>s,x:()=>r});let r={idle:"bg-slate-400",connecting:"bg-amber-500",listening:"bg-emerald-500",processing:"bg-sky-500",speaking:"bg-fuchsia-500",error:"bg-rose-600"},s={idle:"음성 대기",connecting:"연결 중…",listening:"듣는 중",processing:"생각 중",speaking:"말하는 중",error:"음성 오류"}},58703:(e,t,n)=>{n.d(t,{h:()=>l,t:()=>o});var r=n(77947),s=n(34015),a=n(87139);function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{client:t}=(0,s.Q)(),n=(0,a.hG)(t),o=()=>n.list(),l=(0,r.useSyncExternalStore)(e=>n.subscribe(e),o,o);return(0,r.useEffect)(()=>{if(e.activePoll)return n.enterActive()},[n,e.activePoll]),l}function l(){let{client:e}=(0,s.Q)(),t=(0,a.hG)(e),n=o({activePoll:!0}),[,l]=(0,r.useState)(0);return(0,r.useEffect)(()=>{t.forceRefresh().then(()=>l(e=>e+1))},[t]),n}},61643:(e,t,n)=>{n.d(t,{D:()=>eo});var r=n(58443),s=n(77947),a=n(65333),o=n(23744);let l=[n(87451).A];var i=n(49413),c=n(73632),d=n(65233),u=n(90355),m=n(66420),f=n(23783);function p(e){let{block:t}=e,{msg:n,done:s,metrics:a}=t,o=[];if(a){let e=function(e){let t=Math.max(0,Math.round(e/1e3));return t<60?"".concat(t,"s"):t<3600?"".concat(Math.floor(t/60),"m ").concat(t%60,"s"):"".concat(Math.floor(t/3600),"h ").concat(Math.floor(t%3600/60),"m")}(a.elapsedMs);e&&a.elapsedMs>0&&o.push(e);let t=function(e){if(e<=0)return"";let t=e/1e3;return t>=1?"".concat(t.toFixed(1),"k tokens"):"".concat(e," tokens")}(a.tokenCount);t&&o.push(t)}let l=o.length?" (".concat(o.join(" \xb7 "),")"):"";return(0,r.jsxs)("div",{"data-elanous-block-kind":"agent_thinking","data-elanous-block-id":t.blockId,"data-elanous-done":s?"true":"false",className:(0,i.cn)("inline-flex items-center gap-1.5 rounded-full border bg-muted/30 px-2 py-0.5 text-[11px] font-mono",s?"border-border text-muted-foreground":"border-border/60 text-foreground"),children:[(0,r.jsx)("span",{"aria-hidden":"true",className:(0,i.cn)("inline-block h-1.5 w-1.5 rounded-full",s?"bg-emerald-500":"bg-amber-400 motion-safe:animate-pulse")}),(0,r.jsxs)("span",{children:[s?"✓ ":"",n,s?"":"…",(0,r.jsx)("span",{className:"text-muted-foreground",children:l})]})]})}let h={running:"●",queued:"◌",done:"✓",error:"✗"},x={running:"border-amber-400/50 text-amber-300",queued:"border-border text-muted-foreground",done:"border-emerald-500/40 text-emerald-300",error:"border-destructive/50 text-destructive"};function g(e){let{block:t}=e,n=h[t.status],s=x[t.status];return(0,r.jsxs)("div",{"data-elanous-block-kind":"agent_status","data-elanous-block-id":t.blockId,"data-monad-agent-id":t.agentId,"data-elanous-status":t.status,className:(0,i.cn)("inline-flex items-center gap-1.5 rounded border bg-muted/20 px-2 py-0.5 text-[11px] font-mono",s),children:[(0,r.jsx)("span",{"aria-hidden":"true",className:(0,i.cn)("running"===t.status?"motion-safe:animate-pulse":void 0),children:n}),(0,r.jsx)("span",{className:"font-semibold",children:t.agentId}),(0,r.jsx)("span",{className:"uppercase tracking-wide text-[10px] text-muted-foreground",children:t.status}),t.lastEvent&&(0,r.jsxs)("span",{className:"ml-1 truncate text-muted-foreground",children:["\xb7 ",t.lastEvent]})]})}let b={pending:"○","in-progress":"◐",done:"●",skipped:"⊘"},v={pending:"text-muted-foreground","in-progress":"text-amber-300",done:"text-emerald-400",skipped:"text-muted-foreground/60 line-through"};function j(e){let{block:t}=e;return(0,r.jsxs)("div",{"data-elanous-block-kind":"agent_plan","data-elanous-block-id":t.blockId,"data-elanous-plan-ref":t.ref,className:"rounded border border-border bg-muted/20 px-2 py-1.5 text-xs font-mono",children:[(0,r.jsxs)("div",{className:"mb-1 flex items-center justify-between text-[10px] uppercase tracking-wide text-muted-foreground",children:[(0,r.jsxs)("span",{children:["Plan \xb7 ",t.ref]}),"number"==typeof t.activeIndex&&t.steps.length>0&&(0,r.jsxs)("span",{children:[t.activeIndex+1,"/",t.steps.length]})]}),(0,r.jsx)("ol",{className:"m-0 list-none space-y-0.5 p-0",children:t.steps.map((e,n)=>{let s=n===t.activeIndex;return(0,r.jsxs)("li",{"data-elanous-step-index":n,"data-elanous-step-status":e.status,className:(0,i.cn)("flex items-start gap-2 leading-snug",v[e.status],s&&"done"!==e.status?"font-semibold motion-safe:animate-pulse":void 0),children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"select-none",children:b[e.status]}),(0,r.jsx)("span",{className:"flex-1 whitespace-pre-wrap",children:e.text})]},n)})})]})}let y={add:"bg-emerald-500/10 text-emerald-300",del:"bg-rose-500/10 text-rose-300",ctx:"text-muted-foreground"},w={add:"+",del:"-",ctx:" "};function k(e){let{block:t}=e,[n,a]=(0,s.useState)(!1),{adds:o,dels:l}=function(e){let t=0,n=0;for(let r of e.hunks)for(let e of r.lines)"add"===e.kind?t+=1:"del"===e.kind&&(n+=1);return{adds:t,dels:n}}(t),c=t.hunks.length;return(0,r.jsxs)("div",{"data-elanous-block-kind":"tool_diff","data-elanous-block-id":t.blockId,"data-elanous-file-path":t.filePath,className:"rounded border border-border bg-muted/20 px-2 py-1 text-xs font-mono",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>a(!n),"aria-expanded":n,className:"flex w-full items-center gap-2 text-left",children:[(0,r.jsx)("span",{"aria-hidden":"true",children:"⌥"}),(0,r.jsx)("span",{className:"font-semibold truncate",children:t.filePath}),t.language&&(0,r.jsxs)("span",{className:"text-[10px] text-muted-foreground",children:["\xb7",t.language]}),(0,r.jsxs)("span",{className:"ml-auto flex items-center gap-1.5 text-[10px]",children:[o>0&&(0,r.jsxs)("span",{className:"text-emerald-300",children:["+",o]}),l>0&&(0,r.jsxs)("span",{className:"text-rose-300",children:["-",l]}),(0,r.jsxs)("span",{className:"text-muted-foreground",children:[c," hunk",1===c?"":"s"]}),(0,r.jsx)("span",{"aria-hidden":"true",className:"text-muted-foreground",children:n?"▾":"▸"})]})]}),n&&(0,r.jsx)("div",{className:"mt-1 overflow-x-auto rounded bg-background/40",children:t.hunks.map((e,t)=>(0,r.jsxs)("div",{"data-elanous-hunk-index":t,className:"border-t border-border/40 first:border-t-0",children:[(0,r.jsxs)("div",{className:"px-2 py-0.5 text-[10px] text-muted-foreground bg-muted/30",children:["@@ -",e.oldStart,",",e.oldLines," +",e.newStart,",",e.newLines," @@"]}),(0,r.jsx)("pre",{className:"m-0 whitespace-pre p-0 text-[11px] leading-tight",children:e.lines.map((e,t)=>(0,r.jsxs)("div",{"data-elanous-line-kind":e.kind,className:(0,i.cn)("flex items-baseline px-2 py-px",y[e.kind]),children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"w-3 shrink-0 select-none",children:w[e.kind]}),(0,r.jsx)("span",{className:"flex-1",children:e.text})]},t))})]},t))})]})}function N(e){var t,n,s,a;let{hit:o}=e;return(0,r.jsx)("li",{"data-elanous-search-hit-file":o.filePath,"data-elanous-search-hit-line":o.line,className:"rounded px-2 py-1 hover:bg-muted/30",children:(0,r.jsxs)("a",{href:function(e){var t;let n=null!=(t=e.column)?t:1;return"vscode://file/".concat(e.filePath,":").concat(e.line,":").concat(n)}(o),className:"block",target:"_blank",rel:"noopener",children:[(0,r.jsxs)("div",{className:"flex items-baseline gap-2 text-[11px]",children:[(0,r.jsx)("span",{className:"font-semibold truncate",children:o.filePath}),(0,r.jsxs)("span",{className:"text-muted-foreground",children:[":",o.line]}),void 0!==o.column&&(0,r.jsxs)("span",{className:"text-muted-foreground",children:[":",o.column]})]}),(null!=(s=null==(t=o.contextBefore)?void 0:t.length)?s:0)>0&&(0,r.jsx)("pre",{className:"m-0 mt-0.5 whitespace-pre-wrap break-words text-[10px] text-muted-foreground/70",children:o.contextBefore.join("\n")}),(0,r.jsx)("pre",{className:"m-0 whitespace-pre-wrap break-words text-[10px] text-foreground",children:o.snippet}),(null!=(a=null==(n=o.contextAfter)?void 0:n.length)?a:0)>0&&(0,r.jsx)("pre",{className:"m-0 whitespace-pre-wrap break-words text-[10px] text-muted-foreground/70",children:o.contextAfter.join("\n")})]})})}function I(e){let{block:t}=e,[n,a]=(0,s.useState)(!1),o=t.hits.length,l=n?t.hits:t.hits.slice(0,5),c=o-l.length;return(0,r.jsxs)("div",{"data-elanous-block-kind":"tool_search_hits","data-elanous-block-id":t.blockId,"data-elanous-search-query":t.query,"data-elanous-accum-count":t.accumCount,className:(0,i.cn)("rounded border border-border bg-muted/20 px-2 py-1 text-xs font-mono"),children:[(0,r.jsxs)("div",{className:"flex items-baseline gap-2 mb-1",children:[(0,r.jsx)("span",{"aria-hidden":"true",children:"\uD83D\uDD0E"}),(0,r.jsx)("span",{className:"font-semibold",children:t.query}),(0,r.jsxs)("span",{className:"text-[10px] text-muted-foreground",children:[t.accumCount," hit",1===t.accumCount?"":"s"]}),t.truncated&&(0,r.jsx)("span",{className:"text-[10px] text-amber-300",children:"truncated"})]}),0===o?(0,r.jsx)("div",{className:"text-[10px] text-muted-foreground italic",children:"(no hits yet)"}):(0,r.jsx)("ul",{className:"m-0 list-none space-y-0.5 p-0",children:l.map((e,t)=>(0,r.jsx)(N,{hit:e},"".concat(e.filePath,":").concat(e.line,":").concat(t)))}),c>0&&(0,r.jsxs)("button",{type:"button",onClick:()=>a(!0),className:"mt-1 w-full rounded bg-muted/40 px-2 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/60",children:["+ ",c," more"]}),n&&o>5&&(0,r.jsx)("button",{type:"button",onClick:()=>a(!1),className:"mt-1 w-full rounded bg-muted/40 px-2 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/60",children:"collapse"})]})}let S={stdout:"text-foreground",stderr:"text-rose-300",http:"text-amber-300",generic:"text-muted-foreground"},C={stdout:"▌",stderr:"▌",http:"↹",generic:"\xb7"};function D(e){var t;let{block:n}=e,[a,o]=(0,s.useState)(!1),l=n.lines.length,c=0===l?"":n.lines[l-1],d=void 0===n.exitCode?"":0===n.exitCode?"text-emerald-300":"text-rose-300";return(0,r.jsxs)("div",{"data-elanous-block-kind":"tool_progress","data-elanous-block-id":n.blockId,"data-elanous-stream":n.stream,"data-elanous-done":n.done?"true":"false",className:"rounded border border-border bg-muted/20 px-2 py-1 text-xs font-mono",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>o(!a),"aria-expanded":a,className:"flex w-full items-center gap-2 text-left",children:[(0,r.jsx)("span",{"aria-hidden":"true",className:(0,i.cn)(S[n.stream],!n.done&&"motion-safe:animate-pulse"),children:C[n.stream]}),(0,r.jsx)("span",{className:"uppercase tracking-wide text-[10px] text-muted-foreground",children:n.stream}),!a&&c&&(0,r.jsx)("span",{className:(0,i.cn)("flex-1 truncate",S[n.stream]),children:c}),(0,r.jsxs)("span",{className:"ml-auto flex items-center gap-1.5 text-[10px] text-muted-foreground",children:[(0,r.jsxs)("span",{children:[l," line",1===l?"":"s"]}),void 0!==n.bytesSoFar&&(0,r.jsxs)("span",{children:["\xb7 ",(t=n.bytesSoFar)<1024?"".concat(t,"B"):t<1048576?"".concat((t/1024).toFixed(1),"KB"):"".concat((t/1048576).toFixed(1),"MB")]}),void 0!==n.exitCode&&(0,r.jsxs)("span",{className:d,children:["\xb7 exit ",n.exitCode]}),n.done&&!n.exitCode&&(0,r.jsx)("span",{className:"text-emerald-300",children:"\xb7 ✓"}),(0,r.jsx)("span",{"aria-hidden":"true",children:a?"▾":"▸"})]})]}),a&&(0,r.jsx)("pre",{className:(0,i.cn)("m-0 mt-1 max-h-64 overflow-auto rounded bg-background/40 p-1.5 text-[11px] leading-tight whitespace-pre",S[n.stream]),children:0===n.lines.length?"(no output yet)":n.lines.join("\n")})]})}function E(e){var t;let{group:n}=e,s=function(e){if(0===e.samples.length)return"";if(1===e.samples.length)return"M0,".concat(9," L").concat(80,",").concat(9);let t=e.max-e.min||1,n=e.samples.map((n,r)=>{let s=r/(e.samples.length-1)*80,a=(n.value-e.min)/t;return"".concat(s.toFixed(1),",").concat((18-18*a).toFixed(1))});return"M".concat(n[0]," L").concat(n.slice(1).join(" L"))}(n);return(0,r.jsxs)("div",{"data-elanous-perf-metric":n.metric,"data-elanous-perf-latest":n.latest,className:"flex items-center gap-2 text-[10px] font-mono",children:[(0,r.jsx)("span",{className:"text-muted-foreground truncate min-w-[120px]",children:n.metric}),(0,r.jsx)("svg",{width:80,height:18,viewBox:"0 0 ".concat(80," ").concat(18),className:"shrink-0","aria-label":"".concat(n.metric," sparkline"),children:(0,r.jsx)("path",{d:s,fill:"none",stroke:"currentColor",strokeWidth:"1",strokeLinejoin:"round",strokeLinecap:"round",className:"text-amber-400"})}),(0,r.jsx)("span",{className:"text-foreground tabular-nums",children:(t=n.latest)>=1e3?(t/1e3).toFixed(1)+"k":t>=10?t.toFixed(0):t.toFixed(1)}),n.unit&&(0,r.jsx)("span",{className:"text-muted-foreground",children:n.unit})]})}function L(e){let{block:t}=e,n=(0,s.useMemo)(()=>(function(e){let t=new Map;for(let n of e){let e=t.get(n.metric);e?e.push(n):t.set(n.metric,[n])}let n=[];for(let[e,r]of t.entries()){let t=1/0,s=-1/0;for(let e of r)e.value<t&&(t=e.value),e.value>s&&(s=e.value);let a=r[r.length-1].value,o={metric:e,samples:r,latest:a,min:t,max:s},l=r[r.length-1].unit;void 0!==l&&(o.unit=l),n.push(o)}return n.sort((e,t)=>t.samples.length-e.samples.length),n})(t.samples),[t.samples]);return 0===n.length?(0,r.jsx)("div",{"data-elanous-block-kind":"perf_session","data-elanous-block-id":t.blockId,className:"rounded border border-border bg-muted/20 px-2 py-1 text-[10px] text-muted-foreground italic",children:"(no perf samples yet)"}):(0,r.jsx)("div",{"data-elanous-block-kind":"perf_session","data-elanous-block-id":t.blockId,"data-elanous-perf-metric-count":n.length,className:(0,i.cn)("rounded border border-border bg-muted/20 px-2 py-1","flex flex-col gap-0.5"),children:n.map(e=>(0,r.jsx)(E,{group:e},e.metric))})}let M="'none'";function T(e){let t=function(e){if(!e)return[];let t=new Set;for(let n of e)if("string"==typeof n)try{let e=new URL(n);if("http:"!==e.protocol&&"https:"!==e.protocol||e.username||e.password||"/"!==e.pathname||e.search||e.hash)continue;t.add(e.origin)}catch(e){}return[...t]}(e);return t.length>0?t.join(" "):M}let A="ui/notifications/tool-result",R=(e,t,n)=>"".concat(e,":").concat(t,":").concat(typeof n,":").concat(String(n));function U(e,t,n){return{jsonrpc:"2.0",id:e,error:{code:t,message:n}}}function P(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function O(e){return{frames:{...e.frames},pending:{...e.pending},pushes:[...e.pushes],unmatched:[...e.unmatched],nextGeneration:e.nextGeneration}}function F(e){return{jsonrpc:"2.0",method:A,params:{content:[],_meta:{"elanous/resultOmittedReason":e}}}}function _(e){let{message:t,omitted:n,bytes:r}=function(e){if(!(P(e)&&(!("content"in e)||Array.isArray(e.content))))return{message:F("not_a_tool_result"),omitted:"not_a_tool_result",bytes:-1};let t={jsonrpc:"2.0",method:A,params:e};try{structuredClone(t);let e=new TextEncoder().encode(JSON.stringify(t)).byteLength;if(e<=65536)return{message:t,bytes:e};return{message:F("too_large"),omitted:"too_large",bytes:e}}catch(e){return{message:F("unserializable"),omitted:"unserializable",bytes:-1}}}(e.result);return{kind:"notify",frameId:e.frameId,message:t,bytes:r,...n?{omitted:n}:{}}}function Y(e,t){for(let[n,r]of(delete e.frames[t],Object.entries(e.pending)))r.frameId===t&&delete e.pending[n];e.pushes=e.pushes.filter(e=>e.frameId!==t)}function z(e){return{frames:{},pending:{},pushes:[],unmatched:[],nextGeneration:e.nextGeneration}}function H(e,t,n,r,s){let a=R(t,n,r),o=e.frames[t];if(!e.pending[a]||!o||o.generation!==n)return{state:e,actions:[]};let l=O(e);return delete l.pending[a],{state:l,actions:[{kind:"respond",frameId:t,message:"result"in s?{jsonrpc:"2.0",id:r,result:s.result}:{jsonrpc:"2.0",id:r,error:{code:-32603,message:"Daemon tool call failed",data:s.error}}}]}}let q=new WeakMap;var J=n(34015);function $(e){let{html:t,connectDomains:n,resourceDomains:a,server:o,tool:l,toolCallId:i,toolResult:c}=e,d=function(){let{connectDomains:e,resourceDomains:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=T(e),r=T(t);return["default-src ".concat(M),"connect-src ".concat(n),"img-src ".concat(r),"media-src ".concat(r),"style-src ".concat(r),"font-src ".concat(r),"script-src 'unsafe-inline' ".concat(r),"base-uri ".concat(M),"form-action ".concat(M),"navigate-to ".concat(M)].join("; ")}({connectDomains:n,resourceDomains:a}),u='<meta http-equiv="Content-Security-Policy" content="'.concat(d,'">').concat(t),m=(0,s.useRef)(null),p=(0,s.useId)(),h=(0,s.useContext)(J.C),[x,g]=(0,s.useState)(!1),[b,v]=(0,s.useState)(null),j=(0,s.useCallback)(()=>{var e,t;g(!0),v(null!=(t=null==(e=m.current)?void 0:e.contentWindow)?t:null)},[]);return(0,s.useEffect)(()=>{if(b&&h)return function(e,t){let n=e.register({frameId:t.frameId,source:t.source,server:t.server,...void 0!==t.tool?{tool:t.tool}:{},...void 0!==t.toolCallId?{toolCallId:t.toolCallId}:{}}),r=void 0!==t.toolResult&&void 0!==t.tool;return(0,f.cY)("mcp-app.bridge.attach",{frameId:t.frameId,server:t.server,hasTool:void 0!==t.tool,hasToolCallId:void 0!==t.toolCallId,hasToolResult:void 0!==t.toolResult,published:r,...r?{}:{skipped:void 0===t.tool?"no-tool":"no-tool-result"}}),r&&e.publish({server:t.server,tool:t.tool,...void 0!==t.toolCallId?{toolCallId:t.toolCallId}:{},result:t.toolResult}),n}(function(e,t){let n=q.get(e);if(n)return n;let r=function(e,t){let n={frames:{},pending:{},pushes:[],unmatched:[],nextGeneration:1},r=(e,t)=>{var r;let s=null==(r=n.frames[e])?void 0:r.source;if("function"!=typeof(null==s?void 0:s.postMessage))return"no-target";try{return s.postMessage(t,"*"),"posted"}catch(e){return"threw"}},s=e=>{for(let a of e){if("observe"===a.kind&&(0,f.cY)("mcp-app.bridge.discard",{reason:a.reason,...a.method?{method:a.method}:{}}),"notify"===a.kind){let e=r(a.frameId,a.message);(0,f.cY)("mcp-app.bridge.push",{frameId:a.frameId,post:e,bytes:a.bytes,maxBytes:65536,...a.omitted?{omitted:a.omitted}:{}})}"respond"===a.kind&&r(a.frameId,a.message),"daemon-tool-call"===a.kind&&t.callWidgetTool({server:a.server,tool:a.tool,arguments:a.arguments}).then(e=>{let t=H(n,a.frameId,a.generation,a.id,{result:e});n=t.state,s(t.actions)},e=>{let t=H(n,a.frameId,a.generation,a.id,{error:String(e)});n=t.state,s(t.actions)})}},a=e=>{let t=function(e,t,n){let r=Object.values(e.frames).find(e=>e.source===t);if(!r)return{state:e,actions:[{kind:"observe",reason:"untrusted-source"}]};if(!P(n)||"2.0"!==n.jsonrpc||"string"!=typeof n.method)return{state:e,actions:[{kind:"observe",reason:"malformed-message"}]};if("notifications/initialized"===n.method||"ui/notifications/initialized"===n.method){var s;if(r.ready)return{state:e,actions:[]};let t=O(e);t.frames[r.frameId]={...r,ready:!0};let n=t.pushes.filter(e=>e.frameId===r.frameId&&e.generation===r.generation);return t.pushes=t.pushes.filter(e=>e.frameId!==r.frameId||e.generation!==r.generation),{state:t,actions:n.map(_)}}if(!("string"==typeof(s=n.id)||"number"==typeof s&&Number.isFinite(s)))return{state:e,actions:[]};if("ui/initialize"===n.method)return{state:e,actions:[{kind:"respond",frameId:r.frameId,message:{jsonrpc:"2.0",id:n.id,result:{protocolVersion:"2025-11-21",hostInfo:{name:"elanous",version:"1"},hostCapabilities:{serverTools:{}},hostContext:{}}}}]};if("ui/open-link"===n.method||"tools/call"!==n.method)return{state:e,actions:[{kind:"observe",reason:"unknown-method",method:n.method},{kind:"respond",frameId:r.frameId,message:U(n.id,-32601,"Method not found")}]};if(!P(n.params)||"string"!=typeof n.params.name)return{state:e,actions:[{kind:"respond",frameId:r.frameId,message:U(n.id,-32602,"Invalid params")}]};let a=R(r.frameId,r.generation,n.id);if(e.pending[a])return{state:e,actions:[{kind:"respond",frameId:r.frameId,message:U(n.id,-32600,"Duplicate request id")}]};let o=O(e);return o.pending[a]={frameId:r.frameId,id:n.id,generation:r.generation},{state:o,actions:[{kind:"daemon-tool-call",frameId:r.frameId,id:n.id,generation:r.generation,server:r.server,tool:n.params.name,arguments:n.params.arguments}]}}(n,e.source,e.data);n=t.state,s(t.actions)};return e.addEventListener("message",a),{register(e){var t;let r=function(e,t){let n=O(e);for(let[e,r]of Object.entries(n.frames))(e===t.frameId||r.source===t.source)&&Y(n,e);let r=n.nextGeneration++;n.frames[t.frameId]={...t,generation:r,ready:!1};let s=n.unmatched.filter(e=>e.server===t.server&&e.tool===t.tool&&void 0!==e.toolCallId&&e.toolCallId===t.toolCallId);for(let e of(n.unmatched=n.unmatched.filter(e=>!s.includes(e)),s))n.pushes.push({...e,frameId:t.frameId,generation:r});return{state:n,actions:[]}}(n,e);n=r.state,s(r.actions);let a=null==(t=n.frames[e.frameId])?void 0:t.generation;return()=>{void 0!==a&&(n=function(e,t,n){let r=e.frames[t];if(!r||void 0!==n&&r.generation!==n)return{state:e,actions:[]};let s=O(e);return Y(s,t),{state:s,actions:[]}}(n,e.frameId,a).state)}},publish(e){let t=function(e,t){let n=e,r=[],s=!1;for(let a of Object.values(e.frames)){if(a.server!==t.server||a.tool!==t.tool||(void 0!==t.toolCallId||void 0!==a.toolCallId)&&t.toolCallId!==a.toolCallId)continue;s=!0;let e=function(e,t){let n=e.frames[t.frameId];if(!n||n.generation!==t.generation)return{state:e,actions:[]};if(n.ready)return{state:e,actions:[_(t)]};let r=O(e);return r.pushes.push(t),{state:r,actions:[]}}(n,{...t,frameId:a.frameId,generation:a.generation});n=e.state,r.push(...e.actions)}if(!s&&void 0!==t.toolCallId){let e=O(n);e.unmatched=[...e.unmatched,t],n=e}return{state:n,actions:r}}(n,e);n=t.state,s(t.actions)},disposeConversation(){n=z(n)},close(){e.removeEventListener("message",a),n=z(n)}}}(t,{async callWidgetTool(t){let{tool:n,arguments:r}=t;return e.fetchJson("/v1/mcp/widgets/call",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({toolName:n,args:null!=r?r:{}})})}});return q.set(e,r),r}(h.client,window),{frameId:p,source:b,server:null!=o?o:"",...void 0!==l?{tool:l}:{},...void 0!==i?{toolCallId:i}:{},...void 0!==c?{toolResult:c}:{}})},[b,h,p,o,l,i,c]),(0,r.jsx)("iframe",{ref:m,"data-elanous-mcp-app-frame":"true","data-elanous-mcp-server":null!=o?o:"",sandbox:"allow-scripts",srcDoc:u,title:"MCP App",onLoad:j,className:"mt-2 w-full rounded border border-border bg-background transition-[height] ".concat(x?"h-96":"h-10")})}function B(e,t){let n=e.headers.get(t);if(null!==n)return n.split(",").map(e=>e.trim()).filter(e=>e.length>0)}async function K(e,t){if(!t.server||!t.uri)return null;try{let n=await e.fetchResponse(function(e,t){let n=new URLSearchParams({server:e,uri:t});return"".concat("/v1/mcp/resources","?").concat(n.toString())}(t.server,t.uri),t.signal?{signal:t.signal}:void 0);if(!n.ok)return null;let r=await n.text();if(0===r.length)return null;let s=B(n,"x-elanous-mcp-app-connect-domains"),a=B(n,"x-elanous-mcp-app-resource-domains");return{html:r,...s?{connectDomains:s}:{},...a?{resourceDomains:a}:{}}}catch(e){return null}}let V=["__","."];function W(e){var t,n,a,o,l,i;let{block:c}=e,d=function(e){for(let t of V){let n=e.indexOf(t);if(n>0)return e.slice(0,n)}return""}(c.toolName),u=(0,s.useContext)(J.C),[m,p]=(0,s.useState)(null);(0,s.useEffect)(()=>{if(c.html||!u||!d||!c.screenUrl)return;let e=new AbortController,t=!0,n=Date.now();return(0,f.cY)("mcp-app.body.fetch",{server:d,uri:c.screenUrl,reason:"not-embedded"}),K(u.client,{server:d,uri:c.screenUrl,signal:e.signal}).then(e=>{var r,s,a,o,l;t&&((0,f.cY)("mcp-app.body.fetched",{server:d,elapsedMs:Date.now()-n,ok:null!==e,bytes:null!=(a=null==e?void 0:e.html.length)?a:0,connectDomains:null!=(o=null==e||null==(r=e.connectDomains)?void 0:r.length)?o:null,resourceDomains:null!=(l=null==e||null==(s=e.resourceDomains)?void 0:s.length)?l:null}),p(e))}).catch(e=>{t&&(0,f.cY)("mcp-app.body.fetched",{server:d,elapsedMs:Date.now()-n,ok:!1,threw:!0,reason:e instanceof Error?e.message.slice(0,200):String(e).slice(0,200)})}),()=>{t=!1,e.abort()}},[c.html,c.screenUrl,u,d]);let h=null!=(n=null!=(t=c.html)?t:null==m?void 0:m.html)?n:void 0,{connectDomains:x,resourceDomains:g}={...(null!=(a=c.connectDomains)?a:null==m?void 0:m.connectDomains)?{connectDomains:null!=(o=c.connectDomains)?o:null==m?void 0:m.connectDomains}:{},...(null!=(l=c.resourceDomains)?l:null==m?void 0:m.resourceDomains)?{resourceDomains:null!=(i=c.resourceDomains)?i:null==m?void 0:m.resourceDomains}:{}};return(0,r.jsxs)("section",{"data-elanous-block-kind":"mcp_app","data-elanous-tool-id":c.toolId,"data-elanous-tool-name":c.toolName,className:"rounded border border-border bg-muted/40 px-3 py-2 text-sm",children:[(0,r.jsx)("div",{className:"font-medium",children:c.toolName}),(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:c.toolId}),(0,r.jsx)("div",{className:"mt-1 break-all font-mono text-xs",children:c.screenUrl}),h&&(0,r.jsx)($,{html:h,connectDomains:x,resourceDomains:g,server:d,tool:c.toolName,toolCallId:c.toolId,toolResult:c.toolResult}),c.fallbackText&&(0,r.jsx)("p",{className:"mt-2 whitespace-pre-wrap text-sm",children:c.fallbackText})]})}let G={pre:function(e){let{children:t}=e,n=(0,s.useMemo)(()=>(function e(t){if(null==t||"boolean"==typeof t)return"";if("string"==typeof t||"number"==typeof t)return String(t);if(Array.isArray(t))return t.map(e).join("");if("object"==typeof t&&"props"in t){let n=t.props;return e(null==n?void 0:n.children)}return""})(t),[t]),a=(0,s.useMemo)(()=>(function e(t){if(null==t||"object"!=typeof t)return null;if(Array.isArray(t)){for(let n of t){let t=e(n);if(t)return t}return null}let n=t.props;if((null==n?void 0:n.className)&&"string"==typeof n.className){var r;let e=/language-([\w+-]+)/.exec(n.className);if(e)return null!=(r=e[1])?r:null}return(null==n?void 0:n.children)?e(n.children):null})(t),[t]),o=(0,s.useMemo)(()=>"string"==typeof n&&0!==n.length&&(n.length>800||n.split("\n").length>12),[n]),[l,i]=(0,s.useState)(!o),[p,h]=(0,s.useState)(!1);if(!o)return(0,r.jsx)("pre",{children:t});let x=function(e){let t=e.split("\n");return t.length<=8?e:t.slice(0,8).join("\n")+"\n…"}(n),g=n.split("\n").length,b=async()=>{try{var e;await (null==(e=navigator.clipboard)?void 0:e.writeText(n)),h(!0),(0,f.cY)("pwa.code-block.copy",{lang:a,lineCount:g}),setTimeout(()=>h(!1),1500)}catch(e){(0,f.cY)("pwa.code-block.copy-error",{reason:String(e)})}};return(0,r.jsxs)("div",{className:"my-2 overflow-hidden rounded-md border border-border bg-muted/40","data-testid":"collapsible-code-block",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2 border-b border-border bg-muted/60 px-2 py-1 text-[11px] text-muted-foreground",children:[(0,r.jsxs)("span",{className:"font-mono",children:[null!=a?a:"code"," \xb7 ",g," lines \xb7 ",n.length," chars"]}),(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[(0,r.jsxs)("button",{type:"button",onClick:()=>{b()},"aria-label":"copy code",className:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 hover:bg-muted hover:text-foreground",children:[p?(0,r.jsx)(c.A,{className:"h-3 w-3"}):(0,r.jsx)(d.A,{className:"h-3 w-3"}),p?"copied":"copy"]}),(0,r.jsxs)("button",{type:"button",onClick:()=>i(e=>!e),"aria-label":l?"collapse code":"expand code",className:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 hover:bg-muted hover:text-foreground",children:[l?(0,r.jsx)(u.A,{className:"h-3 w-3"}):(0,r.jsx)(m.A,{className:"h-3 w-3"}),l?"collapse":"show all"]})]})]}),(0,r.jsx)("pre",{className:"!my-0 overflow-x-auto !rounded-none !bg-transparent !p-2 !text-[13px]",children:l?t:x})]})}};function Q(e){let{text:t}=e;return(0,r.jsx)("div",{className:"prose prose-sm max-w-none break-words [&_pre]:bg-muted [&_pre]:p-2 [&_pre]:rounded [&_code]:font-mono [&_code]:text-xs [&_p]:my-1 [&_table]:text-xs",children:(0,r.jsx)(o.oz,{remarkPlugins:l,components:G,children:t})})}function Z(e){let{block:t}=e,[n,a]=(0,s.useState)(!1),o="running"===t.status?"⋯":"done"===t.status?"✓":"✗",l="running"===t.status?"text-muted-foreground border-border":"error"===t.status?"text-destructive border-destructive/40":"text-foreground border-border",c=!!t.args&&Object.keys(t.args).length>0,d=[t.startedAt,t.endedAt].filter(e=>"number"==typeof e).map(e=>new Date(e).toLocaleTimeString()).join(" → ");return(0,r.jsxs)("div",{"data-elanous-block-kind":"tool_use","data-elanous-tool-name":t.name,"data-elanous-tool-status":t.status,className:(0,i.cn)("rounded border bg-muted/40 px-2 py-1 text-xs font-mono",l),children:[(0,r.jsxs)("button",{type:"button",onClick:c?()=>a(!n):void 0,className:(0,i.cn)("flex w-full items-center gap-2 text-left",c?"cursor-pointer":"cursor-default"),"aria-expanded":c?n:void 0,children:[(0,r.jsx)("span",{"aria-hidden":"true",children:o}),(0,r.jsx)("span",{className:"font-semibold",children:t.name}),t.summary&&(0,r.jsx)("span",{className:"ml-1 truncate text-muted-foreground",children:t.summary}),d&&(0,r.jsx)("span",{className:"ml-auto text-muted-foreground",children:d}),c&&(0,r.jsx)("span",{className:"ml-auto text-muted-foreground","aria-hidden":"true",children:n?"▾":"▸"})]}),n&&c&&(0,r.jsx)("pre",{className:"mt-1 overflow-x-auto rounded bg-background/60 p-1.5 text-[10px] leading-tight",children:JSON.stringify(t.args,null,2)})]})}function X(e){let{blocks:t}=e;return(0,r.jsx)("div",{className:"flex flex-col gap-2",children:t.map((e,t)=>{if("text"===e.kind)return(0,r.jsx)(Q,{text:e.text},t);if("image"===e.kind){var n;return(0,r.jsx)("img",{src:e.src,alt:null!=(n=e.alt)?n:"inline image (".concat(e.mediaType,")"),className:"max-w-full rounded border border-border","data-elanous-block-kind":"image","data-elanous-media-type":e.mediaType},t)}return"tool_use"===e.kind?(0,r.jsx)(Z,{block:e},"".concat(e.id,"-").concat(t)):"mcp_app"===e.kind?(0,r.jsx)(W,{block:e},"".concat(e.toolId,"-").concat(t)):"agent_thinking"===e.kind?(0,r.jsx)(p,{block:e},"thinking-".concat(e.blockId)):"agent_status"===e.kind?(0,r.jsx)(g,{block:e},"status-".concat(e.blockId)):"agent_plan"===e.kind?(0,r.jsx)(j,{block:e},"plan-".concat(e.blockId)):"tool_diff"===e.kind?(0,r.jsx)(k,{block:e},"diff-".concat(e.blockId)):"tool_search_hits"===e.kind?(0,r.jsx)(I,{block:e},"search-".concat(e.blockId)):"tool_progress"===e.kind?(0,r.jsx)(D,{block:e},"progress-".concat(e.blockId)):"perf_session"===e.kind?(0,r.jsx)(L,{block:e},"perf-".concat(e.blockId)):null})})}function ee(e){var t,n,s,a;let{message:o}=e,l="user"===o.role,c="meta"===o.role,d="system"===o.role,u=new Date(o.timestamp).toLocaleTimeString();if(c)return(0,r.jsx)("div",{className:"px-2 py-1 text-[11px] text-muted-foreground italic",children:(0,r.jsx)("pre",{className:"whitespace-pre-wrap font-mono text-[11px]",children:o.text})});if(d){let e="error"===(null!=(a=null==(s=o.meta)?void 0:s.systemLevel)?a:"note");return(0,r.jsx)("div",{className:"px-3 py-2",children:(0,r.jsxs)("div",{className:(0,i.cn)("rounded-md border px-3 py-2 text-xs font-mono",e?"border-rose-500/60 bg-rose-500/10 text-rose-300":"border-border/60 bg-muted/40 text-muted-foreground italic"),children:[(0,r.jsxs)("div",{className:"flex items-baseline gap-2",children:[(0,r.jsx)("span",{className:(0,i.cn)("shrink-0 text-[10px] font-semibold uppercase tracking-wide",e?"text-rose-400":"text-muted-foreground/70"),children:e?"⚠ Error":"Note"}),(0,r.jsx)("pre",{className:"flex-1 whitespace-pre-wrap break-all",children:o.text})]}),(0,r.jsx)("div",{className:"mt-1 text-[10px] text-muted-foreground/80",children:u})]})})}let m=Array.isArray(o.blocks)&&o.blocks.length>0;return(0,r.jsx)("div",{className:(0,i.cn)("flex gap-3 px-4 py-3",l?"justify-end":"justify-start"),children:(0,r.jsxs)("div",{className:(0,i.cn)("max-w-[85%] rounded-lg px-3 py-2 text-sm shadow-sm",l?"bg-primary text-primary-foreground":"bg-card text-card-foreground border border-border"),children:[m?(0,r.jsx)(X,{blocks:o.blocks}):(0,r.jsx)(Q,{text:o.text}),(0,r.jsxs)("div",{className:"mt-1 flex items-center gap-2 text-[10px] text-muted-foreground",children:[(0,r.jsx)("span",{children:u}),o.terminalId&&(0,r.jsx)("span",{title:"이 메시지가 나눈 터미널",className:"rounded border border-border/60 bg-muted/60 px-1 font-mono text-[9px] leading-4",children:o.terminalId}),(null==(t=o.meta)?void 0:t.provider)&&(0,r.jsxs)("span",{title:"답한 LLM",children:["\xb7 ",o.meta.provider,o.meta.model?" \xb7 ".concat(o.meta.model):""]}),(null==(n=o.meta)?void 0:n.stopReason)&&(0,r.jsxs)("span",{children:["\xb7 ",o.meta.stopReason]})]})]})})}function et(e){return en(e)>240}function en(e){return Math.max(0,e.scrollHeight-e.clientHeight-e.scrollTop)}function er(e){var t;return null!=(t=null==e?void 0:e.querySelector('[data-slot="scroll-area-viewport"],[data-radix-scroll-area-viewport]'))?t:null}let es=["wheel","touchmove","pointerdown","keydown"];var ea=n(76588);function eo(e){let{messages:t,pending:n,tabId:o}=e,l=(0,s.useRef)(null),i=(0,s.useRef)(null),c=(0,ea.o1)("chatScroll",o);(0,s.useEffect)(()=>{let e=er(i.current);if(!e)return;let t=(0,ea.N2)(c);"number"==typeof t&&t>0&&(e.scrollTop=t)},[c]),(0,s.useEffect)(()=>{let e=er(i.current);if(!e)return;let t=null,n=()=>{t&&clearTimeout(t),t=setTimeout(()=>{(0,ea.Os)(c,e.scrollTop)},250)};return e.addEventListener("scroll",n,{passive:!0}),()=>{e.removeEventListener("scroll",n),t&&clearTimeout(t)}},[c]);let[d,u]=(0,s.useState)(!1),m=(0,s.useRef)({stuck:!0}),f=(0,s.useRef)(!1),p=(0,s.useRef)(t.length);(0,s.useEffect)(()=>{let e=t[t.length-1];t.length>p.current&&(null==e?void 0:e.role)==="user"&&(f.current=!0),p.current=t.length},[t]),(0,s.useEffect)(()=>{var e,t;let n=er(i.current),r=null==(e=l.current)?void 0:e.parentElement;if(!n||!r)return;let s=!1,a=e=>{var t;!s&&(u(et({scrollTop:n.scrollTop,scrollHeight:n.scrollHeight,clientHeight:n.clientHeight})),t=m.current,(f.current||t.stuck)&&(f.current=!1,n.scrollTo({top:n.scrollHeight,behavior:e?"auto":"smooth"})))};a(!1);let o=()=>({scrollTop:n.scrollTop,scrollHeight:n.scrollHeight,clientHeight:n.clientHeight}),c=null,d=()=>{let e=o();m.current=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:96;return{stuck:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:96;return en(e)<=t}(t,n)}}(m.current,e),u(et(e))},p=()=>{u(et(o()))},h=e=>{var t;if("keydown"!==e.type||"PageUp"===(t=e.key)||"PageDown"===t||"Home"===t||"End"===t||"ArrowUp"===t||"ArrowDown"===t||" "===t||"Spacebar"===t){if("pointerdown"===e.type){s=!0,n.scrollTo({top:n.scrollTop,behavior:"auto"});return}"function"==typeof requestAnimationFrame?(null!==c&&cancelAnimationFrame(c),c=requestAnimationFrame(()=>{c=null,d()})):d()}},x=()=>{s&&(s=!1,d())};n.addEventListener("scroll",p,{passive:!0});let g=null!=(t=i.current)?t:n;for(let e of es)g.addEventListener(e,h,{passive:!0});let b=window;null==b||b.addEventListener("pointerup",x,{passive:!0}),null==b||b.addEventListener("pointercancel",x,{passive:!0});let v=()=>{for(let e of(null!==c&&"function"==typeof cancelAnimationFrame&&(cancelAnimationFrame(c),c=null),n.removeEventListener("scroll",p),es))g.removeEventListener(e,h);null==b||b.removeEventListener("pointerup",x),null==b||b.removeEventListener("pointercancel",x)};if("undefined"==typeof ResizeObserver)return v;let j=new ResizeObserver(()=>{a(!0)});return j.observe(r),()=>{j.disconnect(),v()}},[t.length,n]);let h=(0,s.useCallback)(()=>{let e=er(i.current);m.current={stuck:!0},null==e||e.scrollTo({top:e.scrollHeight,behavior:"smooth"})},[]);return 0!==t.length||n?(0,r.jsxs)("div",{ref:i,className:"relative flex-1 min-h-0",children:[(0,r.jsx)(a.F,{className:"h-full",children:(0,r.jsxs)("div",{className:"flex flex-col gap-1 pt-2 ".concat("pb-24"),children:[t.map(e=>(0,r.jsx)(ee,{message:e},e.id)),n&&(0,r.jsx)("div",{className:"flex justify-start px-4 py-3",children:(0,r.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-border bg-card px-3 py-2 text-sm text-muted-foreground",children:[(0,r.jsx)("span",{className:"h-1.5 w-1.5 animate-pulse rounded-full bg-primary"}),"thinking…"]})}),(0,r.jsx)("div",{ref:l})]})}),d&&(0,r.jsx)("button",{type:"button",onClick:h,"data-elanous-jump-to-bottom":"true",className:"absolute bottom-3 left-1/2 -translate-x-1/2 rounded-full border border-border bg-card/95 px-3 py-1.5 text-xs shadow-lg backdrop-blur transition-colors hover:bg-accent",children:"맨 아래로 ↓"})]}):(0,r.jsxs)("div",{className:"flex flex-1 items-center justify-center p-8 text-center text-sm text-muted-foreground",children:["Start a conversation. Type ",(0,r.jsx)("code",{className:"mx-1 rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:":help"})," to see meta commands."]})}},61777:(e,t,n)=>{n.d(t,{$:()=>o});var r=n(77947);let s=/[.!?。!?]+\s*/g;function a(){return void 0!==window.speechSynthesis}function o(e){var t;let[n,o]=(0,r.useState)(!1);(0,r.useEffect)(()=>{o(a())},[]);let[,l]=(0,r.useState)({}),i=(0,r.useRef)(""),c=(0,r.useRef)(e.enabled);c.current=e.enabled;let d=null!=(t=e.maxBufferChars)?t:80,u=(0,r.useRef)(e.language);u.current=e.language,(0,r.useEffect)(()=>{var e,t;if(!n)return;let r=()=>l({});return window.speechSynthesis.getVoices(),null==(e=(t=window.speechSynthesis).addEventListener)||e.call(t,"voiceschanged",r),()=>{var e,t;null==(e=(t=window.speechSynthesis).removeEventListener)||e.call(t,"voiceschanged",r)}},[n]),(0,r.useEffect)(()=>{n&&(e.enabled||(window.speechSynthesis.cancel(),i.current=""))},[e.enabled,n]);let m=(0,r.useCallback)(e=>{if(!n||!c.current)return;let t=e.trim();if(!t)return;let r=new SpeechSynthesisUtterance(t),s=function(e){var t;if(!a()||!e)return null;let n=window.speechSynthesis.getVoices();if(0===n.length)return null;let r=e.toLowerCase(),s=n.find(e=>e.lang.toLowerCase()===r);if(s)return s;let o=r.split("-")[0];return null!=(t=n.find(e=>e.lang.toLowerCase().startsWith(o)))?t:null}(u.current);s&&(r.voice=s),u.current&&(r.lang=u.current),window.speechSynthesis.speak(r)},[n]),f=(0,r.useCallback)(e=>{if(!e||!c.current)return;i.current+=e;let{sentences:t,remainder:n}=function(e){let t,n=[],r=0;for(s.lastIndex=0;null!==(t=s.exec(e));){let s=t.index+t[0].length,a=e.slice(r,s).trim();a&&n.push(a),r=s}return{sentences:n,remainder:e.slice(r)}}(i.current);for(let e of(i.current=n,t))m(e);if(i.current.length>=d){let e=i.current;i.current="",m(e)}},[d,m]);return{pushText:f,flush:(0,r.useCallback)(()=>{let e=i.current.trim();i.current="",e&&m(e)},[m]),cancel:(0,r.useCallback)(()=>{n&&(window.speechSynthesis.cancel(),i.current="")},[n]),supported:n}}},64385:(e,t,n)=>{n.d(t,{$L:()=>i,Kz:()=>l,Vm:()=>o,kv:()=>a});let r="elanous.pwa.chat.autoRouting",s="elanous-chat-routing-changed",a={autoRouting:!1};function o(){return{autoRouting:function(e,t){try{let n=window.localStorage.getItem(e);if("1"===n)return!0;if("0"===n)return!1;return t}catch(e){return t}}(r,a.autoRouting)}}function l(e){try{window.localStorage.setItem(r,e?"1":"0")}catch(e){}window.dispatchEvent(new CustomEvent(s))}function i(e){let t=()=>e(o()),n=t=>{t.key===r&&e(o())};return window.addEventListener(s,t),window.addEventListener("storage",n),()=>{window.removeEventListener(s,t),window.removeEventListener("storage",n)}}},65333:(e,t,n)=>{n.d(t,{F:()=>d});var r=n(58443);n(77947);var s=n(564),a=n(73536),o=n(78490),l=n(76546),i=n(13230),c=n(49413);function d(e){let{className:t,children:n,...l}=e;return(0,r.jsxs)(s.V,{"data-slot":"scroll-area",className:(0,c.cn)("relative",t),...l,children:[(0,r.jsx)(a.B,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",children:n}),(0,r.jsx)(u,{}),(0,r.jsx)(o.I,{})]})}function u(e){let{className:t,orientation:n="vertical",...s}=e;return(0,r.jsx)(l.V,{"data-slot":"scroll-area-scrollbar","data-orientation":n,orientation:n,className:(0,c.cn)("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",t),...s,children:(0,r.jsx)(i.l,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}},75355:(e,t,n)=>{n.d(t,{hn:()=>a,qv:()=>o,sg:()=>l});let r="elanous.ocr.prefs",s={defaultUseLlmVision:!1,defaultPreferHandwriting:!1};function a(){if("undefined"==typeof localStorage)return{...s};try{let e=localStorage.getItem(r);if(!e)return{...s};let t=JSON.parse(e);return{defaultUseLlmVision:"boolean"==typeof t.defaultUseLlmVision?t.defaultUseLlmVision:s.defaultUseLlmVision,defaultPreferHandwriting:"boolean"==typeof t.defaultPreferHandwriting?t.defaultPreferHandwriting:s.defaultPreferHandwriting}}catch(e){return{...s}}}function o(e){if("undefined"==typeof localStorage)return{...s,...e};let t={...a(),...e};try{localStorage.setItem(r,JSON.stringify(t))}catch(e){}return t}function l(){if("undefined"==typeof localStorage)return{...s};try{localStorage.removeItem(r)}catch(e){}return{...s}}},76588:(e,t,n)=>{function r(e,t){return"".concat("elanous.pwa.snapshot.").concat(e,".").concat(t&&t.length>0?t:"singleton")}function s(){try{return window.localStorage}catch(e){return null}}function a(e){let t=s();if(!t)return null;try{let n=t.getItem(e);if(null===n)return null;return JSON.parse(n)}catch(n){try{t.removeItem(e)}catch(e){}return null}}function o(e,t){let n,r=s();if(r){try{n=JSON.stringify(t)}catch(e){return}if(!(n.length>262144))try{r.setItem(e,n)}catch(e){}}}function l(e){let t=s();if(t)try{t.removeItem(e)}catch(e){}}n.d(t,{N2:()=>a,Os:()=>o,o1:()=>r,yd:()=>l})},79935:(e,t,n)=>{n.d(t,{S:()=>d});var r=n(58443),s=n(77947),a=n(73632),o=n(65233),l=n(49413),i=n(5131),c=n(23783);function d(e){let{sessionId:t,source:n="inline",variant:d="default",className:u,showCopyIcon:m=!0}=e,[f,p]=(0,s.useState)(!1),h=(0,s.useRef)(null);(0,s.useEffect)(()=>()=>{h.current&&clearTimeout(h.current)},[]);let x=async()=>{if(!t)return;let e=await (0,i.lW)(t);(0,c.cY)("webterm.session-id-chip.copy",{sessionId:t,ok:e,source:n}),e&&(p(!0),h.current&&clearTimeout(h.current),h.current=setTimeout(()=>p(!1),1200))},g=(0,i.o)(t),b=!t,v=t?"세션 ID 전체 (".concat(t.length,"자): ").concat(t,"\n\xb7 클릭하면 자동 복사 — 단축 표시 (앞 8자 + …)\n\xb7 새 세션 fork 시 다른 ID 발급 (crypto.randomUUID v4)"):"세션 미설정";return(0,r.jsxs)("span",{role:"button",tabIndex:b?-1:0,"aria-disabled":b,onClick:b?void 0:e=>{e.stopPropagation(),x()},onKeyDown:b?void 0:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),e.stopPropagation(),x())},title:v,"aria-label":t?"세션 ID ".concat(t," 복사"):"세션 미설정","data-elanous-session-id":null!=t?t:"","data-elanous-action":"session-id-copy",className:(0,l.cn)("inline-flex items-center gap-1 rounded font-mono transition-colors select-none focus:outline-none focus:ring-1 focus:ring-ring","default"===d?"px-1 py-0.5 hover:bg-secondary":"opacity-70 hover:opacity-100 hover:bg-muted/40 px-0.5",f&&"bg-emerald-500/10 text-emerald-600 dark:text-emerald-400",b&&"cursor-not-allowed opacity-40",!b&&"cursor-copy",u),children:[(0,r.jsx)("span",{children:g}),m&&(f?(0,r.jsx)(a.A,{className:"h-3 w-3","aria-hidden":!0}):(0,r.jsx)(o.A,{className:"h-3 w-3 opacity-60","aria-hidden":!0}))]})}},83654:(e,t,n)=>{n.d(t,{rm:()=>l});var r=n(58443),s=n(77947),a=n(34015),o=n(33158);function l(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{loadStatus:n=o.gh,pollMs:l=6e4,initialStatus:i}=t,{config:c}=(0,a.Q)(),[d,u]=(0,s.useState)(void 0===i?void 0:i);if((0,s.useEffect)(()=>{let e=!1,t=async()=>{if(!c.baseUrl){e||u(null);return}let t=await n({baseUrl:c.baseUrl,...c.token?{token:c.token}:{}});e||u(t)};if(t(),l<=0)return()=>{e=!0};let r=setInterval(()=>{t()},l);return()=>{e=!0,clearInterval(r)}},[c.baseUrl,c.token,n,l]),void 0===d)return null;if(null===d)return(0,r.jsx)("div",{className:"rounded-md border border-border bg-muted/40 px-2 py-1 text-[11px] text-muted-foreground",title:"예산 상태를 읽지 못했습니다","data-elanous-pill":"budget","data-budget-status":"unread",children:"budget —"});let m="warning"===(e=d.status)||"cap-exceeded"===e;return(0,r.jsx)("div",{className:m?"rounded-md border border-amber-500/50 bg-amber-500/10 px-2 py-1 text-[11px] font-medium text-amber-700 dark:text-amber-300":"rounded-md border border-border bg-muted/40 px-2 py-1 text-[11px] text-muted-foreground",title:"".concat(d.monthYYYYMM," \xb7 ").concat(d.status),"data-elanous-pill":"budget","data-budget-status":d.status,"data-budget-emphasis":m?"true":"false",children:function(e){let t="이번 달 ".concat(function(e){let t=Number.isFinite(e)?e:0;return"$".concat(t.toFixed(2))}(e.monthSoFarUsd));return null!=e.percent&&Number.isFinite(e.percent)?"".concat(t," \xb7 ").concat(e.percent,"%"):t}(d)})}},87139:(e,t,n)=>{n.d(t,{hG:()=>c});var r=n(8476),s=n(23783);let a=new Set(["cli","pwa","tg","dc"]);function o(e){var t;let n;e.origin&&a.has(e.origin)?n=e.origin:"telegram"===e.source?n="tg":"cli"===e.source&&(n="cli");let r=(null!=(t=e.preview)?t:"").trim();return{id:e.id,msgCount:e.messageCount,lastTurnAt:e.updatedAt,...r?{lastMsgPreview:r}:{},...n?{origin:n}:{}}}class l{list(){return this.cache}start(){!this.disposed&&(this.timer||(this.scheduleTimer(),this.openEventStream(),this.forceRefresh()))}stop(){this.timer&&(clearInterval(this.timer),this.timer=null,this.currentIntervalMs=null),this.closeEventStream()}dispose(){this.disposed=!0,this.stop(),this.listeners.clear()}enterActive(){this.activeCount+=1,this.scheduleTimer();let e=!1;return()=>{e||(e=!0,this.activeCount=Math.max(0,this.activeCount-1),this.scheduleTimer())}}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}forceRefresh(){if(this.inFlight)return this.inFlight;let e=this.fetchAndStore().finally(()=>{this.inFlight=null});return this.inFlight=e,e}async forget(e){(0,s.cY)("webterm.sessions.forget",{sessionId:e}),await this.api.delete(e),await this.forceRefresh()}scheduleTimer(){if(this.disposed)return;let e=this.activeCount>0?this.opts.activeIntervalMs:this.opts.idleIntervalMs;this.currentIntervalMs===e&&this.timer||(this.timer&&(clearInterval(this.timer),this.timer=null),this.currentIntervalMs=e,this.timer=setInterval(()=>{this.forceRefresh()},e))}openEventStream(){if(this.es||this.disposed||"undefined"==typeof EventSource)return;let e=this.client.sessionStoreEventsUrl();if(e)try{let t=new EventSource(e),n=()=>{this.sseDebounce&&clearTimeout(this.sseDebounce),this.sseDebounce=setTimeout(()=>{this.forceRefresh()},500)};t.addEventListener("session.created",n),t.addEventListener("session.updated",n),t.onmessage=n,this.es=t}catch(e){this.es=null}}closeEventStream(){var e;this.sseDebounce&&(clearTimeout(this.sseDebounce),this.sseDebounce=null),null==(e=this.es)||e.close(),this.es=null}async fetchAndStore(){try{let e=await this.api.list(),t=(Array.isArray(null==e?void 0:e.sessions)?e.sessions:[]).map(o);if(function(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let r=e[n],s=t[n];if(r.id!==s.id||r.msgCount!==s.msgCount||r.lastTurnAt!==s.lastTurnAt||r.lastMsgPreview!==s.lastMsgPreview||r.origin!==s.origin)return!1}return!0}(this.cache,t))return;for(let e of(this.cache=t,this.listeners))try{e()}catch(e){}}catch(e){(0,s.cY)("webterm.sessions.fetch.error",{err:String(e)})}}constructor(e,t={activeIntervalMs:1e4,idleIntervalMs:6e4}){this.client=e,this.opts=t,this.cache=[],this.listeners=new Set,this.activeCount=0,this.timer=null,this.currentIntervalMs=null,this.inFlight=null,this.es=null,this.sseDebounce=null,this.disposed=!1,this.api=new r.jU(e)}}let i=null;function c(e){if(i&&i.client===e)return i.svc;i&&i.svc.dispose();let t=new l(e);return i={client:e,svc:t},t.start(),t}},89234:(e,t,n)=>{n.d(t,{T:()=>u});var r=n(58443),s=n(77947),a=n(77306),o=n(13851),l=n(34015),i=n(89704),c=n(23783),d=n(79609);function u(e){let{onAttached:t}=e,{config:n}=(0,l.Q)(),[u,m]=(0,s.useState)(!1),f=(0,s.useRef)(null),p=async e=>{var r;let s=null==(r=e.target.files)?void 0:r[0];if(e.target.value="",s){if(!n.baseUrl)return void i.oR.error("Daemon URL 미설정 — Settings 에서 입력");m(!0),(0,c.cY)("webterm.attach.pick",{filename:s.name,size:s.size,type:s.type});try{let e=await (0,d.v)({baseUrl:n.baseUrl,...n.token?{token:n.token}:{},file:s,filename:s.name});if(!e.ok){(0,c.cY)("webterm.attach.error",{status:e.status,detail:e.reason.slice(0,200)}),i.oR.error("업로드 실패 (".concat(e.status,")"));return}let{meta:r}=e;(0,c.cY)("webterm.attach.ok",{id:r.id,size:r.size}),i.oR.success("\uD83D\uDCCE ".concat(r.filename," (").concat((r.size/1024).toFixed(1)," kB)")),null==t||t(r)}catch(e){(0,c.cY)("webterm.attach.exception",{reason:String(e)}),i.oR.error("업로드 실패: ".concat(String(e instanceof Error?e.message:e)))}finally{m(!1)}}};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button",onClick:()=>{var e;return null==(e=f.current)?void 0:e.click()},disabled:u,"aria-label":"attach photo",title:"attach photo (camera or file)",className:"rounded p-1.5 text-muted-foreground hover:bg-accent hover:text-foreground disabled:opacity-50",children:u?(0,r.jsx)(a.A,{className:"h-3.5 w-3.5 animate-spin"}):(0,r.jsx)(o.A,{className:"h-3.5 w-3.5"})}),(0,r.jsx)("input",{ref:f,type:"file",accept:"image/*",capture:"environment",className:"hidden",onChange:p})]})}},97228:(e,t,n)=>{n.d(t,{vG:()=>a});var r=n(58443),s=n(77947);function a(e){let{children:t}=e;return!function(){let[e,t]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{"public"===new URLSearchParams(window.location.search).get("capture")&&t(!0)},[]),e}()?(0,r.jsx)(r.Fragment,{children:t}):null}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7294],{28300:(e,t,n)=>{n.d(t,{g:()=>l});var r=n(77947);let l="undefined"!=typeof document?r.useLayoutEffect:()=>{}},30084:(e,t,n)=>{n.d(t,{U:()=>o,a:()=>l});var r=n(47277);function l(e,t,n,l){var o,i,c,f,s;let d=(0,r.j)(u).current;return o=d,i=e,c=t,f=n,s=l,(o.refs[0]!==i||o.refs[1]!==c||o.refs[2]!==f||o.refs[3]!==s)&&a(d,[e,t,n,l]),d.callback}function o(e){var t,n;let l=(0,r.j)(u).current;return t=l,n=e,(t.refs.length!==n.length||t.refs.some((e,t)=>e!==n[t]))&&a(l,e),l.callback}function u(){return{callback:null,cleanup:null,refs:[]}}function a(e,t){if(e.refs=t,t.every(e=>null==e)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),null!=n){let r=Array(t.length).fill(null);for(let e=0;e<t.length;e+=1){let l=t[e];if(null!=l)switch(typeof l){case"function":{let t=l(n);"function"==typeof t&&(r[e]=t);break}case"object":l.current=n}}e.cleanup=()=>{for(let e=0;e<t.length;e+=1){let n=t[e];if(null!=n)switch(typeof n){case"function":{let t=r[e];"function"==typeof t?t():n(null);break}case"object":n.current=null}}}}}}},34420:(e,t,n)=>{function r(){}n.d(t,{t0:()=>l,tE:()=>r}),Object.freeze([]);let l=Object.freeze({})},44746:(e,t,n)=>{n.d(t,{_:()=>l});let r=parseInt(n(77947).version,10);function l(e){return r>=e}},45130:(e,t,n)=>{let r;function l(){return"undefined"!=typeof window}function o(e){return a(e)?(e.nodeName||"").toLowerCase():"#document"}function u(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function a(e){return!!l()&&(e instanceof Node||e instanceof u(e).Node)}function i(e){return!!l()&&(e instanceof Element||e instanceof u(e).Element)}function c(e){return!!l()&&(e instanceof HTMLElement||e instanceof u(e).HTMLElement)}function f(e){return!!l()&&"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof u(e).ShadowRoot)}function s(e){let{overflow:t,overflowX:n,overflowY:r,display:l}=p(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&"inline"!==l&&"contents"!==l}function d(){return null==r&&(r="undefined"!=typeof CSS&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),r}function v(e){return/^(html|body|#document)$/.test(o(e))}function p(e){return u(e).getComputedStyle(e)}function y(e){var t;if("html"===o(e))return e;let n=e.assignedSlot||e.parentNode||f(e)&&e.host||(null==(t=(a(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement);return f(n)?n.host:n}n.d(t,{$4:()=>y,L9:()=>p,Ll:()=>a,Ng:()=>f,Tc:()=>d,ZU:()=>s,eu:()=>v,mq:()=>o,sb:()=>c,vq:()=>i,zk:()=>u})},47277:(e,t,n)=>{n.d(t,{j:()=>o});var r=n(77947);let l={};function o(e,t){let n=r.useRef(l);return n.current===l&&(n.current=e(t)),n}},49255:(e,t,n)=>{n.d(t,{s:()=>f});var r=n(77947),l=n(45130),o=n(68578),u=n(28300),a=n(67123),i=n(76629);let c=r.createContext(void 0);function f(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{disabled:t=!1,focusableWhenDisabled:n,tabIndex:l=0,native:f=!0,composite:d}=e,v=r.useRef(null),p=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=r.useContext(c);if(void 0===t&&!e)throw Error((0,i.A)(16));return t}(!0),y=null!=d?d:void 0!==p,{props:b}=function(e){let{focusableWhenDisabled:t,disabled:n,composite:l=!1,tabIndex:o=0,isNativeButton:u}=e,a=l&&!1!==t,i=l&&!1===t;return{props:r.useMemo(()=>{let e={onKeyDown(e){n&&t&&"Tab"!==e.key&&e.preventDefault()}};return l||(e.tabIndex=o,!u&&n&&(e.tabIndex=t?o:-1)),(u&&(t||a)||!u&&n)&&(e["aria-disabled"]=n),u&&(!t||i)&&(e.disabled=n),e},[l,n,t,a,i,u,o])}}({focusableWhenDisabled:n,disabled:t,composite:y,tabIndex:l,isNativeButton:f}),m=r.useCallback(()=>{let e=v.current;s(e)&&y&&t&&void 0===b.disabled&&e.disabled&&(e.disabled=!1)},[t,b.disabled,y]);return(0,u.g)(m,[m]),{getButtonProps:r.useCallback(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{onClick:n,onMouseDown:r,onKeyUp:l,onKeyDown:o,onPointerDown:u,...i}=e,c=f?"button":void 0;return(0,a.v6)({type:c,onClick(e){if(t)return void e.preventDefault();null==n||n(e)},onMouseDown(e){t||null==r||r(e)},onKeyDown(e){var r;if(t||((0,a.PT)(e),null==o||o(e),e.baseUIHandlerPrevented))return;let l=e.target===e.currentTarget,u=e.currentTarget,i=s(u),c=!f&&!!((null==(r=u)?void 0:r.tagName)==="A"&&(null==r?void 0:r.href)),d=l&&(f?i:!c),v="Enter"===e.key,p=" "===e.key,b=u.getAttribute("role"),m=(null==b?void 0:b.startsWith("menuitem"))||"option"===b||"gridcell"===b;if(l&&y&&p){if(e.defaultPrevented&&m)return;e.preventDefault(),c||f&&i?(u.click(),e.preventBaseUIHandler()):d&&(null==n||n(e),e.preventBaseUIHandler());return}d&&(!f&&(p||v)&&e.preventDefault(),!f&&v&&(null==n||n(e)))},onKeyUp(e){if(!t){if((0,a.PT)(e),null==l||l(e),e.target===e.currentTarget&&f&&y&&s(e.currentTarget)&&" "===e.key)return void e.preventDefault();!e.baseUIHandlerPrevented&&(e.target!==e.currentTarget||f||y||" "!==e.key||null==n||n(e))}},onPointerDown(e){if(t)return void e.preventDefault();null==u||u(e)}},f?void 0:{role:"button"},b,i)},[t,b,y,f]),buttonRef:(0,o.K)(e=>{v.current=e,m()})}}function s(e){return(0,l.sb)(e)&&"BUTTON"===e.tagName}},63326:(e,t,n)=>{n.d(t,{$:()=>u});var r=n(77947),l=n(49255),o=n(78583);let u=r.forwardRef(function(e,t){let{render:n,className:r,disabled:u=!1,focusableWhenDisabled:a=!1,nativeButton:i=!0,style:c,...f}=e,{getButtonProps:s,buttonRef:d}=(0,l.s)({disabled:u,focusableWhenDisabled:a,native:i});return(0,o.o)("button",e,{state:{disabled:u},ref:[t,d],props:[f,s]})})},66235:(e,t,n)=>{n.d(t,{r:()=>r});function r(e,t){return e&&!t?e:!e&&t?t:e||t?{...e,...t}:void 0}},67123:(e,t,n)=>{n.d(t,{PT:()=>v,VN:()=>p,lZ:()=>u,v6:()=>o});var r=n(66235);let l={};function o(e,t,n,r,l){if(!n&&!r&&!l&&!e)return a(t);let o=a(e);return t&&(o=i(o,t)),n&&(o=i(o,n)),r&&(o=i(o,r)),l&&(o=i(o,l)),o}function u(e){if(0===e.length)return l;if(1===e.length)return a(e[0]);let t=a(e[0]);for(let n=1;n<e.length;n+=1)t=i(t,e[n]);return t}function a(e){return f(e)?{...s(e,l)}:function(e){let t={...e};for(let e in t){let n=t[e];c(e,n)&&(t[e]=d(n))}return t}(e)}function i(e,t){return f(t)?s(t,e):function(e,t){if(!t)return e;for(let n in t){let l=t[n];switch(n){case"style":e[n]=(0,r.r)(e.style,l);break;case"className":e[n]=p(e.className,l);break;default:c(n,l)?e[n]=function(e,t){return t?e?(...n)=>{let r=n[0];if(y(r)){v(r);let l=t(...n);return r.baseUIHandlerPrevented||e?.(...n),l}let l=t(...n);return e?.(...n),l}:d(t):e}(e[n],l):e[n]=l}}return e}(e,t)}function c(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),l=e.charCodeAt(2);return 111===n&&110===r&&l>=65&&l<=90&&("function"==typeof t||void 0===t)}function f(e){return"function"==typeof e}function s(e,t){return f(e)?e(t):e??l}function d(e){return e?(...t)=>{let n=t[0];return y(n)&&v(n),e(...t)}:e}function v(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function p(e,t){return t?e?t+" "+e:t:e}function y(e){return null!=e&&"object"==typeof e&&"nativeEvent"in e}},68578:(e,t,n)=>{n.d(t,{K:()=>i});var r,l=n(77947),o=n(47277);let u=(r||(r=n.t(l,2)))["useInsertionEffect".concat(Math.random().toFixed(1)).slice(0,-3)],a=u&&u!==l.useLayoutEffect?u:e=>e();function i(e){let t=(0,o.j)(c).current;return t.next=e,a(t.effect),t.trampoline}function c(){let e={next:void 0,callback:f,trampoline:function(){for(var t,n=arguments.length,r=Array(n),l=0;l<n;l++)r[l]=arguments[l];return null==(t=e.callback)?void 0:t.call(e,...r)},effect:()=>{e.callback=e.next}};return e}function f(){}},69426:(e,t,n)=>{n.d(t,{F:()=>u});var r=n(24477);let l=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,o=r.$,u=(e,t)=>n=>{var r;if((null==t?void 0:t.variants)==null)return o(e,null==n?void 0:n.class,null==n?void 0:n.className);let{variants:u,defaultVariants:a}=t,i=Object.keys(u).map(e=>{let t=null==n?void 0:n[e],r=null==a?void 0:a[e];if(null===t)return null;let o=l(t)||l(r);return u[e][o]}),c=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return void 0===r||(e[n]=r),e},{});return o(e,i,null==t||null==(r=t.compoundVariants)?void 0:r.reduce((e,t)=>{let{class:n,className:r,...l}=t;return Object.entries(l).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...a,...c}[t]):({...a,...c})[t]===n})?[...e,n,r]:e},[]),null==n?void 0:n.class,null==n?void 0:n.className)}},76629:(e,t,n)=>{n.d(t,{A:()=>r});let r=function(e,...t){let n=new URL("https://base-ui.com/production-error");return n.searchParams.set("code",e.toString()),t.forEach(e=>n.searchParams.append("args[]",e)),`Base UI error #${e}; visit ${n} for the full message.`}},78583:(e,t,n)=>{n.d(t,{o:()=>s});var r=n(76629),l=n(77947),o=n(30084),u=n(44746);function a(e){if(!l.isValidElement(e))return null;let t=e.props;return((0,u._)(19)?t?.ref:e.ref)??null}var i=n(66235),c=n(34420),f=n(67123);function s(e,t,n={}){let u=t.render,v=function(e,t={}){var n;let{className:r,style:l,render:u}=e,{state:s=c.t0,ref:d,props:v,stateAttributesMapping:p,enabled:y=!0}=t,b=y?"function"==typeof r?r(s):r:void 0,m=y?"function"==typeof l?l(s):l:void 0,h=y?function(e,t){let n={};for(let r in e){let l=e[r];if(t?.hasOwnProperty(r)){let e=t[r](l);null!=e&&Object.assign(n,e);continue}!0===l?n[`data-${r.toLowerCase()}`]="":l&&(n[`data-${r.toLowerCase()}`]=l.toString())}return n}(s,p):c.t0,g=y&&v?Array.isArray(n=v)?(0,f.lZ)(n):(0,f.v6)(void 0,n):void 0,k=y?(0,i.r)(h,g)??{}:c.t0;return("undefined"!=typeof document&&(y?Array.isArray(d)?k.ref=(0,o.U)([k.ref,a(u),...d]):k.ref=(0,o.a)(k.ref,a(u),d):(0,o.a)(null,null)),y)?(void 0!==b&&(k.className=(0,f.VN)(k.className,b)),void 0!==m&&(k.style=(0,i.r)(k.style,m)),k):c.t0}(t,n);return!1===n.enabled?null:function(e,t,n,o){if(t){if("function"==typeof t)return t(n,o);let e=(0,f.v6)(n,t.props);e.ref=n.ref;let r=t;return r?.$$typeof===d&&(r=l.Children.toArray(t)[0]),l.cloneElement(r,e)}if(e&&"string"==typeof e){var u,a;return u=e,a=n,"button"===u?(0,l.createElement)("button",{type:"button",...a,key:a.key}):"img"===u?(0,l.createElement)("img",{alt:"",...a,key:a.key}):l.createElement(u,a)}throw Error((0,r.A)(8))}(e,u,v,n.state??c.t0)}let d=Symbol.for("react.lazy")}}]);