elanous 0.2.6 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. package/.env.example +10 -7
  2. package/README.md +4 -0
  3. package/apps/pwa/out/404/index.html +1 -1
  4. package/apps/pwa/out/404.html +1 -1
  5. package/apps/pwa/out/_next/static/chunks/1105-c473ed46272fba79.js +1 -0
  6. package/apps/pwa/out/_next/static/chunks/1201-09613bce624467c0.js +1 -0
  7. package/apps/pwa/out/_next/static/chunks/1377-1efeffbbac0963ff.js +1 -0
  8. package/apps/pwa/out/_next/static/chunks/1470.98a6ab61ccb4131c.js +1 -0
  9. package/apps/pwa/out/_next/static/chunks/216-5acd01cbde4acda7.js +1 -0
  10. package/apps/pwa/out/_next/static/chunks/2330-c2f07246c8788af1.js +1 -0
  11. package/apps/pwa/out/_next/static/chunks/{3995-bee512a7063036ce.js → 2375-cb6debea56cce4fb.js} +1 -1
  12. package/apps/pwa/out/_next/static/chunks/2415.ed6428ff334c7ce2.js +1 -0
  13. package/apps/pwa/out/_next/static/chunks/2929-617f1e66a55be184.js +1 -0
  14. package/apps/pwa/out/_next/static/chunks/2977-e38442e86289f1d3.js +1 -0
  15. package/apps/pwa/out/_next/static/chunks/2982-2a2df543be3d2e5a.js +25 -0
  16. package/apps/pwa/out/_next/static/chunks/{8d0d9faf-97887ff99713b84e.js → 2ea96958-e8c7e112de50b067.js} +1 -1
  17. package/apps/pwa/out/_next/static/chunks/{5329.8b7e4bca684b6eec.js → 3403.4bc97b4066945a94.js} +2 -2
  18. package/apps/pwa/out/_next/static/chunks/3441-a1dd4acfeda14488.js +1 -0
  19. package/apps/pwa/out/_next/static/chunks/371-4ad6af55dad02ced.js +1 -0
  20. package/apps/pwa/out/_next/static/chunks/4114-3e63117452378807.js +1 -0
  21. package/apps/pwa/out/_next/static/chunks/{7633.0654fe6ea259c1ee.js → 4323.c5dfb6f503304775.js} +1 -1
  22. package/apps/pwa/out/_next/static/chunks/4836-3084c58c1725a40b.js +1 -0
  23. package/apps/pwa/out/_next/static/chunks/{2984-977cfa339fcd65a5.js → 5080-1613752891fcadb4.js} +3 -3
  24. package/apps/pwa/out/_next/static/chunks/5609-012bb3557211f07e.js +1 -0
  25. package/apps/pwa/out/_next/static/chunks/{763-7d0e1913b5074e98.js → 5791-bb82743fa6299562.js} +1 -1
  26. package/apps/pwa/out/_next/static/chunks/{4240-7153881b0b377306.js → 6062-73e68343a9814f6a.js} +1 -1
  27. package/apps/pwa/out/_next/static/chunks/6090-85a3f05f954e5697.js +1 -0
  28. package/apps/pwa/out/_next/static/chunks/6284-69db415193d5f8bd.js +1 -0
  29. package/apps/pwa/out/_next/static/chunks/6320-baac91d68843a9a6.js +1 -0
  30. package/apps/pwa/out/_next/static/chunks/6416-505ba707cacafbba.js +1 -0
  31. package/apps/pwa/out/_next/static/chunks/6725-68ab7cc0b1faf00d.js +1 -0
  32. package/apps/pwa/out/_next/static/chunks/6998-a654fe5c58271600.js +1 -0
  33. package/apps/pwa/out/_next/static/chunks/7032-f4ef698518fba61c.js +1 -0
  34. package/apps/pwa/out/_next/static/chunks/7647.2fcd30d894d5ee30.js +1 -0
  35. package/apps/pwa/out/_next/static/chunks/7673-2eda1507d38dadb8.js +1 -0
  36. package/apps/pwa/out/_next/static/chunks/7990-e12efba616f46e03.js +1 -0
  37. package/apps/pwa/out/_next/static/chunks/{91ff6dda-3b33d42d20657429.js → 8046cadf-211ca3c0e00f2b72.js} +1 -1
  38. package/apps/pwa/out/_next/static/chunks/8067-d976b441a104ab74.js +1 -0
  39. package/apps/pwa/out/_next/static/chunks/8142-744998d65d7bb17e.js +1 -0
  40. package/apps/pwa/out/_next/static/chunks/8519-5632377cce994f86.js +1 -0
  41. package/apps/pwa/out/_next/static/chunks/8619-4365e03a2862830f.js +1 -0
  42. package/apps/pwa/out/_next/static/chunks/8894-7317998f6cb97d8c.js +1 -0
  43. package/apps/pwa/out/_next/static/chunks/920-f7dceb78f1c585ef.js +1 -0
  44. package/apps/pwa/out/_next/static/chunks/9454-a3e0953307216c58.js +1 -0
  45. package/apps/pwa/out/_next/static/chunks/9651-3cd291a6fa1370d2.js +1 -0
  46. package/apps/pwa/out/_next/static/chunks/9740-8f5ff96c522b5f55.js +1 -0
  47. package/apps/pwa/out/_next/static/chunks/ae787e4c-f2998de7f1ba72a4.js +1 -0
  48. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-859cea1570b6227a.js +1 -0
  49. package/apps/pwa/out/_next/static/chunks/app/approvals/page-9aa47b0bc6d570ff.js +1 -0
  50. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-f4d2ecbbae6088d6.js +1 -0
  51. package/apps/pwa/out/_next/static/chunks/app/board/page-2053e49930c82748.js +1 -0
  52. package/apps/pwa/out/_next/static/chunks/app/botlab/page-d4b6df905f185055.js +1 -0
  53. package/apps/pwa/out/_next/static/chunks/app/bots/page-a70ba27c33003dd0.js +1 -0
  54. package/apps/pwa/out/_next/static/chunks/app/chat/page-186fc6952f027acc.js +1 -0
  55. package/apps/pwa/out/_next/static/chunks/app/consult/page-18166f885d831d3e.js +1 -0
  56. package/apps/pwa/out/_next/static/chunks/app/control/page-1c9d6cfe68b121c2.js +1 -0
  57. package/apps/pwa/out/_next/static/chunks/app/design-check/page-cbbe03c0da7b081a.js +1 -0
  58. package/apps/pwa/out/_next/static/chunks/app/editor/page-c108ff1fdb665c97.js +1 -0
  59. package/apps/pwa/out/_next/static/chunks/app/exec/page-147a328753d983e2.js +1 -0
  60. package/apps/pwa/out/_next/static/chunks/app/field/page-799395a9df7d95aa.js +1 -0
  61. package/apps/pwa/out/_next/static/chunks/app/healthz/route-859cea1570b6227a.js +1 -0
  62. package/apps/pwa/out/_next/static/chunks/app/intake/page-6a8158b71d1fe9d7.js +1 -0
  63. package/apps/pwa/out/_next/static/chunks/app/layout-9567560270857531.js +1 -0
  64. package/apps/pwa/out/_next/static/chunks/app/live/page-e7ed3d010153d818.js +1 -0
  65. package/apps/pwa/out/_next/static/chunks/app/market/page-c0c0d19d51342d3e.js +1 -0
  66. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-2e002ad8faa43291.js +1 -0
  67. package/apps/pwa/out/_next/static/chunks/app/morning/page-b672e02e4bec8deb.js +1 -0
  68. package/apps/pwa/out/_next/static/chunks/app/not-found-1ba4a5d857276334.js +1 -0
  69. package/apps/pwa/out/_next/static/chunks/app/observatory/page-9db2226f38c542fb.js +1 -0
  70. package/apps/pwa/out/_next/static/chunks/app/page-70ee65f5f7a151dc.js +1 -0
  71. package/apps/pwa/out/_next/static/chunks/app/reflection/page-0bb8e43203efb23b.js +1 -0
  72. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-092e1bcf27d751cc.js +1 -0
  73. package/apps/pwa/out/_next/static/chunks/app/sessions/page-eb52580c4b75b905.js +1 -0
  74. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-7464c1987dd76e6d.js +1 -0
  75. package/apps/pwa/out/_next/static/chunks/app/settings/page-e573437b0a1c728f.js +1 -0
  76. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-294300625e49e4d3.js +1 -0
  77. package/apps/pwa/out/_next/static/chunks/app/setup/layout-859cea1570b6227a.js +1 -0
  78. package/apps/pwa/out/_next/static/chunks/app/setup/page-085847b088675978.js +1 -0
  79. package/apps/pwa/out/_next/static/chunks/app/share/page-9fe9d38c36999eb4.js +1 -0
  80. package/apps/pwa/out/_next/static/chunks/app/showroom/page-d8ab4d1489223459.js +1 -0
  81. package/apps/pwa/out/_next/static/chunks/app/tasks/page-6141f67f531d8b6a.js +1 -0
  82. package/apps/pwa/out/_next/static/chunks/app/term/page-295a02b1026b8255.js +1 -0
  83. package/apps/pwa/out/_next/static/chunks/app/trace/page-1eb9a0e1e054209d.js +1 -0
  84. package/apps/pwa/out/_next/static/chunks/app/vault/page-82efa177a30f3741.js +1 -0
  85. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-d0be51cec4f62606.js +1 -0
  86. package/apps/pwa/out/_next/static/chunks/app/workflows/page-2e367075ffdbc062.js +1 -0
  87. package/apps/pwa/out/_next/static/chunks/app/workspace/page-647ed2b66c1d49f1.js +1 -0
  88. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-ba058c56e38f2792.js +1 -0
  89. package/apps/pwa/out/_next/static/chunks/framework-ea806bb57f2b8923.js +1 -0
  90. package/apps/pwa/out/_next/static/chunks/main-8d2302399c2c8f87.js +1 -0
  91. package/apps/pwa/out/_next/static/chunks/main-app-6870f30ea99f8346.js +1 -0
  92. package/apps/pwa/out/_next/static/chunks/pages/_app-b10928c60f0b8488.js +1 -0
  93. package/apps/pwa/out/_next/static/chunks/pages/_error-689039227d443fab.js +1 -0
  94. package/apps/pwa/out/_next/static/chunks/{webpack-37b8bf78a3c6eec5.js → webpack-e5bea36f183b25e6.js} +1 -1
  95. package/apps/pwa/out/_next/static/css/5ef72a618a8994f3.css +1 -0
  96. package/apps/pwa/out/_next/static/lywc8m_HDzH9MKSDQhyEj/_buildManifest.js +1 -0
  97. package/apps/pwa/out/approvals/index.html +1 -1
  98. package/apps/pwa/out/approvals/index.txt +22 -22
  99. package/apps/pwa/out/autopilot/index.html +1 -1
  100. package/apps/pwa/out/autopilot/index.txt +22 -22
  101. package/apps/pwa/out/board/index.html +1 -1
  102. package/apps/pwa/out/board/index.txt +22 -22
  103. package/apps/pwa/out/botlab/index.html +1 -1
  104. package/apps/pwa/out/botlab/index.txt +21 -21
  105. package/apps/pwa/out/bots/index.html +1 -1
  106. package/apps/pwa/out/bots/index.txt +21 -21
  107. package/apps/pwa/out/chat/index.html +1 -1
  108. package/apps/pwa/out/chat/index.txt +21 -21
  109. package/apps/pwa/out/consult/index.html +1 -0
  110. package/apps/pwa/out/consult/index.txt +32 -0
  111. package/apps/pwa/out/control/index.html +1 -1
  112. package/apps/pwa/out/control/index.txt +22 -22
  113. package/apps/pwa/out/design-check/index.html +1 -1
  114. package/apps/pwa/out/design-check/index.txt +22 -22
  115. package/apps/pwa/out/editor/index.html +1 -1
  116. package/apps/pwa/out/editor/index.txt +22 -22
  117. package/apps/pwa/out/exec/index.html +1 -0
  118. package/apps/pwa/out/exec/index.txt +32 -0
  119. package/apps/pwa/out/field/index.html +1 -0
  120. package/apps/pwa/out/field/index.txt +32 -0
  121. package/apps/pwa/out/healthz +1 -1
  122. package/apps/pwa/out/index.html +1 -1
  123. package/apps/pwa/out/index.txt +21 -21
  124. package/apps/pwa/out/intake/index.html +1 -1
  125. package/apps/pwa/out/intake/index.txt +22 -22
  126. package/apps/pwa/out/live/index.html +1 -1
  127. package/apps/pwa/out/live/index.txt +22 -22
  128. package/apps/pwa/out/market/index.html +1 -1
  129. package/apps/pwa/out/market/index.txt +21 -21
  130. package/apps/pwa/out/missions/placeholder/index.html +1 -1
  131. package/apps/pwa/out/missions/placeholder/index.txt +21 -21
  132. package/apps/pwa/out/morning/index.html +1 -1
  133. package/apps/pwa/out/morning/index.txt +22 -22
  134. package/apps/pwa/out/observatory/index.html +1 -1
  135. package/apps/pwa/out/observatory/index.txt +22 -22
  136. package/apps/pwa/out/reflection/index.html +1 -1
  137. package/apps/pwa/out/reflection/index.txt +22 -22
  138. package/apps/pwa/out/scheduler/index.html +1 -1
  139. package/apps/pwa/out/scheduler/index.txt +22 -22
  140. package/apps/pwa/out/sessions/index.html +1 -1
  141. package/apps/pwa/out/sessions/index.txt +21 -21
  142. package/apps/pwa/out/settings/devices/index.html +1 -1
  143. package/apps/pwa/out/settings/devices/index.txt +22 -22
  144. package/apps/pwa/out/settings/index.html +1 -1
  145. package/apps/pwa/out/settings/index.txt +22 -22
  146. package/apps/pwa/out/setup/done/index.html +1 -1
  147. package/apps/pwa/out/setup/done/index.txt +22 -22
  148. package/apps/pwa/out/setup/index.html +1 -1
  149. package/apps/pwa/out/setup/index.txt +22 -22
  150. package/apps/pwa/out/share/index.html +1 -1
  151. package/apps/pwa/out/share/index.txt +22 -22
  152. package/apps/pwa/out/showroom/index.html +1 -1
  153. package/apps/pwa/out/showroom/index.txt +21 -21
  154. package/apps/pwa/out/tasks/index.html +1 -1
  155. package/apps/pwa/out/tasks/index.txt +22 -22
  156. package/apps/pwa/out/term/index.html +1 -1
  157. package/apps/pwa/out/term/index.txt +22 -22
  158. package/apps/pwa/out/trace/index.html +1 -1
  159. package/apps/pwa/out/trace/index.txt +22 -22
  160. package/apps/pwa/out/vault/index.html +1 -1
  161. package/apps/pwa/out/vault/index.txt +22 -22
  162. package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
  163. package/apps/pwa/out/workflows/chat-ui/index.txt +22 -22
  164. package/apps/pwa/out/workflows/index.html +1 -1
  165. package/apps/pwa/out/workflows/index.txt +22 -22
  166. package/apps/pwa/out/workspace/index.html +1 -1
  167. package/apps/pwa/out/workspace/index.txt +22 -22
  168. package/apps/pwa/out/worktrees/index.html +1 -1
  169. package/apps/pwa/out/worktrees/index.txt +22 -22
  170. package/bin/elanous.cjs +107 -0
  171. package/graphs/field/field-feed.yaml +24 -0
  172. package/graphs/field/recipes.yaml +12 -0
  173. package/graphs/landing/landing-heal.yaml +3 -1
  174. package/graphs/landing/recipes.yaml +3 -0
  175. package/graphs/release/recipes.yaml +10 -0
  176. package/graphs/release/release-loop.yaml +10 -3
  177. package/graphs/test-diet/recipes.yaml +9 -0
  178. package/graphs/test-diet/test-diet.yaml +22 -0
  179. package/package.json +6 -5
  180. package/persona-presets/_index.yaml +10 -0
  181. package/persona-presets/_schema.json +146 -0
  182. package/persona-presets/dana.yaml +26 -0
  183. package/persona-presets/haru.yaml +27 -0
  184. package/persona-presets/kai.yaml +27 -0
  185. package/persona-presets/leo.yaml +27 -0
  186. package/persona-presets/mira.yaml +30 -0
  187. package/persona-presets/nari.yaml +27 -0
  188. package/persona-presets/sora.yaml +27 -0
  189. package/persona-presets/yuna.yaml +27 -0
  190. package/plugins/card-followup/README.md +13 -4
  191. package/plugins/card-followup/graphs/card-followup.yaml +3 -1
  192. package/plugins/card-followup/graphs/recipes.yaml +5 -1
  193. package/plugins/card-followup/graphs/run-step.ts +122 -18
  194. package/plugins/card-followup/graphs/sales-strategy.ts +173 -0
  195. package/plugins/card-followup/plugin.json +1 -1
  196. package/plugins/doc-draft/README.md +13 -0
  197. package/plugins/doc-draft/examples/brief-sample.json +8 -0
  198. package/plugins/doc-draft/graphs/doc-draft.yaml +14 -0
  199. package/plugins/doc-draft/graphs/recipes.yaml +9 -0
  200. package/plugins/doc-draft/graphs/run-step.ts +113 -0
  201. package/plugins/doc-draft/plugin.json +24 -0
  202. package/plugins/geo-check/README.md +3 -1
  203. package/plugins/geo-check/graphs/run-step.ts +58 -13
  204. package/plugins/geo-check/plugin.json +1 -1
  205. package/plugins/job-coach/.codex-plugin/plugin.json +1 -1
  206. package/plugins/job-coach/README.md +1 -1
  207. package/plugins/job-coach/graphs/run-step.ts +2 -2
  208. package/plugins/job-coach/plugin.json +1 -1
  209. package/plugins/job-coach/plugin.ts +1 -1
  210. package/scripts/affinity/endcard.sh +3 -2
  211. package/scripts/affinity/reframe.sh +3 -1
  212. package/scripts/ci-public-export-leak-gate.ts +48 -0
  213. package/scripts/codex-quota-alert.ts +122 -258
  214. package/scripts/coord-tracks.json +4 -4
  215. package/scripts/field-feed/deliver-node.ts +57 -0
  216. package/scripts/field-feed/feed-node.ts +67 -0
  217. package/scripts/field-feed/lib.ts +164 -0
  218. package/scripts/field-feed/reel-node.ts +24 -0
  219. package/scripts/field-feed/start.ts +62 -0
  220. package/scripts/fixtures/vflow-sample.ndjson +6 -0
  221. package/scripts/install.sh +109 -21
  222. package/scripts/landing-heal/clean-checkout.ts +114 -0
  223. package/scripts/landing-heal/run-mission.ts +38 -3
  224. package/scripts/lib/pwa-scenarios/scenarios.ts +2 -1
  225. package/scripts/persona-presets/lint.ts +79 -0
  226. package/scripts/public-export.ts +8 -4
  227. package/scripts/release-loop/baseline-from-logs.ts +92 -0
  228. package/scripts/release-loop/checklist-gate-node.ts +2 -2
  229. package/scripts/release-loop/env-known-failures.ts +31 -0
  230. package/scripts/release-loop/gate-node.ts +108 -22
  231. package/scripts/release-loop/known-issues-node.ts +159 -0
  232. package/scripts/release-loop/npm-publish-node.ts +124 -0
  233. package/scripts/release-loop/ops-upgrade-node.ts +95 -0
  234. package/scripts/release-loop/publish-node.ts +23 -1
  235. package/scripts/release-loop/release-readiness.ts +58 -0
  236. package/scripts/release-loop/shard-plan.ts +17 -0
  237. package/scripts/release-loop/unattended-release.ts +93 -0
  238. package/scripts/storyboard/storyboard.ts +167 -0
  239. package/scripts/test-diet/lib.ts +88 -0
  240. package/scripts/test-diet/node.ts +102 -0
  241. package/scripts/ux/measure-first-text.ts +102 -0
  242. package/scripts/vflow-collect.ts +20 -7
  243. package/scripts/vflow-search.ts +73 -0
  244. package/scripts/video-free-line-test-walker.ts +36 -0
  245. package/scripts/video-pipeline.ts +2 -2
  246. package/skills/explainer-video/SKILL.md +12 -9
  247. package/skills/explainer-video/engine/build.mjs +1 -1
  248. package/skills/explainer-video/engine/reel.mjs +138 -31
  249. package/skills/explainer-video/engine/reel.sh +2 -1
  250. package/skills/explainer-video/examples/elanous-0.2.5/script.json +1 -1
  251. package/skills/grill-me/SKILL.md +1 -1
  252. package/skills/omni-digest/docs/diagrams/noncode-terminal-promotion-path-2026-08-13.mmd +1 -1
  253. package/src/a2a/server.ts +2 -0
  254. package/src/acp/auth-methods.ts +30 -0
  255. package/src/acp/elanous-aware-peers.ts +30 -0
  256. package/src/acp/server.ts +96 -20
  257. package/src/agent/monad-agent-turn.ts +25 -6
  258. package/src/agent/shared-app-tools.ts +5 -3
  259. package/src/agent-substrate/review-intent.ts +6 -2
  260. package/src/agent-substrate/shard-boundary-intent.ts +70 -0
  261. package/src/auth/github-app-token.ts +4 -1
  262. package/src/autopilot/track-agent-shadow.ts +151 -0
  263. package/src/autopilot/track-agent.ts +23 -3
  264. package/src/boot/acp-server-help.ts +16 -0
  265. package/src/boot/daemon-prompt-turn.ts +31 -10
  266. package/src/boot/daemon-tools/index.ts +7 -1
  267. package/src/budget/codex-credit-pace.ts +84 -0
  268. package/src/budget/codex-credit-plan.ts +154 -0
  269. package/src/budget/codex-reset-credit-state.ts +2 -0
  270. package/src/channel-import/detect.ts +191 -0
  271. package/src/channel-import/run.ts +111 -0
  272. package/src/chat/chat-cli.ts +4 -1
  273. package/src/chat/short-question.ts +40 -0
  274. package/src/cli/agent-cli.ts +24 -15
  275. package/src/cli/ask-bare.ts +42 -0
  276. package/src/cli/cli-user-error.ts +25 -0
  277. package/src/cli/codex-credit-plan-view.ts +25 -0
  278. package/src/cli/config-test-sync.ts +4 -0
  279. package/src/cli/decisions-cli.ts +13 -3
  280. package/src/cli/dependence-gauge.ts +237 -0
  281. package/src/cli/doctor-bundle.ts +128 -0
  282. package/src/cli/doctor-cli.ts +41 -1
  283. package/src/cli/doctor-local-llm.ts +95 -0
  284. package/src/cli/doctor-modes.ts +48 -0
  285. package/src/cli/import-cli.ts +60 -0
  286. package/src/cli/intake-cli.ts +12 -2
  287. package/src/cli/intake-source-cli.ts +58 -0
  288. package/src/cli/machine-cli.ts +23 -0
  289. package/src/cli/mcp-login.ts +13 -4
  290. package/src/cli/msg-cli.ts +137 -0
  291. package/src/cli/persona-cli.ts +116 -0
  292. package/src/cli/plugin-cli.ts +25 -0
  293. package/src/cli/pr-cli.ts +36 -0
  294. package/src/cli/provider-cli.ts +5 -0
  295. package/src/cli/release-cli.ts +50 -8
  296. package/src/cli/release-run-if-ready.ts +48 -0
  297. package/src/cli/setup-cli.ts +27 -6
  298. package/src/cli/setup-recommend.ts +8 -0
  299. package/src/cli/skills-cli.ts +173 -0
  300. package/src/cli/start-cli.ts +13 -4
  301. package/src/cli/usage-cli.ts +11 -1
  302. package/src/codex/setup.ts +37 -16
  303. package/src/dashboard/index.ts +18 -2
  304. package/src/dashboard/slash-runtime/dashboard-handlers.ts +2 -2
  305. package/src/dashboard/slash-runtime/help-from-registry.ts +4 -2
  306. package/src/decisions/decision-cards.ts +291 -0
  307. package/src/decisions/decision-ledger.ts +5 -2
  308. package/src/decisions/discord-decision-cards.ts +133 -0
  309. package/src/decisions/telegram-decision-cards.ts +100 -0
  310. package/src/directives/version-at.ts +77 -0
  311. package/src/discord.ts +73 -6
  312. package/src/domains/core-tools.ts +37 -14
  313. package/src/domains/outbound-alert.ts +94 -12
  314. package/src/domains/repeated-failure.ts +1 -1
  315. package/src/error-report/report.ts +200 -0
  316. package/src/exec-requests/planner.ts +146 -0
  317. package/src/exec-requests/runner.ts +378 -0
  318. package/src/exec-requests/store.ts +78 -0
  319. package/src/field/field-feed-auto.ts +48 -0
  320. package/src/field/field-media.ts +8 -3
  321. package/src/field/field-reel.ts +203 -0
  322. package/src/grok/credential.ts +7 -5
  323. package/src/harness/aside-run-status.ts +33 -0
  324. package/src/harness/browser-verify.ts +48 -17
  325. package/src/harness/harness-cli-command.ts +25 -3
  326. package/src/harness/image-load-state.ts +21 -0
  327. package/src/harness/process-garbage.ts +45 -0
  328. package/src/hooks/error-report.ts +210 -0
  329. package/src/hooks/receiver.ts +41 -1
  330. package/src/import/apply.ts +128 -0
  331. package/src/import/plan.ts +197 -0
  332. package/src/index.ts +168 -21
  333. package/src/input-core/text-entry.ts +13 -5
  334. package/src/instance/leader.ts +13 -1
  335. package/src/intake-plane/collect-github.ts +5 -3
  336. package/src/intake-plane/collect-telegram-saved.ts +15 -3
  337. package/src/intake-plane/discord-seat-work.ts +56 -0
  338. package/src/intake-plane/intake-sources.ts +202 -0
  339. package/src/intake-plane/items.ts +28 -12
  340. package/src/intake-plane/seat-answer.ts +96 -0
  341. package/src/intake-plane/seat-doc-route.ts +221 -0
  342. package/src/intake-plane/submit-intake-work.ts +9 -1
  343. package/src/intake-plane/telegram-seat-work.ts +72 -0
  344. package/src/llm/model-defaults.ts +24 -1
  345. package/src/llm.ts +5 -4
  346. package/src/machines/machine-ledger.ts +127 -0
  347. package/src/market/pack-internal-refs.ts +28 -0
  348. package/src/market/publish.ts +31 -4
  349. package/src/maturity/feature-maturity.ts +65 -0
  350. package/src/model-tier/turn-tier.ts +24 -0
  351. package/src/msg/msg-store.ts +149 -0
  352. package/src/native-tool-catalog.ts +2 -1
  353. package/src/nexus/api/chat-fast-path-config.ts +28 -0
  354. package/src/nexus/api/consult-requests.ts +128 -0
  355. package/src/nexus/api/discord-trigger-bot.ts +3 -0
  356. package/src/nexus/api/error-reports.ts +108 -0
  357. package/src/nexus/api/exec-requests.ts +51 -0
  358. package/src/nexus/api/field-uploads.ts +40 -3
  359. package/src/nexus/api/graph-approvals-feed.ts +140 -0
  360. package/src/nexus/api/graph-approvals.ts +71 -4
  361. package/src/nexus/api/http-server.ts +82 -8
  362. package/src/nexus/api/outbound-report.ts +7 -0
  363. package/src/nexus/api/running-runs-background.ts +68 -0
  364. package/src/nexus/api/running-runs-child.ts +6 -0
  365. package/src/nexus/api/seat-requests.ts +254 -0
  366. package/src/nexus/api/share-captures.ts +91 -0
  367. package/src/nexus/api/skill-problems.ts +56 -0
  368. package/src/nexus/api/terminals.ts +24 -8
  369. package/src/nexus/api/trace-run-scan.ts +37 -0
  370. package/src/nexus/api/trace.ts +19 -3
  371. package/src/nexus/index.ts +28 -1
  372. package/src/nexus/setup-status.ts +11 -7
  373. package/src/notify/llm-budget-alert.ts +16 -10
  374. package/src/oauth/browser-availability.ts +14 -0
  375. package/src/oauth/codex-account-rotation.ts +26 -4
  376. package/src/oauth/codex-account-store.ts +20 -2
  377. package/src/oauth/codex-browser-login.ts +173 -0
  378. package/src/oauth/codex-quota-policy.ts +16 -0
  379. package/src/oauth/codex.ts +4 -1
  380. package/src/oauth/fallback-chain.ts +5 -5
  381. package/src/oauth/store.ts +42 -5
  382. package/src/onboarding/continue-here.ts +34 -0
  383. package/src/onboarding/entry-hints.ts +8 -0
  384. package/src/onboarding/full-screen-io.ts +35 -3
  385. package/src/onboarding/help/skills.md +1 -1
  386. package/src/onboarding/non-interactive.ts +1 -0
  387. package/src/onboarding/subscription-hint.ts +27 -0
  388. package/src/onboarding/web-first.ts +90 -0
  389. package/src/onboarding.ts +287 -26
  390. package/src/persona/presets.ts +105 -0
  391. package/src/plugins/maker/node-install.ts +92 -0
  392. package/src/plugins/maker/node-maker.ts +139 -0
  393. package/src/plugins/maker/plugin-maker.ts +19 -7
  394. package/src/policy/llm-policy.ts +268 -0
  395. package/src/prompt-library/session-guidance.ts +7 -1
  396. package/src/prompt-library/universal-preamble.ts +2 -2
  397. package/src/relay/relay-cli.ts +20 -0
  398. package/src/relay/relay-server.ts +220 -0
  399. package/src/release-loop/checklist.ts +37 -13
  400. package/src/self-dev/decompose.ts +1 -0
  401. package/src/self-dev/dev-pipeline.ts +6 -3
  402. package/src/self-dev/orchestrate.ts +18 -11
  403. package/src/self-dev/run-record-mirror.ts +44 -0
  404. package/src/self-dev/run-store.ts +12 -3
  405. package/src/self-implement/harness-policy-gates.ts +4 -1
  406. package/src/self-implement/report-origin.ts +12 -1
  407. package/src/session/chat.ts +17 -5
  408. package/src/shell-env-bootstrap.ts +44 -7
  409. package/src/skills/connect-claude-plugin.ts +142 -0
  410. package/src/skills/connect.ts +70 -0
  411. package/src/skills/index.ts +29 -1
  412. package/src/skills/repair.ts +124 -0
  413. package/src/skills/runner.ts +11 -2
  414. package/src/skills/shared-agent-skill-roots.ts +25 -0
  415. package/src/skills/trigger-extract.ts +1 -1
  416. package/src/steward/failure-streak.ts +78 -0
  417. package/src/steward/steward-cards.ts +24 -0
  418. package/src/steward/triage-budget.ts +127 -0
  419. package/src/steward/triage-plan.ts +75 -0
  420. package/src/steward/triage.ts +244 -42
  421. package/src/task-cards/card-store.ts +1 -1
  422. package/src/task-orchestrator/surfaces/pod-command-job.ts +16 -8
  423. package/src/task-orchestrator/surfaces/pod-ledger-collect.ts +11 -5
  424. package/src/task-orchestrator/surfaces/pod-ledger-events.ts +68 -0
  425. package/src/task-orchestrator/surfaces/self-implement-pod.ts +78 -4
  426. package/src/telegram-commands.ts +13 -0
  427. package/src/telegram.ts +72 -2
  428. package/src/tool-runtime/elanous-skills-list-runtime.ts +3 -3
  429. package/src/tool-runtime/self-cognition-runtimes.ts +160 -2
  430. package/src/user-config.ts +189 -15
  431. package/src/version/packed-revision.json +1 -1
  432. package/src/video-pipeline/recipes/character.ts +42 -5
  433. package/src/video-pipeline/recipes/ffmpeg.ts +1 -1
  434. package/src/video-pipeline/recipes/free-line.ts +16 -3
  435. package/src/video-pipeline/recipes/remote.ts +7 -1
  436. package/src/video-pipeline/vflow-reference.ts +109 -0
  437. package/apps/pwa/out/_next/static/chunks/1169-696263ac7af8c4d4.js +0 -1
  438. package/apps/pwa/out/_next/static/chunks/1883.c91a2648af4842fd.js +0 -1
  439. package/apps/pwa/out/_next/static/chunks/1947-9d64872eeb9cfdec.js +0 -1
  440. package/apps/pwa/out/_next/static/chunks/2808-dc06482994b40f70.js +0 -1
  441. package/apps/pwa/out/_next/static/chunks/3165-95515ca5f299a120.js +0 -1
  442. package/apps/pwa/out/_next/static/chunks/3190-e9282753e7ebde85.js +0 -1
  443. package/apps/pwa/out/_next/static/chunks/4259-99614149577e77cb.js +0 -1
  444. package/apps/pwa/out/_next/static/chunks/4283-329eabeaf233e6cd.js +0 -1
  445. package/apps/pwa/out/_next/static/chunks/4328-cb5058b1acc2de5e.js +0 -25
  446. package/apps/pwa/out/_next/static/chunks/4801-ecee6ef62b349b18.js +0 -1
  447. package/apps/pwa/out/_next/static/chunks/5110-8058791dd25a2e14.js +0 -1
  448. package/apps/pwa/out/_next/static/chunks/5330-c41e9670f594c38f.js +0 -1
  449. package/apps/pwa/out/_next/static/chunks/5423-e95fd125d1794349.js +0 -1
  450. package/apps/pwa/out/_next/static/chunks/5478-b5eae07dc79ea619.js +0 -1
  451. package/apps/pwa/out/_next/static/chunks/5787-96ee6642b9a661e5.js +0 -1
  452. package/apps/pwa/out/_next/static/chunks/6448-79d72368589f98bc.js +0 -1
  453. package/apps/pwa/out/_next/static/chunks/6522-9866c002b5531836.js +0 -1
  454. package/apps/pwa/out/_next/static/chunks/6729-b4a558b7aa891e0c.js +0 -1
  455. package/apps/pwa/out/_next/static/chunks/6969-cb03f9410b7d2e03.js +0 -1
  456. package/apps/pwa/out/_next/static/chunks/7007-3b9861091bb8dd21.js +0 -1
  457. package/apps/pwa/out/_next/static/chunks/7930-8dc7e20fc6fc19ca.js +0 -1
  458. package/apps/pwa/out/_next/static/chunks/8071-187edbc22a86741f.js +0 -1
  459. package/apps/pwa/out/_next/static/chunks/8198-d4101ad70cb9a579.js +0 -1
  460. package/apps/pwa/out/_next/static/chunks/8250.4a2c5553a07cdf47.js +0 -1
  461. package/apps/pwa/out/_next/static/chunks/8293-123b91e7b0330dc0.js +0 -1
  462. package/apps/pwa/out/_next/static/chunks/8296-d6d5d87dfa911d41.js +0 -1
  463. package/apps/pwa/out/_next/static/chunks/8305-603963c33ee8eec3.js +0 -1
  464. package/apps/pwa/out/_next/static/chunks/8612-4a0066f20951b8fd.js +0 -1
  465. package/apps/pwa/out/_next/static/chunks/9181-cf4e1b61c4783f92.js +0 -1
  466. package/apps/pwa/out/_next/static/chunks/9262-26c2ecbd5a67e4a2.js +0 -1
  467. package/apps/pwa/out/_next/static/chunks/9328-45abdebce4fbecb7.js +0 -1
  468. package/apps/pwa/out/_next/static/chunks/9355-dbc67205adf8745f.js +0 -1
  469. package/apps/pwa/out/_next/static/chunks/9763.255b90dd69875689.js +0 -1
  470. package/apps/pwa/out/_next/static/chunks/9933-66d31ec25c0231af.js +0 -1
  471. package/apps/pwa/out/_next/static/chunks/app/_not-found/page-bd06fb55f4da0381.js +0 -1
  472. package/apps/pwa/out/_next/static/chunks/app/approvals/page-4e586142da455a25.js +0 -1
  473. package/apps/pwa/out/_next/static/chunks/app/autopilot/page-889ad5cddcf45b0d.js +0 -1
  474. package/apps/pwa/out/_next/static/chunks/app/board/page-47ba401d56572c27.js +0 -1
  475. package/apps/pwa/out/_next/static/chunks/app/botlab/page-0b54f9c83458e038.js +0 -1
  476. package/apps/pwa/out/_next/static/chunks/app/bots/page-4fcc296ef6c8ed90.js +0 -1
  477. package/apps/pwa/out/_next/static/chunks/app/chat/page-fe9fda494a87f4e5.js +0 -1
  478. package/apps/pwa/out/_next/static/chunks/app/control/page-f9642e25ce129590.js +0 -1
  479. package/apps/pwa/out/_next/static/chunks/app/design-check/page-e1063e8ba5f3e2e7.js +0 -1
  480. package/apps/pwa/out/_next/static/chunks/app/editor/page-9d0df30027d8aa9d.js +0 -1
  481. package/apps/pwa/out/_next/static/chunks/app/healthz/route-bd06fb55f4da0381.js +0 -1
  482. package/apps/pwa/out/_next/static/chunks/app/intake/page-d97adf2c9455b8d0.js +0 -1
  483. package/apps/pwa/out/_next/static/chunks/app/layout-236b80d202110362.js +0 -1
  484. package/apps/pwa/out/_next/static/chunks/app/live/page-21a30f35f1a276ad.js +0 -1
  485. package/apps/pwa/out/_next/static/chunks/app/market/page-b1a5be357c4fa25d.js +0 -1
  486. package/apps/pwa/out/_next/static/chunks/app/missions/[id]/page-1705a60303f7f573.js +0 -1
  487. package/apps/pwa/out/_next/static/chunks/app/morning/page-76b337c11ad0e237.js +0 -1
  488. package/apps/pwa/out/_next/static/chunks/app/not-found-7c0f85fbb56f64c6.js +0 -1
  489. package/apps/pwa/out/_next/static/chunks/app/observatory/page-65ca16b20617b44d.js +0 -1
  490. package/apps/pwa/out/_next/static/chunks/app/page-e7f9b8fc29411c1d.js +0 -1
  491. package/apps/pwa/out/_next/static/chunks/app/reflection/page-92ea6213d1aeec04.js +0 -1
  492. package/apps/pwa/out/_next/static/chunks/app/scheduler/page-a913a005aacb5476.js +0 -1
  493. package/apps/pwa/out/_next/static/chunks/app/sessions/page-2d78804a40dfdef6.js +0 -1
  494. package/apps/pwa/out/_next/static/chunks/app/settings/devices/page-08a99148e780ac00.js +0 -1
  495. package/apps/pwa/out/_next/static/chunks/app/settings/page-deb674e7ed36f815.js +0 -1
  496. package/apps/pwa/out/_next/static/chunks/app/setup/done/page-49f8de0534d192d7.js +0 -1
  497. package/apps/pwa/out/_next/static/chunks/app/setup/layout-bd06fb55f4da0381.js +0 -1
  498. package/apps/pwa/out/_next/static/chunks/app/setup/page-ba162a28d2176e18.js +0 -1
  499. package/apps/pwa/out/_next/static/chunks/app/share/page-1ff1a37b550ab41a.js +0 -1
  500. package/apps/pwa/out/_next/static/chunks/app/showroom/page-ccaa698f56c0fbdb.js +0 -1
  501. package/apps/pwa/out/_next/static/chunks/app/tasks/page-53b944082de1d7db.js +0 -1
  502. package/apps/pwa/out/_next/static/chunks/app/term/page-9b70adf1552789bf.js +0 -1
  503. package/apps/pwa/out/_next/static/chunks/app/trace/page-30d482aa63241fe8.js +0 -1
  504. package/apps/pwa/out/_next/static/chunks/app/vault/page-aecf786f54651d8a.js +0 -1
  505. package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/page-6ab9b62c7b6e08f2.js +0 -1
  506. package/apps/pwa/out/_next/static/chunks/app/workflows/page-08949735455e0c9a.js +0 -1
  507. package/apps/pwa/out/_next/static/chunks/app/workspace/page-a1479005234a46c2.js +0 -1
  508. package/apps/pwa/out/_next/static/chunks/app/worktrees/page-c3890e90bd232732.js +0 -1
  509. package/apps/pwa/out/_next/static/chunks/beb5cf10-9adcc10b83930090.js +0 -1
  510. package/apps/pwa/out/_next/static/chunks/framework-d68d41c88e05c801.js +0 -1
  511. package/apps/pwa/out/_next/static/chunks/main-app-11c63971b7a9593b.js +0 -1
  512. package/apps/pwa/out/_next/static/chunks/main-d09452353bd0d9cc.js +0 -1
  513. package/apps/pwa/out/_next/static/chunks/pages/_app-184d727cebeca767.js +0 -1
  514. package/apps/pwa/out/_next/static/chunks/pages/_error-21bbbbac99b720b1.js +0 -1
  515. package/apps/pwa/out/_next/static/css/eaa74e8bb2f62269.css +0 -1
  516. package/apps/pwa/out/_next/static/qMI0jnlZaBjjm4aIDYNGM/_buildManifest.js +0 -1
  517. /package/apps/pwa/out/_next/static/{qMI0jnlZaBjjm4aIDYNGM → lywc8m_HDzH9MKSDQhyEj}/_ssgManifest.js +0 -0
