cli-jaw 2.17.62 → 2.17.63
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/README.ja.md +17 -17
- package/README.ko.md +17 -17
- package/README.md +17 -17
- package/README.zh-CN.md +17 -17
- package/dist/bin/commands/tui/input-handler.js +19 -0
- package/dist/bin/commands/tui/input-handler.js.map +1 -1
- package/dist/bin/commands/tui/overlays.js +8 -4
- package/dist/bin/commands/tui/overlays.js.map +1 -1
- package/dist/bin/star-prompt.js +1 -1
- package/dist/bin/star-prompt.js.map +1 -1
- package/dist/server.js +14 -1
- package/dist/server.js.map +1 -1
- package/dist/src/agent/claude-runtime-pool.js +2 -1
- package/dist/src/agent/claude-runtime-pool.js.map +1 -1
- package/dist/src/agent/claude-runtime-run.js +28 -7
- package/dist/src/agent/claude-runtime-run.js.map +1 -1
- package/dist/src/agent/lifecycle-handler.js +34 -6
- package/dist/src/agent/lifecycle-handler.js.map +1 -1
- package/dist/src/agent/runtime/claude-sdk-events.js +136 -9
- package/dist/src/agent/runtime/claude-sdk-events.js.map +1 -1
- package/dist/src/agent/runtime/claude-sdk-history-loader.js +24 -0
- package/dist/src/agent/runtime/claude-sdk-history-loader.js.map +1 -0
- package/dist/src/agent/runtime/claude-sdk-hooks.js +10 -4
- package/dist/src/agent/runtime/claude-sdk-hooks.js.map +1 -1
- package/dist/src/agent/runtime/claude-sdk-messages.js +25 -2
- package/dist/src/agent/runtime/claude-sdk-messages.js.map +1 -1
- package/dist/src/agent/runtime/claude-sdk-options.js +36 -3
- package/dist/src/agent/runtime/claude-sdk-options.js.map +1 -1
- package/dist/src/agent/runtime/claude-sdk-permissions.js +32 -9
- package/dist/src/agent/runtime/claude-sdk-permissions.js.map +1 -1
- package/dist/src/agent/runtime/claude-sdk-session.js +165 -17
- package/dist/src/agent/runtime/claude-sdk-session.js.map +1 -1
- package/dist/src/agent/runtime/claude-sdk-version.js +8 -0
- package/dist/src/agent/runtime/claude-sdk-version.js.map +1 -0
- package/dist/src/agent/spawn/backend-codex-app.js +619 -0
- package/dist/src/agent/spawn/backend-codex-app.js.map +1 -0
- package/dist/src/agent/spawn/backend-context.js +2 -0
- package/dist/src/agent/spawn/backend-context.js.map +1 -0
- package/dist/src/agent/spawn/backend-copilot.js +385 -0
- package/dist/src/agent/spawn/backend-copilot.js.map +1 -0
- package/dist/src/agent/spawn/backend-native-acp.js +379 -0
- package/dist/src/agent/spawn/backend-native-acp.js.map +1 -0
- package/dist/src/agent/spawn/backend-pi.js +565 -0
- package/dist/src/agent/spawn/backend-pi.js.map +1 -0
- package/dist/src/agent/spawn/types.js +2 -0
- package/dist/src/agent/spawn/types.js.map +1 -0
- package/dist/src/agent/spawn.js +44 -1858
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/cli/claude-default-model-boot.js +36 -0
- package/dist/src/cli/claude-default-model-boot.js.map +1 -0
- package/dist/src/cli/claude-model-discovery.js +13 -1
- package/dist/src/cli/claude-model-discovery.js.map +1 -1
- package/dist/src/cli/claude-models.js +7 -1
- package/dist/src/cli/claude-models.js.map +1 -1
- package/dist/src/cli/commands.js +5 -15
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/tui/composer.js +3 -3
- package/dist/src/cli/tui/composer.js.map +1 -1
- package/dist/src/cli/tui/skill-mention.js +15 -0
- package/dist/src/cli/tui/skill-mention.js.map +1 -0
- package/dist/src/code-mode/manager.js +174 -9
- package/dist/src/code-mode/manager.js.map +1 -1
- package/dist/src/code-mode/providers/catalog.js +5 -3
- package/dist/src/code-mode/providers/catalog.js.map +1 -1
- package/dist/src/code-mode/providers/claude-history.js +132 -0
- package/dist/src/code-mode/providers/claude-history.js.map +1 -0
- package/dist/src/code-mode/providers/claude.js +74 -7
- package/dist/src/code-mode/providers/claude.js.map +1 -1
- package/dist/src/code-mode/providers/codex-app.js +7 -1
- package/dist/src/code-mode/providers/codex-app.js.map +1 -1
- package/dist/src/code-mode/session.js +158 -11
- package/dist/src/code-mode/session.js.map +1 -1
- package/dist/src/code-mode/store.js +416 -28
- package/dist/src/code-mode/store.js.map +1 -1
- package/dist/src/command-contract/catalog.js +3 -22
- package/dist/src/command-contract/catalog.js.map +1 -1
- package/dist/src/core/codex-config.js +3 -62
- package/dist/src/core/codex-config.js.map +1 -1
- package/dist/src/core/config.js +116 -14
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/runtime-settings.js +20 -10
- package/dist/src/core/runtime-settings.js.map +1 -1
- package/dist/src/core/settings-watch.js +1 -0
- package/dist/src/core/settings-watch.js.map +1 -1
- package/dist/src/core/skill-mentions.js +83 -0
- package/dist/src/core/skill-mentions.js.map +1 -0
- package/dist/src/manager/registry.js +5 -1
- package/dist/src/manager/registry.js.map +1 -1
- package/dist/src/manager/routes/desktop-status.js +1 -1
- package/dist/src/manager/routes/desktop-status.js.map +1 -1
- package/dist/src/orchestrator/pipeline.js +11 -1
- package/dist/src/orchestrator/pipeline.js.map +1 -1
- package/dist/src/prompt/builder.js +10 -4
- package/dist/src/prompt/builder.js.map +1 -1
- package/dist/src/prompt/templates/a1-system.md +1 -1
- package/dist/src/routes/code-native.js +51 -3
- package/dist/src/routes/code-native.js.map +1 -1
- package/dist/src/routes/settings.js +1 -4
- package/dist/src/routes/settings.js.map +1 -1
- package/dist/src/routes/skills.js +7 -0
- package/dist/src/routes/skills.js.map +1 -1
- package/dist/src/shared/skill-mention.js +61 -0
- package/dist/src/shared/skill-mention.js.map +1 -0
- package/dist/src/shared/tool-input.js +137 -0
- package/dist/src/shared/tool-input.js.map +1 -0
- package/package.json +7 -5
- package/public/css/activity.css +83 -20
- package/public/css/layout.css +2 -2
- package/public/css/sidebar.css +18 -0
- package/public/css/variables.css +23 -2
- package/public/dist/.vite/manifest.json +302 -334
- package/public/dist/assets/Activity-DPLlOJ46.js +1 -0
- package/public/dist/assets/AdvancedExport-BgOgGvc5.js +1 -0
- package/public/dist/assets/Agent-O_U8ny90.js +1 -0
- package/public/dist/assets/Browser-m6VynQXV.js +1 -0
- package/public/dist/assets/BrowserPanel-Bb-Bge6B.js +3 -0
- package/public/dist/assets/ChannelEnablementControl-BSuKQhTW.js +85 -0
- package/public/dist/assets/ChannelSetupEntry-DHLoZEzJ.js +1 -0
- package/public/dist/assets/ChannelsDiscord-B-G8vsYy.js +1 -0
- package/public/dist/assets/ChannelsSlack-oPuh922z.js +1 -0
- package/public/dist/assets/ChannelsTelegram-PmTv43KQ.js +1 -0
- package/public/dist/assets/CodeCanvas-CVbdp0S-.js +3 -0
- package/public/dist/assets/DashboardMeta-BqEiJrvr.js +1 -0
- package/public/dist/assets/DesignPanel-BOb-HMbl.js +2 -0
- package/public/dist/assets/{Developer-BdKPcw8Z.js → Developer-CbySB7_Z.js} +1 -1
- package/public/dist/assets/{DiffPanel-DtJuvU5y.js → DiffPanel-D9Cch5FG.js} +1 -1
- package/public/dist/assets/Display-C0Zdamcb.js +1 -0
- package/public/dist/assets/Display-DU4_76cS.js +1 -0
- package/public/dist/assets/DocPanel-DvtFw8AP.js +1 -0
- package/public/dist/assets/{Embedding-DvdTj1BF.js → Embedding-CCFMOB_2.js} +1 -1
- package/public/dist/assets/Employees-BanvF58d.js +1 -0
- package/public/dist/assets/FolderPanel-CJvwRwIV.js +3 -0
- package/public/dist/assets/Heartbeat-uyi_MpUd.js +1 -0
- package/public/dist/assets/InlineWarn-Cq4z28F3.js +1 -0
- package/public/dist/assets/MarkdownRenderer-Cc3DeHvm.js +1 -0
- package/public/dist/assets/{MarkdownRenderer-DhonsAPC.js → MarkdownRenderer-DzN66XVb.js} +1 -1
- package/public/dist/assets/Mcp-rjPoL_Zo.js +4 -0
- package/public/dist/assets/Memory-C9I33pIi.js +1 -0
- package/public/dist/assets/{MilkdownWysiwygEditor-D6JaLDE4.js → MilkdownWysiwygEditor-xObhviw7.js} +1 -1
- package/public/dist/assets/ModelProvider-fiUktMaO.js +1 -0
- package/public/dist/assets/Network-CuqFrOvR.js +1 -0
- package/public/dist/assets/NotesGraphWorkspace-DO9LtVGF.js +1 -0
- package/public/dist/assets/PanelLayoutProvider-DRZ4QkBC.js +1 -0
- package/public/dist/assets/Permissions-BltXiZnz.js +1 -0
- package/public/dist/assets/{Permissions-BwiMEoTV.js → Permissions-DcCbFMIq.js} +1 -1
- package/public/dist/assets/Profile-DUL7-RE_.js +1 -0
- package/public/dist/assets/Prompts-C9vY8ivQ.js +1 -0
- package/public/dist/assets/SpeechKeys-BJ8V7U5E.js +1 -0
- package/public/dist/assets/TelegramHub-DtyjLGFR.js +1 -0
- package/public/dist/assets/{TerminalPanel-Bu9i-P2f.js → TerminalPanel-c1xhiy53.js} +1 -1
- package/public/dist/assets/app-BjKzqXCv.css +1 -0
- package/public/dist/assets/app-CZwx0V6K.js +59 -0
- package/public/dist/assets/bgtask-badge-CnVkcp3c.js +1 -0
- package/public/dist/assets/{bgtask-badge-DfiHuzxT.js → bgtask-badge-Cp26S8Uq.js} +1 -1
- package/public/dist/assets/client-platform-WO8m6kPQ.js +1 -0
- package/public/dist/assets/{employees-BQaJNp-u.js → employees-CsvI0_5V.js} +1 -1
- package/public/dist/assets/error-normalize-clOi-AAA.js +1 -0
- package/public/dist/assets/fields-CicOWY-X.js +1 -0
- package/public/dist/assets/iframe-renderer-DWx9v2Iz.js +1 -0
- package/public/dist/assets/iframe-renderer-DmHYOI1A.js +142 -0
- package/public/dist/assets/{react-C_pPTFsM.js → jsx-runtime-CkEUZM6i.js} +1 -1
- package/public/dist/assets/manager-CCXm5Yfe.js +5 -0
- package/public/dist/assets/manager-D9rhKFKc.css +1 -0
- package/public/dist/assets/manager-shortcuts-Cqmr0mEq.js +1 -0
- package/public/dist/assets/{memory-EG1B51up.js → memory-C6qtAMdJ.js} +1 -1
- package/public/dist/assets/memory-PPofQPeB.js +1 -0
- package/public/dist/assets/message-history-DcjBuubA.js +4 -0
- package/public/dist/assets/message-history-bw4qF01Z.js +1 -0
- package/public/dist/assets/page-shell-DfinU3mb.js +1 -0
- package/public/dist/assets/react-dom-URBLzV3w.js +1 -0
- package/public/dist/assets/{render-Dp07lZAJ.js → render-DfYro-fG.js} +1 -1
- package/public/dist/assets/{settings-jlI4X-zt.js → settings-CvsLWlJn.js} +38 -30
- package/public/dist/assets/settings-DMiQe469.js +1 -0
- package/public/dist/assets/settings-DgAlohx9.js +1 -0
- package/public/dist/assets/settings-core-BH7J_Rbm.js +1 -0
- package/public/dist/assets/{settings-core-B5Uf_lWY.js → settings-core-pnpw-eZv.js} +1 -1
- package/public/dist/assets/{settings-embedding-BfWzWKMM.js → settings-embedding-BRW0WZvh.js} +3 -3
- package/public/dist/assets/{settings-embedding-DhEdT86W.css → settings-embedding-CUQ8Is3y.css} +1 -1
- package/public/dist/assets/settings-types-CYKy0xz4.js +1 -0
- package/public/dist/assets/shared-D1begqvi.js +1 -0
- package/public/dist/assets/{sidebar-BUemG2ZN.js → sidebar-C_80w4iY.js} +3 -3
- package/public/dist/assets/{skills-CKUcEN9m.js → skills-D_2adqge.js} +1 -1
- package/public/dist/assets/skills-DeNVAVgt.js +1 -0
- package/public/dist/assets/{slash-commands-D34GgHFX.js → slash-commands-B_Hq5RkC.js} +2 -2
- package/public/dist/assets/slash-commands-Cj5qoRWc.js +1 -0
- package/public/dist/assets/tool-input-DI7uu8Ah.js +2 -0
- package/public/dist/assets/{trace-drawer-DBmK-5F_.js → trace-drawer-B6XuPodh.js} +1 -1
- package/public/dist/assets/ui-BbR_fFiK.js +1 -0
- package/public/dist/assets/{ui-vm2iuLcS.js → ui-D8xzm7DN.js} +1 -1
- package/public/dist/index.html +11 -3
- package/public/dist/manager/index.html +3 -3
- package/public/dist/settings/index.html +2 -2
- package/public/index.html +9 -1
- package/public/js/features/activity-history.ts +50 -21
- package/public/js/features/activity-rows.ts +158 -10
- package/public/js/features/activity-view.ts +5 -5
- package/public/js/features/chat.ts +2 -0
- package/public/js/features/employees.ts +1 -0
- package/public/js/features/resize-guard.ts +39 -0
- package/public/js/features/settings-cli-status.ts +49 -17
- package/public/js/features/settings-types.ts +39 -1
- package/public/js/features/skill-mentions.ts +143 -0
- package/public/js/main.ts +15 -0
- package/public/js/virtual-scroll.ts +67 -1
- package/public/locales/en.json +2 -0
- package/public/locales/ja.json +2 -0
- package/public/locales/ko.json +2 -0
- package/public/locales/zh.json +2 -0
- package/public/manager/src/AppChrome.tsx +2 -0
- package/public/manager/src/InstancePreview.tsx +1 -1
- package/public/manager/src/SidebarRailRouter.tsx +3 -1
- package/public/manager/src/browser-panel/BrowserPanel.tsx +47 -12
- package/public/manager/src/browser-panel/browser-address-state.ts +11 -0
- package/public/manager/src/client-platform.ts +18 -0
- package/public/manager/src/code/CodeCanvas.tsx +4 -2
- package/public/manager/src/code/CodeComposer.tsx +22 -10
- package/public/manager/src/code/CodeDraftEmptyState.tsx +64 -0
- package/public/manager/src/code/CodeSessionList.tsx +154 -40
- package/public/manager/src/code/CodeTranscript.tsx +104 -16
- package/public/manager/src/code/CodeWorkbench.tsx +21 -11
- package/public/manager/src/code/CodeWorkspaceHeader.tsx +5 -10
- package/public/manager/src/code/ComposerFooter.tsx +9 -1
- package/public/manager/src/code/code-composer.css +1 -1
- package/public/manager/src/code/code-controller-draft-storage.ts +16 -8
- package/public/manager/src/code/code-controller-drafts.ts +33 -6
- package/public/manager/src/code/code-controller-runtime.ts +189 -17
- package/public/manager/src/code/code-controller-types.ts +19 -1
- package/public/manager/src/code/code-recent-workspaces.ts +25 -0
- package/public/manager/src/code/code-session-client.ts +19 -1
- package/public/manager/src/code/code-session-sidebar.css +38 -0
- package/public/manager/src/code/code-session-state.ts +2 -0
- package/public/manager/src/code/code-types.ts +47 -0
- package/public/manager/src/code/code-workbench.css +36 -1
- package/public/manager/src/code/code.css +171 -7
- package/public/manager/src/code/session-order.ts +80 -0
- package/public/manager/src/code/tool-summary.ts +45 -11
- package/public/manager/src/folder-panel/folder-shortcuts.ts +5 -9
- package/public/manager/src/hooks/useCommandPalette.ts +3 -7
- package/public/manager/src/main.tsx +1 -0
- package/public/manager/src/manager-components.css +25 -23
- package/public/manager/src/manager-dashboard-reminders.css +2 -2
- package/public/manager/src/manager-layout.css +1 -1
- package/public/manager/src/manager-shortcut-runner.ts +9 -2
- package/public/manager/src/manager-shortcuts.ts +83 -21
- package/public/manager/src/panels/desktop-bridge.ts +4 -1
- package/public/manager/src/panels/panels.css +9 -0
- package/public/manager/src/preview.ts +19 -4
- package/public/manager/src/settings/pages/AdvancedExport.tsx +28 -30
- package/public/manager/src/settings/pages/Browser.tsx +45 -47
- package/public/manager/src/settings/pages/ChannelsDiscord.tsx +51 -26
- package/public/manager/src/settings/pages/ChannelsSlack.tsx +59 -17
- package/public/manager/src/settings/pages/ChannelsTelegram.tsx +51 -26
- package/public/manager/src/settings/pages/Display.tsx +2 -1
- package/public/manager/src/settings/pages/Employees.tsx +3 -3
- package/public/manager/src/settings/pages/Mcp.tsx +220 -200
- package/public/manager/src/settings/pages/Memory.tsx +35 -41
- package/public/manager/src/settings/pages/ModelProvider.tsx +23 -98
- package/public/manager/src/settings/pages/Network.tsx +5 -4
- package/public/manager/src/settings/pages/Permissions.tsx +38 -16
- package/public/manager/src/settings/pages/Prompts.tsx +12 -9
- package/public/manager/src/settings/pages/SpeechKeys.tsx +132 -139
- package/public/manager/src/settings/pages/TelegramHub.tsx +67 -20
- package/public/manager/src/settings/pages/components/AvatarCard.tsx +9 -8
- package/public/manager/src/settings/pages/components/ChannelSetupEntry.tsx +2 -2
- package/public/manager/src/settings/pages/components/EmployeeRow.tsx +6 -12
- package/public/manager/src/settings/pages/components/HealthBadge.tsx +11 -6
- package/public/manager/src/settings/pages/components/HeartbeatJobRow.tsx +35 -16
- package/public/manager/src/settings/pages/components/HeartbeatJobsSection.tsx +11 -11
- package/public/manager/src/settings/pages/components/HeartbeatMarkdownSection.tsx +7 -7
- package/public/manager/src/settings/pages/components/InlineWarn.tsx +4 -9
- package/public/manager/src/settings/pages/components/McpServerCard.tsx +39 -27
- package/public/manager/src/settings/pages/components/MemoryRow.tsx +21 -16
- package/public/manager/src/settings/pages/components/PerCliRow.tsx +122 -121
- package/public/manager/src/settings/pages/components/PiProfileDialog.tsx +9 -6
- package/public/manager/src/settings/pages/components/SlackSetup.tsx +8 -8
- package/public/manager/src/settings/pages/components/TransportStatusChips.tsx +14 -10
- package/public/manager/src/settings/pages/components/agent/AgentEmployeesSection.tsx +26 -26
- package/public/manager/src/settings/pages/components/agent/PermissionQuickSection.tsx +5 -5
- package/public/manager/src/settings/pages/components/agent/RuntimeEmployeeRow.tsx +14 -11
- package/public/manager/src/settings/pages/components/agent/RuntimeHeader.tsx +1 -3
- package/public/manager/src/settings/pages/components/agent/agent-meta.ts +0 -2
- package/public/manager/src/settings/pages/components/runtime-transport-field.tsx +2 -2
- package/public/manager/src/settings/pages/manager/Activity.tsx +6 -2
- package/public/manager/src/settings/pages/manager/Display.tsx +3 -8
- package/public/manager/src/settings/pages/manager/shared.tsx +44 -33
- package/public/manager/src/settings/pages/page-shell.tsx +66 -0
- package/public/manager/src/settings-agent.css +185 -36
- package/public/manager/src/settings-standalone.tsx +1 -0
- package/public/manager/src/settings-surface.css +96 -0
- package/public/manager/src/types.ts +1 -0
- package/scripts/ci/install-ripgrep.sh +35 -0
- package/scripts/collect-fresh-install-evidence.sh +2 -2
- package/scripts/install-risk-gate.mjs +2 -3
- package/scripts/install-wsl.sh +1 -1
- package/scripts/install.ps1 +1 -1
- package/scripts/install.sh +1 -1
- package/scripts/release-1.6.0.sh +1 -1
- package/scripts/release-gates.mjs +48 -13
- package/scripts/release-preview.sh +2 -2
- package/scripts/restack-pr.sh +88 -0
- package/scripts/verify-electron-update-metadata.mjs +1 -1
- package/scripts/windows-support-contract.json +1 -1
- package/public/dist/assets/Activity-BUrp73Re.js +0 -1
- package/public/dist/assets/AdvancedExport-B7h_ZvBu.js +0 -1
- package/public/dist/assets/Agent-DnbZJP7b.js +0 -1
- package/public/dist/assets/Browser-CiBoK5Qx.js +0 -1
- package/public/dist/assets/BrowserPanel-SZAUc9T2.js +0 -3
- package/public/dist/assets/ChannelEnablementControl-Dl0uYx38.js +0 -85
- package/public/dist/assets/ChannelSetupEntry-DxtOrN01.js +0 -1
- package/public/dist/assets/ChannelsDiscord-BEGGwd_3.js +0 -1
- package/public/dist/assets/ChannelsSlack-BryC2Ahr.js +0 -1
- package/public/dist/assets/ChannelsTelegram-CGSpaImJ.js +0 -1
- package/public/dist/assets/CodeCanvas-DpkFi5Au.js +0 -2
- package/public/dist/assets/DashboardMeta-Dh-tasbY.js +0 -1
- package/public/dist/assets/DesignPanel-NLNK9wCo.js +0 -2
- package/public/dist/assets/Display-BHGFX3O0.js +0 -1
- package/public/dist/assets/Display-BW-_pKRf.js +0 -1
- package/public/dist/assets/DocPanel-BM41cYpS.js +0 -1
- package/public/dist/assets/Employees-BuFw6-fT.js +0 -1
- package/public/dist/assets/FolderPanel-C-eQT3Yq.js +0 -3
- package/public/dist/assets/Heartbeat-CIVtKWNc.js +0 -1
- package/public/dist/assets/InlineWarn-DIMbcbzk.js +0 -1
- package/public/dist/assets/MarkdownRenderer-DyVx6DxM.js +0 -1
- package/public/dist/assets/Mcp-uKjor7vh.js +0 -4
- package/public/dist/assets/Memory-BSDIXT0B.js +0 -1
- package/public/dist/assets/ModelProvider-DMh2tXUx.js +0 -1
- package/public/dist/assets/Network-4Pa6JkhK.js +0 -1
- package/public/dist/assets/NotesGraphWorkspace-CgdC-fM6.js +0 -1
- package/public/dist/assets/PanelLayoutProvider-mn8sI0h-.js +0 -1
- package/public/dist/assets/Permissions-CodIW-Yd.js +0 -1
- package/public/dist/assets/Profile-DPqrYA44.js +0 -1
- package/public/dist/assets/Prompts-CvAx7QqR.js +0 -1
- package/public/dist/assets/SpeechKeys-CVBCqoBn.js +0 -1
- package/public/dist/assets/TelegramHub-4zKwpk0P.js +0 -1
- package/public/dist/assets/app-ByMfeXp-.js +0 -55
- package/public/dist/assets/app-DAJWqs33.css +0 -1
- package/public/dist/assets/bgtask-badge-Ch88fnhf.js +0 -1
- package/public/dist/assets/error-normalize-CL69Bl7z.js +0 -1
- package/public/dist/assets/fields-mlGpofqQ.js +0 -1
- package/public/dist/assets/iframe-renderer-Bj1JolO8.js +0 -142
- package/public/dist/assets/iframe-renderer-DWnvUSrx.js +0 -1
- package/public/dist/assets/jsx-runtime-NZYk81nU.js +0 -1
- package/public/dist/assets/manager-Bi_xw7TW.js +0 -5
- package/public/dist/assets/manager-BnQHAKk6.css +0 -1
- package/public/dist/assets/manager-shortcuts-BDOzd8zm.js +0 -1
- package/public/dist/assets/memory-Bk_cb3sw.js +0 -1
- package/public/dist/assets/message-history-D2vniu04.js +0 -4
- package/public/dist/assets/message-history-GAtF_wbZ.js +0 -1
- package/public/dist/assets/page-shell-BeGD0rRQ.js +0 -1
- package/public/dist/assets/react-dom-DyUOYpVL.js +0 -1
- package/public/dist/assets/settings-W4KG9ivu.js +0 -1
- package/public/dist/assets/settings-WVGhtneN.js +0 -1
- package/public/dist/assets/settings-client-CmwRsVd1.js +0 -1
- package/public/dist/assets/settings-core-CgKGnMA5.js +0 -1
- package/public/dist/assets/settings-types-D3cd6SWy.js +0 -1
- package/public/dist/assets/shared-CiNP20HB.js +0 -1
- package/public/dist/assets/skills-Co7Mr-qP.js +0 -1
- package/public/dist/assets/slash-commands-BEr-vmIr.js +0 -1
- package/public/dist/assets/ui-TUyJsMUf.js +0 -1
- package/public/manager/src/settings/pages/components/EngineSubsection.tsx +0 -25
|
@@ -1 +0,0 @@
|
|
|
1
|
-
:root{--surface-1:#ffffff08;--surface-2:#ffffff0a;--surface-3:#ffffff0f;--border-alpha:#ffffff14;--border-strong:#ffffff1f;--text-muted-60:color-mix(in oklab, var(--text) 60%, transparent);--font-sans-system:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, "Apple SD Gothic Neo", "Pretendard", "Noto Sans KR", sans-serif;--font-mono-system:ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--radius-ctl:8px;--focus-ring-shadow:0 0 0 2px color-mix(in oklab, var(--accent) 70%, transparent);--bg:oklch(7% .01 280);--surface:oklch(11% .01 280);--border:oklch(17% .01 270);--text:oklch(92% .01 270);--text-dim:oklch(53% .02 270);--accent:oklch(78% .14 200);--accent2:oklch(70% .13 200);--green:oklch(78% .16 150);--user-bg:oklch(15% .02 270);--agent-bg:oklch(9% .01 270);--status-idle-bg:oklch(15% .02 150);--status-running-bg:oklch(17% .02 75);--status-running-color:oklch(81% .14 85);--status-steering-bg:oklch(17% .02 250);--status-steering-color:oklch(78% .12 250);--code-bg:oklch(9% .01 250);--link-color:oklch(72% .12 250);--table-border:oklch(70% .13 200);--stop-btn:var(--error);--stop-btn-hover:oklch(57% .21 25);--toggle-off:oklch(35% 0 0);--toggle-on:oklch(100% 0 0);--delete-color:var(--error);--code-label-color:oklch(66% .01 250);--modal-bg:oklch(0% 0 0/.6);--font-display:"Chakra Petch", "Outfit", "Pretendard", "Noto Sans CJK SC", "Noto Sans CJK JP", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;--font-ui:var(--font-sans-system);--font-mono:"SF Mono", "JetBrains Mono", "Fira Code", monospace;--sidebar-left-w:220px;--sidebar-right-w:260px;--sidebar-collapsed-w:48px;--activity-row-h:28px;--activity-icon:16px;--activity-chevron:14px;--activity-chevron-sm:12px;--activity-indent:24px;--activity-gap:6px;--activity-muted:color-mix(in oklab, var(--text) 60%, transparent);--activity-border:color-mix(in oklab, var(--text) 8%, transparent);--activity-output-max:144px;--activity-output-fade:32px;--activity-group-max:min(288px, 50dvh);--motion-fast:.15s;--motion-base:.2s;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--text-xs:11px;--text-sm:13px;--text-base:16px;--text-md:17px;--text-lg:19px;--text-xl:22px;--text-2xl:26px;--text-3xl:34px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--ease-out-expo:cubic-bezier(.16, 1, .3, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--duration-fast:.15s;--duration-base:.25s;--duration-slow:.4s;--error:oklch(63% .21 25);--error-dim:oklch(63% .21 25/.15);--success:oklch(72% .17 150);--success-dim:oklch(72% .17 150/.15);--warning:oklch(78% .16 75);--warning-dim:oklch(78% .16 75/.15);--info:oklch(72% .12 220);--phase-1:#60a5fa;--phase-2:#a78bfa;--phase-3:#34d399;--phase-4:#fbbf24;--phase-5:#f472b6;--text-on-accent:#000;--noise-opacity:.03;--scanline-pct:1.2%;--glow-strength:5%;--toggle-w:36px;--toggle-h:20px;--toggle-knob:16px;--orc-glow:transparent;--orc-glow-I:oklch(70% .15 200);--orc-glow-P:oklch(63% .17 260);--orc-glow-A:oklch(78% .16 75);--orc-glow-B:oklch(72% .17 150);--orc-glow-C:oklch(60% .2 300);--orc-glow-D:transparent}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-ui);background:var(--bg);color:var(--text);grid-template-columns:var(--sidebar-left-w) 1fr var(--sidebar-right-w);height:100vh;transition:grid-template-columns .2s cubic-bezier(.4,0,.2,1),background-color .2s,color .2s;display:grid}:lang(zh),:lang(ja){letter-spacing:0}body.left-collapsed{--sidebar-left-w:var(--sidebar-collapsed-w)}body.right-collapsed{--sidebar-right-w:var(--sidebar-collapsed-w)}[data-theme=light]{--surface-1:#00000008;--surface-2:#0000000a;--surface-3:#0000000f;--border-alpha:oklch(92% .004 286.32);--border-strong:oklch(87.1% .006 286.286);--text-muted-60:color-mix(in oklab, var(--text) 60%, transparent);--font-sans-system:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, "Apple SD Gothic Neo", "Pretendard", "Noto Sans KR", sans-serif;--font-mono-system:ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--radius-ctl:8px;--focus-ring-shadow:0 0 0 2px color-mix(in oklab, var(--accent) 70%, transparent);--bg:oklch(99.2% 0 0);--surface:oklch(100% 0 0);--border:var(--border-alpha);--text:oklch(15% .02 270);--text-dim:oklch(53% .02 270);--accent:oklch(62% .11 200);--accent2:oklch(52% .1 200);--green:oklch(62% .16 150);--user-bg:oklch(95% .01 270);--agent-bg:oklch(98% .005 270);--status-idle-bg:oklch(96% .04 150);--status-running-bg:oklch(97% .06 90);--status-running-color:oklch(56% .12 70);--status-steering-bg:oklch(96% .04 250);--status-steering-color:oklch(50% .14 250);--code-bg:oklch(96% .005 250);--link-color:oklch(56% .18 260);--table-border:oklch(56% .18 260);--stop-btn:var(--error);--stop-btn-hover:oklch(48% .19 25);--toggle-off:oklch(80% 0 0);--toggle-on:oklch(100% 0 0);--delete-color:var(--error);--code-label-color:oklch(53% .02 270);--modal-bg:oklch(0% 0 0/.3);--error:oklch(57% .21 25);--error-dim:oklch(57% .21 25/.15);--success:oklch(62% .16 150);--success-dim:oklch(62% .16 150/.15);--warning:oklch(63% .15 70);--warning-dim:oklch(63% .15 70/.15);--info:oklch(56% .12 220);--phase-1:#3b82f6;--phase-2:#8b5cf6;--phase-3:#10b981;--phase-4:#f59e0b;--phase-5:#ec4899;--text-on-accent:#fff;--noise-opacity:.015;--scanline-pct:0.8%;--glow-strength:3%;--orc-glow-I:oklch(58% .14 200);--orc-glow-P:oklch(56% .18 260);--orc-glow-A:oklch(63% .15 70);--orc-glow-B:oklch(62% .16 150);--orc-glow-C:oklch(53% .22 300);--orc-glow-D:transparent}label{color:var(--text-dim);margin-bottom:4px;font-size:11px;display:block}select,input[type=text]{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text);border-radius:6px;padding:6px 10px;font-family:inherit;font-size:12px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-alpha);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}*{scrollbar-width:thin;scrollbar-color:var(--border-alpha) transparent}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@keyframes revealUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes revealLeft{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:translate(0)}}@keyframes revealRight{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}@keyframes breathe{0%,to{opacity:.5}50%{opacity:.8}}@keyframes dotPing{0%,to{opacity:1}50%{opacity:.4}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.hidden{display:none}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.flex-1{flex:1}.flex-wrap{flex-wrap:wrap}.w-full{width:100%}.text-xs{font-size:var(--text-xs)}.text-sm{font-size:var(--text-sm)}.text-dim{color:var(--text-dim)}.mono{font-family:var(--font-mono)}.fallback-desc{margin:2px 0 6px}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.ml-6{margin-left:var(--space-6)}.mr-auto{margin-right:auto}.p-1{padding:var(--space-1)}.p-2{padding:var(--space-2)}.py-1{padding-top:var(--space-1);padding-bottom:var(--space-1)}.px-4{padding-left:var(--space-4);padding-right:var(--space-4)}.w-auto{width:auto}.input-sm{width:100%;padding:var(--space-1) var(--space-2);font-size:11px}.input-compact{width:100px;padding:3px var(--space-2);background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:11px}.btn-action-sm{padding:var(--space-1) var(--space-3);margin:0;font-size:11px}.btn-action-block{width:100%;padding:var(--space-2);font-size:var(--text-sm);margin:0}.hr-divider{border:none;border-top:1px solid var(--border);margin:var(--space-1) 0}.btn-modal-close{color:var(--text-dim);cursor:pointer;background:0 0;border:none;font-size:16px}.btn-refresh{justify-content:center;align-items:center;gap:var(--space-1);flex:1;height:32px;margin:0;padding:6px;font-size:11px;display:flex}.select-sm{padding:var(--space-1);background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:11px}.select-status-interval{min-width:60px;height:32px;padding:6px 8px}.input-agent-name{font-family:var(--font-display);font-size:var(--text-base);padding:var(--space-1) var(--space-2);flex:1;font-weight:600}.perm-auto{cursor:default;width:100%;padding:6px 14px}.text-status{color:var(--text-dim);font-size:11px}.text-shortcut-hint{color:var(--text-dim);font-size:9px}.mono-path{font-family:var(--font-mono);word-break:break-all}.label-wide{min-width:120px;font-size:11px}.mem-tab-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:6px 12px;font-size:12px}.mem-tab-btn.active,.mem-tab.active .mem-tab-btn{color:var(--text)}.info-box{margin-top:var(--space-2);background:var(--bg);border-radius:var(--radius-sm);color:var(--text-dim);padding:6px;font-size:11px}.adv-status-banner{border-bottom:1px solid var(--border);color:var(--text-dim);padding:10px 12px;font-size:11px}.tab-strip{border-bottom:1px solid var(--border);padding:0 12px;display:flex}.section-header{margin-bottom:6px;font-size:12px;font-weight:600}.px-3{padding-left:var(--space-3);padding-right:var(--space-3)}.pb-3{padding-bottom:var(--space-3)}.p-3{padding:var(--space-3)}.mt-3{margin-top:var(--space-3)}.modal-template{flex-direction:column;width:640px;max-width:90vw;max-height:85vh;display:flex}.modal-scrollable{max-height:80vh;overflow-y:auto}.template-tree-area{flex:1;padding:12px 16px;overflow-y:auto}.template-editor-view{flex-direction:column}.template-editor-bar{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--border);display:flex}.btn-back{border:1px solid var(--border);color:var(--text-dim);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);cursor:pointer;background:0 0;font-size:11px}.btn-dev-toggle{background:var(--bg);border:1px solid var(--border);color:var(--text-dim);padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);cursor:pointer;font-size:11px}.template-textarea{min-height:350px;font-family:var(--font-mono);flex:1;font-size:12px}.template-hint{padding:var(--space-2) 0;color:var(--text-dim);font-size:11px}.queue-badge{background:var(--warning);color:var(--bg);border-radius:var(--radius-full);font-size:var(--text-xs);z-index:10;min-width:18px;height:18px;box-shadow:0 0 0 2px var(--bg);justify-content:center;align-items:center;font-weight:700;display:flex;position:absolute;top:6px;right:6px}.sidebar-left{background:var(--surface-1);border-right:1px solid var(--border-alpha);box-shadow:none;animation:revealLeft .4s var(--ease-out-expo) 50ms both;flex-direction:column;gap:16px;padding:48px 16px 16px;display:flex;overflow-y:auto}.sidebar-left:before,.sidebar-right:before{content:none;pointer-events:none;z-index:0;background:repeating-linear-gradient(0deg, transparent, transparent 2px, color-mix(in oklch, var(--accent) var(--scanline-pct), transparent) 2px, color-mix(in oklch, var(--accent) var(--scanline-pct), transparent) 4px), linear-gradient(180deg, color-mix(in oklch, var(--accent) var(--glow-strength), transparent) 0%, transparent 200px);position:absolute;inset:0}.logo{color:var(--accent);font-size:26px;font-weight:700;font-family:var(--font-display);letter-spacing:1px;text-shadow:0 0 20px color-mix(in oklch, var(--accent) 30%, transparent);align-items:center;display:inline-flex}.logo-mark{vertical-align:middle;object-fit:contain;flex:none;width:28px;height:28px;margin-right:8px;display:inline-block}.section-title{color:var(--text-dim);text-transform:uppercase;letter-spacing:1.5px;font-size:11px;font-family:var(--font-display);margin-bottom:4px;font-weight:600}.memory-list{font-size:12px;list-style:none}.memory-list li{border-bottom:1px solid var(--border);padding:4px 0}.memory-key{color:var(--accent2)}.stat{color:var(--text-dim);margin:2px 0;font-size:12px}.status-badge{letter-spacing:.5px;font-size:10px;font-weight:600;font-family:var(--font-display);border-radius:10px;align-items:center;padding:2px 8px;transition:background .3s,color .3s;display:inline-flex}.status-idle{background:var(--status-idle-bg);color:var(--green);box-shadow:0 0 6px color-mix(in oklch, var(--success) 20%, transparent)}.status-running{background:var(--status-running-bg);color:var(--status-running-color);box-shadow:0 0 6px color-mix(in oklch, var(--warning) 30%, transparent)}.btn-clear{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;font-size:12px;font-family:var(--font-display);background:0 0;border-radius:6px;margin-top:auto;padding:8px;transition:border-color .15s,color .15s,transform .1s}.btn-clear:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.btn-clear:active{transform:translateY(0)}.sidebar-right{background:var(--surface-1);border-left:1px solid var(--border-alpha);box-shadow:none;animation:revealRight .4s var(--ease-out-expo) .1s both;flex-direction:column;padding-top:48px;display:flex;overflow-y:auto}.tab-bar{border:1px solid var(--border-alpha);border-radius:var(--radius-ctl);background:var(--surface-1);flex-shrink:0;gap:2px;margin:0 8px 6px;padding:3px;display:flex}.tab-btn{border-radius:var(--radius-ctl);min-height:28px;color:var(--text-muted-60);font-size:11px;font-family:var(--font-ui);cursor:pointer;text-transform:uppercase;letter-spacing:1px;background:0 0;border:none;flex:1;padding:4px 8px;transition:color .15s,background-color .15s}.tab-btn:hover{background:var(--surface-2);color:var(--text)}.tab-btn.active{color:var(--text);background:var(--surface-3)}.tab-btn:focus-visible{box-shadow:var(--focus-ring-shadow)}.tab-content{flex-direction:column;gap:12px;padding:16px;display:none}.tab-content.active{display:flex}.sidebar-save-bar{border-bottom:1px solid var(--border);flex-shrink:0;padding:6px 16px}.btn-save{background:var(--accent);color:#fff;width:100%;font-size:11px;font-family:var(--font-display);cursor:pointer;border:none;border-radius:6px;padding:6px;font-weight:600}.btn-save:hover{opacity:.9}.sidebar-hb-btn{background:var(--surface);border:1px solid var(--border);width:100%;color:var(--text);cursor:pointer;text-align:left;font-size:12px;font-family:var(--font-display);border-radius:6px;align-items:center;gap:4px;padding:6px;transition:border-color .15s,box-shadow .15s;display:inline-flex}.sidebar-hb-btn.w-auto{flex-shrink:0;width:auto}.sidebar-hb-btn:hover{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.sidebar-lang-row{align-items:center;width:100%;display:flex;position:relative}.sidebar-lang-row .sidebar-lang-icon{pointer-events:none;color:var(--text);align-items:center;display:inline-flex;position:absolute;top:50%;left:8px;transform:translateY(-50%)}.sidebar-lang-select{-webkit-appearance:none;appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--text-dim) 50%), linear-gradient(135deg, var(--text-dim) 50%, transparent 50%);background-position:calc(100% - 12px),calc(100% - 8px);background-repeat:no-repeat;background-size:4px 4px,4px 4px;padding-left:26px;padding-right:22px}.sidebar-lang-select:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);outline:none}.sidebar-toggle{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:12px;transition:border-color .15s,color .15s;display:flex}.sidebar-toggle:hover{border-color:var(--accent);color:var(--accent)}.sidebar-bottom{border-top:1px solid var(--border);flex-direction:column;gap:6px;margin-top:auto;padding-top:12px;display:flex}.avatar-row{justify-content:center;gap:12px;display:flex}.avatar-card{flex-direction:column;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.avatar-preview{cursor:default;width:48px;height:48px;font-size:28px;line-height:48px}.avatar-card-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;font-size:10px;font-weight:500}.avatar-card-actions{gap:4px;display:flex}.avatar-action-btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:28px;height:28px;color:var(--text-dim);cursor:pointer;transition:all var(--duration-fast);place-items:center;display:grid}.avatar-action-btn:hover{background:var(--surface-hover,color-mix(in oklch, var(--surface) 90%, var(--accent) 10%));color:var(--text);border-color:var(--accent)}.sidebar-left,.sidebar-right{contain:layout style;position:relative}.sidebar-left>:not(.sidebar-toggle),.sidebar-right>:not(.sidebar-toggle){opacity:1;transition:opacity .15s ease-in 50ms}.sidebar-left .sidebar-toggle,.sidebar-right .sidebar-toggle{z-index:2;position:absolute;top:10px}.sidebar-left .sidebar-toggle{left:10px}.sidebar-right .sidebar-toggle{right:10px}body.left-collapsed .sidebar-left>:not(.sidebar-toggle){opacity:0;pointer-events:none;transition:opacity .1s ease-out}body.left-collapsed .sidebar-left{padding:16px 10px;overflow:hidden}body.right-collapsed .sidebar-right>:not(.sidebar-toggle){opacity:0;pointer-events:none;transition:opacity .1s ease-out}body.right-collapsed .sidebar-right{padding:16px 10px;overflow:hidden}@media (width<=900px){body:not(.left-expanded){--sidebar-left-w:var(--sidebar-collapsed-w)}body:not(.left-expanded) .sidebar-left>:not(.sidebar-toggle){opacity:0;pointer-events:none}body:not(.left-expanded) .sidebar-left{padding:16px 10px;overflow:hidden}body:not(.right-expanded){--sidebar-right-w:var(--sidebar-collapsed-w)}body:not(.right-expanded) .sidebar-right>:not(.sidebar-toggle){opacity:0;pointer-events:none}body:not(.right-expanded) .sidebar-right{padding:16px 10px;overflow:hidden}}@media (width<=768px){body{grid-template-columns:1fr;grid-template-areas:"main";height:100dvh}.sidebar-left,.sidebar-right{z-index:100;width:min(280px,80vw);transition:transform .25s var(--ease-out-expo);padding-top:calc(48px + env(safe-area-inset-top,0px));padding-bottom:env(safe-area-inset-bottom,0px);visibility:hidden;pointer-events:none;position:fixed;top:0;bottom:0;transform:translate(-100%);min-width:unset!important}.sidebar-right{left:auto;right:0;transform:translate(100%)}body.left-expanded .sidebar-left,body.right-expanded .sidebar-right{visibility:visible;pointer-events:auto;transform:translate(0)}body.left-expanded:after,body.right-expanded:after{content:"";background:var(--modal-bg);z-index:99;animation:.2s fadeIn;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}body:not(.left-expanded) .sidebar-left>:not(.sidebar-toggle){display:block}.sidebar-toggle{display:none}.chat-input-area{padding-bottom:env(safe-area-inset-bottom,0px)}.message.agent-message,.message.user-message{max-width:95%!important}}.mobile-nav{display:none}:is(.sidebar-left,.sidebar-right,.chat-header) :is(button,a,input,select,textarea,summary,[tabindex]):focus-visible{box-shadow:var(--focus-ring-shadow);outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){:is(.sidebar-left,.sidebar-right,.chat-header),:is(.sidebar-left,.sidebar-right,.chat-header) *,:is(.sidebar-left,.sidebar-right,.chat-header):before,:is(.sidebar-left,.sidebar-right,.chat-header):after,:is(.sidebar-left,.sidebar-right,.chat-header) :before,:is(.sidebar-left,.sidebar-right,.chat-header) :after,body.left-expanded:after,body.right-expanded:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.lucide,[data-icon] svg,.icon-hydrated svg,.cli-provider-icon svg,.skill-emoji svg{vertical-align:-.125em;flex-shrink:0;width:1em;height:1em;display:inline-block}[data-icon],.icon-hydrated{align-items:center;line-height:1;display:inline-flex}.sidebar-right:has(#tabSettings.active){overflow:hidden}.sidebar-right:has(#tabSettings.active) .sidebar-save-bar{display:none}@media (width<=768px){.sidebar-right:has(#tabSettings.active){width:min(92vw,760px)}}.chat-header{flex-shrink:0;height:44px}@media (width<=900px){.chat-header{height:auto;min-height:44px}}body[data-settings-open=true] .chat-area,body[data-settings-open=true] .sidebar-left,body[data-settings-open=true] .sidebar-right{display:none}body[data-settings-open=true].left-expanded:after,body[data-settings-open=true].right-expanded:after{content:none}#settingsPage{background:var(--bg);flex-direction:column;grid-area:1/1/auto/-1;min-width:0;min-height:0;display:flex;overflow:hidden}#settingsPage[hidden]{display:none}#settingsPage>iframe{border:0;flex:1;width:100%;height:100%;min-height:0;display:block}#settingsPage>.chat-header{width:100%}.header-icon-btn{width:32px;height:32px;color:var(--text-dim);cursor:pointer;background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.header-icon-btn svg{width:16px;height:16px}.header-icon-btn:hover{background:var(--surface-3);color:var(--text)}.header-icon-btn[aria-pressed=true]{color:var(--accent);background:var(--surface-2)}.header-icon-btn:focus-visible{box-shadow:var(--focus-ring-shadow);outline:none}@media (prefers-reduced-motion:no-preference){#settingsPage:not([hidden]){animation:.12s settingsPageEnter}}@keyframes settingsPageEnter{0%{opacity:0}to{opacity:1}}.chat-area{border-left:1px solid var(--border-alpha);border-right:1px solid var(--border-alpha);background:var(--bg);flex-direction:column;min-height:0;display:flex;position:relative;overflow:hidden}.chat-area:after{content:none;pointer-events:none;z-index:0;opacity:var(--noise-opacity);mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat;position:absolute;inset:0}[data-theme=light] .chat-area:after{display:none}.theme-switch{border:1px solid var(--border-alpha);background:var(--surface-1);cursor:pointer;border-radius:12px;flex-shrink:0;width:44px;height:24px;padding:0;transition:background .3s,border-color .3s;position:relative}.theme-switch:hover{border-color:var(--border-strong)}.theme-switch-knob{background:var(--text);border-radius:50%;width:16px;height:16px;transition:left .3s cubic-bezier(.4,0,.2,1),background .3s;position:absolute;top:3px;left:3px}.theme-switch-knob:after{content:"";width:10px;height:10px;box-shadow:-3px 0 0 var(--surface);background:0 0;border-radius:50%;transition:all .3s;position:absolute;top:3px;left:5px}.theme-switch.is-light .theme-switch-knob{background:var(--warning);left:23px}.theme-switch.is-light .theme-switch-knob:after{box-shadow:none;background:color-mix(in oklch, var(--warning) 80%, #fff);width:4px;height:4px;top:6px;left:6px}.chat-header{padding:6px var(--space-5);border-bottom:1px solid var(--border-alpha);background:var(--surface-1);font-size:14px;font-weight:600;font-family:var(--font-ui);letter-spacing:0;box-shadow:none;z-index:2;justify-content:space-between;align-items:center;gap:var(--space-2);animation:revealUp .35s var(--ease-out-expo) .15s both;flex-wrap:wrap;display:flex;position:relative}.chat-header-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0;max-width:100%;display:inline-flex}#headerCli{overflow-wrap:anywhere;align-items:center;gap:4px;min-width:0;max-width:100%;display:inline-flex}#headerCli svg{flex-shrink:0;width:1.1em;height:1.1em}.chat-header>span:first-child{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;max-width:100%;display:inline-flex}@media (width>=901px){.chat-header,.chat-header-actions,.chat-header>span:first-child{flex-wrap:nowrap}.chat-header>span:first-child{overflow:hidden}}.header-project{color:var(--text-muted-60);letter-spacing:.2px;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border-radius:var(--radius-ctl);border:1px solid #0000;flex-shrink:1;max-width:280px;margin-left:4px;padding:2px 8px;font-size:12px;font-weight:400;transition:color .15s,border-color .15s,background .15s;overflow:hidden}.header-project:hover{color:var(--text);border-color:var(--border-alpha);background:var(--surface-2)}.header-project.is-empty{border:1px dashed var(--border-strong);opacity:.8}.header-project.is-picking{opacity:.5;pointer-events:none}.header-git-status{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:220px;color:var(--text-muted-60);font-family:var(--font-mono-system);letter-spacing:0;border-radius:var(--radius-ctl);border:1px solid var(--border-alpha);background:var(--surface-3);flex-shrink:0;align-items:center;padding:2px 7px;font-size:12px;font-weight:500;display:inline-flex;overflow:hidden}.header-git-status[hidden]{display:none}@media (width<=860px){.header-git-status{display:none}}@media (width<=680px){.header-project{display:none}}.chat-messages{padding:var(--space-4) var(--space-5);gap:var(--space-3);z-index:1;animation:revealUp .4s var(--ease-out-expo) .2s both;contain:layout style paint;overflow-anchor:none;flex-direction:column;flex:1;display:flex;position:relative;overflow-y:auto}.chat-messages.vs-active{gap:0}.chat-restore-indicator{left:50%;bottom:var(--space-4);z-index:3;align-items:center;gap:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-md);background:color-mix(in oklch, var(--surface) 88%, transparent);color:var(--text-dim);box-shadow:var(--shadow-md);font-size:var(--text-xs);pointer-events:none;padding:6px 10px;display:inline-flex;position:absolute;transform:translate(-50%)}.chat-restore-dot{background:var(--accent);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite processDotPulse}.scroll-to-bottom-fab{background:var(--surface);border:1px solid var(--border);width:36px;height:36px;color:var(--text-dim);cursor:pointer;opacity:0;pointer-events:none;z-index:10;border-radius:50%;justify-content:center;align-items:center;transition:opacity .2s,transform .2s;display:flex;position:absolute;bottom:80px;right:20px;transform:translateY(8px);box-shadow:0 2px 8px #0000001f}.scroll-to-bottom-fab.visible{opacity:1;pointer-events:auto;transform:translateY(0)}.scroll-to-bottom-fab:hover{color:var(--text);border-color:var(--accent)}.scroll-to-bottom-fab:active{transform:scale(.92)}.chat-messages.vs-active>.vs-inner{flex:none;width:100%;position:relative}.vs-active .vs-inner>.msg{margin-bottom:var(--space-3);contain:style;position:absolute;top:0;left:0;right:0}.vs-active .vs-inner>.msg-user{left:auto}.vs-active .vs-inner>.msg-system{width:fit-content;margin-left:auto;margin-right:auto;left:0;right:0}.msg{padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font-size:var(--text-base);word-wrap:break-word;overflow-wrap:break-word;max-width:85%;transition:box-shadow var(--duration-base);contain:layout style;line-height:1.75;position:relative}@keyframes msgEnterAgent{0%{opacity:0;transform:translate(-8px)translateY(4px)}to{opacity:1;transform:none}}@keyframes msgEnterUser{0%{opacity:0;transform:translate(8px)translateY(4px)}to{opacity:1;transform:none}}@keyframes msgEnterSystem{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.msg-user{background:color-mix(in oklch, var(--accent) 10%, var(--surface));border:1px solid color-mix(in oklch, var(--accent) 18%, var(--border));border-radius:var(--radius-lg) var(--radius-lg) var(--radius-sm) var(--radius-lg);white-space:pre-wrap;align-self:flex-end;gap:var(--space-2);max-width:75%;animation:.25s cubic-bezier(.16,1,.3,1) msgEnterUser;display:flex}.user-icon{text-align:center;width:24px;height:24px;transition:opacity var(--duration-fast);flex-shrink:0;margin-top:2px;font-size:18px;line-height:24px}.user-body{flex:1;min-width:0;position:relative}.msg-agent{align-self:flex-start;gap:var(--space-2);max-width:100%;padding:var(--space-2) 0;transition:padding var(--duration-base);background:0 0;border:none;border-radius:0;animation:.25s cubic-bezier(.16,1,.3,1) msgEnterAgent;display:flex}.agent-icon{text-align:center;width:24px;height:24px;transition:opacity var(--duration-fast);flex-shrink:0;margin-top:2px;font-size:18px;line-height:24px}.agent-icon,.user-icon{background:color-mix(in oklch, var(--surface) 88%, var(--accent) 12%);box-shadow:inset 0 0 0 1px color-mix(in oklch, var(--border) 80%, var(--accent) 20%);border-radius:999px;place-items:center;display:grid;overflow:hidden}.avatar-image{object-fit:cover;border-radius:inherit;width:100%;height:100%;display:block}.avatar-mascot{object-fit:contain;width:100%;height:100%;display:block}.agent-body{flex:1;min-width:0;position:relative}.msg-system{border:1px dashed var(--border);text-align:center;font-size:var(--text-xs);color:var(--text-dim);padding:var(--space-1) var(--space-3);background:0 0;align-self:center;max-width:80%;animation:.2s ease-out msgEnterSystem}.msg-goal-boundary{border:1px dashed color-mix(in oklch, var(--accent) 35%, var(--border));max-width:60%;font-size:var(--text-xs);color:var(--text-dim);padding:var(--space-1) var(--space-3);background:0 0;align-self:center;animation:.2s ease-out msgEnterSystem}.msg-goal-boundary .msg-label,.msg-goal-boundary .user-icon,.msg-goal-boundary .msg-actions{display:none}.msg-goal-boundary:after{content:none}.msg-user:after{content:"";top:var(--space-2);bottom:var(--space-2);background:var(--accent);opacity:0;width:3px;transition:opacity var(--duration-fast);border-radius:2px;position:absolute}.msg-agent:after{content:"";top:var(--space-2);bottom:var(--space-2);background:var(--accent);opacity:0;width:2px;transition:opacity var(--duration-fast);border-radius:1px;position:absolute;left:-4px}.msg-user:after{right:calc(-1 * var(--space-2))}.msg-agent:hover:after,.msg-user:hover:after{opacity:.3}.msg-user:hover{box-shadow:0 2px 12px color-mix(in oklch, var(--bg) 85%, transparent)}.msg-agent:hover{box-shadow:none}.msg-label{font-size:var(--text-xs);letter-spacing:.5px;text-transform:uppercase;color:var(--text-dim);margin-bottom:var(--space-1);align-items:center;gap:var(--space-1);font-weight:600;display:flex}.msg-user .msg-label:before{content:"";background:var(--success);border-radius:50%;width:6px;height:6px}.msg-type-success{border-color:var(--success);color:var(--success)}.msg-type-error{border-color:var(--error);color:var(--error)}.msg-type-info{border-color:var(--link-color);color:var(--link-color)}.msg-error{border-left:3px solid var(--error);background:var(--error-dim);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm) var(--radius-md) var(--radius-md) var(--radius-sm)}.msg-error .msg-label,.msg-error .msg-content a{color:var(--error)}.msg-error .msg-content code{border-color:var(--error)}.elicitation-block,.elicitation-pending{margin:var(--space-3) 0;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:color-mix(in oklch, var(--surface) 94%, var(--accent))}.elicitation-loading,.elicitation-error-text{color:var(--text-dim);font-size:var(--text-sm)}.elicitation-error{border-color:color-mix(in oklch, var(--error) 45%, var(--border));background:var(--error-dim)}.elicitation-complete{border-color:color-mix(in oklch, var(--success) 40%, var(--border));background:color-mix(in oklch, var(--success) 8%, var(--surface))}.elicitation-complete-title{margin-bottom:var(--space-2);color:var(--text-dim);font-size:var(--text-xs);font-weight:700}.elicitation-complete-row{align-items:center;display:flex}.elicitation-complete-button{min-height:32px;padding:0 var(--space-3);border:1px solid color-mix(in oklch, var(--success) 42%, var(--border));border-radius:var(--radius-sm);background:color-mix(in oklch, var(--success) 12%, var(--surface));color:var(--text);cursor:default;font:inherit;font-size:var(--text-xs);font-weight:700}.elicitation-complete-list{gap:var(--space-1);padding-left:var(--space-4);margin:0;display:grid}.elicitation-complete-list li{color:var(--text-dim);font-size:var(--text-sm);line-height:1.45}.elicitation-complete-question{color:var(--text);font-weight:600}.elicitation-complete-answer:before{content:": "}.elicitation-top{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.elicitation-progress{color:var(--text-dim);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;font-weight:700}.elicitation-question{margin-bottom:var(--space-3);color:var(--text);font-size:var(--text-sm);font-weight:600;line-height:1.45}.elicitation-options{gap:var(--space-2);display:grid}.elicitation-option,.elicitation-submit,.elicitation-skip{border:1px solid var(--border);border-radius:var(--radius-sm);background:color-mix(in oklch, var(--surface) 96%, var(--text));color:var(--text);cursor:pointer;font:inherit;transition:border-color var(--duration-fast), background var(--duration-fast), transform var(--duration-fast)}.elicitation-option{width:100%;min-height:36px;padding:var(--space-2) var(--space-3);text-align:left;flex-direction:column;align-items:flex-start;gap:2px;display:flex}.elicitation-option:hover,.elicitation-submit:hover,.elicitation-skip:hover{border-color:color-mix(in oklch, var(--accent) 45%, var(--border));background:color-mix(in oklch, var(--accent) 8%, var(--surface))}.elicitation-option:focus-visible,.elicitation-submit:focus-visible,.elicitation-skip:focus-visible,.elicitation-input:focus-visible{outline:2px solid color-mix(in oklch, var(--accent) 70%, white);outline-offset:2px}.elicitation-option.is-selected,.elicitation-option[aria-pressed=true]{border-color:color-mix(in oklch, var(--accent) 60%, var(--border));background:color-mix(in oklch, var(--accent) 12%, var(--surface))}.elicitation-option-label{font-size:var(--text-sm);font-weight:600}.elicitation-option-description{color:var(--text-dim);font-size:var(--text-xs);line-height:1.4}.elicitation-input-row{gap:var(--space-2);margin-top:var(--space-3);grid-template-columns:minmax(0,1fr) auto;display:grid}.elicitation-input{min-width:0;min-height:36px;padding:0 var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font:inherit}.elicitation-submit,.elicitation-skip{min-height:32px;padding:0 var(--space-3);font-size:var(--text-xs);font-weight:700}.elicitation-block>.elicitation-submit{width:100%;margin-top:var(--space-2)}.search-results-block,.search-results-pending,.link-preview-card{margin:var(--space-3) 0;border:1px solid var(--border);border-radius:var(--radius-md);background:color-mix(in oklch, var(--surface) 96%, var(--text))}.search-results-block,.search-results-pending{padding:var(--space-3)}.search-results-loading,.search-results-error-text,.search-results-empty{color:var(--text-dim);font-size:var(--text-sm)}.search-results-header{margin-bottom:var(--space-2);gap:2px;display:grid}.search-results-title{color:var(--text);font-size:var(--text-sm);font-weight:700}.search-results-query{color:var(--text-dim);font-size:var(--text-xs)}.search-results-list{gap:var(--space-2);display:grid}.search-result-card{gap:var(--space-2);padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);grid-template-columns:22px minmax(0,1fr);text-decoration:none;display:grid}.search-result-card:hover,.link-preview-card:hover{border-color:color-mix(in oklch, var(--accent) 45%, var(--border));background:color-mix(in oklch, var(--accent) 7%, var(--surface))}.search-result-card:focus-visible,.link-preview-card:focus-visible{outline:2px solid color-mix(in oklch, var(--accent) 70%, white);outline-offset:2px}.search-result-index{color:var(--text-dim);font-family:var(--font-mono);font-size:var(--text-xs)}.search-result-body,.link-preview-body{gap:2px;min-width:0;display:grid}.search-result-title,.link-preview-title{-webkit-line-clamp:1;overflow-wrap:anywhere;color:var(--text);font-size:var(--text-sm);-webkit-box-orient:vertical;font-weight:700;line-height:1.35;display:-webkit-box;overflow:hidden}.search-result-snippet,.link-preview-description{-webkit-line-clamp:1;overflow-wrap:anywhere;color:var(--text-dim);font-size:var(--text-xs);-webkit-box-orient:vertical;line-height:1.4;display:-webkit-box;overflow:hidden}.search-result-source,.link-preview-url,.link-preview-meta{color:var(--text-dim);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap;line-height:1.3;overflow:hidden}.link-preview-card{align-items:center;gap:var(--space-2);max-width:min(560px,100%);min-height:74px;padding:var(--space-2);color:var(--text);grid-template-columns:88px minmax(0,1fr);grid-template-areas:"image body";text-decoration:none;display:grid}.link-preview-image{border-radius:var(--radius-sm);background:var(--bg);object-fit:cover;grid-area:image;width:88px;height:66px}.link-preview-image-empty{border:1px solid var(--border)}.link-preview-body{grid-area:body}.link-preview-meta{align-items:center;gap:var(--space-1);min-width:0;display:inline-flex}.link-preview-meta>span{text-overflow:ellipsis;min-width:0;overflow:hidden}.link-preview-separator{flex:none}.link-preview-favicon{border-radius:3px;width:14px;height:14px}@media (width<=520px){.link-preview-card{grid-template-columns:64px minmax(0,1fr)}.link-preview-image{width:64px;height:56px}}.compose-block-pending,.compose-block,.diff-viewer,.dataframe-pending,.dataframe-block,.chart-json-pending,.chart-json-block{margin:var(--space-3) 0;border:1px solid var(--border);border-radius:var(--radius-md);background:color-mix(in oklch, var(--surface) 96%, var(--text));color:var(--text)}.compose-block-pending,.compose-block,.dataframe-pending,.dataframe-block,.chart-json-pending,.chart-json-block{padding:var(--space-3)}.compose-loading,.dataframe-loading,.chart-json-loading,.compose-error-text,.dataframe-error-text,.chart-json-error-text{color:var(--text-dim);font-size:var(--text-sm)}.compose-block{gap:var(--space-2);display:grid}.compose-block-header,.dataframe-toolbar,.chart-json-header{gap:2px;display:grid}.compose-title,.dataframe-title,.chart-json-title{color:var(--text);font-size:var(--text-sm);font-weight:700}.compose-kind,.chart-json-description{color:var(--text-dim);font-size:var(--text-xs)}.compose-subject-row{align-items:center;gap:var(--space-2);color:var(--text-dim);font-size:var(--text-xs);grid-template-columns:64px minmax(0,1fr);display:grid}.compose-followup{gap:var(--space-2);border-top:1px solid var(--border);padding-top:var(--space-2);display:grid}.compose-followup-row{align-items:start;gap:var(--space-2);color:var(--text-dim);font-size:var(--text-xs);grid-template-columns:64px minmax(0,1fr);display:grid}.compose-subject-input,.compose-body,.compose-followup-input,.dataframe-filter{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);min-width:0;color:var(--text);font:inherit}.compose-subject-input,.dataframe-filter{height:32px;padding:0 var(--space-2)}.compose-body{width:100%;min-height:132px;max-height:260px;padding:var(--space-2);resize:vertical;line-height:1.5}.compose-followup-input{width:100%;min-height:58px;max-height:140px;padding:var(--space-2);resize:vertical;line-height:1.45}.compose-tabs,.compose-actions,.compose-followup-actions,.dataframe-pagination,.chart-json-legend{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.compose-followup-actions{justify-content:flex-end}.compose-followup-error{min-height:18px;color:var(--text-dim);font-size:var(--text-xs);flex:220px}.compose-followup-error[data-state=error]{color:var(--danger)}.compose-followup-error[data-state=success]{color:var(--success)}.compose-tab,.compose-btn,.dataframe-page-btn,.dataframe-sort-btn,.dataframe-cell{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit}.compose-tab,.compose-btn,.dataframe-page-btn{min-height:30px;padding:0 var(--space-2);font-size:var(--text-xs);font-weight:700}.compose-tab.is-active{border-color:color-mix(in oklch, var(--accent) 55%, var(--border));background:color-mix(in oklch, var(--accent) 12%, var(--surface))}.compose-subject-input:focus-visible,.compose-body:focus-visible,.compose-followup-input:focus-visible,.compose-tab:focus-visible,.compose-btn:focus-visible,.dataframe-filter:focus-visible,.dataframe-page-btn:focus-visible,.dataframe-sort-btn:focus-visible,.dataframe-cell:focus-visible{outline:2px solid color-mix(in oklch, var(--accent) 70%, white);outline-offset:2px}.diff-viewer{max-height:460px;padding:var(--space-2) 0;font-family:var(--font-mono);font-size:var(--text-xs);overflow:auto}.diff-line{grid-template-columns:48px minmax(0,1fr);min-width:max-content;line-height:1.45;display:grid}.diff-ln{padding:0 var(--space-2);color:var(--text-dim);text-align:right;user-select:none}.diff-code{padding:0 var(--space-3) 0 var(--space-2);white-space:pre}.diff-file,.diff-hunk{color:var(--text);font-weight:700}.diff-add{background:oklch(62.7052% .169912 149.214/.12)}.diff-del{background:oklch(57.7099% .215157 27.325/.12)}.diff-hunk{background:color-mix(in oklch, var(--accent) 10%, transparent)}.diff-omitted{padding:var(--space-2) var(--space-3);color:var(--text-dim)}.dataframe-block{gap:var(--space-2);display:grid}.dataframe-toolbar{grid-template-columns:minmax(0,1fr) minmax(140px,220px);align-items:center}.dataframe-table-wrap{border:1px solid var(--border);border-radius:var(--radius-sm);max-height:360px;overflow:auto}.dataframe-table{border-collapse:collapse;width:100%;min-width:420px;font-size:var(--text-xs)}.dataframe-table th,.dataframe-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.dataframe-table th{z-index:1;background:var(--surface);position:sticky;top:0}.dataframe-sort-btn,.dataframe-cell{width:100%;padding:var(--space-2);text-align:left;background:0 0;border:0;border-radius:0;display:block}.dataframe-cell{text-overflow:ellipsis;white-space:nowrap;max-width:320px;overflow:hidden}.dataframe-page-info{color:var(--text-dim);font-size:var(--text-xs)}.dataframe-empty{padding:var(--space-3);color:var(--text-dim)}.chart-json-block{gap:var(--space-2);max-width:min(560px,100%);display:grid}.chart-json-frame{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);overflow:hidden}.chart-json-svg{width:100%;height:190px;display:block}.chart-json-legend{color:var(--text-dim);font-size:var(--text-xs)}.chart-json-legend-item{align-items:center;gap:var(--space-1);min-width:0;display:inline-flex}.chart-json-swatch{border-radius:2px;flex:none;width:10px;height:10px}.chart-json-swatch-0{background:#2563eb}.chart-json-swatch-1{background:#16a34a}.chart-json-swatch-2{background:#dc2626}.chart-json-swatch-3{background:#9333ea}.chart-json-swatch-4{background:#ca8a04}.chart-json-swatch-5{background:#0891b2}@media (width<=520px){.compose-subject-row,.compose-followup-row,.dataframe-toolbar{grid-template-columns:1fr}.compose-followup-actions{justify-content:stretch}.compose-send-btn{width:100%}}.msg-actions{bottom:var(--space-2);align-items:center;gap:var(--space-2);opacity:0;transition:opacity var(--duration-fast);display:inline-flex;position:absolute}.msg-agent .msg-actions{right:0}.msg-user .msg-actions{left:var(--space-2)}.msg:hover .msg-actions,.msg-actions:focus-within{opacity:.85}.msg-copy,.msg-pin-reminder{cursor:pointer;opacity:.9;width:12px;height:12px;transition:transform .1s, background var(--duration-fast), border-color var(--duration-fast);background:0 0;padding:0;position:relative}.msg-copy{border:1.5px solid var(--text-dim);border-radius:2px}.msg-pin-reminder{color:var(--text-dim);border:0}.msg-pin-reminder:before{content:"";border:1.5px solid;border-bottom:0;width:6px;height:8px;position:absolute;top:1px;left:3px;transform:skew(-8deg)}.msg-pin-reminder:after{content:"";background:currentColor;width:1.5px;height:4px;position:absolute;top:8px;left:5px}.msg-copy:hover,.msg-pin-reminder:hover{color:var(--text);transform:scale(1.35)}.msg-copy:active{background:var(--accent);border-color:var(--accent);transform:scale(.75)}.msg-copy.copied{background:var(--accent);border-color:var(--accent);color:var(--bg);text-align:center;width:auto;min-width:12px;font-size:10px;line-height:12px;opacity:1!important}.msg-pin-reminder.is-pinning{opacity:1;color:var(--accent)}.msg-pin-reminder.is-pinned{color:var(--success)}.stream-cursor{background:color-mix(in oklch, var(--accent) 40%, transparent);vertical-align:text-bottom;border-radius:2px;width:3px;height:1.1em;margin-left:2px;animation:1s ease-in-out infinite cursorPulse;display:inline-block}@keyframes cursorPulse{0%,to{opacity:.3}50%{opacity:.8}}.math-placeholder{color:var(--text-dim);opacity:.7;font-family:KaTeX_Math,Times New Roman,serif}div.math-placeholder{text-align:center;padding:.5em 0;display:block}.empty-state{justify-content:center;align-items:center;gap:var(--space-3);opacity:.4;user-select:none;flex-direction:column;height:100%;display:none}.chat-messages:empty~.empty-state,.empty-state.visible{display:flex}.empty-icon{place-items:center;width:96px;height:96px;display:grid}.empty-icon img{object-fit:contain;width:96px;height:96px;display:block}.empty-title{font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:2px;color:var(--text);font-weight:700}.empty-subtitle{font-size:var(--text-sm);color:var(--text-dim)}.skeleton-msg{padding:var(--space-4);border-radius:var(--radius-lg) var(--radius-lg) var(--radius-lg) var(--radius-sm);background:var(--agent-bg);border:1px solid var(--border);max-width:65%}.skeleton-line{background:linear-gradient(90deg, var(--border) 0%, color-mix(in oklch, var(--accent) 15%, var(--border)) 40%, var(--border) 80%);height:10px;margin-bottom:var(--space-2);background-size:300% 100%;border-radius:5px;animation:2s ease-in-out infinite shimmer}.skeleton-line:last-child{width:55%;margin-bottom:0}.skeleton-line:nth-child(2){width:80%;animation-delay:.15s}@keyframes shimmer{0%{background-position:300% 0}to{background-position:-100% 0}}@media (prefers-reduced-motion:reduce){.msg-agent,.msg-user,.msg-system,.stream-cursor,.skeleton-line{animation:none}}.chat-input-area{padding:var(--space-3) var(--space-5);border-top:1px solid var(--border);gap:var(--space-2);z-index:1;animation:revealUp .35s var(--ease-out-expo) .3s both;display:flex;position:relative;box-shadow:0 -1px 3px #00000026}.voice-shortcut-hint{padding:0 var(--space-5) var(--space-2);color:var(--text-dim);font-size:var(--text-xs)}.chat-input-shell{flex:1;min-width:0;display:flex;position:relative}.chat-input{background:var(--surface);border:1px solid var(--border);width:100%;color:var(--text);border-radius:var(--radius-md);font-size:var(--text-sm);font-family:var(--font-mono);resize:none;max-height:192px;transition:height .1s ease, border-color var(--duration-fast), box-shadow var(--duration-base);flex:1;padding:10px 42px 10px 14px;overflow-y:auto}.chat-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklch, var(--accent) 12%, transparent), 0 0 20px color-mix(in oklch, var(--accent) 8%, transparent);outline:none}.chat-input:disabled{opacity:.5}.chat-input-help-trigger{z-index:2;position:absolute;top:8px;right:10px}.btn-send{background:linear-gradient(135deg, var(--accent) 0%, var(--accent2) 100%);color:#fff;border-radius:var(--radius-md);cursor:pointer;font-size:var(--text-base);font-weight:700;font-family:var(--font-display);letter-spacing:.5px;transition:transform var(--duration-fast), box-shadow var(--duration-base), filter var(--duration-fast);border:none;padding:10px 18px;position:relative;overflow:visible}.btn-send:hover{box-shadow:0 4px 20px color-mix(in oklch, var(--accent) 45%, transparent), 0 0 40px color-mix(in oklch, var(--accent) 15%, transparent);filter:brightness(1.15);transform:translateY(-2px)}.btn-send:active{box-shadow:0 0 30px color-mix(in oklch, var(--accent) 50%, transparent);filter:brightness(1.3);transform:scale(.95)}.btn-send.stop-mode{background:var(--stop-btn);font-size:16px;transition:background .2s}.btn-send.stop-mode:hover{background:var(--stop-btn-hover)}.btn-send:disabled{opacity:.4;cursor:not-allowed}.btn-attach{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:8px;padding:10px 12px;font-size:16px;line-height:1;transition:border-color .2s,color .2s}.btn-attach:hover{border-color:var(--accent);color:var(--accent)}.drag-overlay{background:var(--error-dim);border:2px dashed var(--accent);z-index:100;color:var(--accent);pointer-events:none;border-radius:8px;justify-content:center;align-items:center;font-size:14px;display:none;position:absolute;inset:0}.drag-overlay.visible{display:flex}.pending-queue{border-top:1px solid var(--border);background:var(--surface);color:var(--text-dim);flex-direction:column;gap:2px;max-height:35vh;padding:4px 12px 6px;font-size:12px;display:none;overflow-y:auto}.pending-queue.visible{display:flex}.pending-queue-header{justify-content:space-between;align-items:center;padding:2px 4px;display:flex}.pending-queue-title{text-transform:uppercase;letter-spacing:.5px;align-items:center;gap:6px;font-size:10px;font-weight:600;display:inline-flex}.pending-queue-title svg{width:12px;height:12px}.pending-queue-count{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:0 6px;font-size:10px;line-height:1.4}.pending-queue-list{flex-direction:column;gap:2px;display:flex}.pending-row{background:var(--bg);border:1px solid var(--border);border-radius:6px;align-items:center;gap:6px;min-height:26px;padding:3px 8px;line-height:1.4;animation:.15s ease-out msgEnterSystem;display:flex}.pending-row--busy{opacity:.5;pointer-events:none}.pending-row-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text);flex:auto;font-size:12px;overflow:hidden}.pending-row-source{text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim);border:1px solid var(--border);border-radius:8px;flex:none;padding:0 5px;font-size:10px}.pending-row-btn{cursor:pointer;color:var(--text-dim);isolation:isolate;background:0 0;border:1px solid #0000;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:2px 6px;transition:color .15s,background .15s,border-color .15s;display:inline-flex;position:relative;overflow:hidden}.pending-row-btn svg{width:14px;height:14px}.pending-btn-content{z-index:1;align-items:center;gap:4px;display:inline-flex;position:relative}.pending-steer-label{font-size:11px;font-weight:500}.pending-steer-arrow{font-size:12px;line-height:1}.pending-row-steer:hover{color:var(--accent);background:var(--surface)}.pending-row-delete:hover{color:var(--delete-color);background:var(--error-dim)}.pending-arm-fill{transform-origin:0;pointer-events:none;opacity:0;z-index:0;position:absolute;inset:0;transform:scaleX(0)}.pending-row-btn.armed{border-color:currentColor}.pending-row-steer.armed{color:var(--accent)}.pending-row-delete.armed{color:var(--delete-color)}.pending-row-steer.armed .pending-arm-fill{background:color-mix(in oklch, var(--accent) 28%, transparent)}.pending-row-delete.armed .pending-arm-fill{background:color-mix(in oklch, var(--delete-color) 28%, transparent)}.pending-row-btn.armed .pending-arm-fill{opacity:1;animation:3s linear forwards pendingArmFill}@keyframes pendingArmFill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.file-preview{border-top:1px solid var(--border);background:var(--surface);color:var(--text-dim);flex-direction:column;gap:6px;padding:6px 20px;font-size:12px;display:none}.file-preview.visible{display:flex}.file-preview-header{justify-content:space-between;align-items:center;display:flex}.file-preview-title-group{align-items:center;gap:6px;display:flex}.file-preview-title{text-transform:uppercase;letter-spacing:.5px;font-size:11px;font-weight:600}.file-preview-clear{color:var(--delete-color);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:11px;transition:background .15s}.file-preview-clear:hover{background:var(--error-dim)}.file-preview-list{flex-wrap:wrap;gap:6px;display:flex}.file-chip{background:var(--bg);border:1px solid var(--border);border-radius:6px;align-items:center;gap:6px;padding:4px 8px;font-size:11px;animation:.15s ease-out msgEnterSystem;display:inline-flex}.file-chip-thumb{border-radius:3px;height:24px}.file-chip-name{text-overflow:ellipsis;white-space:nowrap;max-width:180px;overflow:hidden}.file-chip-remove{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:12px;line-height:1;transition:color .15s}.file-chip-remove:hover{color:var(--delete-color)}.btn-voice{border:1px solid var(--border);cursor:pointer;min-width:44px;min-height:44px;color:var(--text);background:0 0;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;padding:6px 10px;font-size:1.1rem;transition:all .2s;display:inline-flex}.btn-voice svg{width:20px;height:20px}.btn-voice:hover{border-color:var(--accent);background:var(--surface)}.btn-voice.recording{background:var(--error-dim);border-color:var(--error);animation:1.5s ease-in-out infinite pulse-recording}.btn-voice.arming{background:var(--surface);border-color:var(--accent);cursor:progress;opacity:.75}@keyframes pulse-recording{0%,to{box-shadow:0 0 0 0 color-mix(in oklch, var(--error) 40%, transparent)}50%{box-shadow:0 0 0 6px color-mix(in oklch, var(--error) 0%, transparent)}}.voice-timer{font-family:var(--font-mono);color:var(--error);text-align:center;min-width:36px;font-size:11px;animation:1.5s ease-in-out infinite pulse-recording}.btn-voice-cancel{background:var(--error-dim);border:1px solid var(--error);cursor:pointer;min-width:44px;min-height:44px;color:var(--error);border-radius:8px;flex-shrink:0;padding:8px 12px;font-size:.9rem;transition:all .2s}.btn-voice-cancel:hover{background:color-mix(in oklch, var(--error) 30%, transparent)}.cmd-dropdown{background:var(--surface);border:1px solid var(--border);z-index:150;opacity:0;pointer-events:none;border-radius:10px 10px 0 0;max-height:280px;transition:opacity .15s ease-out,transform .15s ease-out;position:absolute;bottom:calc(100% + 2px);left:20px;right:20px;overflow-y:auto;transform:translateY(4px);box-shadow:0 -4px 14px #00000040}.cmd-dropdown.visible{opacity:1;pointer-events:auto;transform:translateY(0)}.cmd-item{cursor:pointer;border-left:3px solid #0000;align-items:center;gap:10px;padding:9px 12px;display:flex}.cmd-item:hover,.cmd-item.selected{background:color-mix(in oklch, var(--accent) 10%, transparent)}.cmd-item.selected{border-left-color:var(--accent);scroll-margin-block:4px}.cmd-name{min-width:96px;color:var(--accent);font-weight:700;font-family:var(--font-mono);flex-shrink:0}.cmd-desc{min-width:0;color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.cmd-meta{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:4px;min-width:0;display:inline-flex}.cmd-chip{border:1px solid var(--border);color:var(--text-dim);white-space:nowrap;border-radius:6px;padding:1px 5px;font-size:11px;line-height:1.4}.cmd-risk-high{color:var(--error,#b42318)}.cmd-risk-medium{color:var(--warning,#925400)}.cmd-args{color:var(--text-dim);opacity:.8;white-space:nowrap;flex-shrink:0;font-size:11px}.cmd-info-btn{border:1px solid var(--border);background:var(--surface);width:20px;min-width:20px;height:20px;color:var(--text-dim);cursor:pointer;opacity:.6;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;margin:0;padding:0;font-size:11px;line-height:1;transition:border-color .15s,color .15s,background .15s,opacity .15s;display:inline-flex}.cmd-info-btn:hover{border-color:var(--accent);color:var(--accent);background:color-mix(in oklch, var(--accent) 8%, transparent);opacity:1}.cmd-empty{color:var(--text-dim);cursor:default;font-style:italic}.cmd-dropdown::-webkit-scrollbar{width:6px}.cmd-dropdown::-webkit-scrollbar-thumb{background:var(--border-alpha);border-radius:3px}.cmd-dropdown::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}.cmd-recovery{border:1px solid var(--border);background:color-mix(in oklch, var(--surface) 80%, var(--bg));border-radius:8px;margin-top:8px;padding:8px}.cmd-recovery-label{color:var(--text-dim);margin-bottom:4px;font-size:11px;font-weight:700}.cmd-recovery-text{white-space:pre-wrap;overflow-wrap:anywhere;max-height:160px;color:var(--text);font-family:var(--font-mono);margin:0;font-size:12px;line-height:1.45;overflow:auto}.cmd-recovery-suggestions{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.cmd-recovery-suggestions code{border:1px solid var(--border);color:var(--text-dim);border-radius:6px;padding:1px 5px;font-size:11px}.cmd-recovery-actions{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.cmd-recovery-btn{border:1px solid var(--border);background:var(--surface);min-height:28px;color:var(--text);cursor:pointer;border-radius:6px;padding:3px 8px;font-size:12px}.cmd-recovery-btn:hover,.cmd-recovery-btn:focus-visible{border-color:var(--accent)}.typing-indicator{align-items:center;gap:4px;padding:8px 14px;display:none}.typing-indicator.active{display:flex}.typing-indicator .label{color:var(--text-dim);margin-right:6px;font-size:11px}.typing-dot{background:var(--accent);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite bounce}.typing-dot:nth-child(3){animation-delay:.15s}.typing-dot:nth-child(4){animation-delay:.3s}.typing-dot:nth-child(5){animation-delay:.45s}@keyframes bounce{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:.7;transform:translateY(-3px)}}.streaming-shimmer{background:linear-gradient(90deg, transparent, var(--accent), transparent);background-size:200% 100%;border-radius:2px;height:3px;animation:1.5s ease-in-out infinite streaming-shimmer}@keyframes streaming-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.status-badge{transition:background-color var(--duration-base) ease, scale .15s ease}.status-badge.status-running{animation:none}.status-badge.status-running:before{content:"";background:var(--status-running-color,var(--warning));border-radius:50%;width:6px;height:6px;margin-right:4px;animation:1.5s ease-in-out infinite dotPing;display:inline-block}.status-badge.status-idle{opacity:.7;animation:none}.status-badge.status-steering{animation:none}.status-badge.status-steering:before{content:"";background:var(--status-steering-color,var(--primary));border-radius:50%;width:6px;height:6px;margin-right:4px;animation:1s ease-in-out infinite dotPing;display:inline-block}::view-transition-old(root),::view-transition-new(root){animation-duration:.2s}@supports (animation-timeline:view()){.chat-messages:not(.vs-active) .msg{animation:linear both scroll-fade-in view();animation-range:entry entry 30%}@keyframes scroll-fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}}.file-path-link{cursor:pointer;color:var(--accent);text-underline-offset:3px;border-radius:2px;margin:0 -2px;padding:0 2px;text-decoration:underline 1px dotted;transition:background .15s,text-decoration-style .15s}.file-path-link:hover,.file-path-link:focus-visible{background:color-mix(in oklch, var(--accent) 12%, transparent);outline:none;text-decoration-style:solid}.file-path-link:active{background:color-mix(in oklch, var(--accent) 20%, transparent)}.file-path-link.opening{opacity:.6;animation:.6s ease-in-out infinite alternate file-path-pulse}.file-path-link.opened{background:oklch(72.2746% .192007 149.579/.15);text-decoration-color:#22c55e}.file-path-link.open-failed{background:oklch(63.6834% .207849 25.3313/.15);text-decoration-style:wavy;text-decoration-color:#ef4444}@keyframes file-path-pulse{0%{opacity:.6}to{opacity:1}}.chat-inline-img{cursor:pointer;object-fit:contain;background:color-mix(in oklch, var(--surface) 75%, var(--border));border-radius:8px;max-width:100%;min-height:120px;max-height:360px;margin:8px 0;display:block}.chat-inline-img-error{border:1px dashed color-mix(in oklch, var(--error) 45%, var(--border));background:var(--error-dim);max-width:100%;min-height:120px;color:var(--text-dim);font-size:var(--text-sm);text-align:center;border-radius:8px;justify-content:center;align-items:center;margin:8px 0;padding:16px;display:flex}.chat-inline-video{border-radius:8px;max-width:100%;max-height:360px;margin:8px 0;display:block}.media-lightbox{z-index:9999;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.media-lightbox.hidden{display:none}.media-lightbox-backdrop{background:#000000d9;position:absolute;inset:0}.media-lightbox-content{flex-direction:column;align-items:center;display:flex;position:relative}.media-lightbox-img{object-fit:contain;cursor:pointer;border-radius:8px;max-width:90vw;max-height:85vh}.media-lightbox-controls{gap:8px;display:flex;position:absolute;top:8px;right:8px}.media-lightbox-controls button{color:#fff;cursor:pointer;background:#0009;border:none;border-radius:4px;padding:6px 12px;font-size:14px}.media-lightbox-controls button:hover{background:#000000e6}.bgtask-badge{--bgtask-accent:color-mix(in oklch, var(--accent) 30%, oklch(62% .2 305) 70%);border-top:1px solid var(--border);background:var(--surface);flex-direction:column;padding:3px 12px 4px;display:none}.bgtask-badge.visible{display:flex}.bgtask-header{cursor:pointer;color:var(--bgtask-accent);background:0 0;border:none;align-self:flex-start;align-items:center;gap:6px;padding:2px 4px;font-size:10px;font-weight:600;display:inline-flex}.bgtask-header svg{width:11px;height:11px}.bgtask-count{background:color-mix(in oklch, var(--bgtask-accent) 20%, transparent);min-width:14px;color:var(--bgtask-accent);text-align:center;border-radius:7px;padding:0 4px}.bgtask-count-pop{animation:.3s bgtaskPop}@keyframes bgtaskPop{0%{transform:scale(1)}50%{transform:scale(1.4)}to{transform:scale(1)}}.bgtask-chevron{color:var(--bgtask-accent);opacity:.7}.bgtask-list{flex-direction:column;gap:1px;padding:2px 4px 0;animation:.15s bgtaskDropUp;display:flex}@keyframes bgtaskDropUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.bgtask-row{color:var(--text);border-radius:4px;align-items:center;gap:8px;padding:2px 4px;font-size:11px;display:flex}.bgtask-row-kind{color:var(--bgtask-accent);font-weight:600}.bgtask-row-id,.bgtask-row-elapsed,.bgtask-row-status{color:var(--text-dim,var(--text));opacity:.7;font-variant-numeric:tabular-nums}.bgtask-row-elapsed{margin-left:auto}.bgtask-row-recent{opacity:.78}.bgtask-spinner{border:2px solid var(--bgtask-accent);border-top-color:#0000;border-radius:50%;flex:none;width:10px;height:10px;animation:.8s linear infinite bgtaskSpin}@keyframes bgtaskSpin{to{transform:rotate(360deg)}}.bgtask-status-icon.ok{color:var(--success,#3da35d)}.bgtask-status-icon.err{color:var(--danger,#d04545)}.bgtask-status-icon.dim{opacity:.6}.bgtask-flash-ok{animation:1.2s bgtaskFlashOk}.bgtask-flash-err{animation:1.2s bgtaskFlashErr}@keyframes bgtaskFlashOk{0%{background:color-mix(in oklch, var(--success,#3da35d) 30%, transparent)}to{background:0 0}}@keyframes bgtaskFlashErr{0%{background:color-mix(in oklch, var(--danger,#d04545) 30%, transparent)}to{background:0 0}}@media (prefers-reduced-motion:reduce){.bgtask-spinner,.bgtask-count-pop,.bgtask-list,.bgtask-flash-ok,.bgtask-flash-err{animation:none}}.native-requests{min-width:0;min-height:0;max-height:min(40dvh,24rem);padding:var(--space-3);border-block-start:1px solid var(--border);background:var(--surface);color:var(--text);font-family:var(--font-ui);font-size:var(--text-sm);word-break:keep-all;overflow-wrap:anywhere;flex:0 auto;line-height:1.5;overflow-y:auto}.native-requests[hidden]{display:none}.native-request-announcer{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.native-request-title{font-size:var(--text-base);text-wrap:balance;margin:0;font-weight:600}.native-request-status,.native-request-context{margin-block:var(--space-1) var(--space-2);text-wrap:balance}.native-request-controls fieldset{margin-block:var(--space-2);border:0;min-width:0;padding:0}.native-request-controls legend{white-space:pre-wrap;font-weight:600}.native-request-controls label{color:inherit;font-size:inherit;align-items:flex-start;gap:var(--space-2);margin-block:var(--space-1);display:flex}.native-request-controls label:has(textarea){display:block}.native-request-controls input{accent-color:var(--accent);flex-shrink:0}.native-requests button,.native-requests textarea{border:1px solid var(--text-dim);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font:inherit;padding:var(--space-2);overflow-wrap:anywhere;max-width:100%}.native-requests button{margin:var(--space-1);cursor:pointer}.native-requests button:hover:not(:disabled){background:var(--surface)}.native-requests button:active:not(:disabled){border-color:var(--accent)}.native-requests button[aria-disabled=true],.native-requests button:disabled{opacity:.65;cursor:default}.native-requests textarea{resize:vertical;width:100%;min-height:4rem;display:block}.native-requests :is(button,input,textarea):focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (pointer:coarse){.native-requests button{min-width:44px}.native-requests button,.native-request-controls label{min-height:44px}}:root:not([data-presentation-mode=legacy]) .msg-agent[data-activity-key] .process-block,:root:not([data-presentation-mode=legacy]) .msg-agent[data-activity-key][data-activity-live=true] .msg-content,:root:not([data-presentation-mode=legacy]) .msg-agent[data-activity-recovering=true]:not([data-activity-saved=true]) .msg-content,:root[data-presentation-mode=legacy] .activity-turn{display:none}:root[data-presentation-mode=legacy] .activity-turn[data-status=stopped],:root[data-presentation-mode=legacy] .activity-turn[data-status=error]{display:block}:root[data-presentation-mode=legacy] .activity-turn>:not(.activity-status):not(.activity-error){display:none}.activity-turn{min-width:0;max-width:100%;margin-block:0 var(--space-2);color:var(--text);font-family:var(--font-ui);font-size:var(--text-sm);overflow-wrap:anywhere;word-break:normal;line-height:1.5}.activity-turn details,.activity-turn summary,.activity-turn .activity-list{min-width:0;max-width:100%}.activity-turn .activity-status{margin-block:0 var(--space-1);font-weight:600}.activity-turn .activity-disclosure{border-inline-start:0;padding-inline-start:0}.activity-turn summary{padding:var(--space-2) var(--space-1);cursor:pointer;white-space:normal;overflow-wrap:anywhere;border-radius:var(--radius-sm);display:list-item}.activity-turn .activity-status.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:root[data-presentation-mode=legacy] .activity-turn:is([data-status=stopped],[data-status=error])>.activity-status{width:auto;height:auto;margin:0 0 var(--space-1);clip-path:none;white-space:normal;position:static;overflow:visible}.activity-turn .activity-summary{align-items:center;gap:var(--activity-gap);box-sizing:border-box;min-height:var(--activity-row-h);white-space:nowrap;overflow-wrap:normal;flex-wrap:nowrap;padding:4px;font-weight:500;list-style:none;display:flex}.activity-summary::-webkit-details-marker{display:none}.activity-summary::marker{content:""}.activity-chevron{flex:0 0 var(--activity-chevron);color:var(--activity-muted);transition:transform var(--motion-fast) ease;display:inline-flex;transform:rotate(0)}.activity-chevron svg{width:var(--activity-chevron);height:var(--activity-chevron);stroke-width:1.8px}.activity-disclosure[open]>.activity-summary>.activity-chevron{transform:rotate(90deg)}.activity-status-label{flex:none;font-weight:600}.activity-status-label:after{content:"·";color:var(--activity-muted);margin-inline-start:var(--activity-gap);font-weight:400}.activity-summary-text{text-overflow:ellipsis;min-width:0;color:var(--activity-muted);flex:auto;overflow:hidden}.activity-accessory{color:var(--activity-muted);font-variant-numeric:tabular-nums;flex:none}.activity-accessory:after{content:attr(data-unit)}.activity-steer-pill{color:var(--status-steering-color);background:var(--status-steering-bg);border-radius:4px;flex:none;align-items:center;gap:4px;padding:2px 6px;display:inline-flex}.activity-footer{margin-block:var(--space-2)}.activity-disclosure>:not(summary){margin-inline-start:var(--activity-indent)}.activity-turn .activity-summary:hover{text-decoration:none}.activity-turn .activity-group,.activity-turn .activity-row{min-width:0;max-width:100%}.activity-turn .activity-item-summary,.activity-turn .activity-group-summary{align-items:center;gap:var(--activity-gap);width:100%;min-height:var(--activity-row-h);padding:0 var(--space-1);color:var(--text);text-align:start;background:0 0;border:0;display:flex}.activity-turn .activity-item-summary{list-style:none}.activity-turn .activity-item-summary::-webkit-details-marker{display:none}.activity-row-icon,.activity-chevron-sm{color:var(--activity-muted);flex-shrink:0;display:inline-flex}.activity-row-icon,.activity-row-icon svg{width:var(--activity-icon);height:var(--activity-icon)}.activity-chevron-sm,.activity-chevron-sm svg{width:var(--activity-chevron-sm);height:var(--activity-chevron-sm)}.activity-row-icon svg,.activity-chevron-sm svg{stroke-width:1.8px}.activity-chevron-sm{transition:transform var(--motion-fast)}.activity-item[open]>summary>.activity-chevron-sm,.activity-group-summary[aria-expanded=true]>.activity-chevron-sm{transform:rotate(180deg)}.activity-row-label{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.activity-row[data-kind=command] .activity-row-label{font-family:var(--font-mono)}.activity-row-status{color:var(--activity-muted);flex-shrink:0;font-size:12px}.activity-row[data-status=running] .activity-row-status:before{content:"";width:6px;height:6px;background:currentColor;border-radius:50%;margin-inline-end:var(--activity-gap);animation:1s ease-in-out infinite activity-running-pulse;display:inline-block}@keyframes activity-running-pulse{50%{opacity:.35}}@keyframes activity-body-reveal{0%{opacity:0}to{opacity:1}}.activity-turn .activity-item[open]>.activity-item-text,.activity-turn .activity-group-body:not([hidden]){animation:activity-body-reveal var(--motion-base) ease-out}.activity-group-body{border-inline-start:1px solid var(--activity-border);max-height:var(--activity-group-max);scrollbar-gutter:stable;scroll-padding-block:var(--activity-indent);margin-inline-start:var(--activity-indent);padding-inline-start:var(--activity-gap);overflow:auto}.activity-turn .activity-item-text{box-sizing:border-box;min-width:0;max-width:100%;max-height:var(--activity-output-max);margin:var(--space-1) 0 var(--space-2) var(--activity-indent);padding:var(--space-2);padding-bottom:calc(var(--space-2) + var(--activity-output-fade));background:var(--code-bg);color:var(--text);font-family:var(--font-mono), var(--font-ui);white-space:pre-wrap;overflow-wrap:anywhere;tab-size:4;mask-image:linear-gradient(to bottom, #000 calc(100% - var(--activity-output-fade)), transparent);font-size:12px;line-height:1.6;overflow:auto}.activity-turn .activity-row-reasoning .activity-item-text{font-family:var(--font-ui);color:var(--activity-muted);max-height:140px}.activity-turn .activity-row-message .activity-item-text{font-family:var(--font-ui)}.activity-turn .activity-row-reasoning .activity-row-label{color:var(--activity-muted)}.activity-turn .activity-group-body:focus-visible,.activity-turn .activity-item-text:focus-visible{box-shadow:var(--focus-ring-shadow);outline:2px solid var(--accent);outline-offset:-2px}.activity-turn .activity-pages{align-items:center;gap:var(--space-2);margin-block:var(--space-2);flex-wrap:wrap;display:flex}.activity-turn button{min-width:0;max-width:100%;padding:var(--space-2);border:1px solid var(--text-dim);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;white-space:normal;overflow-wrap:anywhere;cursor:pointer}.activity-turn button:disabled{color:var(--text-dim);cursor:default}.activity-turn summary:hover,.activity-turn button:not(:disabled):hover{background:var(--surface);text-decoration:underline}.activity-turn summary:focus-visible,.activity-turn button:focus-visible{box-shadow:var(--focus-ring-shadow);outline:2px solid var(--accent);outline-offset:2px}.activity-turn .activity-empty,.activity-turn .activity-degraded,.activity-turn .activity-connection,.activity-turn .activity-omitted,.activity-turn .activity-choice-notice,.activity-turn .activity-requests{margin-block:var(--space-2)}.activity-turn [hidden]{display:none}@media (pointer:coarse){.activity-turn .activity-summary,.activity-turn summary,.activity-turn button{min-width:44px;min-height:44px}}@media (prefers-reduced-motion:reduce){.activity-turn,.activity-turn *,.activity-turn :before,.activity-turn :after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.activity-turn .activity-error{margin-block:var(--space-2);color:var(--text);overflow-wrap:anywhere}:root[data-presentation-mode=legacy] .activity-read-control,:root[data-presentation-mode=legacy] .activity-read-capacity{display:none}.activity-read-control,.activity-read-capacity,.activity-legacy-cache{min-width:0;max-width:100%;margin-block:var(--space-2);color:var(--text);font:var(--text-sm)/1.5 var(--font-ui);overflow-wrap:anywhere}.activity-unavailable{margin-block:0 var(--space-2);color:var(--activity-muted);font:var(--text-sm)/1.5 var(--font-ui);overflow-wrap:anywhere}.activity-read-control p{margin-block:var(--space-2)}.activity-read-control p:empty{display:none}.activity-legacy-cache>summary{cursor:pointer;padding-block:var(--space-2)}.activity-read-control button{max-width:100%;padding:var(--space-2);border:1px solid var(--text-dim);border-radius:var(--radius-sm);color:var(--text);background:var(--surface);font:inherit;white-space:normal;overflow-wrap:anywhere;cursor:pointer}.activity-read-control button:disabled{color:var(--text-dim);cursor:default}.activity-read-control button:focus-visible,.activity-legacy-cache summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.activity-legacy-cache pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:24rem;overflow:auto}.activity-read-control[hidden],.activity-read-control [hidden]{display:none}@media (pointer:coarse){.activity-read-control button,.activity-legacy-cache summary{min-height:44px}.activity-turn .activity-item-summary,.activity-turn .activity-group-summary{min-width:44px;min-height:44px}}@media (prefers-reduced-motion:reduce){.activity-turn .activity-chevron-sm{transition:none}.activity-turn .activity-item[open]>.activity-item-text,.activity-turn .activity-group-body:not([hidden]),.activity-row[data-status=running] .activity-row-status:before{animation:none}}.chat-search-trigger{cursor:pointer;border-radius:var(--radius-sm);opacity:.6;transition:opacity var(--duration-fast);background:0 0;border:none;padding:2px 4px;font-size:14px;line-height:1}.chat-search-trigger:hover{opacity:1}.chat-search{align-items:center;display:none;position:relative}.chat-search.open{flex-direction:column;display:flex}.chat-search-input-wrap{align-items:center;gap:var(--space-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-1) var(--space-3);min-width:260px;transition:border-color var(--duration-fast);display:flex}.chat-search-input-wrap:focus-within{border-color:var(--accent)}.chat-search-icon{opacity:.5;font-size:var(--text-sm);flex-shrink:0}.chat-search-icon:before{content:"🔍";font-size:12px}.chat-search-input{color:var(--text);font-family:var(--font-ui);font-size:var(--text-sm);background:0 0;border:none;outline:none;width:100%;min-width:160px}.chat-search-input::placeholder{color:var(--text-dim)}.chat-search-count{font-size:var(--text-xs);color:var(--text-dim);white-space:nowrap;flex-shrink:0}.chat-search-close{color:var(--text-dim);cursor:pointer;font-size:var(--text-base);padding:0 var(--space-1);transition:color var(--duration-fast);background:0 0;border:none;line-height:1}.chat-search-close:hover{color:var(--text)}.chat-search-results{z-index:100;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);margin-top:var(--space-1);overscroll-behavior:contain;width:380px;max-height:320px;display:none;position:absolute;top:100%;left:0;right:auto;overflow-y:auto;box-shadow:0 4px 16px #0000004d}.chat-search-results.has-results{display:block}.chat-search-result{padding:var(--space-2) var(--space-3);cursor:pointer;border-bottom:1px solid var(--border);transition:background var(--duration-fast);flex-direction:column;gap:2px;display:flex}.chat-search-result:last-child{border-bottom:none}.chat-search-result:hover,.chat-search-result.active{background:oklch(15% .02 270)}.chat-search-result-meta{align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--text-dim);display:flex}.chat-search-result-role{text-transform:uppercase;letter-spacing:.5px;font-weight:600}.chat-search-result-role.user{color:var(--accent)}.chat-search-result-role.agent{color:var(--green)}.chat-search-result-badge{border-radius:var(--radius-sm);background:var(--warning-dim);color:var(--warning);padding:1px 5px;font-size:10px}.chat-search-result-snippet{font-size:var(--text-sm);color:var(--text);text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.4;display:-webkit-box;overflow:hidden}.chat-search-result-snippet mark{color:var(--warning);background:oklch(78% .16 75/.3);border-radius:2px;padding:0 1px}.msg.search-highlight{animation:1.5s ease-out searchPulse}@keyframes searchPulse{0%{box-shadow:inset 0 0 0 2px var(--accent)}to{box-shadow:inset 0 0 0 2px #0000}}@media (prefers-reduced-motion:reduce){.msg.search-highlight{box-shadow:inset 0 0 0 2px var(--accent);animation:none}}@media (width<=768px){.chat-search{flex:260px;min-width:0;max-width:100%;position:static}.chat-search-input-wrap{width:100%;min-width:0;max-width:100%}.chat-search-input{min-width:0}.chat-search-results{left:var(--space-5);max-width:calc(100vw - 2 * var(--space-5));right:auto}}#chatMessages{transition:box-shadow .4s,border-color .4s}body[data-orc-state] #chatMessages{box-shadow:inset 0 0 30px -10px var(--orc-glow);border-color:var(--orc-glow)}body[data-orc-state] .chat-input-area{border-top:2px solid var(--orc-glow)}body:not([data-orc-state]) .chat-input-area{border-top:2px solid #0000;transition:border-color .4s}@keyframes orc-pulse{0%{box-shadow:inset 0 0 60px -10px var(--orc-glow)}50%{box-shadow:inset 0 0 20px -10px var(--orc-glow)}to{box-shadow:inset 0 0 30px -10px var(--orc-glow)}}body[data-orc-state].orc-pulse #chatMessages{animation:.6s ease-out orc-pulse}.orc-state-badge{font-size:10px;font-weight:700;font-family:var(--font-mono);letter-spacing:1px;background:color-mix(in oklch, var(--orc-glow) 20%, var(--surface));color:var(--orc-glow);border:1px solid var(--orc-glow);text-transform:uppercase;border-radius:4px;padding:2px 8px;display:inline-block}.pabc-roadmap{background:linear-gradient(135deg, var(--surface) 0%, color-mix(in oklch, var(--surface) 90%, #000) 100%);border:1px solid var(--border);border-radius:10px;align-items:center;padding:12px 22px;display:none;position:relative;overflow:visible;box-shadow:0 2px 16px #0000004d,inset 0 1px #ffffff08}.pabc-roadmap.visible{animation:.5s cubic-bezier(.22,1,.36,1) pabc-fadeSlideIn;display:flex}@keyframes pabc-fadeSlideIn{0%{opacity:0;transform:translateY(-12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.pabc-dot{width:26px;height:26px;font-family:var(--font-display,var(--font-mono));z-index:2;letter-spacing:.5px;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:10px;font-weight:700;transition:all .5s cubic-bezier(.22,1,.36,1);display:flex}.pabc-dot.future{background:var(--surface);color:var(--text-dim);border:1px solid var(--border)}.pabc-dot.active{color:var(--bg);border:2px solid;transform:scale(1.1);box-shadow:0 0 14px -3px,0 0 4px -1px}.pabc-dot.done{color:color-mix(in oklch, var(--bg) 90%, transparent);border:1px solid color-mix(in oklch, var(--text) 10%, transparent);opacity:.65}.pabc-dot[data-phase=I].active,.pabc-dot[data-phase=I].done{background:var(--orc-glow-I)}.pabc-dot[data-phase=P].active,.pabc-dot[data-phase=P].done{background:var(--orc-glow-P)}.pabc-dot[data-phase=A].active,.pabc-dot[data-phase=A].done{background:var(--orc-glow-A)}.pabc-dot[data-phase=B].active,.pabc-dot[data-phase=B].done{background:var(--orc-glow-B)}.pabc-dot[data-phase=C].active,.pabc-dot[data-phase=C].done{background:var(--orc-glow-C)}.pabc-connector{background:linear-gradient(90deg, var(--border) 0%, color-mix(in oklch, var(--border) 60%, var(--surface)) 50%, var(--border) 100%);border-radius:1px;flex:1;min-width:44px;height:2px;transition:all .5s}.pabc-connector.done{background:linear-gradient(90deg, var(--text-dim) 0%, color-mix(in oklch, var(--text-dim) 70%, var(--surface)) 50%, var(--text-dim) 100%);box-shadow:0 0 6px -2px var(--text-dim)}.pabc-center{flex-direction:column;flex-shrink:0;align-items:center;padding:0 20px;display:flex}.pabc-brand{font-family:var(--font-display,var(--font-mono));letter-spacing:4px;background:linear-gradient(90deg, var(--orc-glow-I), var(--orc-glow-P), var(--orc-glow-A), var(--orc-glow-B), var(--orc-glow-C));-webkit-text-fill-color:transparent;filter:brightness(1.1);-webkit-background-clip:text;background-clip:text;font-size:13px;font-weight:700}.pabc-tagline{font-family:var(--font-mono);color:var(--text-dim);letter-spacing:2px;text-transform:uppercase;opacity:.7;margin-top:2px;font-size:7px}.shark-runner{z-index:10;pointer-events:none;filter:drop-shadow(0 2px 4px #0006);background:url(/dist/assets/shark-sprite-v5dtON_I.png) 0 0/360px 24px no-repeat;width:36px;height:24px;transition:transform 1.4s cubic-bezier(.25,.46,.45,.94);display:none;position:absolute;top:-13px;left:0}.shark-runner.running{animation:1s steps(10,end) infinite shark-run;display:block}@keyframes shark-run{to{background-position:-360px 0}}@keyframes pabc-shimmer{0%{opacity:1;filter:brightness()}25%{opacity:1;filter:brightness(1.4);box-shadow:0 0 24px #a855f733}to{opacity:0;transform:translateY(-8px)scale(.98)}}.pabc-roadmap.shimmer-out{animation:1s ease-out forwards pabc-shimmer}.pabc-meta{min-height:22px;font-family:var(--font-mono);color:var(--text-dim);align-items:center;gap:8px;padding:4px 18px 0;font-size:10px;display:flex}.pabc-meta span[hidden]{display:none}.pabc-anchor,.pabc-heartbeat-status{text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--border);background:color-mix(in oklch, var(--surface) 88%, var(--text) 12%);border-radius:4px;max-width:min(42vw,420px);padding:3px 7px;overflow:hidden}.pabc-heartbeat-status{color:var(--orc-glow-A);border-color:color-mix(in oklch, var(--orc-glow-A) 45%, var(--border))}[data-theme=light] .pabc-roadmap{background:linear-gradient(135deg, var(--surface) 0%, color-mix(in oklch, var(--surface) 90%, #000) 100%);box-shadow:0 2px 12px #00000014,inset 0 1px #fff9}[data-theme=light] .pabc-dot.future{background:var(--surface);color:var(--text-dim)}[data-theme=light] .pabc-dot.active{color:var(--bg)}[data-theme=light] .pabc-dot.done{color:var(--bg);border-color:#0000000f}[data-theme=light] .pabc-connector{background:linear-gradient(90deg, var(--border) 0%, color-mix(in oklch, var(--border) 60%, var(--surface)) 50%, var(--border) 100%)}[data-theme=light] .pabc-connector.done{background:linear-gradient(90deg, var(--text-dim) 0%, color-mix(in oklch, var(--text-dim) 70%, var(--surface)) 50%, var(--text-dim) 100%);box-shadow:none}[data-theme=light] .shark-runner{filter:drop-shadow(0 1px 2px #00000026)}.interview-panel{max-width:100%;margin:0 auto 8px;font-size:.82rem}.interview-panel[hidden]{display:none}.iv-toggle{background:var(--bg-secondary,#ffffff0a);border:1px solid var(--border-color,#ffffff14);cursor:pointer;width:100%;color:var(--text-secondary,inherit);font:inherit;text-align:left;border-radius:8px;align-items:center;gap:6px;padding:8px 14px;font-size:.82rem;display:flex}.iv-toggle:hover{background:var(--bg-hover,#ffffff14)}.iv-chevron{opacity:.65;font-size:1.1em;transition:transform .15s;display:inline-block}.interview-panel:not(.collapsed) .iv-chevron{transform:rotate(90deg)}.iv-summary{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.iv-known-count{color:var(--accent-green,#4caf50)}.iv-unknown-count{color:var(--accent-yellow,#ff9800)}.iv-body{gap:12px;max-height:280px;margin-top:6px;display:flex;overflow-y:auto}.interview-panel.collapsed .iv-body{display:none}.iv-section{min-width:0}.iv-section-ambiguity{flex:0 0 160px}.iv-section-known{flex:3 1 0}.iv-section-unknown{flex:2 1 0}.iv-section-unknown:empty{flex:0;display:none}.iv-section ul{margin:4px 0;padding:0;list-style:none}.iv-known:before{content:"✓ ";color:var(--accent-green,#4caf50)}.iv-unknown:before{content:"? ";color:var(--accent-yellow,#ff9800)}.goal-cockpit{font-family:var(--font-mono);background:color-mix(in oklch, var(--surface) 92%, var(--orc-glow-I) 8%);border-bottom:1px solid var(--border);align-items:center;gap:8px;min-height:0;padding:6px 16px;font-size:11px;display:flex;overflow:hidden}.goal-cockpit[hidden]{display:none}.goal-objective{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text);flex:1 1 0;font-weight:600;overflow:hidden}.goal-status{text-transform:uppercase;letter-spacing:.5px;border-radius:3px;flex-shrink:0;padding:1px 6px;font-size:9px;font-weight:700}.goal-status--active{background:color-mix(in oklch, var(--orc-glow-P) 20%, var(--surface));color:var(--orc-glow-P);border:1px solid var(--orc-glow-P)}.goal-status--paused{background:color-mix(in oklch, var(--orc-glow-A) 20%, var(--surface));color:var(--orc-glow-A);border:1px solid var(--orc-glow-A)}.goal-status--blocked{background:color-mix(in oklch, oklch(65% .2 30) 20%, var(--surface));color:oklch(65% .2 30);border:1px solid oklch(65% .2 30)}.goal-next{text-overflow:ellipsis;white-space:nowrap;max-width:min(30vw,280px);color:var(--text-dim);flex-shrink:0;font-size:10px;overflow:hidden}[data-theme=light] .goal-cockpit{background:color-mix(in oklch, var(--surface) 95%, var(--orc-glow-I) 5%)}.cli-status-header{cursor:pointer;user-select:none;border-radius:var(--radius-ctl);justify-content:space-between;align-items:center;min-height:28px;display:flex}.cli-status-header:after{content:"▸";color:var(--text-dim);margin-left:8px;font-size:12px}.sidebar-left .cli-status-header:hover{background:var(--surface-2)}.sidebar-left .cli-status-header.expanded{background:var(--surface-3)}.cli-status-header.expanded:after{content:"▾"}.cli-status-toolbar{align-items:center;gap:var(--space-2);display:flex}.cli-status-toolbar .cli-status-header{flex:1;min-width:0}.btn-refresh{transition:color var(--duration-fast), border-color var(--duration-fast), background var(--duration-fast), transform var(--duration-fast)}.btn-refresh:active:not(:disabled){transform:translateY(1px)}.btn-refresh:disabled{cursor:wait;opacity:.72}.btn-refresh.is-refreshing{color:var(--accent);border-color:color-mix(in oklch, var(--accent) 38%, var(--border));background:color-mix(in oklch, var(--accent) 10%, transparent)}.btn-refresh.is-refreshing svg{animation:.85s linear infinite cliRefreshSpin}.btn-refresh.is-success{color:var(--success);border-color:color-mix(in oklch, var(--success) 42%, var(--border));background:var(--success-dim)}.btn-refresh.is-error{color:var(--error);border-color:color-mix(in oklch, var(--error) 42%, var(--border));background:var(--error-dim)}.cli-refresh-state{max-width:86px;min-height:13px;color:var(--text-dim);font-family:var(--font-mono);text-align:right;text-overflow:ellipsis;white-space:nowrap;font-size:10px;line-height:1.2;overflow:hidden}.cli-refresh-state[data-state=refreshing]{color:var(--accent)}.cli-refresh-state[data-state=success]{color:var(--success)}.cli-refresh-state[data-state=error]{color:var(--error)}@keyframes cliRefreshSpin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.btn-refresh.is-refreshing svg{animation:none}}.cli-status-row{align-items:center;gap:8px;min-height:28px;padding:4px 0;font-size:12px;display:flex}.cli-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.cli-dot.ok{background:var(--green)}.cli-dot.warn{background:var(--warning);animation:2s ease-in-out infinite pulse-warn}@keyframes pulse-warn{0%,to{opacity:1}50%{opacity:.5}}.cli-dot.missing{background:var(--error)}.cli-provider-icon{flex-shrink:0;align-items:center;width:16px;height:16px;display:inline-flex}.cli-provider-icon svg{width:100%;height:100%}.cli-name{flex:1}.cli-path{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;max-width:120px;font-size:10px;overflow:hidden}.settings-group{border:1px solid var(--border);border-radius:6px;padding:10px;transition:border-color .2s}.settings-group:hover{border-color:color-mix(in oklch, var(--border) 60%, var(--accent))}.settings-group h4{color:var(--text-dim);font-size:11px;font-family:var(--font-display);letter-spacing:.5px;align-items:center;gap:4px;margin-bottom:8px;display:flex}.settings-row{margin-bottom:6px}.settings-row:last-child{margin-bottom:0}.sub-row{border-left:2px solid var(--border);padding-left:8px}.perm-toggle{gap:8px;display:flex}.perm-btn{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;text-align:center;background:0 0;border-radius:6px;flex:1;padding:6px;font-family:inherit;font-size:11px}.perm-selector{padding:0;display:block;position:relative}.perm-selector select{width:100%;color:inherit;font:inherit;cursor:pointer;background-color:#0000;border:0;margin:0;padding:6px 18px 6px 22px}.perm-selector>:first-child{pointer-events:none;position:absolute;top:50%;left:6px;transform:translateY(-50%)}.perm-selector:focus-within{outline:2px solid var(--accent);outline-offset:2px}.perm-save-error{color:var(--text-dim);margin-top:6px;font-size:11px}.perm-btn.active{border-color:var(--accent);color:var(--accent);background:color-mix(in oklch, var(--accent) 10%, var(--bg))}.perm-btn:disabled,.perm-selector:has(select:disabled){border-color:var(--border);color:var(--text-dim);cursor:not-allowed;opacity:.55;background:0 0}.perm-selector select:disabled{cursor:not-allowed}.channel-transport-status .transport-status-block+.transport-status-block{margin-top:10px}.slack-field-error{color:var(--error,#e5534b);margin-top:3px;font-size:11px}.settings-managed-notice{border:1px solid color-mix(in oklch, var(--accent) 45%, var(--border));color:var(--text-dim);background:color-mix(in oklch, var(--accent) 7%, var(--bg));border-radius:6px;margin-bottom:8px;padding:7px 8px;font-size:11px;line-height:1.4}.input-sm.input-error{border-color:var(--error,#e5534b)}.slack-advanced{margin-top:4px}.slack-advanced>summary{color:var(--text-dim);cursor:pointer;margin-bottom:6px;font-size:11px}.section-title-actions{align-items:center;gap:6px;margin-left:auto;display:inline-flex}.onboard-trigger{white-space:nowrap;flex:none;padding:3px 8px;font-size:10px}.onboarding-box{flex-direction:column;gap:10px;max-width:460px;padding:16px;display:flex}.onboarding-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.onboarding-progress{color:var(--text-dim);font-variant-numeric:tabular-nums;margin-left:auto;margin-right:4px;font-size:11px}.onboarding-steps{gap:6px;display:flex}.onboarding-dot{background:var(--border);border-radius:2px;flex:1;height:3px}.onboarding-dot.is-done{background:color-mix(in oklch, var(--accent) 55%, var(--border))}.onboarding-dot.is-active{background:var(--accent)}.onboarding-step-title{color:var(--text);font-size:12px}.onboarding-footer{justify-content:flex-end;margin-top:2px}.onboarding-title{color:var(--text);font-size:14px;font-family:var(--font-display)}.onboarding-guide{color:var(--text-dim);margin:0;font-size:12px;line-height:1.6}.onboarding-field{flex-direction:column;gap:4px;display:flex}.onboarding-field label{color:var(--text-dim);font-size:11px}.onboarding-error{color:var(--error,#e5534b);font-size:11px}.onboarding-hint{color:var(--text-dim);font-size:10px}.onboarding-manifest-status{color:var(--accent);align-self:center;font-size:10px}.onboarding-manifest-status.is-error{color:var(--error,#e5534b)}.onboarding-scopes{font-family:var(--font-mono,monospace);color:var(--text);word-break:break-all;margin-top:4px;font-size:11px;display:block}.onboarding-identity{color:var(--accent);font-size:11px}.onboarding-next{color:var(--text);margin:0;font-size:12px;line-height:1.6}.onboarding-actions{gap:8px;display:flex}.transport-status-label{color:var(--text-dim);margin-bottom:4px;font-size:11px}.transport-status-chips{flex-wrap:wrap;gap:6px;display:flex}.transport-status-chip{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;align-items:center;padding:2px 8px;font-size:10px;display:inline-flex}.transport-status-hint{color:var(--text-dim);margin:6px 0 0;font-size:10px;line-height:1.4}textarea.prompt-editor{background:var(--bg);border:1px solid var(--border);width:100%;height:120px;color:var(--text);resize:vertical;border-radius:6px;padding:8px;font-family:inherit;font-size:11px}.skill-search{background:var(--bg);border:1px solid var(--border);border-radius:8px;align-items:center;gap:7px;width:100%;margin-bottom:8px;padding:6px 9px;transition:border-color .2s,box-shadow .2s;display:flex}.skill-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in oklch, var(--accent) 14%, transparent)}.skill-search-icon{width:14px;height:14px;color:var(--text-dim);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.skill-search-input{width:100%;min-width:0;color:var(--text);font:inherit;background:0 0;border:0;outline:0;font-size:11px}.skill-search-input::placeholder{color:var(--text-dim)}.skill-filter{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:12px;padding:4px 10px;font-family:inherit;font-size:10px}.skill-filter.active{border-color:var(--accent);color:var(--accent);background:color-mix(in oklch, var(--accent) 10%, var(--bg))}.skill-empty{color:var(--text-dim);text-align:center;padding:12px 4px;font-size:11px}.skill-card{background:var(--bg);border:1px solid var(--border);border-radius:8px;margin-bottom:8px;padding:10px;transition:border-color .2s,transform .15s,box-shadow .15s}.skill-card:hover{border-color:var(--accent2);transform:translateY(-1px);box-shadow:0 2px 8px #0003}.skill-card.enabled{border-left:3px solid var(--green)}.skill-card-header{align-items:center;gap:8px;margin-bottom:4px;display:flex}.skill-emoji{flex-shrink:0;align-items:center;width:20px;height:20px;font-size:16px;display:inline-flex}.skill-name{flex:1;font-size:12px;font-weight:600}.skill-toggle{width:var(--toggle-w);height:var(--toggle-h);border-radius:calc(var(--toggle-h) / 2);cursor:pointer;border:none;transition:background .2s;position:relative}.skill-toggle.on{background:var(--green)}.skill-toggle.off{background:var(--toggle-off)}.skill-toggle:after{content:"";top:calc((var(--toggle-h) - var(--toggle-knob)) / 2);width:var(--toggle-knob);height:var(--toggle-knob);background:var(--toggle-on);border-radius:50%;transition:left .2s;position:absolute}.skill-toggle.on:after{left:calc(var(--toggle-w) - var(--toggle-knob) - (var(--toggle-h) - var(--toggle-knob)) / 2)}.skill-toggle.off:after{left:calc((var(--toggle-h) - var(--toggle-knob)) / 2)}.skill-desc{color:var(--text-dim);margin-bottom:4px;font-size:11px;line-height:1.4}.skill-req{color:var(--accent2);font-size:10px}.custom-model-input{background:var(--surface);width:100%;color:var(--text);border:1px solid var(--accent);font-size:11px;font-family:var(--font-mono);border-radius:4px;margin-top:4px;padding:4px 6px}.custom-model-input:focus{border-color:var(--accent2);outline:none}.cwd-display{font-family:var(--font-mono);color:var(--text-dim);background:var(--bg);border:1px solid var(--border);text-overflow:ellipsis;white-space:nowrap;border-radius:6px;padding:6px 8px;font-size:11px;display:block;overflow:hidden}.settings-fieldset{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3);margin-bottom:var(--space-3)}.settings-fieldset legend{font-weight:600;font-size:var(--text-sm);padding:0 var(--space-2);color:var(--text)}.sidebar-left .section-title{color:var(--text-muted-60);font-family:var(--font-ui)}.sidebar-left .sidebar-hb-btn{border-radius:var(--radius-ctl);background-color:var(--surface-1);min-height:28px;font-family:var(--font-ui);border-color:#0000;padding-block:4px}.sidebar-left .sidebar-hb-btn:hover{background-color:var(--surface-2);box-shadow:none;border-color:#0000}.sidebar-left .sidebar-hb-btn:active{background-color:var(--surface-3)}.sidebar-left .sidebar-hb-btn:focus-visible{box-shadow:var(--focus-ring-shadow)}.modal-overlay{background:var(--modal-bg);-webkit-backdrop-filter:blur(10px)saturate(1.2);z-index:999;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.modal-overlay.open{animation:.2s ease-out overlayIn;display:flex}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}.modal-box{background:color-mix(in oklch, var(--surface) 85%, transparent);-webkit-backdrop-filter:blur(24px)saturate(1.5);border:1px solid color-mix(in oklch, var(--accent) 10%, var(--border));border-radius:var(--radius-xl);box-shadow:0 16px 48px #00000080, 0 0 0 1px #ffffff0a inset, 0 0 60px -20px color-mix(in oklch, var(--accent) 6%, transparent);width:500px;max-width:90vw;max-height:80vh;animation:modalBounce .35s var(--ease-spring);flex-direction:column;display:flex}@keyframes modalBounce{0%{opacity:0;transform:translateY(24px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 16px;font-size:13px;font-weight:600;display:flex}.modal-textarea{background:var(--bg);min-height:250px;color:var(--text);resize:none;border:none;flex:1;padding:12px 16px;font-family:inherit;font-size:12px}.modal-footer{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:10px 16px;display:flex}.modal-footer .btn-save{width:auto;padding:6px 20px}.label-with-help,.section-title-row,.sidebar-action-row{align-items:center;gap:6px;display:flex}.label-with-help,.section-title-row{justify-content:space-between}.sidebar-action-row .sidebar-hb-btn{flex:1}.help-trigger{--help-trigger-visual-size:20px;--help-trigger-hit-size:44px;width:var(--help-trigger-visual-size);height:var(--help-trigger-visual-size);min-width:var(--help-trigger-visual-size);border:1px solid var(--border);background:var(--surface);color:var(--text-dim);cursor:pointer;opacity:.78;border-radius:999px;justify-content:center;align-items:center;margin:0;padding:0;font-size:11px;line-height:1;transition:border-color .15s,color .15s,background .15s,opacity .15s;display:inline-flex}.help-trigger:hover{border-color:var(--accent);color:var(--accent);background:color-mix(in oklch, var(--accent) 8%, transparent);opacity:1}.help-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:2px;opacity:1}.help-dialog-box{background:var(--surface);-webkit-backdrop-filter:none;width:640px;max-width:calc(100vw - 32px);max-height:min(80vh,640px)}.help-dialog-body{padding:14px 16px;overflow-y:auto}.help-dialog-content{min-width:0}.help-dialog-layout{grid-template-columns:minmax(132px,.34fr) minmax(0,1fr);align-items:start;gap:16px;display:grid}.help-dialog-nav{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);flex-direction:column;gap:4px;padding:4px;display:flex}.help-dialog-nav-item{border-radius:var(--radius-sm);color:var(--text-dim);cursor:pointer;font:inherit;text-align:left;background:0 0;border:none;padding:8px 9px;font-size:12px;line-height:1.3}.help-dialog-nav-item:hover,.help-dialog-nav-item.active{background:color-mix(in oklch, var(--accent) 10%, transparent);color:var(--text)}.help-dialog-nav-item:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.help-dialog-section{margin-bottom:14px}.help-dialog-section:last-child{margin-bottom:0}.help-dialog-section h3{color:var(--text);margin:0 0 6px;font-size:12px;font-weight:600}.help-dialog-section p,.help-dialog-section li{color:var(--text-dim);font-size:12px;line-height:1.55}.help-effect-text,.help-example-list{margin:0}.help-dialog-list,.help-related-list,.help-example-list{margin:0;padding-left:18px}.help-howto-list{margin:0;padding-left:1.6em;list-style:decimal}.help-howto-list li{margin-bottom:3px;line-height:1.5}.help-subcmd-list{margin:0;padding:0}.help-subcmd-list dt{margin-top:8px}.help-subcmd-list dt:first-child{margin-top:0}.help-subcmd-list dt code{font-family:var(--mono);background:var(--code-bg,#0000000f);color:var(--text);border-radius:3px;padding:2px 6px;font-size:11px}.help-subcmd-list dd{color:var(--text-dim);margin:2px 0 0 14px;font-size:11px;line-height:1.5}.help-dialog-done{width:auto;padding:6px 18px}.help-doc-links-nav{flex-wrap:wrap;gap:8px;margin-bottom:4px;display:flex}.help-doc-link{background:var(--accent,#22d3ee);color:var(--surface,#1a1a2e);border-radius:6px;align-items:center;gap:4px;padding:6px 14px;font-size:.85rem;font-weight:600;text-decoration:none;transition:opacity .15s;display:inline-flex}.help-doc-link:hover{opacity:.85}.help-doc-link-icon{opacity:.7;font-size:.75rem}@media (width<=768px){.help-trigger{width:var(--help-trigger-visual-size);height:var(--help-trigger-visual-size);min-width:var(--help-trigger-visual-size);position:relative}.help-trigger:before{content:"";inset:calc((var(--help-trigger-visual-size) - var(--help-trigger-hit-size)) / 2);position:absolute}.help-dialog-box{max-width:calc(100vw - 24px);max-height:min(84vh,640px)}.help-dialog-layout{grid-template-columns:1fr;gap:12px}.help-dialog-nav{flex-direction:row;overflow-x:auto}.help-dialog-nav-item{white-space:nowrap}}.hb-job-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-bottom:8px;padding:10px}.hb-job-header{align-items:center;gap:6px;margin-bottom:6px;display:flex}.hb-job-header input[type=text]{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:4px;flex:1;padding:4px 6px;font-size:11px}.hb-job-header select,.hb-job-header input[type=number]{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:4px;padding:4px;font-size:11px}.hb-job-header input[type=number]{width:50px}.hb-job-schedule{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;display:flex}.hb-job-schedule select,.hb-job-schedule input[type=number],.hb-job-schedule input[type=text]{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:4px;padding:4px 6px;font-size:11px}.hb-job-schedule input[type=number]{width:72px}.hb-job-schedule input[type=text]{flex:120px}.hb-chip{color:var(--text-dim);font-size:11px}.hb-schedule-meta{margin:-2px 0 6px;font-size:11px}.hb-help{color:var(--text-dim)}.hb-error{color:var(--error)}.hb-toggle{width:var(--toggle-w);height:var(--toggle-h);border-radius:calc(var(--toggle-h) / 2);cursor:pointer;border:none;transition:background .2s;position:relative}.hb-toggle.on{background:var(--accent)}.hb-toggle.off{background:var(--toggle-off)}.hb-toggle:after{content:"";top:calc((var(--toggle-h) - var(--toggle-knob)) / 2);width:var(--toggle-knob);height:var(--toggle-knob);background:var(--toggle-on);border-radius:50%;transition:left .2s;position:absolute}.hb-toggle.on:after{left:calc(var(--toggle-w) - var(--toggle-knob) - 2px)}.hb-toggle.off:after{left:2px}.hb-del{color:var(--delete-color);cursor:pointer;background:0 0;border:none;font-size:14px}.hb-prompt{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text);resize:vertical;border-radius:4px;padding:4px 6px;font-size:11px}.hb-add{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;width:100%;margin-top:4px;padding:8px;font-size:12px}.hb-add:hover{opacity:.9}.mcp-modal-overlay{-webkit-backdrop-filter:blur(16px);background:#000000d9}.mcp-modal-box{background:var(--surface);-webkit-backdrop-filter:none;width:620px;max-height:85vh}.mcp-modal-box .modal-header{font-size:14px}.mcp-active-row{border-bottom:1px solid var(--border);align-items:flex-start;gap:8px;padding:10px 0;display:flex}.mcp-active-name{min-width:80px;font-weight:600}.mcp-active-detail{opacity:.6;word-break:break-all;flex:1;font-size:.9em}.mcp-active-tag{opacity:.5;white-space:nowrap;font-size:.85em}.mcp-active-remove{color:var(--color-error);white-space:nowrap;font-size:.85em}.mcp-help-inner{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);z-index:1001;max-width:460px;max-height:70vh;padding:16px;position:relative;overflow-y:auto;box-shadow:0 8px 32px #0006}.mcp-help-overlay{z-index:1000;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mcp-help-inner h4{margin:0 0 8px;font-size:13px}.mcp-help-inner p{opacity:.85;margin:4px 0;font-size:12px}.mcp-help-inner code{background:var(--bg);border-radius:3px;padding:1px 4px;font-size:11px}.mcp-help-inner pre{background:var(--bg);border-radius:6px;margin:6px 0;padding:8px;font-size:11px;overflow-x:auto}.table-wrapper{margin:var(--space-3) 0;border:1px solid var(--border);border-radius:var(--radius-md);overflow-x:auto}.table-wrapper table{border-collapse:collapse;width:100%;font-size:var(--text-sm);border:none;margin:0}.table-wrapper th,.table-wrapper td{padding:var(--space-2) var(--space-3);text-align:left;border-bottom:1px solid var(--border)}.table-wrapper th{background:color-mix(in oklch, var(--accent) 8%, var(--surface));white-space:nowrap;border-bottom:2px solid color-mix(in oklch, var(--accent) 25%, var(--border));font-weight:600}.table-wrapper tr:nth-child(2n) td{background:color-mix(in oklch, var(--text) 2%, transparent)}.msg-content table{border-collapse:collapse;width:auto;font-size:var(--text-sm);border:1px solid var(--border);margin:8px 0}.msg-content th,.msg-content td{border:1px solid var(--border);text-align:left;padding:5px 12px}.msg-content th{background:color-mix(in oklch, var(--accent) 8%, var(--surface));white-space:nowrap;border-bottom:2px solid var(--border);font-weight:600}.msg-content tr:nth-child(2n){background:color-mix(in oklch, var(--text) 2%, transparent)}.code-block{border:1px solid var(--border);border-radius:var(--radius-md);margin:var(--space-3) 0;overflow:hidden}.code-header{padding:var(--space-1) var(--space-3);background:color-mix(in oklch, var(--text) 8%, var(--surface));border-bottom:1px solid var(--border);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-dim);letter-spacing:.5px;justify-content:space-between;align-items:center;display:flex}.code-copy-btn{align-items:center;gap:var(--space-1);color:var(--text-dim);cursor:pointer;padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-family:var(--font-mono);transition:color var(--duration-fast), background var(--duration-fast);opacity:0;background:0 0;border:none;display:flex}.code-block:hover .code-copy-btn{opacity:1}.code-copy-btn:hover{color:var(--text);background:color-mix(in oklch, var(--text) 8%, transparent)}.code-copy-btn.copied{color:var(--success)}.code-block pre{padding:var(--space-3) var(--space-4);background:var(--code-bg);font-family:var(--font-mono);font-size:var(--text-sm);border-radius:0;margin:0;line-height:1.5;overflow-x:auto}.code-block pre code{font-family:var(--font-mono);background:0 0;border-radius:0;padding:0}.msg-content pre:not(.code-block pre){background:var(--code-bg);border-radius:var(--radius-md);font-size:var(--text-sm);margin:8px 0;padding:12px;line-height:1.45;overflow-x:auto}.msg-content pre:not(.code-block pre) code{font-family:var(--font-mono);background:0 0;border-radius:0;padding:0}.msg-content .code-block pre{padding:var(--space-3) var(--space-4);background:var(--code-bg);font-family:var(--font-mono);font-size:var(--text-sm);border-radius:0;margin:0;line-height:1.5;overflow-x:auto}.msg-content code:not(pre code){font-family:var(--font-mono);background:color-mix(in oklch, var(--accent) 6%, var(--surface));padding:1px var(--space-1);border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text);word-break:break-word;overflow-wrap:break-word;font-size:.875em}.msg-content blockquote{border-left:3px solid var(--accent);color:var(--text-dim);background:color-mix(in oklch, var(--text) 2%, transparent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin:8px 0;padding:4px 12px}.msg-content ul,.msg-content ol{margin:4px 0;padding-left:20px}.msg-content li{margin:2px 0}.msg-content a{color:var(--link-color);text-decoration:none}.msg-content a:hover{text-decoration:underline}.msg-content hr{border:none;border-top:1px solid var(--border);margin:12px 0}.msg-content h1{font-size:var(--text-xl);margin:var(--space-5) 0 var(--space-2);letter-spacing:-.02em;color:var(--text);font-weight:700;line-height:1.3}.msg-content h2{font-size:var(--text-lg);margin:var(--space-4) 0 var(--space-2);letter-spacing:-.01em;color:var(--text);font-weight:600}.msg-content h3{font-size:var(--text-md);margin:var(--space-3) 0 var(--space-1);color:var(--text);font-weight:600}.msg-content h4,.msg-content h5,.msg-content h6{font-size:var(--text-base);margin:var(--space-2) 0 var(--space-1);color:var(--text-dim);font-weight:600}.msg-content p{margin:.75em 0}.msg-content p:first-child{margin-top:0}.msg-content p:last-child{margin-bottom:0}.msg-content .katex-display{margin:var(--space-3) 0;padding:var(--space-2) 0;overflow:auto hidden}.msg-content .katex{font-size:1em}.msg-content .katex-display>.katex{font-size:1.1em}.msg-content .mermaid-container{text-align:center;background:color-mix(in oklch, var(--surface) 60%, transparent);border:1px solid var(--border);border-radius:var(--radius-lg);margin:8px 0;padding:16px 12px;position:relative;overflow-x:auto}.msg-content .mermaid-container svg{max-width:100%;height:auto}.msg-content .mermaid-container.mermaid-type-wide svg{min-width:600px;max-width:none}.msg-content .mermaid-container svg text{dominant-baseline:central}.mermaid-skeleton{color:var(--text-dim);justify-content:center;align-items:center;gap:12px;padding:24px 12px;display:flex}.mermaid-skeleton-spinner{border:2px solid color-mix(in oklch, var(--text) 15%, transparent);border-top-color:var(--accent);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite mermaid-spin}.mermaid-skeleton-text{font-size:13px;font-style:italic}@keyframes mermaid-spin{to{transform:rotate(360deg)}}.mermaid-zoom-btn{background:color-mix(in oklch, var(--text) 10%, transparent);border:1px solid color-mix(in oklch, var(--text) 15%, transparent);color:var(--text-dim);border-radius:var(--radius-md);cursor:pointer;width:28px;height:28px;transition:background var(--duration-fast), color var(--duration-fast);z-index:2;justify-content:center;align-items:center;font-size:14px;display:flex;position:absolute;top:6px;right:6px}.mermaid-zoom-btn:hover{background:color-mix(in oklch, var(--text) 20%, transparent);color:var(--text)}.mermaid-copy-btn,.mermaid-save-btn{background:color-mix(in oklch, var(--text) 10%, transparent);border:1px solid color-mix(in oklch, var(--text) 15%, transparent);color:var(--text-dim);border-radius:var(--radius-md);cursor:pointer;opacity:0;pointer-events:none;width:28px;height:28px;transition:opacity var(--duration-fast), background var(--duration-fast), color var(--duration-fast);z-index:2;justify-content:center;align-items:center;display:flex;position:absolute;top:6px}.mermaid-copy-btn{right:38px}.mermaid-save-btn{right:70px}.mermaid-container:hover .mermaid-zoom-btn,.mermaid-container:hover .mermaid-copy-btn,.mermaid-container:hover .mermaid-save-btn{opacity:1;pointer-events:auto}.mermaid-copy-btn:hover,.mermaid-save-btn:hover{background:color-mix(in oklch, var(--text) 20%, transparent);color:var(--text)}.mermaid-copy-btn.copied,.mermaid-save-btn.copied{color:var(--success)}.mermaid-overlay{z-index:9999;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mermaid-overlay-backdrop{backdrop-filter:blur(6px);background:#000000bf;position:absolute;inset:0}.mermaid-overlay-content{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);max-width:95vw;max-height:95vh;padding:20px;animation:.2s ease-out mermaid-pop;position:relative;overflow:auto;box-shadow:0 20px 60px #00000080}@keyframes mermaid-pop{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.mermaid-overlay-close{background:color-mix(in oklch, var(--text) 15%, transparent);color:var(--text);border-radius:var(--radius-lg);cursor:pointer;width:36px;height:36px;transition:background var(--duration-fast);z-index:10;pointer-events:auto;border:none;justify-content:center;align-items:center;font-size:18px;display:flex;position:absolute;top:8px;right:8px}.mermaid-overlay-close:hover{background:color-mix(in oklch, var(--text) 30%, transparent);color:var(--text)}.mermaid-overlay-svg{z-index:0;justify-content:center;align-items:center;min-width:min(400px,90vw);min-height:200px;display:flex;position:relative}.msg-content .code-block-wrapper{position:relative}.msg-content .code-lang-label{font-size:var(--text-xs);color:var(--code-label-color);background:color-mix(in oklch, var(--text) 5%, transparent);border-radius:0 var(--radius-md) 0 var(--radius-sm);font-family:var(--font-mono);cursor:pointer;user-select:none;transition:background var(--duration-fast), transform var(--duration-fast), color var(--duration-fast);padding:2px 8px;position:absolute;top:0;right:0}.msg-content .code-lang-label:hover{background:color-mix(in oklch, var(--text) 12%, transparent);transform:scale(1.05)}.msg-content .code-lang-label.copied{color:var(--success)}.mermaid-error{border:1px solid var(--error);border-radius:var(--radius-md);padding:var(--space-2);margin:var(--space-1) 0}.mermaid-error-title{color:var(--error);font-size:var(--text-xs);margin-bottom:var(--space-1)}.mermaid-error-msg{color:var(--warning);font-size:var(--text-xs);margin-bottom:var(--space-2)}.mermaid-error-code{font-size:var(--text-xs);margin:0;overflow-x:auto}.tool-group{margin:0 0 var(--space-3);font-size:var(--text-sm)}.tool-group-summary{align-items:center;gap:var(--space-2);border:1px dashed var(--border);border-radius:var(--radius-md);color:var(--text-dim);cursor:pointer;padding:var(--space-1) var(--space-3);font-family:var(--font-ui);font-size:var(--text-xs);transition:color var(--duration-fast), border-color var(--duration-fast);text-align:left;background:0 0;width:100%;display:flex}.tool-group-summary:hover{color:var(--text);border-color:color-mix(in oklch, var(--accent) 40%, var(--border))}.tool-group-summary-text{flex:1}.tool-group-duration{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-dim)}.tool-group-chevron{font-size:var(--text-xs);transition:transform var(--duration-fast);display:inline-block}.tool-group.expanded .tool-group-chevron{transform:rotate(180deg)}.tool-status-dot,.tool-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.tool-status-dot.running,.tool-dot.running{background:var(--warning);animation:1.5s ease-in-out infinite toolDotPulse}.tool-status-dot.done,.tool-dot.done{background:var(--success)}.tool-dot.pending{background:var(--text-dim);opacity:.5}.tool-status-dot.error,.tool-dot.error{background:var(--error)}@keyframes toolDotPulse{0%,to{opacity:1}50%{opacity:.4}}.tool-details{max-height:2000px;transition:max-height var(--duration-slow) ease-out, opacity var(--duration-base);padding-left:var(--space-4);border-left:1px solid var(--border);margin-left:var(--space-1);margin-top:var(--space-1);overflow:hidden}.tool-details.collapsed{opacity:0;pointer-events:none;max-height:0;margin-top:0}.tool-item{padding:var(--space-1) 0}.tool-item+.tool-item{border-top:1px solid color-mix(in oklch, var(--border) 50%, transparent)}.tool-item-header{align-items:center;gap:var(--space-2);font-size:var(--text-xs);display:flex}.tool-item-icon{flex-shrink:0}.tool-item-label{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.tool-item-toggle{align-items:start;gap:var(--space-2);width:100%;color:inherit;text-align:left;cursor:pointer;font-size:var(--text-xs);background:0 0;border:0;grid-template-columns:auto minmax(0,1fr) auto;padding:0;display:grid}.tool-item-main{gap:2px;min-width:0;display:grid}.tool-item-expandable .tool-item-label{white-space:normal;word-break:break-word}.tool-item-snippet{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-dim);word-break:break-word;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.tool-item-chevron{color:var(--text-dim);transition:transform var(--duration-fast);font-size:10px}.tool-item.expanded .tool-item-chevron{transform:rotate(90deg)}.tool-item-details{border-left:1px solid color-mix(in oklch, var(--border) 70%, transparent);background:color-mix(in oklch, var(--surface) 70%, transparent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin-left:22px;padding:8px 10px}.tool-item-details.collapsed{display:none}.tool-item-full{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-dim);white-space:pre-wrap;word-break:break-word;max-height:260px;margin:0;overflow-x:auto}.tool-item-time{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-dim);flex-shrink:0}.tool-activity-live{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);color:var(--text-dim);border:1px dashed var(--border);border-radius:var(--radius-md);margin-bottom:var(--space-2);animation:.2s ease-out msgEnterAgent;display:flex}.tool-activity-live .tool-status-dot{background:var(--warning);animation:1.5s ease-in-out infinite toolDotPulse}.tool-summary{font-size:var(--text-xs);color:var(--text-dim);margin-bottom:var(--space-2);border:1px dashed var(--border);border-radius:var(--radius-md);padding:var(--space-1) var(--space-3)}.tool-summary summary{cursor:pointer;user-select:none;align-items:center;gap:var(--space-1);display:flex}.tool-summary summary:before{content:"";background:var(--success);border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.tool-summary .tool-log{margin-top:var(--space-1);padding-top:var(--space-1);border-top:1px dashed var(--border);white-space:pre-wrap;line-height:1.6;font-family:var(--font-mono)}.vs-active .tool-details{transition:none}@media (prefers-reduced-motion:reduce){.tool-status-dot.running,.tool-dot.running,.tool-activity-live .tool-status-dot{animation:none}}.process-block{margin:0 0 var(--space-1);font-size:var(--text-sm);white-space:normal;line-height:1.3}.process-block+.msg-content .orchestrate-placeholder{display:none}.orchestrate-placeholder{font-size:var(--text-xs);opacity:.6}.process-summary{align-items:center;gap:var(--space-2);background:color-mix(in oklch, var(--surface) 50%, transparent);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;color:var(--text-dim);cursor:pointer;padding:var(--space-1) var(--space-3);font-size:var(--text-xs);transition:border-color var(--duration-fast);display:flex}.process-summary:hover{border-color:color-mix(in oklch, var(--accent) 40%, var(--border))}.process-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.process-dot.running{background:var(--warning);will-change:opacity;animation:1.5s ease-in-out infinite processDotPulse}.process-dot.done{background:var(--success)}@keyframes processDotPulse{0%,to{opacity:1}50%{opacity:.4}}.process-summary-text{text-align:left;flex:1}.process-duration{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-dim)}.process-chevron{color:var(--text-dim);transition:transform var(--duration-fast);font-size:10px}.process-details{padding-left:var(--space-3);border-left:1px solid var(--border);transition:grid-template-rows var(--duration-slow);grid-template-rows:1fr;margin-top:2px;margin-left:3px;display:grid}.process-block.collapsed .process-details{grid-template-rows:0fr}.process-details>.process-steps-inner{overflow:hidden}.process-step{font-size:var(--text-xs);gap:4px;padding:2px 0;display:grid}.process-step-toggle{align-items:start;gap:var(--space-2);width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:auto 16px auto minmax(0,1fr) auto auto;padding:0;display:grid}.process-step-dot{border-radius:50%;flex-shrink:0;width:5px;height:5px}.process-step-dot.running{background:var(--warning);animation:1.5s ease-in-out infinite processDotPulse}.process-step-dot.done{background:var(--success)}.process-step-dot.error{background:var(--error)}.process-step-icon{width:16px;height:16px;color:var(--text-dim);justify-content:center;align-items:center;display:flex}.process-step-icon svg{width:14px;height:14px}.process-step-badge{letter-spacing:.5px;text-transform:uppercase;font-size:9px;font-weight:700;font-family:var(--font-mono);border-radius:3px;padding:1px 5px}.process-step-badge.thinking{background:color-mix(in oklch, var(--accent) 15%, transparent);color:var(--accent)}.process-step-badge.tool{background:color-mix(in oklch, var(--warning) 15%, transparent);color:var(--warning)}.process-step-badge.search{background:color-mix(in oklch, var(--success) 15%, transparent);color:var(--success)}.process-step-badge.subagent{background:color-mix(in oklch, var(--accent) 12%, transparent);color:var(--accent)}.process-step-main{gap:2px;min-width:0;display:grid}.process-step-label{color:var(--text);word-break:break-word}.process-step-snippet{color:var(--text-dim);word-break:break-word;-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.process-step-chevron{color:var(--text-dim);transition:transform var(--duration-fast);place-self:start end}.process-step.expanded .process-step-chevron{transform:rotate(90deg)}.process-step-details{border-left:1px solid color-mix(in oklch, var(--border) 70%, transparent);background:color-mix(in oklch, var(--surface) 70%, transparent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin-left:22px;padding:8px 10px}.process-step-details.collapsed{display:none}.process-step-full{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-dim);white-space:pre-wrap;word-break:break-word;max-height:600px;margin:0;overflow-x:auto}.process-step-label{word-break:break-word;overflow-wrap:break-word;white-space:normal}.vs-active .process-details{transition:none}@media (prefers-reduced-motion:reduce){.process-dot.running,.process-step-dot.running{animation:none}}details.tool-block summary{cursor:pointer;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);font-size:var(--text-sm);color:var(--text-dim);border-radius:var(--radius-sm);transition:background var(--duration-fast);list-style:none;display:flex}details.tool-block summary:hover{background:color-mix(in oklch, var(--accent) 8%, transparent)}details.tool-block summary:before{content:"";width:.5em;height:.5em;transition:transform var(--duration-fast);border-bottom:2px solid;border-right:2px solid;flex-shrink:0;display:inline-block;transform:rotate(-45deg)}details.tool-block[open] summary:before{transform:rotate(45deg)}details.tool-block .tool-content{content-visibility:auto;contain-intrinsic-size:auto 200px}.trace-drawer-overlay{z-index:120;background:oklch(0% 0 0/.42);display:none;position:fixed;inset:0}.trace-drawer-overlay.open{display:block}.trace-drawer{background:var(--bg);border-left:1px solid var(--border);grid-template-rows:auto auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);width:min(980px,94vw);height:100dvh;display:grid;position:absolute;top:0;right:0;box-shadow:-20px 0 60px oklch(0% 0 0/.28)}.trace-drawer-header,.trace-drawer-footer{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.trace-drawer-footer{border-top:1px solid var(--border);border-bottom:0;flex-wrap:wrap}.trace-page-status{overflow-wrap:anywhere;min-width:0}.trace-drawer-kicker{color:var(--text);font:600 var(--text-xs)/1 var(--font-mono);margin:0 0 2px}.trace-drawer h2{font-size:var(--text-lg);margin:0}.trace-drawer-close,.trace-page-button,.process-step-trace{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer}.trace-drawer-close{border-radius:6px;width:34px;height:34px;font-size:22px}.trace-drawer-meta{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:8px;padding:10px 16px;display:flex}.trace-drawer-meta span,.process-step-trace{color:var(--text-muted);font:600 var(--text-xs)/1.2 var(--font-mono);white-space:nowrap;border-radius:6px;align-self:start;padding:4px 7px}.trace-drawer-meta span{white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%}.trace-drawer-meta b{color:var(--text);margin-right:6px}.trace-drawer-body{grid-template-columns:minmax(260px,.42fr) minmax(0,.58fr);min-height:0;display:grid}.trace-event-list{border-right:1px solid var(--border);overflow:auto}.trace-event-row{border:0;border-bottom:1px solid var(--border);width:100%;color:var(--text);text-align:left;cursor:pointer;background:0 0;grid-template-columns:52px 74px 110px minmax(0,1fr);gap:8px;padding:9px 10px;display:grid}.trace-event-row:hover,.process-step-trace:hover{background:var(--surface-hover)}.trace-event-row.selected,.trace-event-row[aria-current=true]{background:color-mix(in oklch, var(--accent) 14%, transparent);box-shadow:inset 3px 0 0 var(--accent)}.trace-event-seq,.trace-event-source,.trace-event-type{color:var(--text);font:600 var(--text-xs)/1.4 var(--font-mono)}.trace-event-preview{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:var(--text-sm);overflow:hidden}.trace-event-raw{min-width:0;color:var(--text);background:var(--code-bg);font:500 var(--text-sm)/1.55 var(--font-mono);white-space:pre-wrap;word-break:break-word;margin:0;padding:14px;overflow:auto}.trace-page-button{font:600 var(--text-sm)/1 var(--font-mono);border-radius:6px;padding:7px 10px}.trace-page-button:disabled,.trace-page-button[aria-disabled=true]{opacity:.4;cursor:default}.trace-page-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (width<=760px){.trace-drawer{width:100vw}.trace-drawer-body{grid-template-rows:minmax(0,.42fr) minmax(0,.58fr);grid-template-columns:1fr}.trace-event-list{border-right:0;border-bottom:1px solid var(--border)}.trace-event-row{grid-template-columns:46px 64px minmax(0,1fr)}.trace-event-type{display:none}}@media (pointer:coarse){.trace-drawer-close,.trace-page-button{min-width:44px;min-height:44px}}.diagram-container{border-radius:var(--radius-md);margin:1rem 0;position:relative;overflow:hidden}.diagram-svg{background:var(--surface);border:1px solid var(--border);padding:var(--space-4);max-width:calc(680px + 2 * var(--space-4))}.diagram-svg svg{width:100%;height:auto;max-height:80vh;display:block}.diagram-widget{border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.diagram-widget iframe{border:none;width:100%;min-height:60px;display:block}.diagram-loading{background:var(--surface);border:1px solid var(--border);justify-content:center;align-items:center;min-height:120px;display:flex}.diagram-spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:24px;height:24px;animation:.8s linear infinite diagram-spin}@keyframes diagram-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.diagram-spinner{animation:none}}.diagram-error{padding:var(--space-4);color:var(--text-dim);text-align:center;font-size:14px}.diagram-widget-pending{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);justify-content:center;align-items:center;min-height:120px;display:flex}.diagram-zoom-btn{top:var(--space-2);right:var(--space-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);width:32px;height:32px;color:var(--text-dim);cursor:pointer;opacity:0;pointer-events:none;transition:opacity var(--duration-fast);z-index:2;justify-content:center;align-items:center;font-size:16px;display:flex;position:absolute}.diagram-container:hover .diagram-zoom-btn,.diagram-container:focus-within .diagram-zoom-btn{opacity:1;pointer-events:auto}.diagram-zoom-btn:hover{background:var(--bg);color:var(--text)}.diagram-copy-btn,.diagram-save-btn{top:var(--space-2);right:var(--space-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);width:32px;height:32px;color:var(--text-dim);cursor:pointer;opacity:0;pointer-events:none;transition:opacity var(--duration-fast), color var(--duration-fast);z-index:2;justify-content:center;align-items:center;display:flex;position:absolute}.diagram-widget .diagram-zoom-btn{right:var(--space-2)}.diagram-widget .diagram-copy-btn{right:calc(var(--space-2) + 36px)}.diagram-widget .diagram-save-btn{right:calc(var(--space-2) + 72px)}.diagram-svg .diagram-copy-btn{right:calc(var(--space-2) + 36px)}.diagram-svg .diagram-save-btn{right:calc(var(--space-2) + 72px)}.diagram-container:hover .diagram-copy-btn,.diagram-container:hover .diagram-save-btn,.diagram-container:focus-within .diagram-copy-btn,.diagram-container:focus-within .diagram-save-btn{opacity:1;pointer-events:auto}.diagram-copy-btn:hover,.diagram-save-btn:hover{background:var(--bg);color:var(--text)}.diagram-copy-btn.copied,.diagram-save-btn.copied{color:var(--success)}.diagram-overlay{z-index:9999;backdrop-filter:blur(4px);background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.diagram-overlay-content{background:var(--surface);border-radius:var(--radius-lg);min-width:min(680px,90vw);max-width:95vw;max-height:90vh;padding:var(--space-6);overflow:auto;box-shadow:0 20px 60px #00000080}.diagram-overlay-content svg{width:100%;max-width:1200px;height:auto;display:block}.diagram-widget-overlay .diagram-overlay-content{width:min(1100px,94vw)}.diagram-widget-overlay.maximized .diagram-overlay-content{width:min(1500px,98vw);height:min(1000px,94vh)}.diagram-widget-expanded{margin:0}.diagram-widget-expanded iframe{min-height:420px}.diagram-widget-overlay.maximized .diagram-widget-expanded,.diagram-widget-overlay.maximized .diagram-widget-expanded iframe{height:100%}.diagram-size-toggle-btn{top:var(--space-4);right:calc(var(--space-4) + 48px);background:var(--surface);border:1px solid var(--border);width:40px;height:40px;color:var(--text);cursor:pointer;z-index:10000;border-radius:50%;justify-content:center;align-items:center;font-size:18px;display:flex;position:absolute}.diagram-size-toggle-btn:hover{background:var(--bg)}.diagram-overlay-close{top:var(--space-4);right:var(--space-4);background:var(--surface);border:1px solid var(--border);width:40px;height:40px;color:var(--text);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;font-size:20px;display:flex;position:absolute}.diagram-overlay-close:hover{background:var(--bg)}.c-blue-fill{fill:#1e3a5f}.c-blue-stroke{stroke:#3b82f6;fill:none}.c-blue-text{fill:#93c5fd}.c-blue-bg{fill:#1e3a5f;stroke:#3b82f6;stroke-width:.5px}.c-purple-fill{fill:#3b1f5e}.c-purple-stroke{stroke:#8b5cf6;fill:none}.c-purple-text{fill:#c4b5fd}.c-purple-bg{fill:#3b1f5e;stroke:#8b5cf6;stroke-width:.5px}.c-green-fill{fill:#14532d}.c-green-stroke{stroke:#22c55e;fill:none}.c-green-text{fill:#86efac}.c-green-bg{fill:#14532d;stroke:#22c55e;stroke-width:.5px}.c-amber-fill{fill:#451a03}.c-amber-stroke{stroke:#f59e0b;fill:none}.c-amber-text{fill:#fcd34d}.c-amber-bg{fill:#451a03;stroke:#f59e0b;stroke-width:.5px}.c-red-fill{fill:#450a0a}.c-red-stroke{stroke:#ef4444;fill:none}.c-red-text{fill:#fca5a5}.c-red-bg{fill:#450a0a;stroke:#ef4444;stroke-width:.5px}.c-cyan-fill{fill:#083344}.c-cyan-stroke{stroke:#06b6d4;fill:none}.c-cyan-text{fill:#67e8f9}.c-cyan-bg{fill:#083344;stroke:#06b6d4;stroke-width:.5px}.c-pink-fill{fill:#500724}.c-pink-stroke{stroke:#ec4899;fill:none}.c-pink-text{fill:#f9a8d4}.c-pink-bg{fill:#500724;stroke:#ec4899;stroke-width:.5px}.c-slate-fill{fill:#1e293b}.c-slate-stroke{stroke:#64748b;fill:none}.c-slate-text{fill:#94a3b8}.c-slate-bg{fill:#1e293b;stroke:#64748b;stroke-width:.5px}.c-orange-fill{fill:#431407}.c-orange-stroke{stroke:#f97316;fill:none}.c-orange-text{fill:#fdba74}.c-orange-bg{fill:#431407;stroke:#f97316;stroke-width:.5px}:where(.diagram-svg,.diagram-svg-overlay) .node{rx:8;ry:8}:where(.diagram-svg,.diagram-svg-overlay) .connector{stroke:var(--text-dim);stroke-width:.5px;fill:none}:where(.diagram-svg,.diagram-svg-overlay) .label{text-anchor:middle;dominant-baseline:central;font-size:14px}:where(.diagram-svg,.diagram-svg-overlay) .label-start{text-anchor:start;dominant-baseline:central;font-size:14px}:where(.diagram-svg,.diagram-svg-overlay) .diagram-title{text-anchor:middle;font-size:16px;font-weight:600}[data-theme=light] .c-blue-fill{fill:#dbeafe}[data-theme=light] .c-blue-stroke{stroke:#2563eb}[data-theme=light] .c-blue-text{fill:#1e40af}[data-theme=light] .c-blue-bg{fill:#dbeafe;stroke:#2563eb}[data-theme=light] .c-purple-fill{fill:#ede9fe}[data-theme=light] .c-purple-stroke{stroke:#7c3aed}[data-theme=light] .c-purple-text{fill:#5b21b6}[data-theme=light] .c-purple-bg{fill:#ede9fe;stroke:#7c3aed}[data-theme=light] .c-green-fill{fill:#dcfce7}[data-theme=light] .c-green-stroke{stroke:#16a34a}[data-theme=light] .c-green-text{fill:#15803d}[data-theme=light] .c-green-bg{fill:#dcfce7;stroke:#16a34a}[data-theme=light] .c-amber-fill{fill:#fef3c7}[data-theme=light] .c-amber-stroke{stroke:#d97706}[data-theme=light] .c-amber-text{fill:#92400e}[data-theme=light] .c-amber-bg{fill:#fef3c7;stroke:#d97706}[data-theme=light] .c-red-fill{fill:#fee2e2}[data-theme=light] .c-red-stroke{stroke:#dc2626}[data-theme=light] .c-red-text{fill:#991b1b}[data-theme=light] .c-red-bg{fill:#fee2e2;stroke:#dc2626}[data-theme=light] .c-cyan-fill{fill:#cffafe}[data-theme=light] .c-cyan-stroke{stroke:#0891b2}[data-theme=light] .c-cyan-text{fill:#155e75}[data-theme=light] .c-cyan-bg{fill:#cffafe;stroke:#0891b2}[data-theme=light] .c-pink-fill{fill:#fce7f3}[data-theme=light] .c-pink-stroke{stroke:#db2777}[data-theme=light] .c-pink-text{fill:#9d174d}[data-theme=light] .c-pink-bg{fill:#fce7f3;stroke:#db2777}[data-theme=light] .c-slate-fill{fill:#f1f5f9}[data-theme=light] .c-slate-stroke{stroke:#475569}[data-theme=light] .c-slate-text{fill:#334155}[data-theme=light] .c-slate-bg{fill:#f1f5f9;stroke:#475569}[data-theme=light] .c-orange-fill{fill:#ffedd5}[data-theme=light] .c-orange-stroke{stroke:#ea580c}[data-theme=light] .c-orange-text{fill:#9a3412}[data-theme=light] .c-orange-bg{fill:#ffedd5;stroke:#ea580c}[data-theme=light] :where(.diagram-svg,.diagram-svg-overlay) .connector{stroke:#64748b}body.session-hub-mode{height:auto;min-height:100vh;display:block}body.session-hub-mode>:not(#sessionHub):not(script){display:none!important}.session-hub{background:var(--bg);min-height:100vh;color:var(--text);padding:var(--space-8) var(--space-4)}.session-hub-shell{width:min(960px,100%);margin:0 auto}.session-hub-header{justify-content:space-between;align-items:end;gap:var(--space-6);padding-bottom:var(--space-5);border-bottom:1px solid var(--border);display:flex}.session-hub-header h1{font:600 var(--text-lg)/1.2 var(--font-display)}.session-hub-header>p{max-width:44ch;color:var(--text-dim);font-size:var(--text-sm);text-wrap:balance}.session-hub-kicker{margin-bottom:var(--space-1);color:var(--accent);font:600 var(--text-xs)/1 var(--font-display);letter-spacing:.08em}.session-grid{gap:var(--space-2);margin-top:var(--space-4);display:grid}.session-card-skeleton{gap:var(--space-2);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);display:grid}.session-card-skeleton span{border-radius:var(--radius-sm);background:var(--border);width:30%;height:10px;display:block}.session-card-skeleton span:nth-child(2){width:55%;height:16px}.session-card-skeleton span:nth-child(3){width:42%}.session-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid;position:relative}.session-card.is-active{border-inline-start:3px solid var(--accent)}.session-card-link{min-width:0;padding:var(--space-3) var(--space-4);color:inherit;text-decoration:none}.session-card-link:focus-visible,.session-delete:focus-visible,.session-hub-empty a:focus-visible,.session-readonly-notice button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.session-card-heading,.session-card-meta,.session-card-meta>div{align-items:center;display:flex}.session-card-heading{gap:var(--space-2);margin-bottom:var(--space-1)}.session-seq{color:var(--accent);font:600 var(--text-xs)/1 var(--font-mono)}.session-source{padding:2px var(--space-2);border:1px solid var(--border);border-radius:var(--radius-full);color:var(--text-dim);font-size:var(--text-xs)}.session-card h2{font:500 var(--text-base)/1.3 var(--font-ui);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.session-card-meta{gap:var(--space-2) var(--space-5);margin-top:var(--space-2);color:var(--text-dim);font-size:var(--text-xs);flex-wrap:wrap}.session-card-meta>div{gap:var(--space-1)}.session-card-meta dt:after{content:":"}.session-card-meta dd{color:var(--text)}.session-delete{min-width:44px;min-height:44px;padding:var(--space-2) var(--space-3);border:1px solid color-mix(in oklch, var(--delete-color), transparent 55%);border-radius:var(--radius-sm);color:var(--delete-color);font:500 var(--text-xs)/1 var(--font-ui);cursor:pointer;background:0 0;margin-inline-end:var(--space-3)}.session-delete:disabled{opacity:.45;cursor:not-allowed}.session-hub-empty{margin-top:var(--space-4);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.session-hub-empty h2{font-size:var(--text-base)}.session-hub-empty p{margin-top:var(--space-1);color:var(--text-dim);font-size:var(--text-sm)}.session-hub-empty a{margin-top:var(--space-3);color:var(--accent);font-size:var(--text-sm);display:inline-block}.session-hub-error{min-height:1.4em;margin-top:var(--space-3);color:var(--error);font-size:var(--text-sm)}.session-view-label{color:var(--text-dim);font-size:var(--text-xs);margin-inline-start:var(--space-2)}.session-readonly-notice{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-top:1px solid var(--warning);background:var(--warning-dim);color:var(--text);font-size:var(--text-sm);display:flex}.session-readonly-notice button{min-height:36px;padding:var(--space-2) var(--space-3);border:1px solid var(--warning);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;flex:none}.elicitation-readonly-notice{margin-top:var(--space-2);color:var(--error);font-size:var(--text-sm)}@media (width<=640px){.session-hub{padding:var(--space-5) var(--space-3)}.session-hub-header{display:block}.session-hub-header>p{margin-top:var(--space-2)}.session-readonly-notice{flex-direction:column;align-items:stretch}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e,t}from"./bgtask-badge-DfiHuzxT.js";export{t as applyBgtaskUpdate,e as refreshBgtaskBadge};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./settings-client-CmwRsVd1.js";function t(t){if(t instanceof e){let e=t.detail.trim(),n=`${t.method} ${t.path} → ${t.status}`;return t.status===401||t.status===403?`${n}: instance requires auth.`:t.status>=500||t.status===0?`${n}: instance unreachable.`:e?`${n}: ${e}`:n}return t instanceof Error?t.message||`Unknown error`:String(t)}export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-C_pPTFsM.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";var r=n();function i({id:e,label:t,value:n,onChange:i,placeholder:a,disabled:o,error:s}){return(0,r.jsxs)(`label`,{className:`settings-field settings-field-text`,htmlFor:e,children:[(0,r.jsx)(`span`,{className:`settings-field-label`,children:t}),(0,r.jsx)(`input`,{id:e,type:`text`,value:n,placeholder:a,disabled:o,onChange:e=>i(e.target.value),"aria-invalid":!!s}),s?(0,r.jsx)(`span`,{className:`settings-field-error`,children:s}):null]})}var a=e(t(),1);function o({id:e,label:t,value:n,onChange:i,placeholder:o,disabled:s,error:c,masked:l=!0}){let[u,d]=(0,a.useState)(!l);return(0,r.jsxs)(`label`,{className:`settings-field settings-field-secret`,htmlFor:e,children:[(0,r.jsx)(`span`,{className:`settings-field-label`,children:t}),(0,r.jsxs)(`span`,{className:`settings-field-row`,children:[(0,r.jsx)(`input`,{id:e,type:u?`text`:`password`,value:n,placeholder:o,disabled:s,onChange:e=>i(e.target.value),"aria-invalid":!!c,autoComplete:`off`,spellCheck:!1}),(0,r.jsx)(`button`,{type:`button`,className:`settings-field-reveal`,onClick:()=>d(e=>!e),disabled:s,"aria-pressed":u,children:u?`Hide`:`Show`})]}),c?(0,r.jsx)(`span`,{className:`settings-field-error`,children:c}):null]})}function s({id:e,label:t,value:n,onChange:i,disabled:a,description:o}){return(0,r.jsxs)(`label`,{className:`settings-field settings-field-toggle`,htmlFor:e,children:[(0,r.jsx)(`span`,{className:`settings-field-label`,children:t}),(0,r.jsx)(`input`,{id:e,type:`checkbox`,checked:n,disabled:a,onChange:e=>i(e.target.checked)}),o?(0,r.jsx)(`span`,{className:`settings-field-description`,children:o}):null]})}function c({id:e,label:t,value:n,options:i,onChange:o,disabled:s,error:c,collapsedAfter:l,missingValueLabel:u}){let[d,f]=(0,a.useState)(!1),[p,m]=(0,a.useState)(0),[h,g]=(0,a.useState)(!1),_=(0,a.useRef)(null),v=l!=null&&l<i.length&&i.findIndex(e=>e.value===n)>=l,y=(0,a.useMemo)(()=>l==null||h||v?i:i.slice(0,l),[i,l,h,v]),b=l!=null&&l<i.length,x=h||v,S=y.findIndex(e=>e.value===n),C=(0,a.useMemo)(()=>i.find(e=>e.value===n)||(u?{value:n,label:u}:i[0]),[i,n,u]),w=`${e}-label`,T=`${e}-listbox`;(0,a.useEffect)(()=>{let e=e=>{_.current?.contains(e.target)||f(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]),(0,a.useEffect)(()=>{d||g(!1)},[d]),(0,a.useEffect)(()=>{S>=0&&m(S)},[S]);let E=e=>{o(e.value),f(!1)},D=e=>{y.length!==0&&m(t=>(t+e+y.length)%y.length)};return(0,r.jsxs)(`div`,{className:`settings-field settings-field-select`,ref:_,onKeyDown:e=>{e.key===`Escape`&&d&&(e.preventDefault(),e.stopPropagation(),f(!1),_.current?.querySelector(`[role="combobox"]`)?.focus())},children:[(0,r.jsx)(`span`,{className:`settings-field-label`,id:w,children:t}),(0,r.jsxs)(`button`,{id:e,type:`button`,className:`settings-select-trigger${d?` is-open`:``}`,disabled:s||i.length===0,role:`combobox`,"aria-label":`${t}: ${C?.label||`(none)`}`,"aria-haspopup":`listbox`,"aria-expanded":d,"aria-controls":T,"aria-invalid":!!c,onClick:()=>{m(S>=0?S:0),f(e=>!e)},onKeyDown:e=>{if(e.key===`ArrowDown`){e.preventDefault(),d||f(!0),D(1);return}if(e.key===`ArrowUp`){e.preventDefault(),d||f(!0),D(-1);return}if(e.key===`Home`){e.preventDefault(),m(0);return}if(e.key===`End`){e.preventDefault(),m(Math.max(0,y.length-1));return}if(e.key===`Enter`||e.key===` `){e.preventDefault(),d&&y[p]?E(y[p]):f(!0);return}},children:[(0,r.jsx)(`span`,{className:`settings-select-value`,children:C?.label||`(none)`}),(0,r.jsx)(`span`,{className:`settings-select-caret`,"aria-hidden":`true`})]}),d?(0,r.jsxs)(`div`,{className:`settings-select-menu`,id:T,role:`listbox`,"aria-labelledby":w,children:[y.map((e,t)=>(0,r.jsxs)(a.Fragment,{children:[b&&t===l?(0,r.jsx)(`hr`,{className:`settings-select-divider`}):null,(0,r.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":e.value===n,className:`settings-select-option${t===p?` is-active`:``}${e.value===n?` is-selected`:``}`,onMouseEnter:()=>m(t),onClick:()=>E(e),children:[(0,r.jsx)(`span`,{children:e.label}),e.value===n?(0,r.jsx)(`span`,{"aria-hidden":`true`,children:`✓`}):null]})]},e.value)),b&&!x?(0,r.jsx)(`button`,{type:`button`,className:`settings-select-more`,onClick:e=>{e.stopPropagation(),_.current?.querySelector(`[role="combobox"]`)?.focus(),g(!0)},children:`더 보기 ▸`}):null]}):null,c?(0,r.jsx)(`span`,{className:`settings-field-error`,children:c}):null]})}function l({id:e,label:t,value:n,onChange:i,min:a,max:o,step:s,disabled:c,error:l}){return(0,r.jsxs)(`label`,{className:`settings-field settings-field-number`,htmlFor:e,children:[(0,r.jsx)(`span`,{className:`settings-field-label`,children:t}),(0,r.jsx)(`input`,{id:e,type:`number`,value:Number.isFinite(n)?n:0,min:a,max:o,step:s,disabled:c,"aria-invalid":!!l,onChange:e=>{let t=Number(e.target.value);i(Number.isFinite(t)?t:0)}}),l?(0,r.jsx)(`span`,{className:`settings-field-error`,children:l}):null]})}function u({id:e,label:t,value:n,onChange:i,placeholder:o,disabled:s,error:c}){let[l,u]=(0,a.useState)(``),d=()=>{let e=l.trim();if(e){if(n.includes(e)){u(``);return}i([...n,e]),u(``)}},f=e=>{i(n.filter(t=>t!==e))};return(0,r.jsxs)(`div`,{className:`settings-field settings-field-chiplist`,"aria-invalid":!!c,children:[(0,r.jsx)(`label`,{className:`settings-field-label`,htmlFor:e,children:t}),(0,r.jsxs)(`div`,{className:`settings-chiplist-row`,children:[n.map(e=>(0,r.jsxs)(`span`,{className:`settings-chip`,children:[e,(0,r.jsx)(`button`,{type:`button`,className:`settings-chip-remove`,disabled:s,onClick:()=>f(e),"aria-label":`Remove ${e}`,children:`×`})]},e)),(0,r.jsx)(`input`,{id:e,type:`text`,value:l,placeholder:o,disabled:s,onChange:e=>u(e.target.value),onKeyDown:e=>{if(e.key===`Enter`||e.key===`,`)e.preventDefault(),d();else if(e.key===`Backspace`&&l===``&&n.length>0){let e=n[n.length-1];e!==void 0&&f(e)}},onBlur:d})]}),c?(0,r.jsx)(`span`,{className:`settings-field-error`,children:c}):null]})}function d({id:e,label:t,value:n,onChange:i,disabled:o,rows:s=8}){let[c,l]=(0,a.useState)(()=>f(n)),[u,d]=(0,a.useState)(null);(0,a.useEffect)(()=>{l(f(n)),d(null)},[n]);let p=e=>{if(l(e),e.trim()===``){d(null),i(null,!0);return}try{let t=JSON.parse(e);d(null),i(t,!0)}catch(t){let n=t instanceof Error?t.message:`Invalid JSON`;d(n),i(e,!1)}};return(0,r.jsxs)(`label`,{className:`settings-field settings-field-json`,htmlFor:e,children:[(0,r.jsx)(`span`,{className:`settings-field-label`,children:t}),(0,r.jsx)(`textarea`,{id:e,value:c,rows:s,disabled:o,spellCheck:!1,"aria-invalid":!!u,onChange:e=>p(e.target.value)}),u?(0,r.jsx)(`span`,{className:`settings-field-error`,children:u}):null]})}function f(e){if(e==null)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return``}}export{s as a,c as i,u as n,o,l as r,i as s,d as t};
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-render-DSSkXCir.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{a as e,t}from"./api-CUtiCd2-.js";import{n}from"./bounded-api-DdpT93LB.js";import{t as r}from"./preload-helper-CfbQpVni.js";import{O as i,T as a,g as o}from"./render-Dp07lZAJ.js";import{t as s}from"./icons-CVkqyECl.js";import{t as c}from"./copy-text-DjgetgoZ.js";import{a as l,i as u,n as ee,t as te}from"./esm-Q6VOkDbn.js";import{n as d}from"./presentation-DWHWElFr.js";function f(){let e=globalThis.crypto;if(typeof e?.randomUUID==`function`)return e.randomUUID();if(typeof e?.getRandomValues!=`function`)return`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e===`x`?t:t&3|8).toString(16)});let t=new Uint8Array(16);e.getRandomValues(t),t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``);return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}var ne=/^(?:(?:\/[^\s]+\/)?(?:bash|zsh|sh))\s+-lc\s+([\s\S]+)$/;function re(e){let t=e.trim();if(t.length<2)return t;let n=t[0];if(n!==`'`&&n!==`"`)return t;let r=t[t.length-1]===n?t.slice(1,-1):t.slice(1);return n===`'`?r.replace(/'\\''/g,`'`):r.replace(/\\"/g,`"`).replace(/\\`/g,"`").replace(/\\\$/g,`$`).replace(/\\\\/g,`\\`)}function ie(e){let t=String(e||``).trim();if(!t)return``;let n=t.match(ne);return n&&re(n[1]||``)||t}function p(e){return ie(e)}function m(e){let t=String(e||``);if(!t.trim())return``;let n=t.split(/\r?\n/),r=n[0]||``,i=r.match(/^(\s*\$\s*)([\s\S]+)$/);if(i){let e=p(i[2]||``);return n[0]=`${i[1]}${e}`,n.join(`
|
|
3
|
-
`)}let a=p(r);return a===r.trim()?t:(n[0]=a,n.join(`
|
|
4
|
-
`))}var h=null,g=null,_=new WeakMap,v=160,ae=3e3,oe=1e3,se=80,ce=24,le=24,ue=0,de=null,y=new Map,b=new Map,fe=0,pe=0,me=0,he=0;function ge(e){return e.startedAt??e.steps[0]?.startTime??null}function _e(){let e=g;if(!e||e.collapsed||e.steps.length===0){x();return}let t=e._durationEl??=e.element.querySelector(`.process-duration`);if(!t)return;let n=ge(e);if(n===null)return;let r=Math.round((Date.now()-n)/1e3);t.textContent=r>0?`${r}s`:``}function ve(e){h&&g===e||(x(),g=e,h=setInterval(_e,3e3))}function x(){h&&=(clearInterval(h),null),g=null}function ye(e){let t={};for(let n of e){let e=n.type===`thinking`?`${s.thinking} Thinking`:n.type===`search`?`${s.search} Search`:n.type===`subagent`?`${s.robot} Subagent`:`${s.tool} Tool`;t[e]=(t[e]||0)+1}return Object.entries(t).map(([e,t])=>t>1?`${e}×${t}`:e).join(` + `)}function S(e,t=120){let n=e.replace(/\s+/g,` `).trim();return n?n.length>t?`${n.slice(0,t-1)}…`:n:``}function be(e){if(e.length<=ae)return{detail:e,truncated:!1};let t=`\n[detail truncated: kept ${ae} of ${e.length} chars]`;return{detail:`${e.slice(0,Math.max(0,ae-t.length))}${t}`,truncated:!0}}function C(e){return y.get(e)?.detail||``}function xe(e){return e.type===`tool`?{...e,label:p(e.label||``),detail:m(e.detail||``),detailPreview:e.detailPreview?m(e.detailPreview):e.detailPreview}:e}function w(e){let t=xe(e),n=m(C(t.id))||t.detail||``,r=be(n),i=t.detailPreview||S(n,v);return n&&y.set(t.id,{detail:r.detail,originalLength:n.length,truncated:r.truncated}),b.set(t.id,{id:t.id,type:t.type,icon:t.icon,rawIcon:t.rawIcon,label:t.label,isEmployee:t.isEmployee,stepRef:t.stepRef,traceRunId:t.traceRunId,traceSeq:t.traceSeq,detailAvailable:t.detailAvailable,detailBytes:t.detailBytes,rawRetentionStatus:t.rawRetentionStatus,status:t.status,startTime:t.startTime,preview:i,detailLength:n.length,detailTruncated:r.truncated}),{...t,detail:i,detailPreview:i,detailLength:n.length,detailTruncated:r.truncated}}function Se(e,t){let n=t||``,r=C(e),i=r&&n?`${r}\n${n}`:n||r,a=be(i);i&&y.set(e,{detail:a.detail,originalLength:i.length,truncated:a.truncated});let o=b.get(e);return o&&(o.preview=S(i,v),o.detailLength=i.length,o.detailTruncated=a.truncated),o?.preview||S(i,v)}function Ce(e,t){let n=t||C(e),r=be(n);n&&y.set(e,{detail:r.detail,originalLength:n.length,truncated:r.truncated});let i=S(n,v),a=b.get(e);return a&&(a.preview=i,a.detailLength=n.length,a.detailTruncated=r.truncated),i}function we(e){let t=w(e);b.set(e.id,{id:t.id,type:t.type,icon:t.icon,rawIcon:t.rawIcon,label:t.label,isEmployee:t.isEmployee,stepRef:t.stepRef,traceRunId:t.traceRunId,traceSeq:t.traceSeq,detailAvailable:t.detailAvailable,detailBytes:t.detailBytes,rawRetentionStatus:t.rawRetentionStatus,status:t.status,startTime:t.startTime,preview:t.detailPreview||t.detail||``,detailLength:t.detailLength||0,detailTruncated:!!t.detailTruncated})}function Te(e){e.element.dataset.processStepIds=e.steps.map(e=>e.id).join(` `)}function Ee(e,t=!1){let n=new Set;return t||e.length<=se?(e.forEach((e,t)=>n.add(t)),n):(e.forEach((t,r)=>{(r<ce||r>=e.length-le||t.status===`running`||t.status===`error`)&&n.add(r)}),n)}function De(e){let t=e||s.tool;return t.trim().startsWith(`<svg`)?t:i(t)}function T(e){let t=`process-step-dot ${e.status}`,n=`process-step-badge ${e.type}`,r=e.type.toUpperCase(),a=i(e.label||e.icon||``),o=e.isEmployee?`<span class="process-step-origin" aria-label="Employee tool">(E)</span>`:``,c=De(e.icon),l=e.detailPreview||e.detail||``,u=`process-detail-${e.id}`,ee=e.detailAvailable&&e.traceRunId&&e.traceSeq?`<span class="process-step-trace" role="button" tabindex="0" title="Open full trace" aria-label="Open full trace" data-trace-run-id="${i(e.traceRunId)}" data-trace-seq="${String(e.traceSeq)}">Trace</span>`:``,te=S(l,e.type===`thinking`?120:80),d=te?`<span class="process-step-snippet">${i(te)}</span>`:``;return`<div class="process-step process-step-expandable"
|
|
5
|
-
data-step-id="${e.id}"
|
|
6
|
-
data-type="${i(e.type)}"
|
|
7
|
-
data-status="${i(e.status)}"
|
|
8
|
-
data-is-employee="${e.isEmployee?`true`:``}"
|
|
9
|
-
data-step-ref="${i(e.stepRef||``)}"
|
|
10
|
-
data-trace-run-id="${i(e.traceRunId||``)}"
|
|
11
|
-
data-trace-seq="${String(e.traceSeq||``)}"
|
|
12
|
-
data-start-time="${String(e.startTime||Date.now())}">
|
|
13
|
-
<button class="process-step-toggle" aria-expanded="false" aria-controls="${u}">
|
|
14
|
-
<span class="${t}"></span>
|
|
15
|
-
<span class="process-step-icon" aria-hidden="true">${c}</span>
|
|
16
|
-
<span class="${n}">${r}</span>
|
|
17
|
-
<span class="process-step-main">
|
|
18
|
-
${o}
|
|
19
|
-
<span class="process-step-label">${a}</span>
|
|
20
|
-
${d}
|
|
21
|
-
</span>
|
|
22
|
-
${ee}
|
|
23
|
-
<span class="process-step-chevron">${s.chevronRight}</span>
|
|
24
|
-
</button>
|
|
25
|
-
<div class="process-step-details collapsed" id="${u}">
|
|
26
|
-
<pre class="process-step-full" data-detail-lazy="true"${(e.detailLength||0)>0?` data-had-detail="true"`:``}></pre>
|
|
27
|
-
</div>
|
|
28
|
-
</div>`}function E(e){return`<button type="button" class="process-step process-step-omitted" data-expand-steps data-omitted-count="${e}">
|
|
29
|
-
<span class="process-step-snippet">Show ${e} hidden tool step${e===1?``:`s`}</span>
|
|
30
|
-
</button>`}function D(e,t=!1){let n=Ee(e,t),r=0,i=[];for(let t=0;t<e.length;t++){let a=e[t];a&&(n.has(t)?(r>0&&(i.push(E(r)),r=0),i.push(T(a))):r++)}return r>0&&i.push(E(r)),i.join(``)}function Oe(e=``,t=!1){return`<div class="process-block${t?` collapsed`:``}">
|
|
31
|
-
<button class="process-summary" aria-expanded="${t?`false`:`true`}">
|
|
32
|
-
<span class="process-dot ${t?`done`:`running`}"></span>
|
|
33
|
-
<span class="process-summary-text">${e}</span>
|
|
34
|
-
<span class="process-duration"></span>
|
|
35
|
-
<span class="process-chevron">${t?s.chevronRight:s.chevronDown}</span>
|
|
36
|
-
</button>
|
|
37
|
-
<div class="process-details">
|
|
38
|
-
<div class="process-steps-inner"></div>
|
|
39
|
-
</div>
|
|
40
|
-
</div>`}function ke(e){let t=e.closest(`.process-step`),n=t?.querySelector(`.process-step-details`),r=n?.querySelector(`.process-step-full`),i=e.querySelector(`.process-step-chevron`);if(!t||!n)return;let a=n.classList.contains(`collapsed`);a&&r?.dataset.detailLazy===`true`?(r.textContent=C(t.dataset.stepId||``)||b.get(t.dataset.stepId||``)?.preview||(r.dataset.hadDetail===`true`?`(detail released to save memory — scroll this message back into view to reload)`:``),delete r.dataset.detailLazy):!a&&r&&r.textContent&&r.textContent.length>oe&&(r.textContent=``,r.dataset.detailLazy=`true`),n.classList.toggle(`collapsed`,!a),t.classList.toggle(`expanded`,a),e.setAttribute(`aria-expanded`,a?`true`:`false`),i&&(i.innerHTML=a?s.chevronDown:s.chevronRight)}function Ae(e,t){let n=window.__jawProcessBlockLayoutMutation;if(typeof n==`function`){n(e,t);return}t()}function O(e){return e.getAttribute(`aria-disabled`)!==`true`&&!e.matches(`:disabled`)}function je(e){e.dataset.processBlockBound!==`1`&&(e.addEventListener(`click`,e=>{let t=e.target;if(!t)return;let i=t.closest(`.process-step-trace`);if(i){if(e.preventDefault(),e.stopPropagation(),!O(i))return;let t=i.dataset.traceRunId||``,a=Number(i.dataset.traceSeq||0),s=++ue,c=o(`/api/orchestrate/snapshot`);de?.abort();let l=new AbortController;de=l;let u=n(c,{},l.signal,16777216);Promise.all([r(()=>import(`./trace-drawer-DBmK-5F_.js`),__vite__mapDeps([0])),u]).then(([e,n])=>{if(s!==ue||!i.isConnected||!O(i)||c!==o(`/api/orchestrate/snapshot`))return;let r=d(n&&typeof n==`object`&&!Array.isArray(n)?n.activityIdentity:null);return e.openTraceDrawer(t,a,r?.sessionId??null)}).catch(e=>console.warn(`[trace-drawer] open failed:`,e));return}let a=t.closest(`[data-expand-steps]`);if(a){e.preventDefault();let t=a.closest(`.process-block`);if(!t)return;let n=_.get(t);if(!n){let e=He(t);if(e.length===0)return;n={element:t,steps:e,collapsed:t.classList.contains(`collapsed`)},_.set(t,n)}let r=n;Ae(t,()=>{r.expandedSteps=!0;let e=r.element.querySelector(`.process-steps-inner`);e&&(e.innerHTML=D(r.steps,!0))});return}let c=t.closest(`.process-step-toggle`);if(c){Ae(c.closest(`.process-step, .process-block`),()=>{ke(c)});return}let l=t.closest(`.process-summary`);if(l){let e=l.closest(`.process-block`);if(!e)return;Ae(e,()=>{let t=e.classList.contains(`collapsed`);e.classList.toggle(`collapsed`,!t),l.setAttribute(`aria-expanded`,t?`true`:`false`);let n=l.querySelector(`.process-chevron`);n&&(n.innerHTML=t?s.chevronDown:s.chevronRight);let r=_.get(e);r&&(r.collapsed=!t,k(r))})}}),e.addEventListener(`keydown`,e=>{if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target?.closest(`.process-step-trace`);t&&(t.tagName!==`BUTTON`||!O(t)||e.repeat)&&(e.preventDefault(),e.stopPropagation(),!e.repeat&&O(t)&&t.click())}),e.dataset.processBlockBound=`1`)}function Me(e,t=!0){let n=e.map(w),r=Oe(ye(n),t),i=document.createElement(`div`);i.innerHTML=r;let a=i.querySelector(`.process-block`);a&&(a.dataset.processStepIds=n.map(e=>e.id).join(` `));let o=i.querySelector(`.process-steps-inner`);o&&(o.innerHTML=D(n));let s=i.querySelector(`.process-dot`);if(s){let e=n.some(e=>e.status===`running`);s.classList.toggle(`running`,e&&!t),s.classList.toggle(`done`,!e||t)}return i.innerHTML}function k(e){let t=e.element.querySelector(`.process-summary-text`);t&&(t.innerHTML=ye(e.steps));let n=e.steps.some(e=>e.status===`running`),r=e.element.querySelector(`.process-dot`);r&&(r.classList.toggle(`running`,n&&!e.collapsed),r.classList.toggle(`done`,!n||e.collapsed));let i=ge(e),a=i===null?0:Math.round((Date.now()-i)/1e3),o=e._durationEl??=e.element.querySelector(`.process-duration`);o&&(o.textContent=a>0?`${a}s`:``),n&&!e.collapsed?ve(e):g===e&&x()}function Ne(e){_.set(e.element,e)}function Pe(e){let t=document.createElement(`div`);t.innerHTML=Oe(``,!0);let n=t.firstElementChild,r=e.querySelector(`.msg-content`);r?r.before(n):e.appendChild(n);let i={element:n,steps:[],collapsed:!0};return _.set(n,i),i}function Fe(e,t){e.setAttribute(`data-omitted-count`,String(t));let n=e.querySelector(`.process-step-snippet`);n&&(n.textContent=`Show ${t} hidden tool step${t===1?``:`s`}`)}function Ie(e,t){let n=e.steps.length-1-le;if(n<ce)return;let r=e.steps[n];if(!r||r.status===`running`||r.status===`error`)return;let i=t.querySelector(`[data-step-id="${r.id}"]`);if(!i)return;let a=i.previousElementSibling;if(a&&a.hasAttribute(`data-expand-steps`))Fe(a,Number(a.getAttribute(`data-omitted-count`)||`0`)+1),i.remove();else{let e=document.createElement(`div`);e.innerHTML=E(1);let t=e.firstElementChild;t&&i.replaceWith(t)}}function Le(e,t){let n=w(t);e.steps.push(n);let r=e.element.querySelector(`.process-steps-inner`);r&&(e.steps.length===81&&!e.expandedSteps?r.innerHTML=D(e.steps,e.expandedSteps):e.steps.length>se&&!e.expandedSteps?(r.insertAdjacentHTML(`beforeend`,T(n)),Ie(e,r)):r.insertAdjacentHTML(`beforeend`,T(n))),Te(e),k(e)}function Re(e,t,n){let r=e.steps.findIndex(e=>e.id===t);if(r===-1)return;t!==n.id&&(y.delete(t),b.delete(t));let i=w(n);e.steps[r]=i;let a=e.element.querySelector(`[data-step-id="${t}"]`);if(a){let e=document.createElement(`div`);e.innerHTML=T(i);let t=e.firstElementChild;t&&a.replaceWith(t)}else if(e.steps.length>se){let t=e.element.querySelector(`.process-steps-inner`);t&&(t.innerHTML=D(e.steps,e.expandedSteps))}Te(e),k(e)}function ze(e){g===e&&x(),e.collapsed=!0,e.element.classList.add(`collapsed`);let t=e.element.querySelector(`.process-summary`);t&&t.setAttribute(`aria-expanded`,`false`);let n=e.element.querySelector(`.process-chevron`);n&&(n.innerHTML=s.chevronRight);for(let t of e.steps)t.status===`running`&&(t.status=`done`,we(t));e.element.querySelectorAll(`.process-step-dot.running`).forEach(e=>{e.classList.remove(`running`),e.classList.add(`done`);let t=e.closest(`.process-step`);t&&(t.dataset.status=`done`)}),k(e)}function Be(e){if(!e)return;fe++;let t=new Set;if(`steps`in e)e.steps.forEach(e=>t.add(e.id));else{if(e.classList.contains(`process-block`)&&(e.dataset.processStepIds||``).split(/\s+/).filter(Boolean).forEach(e=>t.add(e)),e.querySelectorAll(`.process-block[data-process-step-ids]`).forEach(e=>{(e.dataset.processStepIds||``).split(/\s+/).filter(Boolean).forEach(e=>t.add(e))}),e.classList.contains(`process-step`)){let n=e.dataset.stepId;n&&t.add(n)}e.querySelectorAll(`.process-step[data-step-id]`).forEach(e=>{let n=e.dataset.stepId;n&&t.add(n)})}t.forEach(e=>{y.delete(e),b.delete(e)}),pe+=t.size}function Ve(e){return b.get(e)||null}function He(e){me++;let t=(e.dataset.processStepIds||``).split(/\s+/).filter(Boolean),n=[];for(let e of t){let t=b.get(e);t&&n.push({id:t.id,type:t.type,icon:t.icon,rawIcon:t.rawIcon,label:t.label,isEmployee:t.isEmployee,detail:C(e)||t.preview||``,detailPreview:t.preview,detailLength:t.detailLength,detailTruncated:t.detailTruncated,stepRef:t.stepRef,traceRunId:t.traceRunId,traceSeq:t.traceSeq,detailAvailable:t.detailAvailable,detailBytes:t.detailBytes,rawRetentionStatus:t.rawRetentionStatus,status:t.status,startTime:t.startTime})}return he+=n.length,n}var Ue=80,We=5,Ge=80;function Ke(e){let t=Math.ceil(e.getBoundingClientRect().height);return Number.isFinite(t)&&t>0?t:0}function A(e,t,n){if(!e[t])return;let r=Ke(n);r>0&&(e[t].height=r)}function qe(e,t,n){if(n)for(let[r,i]of t)A(e,r,i),n.measureElement(i)}var Je=class{items=[];container;innerEl;_active=!1;virtualizer=null;cleanupFn=null;mounted=new Map;itemGap=0;restorePassTimers=new Set;shouldFollowAfterRestore=()=>!0;onLazyRender=null;onPostRender=null;onRecycle=null;lifecycleHooks=new Set;addLifecycleHooks(e){this.lifecycleHooks.add(e)}postRender(e){this.onPostRender?.(e);for(let t of this.lifecycleHooks)t.postRender(e)}recycle(e){this.onRecycle?.(e);for(let t of this.lifecycleHooks)t.recycle(e)}constructor(e){this.container=document.getElementById(e),this.innerEl=document.createElement(`div`),this.innerEl.className=`vs-inner`,this.attachMediaLoadRemeasure()}attachMediaLoadRemeasure(){let e=e=>{let t=e.target;if(!(t instanceof HTMLImageElement)&&!(t instanceof HTMLVideoElement)||!this._active||!this.virtualizer)return;let n=t.closest(`[data-vs-idx]`);n&&n.isConnected&&(A(this.items,Number(n.dataset.vsIdx||`-1`),n),this.virtualizer.measureElement(n))};this.innerEl.addEventListener(`load`,e,!0),this.innerEl.addEventListener(`loadedmetadata`,e,!0)}get active(){return this._active}get count(){return this.items.length}metrics(){let e=[...this.mounted.keys()].sort((e,t)=>e-t),t=e[0],n=e[e.length-1];return{virtualItemCount:this.items.length,mountedRowCount:this.mounted.size,firstVisibleIdx:t??null,lastVisibleIdx:n??null,firstVisibleId:t===void 0?null:this.items[t]?.id??null,lastVisibleId:n===void 0?null:this.items[n]?.id??null}}measureGap(){if(this.itemGap>0)return this.itemGap;let e=document.createElement(`div`);return e.className=`msg`,e.style.position=`absolute`,e.style.visibility=`hidden`,e.textContent=` `,this.innerEl.appendChild(e),this.itemGap=parseFloat(getComputedStyle(e).marginBottom)||0,e.remove(),this.itemGap}invalidateLayout(){if(!this.virtualizer)return;this.itemGap=0;let e=this.measureGap();this.virtualizer.setOptions({...this.virtualizer.options,gap:e}),this.virtualizer.measure(),qe(this.items,this.mounted,this.virtualizer),this.renderItems()}setItems(e,t){this.items=e,t?.autoActivate!==!1&&!this._active&&this.items.length>=1&&this.activate(t?.toBottom??!0)}seedMeasuredHeights(e,t){for(let n=0;n<t.length;n++){let r=e+n;this.items[r]&&(this.items[r].height=t[n])}}activateIfNeeded(e=!1){!this._active&&this.items.length>=1&&this.activate(e)}addItem(e,t){this.appendItem({id:e,html:t,height:Ue})}appendItem(e){if(this.items.push(e),!this._active&&this.items.length>=1){this.activate(!0);return}this._active&&this.virtualizer&&this.virtualizer.setOptions({...this.virtualizer.options,count:this.items.length})}appendLiveItem(e){if(!this._active)return;a(e);let t=e.outerHTML,n=f(),r=e.dataset.messageId;this.items.push({id:n,...r?{messageId:r}:{},html:t,height:Ue}),this.virtualizer&&(this.virtualizer.setOptions({...this.virtualizer.options,count:this.items.length}),this.renderItems())}reconcileMessage(e,t){let n=this.items.findIndex(t=>t.messageId===e);if(n<0||this.items.some((t,r)=>r!==n&&t.messageId===e))return!1;let r=this.items[n],i=this.mounted.get(n),a=this.container.ownerDocument.createElement(`div`);i||(a.innerHTML=r.html);let o=i??a.firstElementChild;return!o||o.dataset.messageId!==e?!1:(t(o),r.html=o.outerHTML,i&&this.virtualizer&&(A(this.items,n,i),this.virtualizer.measureElement(i)),!0)}updateItemHtml(e,t){this.items[e]&&(this.items[e].html=t)}scrollToBottom(){this._active&&this.virtualizer&&this.items.length>0&&this.virtualizer.scrollToIndex(this.items.length-1,{align:`end`}),this.container.scrollTop=this.container.scrollHeight}firstVisibleIndex(){if(!this._active||!this.virtualizer)return null;let e=this.virtualizer.getVirtualItems();if(e.length===0)return null;let t=this.container.scrollTop;for(let n of e)if(n.end>t)return n.index;return e[0].index}scrollToIndex(e,t=`start`){this._active&&this.virtualizer&&e>=0&&e<this.items.length&&this.virtualizer.scrollToIndex(e,{align:t})}isNearBottom(e=Ge){return this.container.scrollHeight-this.container.scrollTop-this.container.clientHeight<e}setRestoreFollowPredicate(e){this.shouldFollowAfterRestore=e??(()=>!0)}reconcileBottomAfterLayout(e,t=this.isNearBottom()){t&&requestAnimationFrame(()=>{this.invalidateLayout(),requestAnimationFrame(()=>{this.scrollToBottom()})})}reconcileAfterRestore(e,t=this.shouldFollowAfterRestore){if(!t()){this.invalidateLayout();return}this.scheduleRestoreReconcile(e,t)}forceBottomAfterRestore(e){this.scheduleRestoreReconcile(e)}cancelRestoreReconcile(e){this.clearRestoreTimers()}preserveScrollDuringMutation(e,t){let n=this.isNearBottom(),r=this.captureScrollAnchor(e),i=t();return this.invalidateLayout(),n?(this.reconcileBottomAfterLayout(`manual`,!0),i):(this.restoreScrollAnchor(r),i)}scheduleRestoreReconcile(e,t){this.runRestoreReconcilePass(e,t),requestAnimationFrame(()=>this.runRestoreReconcilePass(e,t)),requestAnimationFrame(()=>{requestAnimationFrame(()=>this.runRestoreReconcilePass(e,t))}),this.scheduleRestoreTimer(e,250,t),this.scheduleRestoreTimer(e,1e3,t),document.fonts?.ready.then(()=>this.runRestoreReconcilePass(e,t))}scheduleRestoreTimer(e,t,n){let r=window.setTimeout(()=>{this.restorePassTimers.delete(r),this.runRestoreReconcilePass(e,n)},t);this.restorePassTimers.add(r)}runRestoreReconcilePass(e,t){if(this.virtualizer){if(t&&!t()){this.cancelRestoreReconcile(e),this.invalidateLayout();return}this.invalidateLayout(),qe(this.items,this.mounted,this.virtualizer),this.scrollToBottom()}}captureScrollAnchor(e){let t=e instanceof HTMLElement?e:null,n=t&&this.isVisibleInContainer(t)?t:this.firstVisibleMountedItem();return n?{el:n,top:n.getBoundingClientRect().top}:null}restoreScrollAnchor(e){if(!e||!e.el.isConnected)return;let t=e.el.getBoundingClientRect().top-e.top;Number.isFinite(t)&&t!==0&&(this.container.scrollTop+=t)}firstVisibleMountedItem(){let e=Array.from(this.mounted.entries()).sort(([e],[t])=>e-t);for(let[,t]of e)if(this.isVisibleInContainer(t))return t;return null}isVisibleInContainer(e){let t=e.getBoundingClientRect(),n=this.container.getBoundingClientRect();return t.bottom>n.top&&t.top<n.bottom}clearRestoreTimers(){for(let e of this.restorePassTimers)window.clearTimeout(e);this.restorePassTimers.clear()}flushToDOM(){this._active&&(this.deactivate(),this.container.innerHTML=this.items.map(e=>e.html).join(``),this.postRender(this.container),this.items=[])}clear(){this.deactivate(),this.items=[],this.itemGap=0,this.onLazyRender=null,this.onPostRender=null,this.onRecycle=null,this.lifecycleHooks.clear()}activate(e=!1){this._active=!0,this.container.querySelectorAll(`.msg`).forEach((e,t)=>{if(!this.items[t])return;let n=e.getBoundingClientRect().height;n>0&&(this.items[t].height=n)}),this.container.classList.add(`vs-active`),this.container.replaceChildren(this.innerEl),this.measureGap(),this.virtualizer=new te({count:this.items.length,getScrollElement:()=>this.container,estimateSize:e=>this.items[e]?.height??Ue,overscan:We,gap:this.itemGap,useAnimationFrameWithResizeObserver:!0,onChange:()=>this.renderItems(),observeElementRect:l,observeElementOffset:u,scrollToFn:ee,getItemKey:e=>this.items[e]?.id??e,indexAttribute:`data-vs-idx`});let t=[],n=this.virtualizer._didMount();n&&t.push(n);let r=0,i=()=>{cancelAnimationFrame(r),r=requestAnimationFrame(()=>{this.invalidateLayout()})},a=()=>i();if(window.addEventListener(`resize`,a),t.push(()=>{window.removeEventListener(`resize`,a),cancelAnimationFrame(r)}),typeof ResizeObserver<`u`){let e=this.container.clientWidth,n=this.container.clientHeight,r=new ResizeObserver(t=>{let r=t[0]?.contentRect;if(!r)return;let a=Math.round(r.width),o=Math.round(r.height);(a!==e||o!==n)&&(e=a,n=o,i())});r.observe(this.container),t.push(()=>r.disconnect());let a=this.virtualizer?.getTotalSize()??0,o=new ResizeObserver(()=>{let e=this.virtualizer?.getTotalSize()??0;if(e<=a){a=e;return}a=e,this.shouldFollowAfterRestore()&&this.reconcileBottomAfterLayout(`manual`,!0)});o.observe(this.innerEl),t.push(()=>o.disconnect())}let o=e=>{this.virtualizer&&this.reconcileAfterRestore(e,this.shouldFollowAfterRestore)},s=e=>{e.persisted&&o(`pageshow`)};window.addEventListener(`pageshow`,s);let c=()=>{document.visibilityState===`visible`&&o(`visibility`)};document.addEventListener(`visibilitychange`,c);let d=()=>o(`focus`);window.addEventListener(`focus`,d);let f=()=>o(`resume`);document.addEventListener(`resume`,f);let ne=()=>{};window.addEventListener(`pagehide`,ne);let re=()=>{};document.addEventListener(`freeze`,re),this.cleanupFn=()=>{window.removeEventListener(`pageshow`,s),document.removeEventListener(`visibilitychange`,c),window.removeEventListener(`focus`,d),document.removeEventListener(`resume`,f),window.removeEventListener(`pagehide`,ne),document.removeEventListener(`freeze`,re);for(let e of t.reverse())e();this.clearRestoreTimers()},this.virtualizer._willUpdate(),e&&this.items.length>0?(this.container.style.opacity=`0`,this.renderItems(),this.virtualizer.scrollToIndex(this.items.length-1,{align:`end`}),requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.container.style.opacity=``})})):this.renderItems(),`wasDiscarded`in document&&document.wasDiscarded&&o(`discard`)}deactivate(){this.clearRestoreTimers(),this.cleanupFn&&=(this.cleanupFn(),null),this.virtualizer=null,this._active=!1;for(let e of this.mounted.values())this.recycle(e),a(e),Be(e);this.mounted.clear(),this.innerEl.replaceChildren(),this.container.classList.remove(`vs-active`),this.container.innerHTML=``}renderItems(){if(!this.virtualizer)return;this.virtualizer._willUpdate();let e=this.virtualizer.getVirtualItems(),t=this.virtualizer.getTotalSize();this.innerEl.style.height=`${t}px`;let n=new Set(e.map(e=>e.index));for(let[e,t]of this.mounted)n.has(e)||(this.recycle(t),a(t),this.items[e]?.rehydratesProcessDetails&&Be(t),t.remove(),this.mounted.delete(e));let r=[];for(let t of e){let e=this.mounted.get(t.index);if(!e){let n=this.items[t.index];if(!n)continue;let i=document.createElement(`div`);if(i.innerHTML=n.html,e=i.firstElementChild,!e)continue;e.dataset.vsIdx=String(t.index),this.innerEl.appendChild(e),this.mounted.set(t.index,e),r.push(e)}e.style.transform=`translateY(${t.start}px)`}let i=this.innerEl.contains(document.activeElement)?document.activeElement:null,o=this.innerEl.firstElementChild;for(let t of e){let e=this.mounted.get(t.index);e&&(e!==o&&this.innerEl.insertBefore(e,o),o=e.nextElementSibling)}if(i?.isConnected&&document.activeElement!==i&&i.focus({preventScroll:!0}),this.onLazyRender){let e=this.innerEl.querySelectorAll(`.lazy-pending`);e.length>0&&this.onLazyRender(Array.from(e))}this.postRender(this.innerEl);for(let e of r){let t=Number(e.dataset.vsIdx||`-1`);A(this.items,t,e),this.virtualizer.measureElement(e)}}},Ye=null;function j(){return Ye||=new Je(`chatMessages`),Ye}var Xe=[`cdnjs.cloudflare.com`,`cdn.jsdelivr.net`,`unpkg.com`,`esm.sh`,`fonts.googleapis.com`,`fonts.gstatic.com`],Ze=[/\beval\s*\(/,/\bnew\s+Function\s*\(/,/\bdocument\.cookie\b/,/\bwindow\.opener\b/,/\bwindow\.top\b/,/\bparent\.postMessage\b(?!.*jaw-)/,/\blocation\.href\s*=/,/\bwindow\.location\b/,/\bsetTimeout\s*\(\s*["'`]/,/\bsetInterval\s*\(\s*["'`]/,/\.constructor\s*\.\s*constructor/,/\bdocument\.write\s*\(/,/\binsertAdjacentHTML\s*\(/],Qe=[],$e=524288;function et(e){return new TextEncoder().encode(e).length}function tt(e){return e===$e?`512KB`:e%1048576==0?`${e/1048576}MB`:e%1024==0?`${e/1024}KB`:`${e} bytes`}function nt(e,t={}){let n=[],r=t.maxBytes??$e;if(et(e)>r)return{valid:!1,reason:`Payload too large (>${tt(r)})`,warnings:n};let i=/(?:src|href)\s*=\s*["']https?:\/\/([^/"']+)/gi,a;for(;(a=i.exec(e))!==null;){let e=a[1];if(!Xe.some(t=>e===t||e.endsWith(`.`+t)))return{valid:!1,reason:`Blocked domain: ${e}`,warnings:n}}let o=/url\s*\(\s*['"]?https?:\/\/([^)'"]+)/gi;for(;(a=o.exec(e))!==null;){let e=a[1].split(`/`)[0];Xe.some(t=>e===t||e.endsWith(`.`+t))||n.push(`CSS url() references external domain: ${e}`)}for(let t of Ze)if(t.test(e))return{valid:!1,reason:`Dangerous pattern: ${t.source}`,warnings:n};let s=/\bimport\s*\(\s*['"`](.*?)['"`]\s*\)/g,c;for(;(c=s.exec(e))!==null;)try{let e=new URL(c[1]).hostname;if(!Xe.some(t=>e===t||e.endsWith(`.`+t)))return{valid:!1,reason:`Blocked import() domain: ${e}`,warnings:n}}catch{return{valid:!1,reason:`Dynamic import() with non-URL argument`,warnings:n}}if(/\bimport\s*\(\s*(?!['"`])/g.test(e))return{valid:!1,reason:`Dynamic import() with non-literal argument`,warnings:n};for(let t of Qe)t.test(e)&&n.push(`DOM sink detected: ${t.source}`);return{valid:!0,warnings:n}}var rt=null,M=!0,N=`unknown`,it=!1,at=80,ot=1100,P=null,F=new Set,I=new Set;function L(){return N!==`pinnedAway`}function R(){M=!0,N=`following`,bt()}function st(e){M=e<at,N=M?`following`:`pinnedAway`,N===`pinnedAway`&&z(),bt()}function z(){for(let e of F)window.clearTimeout(e);F.clear();for(let e of I)cancelAnimationFrame(e);I.clear()}function B(e){let t=requestAnimationFrame(()=>{I.delete(t),e()});I.add(t)}function ct(e){F.add(e)}function V(e,t){let n=window.setTimeout(()=>{F.delete(n),e()},t);ct(n)}function H(){if(j().setRestoreFollowPredicate(L),window.__jawProcessBlockLayoutMutation=(e,t)=>{let n=j();if(n.active){n.preserveScrollDuringMutation(e,t);return}t()},it)return;let e=document.getElementById(`chatMessages`);e&&(it=!0,e.addEventListener(`scroll`,()=>{st(e.scrollHeight-e.scrollTop-e.clientHeight)},{passive:!0}),yt())}function lt(){H();let e=document.getElementById(`chatMessages`);if(!e)return M;let t=j();return t.active?t.isNearBottom(at):e.scrollHeight-e.scrollTop-e.clientHeight<at}function ut(e=lt()){if(H(),!e)return;R();let t=j();if(t.active){t.reconcileBottomAfterLayout(`reconnect`,!0);return}requestAnimationFrame(()=>{requestAnimationFrame(()=>{let e=document.getElementById(`chatMessages`);e&&(e.scrollTop=e.scrollHeight)})})}function dt(e){P!==null&&(window.clearTimeout(P),P=null);let t=document.querySelector(`.chat-area`);if(!t)return;let n=t.querySelector(`[data-restore-indicator="true"]`);n||(n=document.createElement(`div`),n.className=`chat-restore-indicator`,n.setAttribute(`data-restore-indicator`,`true`),n.setAttribute(`role`,`status`),n.setAttribute(`aria-live`,`polite`),n.innerHTML=`<span class="chat-restore-dot"></span><span class="chat-restore-text">Restoring</span>`,t.appendChild(n)),n.dataset.restoreReason=e}function ft(){P!==null&&(window.clearTimeout(P),P=null),document.querySelectorAll(`[data-restore-indicator="true"]`).forEach(e=>e.remove())}function pt(e=ot){P!==null&&window.clearTimeout(P),P=window.setTimeout(()=>{P=null,ft()},e)}function mt(e){dt(e),pt(),H();let t=j();if(t.active){t.reconcileAfterRestore(e,L);return}if(!L())return;let n=()=>{if(!L()){z();return}let e=document.getElementById(`chatMessages`);e&&(e.scrollTop=e.scrollHeight,R())},r=()=>{if(!L()){z();return}B(n)};r(),B(r),B(()=>B(r)),V(r,250),V(r,1e3),document.fonts?.ready.then(r)}function ht(){H(),R();let e=j();if(e.active){e.reconcileAfterRestore(`manual`,L);return}let t=()=>{if(!L()){z();return}let e=document.getElementById(`chatMessages`);e&&(e.scrollTop=e.scrollHeight,R())},n=()=>{if(!L()){z();return}B(t)};n(),B(n),B(()=>B(n)),V(n,250),V(n,1e3),document.fonts?.ready.then(n)}function gt(e=!1){H(),(e||M)&&(e&&R(),!rt&&(rt=requestAnimationFrame(()=>{rt=null;let e=j();if(e.active){e.scrollToBottom();return}let t=document.getElementById(`chatMessages`);t&&(t.scrollTop=t.scrollHeight)})))}var U=null,_t=!1;function vt(){let e=document.createElement(`button`);return e.className=`scroll-to-bottom-fab`,e.setAttribute(`aria-label`,`Scroll to bottom`),e.innerHTML=`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8 3v10M4 9l4 4 4-4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>`,e.addEventListener(`click`,()=>gt(!0)),e}function yt(){let e=document.querySelector(`.chat-area`);e&&!U&&(U=vt(),e.appendChild(U))}function bt(){if(!U)return;let e=N===`pinnedAway`;e!==_t&&(_t=e,U.classList.toggle(`visible`,e))}function xt(){let e=document.createElement(`button`);return e.className=`diagram-copy-btn`,e.type=`button`,e.ariaLabel=`Copy source`,e.title=`Copy`,e.innerHTML=s.copy,e}function St(){let e=document.createElement(`button`);return e.className=`diagram-save-btn`,e.type=`button`,e.ariaLabel=`Save as image`,e.title=`Save`,e.innerHTML=s.download,e}function Ct(){let e=document.createElement(`button`);return e.className=`diagram-zoom-btn`,e.type=`button`,e.ariaLabel=`Expand diagram`,e.title=`Expand`,e.textContent=`⤢`,e}function wt(){let e=document.createElement(`button`);return e.className=`diagram-size-toggle-btn`,e.type=`button`,e.ariaLabel=`Expand diagram`,e.title=`Expand`,e.textContent=`⤢`,e}var Tt=[`cdnjs.cloudflare.com`,`cdn.jsdelivr.net`,`unpkg.com`,`esm.sh`,`fonts.googleapis.com`,`fonts.gstatic.com`],W=new Set,G=new Map,Et=new WeakMap,K=524288,q=2097152,Dt=3e4,J=null;window.addEventListener(`session_switched`,()=>{J=null});async function Y(n,r={}){let i=await e(),a=new Headers(r.headers||{});return i&&a.set(`Authorization`,`Bearer ${i}`),fetch(`${t}${n}`,{...r,headers:a})}async function Ot(e=!1){let t=Date.now();if(!e&&J&&J.expiresAt>t)return J.id;try{let e=await Y(`/api/chat-sessions`);if(!e.ok)return null;let n=await e.json(),r=n.data?.active??n.active;return typeof r!=`string`||!r?null:(J={id:r,expiresAt:t+Dt},r)}catch(e){return console.warn(`[jaw-diagram] Failed to resolve active chat session:`,e.message),null}}function kt(e){let t=Et.get(e);t&&(t(),Et.delete(e))}function At(e){e.contentWindow&&(W.delete(e.contentWindow),G.delete(e.contentWindow))}function jt(e){kt(e.owner);let t=!1,n=!1,r=Number(e.owner.dataset.gen||`0`);e.owner.dataset.gen=String(r);let i=()=>{e.iframe.contentWindow?.postMessage({type:`jaw-request-resize`},`*`),setTimeout(()=>e.iframe.contentWindow?.postMessage({type:`jaw-request-resize`},`*`),300),setTimeout(()=>e.iframe.contentWindow?.postMessage({type:`jaw-request-resize`},`*`),1e3)},a=()=>{if(!t){t=!0,e.iframe.contentWindow&&(W.add(e.iframe.contentWindow),G.set(e.iframe.contentWindow,e.nonce),i());return}At(e.iframe),console.warn(`[jaw-diagram] iframe navigated — postMessage channel revoked`)},o=t=>{t.source===e.iframe.contentWindow&&t.data?.type===`jaw-widget-ready`&&t.data.nonce===e.nonce&&(n=!0,window.removeEventListener(`message`,o))},s=window.setTimeout(()=>{window.removeEventListener(`message`,o),Number(e.owner.dataset.gen||`0`)===r&&!n&&e.owner.isConnected&&(At(e.iframe),e.onTimeout?.())},1e4);e.iframe.addEventListener(`load`,a),window.addEventListener(`message`,o),Et.set(e.owner,()=>{window.clearTimeout(s),window.removeEventListener(`message`,o),e.iframe.removeEventListener(`load`,a),At(e.iframe)})}var Mt=null;function Nt(){if(Mt)return;let e=document.getElementById(`chatMessages`);e&&(Mt=new MutationObserver(e=>{if(W.size)for(let t of e)for(let e of t.removedNodes)e instanceof HTMLIFrameElement&&e.contentWindow&&(W.delete(e.contentWindow),G.delete(e.contentWindow)),e instanceof HTMLElement&&e.querySelectorAll(`iframe`).forEach(e=>{e.contentWindow&&(W.delete(e.contentWindow),G.delete(e.contentWindow))})}),Mt.observe(e,{childList:!0,subtree:!0}))}function Pt(e){if(e.includes(`"importmap"`)||e.includes(`'importmap'`))return``;let t={},n=e.match(/(?:cdn\.jsdelivr\.net\/npm|unpkg\.com)\/three@([\d.]+)/);if(n){let r=n[1],i=e.includes(`unpkg.com/three@`)?`unpkg.com`:`cdn.jsdelivr.net/npm`;t.three=`https://${i}/three@${r}/${i===`unpkg.com`?`build/three.module.js`:`build/three.module.min.js`}`,t[`three/addons/`]=`https://${i}/three@${r}/examples/jsm/`}return Object.keys(t).length===0?``:`<script type="importmap">${JSON.stringify({imports:t})}<\/script>`}function Ft(e){let t=`'none'`;(e.includes(`cdn.jsdelivr.net/npm/us-atlas`)||e.includes(`cdn.jsdelivr.net/npm/world-atlas`)||e.includes(`cdn.jsdelivr.net/npm/datamaps`))&&(t=`https://cdn.jsdelivr.net`);let n=/Tone(\.min)?\.js|tone@/.test(e)?`worker-src blob:;`:``,r=Tt.map(e=>`https://${e}`),i=r.join(` `),a=[`data:`,`blob:`,...r],o=[`'unsafe-inline'`,`https://fonts.googleapis.com`];/L\.(map|tileLayer|marker|geoJSON|polyline|polygon|circle)\(|leaflet[\w.@/-]*\.(js|css)|tile\.openstreetmap\.org/.test(e)&&(a.push(`https://a.tile.openstreetmap.org`,`https://b.tile.openstreetmap.org`,`https://c.tile.openstreetmap.org`),o.push(`https://cdnjs.cloudflare.com`,`https://cdn.jsdelivr.net`));let s=a.join(` `);return`<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline' ${i}; style-src ${o.join(` `)}; img-src ${s}; font-src https://fonts.gstatic.com; connect-src ${t}; ${n} base-uri 'none';">`}function It(){let e=!document.documentElement.hasAttribute(`data-theme`)||document.documentElement.getAttribute(`data-theme`)===`dark`,t=getComputedStyle(document.documentElement);return{isDark:e,tokens:{"--bg":t.getPropertyValue(`--bg`).trim(),"--surface":t.getPropertyValue(`--surface`).trim(),"--border":t.getPropertyValue(`--border`).trim(),"--text":t.getPropertyValue(`--text`).trim(),"--text-dim":t.getPropertyValue(`--text-dim`).trim(),"--accent":t.getPropertyValue(`--accent`).trim(),"--font-ui":t.getPropertyValue(`--font-ui`).trim(),"--font-mono":t.getPropertyValue(`--font-mono`).trim(),"--radius-sm":t.getPropertyValue(`--radius-sm`).trim(),"--radius-md":t.getPropertyValue(`--radius-md`).trim()}}}function Lt(e){return`
|
|
41
|
-
<script>
|
|
42
|
-
(function() {
|
|
43
|
-
var __nonce = '${e}';
|
|
44
|
-
|
|
45
|
-
window.addEventListener('message', function(e) {
|
|
46
|
-
if (e.source !== window.parent) return;
|
|
47
|
-
if (!e.data || typeof e.data !== 'object') return;
|
|
48
|
-
|
|
49
|
-
if (e.data.type === 'jaw-theme-update') {
|
|
50
|
-
window.__jawTheme = { isDark: !!e.data.isDark };
|
|
51
|
-
window.__jawTokens = e.data.tokens || {};
|
|
52
|
-
window.dispatchEvent(new CustomEvent('jaw-theme-change', { detail: window.__jawTheme }));
|
|
53
|
-
}
|
|
54
|
-
if (e.data.type === 'jaw-request-resize') {
|
|
55
|
-
postHeight();
|
|
56
|
-
}
|
|
57
|
-
if (e.data.type === 'jaw-request-screenshot') {
|
|
58
|
-
var canvas = document.querySelector('canvas');
|
|
59
|
-
if (canvas) {
|
|
60
|
-
try {
|
|
61
|
-
var dataUrl = canvas.toDataURL('image/png');
|
|
62
|
-
window.parent.postMessage({ type: 'jaw-screenshot', dataUrl: dataUrl, nonce: __nonce }, '*');
|
|
63
|
-
} catch(ex) { /* tainted canvas or other error */ }
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
function postHeight() {
|
|
69
|
-
var h = Math.max(
|
|
70
|
-
document.body.scrollHeight,
|
|
71
|
-
document.body.offsetHeight,
|
|
72
|
-
document.documentElement.scrollHeight
|
|
73
|
-
);
|
|
74
|
-
window.parent.postMessage({ type: 'jaw-diagram-resize', height: h, nonce: __nonce }, '*');
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if (typeof ResizeObserver !== 'undefined') {
|
|
78
|
-
var ro = new ResizeObserver(function() {
|
|
79
|
-
clearTimeout(ro._t);
|
|
80
|
-
ro._t = setTimeout(postHeight, 50);
|
|
81
|
-
});
|
|
82
|
-
ro.observe(document.body);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
window.addEventListener('load', function() {
|
|
86
|
-
postHeight();
|
|
87
|
-
// Deferred re-measure for async chart renders (Chart.js animation, CDN loading)
|
|
88
|
-
setTimeout(postHeight, 200);
|
|
89
|
-
setTimeout(postHeight, 800);
|
|
90
|
-
window.parent.postMessage({ type: 'jaw-widget-ready', nonce: __nonce }, '*');
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
var lastSend = 0;
|
|
94
|
-
window.sendPrompt = function(text) {
|
|
95
|
-
var now = Date.now();
|
|
96
|
-
if (now - lastSend < 3000) return;
|
|
97
|
-
lastSend = now;
|
|
98
|
-
window.parent.postMessage({ type: 'jaw-send-prompt', text: String(text).slice(0, 500), nonce: __nonce }, '*');
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
// Ctrl+C / Cmd+C: forward selected text to host for clipboard access
|
|
102
|
-
document.addEventListener('copy', function() {
|
|
103
|
-
var sel = window.getSelection();
|
|
104
|
-
if (sel && sel.toString().trim()) {
|
|
105
|
-
window.parent.postMessage({
|
|
106
|
-
type: 'jaw-copy-text',
|
|
107
|
-
text: sel.toString().slice(0, 512),
|
|
108
|
-
nonce: __nonce
|
|
109
|
-
}, '*');
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
})();
|
|
113
|
-
<\/script>`}var Rt=[[/\/p5\.js\/1\.11\.1[1-9]\//g,`/p5.js/1.11.10/`]];function zt(e){for(let[t,n]of Rt)e=e.replace(t,n);return e}function X(e){Nt(),Jt(),e=zt(e);let t=Array.from(crypto.getRandomValues(new Uint8Array(16)),e=>e.toString(16).padStart(2,`0`)).join(``),n=It(),r=Ft(e),i=Pt(e),a=Lt(t),o=`<!DOCTYPE html>
|
|
114
|
-
<html>
|
|
115
|
-
<head>
|
|
116
|
-
<meta charset="utf-8">
|
|
117
|
-
${r}
|
|
118
|
-
${i}
|
|
119
|
-
<style>
|
|
120
|
-
:root { ${Object.entries(n.tokens).map(([e,t])=>`${e}: ${t};`).join(`
|
|
121
|
-
`)} }
|
|
122
|
-
* { margin: 0; box-sizing: border-box; }
|
|
123
|
-
body {
|
|
124
|
-
font-family: var(--font-ui), system-ui, sans-serif;
|
|
125
|
-
color: var(--text);
|
|
126
|
-
background: transparent;
|
|
127
|
-
padding: 16px;
|
|
128
|
-
overflow: hidden;
|
|
129
|
-
}
|
|
130
|
-
</style>
|
|
131
|
-
</head>
|
|
132
|
-
<body>
|
|
133
|
-
<script>
|
|
134
|
-
window.__jawTheme = ${JSON.stringify({isDark:n.isDark})};
|
|
135
|
-
window.__jawTokens = ${JSON.stringify(n.tokens).replace(/<\//g,`<\\/`)};
|
|
136
|
-
<\/script>
|
|
137
|
-
${a}
|
|
138
|
-
${e}
|
|
139
|
-
</body>
|
|
140
|
-
</html>`,s=document.createElement(`iframe`);return s.sandbox.add(`allow-scripts`),s.srcdoc=o,s.style.cssText=`width: 100%; min-height: 200px; border: none; overflow: hidden; display: block;`,s.setAttribute(`aria-label`,`Interactive diagram widget`),{iframe:s,nonce:t}}function Bt(e){(e||document).querySelectorAll(`.diagram-widget-pending`).forEach(e=>{let t=e,n=t.dataset.diagramHtml;if(!n){let e=t.dataset.widgetId;e&&t.dataset.widgetPending!==`1`&&Vt(t,e);return}let r;try{r=Kt(n,K)}catch{e.replaceWith(Object.assign(document.createElement(`div`),{className:`diagram-error`,textContent:`Failed to decode widget content`,role:`alert`}));return}Ut(t,r,n)})}async function Vt(e,t){if(e.dataset.widgetLoading!==`1`){e.dataset.widgetLoading=`1`,delete e.dataset.widgetPending;try{let n=await Ot();if(!n){Z(e,t,`widget file pending`);return}let r=await Y(`/api/widgets/${encodeURIComponent(n)}/${encodeURIComponent(t)}`);if(r.status===404){J=null;let e=await Ot(!0);e&&e!==n&&(r=await Y(`/api/widgets/${encodeURIComponent(e)}/${encodeURIComponent(t)}`))}if(r.status===404){Z(e,t,`widget file pending`);return}if(!r.ok){Z(e,t,`widget file pending`);return}let i=await r.text();Ut(e,i,Gt(i),t,q)}catch(n){console.warn(`[jaw-diagram] Failed to load widget file:`,n.message),Z(e,t,`widget file pending`)}}}async function Ht(e,t){if(!e||!t||await Ot()!==e)return;let n=[...document.querySelectorAll(`[data-widget-id]`)].filter(e=>e.dataset.widgetId===t&&(e.classList.contains(`diagram-widget`)||e.classList.contains(`diagram-widget-pending`)));n.length&&await Promise.all(n.map(async n=>{if(n.dataset.widgetLoading!==`1`){n.dataset.widgetLoading=`1`;try{let r=await Y(`/api/widgets/${encodeURIComponent(e)}/${encodeURIComponent(t)}`);if(r.status===404){Z(n,t,`widget file pending`);return}if(!r.ok){delete n.dataset.widgetLoading;return}let i=await r.text();Ut(n,i,Gt(i),t,q)}catch(e){delete n.dataset.widgetLoading,console.warn(`[jaw-diagram] Failed to refresh widget file:`,e.message)}}}))}function Z(e,t,n){delete e.dataset.widgetLoading,e.dataset.widgetPending=`1`,e.className=`diagram-widget-pending diagram-widget-file-pending`,e.dataset.widgetId=t,e.setAttribute(`role`,`status`),e.setAttribute(`aria-label`,`Widget file pending`),e.innerHTML=``;let r=document.createElement(`span`);r.textContent=n;let i=document.createElement(`button`);i.type=`button`,i.className=`diagram-widget-retry`,i.textContent=`Retry`,i.addEventListener(`click`,()=>{delete e.dataset.widgetPending,Vt(e,t)}),e.append(r,i)}function Ut(e,t,n,r,i=K){let a=nt(t,{maxBytes:i});if(!a.valid){e.replaceWith(Object.assign(document.createElement(`div`),{className:`diagram-error`,textContent:`Widget blocked: ${a.reason}`,role:`alert`}));return}a.warnings.length&&console.warn(`[jaw-diagram] Widget warnings:`,a.warnings);let o=document.createElement(`div`);o.className=`diagram-container diagram-widget`,o.dataset.widgetHtml=n,r&&(o.dataset.widgetId=r),o.appendChild(Ct()),o.appendChild(St()),o.appendChild(xt());let{iframe:s,nonce:c}=X(t);o.appendChild(s),Wt(o),e.replaceWith(o),jt({iframe:s,nonce:c,owner:o,onTimeout:()=>{o.innerHTML=`<div class="diagram-error" role="alert">
|
|
141
|
-
Widget failed to load within 10 seconds.
|
|
142
|
-
</div>`,console.warn(`[jaw-diagram] Widget timeout — iframe deregistered`)}})}function Wt(e){let t=e.querySelector(`.diagram-zoom-btn`);t&&!t.dataset.bound&&(t.dataset.bound=`1`,t.addEventListener(`click`,()=>{let t=e.dataset.widgetHtml;t&&qt(t,e.dataset.widgetId?q:K)}))}function Gt(e){return btoa(unescape(encodeURIComponent(e)))}function Kt(e,t=K){let n=decodeURIComponent(escape(atob(e)));if(new TextEncoder().encode(n).length>t)throw Error(`Widget payload too large`);return n}function qt(e,t=K){let n=document.activeElement,r;try{r=Kt(e,t)}catch{r=``}let i=document.createElement(`div`);i.className=`diagram-overlay diagram-widget-overlay`,i.setAttribute(`role`,`dialog`),i.setAttribute(`aria-modal`,`true`),i.setAttribute(`aria-label`,`Expanded interactive diagram`);let a=document.createElement(`div`);a.className=`diagram-overlay-content`;let o=document.createElement(`button`);o.className=`diagram-overlay-close`,o.type=`button`,o.ariaLabel=`Close`,o.textContent=`✕`,i.append(a,o);let s=()=>{kt(a),i.remove(),document.removeEventListener(`keydown`,c),n?.isConnected&&n.focus()},c=e=>{if(e.key===`Escape`){s();return}if(e.key!==`Tab`)return;let t=i.querySelectorAll(`button, [href], iframe, [tabindex]:not([tabindex="-1"])`);if(!t.length)return;let n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())},l=r?nt(r,{maxBytes:t}):{valid:!1,reason:`Failed to decode widget content`,warnings:[]};if(!l.valid)a.innerHTML=`<div class="diagram-error" role="alert">Widget blocked: ${l.reason}</div>`;else{let t=document.createElement(`div`);t.className=`diagram-container diagram-widget diagram-widget-expanded`,t.dataset.widgetHtml=e;let n=wt();n.addEventListener(`click`,()=>{let e=i.classList.toggle(`maximized`);n.textContent=e?`⤡`:`⤢`,n.title=e?`Shrink`:`Expand`,n.ariaLabel=e?`Shrink diagram`:`Expand diagram`}),t.append(St(),xt(),n);let{iframe:o,nonce:s}=X(r);t.appendChild(o),a.appendChild(t),jt({iframe:o,nonce:s,owner:a})}o.addEventListener(`click`,s),document.addEventListener(`keydown`,c),document.body.appendChild(i),o.focus()}var Q=null;function Jt(){if(Q)return;let e=document.getElementById(`chatMessages`);e&&(Q=new MutationObserver(t=>{for(let n of t)for(let t of n.addedNodes)if(t instanceof HTMLElement&&(t.classList?.contains(`diagram-widget-pending`)||t.querySelector?.(`.diagram-widget-pending`))){requestAnimationFrame(()=>Bt(t.parentElement||e));return}}),Q.observe(e,{childList:!0}))}var $=new WeakMap;function Yt(e,t){if($.has(e))return;$.set(e,window.setTimeout(()=>$.delete(e),100));let n=lt(),r=!1;document.querySelectorAll(`iframe`).forEach(n=>{n.contentWindow===e&&(n.style.height=`${Math.min(Math.max(t,60),2e3)}px`,r=!0)}),r&&n&&requestAnimationFrame(()=>ut(!0))}function Xt(){document.querySelectorAll(`.diagram-widget`).forEach(e=>{let t=e,n=t.dataset.widgetHtml;if(!n)return;let r=t.dataset.widgetId?q:K,i;try{i=Kt(n,r)}catch{return}let a=e.querySelector(`iframe`);a?.contentWindow&&(W.delete(a.contentWindow),G.delete(a.contentWindow));let o=t;o.dataset.gen=String((Number(o.dataset.gen||`0`)||0)+1);let{iframe:s,nonce:c}=X(i);e.innerHTML=``,e.appendChild(Ct()),e.appendChild(St()),e.appendChild(xt()),e.appendChild(s),Wt(t),jt({iframe:s,nonce:c,owner:t})})}var Zt=0;window.addEventListener(`message`,e=>{if(!e.data||typeof e.data!=`object`||!e.source||e.origin!==`null`||!W.has(e.source)||![...document.querySelectorAll(`iframe`)].find(t=>t.contentWindow===e.source)?.isConnected)return;let t=G.get(e.source);if(t&&e.data.nonce===t)switch(e.data.type){case`jaw-diagram-resize`:{let t=Number(e.data.height);if(!Number.isFinite(t)||t<0)return;Yt(e.source,t);break}case`jaw-send-prompt`:{let t=Date.now();if(t-Zt<3e3)return;Zt=t;let n=String(e.data.text||``).trim().slice(0,500);if(!n)return;let r=document.getElementById(`chatInput`);r&&(r.value=n,r.dispatchEvent(new Event(`input`,{bubbles:!0})),r.focus());break}case`jaw-copy-text`:{let t=String(e.data.text||``).trim().slice(0,512);if(!t)return;c(t);break}case`jaw-screenshot`:{let t=String(e.data.dataUrl||``);if(!t.startsWith(`data:image/`)||t.length>5242880)return;fetch(t).then(e=>e.blob()).then(e=>{let t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`widget-${Date.now()}.png`,n.click(),setTimeout(()=>URL.revokeObjectURL(t),1e3)}).catch(()=>{});break}}});export{x as A,C,Be as D,Ne as E,m as M,f as N,Re as O,Pe as S,Ve as T,j as _,Ht as a,Me as b,ft as c,R as d,ut as f,dt as g,ht as h,It as i,p as j,Ce as k,pt as l,gt as m,Xt as n,L as o,mt as p,X as r,H as s,Bt as t,lt as u,Le as v,Se as w,ze as x,je as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./iframe-renderer-Bj1JolO8.js";export{e as refreshFileWidget};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-hePW80VL.js";var t=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),n=e(((e,n)=>{n.exports=t()}));export{n as t};
|