elanous 0.2.7 → 0.2.9
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.
- package/apps/pwa/out/404/index.html +1 -1
- package/apps/pwa/out/404.html +1 -1
- package/apps/pwa/out/_next/static/bFI5EEwg7T6aG88ibX4Zq/_buildManifest.js +1 -0
- package/apps/pwa/out/_next/static/chunks/7032-f4ef698518fba61c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8067-d976b441a104ab74.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8519-5632377cce994f86.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8630-cdfc61e82c653ffc.js +1 -0
- package/apps/pwa/out/_next/static/chunks/8894-e263b332208e3957.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9454-139040d37c79dbc9.js +1 -0
- package/apps/pwa/out/_next/static/chunks/9740-8f5ff96c522b5f55.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-fb7c2d458f32fcad.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-35e2713597dd24d1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/board/page-918b656f064577ba.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/botlab/{page-624f7a2f89b60c8f.js → page-f972fc1c00a62e88.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/bots/{page-5a5fb385a4df0ffe.js → page-5f30e00693527ebd.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/chat/{page-80497e93a878ddc5.js → page-7fbae173b3c103a7.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/consult/{page-7457f52683562161.js → page-3b4edcce364062ea.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/control/page-c5794f484c251f44.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-1130d8eefcd87e76.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/editor/page-973996d584f008c1.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/exec/{page-b7dcf5d48a854b76.js → page-016e2bda04eecb1f.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/field/{page-51480757e7d68b92.js → page-b4d6d9a3b56f2940.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/intake/page-ec49a466121233ba.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/layout-f72db356744ceade.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/live/page-a6fd9b50d1b85378.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/market/page-8b0402a46a749a3d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/missions/[id]/{page-07267f1391b96aba.js → page-037f83e2a1edc8e2.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/morning/{page-55d50e9b0006a91d.js → page-adfbd2ba9598e59a.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/not-found-46fedff57d4bec67.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-0cf318e9dcee2bbf.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/checklist/page-899b327cb8b6845c.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/ops/release/page-6c1e6ba743a29dfe.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/{page-a7e37af7d0399cb8.js → page-1a8e4807292f6b17.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-28deba6bcb834916.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-de68e2205794037d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/sessions/{page-15e5a15db84c56aa.js → page-c71c33a573230672.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/devices/{page-a2e572e4511f2a16.js → page-0df30e0c7e50148a.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/page-4fc56790fe0d2682.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-59df2aebb38a7c1e.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/setup/page-4647be5dbcbd0795.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/share/page-e025892bda74b743.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-a0955de73b89f078.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/tasks/{page-c1c95739c0bff3b8.js → page-369846d2921af584.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/term/page-72cbc1c8cdd0f65d.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/trace/{page-71d18eec33b9c667.js → page-77b28bfb0996d5ea.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/vault/page-3220c4934f49c6c2.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workflows/chat-ui/{page-2c4e59079ee357ac.js → page-90670589b87abea8.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-7df9243ed021a4cc.js +1 -0
- package/apps/pwa/out/_next/static/chunks/app/workspace/{page-5d422f38c052967e.js → page-4498c3853f4f688d.js} +1 -1
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-35bedde6d885f08f.js +1 -0
- package/apps/pwa/out/_next/static/css/f92f63a5df0ba229.css +1 -0
- package/apps/pwa/out/approvals/index.html +1 -1
- package/apps/pwa/out/approvals/index.txt +30 -29
- package/apps/pwa/out/autopilot/index.html +1 -1
- package/apps/pwa/out/autopilot/index.txt +30 -29
- package/apps/pwa/out/board/index.html +1 -1
- package/apps/pwa/out/board/index.txt +30 -29
- package/apps/pwa/out/botlab/index.html +1 -1
- package/apps/pwa/out/botlab/index.txt +27 -26
- package/apps/pwa/out/bots/index.html +1 -1
- package/apps/pwa/out/bots/index.txt +27 -26
- package/apps/pwa/out/chat/index.html +1 -1
- package/apps/pwa/out/chat/index.txt +27 -26
- package/apps/pwa/out/consult/index.html +1 -1
- package/apps/pwa/out/consult/index.txt +30 -29
- package/apps/pwa/out/control/index.html +1 -1
- package/apps/pwa/out/control/index.txt +30 -29
- package/apps/pwa/out/design-check/index.html +1 -1
- package/apps/pwa/out/design-check/index.txt +30 -29
- package/apps/pwa/out/editor/index.html +1 -1
- package/apps/pwa/out/editor/index.txt +30 -29
- package/apps/pwa/out/exec/index.html +1 -1
- package/apps/pwa/out/exec/index.txt +30 -29
- package/apps/pwa/out/field/index.html +1 -1
- package/apps/pwa/out/field/index.txt +30 -29
- package/apps/pwa/out/healthz +1 -1
- package/apps/pwa/out/index.html +1 -1
- package/apps/pwa/out/index.txt +27 -26
- package/apps/pwa/out/intake/index.html +1 -1
- package/apps/pwa/out/intake/index.txt +30 -29
- package/apps/pwa/out/live/index.html +1 -1
- package/apps/pwa/out/live/index.txt +30 -29
- package/apps/pwa/out/market/index.html +1 -1
- package/apps/pwa/out/market/index.txt +27 -26
- package/apps/pwa/out/missions/placeholder/index.html +1 -1
- package/apps/pwa/out/missions/placeholder/index.txt +27 -26
- package/apps/pwa/out/morning/index.html +1 -1
- package/apps/pwa/out/morning/index.txt +30 -29
- package/apps/pwa/out/observatory/index.html +1 -1
- package/apps/pwa/out/observatory/index.txt +30 -29
- package/apps/pwa/out/ops/checklist/index.html +1 -0
- package/apps/pwa/out/ops/checklist/index.txt +30 -0
- package/apps/pwa/out/ops/release/index.html +1 -0
- package/apps/pwa/out/ops/release/index.txt +30 -0
- package/apps/pwa/out/reflection/index.html +1 -1
- package/apps/pwa/out/reflection/index.txt +28 -27
- package/apps/pwa/out/scheduler/index.html +1 -1
- package/apps/pwa/out/scheduler/index.txt +30 -29
- package/apps/pwa/out/sessions/index.html +1 -1
- package/apps/pwa/out/sessions/index.txt +27 -26
- package/apps/pwa/out/settings/devices/index.html +1 -1
- package/apps/pwa/out/settings/devices/index.txt +30 -29
- package/apps/pwa/out/settings/index.html +1 -1
- package/apps/pwa/out/settings/index.txt +30 -29
- package/apps/pwa/out/setup/done/index.html +1 -1
- package/apps/pwa/out/setup/done/index.txt +30 -29
- package/apps/pwa/out/setup/index.html +1 -1
- package/apps/pwa/out/setup/index.txt +30 -29
- package/apps/pwa/out/share/index.html +1 -1
- package/apps/pwa/out/share/index.txt +30 -29
- package/apps/pwa/out/showroom/index.html +1 -1
- package/apps/pwa/out/showroom/index.txt +27 -26
- package/apps/pwa/out/tasks/index.html +1 -1
- package/apps/pwa/out/tasks/index.txt +30 -29
- package/apps/pwa/out/term/index.html +1 -1
- package/apps/pwa/out/term/index.txt +30 -29
- package/apps/pwa/out/trace/index.html +1 -1
- package/apps/pwa/out/trace/index.txt +30 -29
- package/apps/pwa/out/vault/index.html +1 -1
- package/apps/pwa/out/vault/index.txt +30 -29
- package/apps/pwa/out/workflows/chat-ui/index.html +1 -1
- package/apps/pwa/out/workflows/chat-ui/index.txt +30 -29
- package/apps/pwa/out/workflows/index.html +1 -1
- package/apps/pwa/out/workflows/index.txt +30 -29
- package/apps/pwa/out/workspace/index.html +1 -1
- package/apps/pwa/out/workspace/index.txt +30 -29
- package/apps/pwa/out/worktrees/index.html +1 -1
- package/apps/pwa/out/worktrees/index.txt +30 -29
- package/graphs/release/recipes.yaml +3 -0
- package/graphs/release/release-loop.yaml +3 -1
- package/graphs/test-diet/nightly-audit.yaml +18 -0
- package/graphs/test-diet/recipes.yaml +12 -0
- package/graphs/test-diet/test-diet.yaml +22 -0
- package/package.json +2 -1
- package/persona-presets/_index.yaml +10 -0
- package/persona-presets/_schema.json +146 -0
- package/persona-presets/dana.yaml +26 -0
- package/persona-presets/haru.yaml +27 -0
- package/persona-presets/kai.yaml +27 -0
- package/persona-presets/leo.yaml +27 -0
- package/persona-presets/mira.yaml +30 -0
- package/persona-presets/nari.yaml +27 -0
- package/persona-presets/sora.yaml +27 -0
- package/persona-presets/yuna.yaml +27 -0
- package/plugins/doc-draft/graphs/run-step.ts +1 -1
- package/plugins/geo-check/graphs/run-step.ts +34 -10
- package/scripts/field-feed/deliver-node.ts +8 -3
- package/scripts/field-feed/lib.ts +2 -0
- package/scripts/install.sh +20 -11
- package/scripts/persona-presets/lint.ts +79 -0
- package/scripts/release-loop/checklist-gate-node.ts +2 -2
- package/scripts/release-loop/cutoff.ts +20 -2
- package/scripts/release-loop/export-check-node.ts +85 -0
- package/scripts/release-loop/gate-node.ts +45 -7
- package/scripts/release-loop/node-verdict.ts +8 -1
- package/scripts/release-loop/npm-publish-node.ts +10 -4
- package/scripts/release-loop/ops-upgrade-node.ts +11 -3
- package/scripts/release-loop/publish-node.ts +23 -1
- package/scripts/release-loop/shard-plan.ts +17 -0
- package/scripts/storyboard/storyboard.ts +167 -0
- package/scripts/test-diet/lib.ts +89 -0
- package/scripts/test-diet/node.ts +144 -0
- package/src/acp/auth-methods.ts +30 -0
- package/src/acp/server.ts +5 -5
- package/src/auth/setup-link-tokens.fixture.ts +19 -0
- package/src/auth/setup-link-tokens.ts +153 -0
- package/src/budget/unified-usage.ts +75 -0
- package/src/channel-bot-token.ts +37 -10
- package/src/channel-import/detect.ts +191 -0
- package/src/channel-import/run.ts +111 -0
- package/src/chat/index.ts +9 -9
- package/src/cli/config-test-sync.ts +4 -0
- package/src/cli/decisions-cli.ts +13 -3
- package/src/cli/doctor-bundle.ts +128 -0
- package/src/cli/doctor-cli.ts +36 -1
- package/src/cli/doctor-local-llm.ts +95 -0
- package/src/cli/import-cli.ts +60 -0
- package/src/cli/mcp-login.ts +13 -4
- package/src/cli/op-proxy-sync.ts +83 -0
- package/src/cli/persona-cli.ts +116 -0
- package/src/cli/pr-cli.ts +6 -2
- package/src/cli/release-cli.ts +49 -8
- package/src/cli/skills-cli.ts +173 -0
- package/src/cli/start-cli.ts +13 -4
- package/src/codex/setup.ts +15 -13
- package/src/dashboard/dashboard-status-lines.ts +45 -0
- package/src/dashboard/first-screen-band.ts +35 -0
- package/src/dashboard/index.ts +87 -14
- package/src/dashboard/provider-slash-runtime.ts +28 -11
- package/src/dashboard/slash-runtime/dashboard-handlers.ts +12 -2
- package/src/dashboard/slash-runtime/help-from-registry.ts +4 -2
- package/src/dashboard/turn-stream-formatter.ts +1 -1
- package/src/decisions/decision-cards.ts +291 -0
- package/src/decisions/decision-ledger.ts +5 -2
- package/src/decisions/discord-decision-cards.ts +133 -0
- package/src/decisions/telegram-decision-cards.ts +100 -0
- package/src/directives/version-at.ts +77 -0
- package/src/discord.ts +17 -0
- package/src/domains/outbound-alert.ts +44 -1
- package/src/domains/repeated-failure.ts +1 -1
- package/src/error-report/report.ts +200 -0
- package/src/exec-requests/planner.ts +8 -2
- package/src/exec-requests/runner.ts +64 -24
- package/src/exec-requests/store.ts +2 -0
- package/src/field/field-feed-auto.ts +48 -0
- package/src/field/field-reel.ts +8 -1
- package/src/hooks/error-report.ts +210 -0
- package/src/hooks/receiver.ts +41 -1
- package/src/import/apply.ts +128 -0
- package/src/import/plan.ts +197 -0
- package/src/index.ts +98 -11
- package/src/input-core/text-entry.ts +13 -5
- package/src/intake-plane/seat-answer.ts +96 -0
- package/src/intake-plane/seat-doc-route.ts +17 -3
- package/src/maturity/feature-maturity.ts +2 -0
- package/src/nexus/api/consult-requests.ts +19 -8
- package/src/nexus/api/error-reports.ts +108 -0
- package/src/nexus/api/http-server.ts +41 -1
- package/src/nexus/api/meta-api.ts +27 -0
- package/src/nexus/api/operator.ts +61 -0
- package/src/nexus/api/ops-api.ts +139 -0
- package/src/nexus/api/ops-seats-sources.ts +65 -0
- package/src/nexus/api/ops-seats.ts +114 -0
- package/src/nexus/api/outbound-report.ts +7 -0
- package/src/nexus/api/public-routes.ts +14 -1
- package/src/nexus/api/running-runs-background.ts +68 -0
- package/src/nexus/api/running-runs-child.ts +6 -0
- package/src/nexus/api/setup-claim.ts +21 -0
- package/src/nexus/api/share-captures.ts +91 -0
- package/src/nexus/api/skill-problems.ts +56 -0
- package/src/nexus/api/terminals.ts +24 -8
- package/src/nexus/config/secrets/file-backend.ts +56 -18
- package/src/nexus/index.ts +25 -1
- package/src/nexus/setup-status.ts +7 -2
- package/src/oauth/browser-availability.ts +14 -0
- package/src/oauth/codex-quota-policy.ts +16 -0
- package/src/onboarding/continue-here.ts +13 -8
- package/src/onboarding/first-run-doctor.ts +54 -0
- package/src/onboarding/web-first.ts +8 -1
- package/src/onboarding.ts +66 -12
- package/src/persona/presets.ts +105 -0
- package/src/release-loop/checklist.ts +33 -69
- package/src/release-loop/feature-store.ts +327 -0
- package/src/release-loop/manifest.ts +59 -5
- package/src/seat-dispatch/ceo-commands.ts +65 -0
- package/src/self-dev/orchestrate.ts +18 -11
- package/src/shell-env-bootstrap.ts +44 -7
- package/src/skills/connect-claude-plugin.ts +142 -0
- package/src/skills/connect.ts +70 -0
- package/src/skills/index.ts +29 -1
- package/src/skills/repair.ts +124 -0
- package/src/skills/runner.ts +11 -2
- package/src/skills/tools/usage-slash.ts +8 -7
- package/src/skills/trigger-extract.ts +1 -1
- package/src/task-orchestrator/surfaces/pod-command-job.ts +16 -8
- package/src/telegram-commands.ts +29 -0
- package/src/telegram-run.ts +83 -13
- package/src/telegram.ts +34 -0
- package/src/thinking-line.ts +28 -20
- package/src/tui/chat/execution-badge.ts +1 -1
- package/src/user-config.ts +111 -13
- package/src/ux-sim/turn-states.ts +1 -1
- package/src/version/packed-revision.json +1 -1
- package/apps/pwa/out/_next/static/chunks/4836-2eba6079f31b88d4.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8067-f74bf14d67ad98f1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8519-f6b5d8a5833a7603.js +0 -1
- package/apps/pwa/out/_next/static/chunks/8894-e92491a164192cc1.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9454-a3e0953307216c58.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9740-67051141115ce775.js +0 -1
- package/apps/pwa/out/_next/static/chunks/9804-64c02c3c127d5014.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/approvals/page-d5ebde04844689e6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/autopilot/page-10ed24f413ed66e9.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/board/page-211810b6c93ab66a.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/control/page-cee86394de407aa6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/design-check/page-4ff8edab44196b8c.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/editor/page-92e4f44428d5e290.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/intake/page-2a05dfe80c8bdf16.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/layout-d9979633aa82f8e6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/live/page-30533117beb53625.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/market/page-f7857826c2f97ad7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/not-found-9699b1786be6171d.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/observatory/page-43dd772aee8af75f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/reflection/page-973ab7af59c718b7.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/scheduler/page-a9f8d3865b91e436.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/settings/page-dd107bf1c7d52a90.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/done/page-d42b99cdfb9f27c6.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/setup/page-2764ff40dad5a995.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/share/page-c5f1152db116ff96.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/showroom/page-f933bca81ea38a6f.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/term/page-a7aaffcf771662d8.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/vault/page-56adbe1a1f1379bd.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/workflows/page-a81f113f3ef89d72.js +0 -1
- package/apps/pwa/out/_next/static/chunks/app/worktrees/page-fc27b00e20733146.js +0 -1
- package/apps/pwa/out/_next/static/css/f537bdb19c69306a.css +0 -1
- package/apps/pwa/out/_next/static/keajW7DDyghEs1y8oJe6T/_buildManifest.js +0 -1
- /package/apps/pwa/out/_next/static/{keajW7DDyghEs1y8oJe6T → bFI5EEwg7T6aG88ibX4Zq}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6766],{26915:(e,t,r)=>{Promise.resolve().then(r.bind(r,87398))},51215:(e,t,r)=>{"use strict";let n;r.d(t,{cY:()=>c,x8:()=>o});let a={debug:0,info:1,warn:2,error:3},l="/v1/debug-logs/batch",s=null;function o(e){s=e}class i{health(){return{pending:this.queue.length,consecutiveFailures:this.consecutiveFailures,lastOkAt:this.lastOkAt,droppedByCap:this.droppedByCap,fallbackBatches:this.fallbackBatches}}push(e){if(!(a[function(e){let t=e.slice(e.lastIndexOf(".")+1).toLowerCase();return/^(error|exception|crash|fail|failed)$/.test(t)?"error":/^(warn|degraded|timeout)$/.test(t)?"warn":/^(boot|ready|start|begin|open|ok|done|resolve|end|stop|close)$/.test(t)?"info":"debug"}(e.category)]<a[this.minLevel])){if(this.queue.push(e),this.queue.length>500){let e=this.queue.length-500;this.droppedByCap+=e,this.queue.splice(0,e)}null===this.timer&&(this.timer=setTimeout(()=>{this.flush()},100))}}async flush(){if(this.timer&&(clearTimeout(this.timer),this.timer=null),this.inFlight||0===this.queue.length)return;let e=this.queue.slice(0,100);this.inFlight=!0;let t=!1,r=JSON.stringify({records:e});try{var n,a;t=await (n=this.fetchFn(r),a=this.postTimeoutMs,new Promise((e,t)=>{let r=setTimeout(()=>t(Error("debug-forward timeout after ".concat(a,"ms"))),a);n.then(t=>{clearTimeout(r),e(t)},e=>{clearTimeout(r),t(e)})}))}catch(e){t=!1}finally{this.inFlight=!1}if(!t){if(this.consecutiveFailures+=1,this.consecutiveFailures>=2&&s)try{await s(JSON.stringify({records:[...e,this.blockedNotice()]}))&&(this.fallbackBatches+=1)}catch(e){}this.wasFailing=!0,this.scheduleRetry();return}let l=this.lastOkAt;this.lastOkAt=Date.now();let o=this.consecutiveFailures;this.consecutiveFailures=0,this.queue.splice(0,e.length),this.wasFailing&&(this.wasFailing=!1,this.queue.push({ts:new Date().toISOString(),category:"pwa.debug-forwarder.recovered",event:"recovered",data:{consecutiveFailures:o,droppedByCap:this.droppedByCap,fallbackBatches:this.fallbackBatches,pending:this.queue.length,previousOkAt:l},source:{platform:"pwa"}})),this.queue.length>0&&null===this.timer&&(this.timer=setTimeout(()=>{this.flush()},100))}scheduleRetry(){if(null!==this.timer||0===this.queue.length)return;let e=Math.min(100*2**this.consecutiveFailures,3e4);this.timer=setTimeout(()=>{this.flush()},e)}blockedNotice(){return{ts:new Date().toISOString(),category:"pwa.debug-forwarder.http-blocked",event:"http-blocked",data:{consecutiveFailures:this.consecutiveFailures,pending:this.queue.length,droppedByCap:this.droppedByCap,lastOkAt:this.lastOkAt,via:"acp-fallback"},source:{platform:"pwa"}}}beaconFlush(){if(0!==this.queue.length)try{if("undefined"!=typeof navigator&&"function"==typeof navigator.sendBeacon){let e=this.queue.slice(0,100),t=new Blob([JSON.stringify({records:e})],{type:"application/json"});navigator.sendBeacon(l,t)&&this.queue.splice(0,e.length)}}catch(e){}}get pending(){return this.queue.length}constructor(e=d,t="debug",r=1e4){this.fetchFn=e,this.minLevel=t,this.postTimeoutMs=r,this.queue=[],this.timer=null,this.inFlight=!1,this.consecutiveFailures=0,this.lastOkAt=null,this.droppedByCap=0,this.fallbackBatches=0,this.wasFailing=!1}}async function d(e){return(await fetch(l,{method:"POST",headers:{"content-type":"application/json"},body:e,keepalive:!0,..."undefined"!=typeof AbortSignal&&"function"==typeof AbortSignal.timeout?{signal:AbortSignal.timeout(1e4)}:{}})).ok}function c(e,t){if("undefined"==typeof console)return;let r=new Date().toISOString();if(void 0!==t){let n="";try{let e=new WeakSet;n=JSON.stringify(t,(t,r)=>{if("bigint"==typeof r)return"".concat(r.toString(),"n");if("function"==typeof r)return"[fn ".concat(r.name||"anon","]");if(r&&"object"==typeof r){if(e.has(r))return"[circular]";e.add(r)}return r})}catch(e){n="[unserializable: ".concat(String(e),"]")}n&&n.length>800&&(n=n.slice(0,797)+"..."),console.debug("[".concat(r,"] ").concat(e," ").concat(n),t),u(r,e,n)}else console.debug("[".concat(r,"] ").concat(e)),u(r,e,void 0)}function u(e,t,r){let a,l=function(){if(void 0!==n)return n;let e=function(){try{let e="off"!==window.localStorage.getItem("elanous.pwa.debug.forward"),t=window.localStorage.getItem("elanous.pwa.debug.forwardLevel");return{forward:e,level:"info"===t||"warn"===t||"error"===t?t:"debug"}}catch(e){return{forward:!0,level:"debug"}}}();if(!e.forward)return n=null,null;let t=new i(d,e.level);try{window.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&t.beaconFlush()})}catch(e){}return n=t,t}();if(!l)return;let s=t.slice(t.lastIndexOf(".")+1)||t;if(void 0!==r&&""!==r)try{a=JSON.parse(r)}catch(e){a=r}l.push({ts:e,category:t,event:s,...void 0!==a?{data:a}:{},source:{platform:"pwa"}})}},67842:(e,t,r)=>{"use strict";r.d(t,{AF:()=>n});let n={all:["nexus"],health:()=>[...n.all,"health"],snapshot:()=>[...n.all,"snapshot"],tabs:e=>e?[...n.all,"tabs",{kind:e}]:[...n.all,"tabs"],tab:e=>[...n.all,"tab",e],templates:()=>[...n.all,"templates"],template:e=>[...n.all,"template",e],config:()=>[...n.all,"config"],switches:()=>[...n.all,"switches"],switch:e=>[...n.all,"switch",e],secrets:()=>[...n.all,"secrets"],bindingChannels:()=>[...n.all,"bindings","channels"],bindings:e=>[...n.all,"bindings",e],binding:(e,t)=>[...n.all,"binding",e,t],logsTail:(e,t)=>t?[...n.all,"logs",e,{lines:t}]:[...n.all,"logs",e],workflows:()=>[...n.all,"workflows"],workflow:e=>[...n.all,"workflow",e],workflowRun:e=>[...n.all,"workflow-run",e],workflowRuns:()=>[...n.all,"workflow-runs"],pendingApprovals:()=>[...n.all,"workflow-pending-approvals"],platforms:()=>[...n.all,"platforms"],providers:()=>[...n.all,"providers"],worktrees:()=>[...n.all,"worktrees"],designCheck:()=>[...n.all,"design-check"],designPreviews:()=>[...n.all,"design-previews"],designPreview:e=>[...n.all,"design-preview",e],registryCatalog:()=>[...n.all,"registry-catalog"],resolvedView:()=>[...n.all,"resolved-view"]};n.snapshot(),n.tabs(),n.health(),n.snapshot(),n.config(),n.switches()},75814:()=>{},87398:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>tI});var n=r(41121),a=r(91269),l=r(42012),s=r(9050),o=r(91514);let i=/^[a-z0-9]+(-[a-z0-9]+)*$/;var d=r(84081),c=r(81731),u=r(30311),p=r(29565),h=r(86715),m=r(44100),x=r(29910),f=r(96823),g=r(7002),b=r(10793),y=r(67089),v=r(69109),j=r(50940),w=r(36767),k=r(73334),N=r(27810),C=r(95721),S=r(11635),A=r(75791),T=r(58505),E=r(44251);r(39019),r(75814);var M=r(42716);let _=/^\*\/(\d+) \* \* \* \*$/,O=/^0 \*\/(\d+) \* \* \*$/,I=/^(\d+) (\d+) \* \* \*$/,L=/^(\d+) (\d+) \* \* 1-5$/,P=/^(\d+) (\d+) \* \* ([0-6])$/,R=/^(\d+) (\d+) (\d+) \* \*$/,D=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function F(e){return e.toString().padStart(2,"0")}function z(e){let t=e.trim();if(!t)return{text:"(empty expression)",matched:!1};let r=_.exec(t);if(r){let e=Number(r[1]);return{text:"Every ".concat(e," minute").concat(1===e?"":"s"),matched:!0}}let n=O.exec(t);if(n){let e=Number(n[1]);return{text:"Every ".concat(e," hour").concat(1===e?"":"s"),matched:!0}}let a=L.exec(t);if(a)return{text:"Every weekday at ".concat(F(Number(a[2])),":").concat(F(Number(a[1]))),matched:!0};let l=P.exec(t);if(l){let e=D[Number(l[3])];return{text:"Every ".concat(e," at ").concat(F(Number(l[2])),":").concat(F(Number(l[1]))),matched:!0}}let s=I.exec(t);if(s)return{text:"Every day at ".concat(F(Number(s[2])),":").concat(F(Number(s[1]))),matched:!0};let o=R.exec(t);return o?{text:"Day ".concat(Number(o[3])," of every month at ").concat(F(Number(o[2])),":").concat(F(Number(o[1]))),matched:!0}:{text:"Custom: ".concat(t),matched:!1}}let q=[{id:"every-5-min",label:"Every 5 min",expression:"*/5 * * * *"},{id:"every-hour",label:"Hourly",expression:"0 */1 * * *"},{id:"daily-9am",label:"Daily 9am",expression:"0 9 * * *"},{id:"weekdays-9am",label:"Weekdays 9am",expression:"0 9 * * 1-5"},{id:"weekly-mon-9am",label:"Mon 9am",expression:"0 9 * * 1"},{id:"monthly-1st-9am",label:"1st 9am",expression:"0 9 1 * *"}];function W(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"string"==typeof e?e:t}function G(e){return"string"==typeof e.prompt?"prompt":"string"==typeof e.bash?"bash":"string"==typeof e.skill?"skill":"string"==typeof e.cft?"cft":void 0!==e.approval&&"object"==typeof e.approval&&null!==e.approval?"approval":void 0!==e.if&&"object"==typeof e.if&&null!==e.if&&"string"==typeof e.if.condition?"if":void 0!==e.switch&&"object"==typeof e.switch&&null!==e.switch&&"string"==typeof e.switch.value&&Array.isArray(e.switch.cases)?"switch":void 0!==e.iteration&&"object"==typeof e.iteration&&null!==e.iteration&&"string"==typeof e.iteration.items&&"string"==typeof e.iteration.body?"iteration":void 0!==e.classify&&"object"==typeof e.classify&&null!==e.classify&&"string"==typeof e.classify.input&&Array.isArray(e.classify.classes)?"classify":void 0!==e.extract&&"object"==typeof e.extract&&null!==e.extract&&"string"==typeof e.extract.input&&"object"==typeof e.extract.schema?"extract":void 0!==e.set&&"object"==typeof e.set&&null!==e.set&&"object"==typeof e.set.fields?"set":void 0!==e.filter&&"object"==typeof e.filter&&null!==e.filter&&"string"==typeof e.filter.items&&"string"==typeof e.filter.condition?"filter":void 0!==e.template&&"object"==typeof e.template&&null!==e.template&&"string"==typeof e.template.template?"template":void 0!==e.http&&"object"==typeof e.http&&null!==e.http&&"string"==typeof e.http.url?"http":void 0!==e.scheduleTrigger&&"object"==typeof e.scheduleTrigger&&null!==e.scheduleTrigger&&"string"==typeof e.scheduleTrigger.type?"scheduleTrigger":void 0!==e.webhookTrigger&&"object"==typeof e.webhookTrigger&&null!==e.webhookTrigger&&"string"==typeof e.webhookTrigger.path?"webhookTrigger":void 0!==e.discordTrigger&&"object"==typeof e.discordTrigger&&null!==e.discordTrigger&&"string"==typeof e.discordTrigger.kind?"discordTrigger":void 0!==e.telegramTrigger&&"object"==typeof e.telegramTrigger&&null!==e.telegramTrigger&&"string"==typeof e.telegramTrigger.kind?"telegramTrigger":void 0!==e.manualTrigger&&"object"==typeof e.manualTrigger&&null!==e.manualTrigger?"manualTrigger":void 0!==e.chatTrigger&&"object"==typeof e.chatTrigger&&null!==e.chatTrigger&&"string"==typeof e.chatTrigger.path?"chatTrigger":"unknown"}function B(e){let t=e.kind;return"string"==typeof t&&/^[a-z0-9-]+:[a-z0-9-]+$/.test(t)?t:null}function H(e,t){var r;return"unknown"===t&&null!=(r=B(e))?r:t}function $(e){var t;return e?(null!=(t=e.split("\n").find(e=>e.trim().length>0))?t:"").trim().slice(0,64):""}var K=r(45560);function U(e,t){var r;let n=new Set((null!=(r=e.nodes)?r:[]).map(e=>e.id)),a="unknown"===t?"node":t;for(let e=1;e<1e4;e+=1){let t="".concat(a,"-").concat(e);if(!n.has(t))return t}return"".concat(a,"-").concat(Date.now())}function J(e,t,r){var n,a;let l=null!=(n=null==r?void 0:r.id)?n:U(e,t),s=function(e,t){switch(e){case"prompt":return{id:t,prompt:"Describe the desired behaviour…"};case"bash":return{id:t,bash:"echo todo"};case"skill":return{id:t,skill:"omni-digest",arguments:"$ARGUMENTS"};case"cft":return{id:t,cft:"pdca",config:{goal:"TBD",phase:"plan"}};case"approval":return{id:t,approval:{message:"Continue?"}};case"if":return{id:t,if:{condition:"$ARGUMENTS == 'yes'"}};case"switch":return{id:t,switch:{value:"$ARGUMENTS",cases:["a","b"]}};case"iteration":return{id:t,iteration:{items:'["a","b","c"]',body:"echo $index $item"}};case"classify":return{id:t,classify:{input:"$ARGUMENTS",classes:["question","command","other"]}};case"extract":return{id:t,extract:{input:"$ARGUMENTS",schema:{name:"person name",date:"ISO date if present"}}};case"set":return{id:t,set:{fields:{greeting:"Hello $ARGUMENTS"}}};case"filter":return{id:t,filter:{items:'["a","b","c"]',condition:"$item != 'b'"}};case"template":return{id:t,template:{template:"Hello {{ARGUMENTS}}!"}};case"http":return{id:t,http:{method:"GET",url:"https://api.example.com/items",headers:{Accept:"application/json"}}};case"scheduleTrigger":return{id:t,scheduleTrigger:{type:"interval",interval:36e5}};case"webhookTrigger":return{id:t,webhookTrigger:{method:"POST",path:"/hooks/example"}};case"discordTrigger":return{id:t,discordTrigger:{kind:"message"}};case"telegramTrigger":return{id:t,telegramTrigger:{kind:"message"}};case"manualTrigger":return{id:t,manualTrigger:{description:"Run manually"}};case"chatTrigger":return{id:t,chatTrigger:{path:"/chat",sessionMode:"stateless",streaming:!1}};default:return{id:t,bash:"echo placeholder"}}}(t,l);return{...e,nodes:[...null!=(a=e.nodes)?a:[],s]}}function Y(e,t){var r;let n=(null!=(r=e.nodes)?r:[]).filter(e=>e.id!==t).map(e=>{let r=Array.isArray(e.depends_on)?e.depends_on.filter(e=>e!==t):void 0;if(void 0===r)return e;if(0===r.length){let{depends_on:t,...r}=e;return r}return{...e,depends_on:r}});return{...e,nodes:n}}function V(e){if(!e._meta||"object"!=typeof e._meta)return e;let t={...e._meta};if(!("layout"in t))return e;if(delete t.layout,0===Object.keys(t).length){let{_meta:t,...r}=e;return r}return{...e,_meta:t}}function X(e){var t;let r={};for(let t of("string"==typeof e.name&&(r.name=e.name),"string"==typeof e.description&&(r.description=e.description),Object.keys(e)))"name"!==t&&"description"!==t&&"nodes"!==t&&(r[t]=e[t]);return r.nodes=null!=(t=e.nodes)?t:[],(0,K.As)(r,{lineWidth:0,defaultStringType:"PLAIN",singleQuote:!1})}function Q(e){try{let t=(0,K.parse)(e);if(!t||"object"!=typeof t||!Array.isArray(t.nodes))return null;return t}catch(e){return null}}let Z={running:{dot:"#3b82f6",label:"Running"},done:{dot:"#22c55e",label:"Done"},failed:{dot:"#ef4444",label:"Failed"},skipped:{dot:"#9ca3af",label:"Skipped"},awaiting_approval:{dot:"#f59e0b",label:"Awaiting approval"}},ee={all:"\uD83D\uDCE3",modal:"\uD83D\uDDA5",terminal:"⌨",telegram:"\uD83D\uDCF2",discord:"\uD83D\uDCAC",pushcut:"\uD83D\uDD14"};async function et(e){try{let{parse:t}=await Promise.resolve().then(r.bind(r,45560)),n=t(e);if(!n||"object"!=typeof n||!Array.isArray(n.nodes))return null;return n}catch(e){return null}}let er={prompt:"#8b5cf6",bash:"#22c55e",skill:"#f59e0b",cft:"#06b6d4",approval:"#ef4444",if:"#ec4899",switch:"#d946ef",iteration:"#a855f7",classify:"#0ea5e9",extract:"#14b8a6",set:"#84cc16",filter:"#10b981",template:"#f97316",http:"#3b82f6",scheduleTrigger:"#6366f1",webhookTrigger:"#a78bfa",discordTrigger:"#5865f2",telegramTrigger:"#0088cc",manualTrigger:"#64748b",chatTrigger:"#9333ea",unknown:"#9ca3af"};function en(e){let{palette:t,yaml:r,definition:l,editable:s,onChangeYaml:o,onNodeClick:i,nodeStatuses:d,nodeIssues:c,cycleNodeIds:u,focusNodeId:p,focusNonce:h,onRun:m}=e,[x,f]=(0,a.useState)(null!=l?l:null),[g,b]=(0,a.useState)(!1),[y,v]=(0,a.useState)([]);(0,a.useEffect)(()=>{if(l){f(l),b(!1);return}let e=!1;return(async()=>{let t=await et(r);e||(f(t),b(null===t))})(),()=>{e=!0}},[r,l]);let j=(0,a.useCallback)(e=>{var t;if(!o)return;let n=null!=(t=Q(r))?t:x;if(!n)return;let a=e(n);f(a);try{let e=X(a);o(e)}catch(e){}},[o,x,r]),w=(0,a.useMemo)(()=>{if(!x)return null;try{return function(e,t){let{nodes:r,edges:n}=function(e){var t,r,n,a,l,s,o,i,d,c,u,p;let h=[],m=[],x=new Set;for(let f of null!=(t=e.nodes)?t:[]){let e,t;if(!f||"string"!=typeof f.id||0===f.id.length||x.has(f.id))continue;x.add(f.id);let g=G(f),b="";switch(g){case"prompt":b=$(f.prompt);break;case"bash":b=$(f.bash);break;case"skill":b=String(null!=(r=f.skill)?r:"").slice(0,64);break;case"cft":b=String(null!=(n=f.cft)?n:"").slice(0,64);break;case"approval":{let t=f.approval;b=$(null==t?void 0:t.message),"string"==typeof(null==t?void 0:t.delivery)&&t.delivery.length>0&&(e=t.delivery);break}case"if":{let e=null==(a=f.if)?void 0:a.condition;b="string"==typeof e?e.slice(0,64):"";break}case"switch":{let e=f.switch,t=Array.isArray(null==e?void 0:e.cases)?" → ".concat(e.cases.length," case").concat(1===e.cases.length?"":"s"):"";b="".concat((null!=(l=null==e?void 0:e.value)?l:"").slice(0,40)).concat(t);break}case"iteration":{let e=f.iteration;b="over ".concat((null!=(s=null==e?void 0:e.items)?s:"").slice(0,32));break}case"classify":{let e=f.classify,t=Array.isArray(null==e?void 0:e.classes)?e.classes.length:0;b="".concat(t," class").concat(1===t?"":"es"," from ").concat((null!=(o=null==e?void 0:e.input)?o:"").slice(0,24));break}case"extract":{let e=f.extract,t=(null==e?void 0:e.schema)?Object.keys(e.schema).length:0;b="".concat(t," field").concat(1===t?"":"s"," from ").concat((null!=(i=null==e?void 0:e.input)?i:"").slice(0,24));break}case"set":{let e=f.set,t=(null==e?void 0:e.fields)?Object.keys(e.fields).length:0;b="set ".concat(t," field").concat(1===t?"":"s");break}case"filter":{let e=f.filter;b="filter ".concat((null!=(d=null==e?void 0:e.items)?d:"").slice(0,28)," on ").concat((null!=(c=null==e?void 0:e.condition)?c:"").slice(0,24));break}case"template":{let e=f.template,t=$(null==e?void 0:e.template);b="tpl: ".concat(t.slice(0,56));break}case"http":case"scheduleTrigger":case"webhookTrigger":case"discordTrigger":case"telegramTrigger":case"manualTrigger":case"chatTrigger":b=null!=(u=function(e,t){switch(e){case"scheduleTrigger":return function(e){if(!e)return"⏰ schedule";let t=e.type;if("cron"===t){let t=W(e.cron),r=W(e.timezone),n=z(t),a=!1===e.enabled?" \xb7 disabled":"",l="number"==typeof e.max_runs?" \xb7 max ".concat(e.max_runs," runs"):"";return"⏰ ".concat(n.text).concat(r?" ".concat(r):"").concat(l).concat(a)}if("interval"===t){let t="number"==typeof e.interval?e.interval:0,r=!1===e.enabled?" \xb7 disabled":"";if(t>=36e5&&t%36e5==0){let e=t/36e5;return"⏰ Every ".concat(e," hour").concat(1===e?"":"s").concat(r)}if(t>=6e4&&t%6e4==0){let e=t/6e4;return"⏰ Every ".concat(e," minute").concat(1===e?"":"s").concat(r)}let n=Math.max(1,Math.round(t/1e3));return"⏰ Every ".concat(n,"s").concat(r)}return"⏰ schedule"}(t.scheduleTrigger);case"webhookTrigger":return function(e){if(!e)return"\uD83D\uDD17 webhook";let t=W(e.method,"POST"),r=W(e.path),n=e.auth&&"object"==typeof e.auth?e.auth:null,a=n?" \xb7 ".concat(W(n.type)):"";return"\uD83D\uDD17 ".concat(t," ").concat(r).concat(a)}(t.webhookTrigger);case"http":return function(e){if(!e)return"\uD83C\uDF10 http";let t=W(e.method,"GET"),r=W(e.url),n="number"==typeof e.timeout?" \xb7 ".concat(Math.round(e.timeout/1e3),"s"):"";return"\uD83C\uDF10 ".concat(t," ").concat(r.slice(0,48)).concat(n)}(t.http);case"discordTrigger":return function(e){if(!e)return"\uD83D\uDCAC discord";let t=W(e.kind,"message"),r=[],n=W(e.channel);return n&&r.push("#".concat(n)),W(e.user)&&r.push("@".concat(W(e.user))),W(e.pattern)&&r.push("/".concat(W(e.pattern),"/")),r.push(t),"\uD83D\uDCAC ".concat(r.join(" \xb7 "))}(t.discordTrigger);case"telegramTrigger":var r=t.telegramTrigger;if(!r)return"✈️ telegram";let n=W(r.kind,"message"),a=[];return W(r.chat)&&a.push("@".concat(W(r.chat))),"command"===n&&W(r.command)&&a.push("/".concat(W(r.command))),W(r.user)&&a.push("from:".concat(W(r.user))),W(r.pattern)&&a.push("/".concat(W(r.pattern),"/")),a.push(n),"✈️ ".concat(a.join(" \xb7 "));case"manualTrigger":var l=t.manualTrigger;let s=W(null==l?void 0:l.description);return s?"▶ ".concat(s):"▶ Manual \xb7 explicit run";case"chatTrigger":return function(e){if(!e)return"\uD83D\uDCAD Chat";let t=W(e.path,"/chat"),r="per-session"===e.sessionMode?" \xb7 per-session":"",n=!0===e.streaming?" \xb7 streaming":"";return"\uD83D\uDCAD Chat: ".concat(t).concat(r).concat(n)}(t.chatTrigger);default:return null}}(g,f))?u:"";break;default:b=""}if("unknown"===g&&B(f)){let e=f.inputs,t=e&&"object"==typeof e?Object.values(e).find(e=>"string"==typeof e&&""!==e.trim()):void 0;b=t?$(t):""}if("if"===g)t=["then","else"];else if("switch"===g){let e=null==(p=f.switch)?void 0:p.cases;Array.isArray(e)&&(t=[...e.filter(e=>"string"==typeof e&&e.length>0),"default"])}for(let r of(h.push({id:f.id,variant:g,badge:H(f,g),label:f.id,preview:b,hasWhen:"string"==typeof f.when&&""!==f.when.trim(),..."string"==typeof f.trigger_rule?{triggerRule:f.trigger_rule}:{},hasToolPolicy:Array.isArray(f.allowed_tools)||Array.isArray(f.denied_tools),...void 0!==e?{approvalDelivery:e}:{},...t?{branches:t}:{}}),Array.isArray(f.depends_on)?f.depends_on:[]))"string"==typeof r&&0!==r.length&&m.push({id:"".concat(r,"->").concat(f.id),source:r,target:f.id})}return{nodes:h,edges:m}}(e),a=function(e){var t,r,n;let a=null!=(t=e.direction)?t:"LR",l=new M.Ay.graphlib.Graph;for(let t of(l.setDefaultEdgeLabel(()=>({})),l.setGraph({rankdir:a,ranksep:null!=(r=e.rankSep)?r:"LR"===a?100:80,nodesep:null!=(n=e.nodeSep)?n:"LR"===a?40:60,marginx:20,marginy:20}),e.nodes))l.setNode(t.id,{width:200,height:64});for(let t of e.edges)l.setEdge(t.source,t.target);M.Ay.layout(l);let s=e.nodes.map(e=>{var t,r,n,a;let s=l.node(e.id),o=(null!=(t=null==s?void 0:s.x)?t:0)-100,i=(null!=(r=null==s?void 0:s.y)?r:0)-32;return{...e,position:{x:o,y:i},width:null!=(n=null==s?void 0:s.width)?n:200,height:null!=(a=null==s?void 0:s.height)?a:64}}),o=0,i=0;for(let e of s)o=Math.max(o,e.position.x+e.width),i=Math.max(i,e.position.y+e.height);return{nodes:s,edges:e.edges,bounds:{width:o,height:i}}}({nodes:r,edges:n}),l=function(e){let t=e._meta;if(!t||"object"!=typeof t)return{};let r=t.layout;if(!r||"object"!=typeof r)return{};let n={};for(let[e,t]of Object.entries(r))t&&"object"==typeof t&&"number"==typeof t.x&&"number"==typeof t.y&&(n[e]={x:t.x,y:t.y});return n}(e);if(0===Object.keys(l).length)return a;let s=0,o=0;return{nodes:a.nodes.map(e=>{let t=l[e.id],r=null!=t?t:e.position,n={...e,position:r};return s=Math.max(s,r.x+e.width),o=Math.max(o,r.y+e.height),n}),edges:a.edges,bounds:{width:s,height:o}}}(x)}catch(e){return null}},[x]),k=(0,a.useMemo)(()=>w?w.nodes.map(e=>{var t,r;let n=null!=(t=null==u?void 0:u.has(e.id))&&t,a=null==c?void 0:c[e.id],l=null==d?void 0:d[e.id],s=(r=null==l?void 0:l.status)?"workflow-node-status workflow-node-status-".concat(r):"workflow-node-status";return{id:e.id,type:"workflow",position:e.position,data:{raw:e,statusEntry:l,issues:a,inCycle:n},className:s,style:{background:"var(--surface, #0f1117)",color:"var(--text-primary, #e5e7eb)",border:n?"2px dashed #ef4444":"1.5px solid ".concat(er[e.variant]),borderRadius:8,padding:0,width:e.width,fontSize:11,textAlign:"left"}}}):[],[w,d,c,u]),N=(0,a.useMemo)(()=>({workflow:ec}),[]),C=(0,a.useMemo)(()=>w?w.edges.map(e=>{let t=(null==u?void 0:u.has(e.source))===!0&&u.has(e.target);return{id:e.id,source:e.source,target:e.target,animated:!1,style:t?{stroke:"#ef4444",strokeWidth:2,strokeDasharray:"6 4"}:{stroke:"var(--text-tertiary, #6b7280)",strokeWidth:1.5}}}):[],[w,u]),S=(0,a.useCallback)(e=>{s&&e.source&&e.target&&j(t=>(function(e,t,r){var n;if(t===r)return e;let a=(null!=(n=e.nodes)?n:[]).map(e=>{if(e.id!==r)return e;let n=Array.isArray(e.depends_on)?[...e.depends_on]:[];return n.includes(t)?e:(n.push(t),{...e,depends_on:n})});return{...e,nodes:a}})(t,e.source,e.target))},[s,j]),A=(0,a.useCallback)(e=>{if(!s)return;let t=e.filter(e=>"remove"===e.type);if(t.length>0)return void j(e=>t.reduce((e,t)=>Y(e,t.id),e));let r=e.filter(e=>"position"===e.type&&!1===e.dragging&&void 0!==e.position);0!==r.length&&j(e=>r.reduce((e,t)=>(function(e,t,r){var n,a;if(!(null!=(n=e.nodes)?n:[]).find(e=>e.id===t))return e;let l=e._meta&&"object"==typeof e._meta?{...e._meta}:{},s=l.layout&&"object"==typeof l.layout?{...l.layout}:{},o=new Set((null!=(a=e.nodes)?a:[]).map(e=>e.id));for(let e of Object.keys(s))o.has(e)||delete s[e];return s[t]={x:Math.round(r.x),y:Math.round(r.y)},l.layout=s,{...e,_meta:l}})(e,t.id,t.position),e))},[s,j]),E=(0,a.useCallback)(e=>{if(!s)return;let t=e.filter(e=>"remove"===e.type);0!==t.length&&j(e=>t.reduce((e,t)=>{var r;let[n,a]=t.id.split("->");if(!n||!a)return e;let l=(null!=(r=e.nodes)?r:[]).map(e=>{if(e.id!==a||!Array.isArray(e.depends_on))return e;let t=e.depends_on.filter(e=>e!==n);if(t.length===e.depends_on.length)return e;if(0===t.length){let{depends_on:t,...r}=e;return r}return{...e,depends_on:t}});return{...e,nodes:l}},e))},[s,j]),[_,O]=(0,a.useState)(!1),I=(0,a.useCallback)(e=>{j(t=>J(t,e)),O(!1)},[j]),L=(0,a.useCallback)(e=>{j(t=>e.core?J(t,e.kind):{...t,nodes:[...t.nodes,{id:U(t,"unknown"),kind:e.kind,inputs:{}}]})},[j]);var P,R=(0,a.useMemo)(()=>{if(!s)return[];let e=[];return e.push({key:"n",handler:()=>O(e=>!e)}),e.push({key:"t",shift:!0,alt:!0,handler:()=>j(e=>V(e))}),e.push({key:"Escape",handler:()=>O(!1),preventDefault:!1}),e.push({key:"d",metaOrCtrl:!0,handler:()=>{let e=y[0];e&&j(t=>(function(e,t){var r,n;let a=(null!=(r=e.nodes)?r:[]).find(e=>e.id===t);if(!a)return e;let l=U(e,G(a)),{id:s,depends_on:o,...i}=a,d={...i,id:l};return{...e,nodes:[...null!=(n=e.nodes)?n:[],d]}})(t,e))}}),e.push({key:"F2",handler:()=>{let e=y[0];e&&i&&i(e)}}),m&&e.push({key:"Enter",metaOrCtrl:!0,handler:()=>m()}),e},[s,j,o,i,m,y]),D={enabled:!0===s};let F=null==(P=null==D?void 0:D.enabled)||P;return((0,a.useEffect)(()=>{if(!F||0===R.length)return;let e=e=>{if(!function(e){if(!e||!e.tagName)return!1;let t=e.tagName.toLowerCase();return"input"===t||"textarea"===t||e.isContentEditable}(e.target)){for(let t of R)if(function(e,t){if(e.key.toLowerCase()!==t.key.toLowerCase())return!1;if(e.metaOrCtrl){if(!(t.metaKey||t.ctrlKey))return!1}else if(void 0!==e.meta&&e.meta!==t.metaKey||void 0!==e.ctrl&&e.ctrl!==t.ctrlKey)return!1;return(void 0===e.alt||e.alt===t.altKey)&&(void 0===e.shift||e.shift===t.shiftKey)}(t,e)){!1!==t.preventDefault&&e.preventDefault(),t.handler(e);return}}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[F,R]),g)?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-[11px] text-text-tertiary",children:"YAML parse failed — switch to YAML view to fix."}):x?0===k.length?(0,n.jsxs)("div",{className:"relative flex h-full items-center justify-center text-[11px] text-text-tertiary",children:[s&&(0,n.jsx)(ea,{palette:t,onAdd:L}),s?"No nodes yet — pick a variant from the palette.":"No nodes yet — switch to YAML view to add one."]}):(0,n.jsxs)("div",{className:"relative h-full w-full",children:[s&&(0,n.jsx)(ea,{palette:t,onAdd:L}),s&&(0,n.jsx)(ei,{onTidy:()=>j(e=>V(e))}),s&&_&&(0,n.jsx)(ed,{onPick:I,onClose:()=>O(!1)}),(0,n.jsxs)(T.Gc,{nodes:k,edges:C,nodeTypes:N,nodesDraggable:null!=s&&s,nodesConnectable:null!=s&&s,elementsSelectable:null!=s&&s,deleteKeyCode:s?["Backspace","Delete"]:null,onConnect:s?S:void 0,onNodesChange:s?A:void 0,onEdgesChange:s?E:void 0,onNodeClick:i?(e,t)=>i(t.id):void 0,onSelectionChange:e=>{let{nodes:t}=e;return v(t.map(e=>e.id))},proOptions:{hideAttribution:!0},connectionLineComponent:s?el:void 0,fitView:!0,children:[(0,n.jsx)(T.VS,{variant:T._5.Dots,gap:16,size:1}),(0,n.jsx)(T.H2,{showInteractive:!1}),void 0!==p&&(0,n.jsx)(es,{focusNodeId:null!=p?p:null,focusNonce:null!=h?h:0}),(0,n.jsx)(eo,{selectedIds:y})]})]}):(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-[11px] text-text-tertiary",children:"Parsing…"})}function ea(e){let{palette:t,onAdd:r}=e,a=[{v:"prompt",label:"+ prompt"},{v:"bash",label:"+ bash"},{v:"skill",label:"+ skill"},{v:"cft",label:"+ cft"},{v:"approval",label:"+ approval"},{v:"if",label:"+ if"},{v:"switch",label:"+ switch"},{v:"iteration",label:"+ loop"},{v:"classify",label:"+ classify"},{v:"extract",label:"+ extract"},{v:"set",label:"+ set"},{v:"filter",label:"+ filter"},{v:"template",label:"+ template"},{v:"http",label:"+ http"},{v:"scheduleTrigger",label:"+ schedule"},{v:"webhookTrigger",label:"+ webhook"}];return(0,n.jsx)("div",{className:"absolute left-3 top-3 z-10 flex flex-col gap-1 rounded-md border border-border bg-surface-elevated p-1 shadow-md",children:(null!=t?t:a.map(e=>{let{v:t}=e;return{graph:"workflow",kind:t,core:!0,plugin:null,description:""}})).map(e=>{var t,l;return(0,n.jsxs)("button",{type:"button",onClick:()=>r(e),className:"rounded px-2 py-0.5 text-left text-[10px] text-text-tertiary transition-colors hover:bg-surface hover:text-text-primary",style:{minWidth:80},children:[null!=(l=null==(t=a.find(t=>{let{v:r}=t;return r===e.kind}))?void 0:t.label)?l:"+ ".concat(e.kind),e.plugin&&(0,n.jsx)("span",{className:"ml-1 rounded bg-accent/15 px-1 text-accent",children:e.plugin})]},e.kind)})})}function el(e){let{fromX:t,fromY:r,toX:a,toY:l}=e;return(0,n.jsxs)("g",{className:"workflow-edge-pending",children:[(0,n.jsx)("path",{d:"M ".concat(t,",").concat(r," C ").concat(t+60,",").concat(r," ").concat(a-60,",").concat(l," ").concat(a,",").concat(l),fill:"none",stroke:"var(--accent, #8b5cf6)",strokeWidth:1.8,strokeDasharray:"4 3"}),(0,n.jsx)("circle",{cx:a,cy:l,r:4,fill:"var(--accent, #8b5cf6)"})]})}function es(e){let{focusNodeId:t,focusNonce:r}=e,n=(0,T.VH)();return(0,a.useEffect)(()=>{if(!t)return;let e=setTimeout(()=>{n.fitView({nodes:[{id:t}],duration:300,padding:.3})},0);return()=>{clearTimeout(e)}},[t,r,n]),null}function eo(e){let{selectedIds:t}=e,r=(0,T.VH)(),n=t.join(",");return(0,a.useEffect)(()=>{if(t.length<=1)return;let e=setTimeout(()=>{r.fitView({nodes:t.map(e=>({id:e})),duration:300,padding:.25})},0);return()=>{clearTimeout(e)}},[n,r]),null}function ei(e){let{onTidy:t}=e;return(0,n.jsx)("button",{type:"button",onClick:t,title:"Tidy-up auto-layout (Shift+Alt+T)",className:"absolute right-3 top-3 z-10 rounded-md border border-border bg-surface-elevated px-2 py-1 text-[10px] text-text-tertiary shadow-md hover:bg-surface hover:text-text-primary",children:"✨ Tidy"})}function ed(e){let{onPick:t,onClose:r}=e,[l,s]=(0,a.useState)(""),o=[{v:"prompt",label:"prompt",help:"Run an LLM prompt with the run context."},{v:"bash",label:"bash",help:"Run a shell snippet."},{v:"skill",label:"skill",help:"Invoke a registered skill (e.g. omni-digest)."},{v:"cft",label:"cft",help:"Run a CFT (e.g. pdca, swot)."},{v:"approval",label:"approval",help:"Pause for human approval."},{v:"if",label:"if",help:"Branch on a boolean condition (then / else)."},{v:"switch",label:"switch",help:"N-way branch on an expression value."},{v:"iteration",label:"iteration",help:"Run a bash body for each element of an array."},{v:"classify",label:"classify",help:"LLM picks one class label from a list."},{v:"extract",label:"extract",help:"LLM fills a JSON schema from free text."},{v:"set",label:"set",help:"Build a record of derived values."},{v:"filter",label:"filter",help:"Keep array elements where a condition holds."},{v:"template",label:"template",help:"{{var}} substitution into a string template."},{v:"http",label:"http",help:"HTTP request (GET/POST/...). Parsed JSON output."},{v:"scheduleTrigger",label:"schedule",help:"Cron / interval trigger (daemon-side dispatch v2)."},{v:"webhookTrigger",label:"webhook",help:"HTTP entry point (daemon-side dispatch v2)."}].filter(e=>e.label.includes(l.toLowerCase())||e.help.toLowerCase().includes(l.toLowerCase()));return(0,n.jsxs)("div",{className:"absolute right-0 top-0 z-20 flex h-full w-72 flex-col border-l border-border bg-surface-elevated shadow-xl",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between border-b border-border px-3 py-2",children:[(0,n.jsx)("span",{className:"text-xs font-semibold",children:"Add node"}),(0,n.jsx)("button",{type:"button",onClick:r,className:"text-[11px] text-text-tertiary hover:text-text-primary",title:"Close (Esc)",children:"✕"})]}),(0,n.jsx)("div",{className:"border-b border-border px-3 py-2",children:(0,n.jsx)("input",{type:"text",value:l,onChange:e=>s(e.target.value),placeholder:"Search variants…",autoFocus:!0,className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs"})}),(0,n.jsxs)("ul",{className:"flex-1 overflow-y-auto px-2 py-2",children:[0===o.length&&(0,n.jsx)("li",{className:"px-2 py-1 text-[11px] text-text-tertiary",children:"No matches."}),o.map(e=>(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",onClick:()=>t(e.v),className:"flex w-full flex-col items-start gap-0.5 rounded px-2 py-1.5 text-left text-[11px] hover:bg-surface",children:[(0,n.jsx)("span",{className:"inline-block rounded px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-wider text-white",style:{background:er[e.v]},children:e.label}),(0,n.jsx)("span",{className:"text-text-tertiary",children:e.help})]})},e.v))]})]})}function ec(e){let{data:t}=e,{raw:r,statusEntry:a,issues:l}=t,s=(0,T.Pj)(e=>e.transform[2]<.7),o=r.branches;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(T.h7,{type:"target",position:E.yX.Left}),s?(0,n.jsx)(eu,{raw:r,statusEntry:a}):function(e,t,r){var a,l,s,o;let i=t?Z[t.status]:null,d=(s=e.approvalDelivery)&&null!=(o=ee[s])?o:null,c=t?"Last run: ".concat(null!=(a=null==i?void 0:i.label)?a:t.status)+(void 0!==t.durationMs?" \xb7 ".concat(t.durationMs,"ms"):"")+(t.error?" \xb7 ".concat(t.error):"")+(t.reason?" \xb7 ".concat(t.reason):""):void 0,u=null!=(l=null==r?void 0:r.length)?l:0,p=u>0?"".concat(u," validation issue").concat(1===u?"":"s",":\n")+r.map(e=>"\xb7 ".concat(e.message)).join("\n"):void 0;return(0,n.jsxs)("div",{style:{padding:"6px 8px"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:2},children:[(0,n.jsx)("span",{style:{display:"inline-block",padding:"0 5px",borderRadius:3,fontSize:9,fontWeight:600,textTransform:"uppercase",letterSpacing:.4,background:er[e.variant],color:"white"},children:e.badge}),(0,n.jsx)("span",{style:{fontWeight:500,fontSize:11},children:e.id}),i&&(0,n.jsx)("span",{"aria-label":c,title:c,style:{display:"inline-block",width:8,height:8,borderRadius:"50%",background:i.dot,flexShrink:0,boxShadow:(null==t?void 0:t.status)==="running"?"0 0 0 2px ".concat(i.dot,"33"):void 0}}),u>0&&(0,n.jsx)("span",{"aria-label":p,title:p,style:{fontSize:10,color:"#ef4444",fontWeight:700,flexShrink:0},children:"⚠"}),d&&(0,n.jsx)("span",{"aria-label":"delivery: ".concat(e.approvalDelivery),title:"Delivery: ".concat(e.approvalDelivery),style:{fontSize:10,marginLeft:"auto",flexShrink:0},children:d})]}),e.preview&&(0,n.jsx)("div",{style:{fontSize:10,opacity:.75,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:e.preview}),(e.hasWhen||e.triggerRule||e.hasToolPolicy)&&(0,n.jsxs)("div",{style:{display:"flex",gap:4,marginTop:3,fontSize:9,opacity:.7},children:[e.hasWhen&&(0,n.jsx)("span",{children:"when"}),e.triggerRule&&(0,n.jsx)("span",{children:e.triggerRule}),e.hasToolPolicy&&(0,n.jsx)("span",{children:"tools"})]})]})}(r,a,l),o&&o.length>0?o.map((e,t)=>{let r=(t+1)/(o.length+1)*100;return(0,n.jsx)(T.h7,{type:"source",position:E.yX.Right,id:e,style:{top:"".concat(r,"%")},children:(0,n.jsx)("span",{"aria-hidden":!0,style:{position:"absolute",right:14,top:-2,fontSize:8,color:"var(--text-tertiary, #6b7280)",pointerEvents:"none",whiteSpace:"nowrap"},children:e})},e)}):(0,n.jsx)(T.h7,{type:"source",position:E.yX.Right})]})}function eu(e){let{raw:t,statusEntry:r}=e,a=r?Z[r.status]:null;return(0,n.jsxs)("div",{style:{padding:"4px 8px",display:"flex",alignItems:"center",gap:6},children:[(0,n.jsx)("span",{style:{display:"inline-block",padding:"0 5px",borderRadius:3,fontSize:9,fontWeight:600,textTransform:"uppercase",letterSpacing:.4,background:er[t.variant],color:"white"},children:t.badge}),(0,n.jsx)("span",{style:{fontSize:11,fontWeight:500},children:t.id}),a&&(0,n.jsx)("span",{style:{display:"inline-block",width:8,height:8,borderRadius:"50%",background:a.dot,marginLeft:"auto"}})]})}E.rN;var ep=r(72754),eh=r(79167),em=r(93981),ex=r(99608),ef=r(67770);function eg(e){var t;let{result:r,onApply:a,onRefine:l,onCancel:s}=e,o=null!=(t=r.yaml)?t:"";return(0,n.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 px-4 py-6",role:"dialog","aria-modal":"true",onClick:s,children:(0,n.jsxs)("div",{className:"flex max-h-[80vh] w-full max-w-3xl flex-col gap-3 rounded-lg border border-border bg-surface-elevated p-4 shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,n.jsxs)("header",{className:"flex items-center justify-between",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("span",{className:"rounded bg-surface px-1.5 py-0.5 text-[10px] uppercase tracking-wide text-text-tertiary",children:"Synth preview"}),r.workflowName&&(0,n.jsx)("span",{className:"font-mono text-sm font-medium text-text-primary",children:r.workflowName}),r.repaired&&(0,n.jsx)("span",{className:"rounded-full border border-warning/30 bg-warning/10 px-2 py-0.5 text-[10px] text-warning",children:"self-repaired"})]}),(0,n.jsx)("button",{type:"button",onClick:s,className:"rounded p-1 text-text-tertiary hover:bg-surface hover:text-text-primary","aria-label":"Cancel",children:(0,n.jsx)(ep.A,{className:"h-4 w-4"})})]}),r.triggerSummary&&(0,n.jsxs)("div",{className:"rounded-md border border-accent/30 bg-accent/10 px-3 py-2 text-xs text-accent",children:[(0,n.jsx)("span",{className:"font-medium",children:"Trigger: "}),r.triggerSummary]}),!r.ok&&r.error&&(0,n.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-error/40 bg-error/10 px-3 py-2 text-xs text-error",children:[(0,n.jsx)(em.A,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,n.jsx)("span",{children:r.error})]}),(0,n.jsx)("div",{className:"flex-1 overflow-auto rounded-md border border-border bg-surface",children:(0,n.jsx)("pre",{className:"m-0 whitespace-pre p-3 font-mono text-[11px] leading-relaxed text-text-primary",children:o||"(no yaml — synth failed)"})}),(0,n.jsxs)("footer",{className:"flex items-center justify-between gap-2",children:[(0,n.jsx)("span",{className:"text-[11px] text-text-tertiary",children:"Apply writes the YAML into the editor draft. Save (panel footer) commits to disk."}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsxs)("button",{type:"button",onClick:l,className:"flex items-center gap-1 rounded-md border border-border px-3 py-1 text-[11px] text-text-secondary hover:bg-surface",children:[(0,n.jsx)(ex.A,{className:"h-3 w-3"}),"Refine"]}),(0,n.jsx)("button",{type:"button",onClick:s,className:"rounded-md border border-border px-3 py-1 text-[11px] text-text-secondary hover:bg-surface",children:"Cancel"}),(0,n.jsxs)("button",{type:"button",onClick:()=>{o&&a(o,r.workflowName)},disabled:!r.ok||!o,className:"flex items-center gap-1 rounded-md bg-accent px-3 py-1 text-[11px] font-medium text-primary-foreground hover:bg-accent-hover disabled:opacity-50",children:[(0,n.jsx)(ef.A,{className:"h-3 w-3"}),"Apply"]})]})]})]})})}function eb(e){let{currentYaml:t,skills:r,onGenerated:l,onClose:s}=e,[o,i]=(0,a.useState)(""),[d,c]=(0,a.useState)(""),[u,p]=(0,a.useState)(null),h=(0,A.up)(),m=(0,A.hM)(),x=!!(t&&t.trim().length>0),f=h.error instanceof Error?h.error.message:m.error instanceof Error?m.error.message:h.isError||m.isError?"generation failed":null;return(0,n.jsxs)("div",{className:"border-b border-border bg-surface-elevated",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between px-3 py-2",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(b.A,{className:"h-4 w-4 text-accent"}),(0,n.jsx)("span",{className:"text-xs font-medium",children:x?"Refine workflow with AI":"Generate workflow from text"})]}),(0,n.jsx)("button",{type:"button",onClick:s,className:"rounded p-1 text-text-tertiary hover:bg-surface hover:text-text-primary","aria-label":"Close NL prompt",children:(0,n.jsx)(ep.A,{className:"h-3 w-3"})})]}),(0,n.jsxs)("div",{className:"px-3 pb-3",children:[(0,n.jsx)("textarea",{value:o,onChange:e=>i(e.target.value),placeholder:x?'How should this workflow change? e.g. "add a slack notification at the end"':'Describe the workflow. e.g. "Research the latest Apple Silicon benchmarks, summarize, and push to my iPhone."',rows:3,spellCheck:!1,className:"w-full resize-none rounded-md border border-border bg-surface px-2 py-1.5 text-xs leading-snug focus:border-accent focus:outline-none"}),(0,n.jsxs)("div",{className:"mt-2 flex items-center justify-between gap-2",children:[(0,n.jsxs)("select",{value:d,onChange:e=>c(e.target.value),className:"rounded-md border border-border bg-surface px-2 py-1 text-[11px] text-text-secondary focus:border-accent focus:outline-none",title:"LLM provider (default = your user-config)",children:[(0,n.jsx)("option",{value:"",children:"Default provider"}),(0,n.jsx)("option",{value:"anthropic",children:"anthropic"}),(0,n.jsx)("option",{value:"openai",children:"openai"}),(0,n.jsx)("option",{value:"grok",children:"grok"}),(0,n.jsx)("option",{value:"gemini",children:"gemini"}),(0,n.jsx)("option",{value:"local",children:"local"})]}),(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsx)("button",{type:"button",onClick:()=>{if(!o.trim()||m.isPending)return;let e={intent:o.trim(),preview:!0};x&&t&&(e.context="current yaml:\n".concat(t)),m.mutate(e,{onSuccess:e=>p(e)})},disabled:!o.trim()||m.isPending||h.isPending,className:"flex items-center gap-1 rounded-md border border-accent/40 bg-accent/10 px-3 py-1 text-[11px] font-medium text-accent hover:bg-accent/20 disabled:opacity-50",title:"Trigger-aware synth via R3 native skill (cron \xb7 webhook \xb7 discord \xb7 telegram \xb7 manual \xb7 chat all supported)",children:m.isPending?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(j.A,{className:"h-3 w-3 animate-spin"}),"Synthing…"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(eh.A,{className:"h-3 w-3"}),"Synth (trigger-aware)"]})}),(0,n.jsx)("button",{type:"button",onClick:()=>{if(!o.trim()||h.isPending)return;let e={prompt:o.trim()};d&&(e.provider=d),r&&r.length>0&&(e.skills=r),x&&t&&(e.currentYaml=t),h.mutate(e,{onSuccess:e=>{l(e)}})},disabled:!o.trim()||h.isPending||m.isPending,className:"flex items-center gap-1 rounded-md bg-accent px-3 py-1 text-[11px] font-medium text-primary-foreground hover:bg-accent-hover disabled:opacity-50",children:h.isPending?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(j.A,{className:"h-3 w-3 animate-spin"}),"Generating…"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(b.A,{className:"h-3 w-3"}),x?"Refine":"Generate"]})})]})]}),f&&(0,n.jsxs)("div",{className:"mt-2 flex items-start gap-1.5 rounded-md border border-error/40 bg-error/10 px-2 py-1 text-[11px] text-error",children:[(0,n.jsx)(em.A,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,n.jsx)("span",{children:f})]}),u&&(0,n.jsx)(eg,{result:u,onApply:(e,t)=>{p(null),l({yaml:e,warnings:[],raw:e,definition:void 0})},onRefine:()=>p(null),onCancel:()=>p(null)}),h.data&&h.data.warnings.length>0&&(0,n.jsx)("ul",{className:"mt-2 max-h-24 overflow-y-auto rounded-md border border-warning/40 bg-warning/10 px-2 py-1 text-[11px] text-warning",children:h.data.warnings.slice(0,5).map((e,t)=>(0,n.jsxs)("li",{className:"flex items-start gap-1",children:[(0,n.jsx)(em.A,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,n.jsx)("span",{children:e})]},t))})]})]})}let ey={valid:"bg-success/10 text-success border-success/30",warning:"bg-warning/10 text-warning border-warning/30",error:"bg-error/10 text-error border-error/30"};function ev(e){let{variantLabel:t,validationStatus:r=null,validationMessage:a,children:l}=e;return(0,n.jsxs)("div",{className:"rounded-md border border-border bg-surface-elevated",children:[(0,n.jsxs)("header",{className:"flex items-center justify-between border-b border-border px-3 py-2",children:[(0,n.jsx)("span",{className:"rounded bg-surface px-1.5 py-0.5 text-[10px] uppercase tracking-wide text-text-tertiary",children:t}),r&&(0,n.jsx)("span",{className:"rounded-full border px-2 py-0.5 text-[10px] ".concat(ey[r]),role:"status",children:null!=a?a:r})]}),(0,n.jsx)("div",{className:"grid grid-cols-1 gap-2 px-3 py-3 md:grid-cols-2",children:l})]})}function ej(e){let{label:t,full:r,hint:a,children:l}=e;return(0,n.jsxs)("label",{className:"flex flex-col gap-1 ".concat(r?"md:col-span-2":""),children:[(0,n.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-text-tertiary",children:t}),l,a&&(0,n.jsx)("span",{className:"text-[10px] text-text-tertiary",children:a})]})}function ew(e){let t=null==e?void 0:e.scheduleTrigger;return t&&"object"==typeof t?{type:"cron"===t.type?"cron":"interval",cron:"string"==typeof t.cron?t.cron:void 0,interval:"number"==typeof t.interval?t.interval:void 0,timezone:"string"==typeof t.timezone?t.timezone:void 0,jitter_seconds:"number"==typeof t.jitter_seconds?t.jitter_seconds:void 0,max_runs:"number"==typeof t.max_runs?t.max_runs:void 0,enabled:"boolean"==typeof t.enabled?t.enabled:void 0}:{type:"interval",interval:36e5}}function ek(e){var t,r,l,s,o,i;let{definition:d,nodeId:c,onChange:u}=e,p=(null!=(t=d.nodes)?t:[]).find(e=>e.id===c),h=ew(p),[m,x]=(0,a.useState)(h.type),[f,g]=(0,a.useState)(null!=(r=h.cron)?r:"0 9 * * *"),[b,y]=(0,a.useState)(String(null!=(l=h.interval)?l:36e5)),[v,j]=(0,a.useState)(null!=(s=h.timezone)?s:"Asia/Seoul"),[w,k]=(0,a.useState)(String(null!=(o=h.jitter_seconds)?o:"")),[N,C]=(0,a.useState)(String(null!=(i=h.max_runs)?i:"")),[S,A]=(0,a.useState)(!1!==h.enabled);(0,a.useEffect)(()=>{let e=ew(p);x(e.type),e.cron&&g(e.cron),"number"==typeof e.interval&&y(String(e.interval)),e.timezone&&j(e.timezone),k("number"==typeof e.jitter_seconds?String(e.jitter_seconds):""),C("number"==typeof e.max_runs?String(e.max_runs):""),A(!1!==e.enabled)},[c,p]);let T=(0,a.useCallback)(()=>{let e=Number(b),t=""===w?void 0:Number(w),r=""===N?void 0:Number(N);return{type:m,cron:"cron"===m?f.trim():void 0,interval:"interval"===m&&Number.isFinite(e)?e:void 0,timezone:v.trim()||void 0,jitter_seconds:Number.isFinite(t)?t:void 0,max_runs:Number.isFinite(r)?r:void 0,enabled:S}},[m,f,b,v,w,N,S]),E=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(p)return E.current&&clearTimeout(E.current),E.current=setTimeout(()=>{u(function(e,t,r){var n;let a={type:r.type};"cron"===r.type&&r.cron&&(a.cron=r.cron),"interval"===r.type&&"number"==typeof r.interval&&(a.interval=r.interval),r.timezone&&(a.timezone=r.timezone),"number"==typeof r.jitter_seconds&&(a.jitter_seconds=r.jitter_seconds),"number"==typeof r.max_runs&&(a.max_runs=r.max_runs),"boolean"==typeof r.enabled&&(a.enabled=r.enabled);let l=(null!=(n=e.nodes)?n:[]).map(e=>e.id===t?{...e,scheduleTrigger:a}:e);return{...e,nodes:l}}(d,c,T()))},500),()=>{E.current&&clearTimeout(E.current)}},[p,c,d,T,u]);let M="cron"===m?z(f):null,_=Number(b)/1e3,O=S&&("cron"!==m||(null==M?void 0:M.matched))?"valid":"warning",I=S?"cron"===m?(null==M?void 0:M.matched)?"cron ok":"custom cron":Number.isFinite(_)&&_>0?"every ".concat(_,"s"):"interval invalid":"disabled";return(0,n.jsxs)(ev,{variantLabel:"Schedule",validationStatus:O,validationMessage:I,children:[(0,n.jsx)(ej,{label:"type",children:(0,n.jsxs)("select",{value:m,onChange:e=>x(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:[(0,n.jsx)("option",{value:"cron",children:"cron"}),(0,n.jsx)("option",{value:"interval",children:"interval"})]})}),(0,n.jsx)(ej,{label:"enabled",children:(0,n.jsxs)("label",{className:"flex items-center gap-2 text-xs",children:[(0,n.jsx)("input",{type:"checkbox",checked:S,onChange:e=>A(e.target.checked)}),(0,n.jsx)("span",{className:"text-text-tertiary",children:S?"on":"off"})]})}),"cron"===m&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ej,{label:"presets",full:!0,children:(0,n.jsx)("div",{className:"flex flex-wrap gap-1",children:q.map(e=>(0,n.jsx)("button",{type:"button",onClick:()=>g(e.expression),"data-preset":e.id,className:"rounded-md border border-border px-2 py-0.5 font-mono text-[10px] text-text-tertiary hover:bg-surface",children:e.label},e.id))})}),(0,n.jsx)(ej,{label:"cron expression",full:!0,hint:null==M?void 0:M.text,children:(0,n.jsx)("input",{value:f,onChange:e=>g(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})})]}),"interval"===m&&(0,n.jsx)(ej,{label:"interval (ms)",hint:"= ".concat(_||"?","s"),children:(0,n.jsx)("input",{type:"number",min:1e3,value:b,onChange:e=>y(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(ej,{label:"timezone (IANA)",hint:"e.g. Asia/Seoul \xb7 UTC \xb7 America/Los_Angeles",children:(0,n.jsx)("input",{value:v,onChange:e=>j(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(ej,{label:"jitter (seconds \xb7 optional)",children:(0,n.jsx)("input",{type:"number",min:0,value:w,onChange:e=>k(e.target.value),placeholder:"e.g. 30",className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(ej,{label:"max runs (optional)",children:(0,n.jsx)("input",{type:"number",min:1,step:1,value:N,onChange:e=>C(e.target.value),placeholder:"unlimited",className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})})]})}let eN=["GET","POST","PUT","PATCH","DELETE"];function eC(e){let t=null==e?void 0:e.webhookTrigger;if(!t||"object"!=typeof t)return{method:"POST",path:"/hooks/example",auth:"none"};let r=eN.includes(t.method)?t.method:"POST",n="string"==typeof t.path?t.path:"/hooks/example",a=t.auth&&"object"==typeof t.auth?t.auth:null;return a&&"bearer"===a.type?{method:r,path:n,auth:"bearer",token:"string"==typeof a.token?a.token:""}:a&&"basic"===a.type?{method:r,path:n,auth:"basic",username:"string"==typeof a.username?a.username:"",password:"string"==typeof a.password?a.password:""}:{method:r,path:n,auth:"none"}}function eS(e){var t,r,l,s;let{definition:o,nodeId:i,onChange:d}=e,c=(null!=(t=o.nodes)?t:[]).find(e=>e.id===i),u=eC(c),[p,h]=(0,a.useState)(u.method),[m,x]=(0,a.useState)(u.path),[f,g]=(0,a.useState)(u.auth),[b,y]=(0,a.useState)(null!=(r=u.token)?r:""),[v,j]=(0,a.useState)(null!=(l=u.username)?l:""),[w,k]=(0,a.useState)(null!=(s=u.password)?s:"");(0,a.useEffect)(()=>{var e,t,r;let n=eC(c);h(n.method),x(n.path),g(n.auth),y(null!=(e=n.token)?e:""),j(null!=(t=n.username)?t:""),k(null!=(r=n.password)?r:"")},[i,c]);let N=(0,a.useCallback)(()=>({method:p,path:m,auth:f,token:b,username:v,password:w}),[p,m,f,b,v,w]),C=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(c)return C.current&&clearTimeout(C.current),C.current=setTimeout(()=>{d(function(e,t,r){var n,a,l;let s={method:r.method,path:r.path};"bearer"===r.auth&&r.token?s.auth={type:"bearer",token:r.token}:"basic"===r.auth&&(r.username||r.password)&&(s.auth={type:"basic",username:null!=(n=r.username)?n:"",password:null!=(a=r.password)?a:""});let o=(null!=(l=e.nodes)?l:[]).map(e=>e.id===t?{...e,webhookTrigger:s}:e);return{...e,nodes:o}}(o,i,N()))},500),()=>{C.current&&clearTimeout(C.current)}},[c,i,o,N,d]);let S=m.trim()?m.startsWith("/")?/\s/.test(m)?{ok:!1,message:"no whitespace in path"}:{ok:!0,message:"path ok"}:{ok:!1,message:"path must start with '/'"}:{ok:!1,message:"path required"},A=S.ok?"valid":"error",T="".concat(p," ").concat(m);return(0,n.jsxs)(ev,{variantLabel:"Webhook",validationStatus:A,validationMessage:S.message,children:[(0,n.jsx)(ej,{label:"method",children:(0,n.jsx)("select",{value:p,onChange:e=>h(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:eN.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})}),(0,n.jsx)(ej,{label:"path",hint:"URL: ".concat(T),children:(0,n.jsx)("input",{value:m,onChange:e=>x(e.target.value),placeholder:"/hooks/deploy",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(ej,{label:"auth",full:!0,children:(0,n.jsx)("div",{className:"flex gap-2 text-xs",children:["none","bearer","basic"].map(e=>(0,n.jsxs)("label",{className:"flex items-center gap-1",children:[(0,n.jsx)("input",{type:"radio",name:"webhook-auth",checked:f===e,onChange:()=>g(e)}),(0,n.jsx)("span",{className:"text-text-tertiary",children:e})]},e))})}),"bearer"===f&&(0,n.jsx)(ej,{label:"token",full:!0,children:(0,n.jsx)("input",{type:"password",value:b,onChange:e=>y(e.target.value),placeholder:"bearer token",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),"basic"===f&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ej,{label:"username",children:(0,n.jsx)("input",{value:v,onChange:e=>j(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(ej,{label:"password",children:(0,n.jsx)("input",{type:"password",value:w,onChange:e=>k(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})})]})]})}let eA=["GET","POST","PUT","PATCH","DELETE","HEAD"];function eT(e){let t=null==e?void 0:e.http;if(!t||"object"!=typeof t)return{method:"GET",url:"https://api.example.com/items",headers:[],body:"",auth:"none",timeoutMs:3e4};let r=eA.includes(t.method)?t.method:"GET",n="string"==typeof t.url?t.url:"",a=Object.entries(t.headers&&"object"==typeof t.headers?t.headers:{}).filter(e=>{let[,t]=e;return"string"==typeof t}).map(e=>{let[t,r]=e;return{key:t,value:r}}),l="string"==typeof t.body?t.body:"",s="number"==typeof t.timeout?t.timeout:3e4,o=t.auth&&"object"==typeof t.auth?t.auth:null;return o&&"bearer"===o.type?{method:r,url:n,headers:a,body:l,auth:"bearer",token:"string"==typeof o.token?o.token:"",timeoutMs:s}:o&&"basic"===o.type?{method:r,url:n,headers:a,body:l,auth:"basic",username:"string"==typeof o.username?o.username:"",password:"string"==typeof o.password?o.password:"",timeoutMs:s}:{method:r,url:n,headers:a,body:l,auth:"none",timeoutMs:s}}function eE(e){var t,r,l,s;let{definition:o,nodeId:i,onChange:d}=e,c=(null!=(t=o.nodes)?t:[]).find(e=>e.id===i),u=eT(c),[p,h]=(0,a.useState)(u.method),[m,x]=(0,a.useState)(u.url),[f,g]=(0,a.useState)(u.headers),[b,y]=(0,a.useState)(u.body),[v,j]=(0,a.useState)(u.auth),[w,k]=(0,a.useState)(null!=(r=u.token)?r:""),[N,C]=(0,a.useState)(null!=(l=u.username)?l:""),[S,A]=(0,a.useState)(null!=(s=u.password)?s:""),[T,E]=(0,a.useState)(u.timeoutMs);(0,a.useEffect)(()=>{var e,t,r;let n=eT(c);h(n.method),x(n.url),g(n.headers),y(n.body),j(n.auth),k(null!=(e=n.token)?e:""),C(null!=(t=n.username)?t:""),A(null!=(r=n.password)?r:""),E(n.timeoutMs)},[i,c]);let M=(0,a.useCallback)(()=>({method:p,url:m,headers:f,body:b,auth:v,token:w,username:N,password:S,timeoutMs:T}),[p,m,f,b,v,w,N,S,T]),_=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(c)return _.current&&clearTimeout(_.current),_.current=setTimeout(()=>{d(function(e,t,r){var n,a,l;let s={method:r.method,url:r.url};if(r.headers.length>0){let e={};for(let t of r.headers)t.key.trim()&&(e[t.key.trim()]=t.value);Object.keys(e).length>0&&(s.headers=e)}r.body.trim()&&(s.body=r.body),"bearer"===r.auth&&r.token?s.auth={type:"bearer",token:r.token}:"basic"===r.auth&&(r.username||r.password)&&(s.auth={type:"basic",username:null!=(n=r.username)?n:"",password:null!=(a=r.password)?a:""}),r.timeoutMs&&3e4!==r.timeoutMs&&(s.timeout=r.timeoutMs);let o=(null!=(l=e.nodes)?l:[]).map(e=>e.id===t?{...e,http:s}:e);return{...e,nodes:o}}(o,i,M()))},500),()=>{_.current&&clearTimeout(_.current)}},[c,i,o,M,d]);let O=function(e){if(!e.trim())return{ok:!1,message:"url required"};try{return new URL(e),{ok:!0,message:"url ok"}}catch(e){return{ok:!1,message:"invalid URL"}}}(m),I=O.ok?"valid":"error",L=(e,t,r)=>{g(n=>n.map((n,a)=>a===e?{key:t,value:r}:n))};return(0,n.jsxs)(ev,{variantLabel:"HTTP",validationStatus:I,validationMessage:O.message,children:[(0,n.jsx)(ej,{label:"method",children:(0,n.jsx)("select",{value:p,onChange:e=>h(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:eA.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})}),(0,n.jsx)(ej,{label:"timeout (ms)",hint:"= ".concat(Math.round(T/1e3),"s"),children:(0,n.jsx)("input",{type:"number",min:1e3,max:12e4,step:1e3,value:T,onChange:e=>E(Number(e.target.value)),className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(ej,{label:"url",full:!0,hint:"supports $ARGUMENTS variable",children:(0,n.jsx)("input",{value:m,onChange:e=>x(e.target.value),placeholder:"https://api.example.com/items",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(ej,{label:"headers",full:!0,children:(0,n.jsxs)("div",{className:"flex flex-col gap-1",children:[f.map((e,t)=>(0,n.jsxs)("div",{className:"flex gap-1",children:[(0,n.jsx)("input",{value:e.key,onChange:r=>L(t,r.target.value,e.value),placeholder:"Accept",spellCheck:!1,className:"flex-1 rounded-md border border-border bg-surface px-2 py-0.5 font-mono text-[11px]"}),(0,n.jsx)("input",{value:e.value,onChange:r=>L(t,e.key,r.target.value),placeholder:"application/json",spellCheck:!1,className:"flex-1 rounded-md border border-border bg-surface px-2 py-0.5 font-mono text-[11px]"}),(0,n.jsx)("button",{type:"button",onClick:()=>g(e=>e.filter((e,r)=>r!==t)),className:"rounded px-1.5 text-[11px] text-text-tertiary hover:bg-error/10 hover:text-error","aria-label":"Remove header",children:"\xd7"})]},t)),(0,n.jsx)("button",{type:"button",onClick:()=>g(e=>[...e,{key:"",value:""}]),className:"self-start rounded-md border border-border px-2 py-0.5 text-[10px] text-text-tertiary hover:bg-surface",children:"+ header"})]})}),(0,n.jsx)(ej,{label:"body (string)",full:!0,hint:"GET"===p||"HEAD"===p?"usually empty for GET/HEAD":"JSON / raw text",children:(0,n.jsx)("textarea",{value:b,onChange:e=>y(e.target.value),rows:3,spellCheck:!1,className:"w-full resize-none rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(ej,{label:"auth",full:!0,children:(0,n.jsx)("div",{className:"flex gap-2 text-xs",children:["none","bearer","basic"].map(e=>(0,n.jsxs)("label",{className:"flex items-center gap-1",children:[(0,n.jsx)("input",{type:"radio",name:"http-auth",checked:v===e,onChange:()=>j(e)}),(0,n.jsx)("span",{className:"text-text-tertiary",children:e})]},e))})}),"bearer"===v&&(0,n.jsx)(ej,{label:"token",full:!0,children:(0,n.jsx)("input",{type:"password",value:w,onChange:e=>k(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),"basic"===v&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ej,{label:"username",children:(0,n.jsx)("input",{value:N,onChange:e=>C(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(ej,{label:"password",children:(0,n.jsx)("input",{type:"password",value:S,onChange:e=>A(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})})]})]})}let eM=["message","mention","reaction"];function e_(e){let t=null==e?void 0:e.discordTrigger;return t&&"object"==typeof t?{kind:eM.includes(t.kind)?t.kind:"message",channel:"string"==typeof t.channel?t.channel:void 0,user:"string"==typeof t.user?t.user:void 0,pattern:"string"==typeof t.pattern?t.pattern:void 0}:{kind:"message"}}function eO(e){if(!e)return{ok:!0,message:"no filter"};try{return new RegExp(e),{ok:!0,message:"pattern ok"}}catch(e){return{ok:!1,message:"invalid regex"}}}function eI(e){var t,r,l,s;let{definition:o,nodeId:i,onChange:d}=e,c=(null!=(t=o.nodes)?t:[]).find(e=>e.id===i),u=e_(c),[p,h]=(0,a.useState)(u.kind),[m,x]=(0,a.useState)(null!=(r=u.channel)?r:""),[f,g]=(0,a.useState)(null!=(l=u.user)?l:""),[b,y]=(0,a.useState)(null!=(s=u.pattern)?s:"");(0,a.useEffect)(()=>{var e,t,r;let n=e_(c);h(n.kind),x(null!=(e=n.channel)?e:""),g(null!=(t=n.user)?t:""),y(null!=(r=n.pattern)?r:"")},[i,c]);let v=(0,a.useCallback)(()=>({kind:p,channel:m,user:f,pattern:b}),[p,m,f,b]),j=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(c)return j.current&&clearTimeout(j.current),j.current=setTimeout(()=>{d(function(e,t,r){var n,a,l,s;let o={kind:r.kind};(null==(n=r.channel)?void 0:n.trim())&&(o.channel=r.channel.trim()),(null==(a=r.user)?void 0:a.trim())&&(o.user=r.user.trim()),(null==(l=r.pattern)?void 0:l.trim())&&(o.pattern=r.pattern.trim());let i=(null!=(s=e.nodes)?s:[]).map(e=>e.id===t?{...e,discordTrigger:o}:e);return{...e,nodes:i}}(o,i,v()))},500),()=>{j.current&&clearTimeout(j.current)}},[c,i,o,v,d]);let w=eO(b),k=[m&&"#".concat(m),f&&"@".concat(f),b&&"/".concat(b,"/")].filter(Boolean).join(" \xb7 "),N=w.ok?"valid":"error",C=w.ok?k||"no filters":w.message;return(0,n.jsxs)(ev,{variantLabel:"Discord",validationStatus:N,validationMessage:C,children:[(0,n.jsx)(ej,{label:"kind",children:(0,n.jsx)("select",{value:p,onChange:e=>h(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:eM.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})}),(0,n.jsx)(ej,{label:"channel (name or id)",hint:"e.g. ops \xb7 1234567890",children:(0,n.jsx)("input",{value:m,onChange:e=>x(e.target.value),placeholder:"ops",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(ej,{label:"user (regex \xb7 optional)",hint:"match by username — e.g. .* \xb7 admin",children:(0,n.jsx)("input",{value:f,onChange:e=>g(e.target.value),placeholder:".*",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(ej,{label:"pattern (regex \xb7 optional)",full:!0,hint:"match message body — e.g. ^배포",children:(0,n.jsx)("input",{value:b,onChange:e=>y(e.target.value),placeholder:"^deploy",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})})]})}let eL=["message","command","callback_query"];function eP(e){let t=null==e?void 0:e.telegramTrigger;return t&&"object"==typeof t?{kind:eL.includes(t.kind)?t.kind:"message",chat:"string"==typeof t.chat?t.chat:void 0,user:"string"==typeof t.user?t.user:void 0,command:"string"==typeof t.command?t.command:void 0,pattern:"string"==typeof t.pattern?t.pattern:void 0}:{kind:"message"}}function eR(e){var t,r,l,s,o;let{definition:i,nodeId:d,onChange:c}=e,u=(null!=(t=i.nodes)?t:[]).find(e=>e.id===d),p=eP(u),[h,m]=(0,a.useState)(p.kind),[x,f]=(0,a.useState)(null!=(r=p.chat)?r:""),[g,b]=(0,a.useState)(null!=(l=p.user)?l:""),[y,v]=(0,a.useState)(null!=(s=p.command)?s:""),[j,w]=(0,a.useState)(null!=(o=p.pattern)?o:"");(0,a.useEffect)(()=>{var e,t,r,n;let a=eP(u);m(a.kind),f(null!=(e=a.chat)?e:""),b(null!=(t=a.user)?t:""),v(null!=(r=a.command)?r:""),w(null!=(n=a.pattern)?n:"")},[d,u]);let k=(0,a.useCallback)(()=>({kind:h,chat:x,user:g,command:y,pattern:j}),[h,x,g,y,j]),N=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(u)return N.current&&clearTimeout(N.current),N.current=setTimeout(()=>{c(function(e,t,r){var n,a,l,s,o;let i={kind:r.kind};(null==(n=r.chat)?void 0:n.trim())&&(i.chat=r.chat.trim()),(null==(a=r.user)?void 0:a.trim())&&(i.user=r.user.trim()),"command"===r.kind&&(null==(l=r.command)?void 0:l.trim())&&(i.command=r.command.trim()),(null==(s=r.pattern)?void 0:s.trim())&&(i.pattern=r.pattern.trim());let d=(null!=(o=e.nodes)?o:[]).map(e=>e.id===t?{...e,telegramTrigger:i}:e);return{...e,nodes:d}}(i,d,k()))},500),()=>{N.current&&clearTimeout(N.current)}},[u,d,i,k,c]);let C=eO(j),S=[x&&"@".concat(x),g&&"from:".concat(g),"command"===h&&y&&"/".concat(y),j&&"/".concat(j,"/")].filter(Boolean).join(" \xb7 "),A=C.ok?"valid":"error",T=C.ok?S||"no filters":C.message;return(0,n.jsxs)(ev,{variantLabel:"Telegram",validationStatus:A,validationMessage:T,children:[(0,n.jsx)(ej,{label:"kind",children:(0,n.jsx)("select",{value:h,onChange:e=>m(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:eL.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})}),(0,n.jsx)(ej,{label:"chat (id or @group)",hint:"e.g. @my_group \xb7 -1001234567890",children:(0,n.jsx)("input",{value:x,onChange:e=>f(e.target.value),placeholder:"@my_group",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),"command"===h&&(0,n.jsx)(ej,{label:"command",hint:"match telegram /command (no slash)",full:!0,children:(0,n.jsx)("input",{value:y,onChange:e=>v(e.target.value),placeholder:"summary",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(ej,{label:"user (regex \xb7 optional)",hint:"match by username or id",children:(0,n.jsx)("input",{value:g,onChange:e=>b(e.target.value),placeholder:".*",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(ej,{label:"pattern (regex \xb7 optional)",full:!0,hint:"match message body — e.g. ^배포",children:(0,n.jsx)("input",{value:j,onChange:e=>w(e.target.value),placeholder:"^summarize",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})})]})}function eD(e){let t=null==e?void 0:e.manualTrigger;return t&&"object"==typeof t?{description:"string"==typeof t.description?t.description:void 0}:{}}function eF(e){var t,r;let{definition:l,nodeId:s,onChange:o}=e,i=(null!=(t=l.nodes)?t:[]).find(e=>e.id===s),d=eD(i),[c,u]=(0,a.useState)(null!=(r=d.description)?r:"");(0,a.useEffect)(()=>{var e;u(null!=(e=eD(i).description)?e:"")},[s,i]);let p=(0,a.useCallback)(()=>({description:c}),[c]),h=(0,a.useRef)(null);return(0,a.useEffect)(()=>{if(i)return h.current&&clearTimeout(h.current),h.current=setTimeout(()=>{o(function(e,t,r){var n,a;let l={};(null==(n=r.description)?void 0:n.trim())&&(l.description=r.description.trim());let s=(null!=(a=e.nodes)?a:[]).map(e=>e.id===t?{...e,manualTrigger:l}:e);return{...e,nodes:s}}(l,s,p()))},500),()=>{h.current&&clearTimeout(h.current)}},[i,s,l,p,o]),(0,n.jsxs)(ev,{variantLabel:"Manual",validationStatus:"valid",validationMessage:"explicit run only",children:[(0,n.jsx)(ej,{label:"description (optional)",full:!0,hint:"rendered on the node card \xb7 helps remind future-you why this workflow runs manually",children:(0,n.jsx)("input",{value:c,onChange:e=>u(e.target.value),placeholder:"e.g. Build then deploy on demand",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs"})}),(0,n.jsx)(ej,{label:"behaviour",full:!0,children:(0,n.jsxs)("p",{className:"rounded-md border border-border bg-surface px-2 py-1.5 text-[11px] leading-snug text-text-tertiary",children:["The daemon never auto-subscribes to a Manual trigger. Run it via",(0,n.jsx)("code",{className:"mx-1 rounded bg-surface-elevated px-1 font-mono",children:"elanous wf run <name>"}),"or the PWA ",(0,n.jsx)("span",{className:"font-semibold",children:"▶ Run now"})," button (Group D dry-run)."]})})]})}function ez(e){let t=null==e?void 0:e.chatTrigger;if(!t||"object"!=typeof t)return{path:"/chat",auth:"none",sessionMode:"stateless",streaming:!1};let r="string"==typeof t.path?t.path:"/chat",n=t.auth&&"object"==typeof t.auth?t.auth:null,a=n&&"bearer"===n.type?"bearer":"none",l=n&&"bearer"===n.type&&"string"==typeof n.token?n.token:"";return{path:r,auth:a,token:l,sessionMode:"per-session"===t.sessionMode?"per-session":"stateless",streaming:!0===t.streaming}}function eq(e){var t,r;let{definition:l,nodeId:s,onChange:o}=e,i=(null!=(t=l.nodes)?t:[]).find(e=>e.id===s),d=ez(i),[c,u]=(0,a.useState)(d.path),[p,h]=(0,a.useState)(d.auth),[m,x]=(0,a.useState)(null!=(r=d.token)?r:""),[f,g]=(0,a.useState)(d.sessionMode),[b,y]=(0,a.useState)(d.streaming);(0,a.useEffect)(()=>{var e;let t=ez(i);u(t.path),h(t.auth),x(null!=(e=t.token)?e:""),g(t.sessionMode),y(t.streaming)},[s,i]);let v=(0,a.useCallback)(()=>({path:c,auth:p,token:m,sessionMode:f,streaming:b}),[c,p,m,f,b]),j=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(i)return j.current&&clearTimeout(j.current),j.current=setTimeout(()=>{o(function(e,t,r){var n;let a={path:r.path};"bearer"===r.auth&&r.token&&(a.auth={type:"bearer",token:r.token}),"stateless"!==r.sessionMode&&(a.sessionMode=r.sessionMode),r.streaming&&(a.streaming=!0);let l=(null!=(n=e.nodes)?n:[]).map(e=>e.id===t?{...e,chatTrigger:a}:e);return{...e,nodes:l}}(l,s,v()))},500),()=>{j.current&&clearTimeout(j.current)}},[i,s,l,v,o]);let w=c.trim()?c.startsWith("/")?/\s/.test(c)?{ok:!1,message:"no whitespace in path"}:{ok:!0,message:"path ok"}:{ok:!1,message:"path must start with '/'"}:{ok:!1,message:"path required"},k=w.ok?"valid":"error";return(0,n.jsxs)(ev,{variantLabel:"Chat",validationStatus:k,validationMessage:w.message,children:[(0,n.jsx)(ej,{label:"path",hint:"POST /v1/workflows/<name>".concat(c),children:(0,n.jsx)("input",{value:c,onChange:e=>u(e.target.value),placeholder:"/chat",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(ej,{label:"session mode",children:(0,n.jsxs)("select",{value:f,onChange:e=>g(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:[(0,n.jsx)("option",{value:"stateless",children:"stateless"}),(0,n.jsx)("option",{value:"per-session",children:"per-session"})]})}),(0,n.jsx)(ej,{label:"auth",full:!0,children:(0,n.jsx)("div",{className:"flex gap-2 text-xs",children:["none","bearer"].map(e=>(0,n.jsxs)("label",{className:"flex items-center gap-1",children:[(0,n.jsx)("input",{type:"radio",name:"chat-auth",checked:p===e,onChange:()=>h(e)}),(0,n.jsx)("span",{className:"text-text-tertiary",children:e})]},e))})}),"bearer"===p&&(0,n.jsx)(ej,{label:"token",full:!0,children:(0,n.jsx)("input",{type:"password",value:m,onChange:e=>x(e.target.value),placeholder:"bearer token",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(ej,{label:"streaming response",full:!0,children:(0,n.jsxs)("label",{className:"flex items-center gap-2 text-xs",children:[(0,n.jsx)("input",{type:"checkbox",checked:b,onChange:e=>y(e.target.checked)}),(0,n.jsx)("span",{className:"text-text-tertiary",children:"stream the last-node output as SSE (v2 daemon wire — flag persisted now)"})]})}),(0,n.jsx)(ej,{label:"v2 follow-ups",full:!0,children:(0,n.jsx)("p",{className:"rounded-md border border-border bg-surface px-2 py-1.5 text-[11px] leading-snug text-text-tertiary",children:"v1 = webhook mode minimal. Hosted chat page \xb7 AI memory \xb7 file upload \xb7 multi-response Chat nodes are deferred to v2 (BACKLOG follow-up \xb7 per n8n ChatTrigger 961 LOC reference)."})})]})}let eW=new Set(["type","title","description","default","enum","format","writeOnly","x-multiline","properties","required","items","minLength","maxLength","pattern","minimum","maximum","minItems","maxItems"]),eG=new Set(["string","number","integer","boolean","object","array"]);function eB(e){return null===e||"object"!=typeof e||Array.isArray(e)?null:e}function eH(e){let t=e.type;return"string"==typeof t&&eG.has(t)?t:null}function e$(e,t){return e?"".concat(e,".").concat(t):t}function eK(e,t,r){let[n,...a]=t.split("."),l={...e};if(0===a.length)return void 0===r?delete l[n]:l[n]=r,l;let s=l[n],o=null===s||"object"!=typeof s||Array.isArray(s)?{}:s;return l[n]=eK(o,a.join("."),r),l}function eU(e,t){if(""!==t){if("number"===e.type||"integer"===e.type){let e=Number(t);return Number.isFinite(e)?e:t}return t}}function eJ(e){let{schema:t,value:r,onChange:l}=e,s=(0,a.useMemo)(()=>(function(e){let t=[],r=[],n=new Set;return!function e(a,l,s,o){let i=eB(a);if(!i||n.has(i))return void r.push(l||"(root)");for(let e of(n.add(i),Object.keys(i)))eW.has(e)||r.push(e$(l,e));let d=eH(i);void 0===i.type||d||r.push(e$(l,"type"));let c=null!=d?d:void 0===i.type?eB(i.properties)||Array.isArray(i.required)?"object":void 0!==i.items?"array":null:null;if(l&&c&&t.push({path:l,type:c,label:"string"==typeof i.title?i.title:l.split(".").at(-1),..."string"==typeof i.description?{description:i.description}:{},required:o,...Object.hasOwn(i,"default")?{default:i.default}:{},...Array.isArray(i.enum)?{enum:[...i.enum]}:{},multiline:function(e,t,r){var n;if("textarea"===t.format||"multiline"===t.format||"markdown"===t.format||!0===t["x-multiline"])return!0;if("string"!==e||Array.isArray(t.enum)||"password"===t.format||"secret"===t.format||!0===t.writeOnly)return!1;let a=null!=(n=r.split(".").at(-1))?n:"",l="string"==typeof t.title?t.title:"";return/markdown|body|text/i.test(a)||/markdown|본문/i.test(l)}(c,i,l),secret:"password"===i.format||"secret"===i.format||!0===i.writeOnly}),s<6){if(("object"===d||void 0===i.type)&&eB(i.properties)){let t=new Set(Array.isArray(i.required)?i.required:[]);for(let[r,n]of Object.entries(i.properties))e(n,e$(l,r),s+1,t.has(r))}("array"===d||void 0===i.type)&&void 0!==i.items&&e(i.items,"".concat(l,"[]"),s+1,!1)}n.delete(i)}(e,"",0,!1),{fields:t,unsupported:r}})(t),[t]),{leaves:o,arrays:i}=(0,a.useMemo)(()=>(function(e){let t=[],r=[];for(let n of e)n.path.includes("[]")||("array"===n.type?r.push(n):"object"!==n.type&&t.push(n));return{leaves:t,arrays:r}})(s.fields),[s]),d=(0,a.useMemo)(()=>(function(e,t){let r=[],n=new Set;return!function e(t,a,l,s){let o=eB(t);if(!o||n.has(o))return;n.add(o);let i=eH(o);if(i&&!("object"===i?null!==eB(a):"array"===i?Array.isArray(a):"integer"===i?"number"==typeof a&&Number.isInteger(a):"number"===i?"number"==typeof a&&Number.isFinite(a):typeof a===i)){r.push({path:l,message:"Must be ".concat("integer"===i?"an integer":"a ".concat(i),".")}),n.delete(o);return}if(Array.isArray(o.enum)&&!o.enum.some(e=>(function e(t,r){if(t===r)return!0;if(Array.isArray(t)||Array.isArray(r))return Array.isArray(t)&&Array.isArray(r)&&t.length===r.length&&t.every((t,n)=>e(t,r[n]));let n=eB(t),a=eB(r);if(!n||!a)return!1;let l=Object.keys(n);return l.length===Object.keys(a).length&&l.every(t=>Object.hasOwn(a,t)&&e(n[t],a[t]))})(e,a))&&r.push({path:l,message:"Must be one of the allowed values."}),"string"==typeof a){let e=Array.from(a).length;if("number"==typeof o.minLength&&e<o.minLength&&r.push({path:l,message:"Must have at least ".concat(o.minLength," characters.")}),"number"==typeof o.maxLength&&e>o.maxLength&&r.push({path:l,message:"Must have at most ".concat(o.maxLength," characters.")}),"string"==typeof o.pattern)try{new RegExp(o.pattern).test(a)||r.push({path:l,message:"Does not match the required pattern."})}catch(e){}}"number"==typeof a&&("number"==typeof o.minimum&&a<o.minimum&&r.push({path:l,message:"Must be at least ".concat(o.minimum,".")}),"number"==typeof o.maximum&&a>o.maximum&&r.push({path:l,message:"Must be at most ".concat(o.maximum,".")})),Array.isArray(a)&&("number"==typeof o.minItems&&a.length<o.minItems&&r.push({path:l,message:"Must have at least ".concat(o.minItems," items.")}),"number"==typeof o.maxItems&&a.length>o.maxItems&&r.push({path:l,message:"Must have at most ".concat(o.maxItems," items.")}));let d=eB(a);if(d&&("object"===i||void 0===o.type)){if(Array.isArray(o.required))for(let e of o.required)"string"!=typeof e||Object.hasOwn(d,e)&&void 0!==d[e]||r.push({path:e$(l,e),message:"Required."});if(s<6){let t=eB(o.properties);if(t)for(let[r,n]of Object.entries(t))Object.hasOwn(d,r)&&void 0!==d[r]&&e(n,d[r],e$(l,r),s+1)}}s<6&&("array"===i||void 0===o.type)&&Array.isArray(a)&&void 0!==o.items&&a.forEach((t,r)=>e(o.items,t,"".concat(l,"[").concat(r,"]"),s+1)),n.delete(o)}(e,t,"",0),r})(t,r),[t,r]);return(0,n.jsxs)("div",{className:"col-span-full flex flex-col gap-2","data-schema-form":!0,children:[s.unsupported.length>0&&(0,n.jsxs)("p",{className:"text-[11px] text-warning","data-schema-unsupported":!0,children:["이 노드의 설정 일부는 폼이 다루지 않습니다(",s.unsupported.slice(0,3).join(", "),s.unsupported.length>3?" 외 ".concat(s.unsupported.length-3):"",") — YAML 에서 고치세요."]}),i.length>0&&(0,n.jsxs)("p",{className:"text-[11px] text-text-tertiary",children:["목록 칸(",i.map(e=>e.label).join(", "),")은 YAML 에서 고치세요."]}),o.map(e=>{var t,a;let s,o=function(e,t){let r=e;for(let e of t.split(".")){if(null===r||"object"!=typeof r||Array.isArray(r))return;r=r[e]}return r}(r,e.path),i="schema-".concat(e.path),c=(t=e.path,null==(a=d.find(e=>e.path===t))?void 0:a.message),u="".concat(e.label).concat(e.required?" *":""),p="w-full rounded-md border border-border bg-surface px-2 py-1 text-xs";return s="boolean"===e.type?(0,n.jsx)("input",{id:i,type:"checkbox",checked:!0===o,onChange:t=>l(eK(r,e.path,t.target.checked))}):e.enum&&e.enum.length>0?(0,n.jsxs)("select",{id:i,className:p,value:void 0===o?"":String(o),onChange:t=>{let n=e.enum.find(e=>String(e)===t.target.value);l(eK(r,e.path,""===t.target.value?void 0:n))},children:[(0,n.jsx)("option",{value:"",children:"(비움)"}),e.enum.map(e=>(0,n.jsx)("option",{value:String(e),children:String(e)},String(e)))]}):e.multiline?(0,n.jsx)("textarea",{id:i,rows:4,className:"".concat(p," font-mono"),value:"string"==typeof o?o:void 0===o?"":String(o),onChange:t=>l(eK(r,e.path,eU(e,t.target.value)))}):(0,n.jsx)("input",{id:i,type:e.secret?"password":"number"===e.type||"integer"===e.type?"number":"text",autoComplete:e.secret?"off":void 0,className:p,placeholder:void 0!==e.default?String(e.default):void 0,value:void 0===o?"":String(o),onChange:t=>l(eK(r,e.path,eU(e,t.target.value)))}),(0,n.jsxs)("div",{className:"flex flex-col gap-0.5","data-schema-field":e.path,children:[(0,n.jsx)("label",{htmlFor:i,className:"text-[11px] text-text-secondary",children:u}),s,e.description&&(0,n.jsx)("span",{className:"text-[10px] text-text-tertiary",children:e.description}),c&&(0,n.jsx)("span",{className:"text-[11px] text-error",role:"alert","data-schema-error":e.path,children:c})]},e.path)})]})}function eY(e){var t,r,l,s;let{definition:o,nodeId:i,skills:d,onChange:c,onClose:u,onDelete:p,palette:h}=e,m=(0,a.useMemo)(()=>{var e,t;return null!=(t=(null!=(e=o.nodes)?e:[]).find(e=>e.id===i))?t:null},[o,i]),x=(0,a.useMemo)(()=>m?G(m):"unknown",[m]),[f,g]=(0,a.useState)(null!=(t=null==m?void 0:m.id)?t:""),[b,y]=(0,a.useState)("string"==typeof(null==m?void 0:m.bash)?m.bash:""),[j,w]=(0,a.useState)("string"==typeof(null==m?void 0:m.prompt)?m.prompt:""),[k,N]=(0,a.useState)("string"==typeof(null==m?void 0:m.skill)?m.skill:""),[C,S]=(0,a.useState)("string"==typeof(null==m?void 0:m.arguments)?m.arguments:""),[A,T]=(0,a.useState)("string"==typeof(null==m?void 0:m.cft)?m.cft:""),E=(null==m?void 0:m.approval)&&"object"==typeof m.approval?m.approval:null,[M,_]=(0,a.useState)(null!=(r=null==E?void 0:E.message)?r:""),[O,I]=(0,a.useState)(null!=(l=null==E?void 0:E.delivery)?l:"modal"),[L,P]=(0,a.useState)("string"==typeof(null==m?void 0:m.when)?m.when:""),[R,D]=(0,a.useState)(Array.isArray(null==m?void 0:m.depends_on)?[...m.depends_on]:[]);(0,a.useEffect)(()=>{var e,t;if(!m)return;g(m.id),y("string"==typeof m.bash?m.bash:""),w("string"==typeof m.prompt?m.prompt:""),N("string"==typeof m.skill?m.skill:""),S("string"==typeof m.arguments?m.arguments:""),T("string"==typeof m.cft?m.cft:"");let r=m.approval&&"object"==typeof m.approval?m.approval:null;_(null!=(e=null==r?void 0:r.message)?e:""),I(null!=(t=null==r?void 0:r.delivery)?t:"modal"),P("string"==typeof m.when?m.when:""),D(Array.isArray(m.depends_on)?[...m.depends_on]:[])},[i,m]);let F=(0,a.useMemo)(()=>{var e,t;let r="string"==typeof(null==m?void 0:m.kind)?m.kind:null;return r&&null!=(t=null==h||null==(e=h.find(e=>e.kind===r&&e.schema))?void 0:e.schema)?t:null},[m,h]),z=(0,a.useMemo)(()=>{let e=null==m?void 0:m.inputs;return e&&"object"==typeof e&&!Array.isArray(e)?e:{}},[m]),[q,W]=(0,a.useState)(z);(0,a.useEffect)(()=>{W(z)},[i,z]),(0,a.useEffect)(()=>{if(!m||!F||JSON.stringify(q)===JSON.stringify(z))return;let e=setTimeout(()=>{var e;c({...o,nodes:(null!=(e=o.nodes)?e:[]).map(e=>e.id===i?{...e,inputs:q}:e)})},500);return()=>clearTimeout(e)},[q,z,F,m,i,o,c]);let B=(0,a.useCallback)(()=>{var e,t;if(!m)return{};let r={};if(f!==m.id&&/^[a-z0-9]+(-[a-z0-9]+)*$/.test(f)&&(r.id=f),"bash"===x&&b!==m.bash&&(r.bash=b),"prompt"===x&&j!==m.prompt&&(r.prompt=j),"skill"===x&&(k!==m.skill&&(r.skill=k),C!==(null!=(e=m.arguments)?e:"")&&(r.arguments=C)),"cft"===x&&A!==m.cft&&(r.cft=A),"approval"===x){let e=null!=E?E:{message:"",delivery:"modal"};(M!==e.message||O!==(null!=(t=e.delivery)?t:"modal"))&&(r.approval={message:M,delivery:O})}L!==("string"==typeof m.when?m.when:"")&&(r.when=L.trim()?L:null);let n=Array.isArray(m.depends_on)?m.depends_on:[];return(R.length!==n.length||R.some((e,t)=>n[t]!==e))&&(r.depends_on=R),r},[m,x,E,f,b,j,k,C,A,M,O,L,R]),$=(0,a.useRef)(null);if((0,a.useEffect)(()=>{if(m)return $.current&&clearTimeout($.current),$.current=setTimeout(()=>{let e=B();if(0===Object.keys(e).length)return;let t=function(e,t,r){var n,a;if(!(null!=(n=e.nodes)?n:[]).find(e=>e.id===t))return e;let l=e,s=t;r.id&&r.id!==t&&(s=(l=function(e,t,r){var n,a;if(t===r||new Set((null!=(n=e.nodes)?n:[]).map(e=>e.id)).has(r))return e;let l=(null!=(a=e.nodes)?a:[]).map(e=>{let n=e;return e.id===t&&(n={...n,id:r}),Array.isArray(n.depends_on)&&(n={...n,depends_on:n.depends_on.map(e=>e===t?r:e)}),n});return{...e,nodes:l}}(e,t,r.id))===e?t:r.id);let o=(null!=(a=l.nodes)?a:[]).map(e=>{if(e.id!==s)return e;let t={...e},n=G(e),a=["bash","prompt","skill","cft","approval"].find(e=>void 0!==r[e]);return a&&a!==n&&"unknown"!==n&&(delete t[n],"skill"===n&&delete t.arguments,"cft"===n&&delete t.config),void 0!==r.bash&&(t.bash=r.bash),void 0!==r.prompt&&(t.prompt=r.prompt),void 0!==r.skill&&(t.skill=r.skill),void 0!==r.arguments&&(t.arguments=r.arguments),void 0!==r.cft&&(t.cft=r.cft),void 0!==r.config&&(t.config=r.config),void 0!==r.approval&&(t.approval=r.approval),null===r.when?delete t.when:"string"==typeof r.when&&(t.when=r.when),void 0!==r.depends_on&&(0===r.depends_on.length?delete t.depends_on:t.depends_on=[...r.depends_on]),t});return{...l,nodes:o}}(o,i,e);t!==o&&c(t)},500),()=>{$.current&&clearTimeout($.current)}},[m,i,o,B,c]),!m)return(0,n.jsx)("div",{className:"border-t border-border bg-surface-elevated px-3 py-3 text-[11px] text-text-tertiary",children:"Node not found — it may have been deleted."});if("scheduleTrigger"===x||"webhookTrigger"===x||"http"===x||"discordTrigger"===x||"telegramTrigger"===x||"manualTrigger"===x||"chatTrigger"===x)return(0,n.jsxs)("div",{className:"border-t border-border bg-surface-elevated",children:[(0,n.jsxs)("header",{className:"flex items-center justify-between px-3 py-2",children:[(0,n.jsx)("span",{className:"font-mono text-xs text-text-primary",children:i}),(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsxs)("button",{type:"button",onClick:p,className:"flex items-center gap-1 rounded px-2 py-0.5 text-[11px] text-error hover:bg-error/10",title:"Delete this node",children:[(0,n.jsx)(v.A,{className:"h-3 w-3"}),"Delete"]}),(0,n.jsx)("button",{type:"button",onClick:u,className:"rounded p-1 text-text-tertiary hover:bg-surface","aria-label":"Close node editor",children:(0,n.jsx)(ep.A,{className:"h-3 w-3"})})]})]}),(0,n.jsxs)("div",{className:"px-3 pb-3",children:["scheduleTrigger"===x&&(0,n.jsx)(ek,{definition:o,nodeId:i,onChange:c}),"webhookTrigger"===x&&(0,n.jsx)(eS,{definition:o,nodeId:i,onChange:c}),"http"===x&&(0,n.jsx)(eE,{definition:o,nodeId:i,onChange:c}),"discordTrigger"===x&&(0,n.jsx)(eI,{definition:o,nodeId:i,onChange:c}),"telegramTrigger"===x&&(0,n.jsx)(eR,{definition:o,nodeId:i,onChange:c}),"manualTrigger"===x&&(0,n.jsx)(eF,{definition:o,nodeId:i,onChange:c}),"chatTrigger"===x&&(0,n.jsx)(eq,{definition:o,nodeId:i,onChange:c})]})]});let K=(null!=(s=o.nodes)?s:[]).filter(e=>e.id!==i);return(0,n.jsxs)("div",{className:"border-t border-border bg-surface-elevated",children:[(0,n.jsxs)("header",{className:"flex items-center justify-between px-3 py-2",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("span",{className:"rounded bg-surface px-1.5 py-0.5 text-[10px] uppercase tracking-wide text-text-tertiary",children:m?H(m,x):x}),(0,n.jsx)("span",{className:"font-mono text-xs text-text-primary",children:i})]}),(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsxs)("button",{type:"button",onClick:p,className:"flex items-center gap-1 rounded px-2 py-0.5 text-[11px] text-error hover:bg-error/10",title:"Delete this node",children:[(0,n.jsx)(v.A,{className:"h-3 w-3"}),"Delete"]}),(0,n.jsx)("button",{type:"button",onClick:u,className:"rounded p-1 text-text-tertiary hover:bg-surface","aria-label":"Close node editor",children:(0,n.jsx)(ep.A,{className:"h-3 w-3"})})]})]}),(0,n.jsxs)("div",{className:"grid grid-cols-1 gap-2 px-3 pb-3 md:grid-cols-2",children:[(0,n.jsx)(eV,{label:"id",children:(0,n.jsx)("input",{value:f,onChange:e=>g(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),(0,n.jsx)(eV,{label:"when (gating expression)",children:(0,n.jsx)("input",{value:L,onChange:e=>P(e.target.value),placeholder:"e.g. \"$prev.output == 'ok'\"",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),F&&(0,n.jsx)(eJ,{schema:F,value:q,onChange:W}),"bash"===x&&(0,n.jsx)(eV,{label:"bash",full:!0,children:(0,n.jsx)("textarea",{value:b,onChange:e=>y(e.target.value),rows:4,spellCheck:!1,className:"w-full resize-none rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),"prompt"===x&&(0,n.jsx)(eV,{label:"prompt",full:!0,children:(0,n.jsx)("textarea",{value:j,onChange:e=>w(e.target.value),rows:4,spellCheck:!1,className:"w-full resize-none rounded-md border border-border bg-surface px-2 py-1 text-xs"})}),"skill"===x&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(eV,{label:"skill",children:[(0,n.jsx)("input",{value:k,onChange:e=>N(e.target.value),list:"workflow-skill-options",spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"}),d&&d.length>0&&(0,n.jsx)("datalist",{id:"workflow-skill-options",children:d.map(e=>(0,n.jsx)("option",{value:e},e))})]}),(0,n.jsx)(eV,{label:"arguments",full:!0,children:(0,n.jsx)("textarea",{value:C,onChange:e=>S(e.target.value),rows:3,spellCheck:!1,className:"w-full resize-none rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})})]}),"cft"===x&&(0,n.jsx)(eV,{label:"cft",full:!0,children:(0,n.jsx)("input",{value:A,onChange:e=>T(e.target.value),spellCheck:!1,className:"w-full rounded-md border border-border bg-surface px-2 py-1 font-mono text-xs"})}),"approval"===x&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(eV,{label:"message",full:!0,children:(0,n.jsx)("textarea",{value:M,onChange:e=>_(e.target.value),rows:2,spellCheck:!1,className:"w-full resize-none rounded-md border border-border bg-surface px-2 py-1 text-xs"})}),(0,n.jsx)(eV,{label:"delivery channel",children:(0,n.jsxs)("select",{value:O,onChange:e=>I(e.target.value),className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs",children:[(0,n.jsx)("option",{value:"all",children:"all (race)"}),(0,n.jsx)("option",{value:"modal",children:"modal (PWA)"}),(0,n.jsx)("option",{value:"terminal",children:"terminal"}),(0,n.jsx)("option",{value:"telegram",children:"telegram"}),(0,n.jsx)("option",{value:"discord",children:"discord"}),(0,n.jsx)("option",{value:"pushcut",children:"pushcut"})]})})]}),(0,n.jsx)(eV,{label:"depends_on",full:!0,children:(0,n.jsx)(eX,{value:R,options:K.map(e=>e.id),onChange:D})})]})]})}function eV(e){let{label:t,full:r,children:a}=e;return(0,n.jsxs)("label",{className:"flex flex-col gap-1 ".concat(r?"md:col-span-2":""),children:[(0,n.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-text-tertiary",children:t}),a]})}function eX(e){let{value:t,options:r,onChange:a}=e;return 0===r.length?(0,n.jsx)("span",{className:"text-[11px] text-text-tertiary",children:"No other nodes to depend on."}):(0,n.jsx)("div",{className:"flex flex-wrap gap-1",children:r.map(e=>{let r=t.includes(e);return(0,n.jsx)("button",{type:"button",onClick:()=>{t.includes(e)?a(t.filter(t=>t!==e)):a([...t,e])},className:"rounded-md border px-2 py-0.5 font-mono text-[10px] transition-colors ".concat(r?"border-accent bg-accent/15 text-accent":"border-border text-text-tertiary hover:bg-surface"),children:e},e)})})}var eQ=r(40807);let eZ={running:"Running",orphaned:"Orphaned",done:"Done",failed:"Failed",unknown:"Unknown"},e0={running:"bg-info/10 text-info ring-info/30",orphaned:"bg-text-tertiary/10 text-text-tertiary ring-border",done:"bg-success/10 text-success ring-success/30",failed:"bg-error/10 text-error ring-error/30",unknown:"bg-surface-elevated text-text-tertiary ring-border"};function e1(e){let{onSelect:t,selectedRunId:r,enabled:l}=e,s=(0,A.b_)({enabled:null==l||l}),[o,i]=(0,a.useState)("all"),d=(0,a.useMemo)(()=>{var e,t;let r=null!=(t=null==(e=s.data)?void 0:e.runs)?t:[];return"all"===o?r:r.filter(e=>e.status===o)},[s.data,o]),c=(0,a.useMemo)(()=>{var e,t;let r={all:0,running:0,orphaned:0,done:0,failed:0};for(let n of null!=(t=null==(e=s.data)?void 0:e.runs)?t:[])r.all+=1,n.status in r&&(r[n.status]+=1);return r},[s.data]);return s.isLoading?(0,n.jsxs)("div",{className:"flex h-full items-center justify-center text-[11px] text-text-tertiary",children:[(0,n.jsx)(j.A,{className:"mr-1.5 h-3 w-3 animate-spin"}),"loading runs…"]}):s.error?(0,n.jsxs)("div",{className:"flex h-full items-center justify-center text-[11px] text-error",children:[(0,n.jsx)(y.A,{className:"mr-1.5 h-3 w-3"}),"failed to load runs: ",s.error.message]}):(0,n.jsxs)("div",{className:"flex h-full flex-col",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 border-b border-border px-3 py-2",children:[(0,n.jsx)(g.A,{className:"h-3.5 w-3.5 text-text-tertiary"}),(0,n.jsx)("span",{className:"text-xs font-medium",children:"Recent runs"}),(0,n.jsxs)("span",{className:"text-[10px] text-text-tertiary",children:["(",c.all,")"]}),(0,n.jsx)("div",{className:"ml-auto flex items-center gap-1",children:["all","running","done","failed","orphaned"].map(e=>(0,n.jsx)(e2,{label:"all"===e?"all":eZ[e],count:c[e],active:o===e,onClick:()=>i(e)},e))})]}),0===d.length?(0,n.jsx)("div",{className:"flex flex-1 items-center justify-center text-[11px] text-text-tertiary",children:"all"===o?"No runs yet — pick a workflow + click Run to start one.":"No ".concat(eZ[o].toLowerCase()," runs.")}):(0,n.jsx)("ul",{className:"flex-1 overflow-y-auto",children:d.map(e=>(0,n.jsx)(e3,{run:e,selected:e.runId===r,onSelect:()=>t(e.runId,e.workflowName)},e.runId))})]})}function e2(e){let{label:t,count:r,active:a,onClick:l}=e;return(0,n.jsxs)("button",{type:"button",onClick:l,className:"rounded-md px-1.5 py-0.5 text-[10px] transition-colors ".concat(a?"bg-primary/15 text-primary ring-1 ring-primary/30":"text-text-tertiary hover:bg-surface-elevated"),children:[t,r>0&&(0,n.jsx)("span",{className:"ml-1 opacity-70",children:r})]})}function e3(e){let{run:t,selected:r,onSelect:a}=e;return(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",onClick:a,className:"flex w-full items-center gap-2 border-b border-border px-3 py-2 text-left text-[11px] transition-colors hover:bg-surface-elevated ".concat(r?"bg-primary/10":""),children:[(0,n.jsx)(e5,{status:t.status}),(0,n.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,n.jsx)(d.A,{className:"h-3 w-3 shrink-0 text-text-tertiary"}),(0,n.jsx)("span",{className:"truncate font-medium",children:t.workflowName})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2 text-[9px] text-text-tertiary",children:[(0,n.jsx)("span",{className:"font-mono",children:t.runId.slice(0,22)}),(0,n.jsx)("span",{children:"\xb7"}),(0,n.jsx)("span",{children:function(e){let t=Date.now()-e;return t<6e4?"".concat(Math.max(1,Math.floor(t/1e3)),"s ago"):t<36e5?"".concat(Math.floor(t/6e4),"m ago"):t<864e5?"".concat(Math.floor(t/36e5),"h ago"):"".concat(Math.floor(t/864e5),"d ago")}(t.startedAt)}),t.arguments&&t.arguments.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{children:"\xb7"}),(0,n.jsx)("span",{className:"truncate italic",children:t.arguments.slice(0,30)})]})]})]}),(0,n.jsx)("span",{className:"shrink-0 rounded px-1.5 py-0.5 text-[9px] font-medium uppercase ring-1 ".concat(e0[t.status]),children:eZ[t.status]})]})})}function e5(e){let{status:t}=e;return"running"===t?(0,n.jsx)(j.A,{className:"h-3.5 w-3.5 shrink-0 animate-spin text-info"}):"done"===t?(0,n.jsx)(S.A,{className:"h-3.5 w-3.5 shrink-0 text-success"}):"failed"===t?(0,n.jsx)(y.A,{className:"h-3.5 w-3.5 shrink-0 text-error"}):"orphaned"===t?(0,n.jsx)(eQ.A,{className:"h-3.5 w-3.5 shrink-0 text-text-tertiary"}):(0,n.jsx)("span",{className:"h-3.5 w-3.5 shrink-0 rounded-full bg-text-tertiary/30"})}function e4(e){var t,r;let{runId:l,message:s,onDismiss:o,onResolved:i}=e,[d,c]=(0,a.useState)(""),u=(0,A.Yk)(),p=(0,A.Ux)(),h=u.isPending||p.isPending;(0,a.useEffect)(()=>{let e=e=>{"Escape"!==e.key||h||o()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[h,o]);let m=async()=>{try{await u.mutateAsync({runId:l,response:d.trim()?d:void 0}),null==i||i("approved")}catch(e){}},x=async()=>{try{await p.mutateAsync({runId:l,reason:d.trim()?d:void 0}),null==i||i("rejected")}catch(e){}};return(0,n.jsx)("div",{role:"dialog","aria-modal":"true","aria-labelledby":"approval-modal-title",className:"fixed inset-0 z-50 flex items-end justify-center bg-black/40 backdrop-blur-sm sm:items-center",children:(0,n.jsxs)("div",{className:"w-full max-w-md rounded-t-2xl border border-border bg-surface shadow-xl sm:rounded-lg",children:[(0,n.jsxs)("header",{className:"flex items-center justify-between border-b border-border px-4 py-3",children:[(0,n.jsxs)("h2",{id:"approval-modal-title",className:"flex items-center gap-2 text-sm font-semibold",children:[(0,n.jsx)(y.A,{className:"h-4 w-4 text-warning"}),"Approval needed"]}),(0,n.jsx)("button",{type:"button",onClick:o,disabled:h,"aria-label":"Close approval modal",className:"rounded-md p-1 text-text-tertiary hover:bg-surface-elevated disabled:opacity-50",children:(0,n.jsx)(ep.A,{className:"h-3.5 w-3.5"})})]}),(0,n.jsxs)("div",{className:"space-y-2 px-4 py-3",children:[(0,n.jsxs)("div",{className:"text-[10px] uppercase tracking-wide text-text-tertiary",children:["run \xb7 ",(0,n.jsx)("span",{className:"font-mono",children:l.slice(0,28)})]}),(0,n.jsx)("p",{className:"whitespace-pre-wrap text-[13px] leading-snug",children:s}),(0,n.jsxs)("label",{className:"block pt-2 text-[10px] uppercase tracking-wide text-text-tertiary",children:["Response (optional \xb7 captured into ",(0,n.jsx)("code",{className:"font-mono",children:"$node.output"})," when capture_response: true)"]}),(0,n.jsx)("textarea",{value:d,onChange:e=>c(e.target.value),placeholder:"LGTM / type a reason for rejection / leave empty for bare approval",rows:3,disabled:h,className:"w-full resize-none rounded-md border border-border bg-surface-elevated px-2 py-1.5 font-mono text-[11px] focus:outline-none focus:ring-1 focus:ring-primary disabled:opacity-50"}),(u.error||p.error)&&(0,n.jsx)("p",{className:"text-[11px] text-error",children:(null!=(t=u.error)?t:p.error)instanceof Error?(null!=(r=u.error)?r:p.error).message:"request failed"})]}),(0,n.jsxs)("footer",{className:"flex items-center justify-end gap-2 border-t border-border px-4 py-3",children:[(0,n.jsxs)("button",{type:"button",onClick:x,disabled:h,className:"flex items-center gap-1 rounded-md border border-error/40 px-3 py-1.5 text-[11px] text-error hover:bg-error/10 disabled:opacity-50",children:[p.isPending?(0,n.jsx)(j.A,{className:"h-3 w-3 animate-spin"}):(0,n.jsx)(y.A,{className:"h-3 w-3"}),"Reject"]}),(0,n.jsxs)("button",{type:"button",onClick:m,disabled:h,className:"flex items-center gap-1 rounded-md bg-primary px-3 py-1.5 text-[11px] font-medium text-primary-foreground hover:bg-accent-hover disabled:opacity-50",children:[u.isPending?(0,n.jsx)(j.A,{className:"h-3 w-3 animate-spin"}):(0,n.jsx)(S.A,{className:"h-3 w-3"}),"Approve"]})]})]})})}let e6="elanous.workflows.layout",e9={leftCollapsed:!1,rightCollapsed:!1,canvasOnly:!1,leftWidthPx:240,rightWidthPx:320};function e8(e,t){return Number.isFinite(e)?e<160?160:e>640?640:Math.round(e):t}let e7={project:"Project",global:"Global",builtin:"Built-in"};function te(){let{palette:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,o.Qj)()?(0,n.jsx)(tr,{palette:e}):(0,n.jsx)(tt,{})}function tt(){return(0,n.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 px-6 py-10 text-center",children:[(0,n.jsx)(d.A,{className:"h-8 w-8 text-text-tertiary"}),(0,n.jsx)("h2",{className:"text-base font-semibold",children:"Workflows"}),(0,n.jsx)("p",{className:"max-w-md text-sm text-text-tertiary",children:"Daemon 연결이 설정되지 않았습니다. Settings 에서 Base URL 을 입력하면 워크플로우 목록이 표시됩니다."}),(0,n.jsx)("a",{href:"/app/settings/",className:"rounded-md border border-border px-3 py-1 text-sm text-text-primary hover:bg-surface-elevated",children:"Settings"})]})}function tr(e){var t,r,l,s,o,N,C,S,T,E,M,_;let{palette:O}=e,I=(0,A.mP)(),[L,P]=(0,a.useState)(null),[R,D]=(0,a.useState)(""),[F,z]=(0,a.useState)(""),[q,W]=(0,a.useState)(null),[G,B]=(0,a.useState)(!1),[H,$]=(0,a.useState)(""),[K,U]=(0,a.useState)(null),[J,V]=(0,a.useState)("graph"),[Z,ee]=(0,a.useState)(!1),[et,er]=(0,a.useState)(!1),[ea,el]=(0,a.useState)(null),[es,eo]=(0,a.useState)(null),ei=(0,A.j3)(null!=L?L:"",{enabled:!!L&&!G}),ed=(0,A.yM)(),ec=(0,A.oE)(),eu=(0,A.xd)(),ep=(0,A.XL)(),eh=(0,A.b_)(),em=(0,a.useMemo)(()=>{var e,t,r;return L&&(null==(e=eh.data)?void 0:e.runs)&&null!=(r=null==(t=function(e,t){let r=null;for(let n of e)n.workflowName===t&&(!r||n.startedAt>r.startedAt)&&(r=n);return r}(eh.data.runs,L))?void 0:t.runId)?r:null},[L,null==(t=eh.data)?void 0:t.runs]),ex=null!=q?q:em,ef=(0,A.uz)(ex),eg=(0,a.useMemo)(()=>{var e;if(null==(e=ef.data)?void 0:e.events)return function(e){let t={};for(let n of e)if(n.nodeId)switch(n.type){case"node_start":t[n.nodeId]||(t[n.nodeId]={status:"running"});break;case"node_done":{let e=n.result;if(null==e?void 0:e.ok)t[n.nodeId]={status:"done",durationMs:e.durationMs};else{let r={status:"failed"};(null==e?void 0:e.durationMs)!==void 0&&(r.durationMs=e.durationMs),(null==e?void 0:e.error)&&(r.error=e.error),t[n.nodeId]=r}break}case"node_skipped":{let e={status:"skipped"};n.reason&&(e.reason=n.reason),t[n.nodeId]=e;break}case"approval_pending":t[n.nodeId]={status:"awaiting_approval"};break;case"approval_resolved":var r;(null==(r=t[n.nodeId])?void 0:r.status)==="awaiting_approval"&&delete t[n.nodeId]}return t}(ef.data.events)},[null==(r=ef.data)?void 0:r.events]),ey=(0,A.zD)();(0,A.Ck)();let ev=(0,a.useMemo)(()=>{var e,t,r;return null!=(r=(null!=(t=null==(e=ey.data)?void 0:e.pending)?t:[]).find(e=>e.runId===q))?r:null},[ey.data,q]),ej=null!=(T=null==(l=ey.data)?void 0:l.pending.length)?T:0,[ew,ek]=(0,a.useState)(new Set);(0,a.useEffect)(()=>{ek(new Set)},[q]),(0,a.useEffect)(()=>{var e;G||(null==(e=ei.data)?void 0:e.yaml)!==void 0&&D(ei.data.yaml)},[null==(s=ei.data)?void 0:s.yaml,G]);let eN=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(!R.trim())return;let e=setTimeout(()=>{var e;null==(e=eN.current)||e.abort();let t=new AbortController;eN.current=t,eu.mutateAsync({yaml:R,signal:t.signal}).catch(()=>void 0)},600);return()=>{var t;clearTimeout(e),null==(t=eN.current)||t.abort()}},[R]);let eC=(0,a.useMemo)(()=>{var e,t;let r={project:[],global:[],builtin:[]};for(let n of null!=(t=null==(e=I.data)?void 0:e.workflows)?t:[])r[n.source].push(n);return r},[null==(o=I.data)?void 0:o.workflows]),eS=null==(N=eu.data)?void 0:N.validation,eA=eS&&!eS.ok?eS.issues:[],eT=(0,a.useMemo)(()=>R.trim()?Q(R):null,[R]),eE=(0,a.useMemo)(()=>{if(eT&&0!==eA.length)return function(e,t){let r={},n=[];for(let a of e){let e=function(e,t){if("string"!=typeof e)return null;let r=/^nodes\[(\d+)\]/.exec(e);if(!r)return null;let n=Number.parseInt(r[1],10);if(!Number.isFinite(n)||n<0)return null;let a=Array.isArray(t.nodes)?t.nodes:[];if(n>=a.length)return null;let l=a[n];return l&&"string"==typeof l.id&&0!==l.id.length?l.id:null}(a.path,t);e?(r[e]||(r[e]=[]),r[e].push(a)):n.push(a)}return{byNodeId:r,rootIssues:n}}(eA,eT).byNodeId},[eT,eA]),eM=(0,a.useMemo)(()=>{if(!eT)return;let e=function(e){var t,r;let n=Array.isArray(e.nodes)?e.nodes:[],a=new Set,l=new Map;for(let e of n)e&&"string"==typeof e.id&&0!==e.id.length&&a.add(e.id);for(let e of n)if(e&&"string"==typeof e.id&&0!==e.id.length)for(let r of Array.isArray(e.depends_on)?e.depends_on:[]){if("string"!=typeof r||0===r.length||!a.has(r))continue;let n=null!=(t=l.get(r))?t:[];n.push(e.id),l.set(r,n)}let s=new Set,o=new Map,i=[];for(let e of a)(null!=(r=o.get(e))?r:0)===0&&function e(t){var r,n;for(let a of(o.set(t,1),i.push(t),null!=(r=l.get(t))?r:[])){let t=null!=(n=o.get(a))?n:0;if(1===t){let e=i.lastIndexOf(a);if(e>=0)for(let t=e;t<i.length;t++)s.add(i[t])}else 0===t&&e(a)}o.set(t,2),i.pop()}(e);return s}(eT);return e.size>0?e:void 0},[eT]),e_=e=>{P(e),B(!1),W(null),el(null)},eO=async()=>{if(U(null),G){let e=H.trim()?i.test(H.trim())?null:"이름은 소문자\xb7숫자와 하이픈(-)만 쓸 수 있습니다. 예: weekly-report":"워크플로 이름을 먼저 적어 주세요.";if(e)return void U(e)}let e=G?H.trim():L;if(!e)return;let t=G?function(e,t){let r=/^name:[^\n]*$/m;return r.test(e)?e.replace(r,"name: ".concat(t)):"name: ".concat(t,"\n").concat(e)}(R,e):R;t!==R&&D(t);try{await ed.mutateAsync({name:e,body:{yaml:t,scope:"project"}}),B(!1),P(e)}catch(e){U(function(e){var t,r,n,a;let l="object"==typeof e&&null!==e&&"status"in e?Number(e.status):NaN,s="object"==typeof e&&null!==e&&"body"in e?e.body:void 0,o=s&&"object"==typeof s&&"reason"in s&&"string"==typeof s.reason?s.reason:"",i=s&&"object"==typeof s&&"validation"in s&&null!=(n=null==(t=s.validation)?void 0:t.issues)?n:[];return 401===l||403===l?"저장 권한이 없습니다. 설정에서 연결 토큰을 확인해 주세요.":/name mismatch/i.test(o)?"이름 칸과 워크플로 이름이 달라 저장하지 못했습니다. 다시 저장해 주세요.":i.length?"저장하지 못했습니다: ".concat(String(null!=(a=null==(r=i[0])?void 0:r.message)?a:"").slice(0,120)):409===l?"같은 이름의 워크플로가 이미 있습니다. 다른 이름을 적어 주세요.":"저장하지 못했습니다. 잠시 뒤 다시 시도해 주세요."}(e))}},eI=async()=>{if(L)try{let e=await ep.mutateAsync({name:L,args:F});W(e.runId)}catch(e){}},eL=async()=>{var e,t;if(!L||(null==(e=ei.data)?void 0:e.source)==="builtin")return;let r=(null==(t=ei.data)?void 0:t.source)==="global"?"global":"project";try{await ec.mutateAsync({name:L,scope:r}),P(null),D("")}catch(e){}},eP=(null==(C=ei.data)?void 0:C.source)==="builtin",eR=eu.isPending?"pending":eS?eS.ok?"ok":"error":"idle",eD=function(){let[e,t]=(0,a.useState)(()=>e9),r=(0,a.useRef)(!1);(0,a.useEffect)(()=>{t(function(){try{var e,t,r;let n=window.localStorage.getItem(e6);if(!n)return{...e9};return(e=JSON.parse(n))&&"object"==typeof e?{leftCollapsed:"boolean"==typeof e.leftCollapsed?e.leftCollapsed:e9.leftCollapsed,rightCollapsed:"boolean"==typeof e.rightCollapsed?e.rightCollapsed:e9.rightCollapsed,canvasOnly:"boolean"==typeof e.canvasOnly?e.canvasOnly:e9.canvasOnly,leftWidthPx:e8(null!=(t=e.leftWidthPx)?t:e9.leftWidthPx,e9.leftWidthPx),rightWidthPx:e8(null!=(r=e.rightWidthPx)?r:e9.rightWidthPx,e9.rightWidthPx)}:{...e9}}catch(e){return{...e9}}}()),r.current=!0},[]),(0,a.useEffect)(()=>{if(r.current)try{window.localStorage.setItem(e6,JSON.stringify(e))}catch(e){}},[e]);let n=(0,a.useCallback)(()=>{t(e=>({...e,leftCollapsed:!e.leftCollapsed}))},[]),l=(0,a.useCallback)(()=>{t(e=>({...e,rightCollapsed:!e.rightCollapsed}))},[]),s=(0,a.useCallback)(()=>{t(e=>({...e,canvasOnly:!e.canvasOnly}))},[]),o=(0,a.useCallback)(e=>{t(t=>({...t,leftWidthPx:e8(e,t.leftWidthPx)}))},[]),i=(0,a.useCallback)(e=>{t(t=>({...t,rightWidthPx:e8(e,t.rightWidthPx)}))},[]),d=(0,a.useCallback)(()=>{t({...e9})},[]);return(0,a.useMemo)(()=>({...e,toggleLeft:n,toggleRight:l,toggleCanvasOnly:s,setLeftWidth:o,setRightWidth:i,reset:d}),[e,n,l,s,o,i,d])}(),eF=!eD.canvasOnly,ez=!eD.canvasOnly,eq=eD.leftCollapsed?40:eD.leftWidthPx,eW=eD.rightCollapsed?40:eD.rightWidthPx;(0,a.useEffect)(()=>{let e=e=>{var t;if("\\"!==e.key||!(e.metaKey||e.ctrlKey))return;let r=e.target,n=null==r||null==(t=r.tagName)?void 0:t.toLowerCase();"input"===n||"textarea"===n||null!=r&&r.isContentEditable||(e.preventDefault(),eD.toggleCanvasOnly())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[eD]);let eG=(0,a.useCallback)((e,t)=>{let r="left"===e?eD.leftWidthPx:eD.rightWidthPx,n="left"===e?eD.setLeftWidth:eD.setRightWidth,a="left"===e?1:-1;try{t.target.setPointerCapture(t.pointerId)}catch(e){}let l=e=>{n(r+a*(e.clientX-t.clientX))},s=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",s);try{t.target.releasePointerCapture(t.pointerId)}catch(e){}};window.addEventListener("pointermove",l),window.addEventListener("pointerup",s)},[eD]);return(0,n.jsxs)("div",{className:"flex h-full flex-col",children:[(0,n.jsxs)("header",{className:"flex items-center justify-between border-b border-border px-4 py-3",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(d.A,{className:"h-4 w-4 text-text-tertiary"}),(0,n.jsx)("h1",{className:"text-sm font-semibold",children:"Workflows"}),(0,n.jsxs)("span",{className:"text-xs text-text-tertiary",children:[null!=(E=null==(S=I.data)?void 0:S.workflows.length)?E:0," declared"]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("button",{type:"button",onClick:eD.toggleLeft,title:eD.leftCollapsed?"Show workflow list":"Collapse workflow list",className:"flex items-center gap-1 rounded-md border border-border px-2 py-1 text-[11px] text-text-tertiary hover:bg-surface-elevated",children:eD.leftCollapsed?(0,n.jsx)(c.A,{className:"h-3 w-3"}):(0,n.jsx)(u.A,{className:"h-3 w-3"})}),(0,n.jsx)("button",{type:"button",onClick:eD.toggleCanvasOnly,title:eD.canvasOnly?"Exit canvas-only (Cmd+\\)":"Canvas-only mode (Cmd+\\)",className:"flex items-center gap-1 rounded-md border px-2 py-1 text-[11px] transition-colors ".concat(eD.canvasOnly?"border-accent/50 bg-accent/15 text-accent":"border-border text-text-tertiary hover:bg-surface-elevated"),children:eD.canvasOnly?(0,n.jsx)(p.A,{className:"h-3 w-3"}):(0,n.jsx)(h.A,{className:"h-3 w-3"})}),(0,n.jsx)("button",{type:"button",onClick:eD.toggleRight,title:eD.rightCollapsed?"Show run panel":"Collapse run panel",className:"flex items-center gap-1 rounded-md border border-border px-2 py-1 text-[11px] text-text-tertiary hover:bg-surface-elevated",children:eD.rightCollapsed?(0,n.jsx)(m.A,{className:"h-3 w-3"}):(0,n.jsx)(x.A,{className:"h-3 w-3"})}),ej>0&&(0,n.jsxs)("button",{type:"button",onClick:()=>{var e;if(ev&&ew.has(ev.runId))return void(ev&&ek(e=>{let t=new Set(e);return t.delete(ev.runId),t}));let t=null==(e=ey.data)?void 0:e.pending[0];t&&t.runId!==q&&W(t.runId)},title:ev&&ew.has(ev.runId)?"Re-open approval modal for this run":"".concat(ej," run(s) waiting on approval — click to view"),className:"relative flex items-center gap-1 rounded-md border border-warning/40 bg-warning/10 px-2 py-1 text-[11px] text-warning hover:bg-warning/20",children:[(0,n.jsx)(f.A,{className:"h-3 w-3"}),(0,n.jsx)("span",{children:ej}),(0,n.jsx)("span",{className:"absolute -right-1 -top-1 h-2 w-2 animate-pulse rounded-full bg-warning ring-2 ring-surface"})]}),(0,n.jsxs)("button",{type:"button",onClick:()=>ee(e=>!e),className:"flex items-center gap-1 rounded-md border px-2 py-1 text-[11px] transition-colors ".concat(Z?"border-primary/40 bg-primary/15 text-primary":"border-border text-text-tertiary hover:bg-surface-elevated"),children:[(0,n.jsx)(g.A,{className:"h-3 w-3"}),Z?"Editor":"All runs"]}),(0,n.jsxs)("button",{type:"button",onClick:()=>er(e=>!e),title:et?"Hide AI prompt":"Describe a workflow in plain text",className:"flex items-center gap-1 rounded-md border px-2 py-1 text-[11px] transition-colors ".concat(et?"border-accent/50 bg-accent/15 text-accent":"border-border text-text-tertiary hover:bg-surface-elevated"),children:[(0,n.jsx)(b.A,{className:"h-3 w-3"}),"AI"]}),(0,n.jsx)("button",{type:"button",onClick:()=>{B(!0),P(null),$(""),D("name: my-workflow\ndescription: |\n Use when: …\n Triggers: …\n Does: …\n NOT for: …\n\nprovider: claude\nmodel: sonnet\n\nnodes:\n - id: first\n bash: echo hello\n"),W(null),el(null)},className:"rounded-md bg-primary px-3 py-1 text-xs font-medium text-primary-foreground hover:bg-accent-hover transition-colors",children:"+ New"})]})]}),(0,n.jsxs)("div",{className:"flex flex-1 overflow-hidden",children:[eF&&(0,n.jsx)("aside",{style:{width:eq},className:"shrink-0 overflow-y-auto border-r border-border",children:eD.leftCollapsed?(0,n.jsx)("button",{type:"button",onClick:eD.toggleLeft,title:"Expand workflow list",className:"flex h-full w-full items-center justify-center text-text-tertiary hover:bg-surface-elevated",children:(0,n.jsx)(c.A,{className:"h-4 w-4"})}):["project","global","builtin"].map(e=>(0,n.jsx)(tn,{label:e7[e],entries:eC[e],selected:L,onSelect:e_},e))}),eF&&!eD.leftCollapsed&&(0,n.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize workflow list",onPointerDown:e=>eG("left",{clientX:e.clientX,pointerId:e.pointerId,target:e.currentTarget}),className:"w-1 shrink-0 cursor-col-resize bg-transparent hover:bg-accent/30"}),(0,n.jsx)("section",{className:"flex flex-1 flex-col overflow-hidden min-w-0",children:Z?(0,n.jsx)(e1,{selectedRunId:q,onSelect:(e,t)=>{W(e),P(t),B(!1),ee(!1)}}):(0,n.jsxs)(n.Fragment,{children:[et&&(0,n.jsx)(eb,{currentYaml:R,onClose:()=>er(!1),onGenerated:e=>{var t;e.yaml&&(D(e.yaml),(null==(t=e.definition)?void 0:t.name)&&(B(!0),P(null),$(e.definition.name),W(null)))}}),G&&(0,n.jsxs)("div",{className:"border-b border-border px-3 py-2",children:[(0,n.jsx)("label",{className:"block text-[10px] uppercase tracking-wide text-text-tertiary",children:"Workflow name (kebab-case)"}),(0,n.jsx)("input",{type:"text",value:H,onChange:e=>$(e.target.value),placeholder:"my-workflow",className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-sm font-mono",autoFocus:!0})]}),!G&&L&&(0,n.jsxs)("div",{className:"flex items-center justify-between border-b border-border px-3 py-2",children:[(0,n.jsxs)("div",{className:"flex items-center gap-3",children:[(0,n.jsx)("span",{className:"text-sm font-medium",children:L}),eP&&(0,n.jsx)("span",{className:"rounded bg-surface-elevated px-1.5 py-0.5 text-[10px] text-text-tertiary",children:"read-only (built-in)"}),(0,n.jsx)(ta,{mode:J,onChange:V})]}),(0,n.jsx)("div",{className:"flex items-center gap-2",children:(0,n.jsx)(tl,{status:eR})})]}),"graph"===J&&R.trim()?(0,n.jsxs)("div",{className:"flex flex-1 flex-col overflow-hidden bg-surface",children:[(0,n.jsx)("div",{className:ea?"flex-1 min-h-[180px] overflow-hidden":"flex-1 overflow-hidden",children:(0,n.jsx)(en,{palette:O,yaml:R,editable:!eP,onChangeYaml:D,onNodeClick:eP?void 0:e=>el(e),nodeStatuses:eg,nodeIssues:eE,cycleNodeIds:eM,focusNodeId:null!=(M=null==es?void 0:es.id)?M:null,focusNonce:null!=(_=null==es?void 0:es.nonce)?_:0,onRun:L&&!G?eI:void 0})}),ea&&!eP&&(()=>{let e=Q(R);return e?(0,n.jsx)(eY,{definition:e,nodeId:ea,palette:O,onChange:e=>D(X(e)),onClose:()=>el(null),onDelete:()=>{D(X(Y(e,ea))),el(null)}}):null})()]}):(0,n.jsx)("textarea",{value:R,onChange:e=>D(e.target.value),readOnly:eP,placeholder:"Select a workflow on the left or click + New to start",spellCheck:!1,className:"flex-1 resize-none border-0 bg-surface px-3 py-2 font-mono text-xs leading-snug focus:outline-none"}),eA.length>0&&(0,n.jsx)("ul",{className:"max-h-32 overflow-y-auto border-t border-border bg-surface-elevated px-3 py-2 text-[11px]",children:eA.slice(0,8).map((e,t)=>{var r,a;let l=eT&&null!=(a=eE&&(null==(r=Object.entries(eE).find(t=>{let[,r]=t;return r.includes(e)}))?void 0:r[0]))?a:null,s=!!l;return(0,n.jsxs)("li",{className:"flex items-start gap-1.5 text-error ".concat(s?"cursor-pointer hover:bg-surface":""),...s?{onClick:()=>{V("graph"),eo(e=>{var t;return{id:l,nonce:(null!=(t=null==e?void 0:e.nonce)?t:0)+1}})},role:"button",tabIndex:0}:{},title:s?'Jump to node "'.concat(l,'"'):void 0,children:[(0,n.jsx)(y.A,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,n.jsxs)("span",{children:[(0,n.jsx)("span",{className:"font-mono text-text-tertiary",children:e.path||"(root)"})," ",e.message]})]},t)})}),(0,n.jsxs)("footer",{className:"flex items-center justify-end gap-2 border-t border-border px-3 py-2",children:[K&&(0,n.jsx)("p",{role:"alert",className:"mr-auto text-[11px] text-error",children:K}),L&&!eP&&!G&&(0,n.jsxs)("button",{type:"button",onClick:eL,className:"flex items-center gap-1 rounded-md border border-error/40 px-2 py-1 text-[11px] text-error hover:bg-error/10",children:[(0,n.jsx)(v.A,{className:"h-3 w-3"}),"Delete"]}),(0,n.jsxs)("button",{type:"button",onClick:eO,disabled:!L&&!G||eP||ed.isPending,className:"flex items-center gap-1 rounded-md bg-primary px-3 py-1 text-[11px] font-medium text-primary-foreground hover:bg-accent-hover disabled:opacity-50",children:[ed.isPending?(0,n.jsx)(j.A,{className:"h-3 w-3 animate-spin"}):(0,n.jsx)(w.A,{className:"h-3 w-3"}),"Save"]})]})]})}),ez&&!eD.rightCollapsed&&(0,n.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize run panel",onPointerDown:e=>eG("right",{clientX:e.clientX,pointerId:e.pointerId,target:e.currentTarget}),className:"w-1 shrink-0 cursor-col-resize bg-transparent hover:bg-accent/30"}),ez&&(0,n.jsx)("aside",{style:{width:eW},className:"flex shrink-0 flex-col overflow-hidden border-l border-border",children:eD.rightCollapsed?(0,n.jsx)("button",{type:"button",onClick:eD.toggleRight,title:"Expand run panel",className:"flex h-full w-full items-center justify-center text-text-tertiary hover:bg-surface-elevated",children:(0,n.jsx)(m.A,{className:"h-4 w-4"})}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"border-b border-border px-3 py-2",children:[(0,n.jsx)("label",{className:"block text-[10px] uppercase tracking-wide text-text-tertiary",children:"Arguments"}),(0,n.jsx)("input",{type:"text",value:F,onChange:e=>z(e.target.value),placeholder:"passed as $ARGUMENTS",className:"w-full rounded-md border border-border bg-surface px-2 py-1 text-xs"}),(0,n.jsxs)("button",{type:"button",onClick:eI,disabled:!L||G||ep.isPending,className:"mt-2 flex w-full items-center justify-center gap-1 rounded-md bg-accent px-2 py-1.5 text-[11px] font-medium text-primary-foreground hover:bg-accent-hover disabled:opacity-50",children:[ep.isPending?(0,n.jsx)(j.A,{className:"h-3 w-3 animate-spin"}):(0,n.jsx)(k.A,{className:"h-3 w-3"}),"Run"]})]}),(0,n.jsxs)("div",{className:"flex-1 overflow-y-auto px-3 py-2 text-[11px]",children:[!q&&(0,n.jsx)("p",{className:"text-text-tertiary",children:"No active run. Press Run to start."}),q&&ef.data&&(0,n.jsx)(ts,{runId:q,events:ef.data.events,ok:ef.data.ok,outputs:ef.data.outputs})]})]})})]}),ev&&!ew.has(ev.runId)&&(0,n.jsx)(e4,{runId:ev.runId,message:ev.message,onDismiss:()=>ek(e=>{let t=new Set(e);return t.add(ev.runId),t})})]})}function tn(e){let{label:t,entries:r,selected:a,onSelect:l}=e;return 0===r.length?null:(0,n.jsxs)("div",{className:"border-b border-border",children:[(0,n.jsx)("h2",{className:"px-3 py-1.5 text-[10px] font-medium uppercase tracking-wide text-text-tertiary",children:t}),(0,n.jsx)("ul",{children:r.map(e=>(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",onClick:()=>l(e.name),className:["block w-full px-3 py-1.5 text-left text-xs transition-colors",a===e.name?"bg-accent/15 text-text-primary":"text-text-secondary hover:bg-surface-elevated"].join(" "),title:e.path,children:[(0,n.jsx)("div",{className:"font-medium",children:e.name}),(0,n.jsxs)("div",{className:"truncate text-[10px] text-text-tertiary",children:[e.nodeCount," node",1===e.nodeCount?"":"s"]})]})},e.path))})]})}function ta(e){let{mode:t,onChange:r}=e;return(0,n.jsxs)("div",{className:"flex items-center rounded-md border border-border text-[10px]",children:[(0,n.jsxs)("button",{type:"button",onClick:()=>r("yaml"),className:"flex items-center gap-1 px-2 py-0.5 ".concat("yaml"===t?"bg-surface-elevated text-text-primary":"text-text-tertiary"),children:[(0,n.jsx)(N.A,{className:"h-3 w-3"}),"YAML"]}),(0,n.jsxs)("button",{type:"button",onClick:()=>r("graph"),className:"flex items-center gap-1 px-2 py-0.5 ".concat("graph"===t?"bg-surface-elevated text-text-primary":"text-text-tertiary"),children:[(0,n.jsx)(C.A,{className:"h-3 w-3"}),"Graph"]})]})}function tl(e){let{status:t}=e;return"pending"===t?(0,n.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-text-tertiary",children:[(0,n.jsx)(j.A,{className:"h-3 w-3 animate-spin"}),"validating"]}):"ok"===t?(0,n.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-success",children:[(0,n.jsx)(S.A,{className:"h-3 w-3"}),"valid"]}):"error"===t?(0,n.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-error",children:[(0,n.jsx)(y.A,{className:"h-3 w-3"}),"invalid"]}):null}function ts(e){let{runId:t,events:r,ok:a,outputs:l}=e;return(0,n.jsxs)("div",{className:"space-y-2 font-mono",children:[(0,n.jsxs)("div",{className:"text-[10px] text-text-tertiary",children:["runId: ",t]}),(0,n.jsx)("ul",{className:"space-y-1",children:r.map((e,t)=>{var r,a;return(0,n.jsxs)("li",{className:"flex items-start gap-1.5",children:[(0,n.jsx)("span",{className:"mt-0.5 h-1.5 w-1.5 rounded-full bg-text-tertiary"}),(0,n.jsxs)("span",{className:"break-all",children:[(0,n.jsx)("span",{className:"text-text-tertiary",children:e.type}),e.nodeId&&(0,n.jsx)("span",{className:"ml-1",children:e.nodeId}),e.reason&&(0,n.jsxs)("span",{className:"ml-1 text-text-tertiary",children:["— ",e.reason]}),e.error&&(0,n.jsxs)("span",{className:"ml-1 text-error",children:["— ",e.error]}),(null==(r=e.result)?void 0:r.ok)===!1&&(0,n.jsxs)("span",{className:"ml-1 text-error",children:["— ",null!=(a=e.result.error)?a:"failed"]})]})]},t)})}),!0===a&&(0,n.jsxs)("div",{className:"rounded-md bg-success/10 px-2 py-1 text-[10px] text-success",children:["completed \xb7 ",Object.keys(l).length," node output",1===Object.keys(l).length?"":"s"]}),!1===a&&(0,n.jsx)("div",{className:"rounded-md bg-error/10 px-2 py-1 text-[10px] text-error",children:"failed"}),Object.keys(l).length>0&&(0,n.jsx)(to,{outputs:l})]})}function to(e){let{outputs:t}=e;return(0,n.jsxs)("details",{className:"mt-2 rounded-md border border-border bg-surface-elevated",children:[(0,n.jsxs)("summary",{className:"cursor-pointer select-none px-2 py-1 text-[10px] font-semibold text-text-tertiary",children:["Outputs (",Object.keys(t).length,")"]}),(0,n.jsx)("ul",{className:"space-y-1 px-2 pb-2 pt-1 font-mono text-[10px]",children:Object.entries(t).map(e=>{let[t,r]=e;return(0,n.jsxs)("li",{className:"rounded bg-surface px-2 py-1",children:[(0,n.jsx)("div",{className:"text-[9px] uppercase tracking-wide text-text-tertiary",children:t}),(0,n.jsx)("pre",{className:"mt-0.5 max-h-40 overflow-auto whitespace-pre-wrap break-all",children:function(e){if(null==e)return"(no output)";if("string"==typeof e)return e.length>4096?"".concat(e.slice(0,4096),"\n…(truncated \xb7 ").concat(e.length," chars)"):e;try{let t=JSON.stringify(e,null,2);return t.length>4096?"".concat(t.slice(0,4096),"\n…(truncated \xb7 ").concat(t.length," chars)"):t}catch(t){return String(e)}}(r)})]},t)})})]})}var ti=r(24818),td=r(6015),tc=r(42375);let tu=["agent","gate","git","judge","observe","hitl","subgraph"],tp=["prompt","bash","skill","cft","approval","if","switch","iteration","classify","extract","set","filter","template","http","showroom","task","scheduleTrigger","webhookTrigger","discordTrigger","telegramTrigger","manualTrigger","chatTrigger"];function th(e){return(0,K.jh)(e.contents)?e.contents:null}function tm(e){return(0,K.jn)(e)?e:null}function tx(e){let t=tm(e);return t&&("string"==typeof t.value||"number"==typeof t.value)?String(t.value):void 0}function tf(e,t){return e.items.find(e=>tx(e.key)===t)}function tg(e,t){var r;let n=null==(r=tf(e,t))?void 0:r.value;return(0,K.oP)(n)?n:null}function tb(e){return(0,K.jh)(e)?e:null}function ty(e,t){var r;let n=tm(null==(r=tf(e,t))?void 0:r.value);return n&&("string"==typeof n.value||"number"==typeof n.value)?String(n.value):void 0}function tv(e,t){return(function(e){let t=th(e);if(!t)return[];let r=tg(t,"nodes");return r?r.items.flatMap(e=>{let t=tb(e);return t?[t]:[]}):[]})(e).find(e=>ty(e,"node_id")===t)}function tj(e,t,r){var n;let a=tm(null==(n=tf(e,t))?void 0:n.value);if(a){a.value=r;return}e.set(t,r)}function tw(e){let t=(0,K.Tp)(e,{keepSourceTokens:!0});return t.src=e,t.removed=[],t}function tk(e){var t;return null!=(t=e.removed)?t:[]}function tN(e){let t=th(e),r=t?tg(t,"edges"):null;return r?r.items.flatMap(e=>{let t=tb(e);return t?[t]:[]}):[]}function tC(e,t){return(null==e?void 0:e.range)?e.range[1]:t}function tS(e){var t;let r=null!=(t=e.src)?t:"";if(!r)return e.toString();let n=[],a=t=>{if((0,K.oP)(t))return void t.items.forEach((e,l)=>{if((0,K.jh)(e)&&!e.range){var s,o;let a=tC(l>0?t.items[l-1]:null,tC(t,r.length)),i=e.items.map(e=>{var t;let r=e.key instanceof K.CA||e.key instanceof K.Rw?"":String(null!=(t=e.key.value)?t:e.key),n=e.value,a=n&&"object"==typeof n&&"value"in n?String(n.value):String(e.value);return" ".concat(r,": ").concat(a)}),d=null!=(o=null==(s=i[0])?void 0:s.slice(2))?o:"";n.push({start:a,end:a,text:"\n- ".concat(d).concat(i.length>1?"\n".concat(i.slice(1).join("\n")):"")})}else a(e)});if((0,K.jh)(t))for(let l of t.items){let s=tx(l.key);if((0,K.jh)(l.value)||(0,K.oP)(l.value)){if(!l.value.range&&t.range&&s){let e=t.range[1],r=(0,K.jh)(l.value)?"".concat(s,":\n").concat(l.value.toString().replace(/\n$/,"").split("\n").map(e=>" ".concat(e)).join("\n")):"".concat(s,": ").concat(l.value.toString().trim());n.push({start:e,end:e,text:"\n".concat(r)})}else a(l.value);continue}let o=tm(l.value);if(!s||!o)continue;if(!o.range&&t.range){let e=t.range[1];n.push({start:e,end:e,text:"\n".concat(s,": ").concat(o.toString())});continue}if(!o.range)continue;let i=r.slice(o.range[0],o.range[1]),d=e.createNode(o.value).toString();i!==d&&n.push({start:o.range[0],end:o.range[1],text:d})}};for(let[t,r]of(a(e.contents),tk(e)))n.push({start:t,end:r,text:""});tk(e).length=0;let l=r;for(let e of n.sort((e,t)=>t.start-e.start||t.end-e.end))l="".concat(l.slice(0,e.start)).concat(e.text).concat(l.slice(e.end));return l}let tA={agent:"#3b82f6",gate:"#f59e0b",git:"#10b981",judge:"#a855f7",observe:"#06b6d4",hitl:"#f43f5e",subgraph:"#8b5cf6"},tT={run:function(e){var t;let{data:r}=e;return(0,n.jsxs)("div",{className:"min-w-[190px] rounded-lg border border-border bg-surface px-3 py-2 shadow-sm",style:{borderLeft:"4px solid ".concat(null!=(t=tA[r.kind])?t:"#64748b"),height:r.height},children:[r.inputHandles.map((e,t)=>(0,n.jsx)(T.h7,{id:e,type:"target",position:E.yX.Left,className:"!pointer-events-none",style:{top:"".concat((t+1)/(r.inputHandles.length+1)*100,"%")}},e)),(0,n.jsxs)("div",{className:"flex items-center gap-1 text-[10px] text-text-tertiary",children:[(0,n.jsx)("span",{children:r.kind}),r.entry&&(0,n.jsx)("span",{className:"rounded bg-success/15 px-1 text-success",children:"entry"}),r.terminal&&(0,n.jsx)("span",{className:"rounded bg-accent/15 px-1 text-accent",children:"terminal"})]}),(0,n.jsx)("div",{className:"font-mono text-xs font-semibold text-text-primary",children:r.label}),(0,n.jsxs)("div",{className:"max-w-[170px] truncate text-[10px] text-text-tertiary",title:r.recipe,children:[r.recipe," \xb7 max ",r.maxVisits]}),r.outcomes.length>0&&(0,n.jsx)("div",{className:"max-w-[170px] truncate text-[10px] text-text-tertiary",title:r.outcomes.join(" \xb7 "),children:r.outcomes.join(" \xb7 ")}),r.outputHandles.map((e,t)=>(0,n.jsx)(T.h7,{id:e,type:"source",position:E.yX.Right,className:"!pointer-events-none",style:{top:"".concat((t+1)/(r.outputHandles.length+1)*100,"%")}},e))]})}},tE={labelStyle:{fill:"var(--text-primary, #334155)",fontSize:12},labelBgStyle:{fill:"var(--surface, #fff)"}};function tM(e){if(e instanceof tc.Iu){var t;let r=e.body;return(null==r||null==(t=r.errors)?void 0:t.map(e=>e.message).filter(Boolean).join(" \xb7 "))||(null==r?void 0:r.reason)||"저장 검증 실패 (".concat(e.status,")")}return e instanceof Error?e.message:"저장에 실패했습니다."}function t_(){var e,t,r,s,i,d,c,u,p,h,m,x;let{palette:f}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},g=(0,o.M1)(),b=(0,ti.jE)(),[y,v]=(0,a.useState)(null),[j,w]=(0,a.useState)(null),[k,N]=(0,a.useState)(null),[C,S]=(0,a.useState)("note"),[A,E]=(0,a.useState)(tu[0]),[_,O]=(0,a.useState)("read-only"),[I,L]=(0,a.useState)(""),[P,R]=(0,a.useState)("pass"),[D,F]=(0,a.useState)(""),[z,q]=(0,a.useState)(null),[W,G]=(0,a.useState)([]),[B,H]=(0,a.useState)(null),$=(0,l.I)({queryKey:["run-graphs"],queryFn:()=>g.getRunGraphs()}),U=(0,l.I)({queryKey:["graph-kinds","harness"],queryFn:()=>g.getGraphKinds("harness"),enabled:!f,retry:!1}),J=null!=(h=null!=f?f:(null==(e=U.data)?void 0:e.kinds.length)?U.data.kinds:null)?h:tu.map(e=>({graph:"harness",kind:e,plugin:null,description:"",schema:{},core:!0})),Y=J.some(e=>e.kind===A)?A:null!=(m=null==(t=J[0])?void 0:t.kind)?m:A,V=null!=(x=null!=y?y:null==(s=$.data)||null==(r=s.graphs[0])?void 0:r.id)?x:null,X=null==(i=$.data)?void 0:i.graphs.find(e=>e.id===V),Q=(0,l.I)({queryKey:["run-graph",V],queryFn:()=>g.getRunGraph(V),enabled:null!==V}),Z=(null==X?void 0:X.editable)===!0&&"mine"===X.source&&(null==(d=Q.data)?void 0:d.id)===V&&"mine"===Q.data.source&&!0===Q.data.editable,ee=(0,l.I)({queryKey:["run-graph-yaml",Z?V:null],queryFn:()=>g.getRunGraphYaml(V),enabled:Z&&null!==V}),et=Z?j===V?k:(null==(c=ee.data)?void 0:c.id)===V&&"mine"===ee.data.source&&ee.data.editable?ee.data.yaml:null:null,er=(0,a.useMemo)(()=>Q.data&&Q.data.id===V?function(e){let t=e.edges.flatMap((e,t)=>e.map?Object.entries(e.map).map(r=>{let[n,a]=r;return{id:"".concat(t,":").concat(e.from,":").concat(n),source:e.from,target:a,label:n,data:{on:e.on},type:"straight"}}):e.to?[{id:"".concat(t,":").concat(e.from,":").concat(e.to),source:e.from,target:e.to,type:"smoothstep"}]:[]);for(let r of e.nodes){let e=t.filter(e=>e.source===r.node_id),n=t.filter(e=>e.target===r.node_id);e.forEach((e,t)=>{e.sourceHandle="out-".concat(t)}),n.forEach((e,t)=>{e.targetHandle="in-".concat(t)})}let r=new M.Ay.graphlib.Graph;for(let n of(r.setDefaultEdgeLabel(()=>({})),r.setGraph({rankdir:"LR",ranksep:110,nodesep:55,marginx:25,marginy:25}),e.nodes)){let e=Math.max(1,t.filter(e=>e.source===n.node_id).length,t.filter(e=>e.target===n.node_id).length);r.setNode(n.node_id,{width:190,height:Math.max(90,(e+1)*26)})}for(let e of t)r.setEdge(e.source,e.target);M.Ay.layout(r);let n=new Set(e.terminal_nodes);return{nodes:e.nodes.map(a=>{let l=r.node(a.node_id),s=t.filter(e=>e.source===a.node_id),o=t.filter(e=>e.target===a.node_id);return{id:a.node_id,position:{x:l.x-95,y:l.y-l.height/2},data:{label:a.node_id,kind:a.kind,recipe:a.recipe,maxVisits:a.max_visits,entry:e.entry_node===a.node_id,terminal:n.has(a.node_id),outcomes:s.filter(e=>"string"==typeof e.label).map(e=>e.label),inputHandles:o.map(e=>e.targetHandle),outputHandles:s.map(e=>e.sourceHandle),height:l.height}}}),edges:t}}(Q.data):null,[Q.data,V]),en=(0,a.useMemo)(()=>{var e;return null!=(e=null==er?void 0:er.nodes.map(e=>({...e,type:"run"})))?e:[]},[er]);function ea(e){if(Z&&V&&null!==et&&!es.isPending)try{let t=e(et);w(V),N(t),q(null),G([]),H(null)}catch(e){q(tM(e))}}let el=(0,td.n)({mutationFn:()=>g.cloneRunGraph(V,"".concat(V,"-mine")),onSuccess:async e=>{w(null),N(null),q(null),H(null),G([]),await b.invalidateQueries({queryKey:["run-graphs"]}),v(e.id)}}),es=(0,td.n)({mutationFn:async e=>{let{savingId:t,savingYaml:r}=e,n=await g.validateGraph("harness",r);return(G(n.ignoredKeys),!n.ok||n.errors.length>0)?void H(n.errors.map(e=>e.message).join(" \xb7 ")||"그래프 검증에 실패했습니다."):(H(null),g.putRunGraphYaml(t,r))},onSuccess:async e=>{e&&(q(null),w(null),await b.invalidateQueries({queryKey:["run-graph",e.id]}),await b.invalidateQueries({queryKey:["run-graph-yaml",e.id]}))},onError:e=>q(tM(e))});return(0,n.jsxs)("div",{className:"flex min-h-0 flex-1 overflow-hidden",children:[(0,n.jsxs)("aside",{className:"w-56 shrink-0 overflow-y-auto border-r border-border","aria-label":"실행 그래프 목록",children:[(0,n.jsx)("h2",{className:"px-3 py-3 text-xs font-semibold",children:"실행 그래프"}),$.isLoading&&(0,n.jsx)("p",{className:"px-3 text-xs text-text-tertiary",children:"불러오는 중…"}),$.isError&&(0,n.jsx)("p",{role:"alert",className:"px-3 text-xs text-error",children:"그래프 목록을 불러오지 못했습니다."}),(null==(u=$.data)?void 0:u.graphs.length)===0&&(0,n.jsx)("p",{className:"px-3 text-xs text-text-tertiary",children:"그래프가 없습니다."}),(0,n.jsx)("ul",{children:null==(p=$.data)?void 0:p.graphs.map(e=>(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",onClick:()=>{v(e.id),q(null),H(null),G([])},disabled:es.isPending||el.isPending,"aria-current":V===e.id?"true":void 0,className:"w-full px-3 py-2 text-left text-xs hover:bg-surface-elevated ".concat(V===e.id?"bg-accent/15 text-text-primary":"text-text-secondary"),children:[(0,n.jsx)("span",{className:"block font-mono",children:e.id}),(0,n.jsxs)("span",{className:"text-[10px] text-text-tertiary",children:[e.nodeCount," nodes \xb7 ","mine"===e.source?"내 그래프":"core"," \xb7 ",e.editable?"편집":"읽기 전용"]})]})},e.id))})]}),(0,n.jsxs)("section",{className:"relative flex min-w-0 flex-1 flex-col bg-surface","aria-label":"실행 그래프 캔버스",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-2 border-b border-border px-3 py-2",children:[X&&!X.editable&&(0,n.jsx)("button",{type:"button",onClick:()=>el.mutate(),disabled:el.isPending,className:"rounded border border-border px-2 py-1 text-xs",children:"복제해서 고치기"}),Z&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{className:"text-[10px] text-text-tertiary",children:["kind",(0,n.jsx)("select",{"aria-label":"노드 kind",value:Y,onChange:e=>E(e.target.value),className:"ml-1 text-xs",children:J.map(e=>{var t;return(0,n.jsxs)("option",{value:e.kind,children:[e.kind,e.plugin?" \xb7 ".concat(e.plugin):""]},"".concat(null!=(t=e.plugin)?t:"core",":").concat(e.kind))})})]}),(0,n.jsx)("input",{"aria-label":"노드 id",value:C,onChange:e=>S(e.target.value),className:"w-24 rounded border border-border px-1 text-xs"}),(0,n.jsx)("input",{"aria-label":"recipe",value:_,onChange:e=>O(e.target.value),className:"w-28 rounded border border-border px-1 text-xs"}),(0,n.jsx)("button",{type:"button",className:"rounded border border-border px-2 py-1 text-xs",onClick:()=>ea(e=>{let t=tw(e);return!function(e,t){var r;let n=th(e);if(!n)throw Error("graph yaml root is not a map");let a=tg(n,"nodes");if(a||(n.set("nodes",[]),a=tg(n,"nodes")),!a)throw Error("nodes is not a sequence");if(tv(e,t.nodeId))throw Error("node already exists: ".concat(t.nodeId));let l=new K.CA;l.set("node_id",t.nodeId),l.set("kind",t.kind),l.set("recipe",t.recipe),l.set("max_visits",null!=(r=t.maxVisits)?r:1),a.add(l)}(t,{nodeId:C,kind:Y,recipe:_}),tS(t)}),children:"노드 추가"}),(0,n.jsx)("button",{type:"button",className:"rounded border border-border px-2 py-1 text-xs",onClick:()=>ea(e=>{let t=tw(e);return!function(e,t){let r=th(e),n=r?tg(r,"nodes"):null;if(!n)return;let a=n.items.findIndex(e=>{let r=tb(e);return!!r&&ty(r,"node_id")===t});a>=0&&(function(e,t){var r;let n=null==t?void 0:t.range;n&&tk(e).push([n[0],null!=(r=n[2])?r:n[1]])}(e,n.items[a]),n.delete(a))}(t,C),tS(t)}),children:"노드 삭제"}),(0,n.jsx)("button",{type:"button",className:"rounded border border-border px-2 py-1 text-xs",onClick:()=>ea(e=>{let t=tw(e),r=tv(t,C);if(!r)throw Error("node not found: ".concat(C));tj(r,"kind",Y);let n=tv(t,C);if(!n)throw Error("node not found: ".concat(C));return tj(n,"recipe",_),tS(t)}),children:"kind/recipe"}),(0,n.jsx)("input",{"aria-label":"간선 from",value:I,onChange:e=>L(e.target.value),placeholder:"from",className:"w-20 rounded border border-border px-1 text-xs"}),(0,n.jsx)("input",{"aria-label":"간선 결과",value:P,onChange:e=>R(e.target.value),placeholder:"결과",className:"w-16 rounded border border-border px-1 text-xs"}),(0,n.jsx)("input",{"aria-label":"간선 to",value:D,onChange:e=>F(e.target.value),placeholder:"to",className:"w-20 rounded border border-border px-1 text-xs"}),(0,n.jsx)("button",{type:"button",className:"rounded border border-border px-2 py-1 text-xs",onClick:()=>ea(e=>{let t=tw(e);return!function(e,t){let r=th(e);if(!r)throw Error("graph yaml root is not a map");let n=tg(r,"edges");if(n||(r.set("edges",[]),n=tg(r,"edges")),!n)throw Error("edges is not a sequence");let a=tN(e).find(e=>ty(e,"from")===t.from&&tf(e,"map"));a||((a=new K.CA).set("from",t.from),n.add(a)),(function(e){var t;let r=null==(t=tf(e,"map"))?void 0:t.value;if((0,K.jh)(r))return r;let n=new K.CA;return e.set("map",n),n})(a).set(t.outcome,t.to)}(t,{from:I,outcome:P,to:D}),tS(t)}),children:"간선 추가"}),(0,n.jsx)("button",{type:"button",className:"rounded border border-border px-2 py-1 text-xs",onClick:()=>ea(e=>{let t=tw(e);return!function(e,t,r){for(let c of tN(e)){var n,a,l,s,o,i,d;if(ty(c,"from")!==t)continue;let u=null==(n=tf(c,"map"))?void 0:n.value;if(!(0,K.jh)(u))continue;let p=u.items.findIndex(e=>tx(e.key)===r);if(p>=0){let t=u.items[p],r=null!=(i=null==(a=t.key.range)?void 0:a[0])?i:null==(l=t.value.range)?void 0:l[0],n=null!=(d=null==(s=t.value.range)?void 0:s[2])?d:null==(o=t.value.range)?void 0:o[1];void 0!==r&&void 0!==n&&tk(e).push([r,n]),u.delete(p)}}}(t,I,P),tS(t)}),children:"간선 삭제"}),(0,n.jsx)("button",{type:"button",onClick:()=>{Z&&V&&null!==et&&es.mutate({savingId:V,savingYaml:et})},disabled:null===et||es.isPending,className:"rounded bg-accent px-2 py-1 text-xs text-white",children:"저장"})]})]}),!f&&U.isError&&(0,n.jsx)("p",{role:"status",className:"px-3 py-1 text-xs text-warning",children:"어휘 목록을 불러오지 못해 코어 팔레트를 표시합니다."}),(B||z)&&(0,n.jsx)("p",{role:"alert",className:"px-3 py-1 text-xs text-error",children:B||z}),W.length>0&&(0,n.jsxs)("p",{role:"status",className:"px-3 py-1 text-xs text-warning",children:["무시되는 키: ",W.join(" \xb7 ")]}),el.isError&&(0,n.jsx)("p",{role:"alert",className:"px-3 py-1 text-xs text-error",children:tM(el.error)}),Q.isError&&(0,n.jsx)("p",{role:"alert",className:"p-4 text-xs text-error",children:"그래프를 불러오지 못했습니다."}),Q.isLoading&&(0,n.jsx)("p",{className:"p-4 text-xs text-text-tertiary",children:"불러오는 중…"}),er&&(0,n.jsxs)(T.Gc,{nodes:en,edges:er.edges,nodeTypes:tT,fitView:!0,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:Z,edgesReconnectable:!1,deleteKeyCode:null,nodesFocusable:Z,edgesFocusable:!1,defaultEdgeOptions:tE,className:"!bg-surface",children:[(0,n.jsx)(T.VS,{}),(0,n.jsx)(T.H2,{showInteractive:!1})]},null!=V?V:"")]})]})}function tO(){let e="harness"===(0,s.useSearchParams)().get("mode")?"harness":"workflow",t=(0,o.Qj)(),r=(0,l.I)({queryKey:["graph-kinds",e],queryFn:()=>t.getGraphKinds(e),enabled:null!==t,retry:!1}),i=(0,a.useMemo)(()=>{var t;return(null==(t=r.data)?void 0:t.kinds.length)?r.data.kinds:("harness"===e?tu:tp).map(t=>({graph:e,kind:t,plugin:null,description:"",schema:{},core:!0}))},[r.data,e]),d=r.isError||r.isSuccess&&!r.data.kinds.length;return(0,n.jsxs)("div",{className:"flex h-full min-h-0 flex-col",children:[(0,n.jsxs)("header",{className:"flex flex-wrap items-center justify-between gap-2 border-b border-border px-4 py-2",children:[(0,n.jsx)("h1",{className:"text-sm font-semibold",children:"편집기"}),(0,n.jsx)("nav",{"aria-label":"그래프 편집 모드",className:"flex gap-1",children:["workflow","harness"].map(t=>(0,n.jsx)("a",{href:"/app/editor/?mode=".concat(t),"aria-current":e===t?"page":void 0,className:"rounded px-3 py-1 text-xs ".concat(e===t?"bg-accent/15 text-text-primary":"text-text-tertiary hover:bg-surface-elevated"),children:"workflow"===t?"워크플로":"실행 그래프"},t))})]}),(0,n.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col",children:[t&&(0,n.jsxs)("div",{className:"border-b border-border px-3 py-2 text-xs","aria-label":"노드 팔레트",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,n.jsx)("strong",{children:"노드 팔레트"}),i.map(e=>{var t;return(0,n.jsxs)("span",{title:e.description,className:"rounded border border-border px-2 py-0.5",children:[e.kind," ",e.plugin&&(0,n.jsx)("small",{className:"rounded bg-accent/15 px-1 text-accent",children:e.plugin})]},"".concat(null!=(t=e.plugin)?t:"core",":").concat(e.kind))})]}),d&&(0,n.jsx)("p",{role:"status",className:"mt-1 text-warning",children:"어휘 목록을 불러오지 못해 코어 팔레트를 표시합니다."})]}),"workflow"===e?(0,n.jsx)(te,{palette:i}):t?(0,n.jsx)(t_,{palette:i}):(0,n.jsx)("p",{className:"p-4 text-sm text-text-tertiary",children:"Daemon 연결이 설정되지 않았습니다. Settings 에서 Base URL 을 입력하세요."})]})]})}function tI(){return(0,n.jsx)(a.Suspense,{fallback:(0,n.jsx)("p",{className:"p-4 text-sm",children:"편집기를 불러오는 중…"}),children:(0,n.jsx)(tO,{})})}},91514:(e,t,r)=>{"use strict";r.d(t,{M1:()=>d,Qj:()=>c,tI:()=>i});var n=r(41121),a=r(91269),l=r(19855),s=r(24818);let o=(0,a.createContext)(null);function i(e){let{client:t,queryClient:r,defaultStaleTimeMs:i,children:d}=e,c=(0,a.useMemo)(()=>null!=r?r:new l.E({defaultOptions:{queries:{staleTime:null!=i?i:2e3,refetchOnWindowFocus:!1}}}),[r,i]);return(0,n.jsx)(o.Provider,{value:t,children:(0,n.jsx)(s.Ht,{client:c,children:d})})}function d(){let e=(0,a.useContext)(o);if(!e)throw Error("useNexusClient must be used within <NexusProvider>");return e}function c(){return(0,a.useContext)(o)}},91644:(e,t,r)=>{"use strict";r.d(t,{Qb:()=>s,SI:()=>i,dJ:()=>o});let n="elanous:auth-required",a=null,l=!1;function s(e){null===a&&(a=e,window.dispatchEvent(new CustomEvent(n,{detail:{path:e}})))}function o(e){let t=window,r=t=>e(t.detail);return t.addEventListener(n,r),null===a||l||e({path:a}),()=>t.removeEventListener(n,r)}function i(){l=!0}}},e=>{e.O(0,[9668,6987,920,6998,5609,2982,2375,5791,2367,6725,7358],()=>e(e.s=26915)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[131],{12775:(e,t,r)=>{"use strict";r.d(t,{K:()=>n}),r(91269);let n={emit:async function(e){return{ok:!1,reason:"not-configured"}}}},49832:(e,t,r)=>{Promise.resolve().then(r.bind(r,88832))},53220:(e,t,r)=>{"use strict";r.d(t,{V5:()=>s,tV:()=>i});var n=r(94387);class a extends Error{constructor(e,t,r){super(r||t),this.status=e,this.error=t,this.reason=r,this.name="MergeApprovalsApiError"}}function s(e,t){return e instanceof a?401===e.status||"unauthorized"===e.error?{text:"이 기기에 소유자 토큰이 없어 승인 목록을 못 읽었습니다 — 이미 연결된 기기의 설정 › Connect token 에서 토큰을 만들어, 이 기기의 설정 › Daemon › Bearer token 칸에 붙이면 바로 보입니다.",href:"/app/settings/#bearer-token"}:"gh-failed"===e.error?{text:"데몬이 GitHub 를 읽지 못했습니다(데몬 기계의 gh 로그인\xb7네트워크) — 잠시 뒤 다시 열어 보세요.".concat(e.reason?" 사유: ".concat(e.reason.split("\n")[0].slice(0,160)):"")}:"gh-invalid-response"===e.error?{text:"GitHub 응답을 해석하지 못했습니다 — 잠시 뒤 다시 열어 보세요."}:"approvals-repo-unknown"===e.error?{text:"승인할 저장소를 모릅니다 — 데몬 설정 intake.approvals.repo(예: owner/repo)를 채워 주세요.",href:"/app/settings/"}:e.reason?{text:e.reason}:{text:"".concat(t," (").concat(e.status," ").concat(e.error,")")}:e instanceof TypeError?{text:"데몬에 닿지 못했습니다 — 데몬이 켜져 있는지, 이 기기가 같은 네트워크(tailnet)에 있는지 확인하세요."}:{text:e instanceof Error&&e.message?e.message:t}}function i(e){var t,r;let s=null!=(t=e.fetchImpl)?t:fetch,i=(null!=(r=e.baseUrl)?r:"").replace(/\/+$/,"");async function o(t,r){let n={...r,headers:{"content-type":"application/json",...e.authHeader?{authorization:e.authHeader}:{}}},o=e.client?await e.client.fetchResponse(t,n):await s("".concat(i).concat(t),n),d=await o.json().catch(()=>null);if(!o.ok){var l;let e=d&&"object"==typeof d?d:{};throw new a(o.status,null!=(l=e.error)?l:"request-failed",e.reason)}return d}return{list:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"open";return o("merged"===e?"".concat(n.r5,"?state=merged"):n.r5)},get:e=>o("".concat(n.r5,"/").concat(e)),check:(e,t)=>o("".concat(n.r5,"/").concat(e,"/check"),{method:"POST",body:JSON.stringify({headSha:t})}),merge:(e,t)=>o("".concat(n.r5,"/").concat(e,"/merge"),{method:"POST",body:JSON.stringify({headSha:t})})}}},72030:(e,t,r)=>{"use strict";r.d(t,{$:()=>d});var n=r(41121),a=r(72524),s=r(49155),i=r(82157);let o=(0,s.F)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function d(e){let{className:t,variant:r="default",size:s="default",...d}=e;return(0,n.jsx)(a.$,{"data-slot":"button",className:(0,i.cn)(o({variant:r,size:s,className:t})),...d})}},82157:(e,t,r)=>{"use strict";r.d(t,{cn:()=>s});var n=r(3511),a=r(97043);function s(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,a.QP)((0,n.$)(t))}},88832:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(41121),a=r(45609),s=r.n(a),i=r(91269),o=r(38519),d=r(53220);function l(e){let{items:t}=e,r=t.filter(e=>"OPEN"===e.state&&!e.draft);if(0===r.length)return null;let a=r.slice(0,3);return(0,n.jsx)("div",{className:"mx-auto max-w-lg px-4 pt-4",children:(0,n.jsxs)("section",{"aria-label":"승인 대기",className:"rounded-lg border border-emerald-600/40 bg-emerald-500/10 p-3 text-sm",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,n.jsxs)("p",{className:"font-semibold",children:["흡수 아이디어 승인 대기 ",r.length,"건"]}),(0,n.jsx)(s(),{href:"/approvals",className:"rounded-md bg-emerald-700 px-3 py-1 text-white hover:bg-emerald-800",children:"Approvals 에서 보기 →"})]}),(0,n.jsxs)("ul",{className:"mt-2 space-y-1",children:[a.map(e=>(0,n.jsxs)("li",{className:"break-words",children:[(0,n.jsxs)(s(),{href:"/approvals?pr=".concat(e.number),className:"underline",children:["#",e.number]})," \xb7 ",e.title]},e.number)),r.length>a.length&&(0,n.jsxs)("li",{className:"text-muted-foreground",children:["외 ",r.length-a.length,"건"]})]})]})})}function c(){let{client:e}=(0,o.Q)(),t=(0,i.useMemo)(()=>(0,d.tV)({client:e}),[e]),[r,a]=(0,i.useState)([]);return(0,i.useEffect)(()=>{let e=!0;return t.list().then(t=>{let{items:r}=t;e&&a(r)}).catch(()=>{e&&a([])}),()=>{e=!1}},[t]),(0,n.jsx)(l,{items:r})}var u=r(60737);function p(){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(c,{}),(0,n.jsx)(u.SY,{})]})}}},e=>{e.O(0,[2977,216,6062,7990,8519,9651,2367,6725,7358],()=>e(e.s=49832)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7177],{1167:(e,t,r)=>{"use strict";r.d(t,{AppShell:()=>eC});var n=r(41121),a=r(91269),s=r(45609),o=r.n(s),i=r(9050),l=r(72754),d=r(82157),c=r(71807),u=r(6284),m=r(11980),p=r(28725),h=r(50940),x=r(73334),f=r(67089),b=r(11635),g=r(91514),v=r(75791);function w(e){let{compact:t=!1}=e,r=(0,g.Qj)();return t||!r?null:(0,n.jsx)(y,{})}function y(){var e,t,r;let s=(0,v.mP)(),o=(0,v.XL)(),[i,l]=(0,a.useState)(""),[d,c]=(0,a.useState)(""),[u,m]=(0,a.useState)({kind:"idle"}),p=null!=(r=null==(e=s.data)?void 0:e.workflows)?r:[],f=i||(null==(t=p[0])?void 0:t.name)||"",b=async()=>{if(f){m({kind:"pending"});try{let e=await o.mutateAsync({name:f,args:d});m({kind:"started",runId:e.runId,name:f})}catch(e){m({kind:"error",message:e instanceof Error?e.message:"run failed to start"})}}},g=(0,a.useMemo)(()=>(function(e){let t=new Map;for(let n of e){var r;let e=null!=(r=t.get(n.source))?r:[];e.push(n),t.set(n.source,e)}let n=[];for(let e of j){let r=t.get(e);r&&0!==r.length&&(r.sort((e,t)=>e.name.localeCompare(t.name)),n.push({source:e,label:N[e],items:r}))}return n})(p),[p]);return(0,n.jsxs)("div",{"data-testid":"sidebar-workflow-invoker",className:"border-t border-sidebar-border px-3 py-2.5 space-y-1.5",children:[(0,n.jsx)("div",{className:"text-[10px] font-medium uppercase tracking-wider text-sidebar-foreground/60",children:"Run workflow"}),(0,n.jsxs)("select",{value:f,onChange:e=>l(e.target.value),disabled:s.isLoading||0===p.length,"aria-label":"Select workflow to run",className:"block w-full truncate rounded border border-border bg-surface px-1.5 py-1 text-[11px] focus:outline-none focus:ring-1 focus:ring-primary disabled:opacity-50",children:[0===p.length&&(0,n.jsx)("option",{value:"",children:s.isLoading?"loading…":"no workflows"}),g.map(e=>(0,n.jsx)("optgroup",{label:e.label,children:e.items.map(e=>(0,n.jsx)("option",{value:e.name,children:e.name},e.name))},e.source))]}),(0,n.jsx)("input",{type:"text",value:d,onChange:e=>c(e.target.value),placeholder:"args (optional)","aria-label":"Workflow arguments",className:"block w-full rounded border border-border bg-surface px-1.5 py-1 text-[11px] focus:outline-none focus:ring-1 focus:ring-primary"}),(0,n.jsxs)("button",{type:"button",onClick:b,disabled:!f||"pending"===u.kind,"data-testid":"sidebar-workflow-invoker-run",className:"flex w-full items-center justify-center gap-1 rounded bg-primary px-2 py-1 text-[11px] font-medium text-primary-foreground hover:bg-accent-hover disabled:opacity-50",children:["pending"===u.kind?(0,n.jsx)(h.A,{className:"h-3 w-3 animate-spin"}):(0,n.jsx)(x.A,{className:"h-3 w-3"}),"Run"]}),(0,n.jsx)(k,{status:u})]})}function k(e){let{status:t}=e;return"idle"===t.kind||"pending"===t.kind?null:"error"===t.kind?(0,n.jsxs)("p",{"data-testid":"sidebar-workflow-invoker-error",className:"flex items-start gap-1 text-[10px] leading-tight text-error",children:[(0,n.jsx)(f.A,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,n.jsx)("span",{className:"break-all",children:t.message})]}):(0,n.jsxs)("p",{"data-testid":"sidebar-workflow-invoker-started",className:"flex items-start gap-1 text-[10px] leading-tight text-muted-foreground",children:[(0,n.jsx)(b.A,{className:"mt-0.5 h-3 w-3 shrink-0 text-green-600"}),(0,n.jsxs)("span",{className:"min-w-0 flex-1 truncate",children:["started ",(0,n.jsx)("span",{className:"font-mono",children:t.runId.slice(0,14)})," \xb7"," ",(0,n.jsx)(o(),{href:"/workflows",className:"underline",children:"view"})]})]})}let j=["project","global","builtin"],N={project:"Project",global:"Global",builtin:"Built-in"};var E=r(70765),S=r(38519),L=r(28288),A=r(51215),C=r(44130);function I(){var e;let{compact:t=!1,onNavigate:r}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=(0,a.useContext)(S.C),o=(0,i.useRouter)(),l=(0,i.usePathname)(),c=(0,i.useSearchParams)(),u=null!=(e=null==c?void 0:c.get("show"))?e:null,[m,p]=(0,a.useState)([]),[h,x]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(!s)return;let e=!1;return(async()=>{try{let{layouts:t,source:r}=await (0,L.i$)(s.client);if(e)return;(0,A.cY)("showroom.sidebar.list",{count:t.length,source:r}),p(t)}catch(t){if(e)return;(0,A.cY)("showroom.sidebar.list.error",{error:String(t)})}finally{e||x(!0)}})(),()=>{e=!0}},[s]),(0,a.useEffect)(()=>{if(!s)return;let e=e=>{(!e.key||e.key.startsWith("elanous.showroom"))&&(async()=>{try{let{layouts:e}=await (0,L.i$)(s.client);p(e)}catch(e){}})()};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[s]),(0,a.useEffect)(()=>{if(!s)return;let e=s.client.showroomLayoutsEventsUrl();if(!e)return;let t=e=>async()=>{if("hello"!==e){(0,A.cY)("showroom.sidebar.sse.event",{kind:e});try{let{layouts:e}=await (0,L.i$)(s.client);p(e)}catch(e){}}};return(0,C.BX)(e,{events:{hello:t("hello"),upsert:t("upsert"),remove:t("remove")},onError:()=>{},onConstructError:e=>(0,A.cY)("showroom.sidebar.sse.construct-error",{error:String(e)})})},[s]);let f=(0,a.useCallback)(e=>{(0,A.cY)("showroom.sidebar.switch",{name:e}),o.push("/showroom?show=".concat(encodeURIComponent(e))),null==r||r()},[o,r]);return t||!s?null:(0,n.jsxs)("div",{className:"border-t border-sidebar-border/40 px-2 py-3","data-testid":"showroom-sidebar-section",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between px-1 pb-1",children:[(0,n.jsx)("span",{className:"text-[10px] font-medium uppercase tracking-wide text-sidebar-foreground/50",children:"Showrooms"}),(0,n.jsx)("span",{className:"text-[10px] text-sidebar-foreground/40",children:m.length})]}),!h&&0===m.length&&(0,n.jsx)("div",{className:"px-2 py-1 text-[11px] text-sidebar-foreground/40","data-testid":"showroom-sidebar-loading",children:"loading…"}),h&&0===m.length&&(0,n.jsxs)("div",{className:"px-2 py-1 text-[11px] leading-snug text-sidebar-foreground/50","data-testid":"showroom-sidebar-empty",children:["Save a layout in ",(0,n.jsx)("span",{className:"font-medium",children:"/showroom"})," to populate this rail."]}),m.length>0&&(0,n.jsxs)("ul",{className:"space-y-0.5",children:[m.slice(0,8).map(e=>{var t;let r=(t=e.name,!!l&&"/showroom"===l.replace(/\/+$/,"")&&!!u&&u===t);return(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",onClick:()=>f(e.name),"data-testid":"showroom-sidebar-item-".concat(e.name),className:(0,d.cn)("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-[12px] transition-colors",r?"bg-primary/15 text-foreground font-semibold ring-1 ring-primary/40":"text-sidebar-foreground/75 hover:bg-sidebar-accent hover:text-sidebar-foreground"),"aria-current":r?"true":void 0,title:"".concat(e.name," — ").concat(e.panels.length," panels"),children:[(0,n.jsx)(E.A,{className:(0,d.cn)("size-3 shrink-0",r?"text-primary":"text-current"),"aria-hidden":!0}),(0,n.jsx)("span",{className:"flex-1 truncate",children:e.name}),(0,n.jsx)("span",{className:"shrink-0 text-[10px] text-sidebar-foreground/40",children:e.panels.length})]})},e.name)}),m.length>8&&(0,n.jsxs)("li",{className:"px-2 py-1 text-[10px] text-sidebar-foreground/40","data-testid":"showroom-sidebar-truncated",children:["+ ",m.length-8," more (open Showroom to browse)"]})]})]})}let P=m.Ue;function Y(){let{onNavigate:e,onClose:t,compact:r=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=(0,i.usePathname)(),h=(0,i.useRouter)(),x=function(e){if(!e)return"/";let t=e.replace(/\/+$/,"");return""===t?"/":t}(null!=s?s:"/"),f=(0,c.In)(),[b,g]=(0,a.useState)({showLabs:!1,showHidden:!1});(0,a.useEffect)(()=>{let e=()=>g({showLabs:(0,p.fG)(m.f4),showHidden:(0,p.fG)(m.vm)});return e(),window.addEventListener(p.OY,e),window.addEventListener("storage",e),()=>{window.removeEventListener(p.OY,e),window.removeEventListener("storage",e)}},[]);let v=(0,m.Ye)(P,b,f),y=t=>{var a;let s="/"===t.href?"/"===x:x===t.href||x.startsWith(t.href+"/")||(null!=(a=t.activeAlso)?a:[]).some(e=>x===e||x.startsWith(e+"/")),i=t.icon;return(0,n.jsxs)("li",{className:"group/nav relative",children:[(0,n.jsxs)(o(),{href:t.href,"aria-current":s?"page":void 0,onClick:r=>{var n,a;n=t,a=r,null!==n.kind&&"general"!==f&&(a.metaKey||a.ctrlKey||a.shiftKey||a.altKey||(a.preventDefault(),h.push("/workspace?intent=".concat(n.kind)),null==e||e())),r.defaultPrevented||null==e||e()},title:r?"".concat(t.label," — ").concat(t.hint):t.hint,"aria-label":"".concat(t.label," — ").concat(t.hint),className:(0,d.cn)("flex items-center rounded-md text-sm transition-colors",r?"justify-center px-1.5 py-2":"gap-3 px-3 py-2",s?"bg-primary/15 text-foreground font-semibold ring-1 ring-primary/40":"text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-foreground"),children:[(0,n.jsx)(i,{className:(0,d.cn)("h-4 w-4 shrink-0",s?"text-primary":"text-current")}),!r&&t.label,!r&&s&&(0,n.jsx)("span",{className:"ml-auto h-1.5 w-1.5 rounded-full bg-primary","aria-hidden":!0})]}),r&&(0,n.jsxs)("span",{role:"tooltip",className:"pointer-events-none absolute left-full top-1/2 z-50 ml-2 -translate-y-1/2 whitespace-nowrap rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-popover-foreground opacity-0 shadow-md transition-opacity group-hover/nav:opacity-100 [@media(pointer:coarse)]:hidden",children:[(0,n.jsx)("span",{className:"font-medium",children:t.label}),(0,n.jsxs)("span",{className:"ml-1 text-muted-foreground",children:["— ",t.hint]})]})]},t.href)};return(0,n.jsxs)("nav",{className:"flex h-full flex-col",children:[t&&!r&&(0,n.jsxs)("div",{className:"flex items-center justify-between px-3 pt-3 pb-1",children:[(0,n.jsx)("span",{className:"text-[10px] font-medium uppercase tracking-wide text-sidebar-foreground/50",children:"menu"}),(0,n.jsx)("button",{type:"button",onClick:t,"aria-label":"close menu",title:"close menu",className:"rounded-md p-1.5 text-sidebar-foreground/60 hover:bg-sidebar-accent hover:text-sidebar-foreground",children:(0,n.jsx)(l.A,{className:"h-4 w-4"})})]}),(0,n.jsx)("ul",{className:(0,d.cn)("flex-1 space-y-1",r?"px-1 py-2":"px-2 py-3"),children:v.main.map(y)}),v.labs.length>0&&(0,n.jsx)(M,{label:"Labs",compact:r,children:v.labs.map(y)}),v.hidden.length>0&&(0,n.jsx)(M,{label:"Hidden",compact:r,children:v.hidden.map(y)}),b.showLabs&&(0,u.EX)(f,"/showroom")&&(0,n.jsx)(a.Suspense,{fallback:null,children:(0,n.jsx)(I,{compact:r,onNavigate:e})}),b.showLabs&&(0,u.EX)(f,"/workflows")&&(0,n.jsx)(w,{compact:r})]})}function M(e){let{label:t,compact:r,children:a}=e;return(0,n.jsxs)("div",{className:(0,d.cn)("border-t border-sidebar-border",r?"px-1 py-2":"px-2 py-2"),children:[!r&&(0,n.jsx)("span",{className:"px-3 text-[10px] font-medium uppercase tracking-wide text-sidebar-foreground/50",children:t}),(0,n.jsx)("ul",{className:"mt-1 space-y-1",children:a})]})}var R=r(24721),z=r(82823),T=r(31159),O=r(95515),B=r(40148),F=r(94936),D=r(66062),U=r(42859),W=r(87216),q=r(50635),H=r(34881),$=r(84081),_=r(2961),G=r(30422),Q=r(48619),X=r(65032),K=r(85576);let J=[{kind:"chat",label:"chat",icon:U.A},{kind:"term",label:"terminal",icon:W.A},{kind:"intake",label:"intake",icon:q.A},{kind:"tasks",label:"tasks",icon:H.A},{kind:"control",label:"control",icon:_.A},{kind:"settings",label:"settings",icon:T.A}];function V(){let e=(0,Q.hA)(),{addTab:t,activateOrAdd:r}=e,[s,o]=(0,a.useState)(!1),[i,l]=(0,a.useState)({top:0,left:0}),d=(0,a.useRef)(null),c=(0,a.useRef)(null);return(0,a.useLayoutEffect)(()=>{var e;if(!s)return;let t=null==(e=d.current)?void 0:e.getBoundingClientRect();t&&l({top:t.bottom+4,left:t.left})},[s]),(0,a.useEffect)(()=>{if(!s)return;let e=e=>{var t,r;let n=e.target;(null==(t=d.current)||!t.contains(n))&&(null!=(r=c.current)&&r.contains(n)||o(!1))};document.addEventListener("mousedown",e);let t=e=>{"Escape"===e.key&&o(!1)};document.addEventListener("keydown",t);let r=()=>o(!1);return window.addEventListener("scroll",r,!0),window.addEventListener("resize",r),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t),window.removeEventListener("scroll",r,!0),window.removeEventListener("resize",r)}},[s]),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{ref:d,type:"button","aria-label":"add tab",title:"새 탭 (+)",onClick:()=>o(e=>!e),className:"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-secondary hover:text-foreground",children:(0,n.jsx)(K.A,{className:"h-4 w-4"})}),s&&"undefined"!=typeof document&&(0,X.createPortal)((0,n.jsx)("div",{ref:c,role:"menu",style:{position:"fixed",top:i.top,left:i.left,zIndex:100},className:"w-44 rounded-md border border-border bg-popover py-1 shadow-md",children:J.map(t=>{let a=t.icon;return(0,n.jsxs)("button",{type:"button",role:"menuitem",onClick:()=>{var n;"chat"===(n=t.kind)?e.openPicker({kind:"addNewChat"}):r(n),o(!1)},className:"flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm hover:bg-secondary",children:[(0,n.jsx)(a,{className:"h-4 w-4 text-muted-foreground"}),(0,n.jsx)("span",{className:"flex-1",children:t.label})]},t.kind)})}),document.body)]})}var Z=r(41431);let ee={chat:U.A,term:W.A,intake:q.A,tasks:H.A,workflows:$.A,control:_.A,settings:T.A};function et(e){let{open:t,onClose:r}=e,{state:s,activateTab:o,closeTab:i}=(0,Q.hA)(),c=(0,Z.ub)(s),u=(0,a.useRef)(null);if((0,a.useEffect)(()=>{if(!t)return;let e=e=>{"Escape"===e.key&&r()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[t,r]),!t)return null;let m=new Map,p=0;for(let e of c)"chat"===e.kind&&(p+=1,m.set(e.id,p));return(0,n.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":"탭 전환",className:"fixed inset-0 z-50 flex flex-col bg-background",children:[(0,n.jsxs)("div",{className:"flex h-9 shrink-0 items-center justify-between border-b border-border px-3",children:[(0,n.jsx)("h2",{className:"text-sm font-medium",children:"탭 전환"}),(0,n.jsx)("button",{type:"button","aria-label":"close",onClick:r,className:"rounded-md p-1 text-muted-foreground hover:bg-secondary hover:text-foreground",children:(0,n.jsx)(l.A,{className:"h-4 w-4"})})]}),(0,n.jsxs)("div",{ref:u,className:"flex-1 overflow-y-auto p-3 space-y-2",children:[0===c.length&&(0,n.jsx)("p",{className:"text-center text-sm text-muted-foreground py-6",children:"아직 탭이 없습니다."}),c.map(e=>{var t,a;let c=ee[e.kind],u=s.activeId===e.id,p="chat"===e.kind&&null!=(t=m.get(e.id))?t:0,h="chat"===e.kind?null!=(a=e.title)?a:"chat#".concat(p):"term"===e.kind?"terminal":"tasks"===e.kind?"tasks":e.kind;return(0,n.jsxs)("div",{className:(0,d.cn)("flex items-center gap-3 rounded-lg border px-3 py-3 text-sm transition-colors",u?"border-primary bg-primary/10":"border-border bg-card hover:bg-secondary"),children:[(0,n.jsx)("span",{className:(0,d.cn)("inline-flex h-2 w-2 shrink-0 rounded-full",u?"bg-primary":"bg-muted-foreground/30"),"aria-hidden":!0}),(0,n.jsx)(c,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),(0,n.jsx)("button",{type:"button",onClick:()=>{o(e.id),r()},className:"flex-1 truncate text-left",children:h}),(0,n.jsx)("button",{type:"button","aria-label":"close ".concat(h),onClick:t=>{t.stopPropagation(),i(e.id)},className:"inline-flex h-7 w-7 items-center justify-center rounded text-muted-foreground hover:bg-background hover:text-foreground",children:(0,n.jsx)(l.A,{className:"h-3.5 w-3.5"})})]},e.id)})]})]})}let er={chat:U.A,term:W.A,intake:q.A,tasks:H.A,workflows:$.A,control:_.A,settings:T.A};function en(e,t){var r;return"chat"===e.kind?null!=(r=e.title)?r:"chat#".concat(t):"term"===e.kind?"terminal":e.kind}function ea(){var e;let t=(0,Q.tg)(),[r,s]=(0,a.useState)(!1);if(!t)return null;let o=(0,Z.ub)(t.state);if(0===o.length)return null;let i=new Map,c=0;for(let e of o)"chat"===e.kind&&(c+=1,i.set(e.id,c));let u=o.find(e=>e.id===t.state.activeId),m=(null==u?void 0:u.kind)==="chat"&&null!=(e=i.get(u.id))?e:0,p=Math.max(0,o.length-!!u);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{role:"tablist","aria-label":"workspace tabs","data-elanous-component":"topbar-workspace-strip",className:"hidden sm:flex min-w-0 flex-1 items-center gap-1 overflow-x-auto px-1",children:[o.map(e=>{var r;let a=er[e.kind],s=t.state.activeId===e.id,o="chat"===e.kind&&null!=(r=i.get(e.id))?r:0,c=en(e,o);return(0,n.jsxs)("div",{role:"tab","aria-selected":s,onClick:()=>t.activateTab(e.id),className:(0,d.cn)("group flex shrink-0 items-center gap-1 rounded-md px-1.5 py-0.5 text-[11px] font-medium transition-colors cursor-pointer",s?"bg-primary/15 text-foreground ring-1 ring-primary/40":"text-muted-foreground hover:bg-secondary hover:text-foreground"),children:[(0,n.jsx)(a,{className:"h-3 w-3 shrink-0"}),(0,n.jsx)("span",{className:"max-w-[120px] truncate",children:c}),(0,n.jsx)("button",{type:"button","aria-label":"close ".concat(c),onClick:r=>{r.stopPropagation(),t.closeTab(e.id)},className:"ml-0.5 inline-flex h-3.5 w-3.5 items-center justify-center rounded text-muted-foreground/60 opacity-0 transition-opacity hover:bg-background hover:text-foreground group-hover:opacity-100 data-[active=true]:opacity-100","data-active":s?"true":"false",children:(0,n.jsx)(l.A,{className:"h-2.5 w-2.5"})})]},e.id)}),(0,n.jsx)(V,{})]}),(0,n.jsxs)("div",{role:"tablist","aria-label":"workspace tabs (compact)","data-elanous-component":"topbar-workspace-strip-mobile",className:"flex sm:hidden min-w-0 flex-1 items-center gap-1 px-1",children:[u&&(0,n.jsxs)("div",{className:"flex flex-1 min-w-0 items-center gap-1 rounded-md bg-primary/15 px-1.5 py-0.5 text-[11px] font-medium ring-1 ring-primary/40",children:[(()=>{let e=er[u.kind];return(0,n.jsx)(e,{className:"h-3 w-3 shrink-0"})})(),(0,n.jsx)("span",{className:"flex-1 truncate",children:en(u,m)}),(0,n.jsx)("button",{type:"button","aria-label":"close",onClick:()=>t.closeTab(u.id),className:"inline-flex h-3.5 w-3.5 items-center justify-center rounded hover:bg-background",children:(0,n.jsx)(l.A,{className:"h-2.5 w-2.5"})})]}),p>0&&(0,n.jsxs)("button",{type:"button","aria-label":"other tabs (".concat(p,")"),onClick:()=>s(!0),className:"inline-flex h-6 shrink-0 items-center gap-0.5 rounded-md px-1.5 text-[11px] text-muted-foreground hover:bg-secondary hover:text-foreground",children:[(0,n.jsx)(G.A,{className:"h-3 w-3"}),(0,n.jsx)("span",{children:p})]}),(0,n.jsx)(V,{})]}),(0,n.jsx)(et,{open:r,onClose:()=>s(!1)})]})}var es=r(28211),eo=r(38067);function ei(e){return(null==e?void 0:e.kind)==="progress"&&"running"===e.status?3:(null==e?void 0:e.kind)==="progress"?2:1}function el(e){var t,r;if("loading"===e.status)return{kind:"loading"};if("error"===e.status)return{kind:"error",message:e.message||"Failed to load activity"};let n=null!=(t=e.subjects)?t:[],a=(0,es.vq)(n,(0,eo.gA)(null!=(r=e.logs)?r:[])),s=function(e,t){var r,n;let a=e.filter(e=>"live"===(0,es.t_)(e));if(0===a.length)return null;let s=[...a].sort((e,r)=>{let n=ei(t.get(r.id))-ei(t.get(e.id));return 0!==n?n:(e.runId||e.id).localeCompare(r.runId||r.id)})[0];return{run:(r=t.get(s.id),{subjectId:s.id,runId:s.runId||s.id,origin:s.origin,progressLine:(null==r?void 0:r.kind)==="progress"?r.line:null,progressStatus:(null==r?void 0:r.kind)==="progress"?r.status:null,href:(n=s.id,"/observatory#".concat(encodeURIComponent(n)))}),extraLiveCount:a.length-1}}(n,a);return s?{kind:"active",run:s.run,extraLiveCount:s.extraLiveCount}:{kind:"quiet"}}function ed(e){let{snapshot:t}=e;if("quiet"===t.kind||"loading"===t.kind)return null;if("error"===t.kind)return(0,n.jsx)("span",{role:"alert","data-elanous-component":"topbar-activity","data-activity-kind":"error",title:t.message,className:"max-w-[9rem] shrink-0 truncate rounded px-1.5 py-0.5 text-[10px] text-rose-500 sm:max-w-[16rem]",children:"activity error"});let r=function(e){let{run:t,extraLiveCount:r}=e,n=["LIVE ".concat(t.runId),"origin: ".concat(t.origin)];return t.progressStatus&&t.progressLine&&n.push("".concat(t.progressStatus," — ").concat(t.progressLine)),r>0&&n.push("+".concat(r," more")),n.join(" \xb7 ")}(t);return(0,n.jsxs)(o(),{href:t.run.href,"aria-label":r,title:r,"data-elanous-component":"topbar-activity","data-activity-kind":"active","data-run-id":t.run.runId,className:"flex min-w-0 max-w-[7.5rem] shrink items-center gap-1 rounded-md px-1.5 py-0.5 text-[10px] font-medium text-emerald-600 hover:bg-accent sm:max-w-[18rem]",children:[(0,n.jsx)("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full bg-emerald-500","aria-hidden":!0}),(0,n.jsx)("span",{className:"hidden uppercase tracking-wide sm:inline",children:"LIVE"}),(0,n.jsx)("span",{className:"min-w-0 truncate",children:t.run.runId}),t.run.progressLine&&(0,n.jsx)("span",{className:"hidden min-w-0 truncate text-muted-foreground md:inline",children:t.run.progressLine}),t.extraLiveCount>0&&(0,n.jsxs)("span",{className:"shrink-0 text-muted-foreground",children:["+",t.extraLiveCount]})]})}let ec="elanous.pwa.wakeLockOn";function eu(e){let{onToggleSidebar:t,sidebarOpen:r,activity:s}=e,{sessionId:i,config:c}=(0,S.Q)(),{theme:u,setTheme:m}=(0,F.D)(),[p,h]=(0,a.useState)(!1),[x,f]=(0,a.useState)(!1),b=(0,a.useRef)(null),g=function(e){let[t,r]=(0,a.useState)({supported:"undefined"!=typeof navigator&&"wakeLock"in navigator,held:!1,error:null}),n=(0,a.useRef)(null),s=(0,a.useRef)(e);return s.current=e,(0,a.useEffect)(()=>{if("undefined"==typeof navigator)return;let t=navigator.wakeLock;if(!t)return void r(e=>({...e,supported:!1}));let a=async()=>{if(s.current&&(!n.current||n.current.released))try{let e=await t.request("screen");n.current=e,r({supported:!0,held:!0,error:null}),(0,A.cY)("webterm.wake-lock.acquired"),e.addEventListener("release",()=>{n.current=null,r(e=>({...e,held:!1})),(0,A.cY)("webterm.wake-lock.auto-released")})}catch(t){let e=t instanceof Error?t.message:String(t);r({supported:!0,held:!1,error:e}),(0,A.cY)("webterm.wake-lock.acquire-failed",{reason:e})}},o=async()=>{let e=n.current;if(e&&!e.released){try{await e.release(),(0,A.cY)("webterm.wake-lock.released")}catch(e){}n.current=null,r(e=>({...e,held:!1}))}};e?a():o();let i=()=>{"visible"===document.visibilityState&&s.current&&a()};return document.addEventListener("visibilitychange",i),()=>{document.removeEventListener("visibilitychange",i),o()}},[e]),t}(x);(0,a.useEffect)(()=>{"1"===window.localStorage.getItem(ec)&&f(!0)},[]),(0,a.useEffect)(()=>{if(!p)return;let e=e=>{b.current&&(b.current.contains(e.target)||h(!1))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[p]);let v=async()=>{if(i)try{await navigator.clipboard.writeText(i),D.oR.success("Session id copied"),(0,A.cY)("pwa.topbar.session-copy",{sessionId:i})}catch(e){D.oR.error("Copy failed"),(0,A.cY)("pwa.topbar.session-copy-error",{err:String(e)})}};return(0,n.jsxs)("header",{className:"flex h-9 shrink-0 items-center gap-1 border-b border-border bg-background px-2 text-xs",children:[(0,n.jsxs)("button",{type:"button",onClick:t,"aria-label":r?"close menu":"open menu",title:r?"close menu":"open menu",className:"flex shrink-0 items-center gap-1.5 rounded-md p-2 text-muted-foreground hover:bg-accent hover:text-foreground",children:[r?(0,n.jsx)(l.A,{className:"h-4 w-4"}):(0,n.jsx)(R.A,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"hidden text-[11px] font-medium leading-none sm:inline",children:r?"닫기":"메뉴"})]}),(0,n.jsx)(ea,{}),s&&(0,n.jsx)(ed,{snapshot:s}),(0,n.jsxs)("div",{className:"ml-auto flex items-center gap-1",children:[(0,n.jsx)(o(),{href:"/","aria-label":"voice",title:"voice (HTTPS Tailscale Serve 필요)",className:"rounded-md p-1.5 text-muted-foreground hover:bg-accent hover:text-foreground",onClick:()=>(0,A.cY)("pwa.topbar.voice-link"),children:(0,n.jsx)(z.A,{className:"h-4 w-4"})}),(0,n.jsxs)("div",{ref:b,className:"relative",children:[(0,n.jsx)("button",{type:"button",onClick:()=>h(e=>!e),"aria-label":"settings",title:"session ".concat(i?i.slice(0,8):"—"," \xb7 theme ").concat(u),className:(0,d.cn)("rounded-md p-1.5 hover:bg-accent",p?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,n.jsx)(T.A,{className:"h-4 w-4"})}),p&&(0,n.jsxs)("div",{className:"absolute right-0 top-full z-50 mt-1 min-w-[240px] rounded-md border border-border bg-popover p-2 shadow-md",children:[(0,n.jsxs)("div",{className:"mb-2 border-b border-border pb-2",children:[(0,n.jsx)("div",{className:"mb-1 text-[10px] uppercase tracking-wide text-muted-foreground",children:"session"}),(0,n.jsxs)("button",{type:"button",onClick:v,className:"flex w-full items-center justify-between rounded border border-border bg-card px-2 py-1 font-mono text-[11px] hover:bg-secondary",title:"click to copy",children:[(0,n.jsx)("span",{className:"truncate",children:i||"— (not connected)"}),(0,n.jsx)(O.A,{className:"ml-2 h-3 w-3 shrink-0"})]}),c.provider&&(0,n.jsxs)("div",{className:"mt-1 text-[11px] text-muted-foreground",children:["provider: ",(0,n.jsx)("span",{className:"font-medium text-foreground",children:c.provider})]})]}),g.supported&&(0,n.jsxs)("div",{className:"mb-2 border-b border-border pb-2",children:[(0,n.jsx)("div",{className:"mb-1 text-[10px] uppercase tracking-wide text-muted-foreground",children:"screen"}),(0,n.jsxs)("button",{type:"button",onClick:()=>{f(e=>{let t=!e;return window.localStorage.setItem(ec,t?"1":"0"),(0,A.cY)("pwa.topbar.wake-lock.toggle",{next:t}),t})},className:(0,d.cn)("flex w-full items-center justify-between rounded-sm px-2 py-1 text-xs hover:bg-accent",x&&"bg-accent text-accent-foreground"),title:x?"화면 깨움 해제":"화면 깨움 유지",children:[(0,n.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,n.jsx)(B.A,{className:(0,d.cn)("h-3.5 w-3.5",x&&"text-amber-500"),"aria-hidden":!0}),"Wake Lock"]}),(0,n.jsx)("span",{className:"text-[10px] text-muted-foreground",children:g.held?"held":x?"requested":"off"})]}),g.error&&(0,n.jsx)("p",{className:"mt-1 truncate text-[10px] text-rose-500",title:g.error,children:g.error})]}),(0,n.jsxs)("div",{className:"mb-1",children:[(0,n.jsx)("div",{className:"mb-1 text-[10px] uppercase tracking-wide text-muted-foreground",children:"theme"}),(0,n.jsx)("ul",{className:"max-h-56 overflow-auto",children:F.z.map(e=>(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button",className:(0,d.cn)("flex w-full items-center justify-between rounded-sm px-2 py-1 text-xs hover:bg-accent",e===u&&"bg-accent text-accent-foreground"),onClick:()=>{m(e),(0,A.cY)("pwa.topbar.theme",{theme:e})},children:[(0,n.jsx)("span",{className:"truncate",children:e}),e===u&&(0,n.jsx)("span",{className:"ml-2 text-[10px]",children:"✓"})]})},e))})]}),(0,n.jsx)("div",{className:"mt-2 border-t border-border pt-2",children:(0,n.jsx)(o(),{href:"/settings",className:"block rounded px-2 py-1 text-[11px] text-muted-foreground hover:bg-accent hover:text-foreground",onClick:()=>h(!1),children:"full settings →"})})]})]})]})]})}let em=new(r(45012)).ki({baseUrl:"",token:"",provider:""});async function ep(){var e,t,r,n;let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=null!=(e=a.fetchImpl)?e:globalThis.fetch,o=null!=(t=a.listProgressFrames)?t:()=>em.listProgressFrames().catch(()=>null);try{let[e,t]=await Promise.all([s("/v1/terminals").then(async e=>{if(!e.ok)throw Error("GET /v1/terminals failed (".concat(e.status,")"));return e.json()}),o()]);return el({status:"ready",subjects:null!=(r=e.subjects)?r:[],logs:null!=(n=null==t?void 0:t.logs)?n:[]})}catch(e){return el({status:"error",message:e instanceof Error?e.message:"Failed to load activity"})}}var eh=r(78316),ex=r(69935);let ef="elanous.pwa.installBanner.dismissedAt";function eb(){let e=!0===window.navigator.standalone,t=!1;try{var r,n,a;t=(null==(n=(a=window).matchMedia)||null==(r=n.call(a,"(display-mode: standalone)"))?void 0:r.matches)===!0}catch(e){}return e||t}function eg(){try{return window.localStorage}catch(e){return null}}function ev(){let e=eg();if(!e)return null;let t=e.getItem(ef);if(null===t)return null;let r=Number(t);return Number.isFinite(r)?r:null}function ew(e){let t=eg();if(t)try{t.setItem(ef,String(e))}catch(e){}}function ey(e){return e.standalone?{show:!1,reason:"standalone"}:"unsupported"===e.platform?{show:!1,reason:"unsupported"}:null!==e.dismissedAt&&e.now-e.dismissedAt<6048e5?{show:!1,reason:"recently-dismissed"}:{show:!0,reason:"show"}}function ek(){let[e,t]=(0,a.useState)(!1),[r,s]=(0,a.useState)("unsupported"),[o,i]=(0,a.useState)(null);(0,a.useEffect)(()=>{let e=e=>{e.preventDefault(),i(e),s("beforeInstallPromptCapable");let r=ey({now:Date.now(),standalone:eb(),platform:"beforeInstallPromptCapable",dismissedAt:ev()});r.show&&t(!0),(0,A.cY)("pwa.install-banner.beforeinstallprompt",{decision:r})};window.addEventListener("beforeinstallprompt",e);let r=function(e,t){if(t)return"beforeInstallPromptCapable";if("string"!=typeof e||0===e.length)return"unsupported";let r=/iPad|iPhone|iPod/.test(e),n=/Safari/.test(e)&&!/CriOS|FxiOS|EdgiOS/.test(e);return r&&n?"iosSafari":"unsupported"}(navigator.userAgent,!1);s(r);let n=ey({now:Date.now(),standalone:eb(),platform:r,dismissedAt:ev()});n.show&&t(!0),(0,A.cY)("pwa.install-banner.mount",{platform:r,decision:n});let a=()=>{t(!1),(0,A.cY)("pwa.install-banner.appinstalled")};return window.addEventListener("appinstalled",a),()=>{window.removeEventListener("beforeinstallprompt",e),window.removeEventListener("appinstalled",a)}},[]);let d=async()=>{if(o)try{await o.prompt();let e=await o.userChoice;(0,A.cY)("pwa.install-banner.userChoice",{outcome:e.outcome}),"dismissed"===e.outcome&&(ew(Date.now()),t(!1))}catch(e){(0,A.cY)("pwa.install-banner.prompt-error",{reason:String(e)})}finally{i(null)}};return e?(0,n.jsx)("div",{role:"dialog","aria-label":"Install elanous to home screen","data-testid":"install-banner",className:"fixed inset-x-0 bottom-0 z-30 border-t border-border bg-card/95 px-4 py-3 shadow-lg backdrop-blur",children:(0,n.jsxs)("div",{className:"mx-auto flex max-w-2xl items-start gap-3",children:[(0,n.jsx)("div",{className:"mt-0.5 inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-primary/30 bg-primary/10 text-primary",children:(0,n.jsx)(eh.A,{className:"h-4 w-4"})}),(0,n.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,n.jsx)("p",{className:"text-sm font-medium",children:"elanous 를 홈 화면에 추가하세요"}),"iosSafari"===r?(0,n.jsxs)("p",{className:"mt-1 text-[12px] leading-relaxed text-muted-foreground",children:[(0,n.jsx)(ex.A,{className:"inline-block h-3.5 w-3.5 align-text-bottom"})," 공유 버튼 →",(0,n.jsx)("span",{className:"mx-1 rounded bg-muted px-1 font-mono text-[11px]",children:"홈 화면에 추가"}),"로 PWA 로 사용. 알림 \xb7 카메라 \xb7 백그라운드 모두 활성화."]}):(0,n.jsx)("p",{className:"mt-1 text-[12px] leading-relaxed text-muted-foreground",children:"한 번의 클릭으로 PWA 설치 — 알림 \xb7 백그라운드 turn 보장."})]}),(0,n.jsxs)("div",{className:"flex shrink-0 items-center gap-1",children:["beforeInstallPromptCapable"===r&&o&&(0,n.jsx)("button",{type:"button",onClick:()=>{d()},className:"rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90","data-testid":"install-banner-install",children:"설치"}),(0,n.jsx)("button",{type:"button",onClick:()=>{t(!1),ew(Date.now()),(0,A.cY)("pwa.install-banner.dismiss")},"aria-label":"dismiss install banner","data-testid":"install-banner-dismiss",className:"inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground",children:(0,n.jsx)(l.A,{className:"h-4 w-4"})})]})]})}):null}var ej=r(97338),eN=r(9395);function eE(){let e=(0,i.usePathname)(),t=(0,ej._r)(),r=null==e||t.isError||t.isPending||t.isLoading?null:(0,eN.C)(t.data,e);return r?(0,n.jsxs)("div",{role:"status","data-testid":"setup-mode-banner",className:"flex items-center justify-between gap-3 border-b border-border bg-muted px-3 py-1.5 text-xs text-foreground",children:[(0,n.jsx)("span",{children:r}),(0,n.jsx)(o(),{href:"/setup",className:"shrink-0 font-semibold underline underline-offset-2",children:"/setup"})]}):null}var eS=r(91644);function eL(){let[e,t]=(0,a.useState)(!1);return((0,a.useEffect)(()=>(0,eS.dJ)(()=>t(!0)),[]),e)?(0,n.jsxs)("div",{role:"alert","data-testid":"auth-required-banner",className:"flex items-center justify-between gap-3 border-b border-amber-500/40 bg-amber-500/10 px-3 py-2 text-sm text-foreground",children:[(0,n.jsx)("span",{children:"이 기기는 아직 데몬에 연결되지 않았습니다(인증 필요). 연결된 기기의 설정 › Connect token (other devices) 에서 토큰을 만들어, 이 기기의 설정 › Daemon › Bearer token 에 붙여넣으세요."}),(0,n.jsx)(o(),{href:"/settings",className:"shrink-0 font-semibold underline underline-offset-2",children:"/settings"}),(0,n.jsx)("button",{type:"button","aria-label":"연결 안내 닫기",onClick:()=>{(0,eS.SI)(),t(!1)},className:"shrink-0 rounded px-2 py-1 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",children:"닫기"})]}):null}let eA="elanous.pwa.sidebarOpen";function eC(e){let{children:t,activity:r}=e,[s,o]=(0,a.useState)(!1),l=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8e3,[r,n]=(0,a.useState)({kind:"loading"});return(0,a.useEffect)(()=>(function(e){let t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:8e3,a=!1,s=async()=>{let o=await ep(r);a||(e(o),t=setTimeout(()=>{s()},n))};return s(),()=>{a=!0,void 0!==t&&clearTimeout(t)}})(n,e,t),[e.fetchImpl,e.listProgressFrames,t]),r}(),d=(0,i.usePathname)(),c=(0,a.useRef)(null);(0,a.useEffect)(()=>{let e=function(e,t,r,n){var a;let s=function(e,t){var r,n;let a=(null!=(r=e.split(/[?#]/)[0])?r:"/").replace(/\/+$/,"")||"/",s=null;for(let e of t){let t=e.href.split("?")[0].replace(/\/+$/,"")||"/";("/"===t?"/"===a:a===t||a.startsWith("".concat(t,"/")))&&(!s||t.length>s.href.length)&&(s={...e,href:t})}return s?{tab:s.href,visibility:null!=(n=s.visibility)?n:"public"}:{tab:"other",visibility:"other"}}(t,n);return e&&e.tab===s.tab?null:{record:{tab:s.tab,visibility:s.visibility,from:null!=(a=null==e?void 0:e.tab)?a:null,dwellMs:e?Math.max(0,r-e.at):null},next:{tab:s.tab,at:r}}}(c.current,null!=d?d:"/",Date.now(),m.Ue);e&&(c.current=e.next,(0,A.cY)("pwa.nav.visit",e.record))},[d]),(0,a.useEffect)(()=>{let e=()=>{let e=c.current;"hidden"===document.visibilityState&&e&&((0,A.cY)("pwa.nav.leave",{tab:e.tab,dwellMs:Math.max(0,Date.now()-e.at)}),c.current={tab:e.tab,at:1/0})},t=()=>{"visible"===document.visibilityState&&c.current&&!Number.isFinite(c.current.at)&&(c.current={tab:c.current.tab,at:Date.now()})};return document.addEventListener("visibilitychange",e),document.addEventListener("visibilitychange",t),()=>{document.removeEventListener("visibilitychange",e),document.removeEventListener("visibilitychange",t)}},[]),(0,a.useEffect)(()=>{"1"===window.localStorage.getItem(eA)&&o(!0)},[]);let u=()=>{o(!1),window.localStorage.setItem(eA,"0")};return(0,n.jsx)(Q.$M,{children:(0,n.jsxs)("div",{className:"flex h-screen w-full flex-col bg-background text-foreground",children:[(0,n.jsx)(eL,{}),(0,n.jsx)(eE,{}),(0,n.jsx)(eu,{onToggleSidebar:()=>{o(e=>{let t=!e;return window.localStorage.setItem(eA,t?"1":"0"),t})},sidebarOpen:s,activity:null!=r?r:l}),(0,n.jsxs)("div",{className:"flex flex-1 min-h-0",children:[s?(0,n.jsx)("aside",{className:"hidden md:flex md:w-56 md:flex-col border-r border-sidebar-border bg-sidebar text-sidebar-foreground",children:(0,n.jsx)(Y,{onNavigate:u,onClose:u})}):(0,n.jsx)("aside",{className:"hidden md:flex md:w-10 md:flex-col border-r border-sidebar-border bg-sidebar text-sidebar-foreground",children:(0,n.jsx)(Y,{onNavigate:u,compact:!0})}),s&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button","aria-label":"close menu",className:"fixed inset-0 z-30 bg-black/40 md:hidden",onClick:u}),(0,n.jsx)("aside",{className:"fixed left-0 top-9 z-40 h-[calc(100vh-2.25rem)] w-56 border-r border-sidebar-border bg-sidebar text-sidebar-foreground md:hidden",children:(0,n.jsx)(Y,{onNavigate:u,onClose:u})})]}),(0,n.jsx)("main",{className:"flex-1 overflow-auto min-w-0",children:t})]}),(0,n.jsx)(ek,{})]})})}},8687:(e,t,r)=>{"use strict";r.d(t,{NexusClientProvider:()=>d});var n=r(41121),a=r(91269),s=r(42375),o=r(91514),i=r(49536);function l(){let e=(0,i.Fp)();return{baseUrl:e.baseUrl,token:e.token}}function d(e){let{children:t}=e,[r,i]=(0,a.useState)({baseUrl:"",token:""});(0,a.useEffect)(()=>{i(l());let e=()=>i(l());return window.addEventListener("storage",e),window.addEventListener("elanous.daemon.changed",e),()=>{window.removeEventListener("storage",e),window.removeEventListener("elanous.daemon.changed",e)}},[]);let d=(0,a.useMemo)(()=>r.baseUrl?(0,s.xX)({baseUrl:r.baseUrl,...r.token?{token:r.token}:{}}):null,[r.baseUrl,r.token]);return d?(0,n.jsx)(o.tI,{client:d,children:t}):(0,n.jsx)(n.Fragment,{children:t})}},9395:(e,t,r)=>{"use strict";r.d(t,{C:()=>s,P:()=>a});let n="셋업 모드 — 먼저 LLM 을 정하세요";function a(e,t){return(null==e?void 0:e.setupMode)!==!0||"/"!==t?null:"/setup"}function s(e,t){if((null==e?void 0:e.setupMode)!==!0||"/setup"===t||t.startsWith("/setup/"))return null;let r=e.setupMissing;return r&&r.length>0?"".concat(n," (").concat(r.join(", "),")"):n}},12248:(e,t,r)=>{"use strict";r.d(t,{NewBuildBanner:()=>d});var n=r(41121),a=r(91269),s=r(51215);let o=/\\?"b\\?":\\?"([A-Za-z0-9_-]{8,})\\?"/;function i(e){var t,r;return null!=(r=null==(t=o.exec(e))?void 0:t[1])?r:null}function l(e,t){return null!==e&&null!==t&&e!==t}function d(){let[e,t]=(0,a.useState)(null),[r,o]=(0,a.useState)(null);return((0,a.useEffect)(()=>{let e=function(){for(let e of Array.from(document.scripts)){let t=e.textContent?i(e.textContent):null;if(t)return t}return null}();o(e);let r=!1,n=async()=>{if("visible"===document.visibilityState)try{let n=await fetch("/app/",{cache:"no-store"});if(!n.ok)return;let a=i(await n.text());if(r)return;t(a),l(e,a)&&(0,s.cY)("pwa.new-build.detected",{current:e,served:a})}catch(e){}},a=window.setInterval(()=>{n()},12e4),d=()=>{n()};return document.addEventListener("visibilitychange",d),n(),()=>{r=!0,window.clearInterval(a),document.removeEventListener("visibilitychange",d)}},[]),l(r,e))?(0,n.jsxs)("div",{role:"status",className:"fixed inset-x-2 bottom-2 z-[60] mx-auto flex max-w-md items-center gap-3 rounded-md border border-primary/50 bg-background/95 px-3 py-2 text-sm shadow-lg","data-pwa-new-build":!0,children:[(0,n.jsx)("span",{className:"flex-1",children:"새 판이 있습니다 — 이 화면은 이전 판으로 돌고 있어요."}),(0,n.jsx)("button",{type:"button",onClick:()=>{(0,s.cY)("pwa.new-build.reload",{current:r,served:e}),window.location.reload()},className:"rounded-md bg-primary px-2 py-1 text-primary-foreground",children:"새로고침"})]}):null}},21545:(e,t,r)=>{"use strict";r.d(t,{ToastProvider:()=>m});var n=r(41121),a=r(99993),s=r(66062),o=r(11635),i=r(30448),l=r(93981),d=r(91968),c=r(50940);let u=e=>{let{...t}=e,{theme:r="system"}=(0,a.D)();return(0,n.jsx)(s.l$,{theme:r,className:"toaster group",icons:{success:(0,n.jsx)(o.A,{className:"size-4"}),info:(0,n.jsx)(i.A,{className:"size-4"}),warning:(0,n.jsx)(l.A,{className:"size-4"}),error:(0,n.jsx)(d.A,{className:"size-4"}),loading:(0,n.jsx)(c.A,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},toastOptions:{classNames:{toast:"cn-toast"}},...t})};function m(e){let{children:t}=e;return(0,n.jsxs)(n.Fragment,{children:[t,(0,n.jsx)(u,{})]})}},28288:(e,t,r)=>{"use strict";r.d(t,{i$:()=>i,nZ:()=>c,oM:()=>d,sF:()=>l});let n="elanous.showroom.layouts";function a(){return window.localStorage?window.localStorage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{}}}function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a(),t=e.getItem(n);if(!t)return{};try{let e=JSON.parse(t);if(!e||"object"!=typeof e)return{};return e}catch(e){return{}}}function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a(),r=JSON.stringify(e);if(r.length>102400)return{ok:!1,reason:"storage quota exceeded (".concat(r.length," > ").concat(102400,")")};try{return t.setItem(n,r),{ok:!0}}catch(e){return{ok:!1,reason:String(e)}}}async function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a();try{let{layouts:r}=await e.listShowroomLayouts(),n={};for(let e of r)n[e.name]=e;return o(n,t),{layouts:r.slice().sort((e,t)=>t.savedAt-e.savedAt),source:"daemon"}}catch(e){return{layouts:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a();return Object.values(s(e)).sort((e,t)=>t.savedAt-e.savedAt)}(t),source:"local"}}}async function l(e,t,r){var n;let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},l=e.trim();if(!l)return{ok:!1,reason:"name required"};let d=null!=(n=i.backend)?n:a(),c=function(e,t){var r;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=e.trim();if(!i)return{ok:!1,reason:"name required"};let l=null!=(r=n.backend)?r:a(),d=s(l),c={name:i,savedAt:Date.now(),panels:t.map(e=>({id:e.id,kind:e.kind,provider:e.provider,...e.agentBrand?{agentBrand:e.agentBrand}:{},...e.roleHint?{roleHint:e.roleHint}:{},...e.personaId?{personaId:e.personaId}:{},state:e.state})),...n.layoutMode?{layoutMode:n.layoutMode}:{}};d[i]=c;let u=o(d,l);return u.ok?{ok:!0,saved:c}:u}(l,t,i);if(!c.ok)return c;let u=0;try{let e=await r.listShowroomLayouts();if(0===e.layouts.length){let e=s(d);for(let t of Object.values(e))try{await r.saveShowroomLayout(t.name,{savedAt:t.savedAt,panels:t.panels,...t.layoutMode?{layoutMode:t.layoutMode}:{}}),u+=1}catch(e){}return{ok:!0,saved:c.saved,source:"daemon",migrated:u}}return await r.saveShowroomLayout(l,{savedAt:c.saved.savedAt,panels:c.saved.panels,...c.saved.layoutMode?{layoutMode:c.saved.layoutMode}:{}}),{ok:!0,saved:c.saved,source:"daemon",migrated:0}}catch(e){return{ok:!0,saved:c.saved,source:"local",migrated:0}}}async function d(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:a(),n=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a(),r=s(t);return e.trim()in r&&(delete r[e.trim()],o(r,t),!0)}(e,r);try{return await t.deleteShowroomLayout(e),{ok:!0,source:"daemon"}}catch(e){return{ok:n,source:"local"}}}function c(e){return e.panels.map(e=>({id:e.id,kind:e.kind,provider:e.provider,...e.agentBrand?{agentBrand:e.agentBrand}:{},...e.roleHint?{roleHint:e.roleHint}:{},...e.personaId?{personaId:e.personaId}:{},sessionId:null,state:e.state}))}},28725:(e,t,r)=>{"use strict";r.d(t,{MQ:()=>s,OY:()=>n,fG:()=>a});let n="elanous:nav-prefs";function a(e){try{return"1"===window.localStorage.getItem(e)}catch(e){return!1}}function s(e,t){try{t?window.localStorage.setItem(e,"1"):window.localStorage.removeItem(e)}catch(e){}try{window.dispatchEvent(new Event(n))}catch(e){}}},51411:(e,t,r)=>{"use strict";r.d(t,{MaturityBanner:()=>o});var n=r(41121),a=r(9050),s=r(6284);function o(){let e=(0,a.usePathname)(),t=(0,s.dY)(null!=e?e:"");return"beta"!==t&&"broken"!==t?null:(0,n.jsx)("div",{role:"status",className:"border-b border-border bg-muted px-4 py-2 text-sm text-foreground",children:"beta"===t?"베타 — 화면과 동작이 바뀔 수 있습니다.":"이 화면은 지금 고치는 중입니다."})}},67976:(e,t,r)=>{"use strict";r.d(t,{ServiceWorkerRegister:()=>o});var n=r(91269),a=r(51215);async function s(){if("undefined"==typeof navigator)return{status:"unsupported",reason:"no window/navigator (SSR)"};if(!("serviceWorker"in navigator))return{status:"unsupported",reason:"navigator.serviceWorker absent"};if(!window.isSecureContext)return{status:"unsupported",reason:"page not in a secure context (HTTPS or localhost required)"};try{let e=await navigator.serviceWorker.register("/app/sw.js",{scope:"/app/"});if((0,a.cY)("pwa.sw.registered",{scope:e.scope}),e.waiting)return(0,a.cY)("pwa.sw.update-waiting"),{status:"registered",scope:e.scope,updateAvailable:!0};return e.addEventListener("updatefound",()=>{let t=e.installing;t&&t.addEventListener("statechange",()=>{(0,a.cY)("pwa.sw.statechange",{state:t.state})})}),{status:"registered",scope:e.scope,updateAvailable:!1}}catch(t){let e=t instanceof Error?t.message:String(t);return(0,a.cY)("pwa.sw.register-failed",{reason:e}),{status:"error",reason:e}}}function o(){let e=(0,n.useRef)(!1);return(0,n.useEffect)(()=>{e.current||(e.current=!0,s())},[]),null}},69772:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,72069,23)),Promise.resolve().then(r.bind(r,38519)),Promise.resolve().then(r.bind(r,12248)),Promise.resolve().then(r.bind(r,8687)),Promise.resolve().then(r.bind(r,67976)),Promise.resolve().then(r.bind(r,94936)),Promise.resolve().then(r.bind(r,21545)),Promise.resolve().then(r.bind(r,1167)),Promise.resolve().then(r.bind(r,51411)),Promise.resolve().then(r.bind(r,85039)),Promise.resolve().then(r.t.bind(r,19696,23))},71807:(e,t,r)=>{"use strict";r.d(t,{In:()=>d,OG:()=>i});var n=r(91269);let a="elanous.pwa.role",s="elanous:pwa-role";function o(){try{let e=window.localStorage.getItem(a);if("owner"===e||"contributor"===e||"general"===e)return e}catch(e){}return"general"}function i(e){try{window.localStorage.setItem(a,e)}catch(e){}"function"==typeof window.dispatchEvent&&window.dispatchEvent(new Event(s))}function l(e){if("function"!=typeof window.addEventListener)return()=>{};window.addEventListener(s,e);let t=t=>{(t.key===a||null===t.key)&&e()};return window.addEventListener("storage",t),()=>{window.removeEventListener(s,e),window.removeEventListener("storage",t)}}function d(){return(0,n.useSyncExternalStore)(l,o,()=>"general")}},72069:()=>{},82157:(e,t,r)=>{"use strict";r.d(t,{cn:()=>s});var n=r(3511),a=r(97043);function s(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,a.QP)((0,n.$)(t))}},85039:(e,t,r)=>{"use strict";r.d(t,{TooltipProvider:()=>s});var n=r(41121),a=r(34419);function s(e){let{delay:t=0,...r}=e;return(0,n.jsx)(a.B,{"data-slot":"tooltip-provider",delay:t,...r})}},94936:(e,t,r)=>{"use strict";r.d(t,{D:()=>h,ThemeProvider:()=>p,z:()=>i});var n=r(41121),a=r(91269),s=r(51215),o=r(91514);let i=["catppuccin-mocha","mocha-pastel-accent","catppuccin-latte","rose-pine-dawn","nord-light","elanous-pastel-default"],l="elanous.pwa.theme",d="dashboard.theme.active",c="catppuccin-mocha";function u(e){return"string"==typeof e&&i.includes(e)}let m=(0,a.createContext)(null);function p(e){let{children:t}=e,r=(0,o.Qj)(),[p,h]=(0,a.useState)(c),x=(0,a.useRef)(0),f=(0,a.useCallback)(e=>{h(e),document.documentElement.dataset.theme=e},[]);(0,a.useEffect)(()=>{let e=localStorage.getItem(l),t=u(e)?e:c;f(t),(0,s.cY)("webterm.provider.theme.init",{theme:t})},[f]),(0,a.useEffect)(()=>{if(!r)return;let e=!0,t=x.current;return r.getSwitch(d).then(r=>{let{switch:n}=r;e&&t===x.current&&u(n.value)&&(f(n.value),localStorage.setItem(l,n.value))}).catch(()=>void 0),()=>{e=!1}},[f,r]);let b=(0,a.useCallback)(e=>{u(e)&&(x.current+=1,f(e),localStorage.setItem(l,e),(0,s.cY)("webterm.provider.theme.set",{theme:e}),null==r||r.putSwitch(d,{value:e}).catch(()=>void 0))},[f,r]);return(0,n.jsx)(m.Provider,{value:{theme:p,setTheme:b,themes:i},children:t})}function h(){let e=(0,a.useContext)(m);if(!e)throw Error("useTheme must be used inside <ThemeProvider>");return e}},97338:(e,t,r)=>{"use strict";r.d(t,{_r:()=>s});var n=r(91269),a=r(91514);function s(){let e=(0,a.Qj)(),[t,r]=(0,n.useState)({data:void 0,isError:!1,isPending:!0});return(0,n.useEffect)(()=>{if(!e)return void r({data:void 0,isError:!1,isPending:!0});let t=!0,n=()=>{e.getHealth().then(e=>{t&&r({data:e,isError:!1,isPending:!1})}).catch(()=>{t&&r(e=>({...e,isError:!0,isPending:!1}))})};n();let a=setInterval(n,6e4);return()=>{t=!1,clearInterval(a)}},[e]),{...t,isLoading:t.isPending&&null!==e}}r(67842)}},e=>{e.O(0,[1026,626,2977,920,6062,7990,6998,1201,9804,8519,2375,9454,8067,8619,5791,2367,6725,7358],()=>e(e.s=69772)),_N_E=e.O()}]);
|