@@ -17,7 +17,7 @@ export function run(bin: string, args: readonly string[], timeoutMs = 180_000):
17
17
  ok: r.status === 0,
18
18
  code: r.status,
19
19
  signal: r.signal ?? null,
20
- err: (r.stderr ?? '').trim(),
20
+ err: r.stderr?.trim() || r.error?.message || '',
21
21
  out: (r.stdout ?? '').trim(),
22
22
  };
23
23
  }
@@ -11,6 +11,7 @@
11
11
  */
12
12
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
13
13
  import { join } from 'node:path';
14
+ import { spawnSync } from 'node:child_process';
14
15
  import { ffmpeg, probeDuration, run } from './ffmpeg.js';
15
16
  import { inspectDeliverables } from './shipcheck.js';
16
17
  import type { Recipe, RecipeCtx, RecipeResult } from './types.js';
@@ -110,6 +111,19 @@ export const placeClips: Recipe = async (ctx) => {
110
111
  };
111
112
 
112
113
  // ══ ⑨ overlay — 그 «위» 자막 층 (free: ffmpeg-ass) ═══════════════════════
114
+ /** 설치된 한글 폰트를 실제 언어 지원으로 확인한다. fontconfig 의 기본 폰트 폴백만 믿지 않는다. */
115
+ export function koreanCaptionFont(): { path: string; family: string } | null {
116
+ const apple = ['/System/Library/Fonts/AppleSDGothicNeo.ttc',
117
+ '/System/Library/Fonts/Supplemental/AppleGothic.ttf'].find(existsSync);
118
+ if (apple) return { path: apple, family: 'AppleSDGothicNeo' };
119
+ const match = spawnSync('fc-match', ['-f', '%{family}\t%{file}\t%{lang}\n', ':lang=ko'],
120
+ { encoding: 'utf8', timeout: 10_000 });
121
+ if (match.status !== 0) return null;
122
+ const [families, path, langs] = (match.stdout ?? '').trim().split('\t');
123
+ if (!families || !path || !langs?.split('|').includes('ko') || !existsSync(path)) return null;
124
+ return { path, family: families.split(',')[0]!.trim() };
125
+ }
126
+
113
127
  export const drawCaptions: Recipe = async (ctx) => {
114
128
  const edlJson = need<string>(ctx, 'edl_json');
115
129
  if (!edlJson) return missing('edl_json');
@@ -119,8 +133,7 @@ export const drawCaptions: Recipe = async (ctx) => {
119
133
  cuts = j.cuts; W = j.w ?? W; H = j.h ?? H; // ⛔ 자막 틀은 «조립이 쓴 캔버스»를 따라간다
120
134
  } catch (e) { return { outcome: 'error', note: `edl 을 못 읽었다: ${(e as Error).message}` }; }
121
135
 
122
- const font = ['/System/Library/Fonts/AppleSDGothicNeo.ttc',
123
- '/System/Library/Fonts/Supplemental/AppleGothic.ttf'].find((f) => existsSync(f));
136
+ const font = koreanCaptionFont();
124
137
  if (!font) {
125
138
  // ⛔ 폰트가 없으면 drawtext/ass 가 «조용히» 빈 층을 만든다 — 그것을 성공으로 내지 않는다.
126
139
  return { outcome: 'unmeasurable', note: '한글 폰트를 못 찾았다 — 자막을 «그릴 수 없다»(실패가 아니라 못 함)' };
@@ -146,7 +159,7 @@ export const drawCaptions: Recipe = async (ctx) => {
146
159
  '[V4+ Styles]',
147
160
  'Format: Name,Fontname,Fontsize,PrimaryColour,OutlineColour,BackColour,Bold,BorderStyle,Outline,Shadow,Alignment,MarginL,MarginR,MarginV,Encoding',
148
161
  // ⛔ 크기·여백을 «캔버스에 비례»로 — 고정값이면 세로 영상에서 글자가 작아지고 여백이 어긋난다.
149
- `Style: Default,AppleSDGothicNeo,${Math.round(H * 0.045)},&H00FFFFFF,&H00000000,&H80000000,1,1,3,1,2,`
162
+ `Style: Default,${font.family},${Math.round(H * 0.045)},&H00FFFFFF,&H00000000,&H80000000,1,1,3,1,2,`
150
163
  + `${Math.round(W * 0.07)},${Math.round(W * 0.07)},${Math.round(H * 0.08)},1`, '',
151
164
  '[Events]',
152
165
  'Format: Layer,Start,End,Style,Name,MarginL,MarginR,MarginV,Effect,Text',
@@ -49,6 +49,9 @@ export function sshRun(host: string, cmd: string, timeoutMs = 1_800_000): Remote
49
49
  `bash -lc ${shq(cmd)}`], timeoutMs);
50
50
  const seconds = Math.round((Date.now() - t0) / 1000);
51
51
  if (r.ok) return { kind: 'ok', seconds };
52
+ if (r.code == null && r.signal == null) {
53
+ return { kind: 'unmeasurable', why: `${host} 에 «못 붙었다» — ssh 를 실행할 수 없다(${r.err || '종료 코드 없음'})`, seconds };
54
+ }
52
55
  // ⛔ ssh 자신이 못 붙은 것(255)과 «원격 명령이 실패한 것»을 섞지 않는다.
53
56
  if (r.code === 255 || r.signal !== null) {
54
57
  return { kind: 'unmeasurable', why: `${host} 에 «못 붙었다» — ${r.err.split('\n')[0] || `code=${r.code} signal=${r.signal}`}`, seconds };
@@ -61,7 +64,10 @@ export function scpFrom(host: string, remotePath: string, localPath: string): Re
61
64
  mkdirSync(join(localPath, '..'), { recursive: true });
62
65
  const r = run('scp', ['-o', 'BatchMode=yes', '-o', 'ConnectTimeout=10', `${host}:${remotePath}`, localPath], 600_000);
63
66
  if (r.ok) return { kind: 'ok', out: localPath };
64
- if (r.code === 255) return { kind: 'unmeasurable', why: `${host} 에 «못 붙었다»` };
67
+ if (r.code == null && r.signal == null) {
68
+ return { kind: 'unmeasurable', why: `${host} 에 «못 붙었다» — scp 를 실행할 수 없다(${r.err || '종료 코드 없음'})` };
69
+ }
70
+ if (r.code === 255 || r.signal !== null) return { kind: 'unmeasurable', why: `${host} 에 «못 붙었다»` };
65
71
  return { kind: 'error', why: `가져오기 실패: ${r.err.split('\n')[0]}` };
66
72
  }
67
73
 
@@ -0,0 +1,109 @@
1
+ import { readFileSync } from 'node:fs';
2
+
3
+ export interface VflowPromptRow {
4
+ url: string;
5
+ model: string;
6
+ category: string;
7
+ name: string;
8
+ description: string;
9
+ prompt: string;
10
+ keywords: string[];
11
+ author: string | null;
12
+ authorUrl: string | null;
13
+ spec?: {
14
+ duration?: string;
15
+ camera?: string[];
16
+ lighting?: string[];
17
+ mood?: string[];
18
+ difficulty?: string;
19
+ promptLanguage?: string;
20
+ includes?: string[];
21
+ } | null;
22
+ video?: {
23
+ url?: string;
24
+ isoDuration?: string;
25
+ resolution?: string;
26
+ aspect?: string;
27
+ } | null;
28
+ }
29
+
30
+ export interface VflowQuery {
31
+ model?: string;
32
+ category?: string;
33
+ terms?: readonly string[];
34
+ techniques?: readonly string[];
35
+ camera?: string | readonly string[];
36
+ lighting?: string;
37
+ mood?: string;
38
+ maxSeconds?: number;
39
+ limit?: number;
40
+ }
41
+
42
+ export type VflowSearchResult =
43
+ | { available: true; rows: VflowPromptRow[]; read: number; skipped: number; matches: number }
44
+ | { available: false; reason: string };
45
+
46
+ const isRecord = (value: unknown): value is Record<string, unknown> =>
47
+ typeof value === 'object' && value !== null && !Array.isArray(value);
48
+ // ⚠️ 원천은 «모르는 칸»을 null 로 낸다(10-01 전수: spec.duration·video.isoDuration 이 53% null) — null 을 거부하면 줄째로 버려진다.
49
+ const optionalString = (value: unknown): boolean => value == null || typeof value === 'string';
50
+ const optionalStrings = (value: unknown): boolean =>
51
+ value == null || (Array.isArray(value) && value.every((item) => typeof item === 'string'));
52
+
53
+ function isPromptRow(value: unknown): value is VflowPromptRow {
54
+ if (!isRecord(value)) return false;
55
+ if (!['url', 'model', 'category', 'name', 'description', 'prompt'].every((field) => typeof value[field] === 'string')
56
+ || !Array.isArray(value.keywords) || !value.keywords.every((item: unknown) => typeof item === 'string')
57
+ || !(typeof value.author === 'string' || value.author === null)
58
+ || !(typeof value.authorUrl === 'string' || value.authorUrl === null)) return false;
59
+ const spec = value.spec;
60
+ if (spec != null && (!isRecord(spec)
61
+ || !['duration', 'difficulty', 'promptLanguage'].every((field) => optionalString(spec[field]))
62
+ || !['camera', 'lighting', 'mood', 'includes'].every((field) => optionalStrings(spec[field])))) return false;
63
+ const video = value.video;
64
+ if (video != null && (!isRecord(video)
65
+ || !['url', 'isoDuration', 'resolution', 'aspect'].every((field) => optionalString(video[field])))) return false;
66
+ return true;
67
+ }
68
+
69
+ /** Local-only search. Missing/unreadable data is distinct from a readable DB with zero matches. */
70
+ export function searchVflowReferences(file: string, query: VflowQuery): VflowSearchResult {
71
+ let content: string;
72
+ try {
73
+ content = readFileSync(file, 'utf8');
74
+ } catch (error) {
75
+ return { available: false, reason: (error as Error).message };
76
+ }
77
+ let read = 0;
78
+ let skipped = 0;
79
+ const matches: VflowPromptRow[] = [];
80
+ const contains = (values: readonly string[] | undefined, needle: string | undefined) =>
81
+ !needle || !!values?.some((value) => value.toLowerCase().includes(needle.toLowerCase()));
82
+ for (const line of content.split(/\r?\n/)) {
83
+ if (!line.trim()) continue;
84
+ read++;
85
+ let value: unknown;
86
+ try { value = JSON.parse(line); } catch { skipped++; continue; }
87
+ if (!isPromptRow(value)) { skipped++; continue; }
88
+ const row = value;
89
+ const prompt = row.prompt.toLowerCase();
90
+ const keywords = row.keywords.map((word) => word.toLowerCase());
91
+ const fields = [prompt, row.name.toLowerCase(), row.description.toLowerCase(), ...keywords];
92
+ const techniqueFields = [prompt, ...keywords];
93
+ if (query.model && !row.model.toLowerCase().startsWith(query.model.toLowerCase())) continue;
94
+ if (query.category && row.category.toLowerCase() !== query.category.toLowerCase()) continue;
95
+ if (query.terms && !query.terms.every((term) => fields.some((field) => field.includes(term.toLowerCase())))) continue;
96
+ if (query.techniques && !query.techniques.every((term) => techniqueFields.some((field) => field.includes(term.toLowerCase())))) continue;
97
+ const cameras = typeof query.camera === 'string' ? [query.camera] : query.camera;
98
+ if (cameras?.length && !cameras.some((camera) => contains(row.spec?.camera, camera))) continue;
99
+ if (!contains(row.spec?.lighting, query.lighting)
100
+ || !contains(row.spec?.mood, query.mood)) continue;
101
+ if (query.maxSeconds !== undefined) {
102
+ const seconds = row.spec?.duration?.match(/^\s*(\d+(?:\.\d+)?)s\s*$/i);
103
+ if (!seconds || Number(seconds[1]) > query.maxSeconds) continue;
104
+ }
105
+ matches.push(row);
106
+ }
107
+ matches.sort((a, b) => a.prompt.length - b.prompt.length);
108
+ return { available: true, rows: matches.slice(0, query.limit ?? 5), matches: matches.length, read, skipped };
109
+ }
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1169],{2874:(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}},29274:(t,n,e)=>{e.d(n,{A:()=>a});var r=e(2874),i=e(98929),u=e(32353),o=e(94917);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}},32353:(t,n,e)=>{e.d(n,{A:()=>r});function r(t){return(t()-.5)*1e-6}},44824:(t,n,e)=>{e.d(n,{A:()=>r});let r=(0,e(42735).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"}]])},72356:(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}},78217:(t,n,e)=>{e.d(n,{A:()=>s});var r=e(2874),i=e(98929),u=e(32353);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}},94917:(t,n,e)=>{e.d(n,{A:()=>s,x:()=>u,y:()=>o});var r=e(43872),i=e(16412);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)}}}},95680:(t,n,e)=>{e.d(n,{n5:()=>C});var r=e(43872),i=e(42683),u=e(41489),o=e(91022),a=e(83499),s=e(95705);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)}},98649:(t,n,e)=>{e.d(n,{A:()=>a});var r=e(98929),i=e(32353);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}},98929:(t,n,e)=>{e.d(n,{A:()=>r});function r(t){return function(){return t}}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1883],{31883:(e,t,r)=>{function a(e,t){let r=Error(t);return r.code=e,r}async function n(e){if(!e.type.startsWith("video/"))throw a("unsupported","not a video file: ".concat(e.type||"(unknown)"));let t=URL.createObjectURL(e),r=document.createElement("video");r.src=t,r.muted=!0,r.preload="auto",r.playsInline=!0;try{var n;await new Promise((e,t)=>{r.addEventListener("error",()=>t(a("decode","video decode error")),{once:!0}),r.addEventListener("loadedmetadata",()=>e(),{once:!0})});let t=(n=r.duration,!Number.isFinite(n)||n<=0?0:n<2?Math.max(.05,.1*n):1);await new Promise((e,n)=>{r.addEventListener("error",()=>n(a("seek","video seek error")),{once:!0}),r.addEventListener("seeked",()=>e(),{once:!0});try{r.currentTime=t}catch(e){n(a("seek",e instanceof Error?e.message:String(e)))}});let o=r.videoWidth,i=r.videoHeight;if(0===o||0===i)throw a("no-frame","video has zero dimensions");let d=document.createElement("canvas");d.width=o,d.height=i;let c=d.getContext("2d");if(!c)throw a("decode","canvas 2d context unavailable");return c.drawImage(r,0,0,o,i),{frameDataUrl:d.toDataURL("image/png"),durationSec:Number.isFinite(r.duration)?r.duration:0,widthPx:o,heightPx:i,mimeType:e.type}}finally{URL.revokeObjectURL(t),r.removeAttribute("src");try{r.load()}catch(e){}}}r.d(t,{extractKeyFrame:()=>n})}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1947],{13179:(e,t,r)=>{r.d(t,{MJ:()=>d,Tx:()=>i,an:()=>a,ax:()=>s,ub:()=>l});var n=r(82003);let i={tabs:[],activeId:null,order:[],frozenIds:[]};function a(e,t){switch(t.type){case"addTab":{var r;let i=t.tab,a=null==(r=t.activate)||r;if((0,n.k)(i.kind)){let t=e.tabs.find(e=>e.kind===i.kind);if(t)return a?{...e,activeId:t.id}:e}if(e.tabs.some(e=>e.id===i.id))return a?{...e,activeId:i.id}:e;let d=[...e.tabs,i],s=[...e.order,i.id];return{...e,tabs:d,order:s,activeId:a?i.id:e.activeId}}case"closeTab":{if(0>e.tabs.findIndex(e=>e.id===t.id))return e;let r=e.tabs.filter(e=>e.id!==t.id),n=e.order.filter(e=>e!==t.id),i=e.frozenIds.filter(e=>e!==t.id),a=e.activeId;if(e.activeId===t.id)if(0===n.length)a=null;else{let r=Math.min(Math.max(e.order.indexOf(t.id)-1,0),n.length-1);a=n[r]}return{...e,tabs:r,order:n,frozenIds:i,activeId:a}}case"activateTab":{if(!e.tabs.some(e=>e.id===t.id)||e.activeId===t.id)return e;let r=e.frozenIds.filter(e=>e!==t.id);return{...e,activeId:t.id,frozenIds:r}}case"reorderTab":{if(!e.tabs.some(e=>e.id===t.id))return e;let r=e.order.indexOf(t.id);if(r<0)return e;let n=Math.max(0,Math.min(t.toIndex,e.order.length-1));if(n===r)return e;let i=[...e.order];return i.splice(r,1),i.splice(n,0,t.id),{...e,order:i}}case"updateTab":{let r=e.tabs.findIndex(e=>e.id===t.id);if(r<0)return e;let n=e.tabs[r],i={};if("chat"===n.kind&&("sessionId"in t.patch&&"string"==typeof t.patch.sessionId&&(i.sessionId=t.patch.sessionId),"title"in t.patch&&(i.title=t.patch.title)),0===Object.keys(i).length)return e;let a={...n,...i},d=[...e.tabs];return d[r]=a,{...e,tabs:d}}case"freezeTab":if(!e.tabs.some(e=>e.id===t.id)||e.activeId===t.id||e.frozenIds.includes(t.id))return e;return{...e,frozenIds:[...e.frozenIds,t.id]};case"unfreezeTab":if(!e.frozenIds.includes(t.id))return e;return{...e,frozenIds:e.frozenIds.filter(e=>e!==t.id)};case"replace":return t.state}}function d(e){var t;return{id:e.id,kind:"chat",sessionId:e.sessionId,...void 0!==e.title?{title:e.title}:{},createdAt:null!=(t=e.createdAt)?t:Date.now()}}function s(e){var t;return{id:e.id,kind:e.kind,createdAt:null!=(t=e.createdAt)?t:Date.now()}}function l(e){let t=new Map(e.tabs.map(e=>[e.id,e])),r=[];for(let n of e.order){let e=t.get(n);e&&r.push(e)}return r}},21947:(e,t,r)=>{r.d(t,{$M:()=>p,hA:()=>h,tg:()=>v});var n=r(35563),i=r(19707),a=r(13179);let d="elanous.pwa.workspace",s=new Set(["chat","term","intake","tasks","workflows","control","settings"]);function l(e){return!!e&&"object"==typeof e&&"string"==typeof e.id&&0!==e.id.length&&"string"==typeof e.kind&&!!s.has(e.kind)&&"number"==typeof e.createdAt&&("chat"!==e.kind||"string"==typeof e.sessionId&&0!==e.sessionId.length&&(void 0===e.title||"string"==typeof e.title))&&!0}var u=r(82003),c=r(87329);let o={maxAlive:8},f={maxAlive:5},b=(0,i.createContext)(null);function p(e){let{children:t}=e,[r,s]=(0,i.useReducer)(a.an,a.Tx,e=>e),[p,h]=(0,i.useState)(null),v=(0,i.useRef)(!1);(0,i.useEffect)(()=>{if(v.current)return;v.current=!0;let e=function(){var e;let t,r=null;try{r=window.localStorage.getItem(d)}catch(e){return a.Tx}if(!r)return a.Tx;try{t=JSON.parse(r)}catch(e){return a.Tx}if(!t||"object"!=typeof t)return a.Tx;let n=t;return 1!==n.version?a.Tx:(e=n.state)&&"object"==typeof e&&Array.isArray(e.tabs)&&e.tabs.every(l)&&Array.isArray(e.order)&&e.order.every(e=>"string"==typeof e)&&Array.isArray(e.frozenIds)&&e.frozenIds.every(e=>"string"==typeof e)&&(null===e.activeId||"string"==typeof e.activeId)&&1?function(e){let t=new Set(e.tabs.map(e=>e.id)),r=e.order.filter(e=>t.has(e));for(let t of e.tabs)r.includes(t.id)||r.push(t.id);let n=e.frozenIds.filter(e=>t.has(e)),i=e.activeId;if(null!==i&&!t.has(i)){var a;i=null!=(a=r[0])?a:null}return null===i&&r.length>0&&(i=r[0]),{tabs:e.tabs,order:r,frozenIds:n,activeId:i}}(n.state):a.Tx}();(e.tabs.length>0||null!==e.activeId)&&s({type:"replace",state:e})},[]),(0,i.useEffect)(()=>{if(v.current)try{window.localStorage.setItem(d,JSON.stringify({version:1,state:r}))}catch(e){}},[r]);let I=(0,i.useRef)(new Map);(0,i.useEffect)(()=>{r.activeId&&I.current.set(r.activeId,Date.now())},[r.activeId]);let[y,k]=(0,i.useState)(o);(0,i.useEffect)(()=>{let e=window.matchMedia("(min-width: 768px)"),t=()=>k(e.matches?o:f);return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),(0,i.useEffect)(()=>{if(!v.current)return;let e=function(e,t,r){let n=new Set(e.frozenIds),i=e.tabs.map(e=>e.id).filter(e=>!n.has(e));if(i.length<=t.maxAlive)return{freezeCandidates:[]};let a=new Map(e.tabs.map(e=>[e.id,e])),d=i.map(e=>{var t,n;let i=a.get(e),d=null!=(n=null!=(t=r.get(e))?t:null==i?void 0:i.createdAt)?n:0;return{id:e,ts:d}});d.sort((e,t)=>e.ts-t.ts);let s=i.length-t.maxAlive,l=[];for(let{id:t}of d){if(l.length>=s)break;t!==e.activeId&&l.push(t)}return{freezeCandidates:l}}(r,y,I.current);if(0!==e.freezeCandidates.length)for(let t of e.freezeCandidates)s({type:"freezeTab",id:t})},[r,y]);let g=(0,i.useCallback)(e=>{let t,r="undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"t-".concat(Date.now().toString(36),"-").concat(Math.random().toString(36).slice(2,10));if("chat"===e.kind){var n;let i=null!=(n=e.sessionId)?n:(0,c.f6)();t=(0,a.MJ)({id:r,sessionId:i,...void 0!==e.title?{title:e.title}:{}})}else t=(0,a.ax)({id:r,kind:e.kind});return s({type:"addTab",tab:t}),r},[]),m=(0,i.useCallback)(e=>{s({type:"closeTab",id:e}),I.current.delete(e)},[]),x=(0,i.useCallback)(e=>{s({type:"activateTab",id:e})},[]),w=(0,i.useCallback)((e,t)=>{s({type:"reorderTab",id:e,toIndex:t})},[]),T=(0,i.useCallback)((e,t)=>{s({type:"updateTab",id:e,patch:t})},[]),z=(0,i.useCallback)(e=>{if("chat"===e)return null;if((0,u.k)(e)){let t=r.tabs.find(t=>t.kind===e);if(t)return s({type:"activateTab",id:t.id}),t.id}return g({kind:e})},[r.tabs,g]),A=(0,i.useCallback)(e=>{h(e)},[]),C=(0,i.useCallback)(()=>{h(null)},[]),M=(0,i.useMemo)(()=>({state:r,addTab:g,closeTab:m,activateTab:x,reorderTab:w,updateChatTab:T,activateOrAdd:z,pickerMode:p,openPicker:A,closePicker:C}),[r,g,m,x,w,T,z,p,A,C]);return(0,n.jsx)(b.Provider,{value:M,children:t})}function h(){let e=(0,i.useContext)(b);if(!e)throw Error("useWorkspace must be used inside <WorkspaceProvider>");return e}function v(){return(0,i.useContext)(b)}},82003:(e,t,r)=>{r.d(t,{k:()=>n});function n(e){return"chat"!==e}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2808],{2219:(e,t,n)=>{n.d(t,{PT:()=>v,VN:()=>p,lZ:()=>u,v6:()=>o});var r=n(59011);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}},12020:(e,t,n)=>{n.d(t,{g:()=>l});var r=n(19707);let l="undefined"!=typeof document?r.useLayoutEffect:()=>{}},13773:(e,t,n)=>{n.d(t,{F:()=>u});var r=n(36757);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)}},17269:(e,t,n)=>{n.d(t,{j:()=>o});var r=n(19707);let l={};function o(e,t){let n=r.useRef(l);return n.current===l&&(n.current=e(t)),n}},34799:(e,t,n)=>{n.d(t,{o:()=>s});var r=n(52845),l=n(19707),o=n(83055),u=n(59858);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(59011),c=n(59644),f=n(2219);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")},52845:(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.`}},59011:(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}},59644:(e,t,n)=>{function r(){}n.d(t,{t0:()=>l,tE:()=>r}),Object.freeze([]);let l=Object.freeze({})},59858:(e,t,n)=>{n.d(t,{_:()=>l});let r=parseInt(n(19707).version,10);function l(e){return r>=e}},82198:(e,t,n)=>{n.d(t,{$:()=>u});var r=n(19707),l=n(84111),o=n(34799);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]})})},83055:(e,t,n)=>{n.d(t,{U:()=>o,a:()=>l});var r=n(17269);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}}}}}}},84111:(e,t,n)=>{n.d(t,{s:()=>f});var r=n(19707),l=n(89794),o=n(97066),u=n(12020),a=n(2219),i=n(52845);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}},89794:(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})},97066:(e,t,n)=>{n.d(t,{K:()=>i});var r,l=n(19707),o=n(17269);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(){}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3165],{36757:(e,r,o)=>{o.d(r,{$:()=>t});function t(){for(var e,r,o=0,t="",l=arguments.length;o<l;o++)(e=arguments[o])&&(r=function e(r){var o,t,l="";if("string"==typeof r||"number"==typeof r)l+=r;else if("object"==typeof r)if(Array.isArray(r)){var s=r.length;for(o=0;o<s;o++)r[o]&&(t=e(r[o]))&&(l&&(l+=" "),l+=t)}else for(t in r)r[t]&&(l&&(l+=" "),l+=t);return l}(e))&&(t&&(t+=" "),t+=r);return t}},78049:(e,r,o)=>{o.d(r,{QP:()=>ep});let t=(e=new Map,r=null,o)=>({nextPart:e,validators:r,classGroupId:o}),l=[],s=(e,r,o)=>{if(0==e.length-r)return o.classGroupId;let t=e[r],l=o.nextPart.get(t);if(l){let o=s(e,r+1,l);if(o)return o}let n=o.validators;if(null===n)return;let a=0===r?e.join("-"):e.slice(r).join("-"),i=n.length;for(let e=0;e<i;e++){let r=n[e];if(r.validator(a))return r.classGroupId}},n=(e,r)=>{let o=t();for(let t in e)a(e[t],o,t,r);return o},a=(e,r,o,t)=>{let l=e.length;for(let s=0;s<l;s++)i(e[s],r,o,t)},i=(e,r,o,t)=>"string"==typeof e?void d(e,r,o):"function"==typeof e?void c(e,r,o,t):void m(e,r,o,t),d=(e,r,o)=>{(""===e?r:p(r,e)).classGroupId=o},c=(e,r,o,t)=>{if(b(e))return void a(e(t),r,o,t);null===r.validators&&(r.validators=[]),r.validators.push({classGroupId:o,validator:e})},m=(e,r,o,t)=>{let l=Object.entries(e),s=l.length;for(let e=0;e<s;e++){let[s,n]=l[e];a(n,p(r,s),o,t)}},p=(e,r)=>{let o=e,l=r.split("-"),s=l.length;for(let e=0;e<s;e++){let r=l[e],s=o.nextPart.get(r);s||(s=t(),o.nextPart.set(r,s)),o=s}return o},b=e=>"isThemeGetter"in e&&!0===e.isThemeGetter,u=[],f=(e,r,o,t,l)=>({modifiers:e,hasImportantModifier:r,baseClassName:o,maybePostfixModifierPosition:t,isExternal:l}),g=/\s+/,h=e=>{let r;if("string"==typeof e)return e;let o="";for(let t=0;t<e.length;t++)e[t]&&(r=h(e[t]))&&(o&&(o+=" "),o+=r);return o},k=[],w=e=>{let r=r=>r[e]||k;return r.isThemeGetter=!0,r},x=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,v=/^\((?:(\w[\w-]*):)?(.+)\)$/i,y=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,z=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,j=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,G=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,N=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,C=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,$=e=>y.test(e),I=e=>!!e&&!Number.isNaN(Number(e)),O=e=>!!e&&Number.isInteger(Number(e)),M=e=>e.endsWith("%")&&I(e.slice(0,-1)),S=e=>z.test(e),W=()=>!0,_=e=>j.test(e)&&!G.test(e),P=()=>!1,T=e=>N.test(e),A=e=>C.test(e),E=e=>!Q(e)&&!R(e),q=e=>eo(e,en,P),Q=e=>x.test(e),B=e=>eo(e,ea,_),D=e=>eo(e,ei,I),F=e=>eo(e,ec,W),H=e=>eo(e,ed,P),J=e=>eo(e,el,P),K=e=>eo(e,es,A),L=e=>eo(e,em,T),R=e=>v.test(e),U=e=>et(e,ea),V=e=>et(e,ed),X=e=>et(e,el),Y=e=>et(e,en),Z=e=>et(e,es),ee=e=>et(e,em,!0),er=e=>et(e,ec,!0),eo=(e,r,o)=>{let t=x.exec(e);return!!t&&(t[1]?r(t[1]):o(t[2]))},et=(e,r,o=!1)=>{let t=v.exec(e);return!!t&&(t[1]?r(t[1]):o)},el=e=>"position"===e||"percentage"===e,es=e=>"image"===e||"url"===e,en=e=>"length"===e||"size"===e||"bg-size"===e,ea=e=>"length"===e,ei=e=>"number"===e,ed=e=>"family-name"===e,ec=e=>"number"===e||"weight"===e,em=e=>"shadow"===e;Symbol.toStringTag;let ep=((e,...r)=>{let o,t,a,i,d=e=>{let r=t(e);if(r)return r;let l=((e,r)=>{let{parseClassName:o,getClassGroupId:t,getConflictingClassGroupIds:l,sortModifiers:s}=r,n=[],a=e.trim().split(g),i="";for(let e=a.length-1;e>=0;e-=1){let r=a[e],{isExternal:d,modifiers:c,hasImportantModifier:m,baseClassName:p,maybePostfixModifierPosition:b}=o(r);if(d){i=r+(i.length>0?" "+i:i);continue}let u=!!b,f=t(u?p.substring(0,b):p);if(!f){if(!u||!(f=t(p))){i=r+(i.length>0?" "+i:i);continue}u=!1}let g=0===c.length?"":1===c.length?c[0]:s(c).join(":"),h=m?g+"!":g,k=h+f;if(n.indexOf(k)>-1)continue;n.push(k);let w=l(f,u);for(let e=0;e<w.length;++e){let r=w[e];n.push(h+r)}i=r+(i.length>0?" "+i:i)}return i})(e,o);return a(e,l),l};return i=c=>(t=(o=(e=>({cache:(e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let r=0,o=Object.create(null),t=Object.create(null),l=(l,s)=>{o[l]=s,++r>e&&(r=0,t=o,o=Object.create(null))};return{get(e){let r=o[e];return void 0!==r?r:void 0!==(r=t[e])?(l(e,r),r):void 0},set(e,r){e in o?o[e]=r:l(e,r)}}})(e.cacheSize),parseClassName:(e=>{let{prefix:r,experimentalParseClassName:o}=e,t=e=>{let r,o=[],t=0,l=0,s=0,n=e.length;for(let a=0;a<n;a++){let n=e[a];if(0===t&&0===l){if(":"===n){o.push(e.slice(s,a)),s=a+1;continue}if("/"===n){r=a;continue}}"["===n?t++:"]"===n?t--:"("===n?l++:")"===n&&l--}let a=0===o.length?e:e.slice(s),i=a,d=!1;return a.endsWith("!")?(i=a.slice(0,-1),d=!0):a.startsWith("!")&&(i=a.slice(1),d=!0),f(o,d,i,r&&r>s?r-s:void 0)};if(r){let e=r+":",o=t;t=r=>r.startsWith(e)?o(r.slice(e.length)):f(u,!1,r,void 0,!0)}if(o){let e=t;t=r=>o({className:r,parseClassName:e})}return t})(e),sortModifiers:(e=>{let r=new Map;return e.orderSensitiveModifiers.forEach((e,o)=>{r.set(e,1e6+o)}),e=>{let o=[],t=[];for(let l=0;l<e.length;l++){let s=e[l],n="["===s[0],a=r.has(s);n||a?(t.length>0&&(t.sort(),o.push(...t),t=[]),o.push(s)):t.push(s)}return t.length>0&&(t.sort(),o.push(...t)),o}})(e),...(e=>{let r=(e=>{let{theme:r,classGroups:o}=e;return n(o,r)})(e),{conflictingClassGroups:o,conflictingClassGroupModifiers:t}=e;return{getClassGroupId:e=>{if(e.startsWith("[")&&e.endsWith("]"))return(e=>-1===e.slice(1,-1).indexOf(":")?void 0:(()=>{let r=e.slice(1,-1),o=r.indexOf(":"),t=r.slice(0,o);return t?"arbitrary.."+t:void 0})())(e);let o=e.split("-"),t=+(""===o[0]&&o.length>1);return s(o,t,r)},getConflictingClassGroupIds:(e,r)=>{if(r){let r=t[e],s=o[e];return r?s?((e,r)=>{let o=Array(e.length+r.length);for(let r=0;r<e.length;r++)o[r]=e[r];for(let t=0;t<r.length;t++)o[e.length+t]=r[t];return o})(s,r):r:s||l}return o[e]||l}}})(e)}))(r.reduce((e,r)=>r(e),e()))).cache.get,a=o.cache.set,i=d,d(c)),(...e)=>i(((...e)=>{let r,o,t=0,l="";for(;t<e.length;)(r=e[t++])&&(o=h(r))&&(l&&(l+=" "),l+=o);return l})(...e))})(()=>{let e=w("color"),r=w("font"),o=w("text"),t=w("font-weight"),l=w("tracking"),s=w("leading"),n=w("breakpoint"),a=w("container"),i=w("spacing"),d=w("radius"),c=w("shadow"),m=w("inset-shadow"),p=w("text-shadow"),b=w("drop-shadow"),u=w("blur"),f=w("perspective"),g=w("aspect"),h=w("ease"),k=w("animate"),x=()=>["auto","avoid","all","avoid-page","page","left","right","column"],v=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],y=()=>[...v(),R,Q],z=()=>["auto","hidden","clip","visible","scroll"],j=()=>["auto","contain","none"],G=()=>[R,Q,i],N=()=>[$,"full","auto",...G()],C=()=>[O,"none","subgrid",R,Q],_=()=>["auto",{span:["full",O,R,Q]},O,R,Q],P=()=>[O,"auto",R,Q],T=()=>["auto","min","max","fr",R,Q],A=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],eo=()=>["start","end","center","stretch","center-safe","end-safe"],et=()=>["auto",...G()],el=()=>[$,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...G()],es=()=>[$,"screen","full","dvw","lvw","svw","min","max","fit",...G()],en=()=>[$,"screen","full","lh","dvh","lvh","svh","min","max","fit",...G()],ea=()=>[e,R,Q],ei=()=>[...v(),X,J,{position:[R,Q]}],ed=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ec=()=>["auto","cover","contain",Y,q,{size:[R,Q]}],em=()=>[M,U,B],ep=()=>["","none","full",d,R,Q],eb=()=>["",I,U,B],eu=()=>["solid","dashed","dotted","double"],ef=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],eg=()=>[I,M,X,J],eh=()=>["","none",u,R,Q],ek=()=>["none",I,R,Q],ew=()=>["none",I,R,Q],ex=()=>[I,R,Q],ev=()=>[$,"full",...G()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[S],breakpoint:[S],color:[W],container:[S],"drop-shadow":[S],ease:["in","out","in-out"],font:[E],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[S],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[S],shadow:[S],spacing:["px",I],text:[S],"text-shadow":[S],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",$,Q,R,g]}],container:["container"],columns:[{columns:[I,Q,R,a]}],"break-after":[{"break-after":x()}],"break-before":[{"break-before":x()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:y()}],overflow:[{overflow:z()}],"overflow-x":[{"overflow-x":z()}],"overflow-y":[{"overflow-y":z()}],overscroll:[{overscroll:j()}],"overscroll-x":[{"overscroll-x":j()}],"overscroll-y":[{"overscroll-y":j()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:N()}],"inset-x":[{"inset-x":N()}],"inset-y":[{"inset-y":N()}],start:[{"inset-s":N(),start:N()}],end:[{"inset-e":N(),end:N()}],"inset-bs":[{"inset-bs":N()}],"inset-be":[{"inset-be":N()}],top:[{top:N()}],right:[{right:N()}],bottom:[{bottom:N()}],left:[{left:N()}],visibility:["visible","invisible","collapse"],z:[{z:[O,"auto",R,Q]}],basis:[{basis:[$,"full","auto",a,...G()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[I,$,"auto","initial","none",Q]}],grow:[{grow:["",I,R,Q]}],shrink:[{shrink:["",I,R,Q]}],order:[{order:[O,"first","last","none",R,Q]}],"grid-cols":[{"grid-cols":C()}],"col-start-end":[{col:_()}],"col-start":[{"col-start":P()}],"col-end":[{"col-end":P()}],"grid-rows":[{"grid-rows":C()}],"row-start-end":[{row:_()}],"row-start":[{"row-start":P()}],"row-end":[{"row-end":P()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":T()}],"auto-rows":[{"auto-rows":T()}],gap:[{gap:G()}],"gap-x":[{"gap-x":G()}],"gap-y":[{"gap-y":G()}],"justify-content":[{justify:[...A(),"normal"]}],"justify-items":[{"justify-items":[...eo(),"normal"]}],"justify-self":[{"justify-self":["auto",...eo()]}],"align-content":[{content:["normal",...A()]}],"align-items":[{items:[...eo(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...eo(),{baseline:["","last"]}]}],"place-content":[{"place-content":A()}],"place-items":[{"place-items":[...eo(),"baseline"]}],"place-self":[{"place-self":["auto",...eo()]}],p:[{p:G()}],px:[{px:G()}],py:[{py:G()}],ps:[{ps:G()}],pe:[{pe:G()}],pbs:[{pbs:G()}],pbe:[{pbe:G()}],pt:[{pt:G()}],pr:[{pr:G()}],pb:[{pb:G()}],pl:[{pl:G()}],m:[{m:et()}],mx:[{mx:et()}],my:[{my:et()}],ms:[{ms:et()}],me:[{me:et()}],mbs:[{mbs:et()}],mbe:[{mbe:et()}],mt:[{mt:et()}],mr:[{mr:et()}],mb:[{mb:et()}],ml:[{ml:et()}],"space-x":[{"space-x":G()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":G()}],"space-y-reverse":["space-y-reverse"],size:[{size:el()}],"inline-size":[{inline:["auto",...es()]}],"min-inline-size":[{"min-inline":["auto",...es()]}],"max-inline-size":[{"max-inline":["none",...es()]}],"block-size":[{block:["auto",...en()]}],"min-block-size":[{"min-block":["auto",...en()]}],"max-block-size":[{"max-block":["none",...en()]}],w:[{w:[a,"screen",...el()]}],"min-w":[{"min-w":[a,"screen","none",...el()]}],"max-w":[{"max-w":[a,"screen","none","prose",{screen:[n]},...el()]}],h:[{h:["screen","lh",...el()]}],"min-h":[{"min-h":["screen","lh","none",...el()]}],"max-h":[{"max-h":["screen","lh",...el()]}],"font-size":[{text:["base",o,U,B]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[t,er,F]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",M,Q]}],"font-family":[{font:[V,H,r]}],"font-features":[{"font-features":[Q]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[l,R,Q]}],"line-clamp":[{"line-clamp":[I,"none",R,D]}],leading:[{leading:[s,...G()]}],"list-image":[{"list-image":["none",R,Q]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",R,Q]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:ea()}],"text-color":[{text:ea()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...eu(),"wavy"]}],"text-decoration-thickness":[{decoration:[I,"from-font","auto",R,B]}],"text-decoration-color":[{decoration:ea()}],"underline-offset":[{"underline-offset":[I,"auto",R,Q]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:G()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",R,Q]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",R,Q]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ei()}],"bg-repeat":[{bg:ed()}],"bg-size":[{bg:ec()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},O,R,Q],radial:["",R,Q],conic:[O,R,Q]},Z,K]}],"bg-color":[{bg:ea()}],"gradient-from-pos":[{from:em()}],"gradient-via-pos":[{via:em()}],"gradient-to-pos":[{to:em()}],"gradient-from":[{from:ea()}],"gradient-via":[{via:ea()}],"gradient-to":[{to:ea()}],rounded:[{rounded:ep()}],"rounded-s":[{"rounded-s":ep()}],"rounded-e":[{"rounded-e":ep()}],"rounded-t":[{"rounded-t":ep()}],"rounded-r":[{"rounded-r":ep()}],"rounded-b":[{"rounded-b":ep()}],"rounded-l":[{"rounded-l":ep()}],"rounded-ss":[{"rounded-ss":ep()}],"rounded-se":[{"rounded-se":ep()}],"rounded-ee":[{"rounded-ee":ep()}],"rounded-es":[{"rounded-es":ep()}],"rounded-tl":[{"rounded-tl":ep()}],"rounded-tr":[{"rounded-tr":ep()}],"rounded-br":[{"rounded-br":ep()}],"rounded-bl":[{"rounded-bl":ep()}],"border-w":[{border:eb()}],"border-w-x":[{"border-x":eb()}],"border-w-y":[{"border-y":eb()}],"border-w-s":[{"border-s":eb()}],"border-w-e":[{"border-e":eb()}],"border-w-bs":[{"border-bs":eb()}],"border-w-be":[{"border-be":eb()}],"border-w-t":[{"border-t":eb()}],"border-w-r":[{"border-r":eb()}],"border-w-b":[{"border-b":eb()}],"border-w-l":[{"border-l":eb()}],"divide-x":[{"divide-x":eb()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":eb()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...eu(),"hidden","none"]}],"divide-style":[{divide:[...eu(),"hidden","none"]}],"border-color":[{border:ea()}],"border-color-x":[{"border-x":ea()}],"border-color-y":[{"border-y":ea()}],"border-color-s":[{"border-s":ea()}],"border-color-e":[{"border-e":ea()}],"border-color-bs":[{"border-bs":ea()}],"border-color-be":[{"border-be":ea()}],"border-color-t":[{"border-t":ea()}],"border-color-r":[{"border-r":ea()}],"border-color-b":[{"border-b":ea()}],"border-color-l":[{"border-l":ea()}],"divide-color":[{divide:ea()}],"outline-style":[{outline:[...eu(),"none","hidden"]}],"outline-offset":[{"outline-offset":[I,R,Q]}],"outline-w":[{outline:["",I,U,B]}],"outline-color":[{outline:ea()}],shadow:[{shadow:["","none",c,ee,L]}],"shadow-color":[{shadow:ea()}],"inset-shadow":[{"inset-shadow":["none",m,ee,L]}],"inset-shadow-color":[{"inset-shadow":ea()}],"ring-w":[{ring:eb()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:ea()}],"ring-offset-w":[{"ring-offset":[I,B]}],"ring-offset-color":[{"ring-offset":ea()}],"inset-ring-w":[{"inset-ring":eb()}],"inset-ring-color":[{"inset-ring":ea()}],"text-shadow":[{"text-shadow":["none",p,ee,L]}],"text-shadow-color":[{"text-shadow":ea()}],opacity:[{opacity:[I,R,Q]}],"mix-blend":[{"mix-blend":[...ef(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ef()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[I]}],"mask-image-linear-from-pos":[{"mask-linear-from":eg()}],"mask-image-linear-to-pos":[{"mask-linear-to":eg()}],"mask-image-linear-from-color":[{"mask-linear-from":ea()}],"mask-image-linear-to-color":[{"mask-linear-to":ea()}],"mask-image-t-from-pos":[{"mask-t-from":eg()}],"mask-image-t-to-pos":[{"mask-t-to":eg()}],"mask-image-t-from-color":[{"mask-t-from":ea()}],"mask-image-t-to-color":[{"mask-t-to":ea()}],"mask-image-r-from-pos":[{"mask-r-from":eg()}],"mask-image-r-to-pos":[{"mask-r-to":eg()}],"mask-image-r-from-color":[{"mask-r-from":ea()}],"mask-image-r-to-color":[{"mask-r-to":ea()}],"mask-image-b-from-pos":[{"mask-b-from":eg()}],"mask-image-b-to-pos":[{"mask-b-to":eg()}],"mask-image-b-from-color":[{"mask-b-from":ea()}],"mask-image-b-to-color":[{"mask-b-to":ea()}],"mask-image-l-from-pos":[{"mask-l-from":eg()}],"mask-image-l-to-pos":[{"mask-l-to":eg()}],"mask-image-l-from-color":[{"mask-l-from":ea()}],"mask-image-l-to-color":[{"mask-l-to":ea()}],"mask-image-x-from-pos":[{"mask-x-from":eg()}],"mask-image-x-to-pos":[{"mask-x-to":eg()}],"mask-image-x-from-color":[{"mask-x-from":ea()}],"mask-image-x-to-color":[{"mask-x-to":ea()}],"mask-image-y-from-pos":[{"mask-y-from":eg()}],"mask-image-y-to-pos":[{"mask-y-to":eg()}],"mask-image-y-from-color":[{"mask-y-from":ea()}],"mask-image-y-to-color":[{"mask-y-to":ea()}],"mask-image-radial":[{"mask-radial":[R,Q]}],"mask-image-radial-from-pos":[{"mask-radial-from":eg()}],"mask-image-radial-to-pos":[{"mask-radial-to":eg()}],"mask-image-radial-from-color":[{"mask-radial-from":ea()}],"mask-image-radial-to-color":[{"mask-radial-to":ea()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":v()}],"mask-image-conic-pos":[{"mask-conic":[I]}],"mask-image-conic-from-pos":[{"mask-conic-from":eg()}],"mask-image-conic-to-pos":[{"mask-conic-to":eg()}],"mask-image-conic-from-color":[{"mask-conic-from":ea()}],"mask-image-conic-to-color":[{"mask-conic-to":ea()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ei()}],"mask-repeat":[{mask:ed()}],"mask-size":[{mask:ec()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",R,Q]}],filter:[{filter:["","none",R,Q]}],blur:[{blur:eh()}],brightness:[{brightness:[I,R,Q]}],contrast:[{contrast:[I,R,Q]}],"drop-shadow":[{"drop-shadow":["","none",b,ee,L]}],"drop-shadow-color":[{"drop-shadow":ea()}],grayscale:[{grayscale:["",I,R,Q]}],"hue-rotate":[{"hue-rotate":[I,R,Q]}],invert:[{invert:["",I,R,Q]}],saturate:[{saturate:[I,R,Q]}],sepia:[{sepia:["",I,R,Q]}],"backdrop-filter":[{"backdrop-filter":["","none",R,Q]}],"backdrop-blur":[{"backdrop-blur":eh()}],"backdrop-brightness":[{"backdrop-brightness":[I,R,Q]}],"backdrop-contrast":[{"backdrop-contrast":[I,R,Q]}],"backdrop-grayscale":[{"backdrop-grayscale":["",I,R,Q]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[I,R,Q]}],"backdrop-invert":[{"backdrop-invert":["",I,R,Q]}],"backdrop-opacity":[{"backdrop-opacity":[I,R,Q]}],"backdrop-saturate":[{"backdrop-saturate":[I,R,Q]}],"backdrop-sepia":[{"backdrop-sepia":["",I,R,Q]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":G()}],"border-spacing-x":[{"border-spacing-x":G()}],"border-spacing-y":[{"border-spacing-y":G()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",R,Q]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[I,"initial",R,Q]}],ease:[{ease:["linear","initial",h,R,Q]}],delay:[{delay:[I,R,Q]}],animate:[{animate:["none",k,R,Q]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[f,R,Q]}],"perspective-origin":[{"perspective-origin":y()}],rotate:[{rotate:ek()}],"rotate-x":[{"rotate-x":ek()}],"rotate-y":[{"rotate-y":ek()}],"rotate-z":[{"rotate-z":ek()}],scale:[{scale:ew()}],"scale-x":[{"scale-x":ew()}],"scale-y":[{"scale-y":ew()}],"scale-z":[{"scale-z":ew()}],"scale-3d":["scale-3d"],skew:[{skew:ex()}],"skew-x":[{"skew-x":ex()}],"skew-y":[{"skew-y":ex()}],transform:[{transform:[R,Q,"","none","gpu","cpu"]}],"transform-origin":[{origin:y()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ev()}],"translate-x":[{"translate-x":ev()}],"translate-y":[{"translate-y":ev()}],"translate-z":[{"translate-z":ev()}],"translate-none":["translate-none"],accent:[{accent:ea()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:ea()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",R,Q]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":G()}],"scroll-mx":[{"scroll-mx":G()}],"scroll-my":[{"scroll-my":G()}],"scroll-ms":[{"scroll-ms":G()}],"scroll-me":[{"scroll-me":G()}],"scroll-mbs":[{"scroll-mbs":G()}],"scroll-mbe":[{"scroll-mbe":G()}],"scroll-mt":[{"scroll-mt":G()}],"scroll-mr":[{"scroll-mr":G()}],"scroll-mb":[{"scroll-mb":G()}],"scroll-ml":[{"scroll-ml":G()}],"scroll-p":[{"scroll-p":G()}],"scroll-px":[{"scroll-px":G()}],"scroll-py":[{"scroll-py":G()}],"scroll-ps":[{"scroll-ps":G()}],"scroll-pe":[{"scroll-pe":G()}],"scroll-pbs":[{"scroll-pbs":G()}],"scroll-pbe":[{"scroll-pbe":G()}],"scroll-pt":[{"scroll-pt":G()}],"scroll-pr":[{"scroll-pr":G()}],"scroll-pb":[{"scroll-pb":G()}],"scroll-pl":[{"scroll-pl":G()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",R,Q]}],fill:[{fill:["none",...ea()]}],"stroke-w":[{stroke:[I,U,B,D]}],stroke:[{stroke:["none",...ea()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}})}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3190],{15890:(e,t,l)=>{l.d(t,{p:()=>s});var a=l(35563);l(19707);var r=l(28296),i=l(45505);function s(e){let{className:t,type:l,...s}=e;return(0,a.jsx)(r.p,{type:l,"data-slot":"input",className:(0,i.cn)("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",t),...s})}},61622:(e,t,l)=>{l.d(t,{M1:()=>c,Qj:()=>o,tI:()=>d});var a=l(35563),r=l(19707),i=l(55893),s=l(39120);let n=(0,r.createContext)(null);function d(e){let{client:t,queryClient:l,defaultStaleTimeMs:d,children:c}=e,o=(0,r.useMemo)(()=>null!=l?l:new i.E({defaultOptions:{queries:{staleTime:null!=d?d:2e3,refetchOnWindowFocus:!1}}}),[l,d]);return(0,a.jsx)(n.Provider,{value:t,children:(0,a.jsx)(s.Ht,{client:o,children:c})})}function c(){let e=(0,r.useContext)(n);if(!e)throw Error("useNexusClient must be used within <NexusProvider>");return e}function o(){return(0,r.useContext)(n)}},79324:(e,t,l)=>{l.d(t,{Q:()=>c});var a=l(35563),r=l(19707),i=l(7090),s=l(61622),n=l(23995);function d(e){if(e instanceof n.Iu&&e.body&&"object"==typeof e.body){var t,l;let a=e.body;return null!=(l=null!=(t=a.reason)?t:a.error)?l:e.message}return e instanceof Error?e.message:String(e)}function c(){var e,t;let{client:l}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=(0,s.Qj)(),c=null!=l?l:n,[o,u]=(0,r.useState)(null),[m,h]=(0,r.useState)(null),[x,f]=(0,r.useState)(!1),[p,v]=(0,r.useState)(""),[b,g]=(0,r.useState)(!1),j=(0,r.useCallback)(async()=>{if(c)try{let e=await c.getAnswerPriority();u(e),h(e.effective),v("")}catch(e){v(d(e))}},[c]);(0,r.useEffect)(()=>{j()},[j]);let y=async()=>{if(c&&m){f(!0),g(!1),v("");try{let e=await c.setAnswerPriority(m);u(t=>t&&{...t,value:e.value,effective:e.value}),g(!0)}catch(e){v(d(e))}finally{f(!1)}}};return(0,a.jsxs)("section",{className:"space-y-4 rounded border border-border bg-card p-4","data-testid":"answer-depth-card",children:[(0,a.jsxs)("header",{children:[(0,a.jsx)("h2",{className:"text-sm font-semibold",children:"답변 깊이"}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"한 번 답할 때 도구를 얼마나 깊게 사용할지 선택하세요."})]}),o&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("fieldset",{className:"space-y-2",children:[(0,a.jsxs)("legend",{className:"text-sm font-medium",children:["현재 값: ",null!=(t=null==(e=o.choices.find(e=>e.value===o.effective))?void 0:e.label)?t:o.effective]}),o.choices.map(e=>(0,a.jsxs)("label",{className:"flex cursor-pointer items-start gap-2 text-sm",children:[(0,a.jsx)("input",{type:"radio",name:"answer-depth",value:e.value,checked:m===e.value,onChange:()=>{h(e.value),g(!1)}}),(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"font-medium",children:e.label}),(0,a.jsx)("span",{className:"block text-xs text-muted-foreground",children:e.description})]})]},e.value))]}),(0,a.jsx)(i.$,{type:"button",size:"sm",onClick:()=>void y(),disabled:x||!m,children:"저장"}),b&&(0,a.jsx)("p",{role:"status",className:"text-xs",children:"저장했습니다."})]}),p&&(0,a.jsx)("p",{role:"alert",className:"text-xs text-destructive",children:p})]})}},91931:(e,t,l)=>{l.d(t,{lN:()=>h});var a=l(35563),r=l(19707),i=l(7090),s=l(15890),n=l(61622),d=l(23995);let c=[{value:"decompose",label:"쪼개기"},{value:"wait-reset",label:"리셋까지 기다리기"},{value:"next-provider",label:"다음 프로바이더"},{value:"proceed",label:"그대로 진행"}];function o(e){return{mode:e.resolved.mode,chain:e.resolved.chain.map(e=>({...e})),minHeadroomPercent:String(e.resolved.budgetGate.minHeadroomPercent),onShortfall:e.resolved.budgetGate.onShortfall}}function u(e,t,l){let a=t+l;if(a<0||a>=e.length)return e;let r=e.slice(),[i]=r.splice(t,1);return r.splice(a,0,i),r}function m(e){if(e instanceof d.Iu&&e.body&&"object"==typeof e.body){var t,l;let a=e.body;return null!=(l=null!=(t=a.reason)?t:a.error)?l:e.message}return e instanceof Error?e.message:String(e)}function h(){var e,t;let l=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},d=(0,n.Qj)(),h=null!=(e=l.client)?e:d,[x,f]=(0,r.useState)(!!l.initialDraft),[p,v]=(0,r.useState)([]),[b,g]=(0,r.useState)(null!=(t=l.initialDraft)?t:null),[j,y]=(0,r.useState)(!l.initialDraft),[N,k]=(0,r.useState)(!1),[w,C]=(0,r.useState)(""),[S,P]=(0,r.useState)("");(0,r.useEffect)(()=>{f(!0)},[]);let E=(0,r.useCallback)(async()=>{if(h){y(!0);try{let e=await h.getChildLlmPreference();v(e.providers),g(o(e)),P("")}catch(e){P(m(e))}finally{y(!1)}}},[h]);(0,r.useEffect)(()=>{x&&h&&E()},[x,h,E]);let H=async()=>{if(!h||!b)return;k(!0),C(""),P("");let e=Number(b.minHeadroomPercent);try{let t=await h.setChildLlmPreference({mode:b.mode,chain:b.chain.map(e=>{var t;return{provider:e.provider.trim(),...(null==(t=e.model)?void 0:t.trim())?{model:e.model.trim()}:{}}}).filter(e=>e.provider),budgetGate:{...Number.isFinite(e)?{minHeadroomPercent:e}:{},onShortfall:b.onShortfall}});g(o({resolved:t.resolved,providers:p})),C("저장했습니다.")}catch(e){P(m(e))}finally{k(!1)}};if(!x||!h||!b)return(0,a.jsxs)("section",{className:"space-y-2 rounded border border-border bg-card p-4","data-testid":"child-llm-preference-card",children:[S&&(0,a.jsx)("p",{role:"alert",className:"text-xs text-destructive","data-testid":"child-llm-error",children:S}),j&&(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"불러오는 중…"})]});let z=b.chain.length>1,F=p.length>0?p:["grok"];return(0,a.jsxs)("section",{className:"space-y-4 rounded border border-border bg-card p-4","data-testid":"child-llm-preference-card",children:[(0,a.jsxs)("header",{children:[(0,a.jsx)("h2",{className:"text-sm font-semibold",children:"자식 LLM 선호"}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"구현에 쓸 모델 순서와, 예산이 모자랄 때의 행동."})]}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("label",{htmlFor:"child-llm-mode",className:"text-sm font-medium",children:"모드"}),(0,a.jsxs)("select",{id:"child-llm-mode","data-testid":"child-llm-mode",value:b.mode,onChange:e=>g({...b,mode:e.target.value}),className:"flex h-9 w-full rounded-md border border-input bg-background px-3 text-sm",children:[(0,a.jsx)("option",{value:"pinned",children:"고정"}),(0,a.jsx)("option",{value:"auto",children:"자동"})]})]}),"auto"===b.mode&&(0,a.jsxs)("div",{className:"space-y-2","data-testid":"child-llm-chain",children:[(0,a.jsx)("p",{className:"text-sm font-medium",children:"순서"}),b.chain.map((e,t)=>(0,a.jsxs)("div",{className:"flex items-center gap-2","data-testid":"child-llm-chain-row",children:[(0,a.jsx)("select",{"aria-label":"프로바이더 ".concat(t+1),value:e.provider,onChange:l=>{let a=b.chain.slice();a[t]={...e,provider:l.target.value},g({...b,chain:a})},className:"flex h-9 flex-1 rounded-md border border-input bg-background px-3 text-sm",children:F.map(e=>(0,a.jsx)("option",{value:e,children:e},e))}),z&&(0,a.jsxs)("span",{className:"flex gap-1","data-testid":"child-llm-order",children:[(0,a.jsx)(i.$,{type:"button",size:"sm",variant:"outline","aria-label":"".concat(t+1," 위로"),disabled:0===t,onClick:()=>g({...b,chain:u(b.chain,t,-1)}),children:"위"}),(0,a.jsx)(i.$,{type:"button",size:"sm",variant:"outline","aria-label":"".concat(t+1," 아래로"),disabled:t===b.chain.length-1,onClick:()=>g({...b,chain:u(b.chain,t,1)}),children:"아래"})]}),(0,a.jsx)(i.$,{type:"button",size:"sm",variant:"outline","aria-label":"".concat(t+1," 빼기"),onClick:()=>g({...b,chain:b.chain.filter((e,l)=>l!==t)}),children:"빼기"})]},"".concat(e.provider,"-").concat(t))),(0,a.jsx)(i.$,{type:"button",size:"sm",variant:"outline","data-testid":"child-llm-add",onClick:()=>{var e;return g({...b,chain:[...b.chain,{provider:null!=(e=F[0])?e:"grok"}]})},children:"추가"})]}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("label",{htmlFor:"child-llm-headroom",className:"text-sm font-medium",children:"예산 여유 %"}),(0,a.jsx)(s.p,{id:"child-llm-headroom","data-testid":"child-llm-headroom",inputMode:"numeric",value:b.minHeadroomPercent,onChange:e=>g({...b,minHeadroomPercent:e.target.value})})]}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("label",{htmlFor:"child-llm-shortfall",className:"text-sm font-medium",children:"모자랄 때"}),(0,a.jsx)("select",{id:"child-llm-shortfall","data-testid":"child-llm-shortfall",value:b.onShortfall,onChange:e=>g({...b,onShortfall:e.target.value}),className:"flex h-9 w-full rounded-md border border-input bg-background px-3 text-sm",children:c.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))})]}),(0,a.jsx)(i.$,{type:"button",size:"sm","data-testid":"child-llm-save",onClick:()=>void H(),disabled:N,children:"저장"}),w&&(0,a.jsx)("p",{role:"status",className:"text-xs","data-testid":"child-llm-saved",children:w}),S&&(0,a.jsx)("p",{role:"alert",className:"text-xs text-destructive","data-testid":"child-llm-error",children:S})]})}}}]);