agent-tower 0.5.4 → 0.6.0-beta.1
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.md +3 -1
- package/dist/core/event-bus.d.ts +4 -1
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js.map +1 -1
- package/dist/executors/__tests__/codex.executor.test.js +27 -21
- package/dist/executors/__tests__/codex.executor.test.js.map +1 -1
- package/dist/executors/__tests__/providers-availability.test.js +41 -1
- package/dist/executors/__tests__/providers-availability.test.js.map +1 -1
- package/dist/executors/__tests__/providers.test.js +34 -1
- package/dist/executors/__tests__/providers.test.js.map +1 -1
- package/dist/executors/codex.executor.d.ts.map +1 -1
- package/dist/executors/codex.executor.js +4 -0
- package/dist/executors/codex.executor.js.map +1 -1
- package/dist/executors/default-providers.json +106 -0
- package/dist/executors/index.d.ts +1 -1
- package/dist/executors/index.d.ts.map +1 -1
- package/dist/executors/index.js +33 -14
- package/dist/executors/index.js.map +1 -1
- package/dist/executors/providers.d.ts +12 -3
- package/dist/executors/providers.d.ts.map +1 -1
- package/dist/executors/providers.js +45 -18
- package/dist/executors/providers.js.map +1 -1
- package/dist/output/types.d.ts +32 -2
- package/dist/output/types.d.ts.map +1 -1
- package/dist/output/types.js +10 -0
- package/dist/output/types.js.map +1 -1
- package/dist/routes/__tests__/providers.test.js +197 -1
- package/dist/routes/__tests__/providers.test.js.map +1 -1
- package/dist/routes/__tests__/sessions-runtime.test.d.ts +2 -0
- package/dist/routes/__tests__/sessions-runtime.test.d.ts.map +1 -0
- package/dist/routes/__tests__/sessions-runtime.test.js +107 -0
- package/dist/routes/__tests__/sessions-runtime.test.js.map +1 -0
- package/dist/routes/providers.d.ts.map +1 -1
- package/dist/routes/providers.js +14 -5
- package/dist/routes/providers.js.map +1 -1
- package/dist/routes/sessions.d.ts.map +1 -1
- package/dist/routes/sessions.js +50 -3
- package/dist/routes/sessions.js.map +1 -1
- package/dist/routes/system.d.ts.map +1 -1
- package/dist/routes/system.js +8 -6
- package/dist/routes/system.js.map +1 -1
- package/dist/runtime/__tests__/acp-agent-definitions.test.d.ts +2 -0
- package/dist/runtime/__tests__/acp-agent-definitions.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/acp-agent-definitions.test.js +367 -0
- package/dist/runtime/__tests__/acp-agent-definitions.test.js.map +1 -0
- package/dist/runtime/__tests__/acp-driver-cleanup.test.d.ts +2 -0
- package/dist/runtime/__tests__/acp-driver-cleanup.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/acp-driver-cleanup.test.js +41 -0
- package/dist/runtime/__tests__/acp-driver-cleanup.test.js.map +1 -0
- package/dist/runtime/__tests__/acp-driver-lifecycle.test.d.ts +2 -0
- package/dist/runtime/__tests__/acp-driver-lifecycle.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/acp-driver-lifecycle.test.js +241 -0
- package/dist/runtime/__tests__/acp-driver-lifecycle.test.js.map +1 -0
- package/dist/runtime/__tests__/acp-driver.test.d.ts +2 -0
- package/dist/runtime/__tests__/acp-driver.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/acp-driver.test.js +122 -0
- package/dist/runtime/__tests__/acp-driver.test.js.map +1 -0
- package/dist/runtime/__tests__/acp-history-reconciler.test.d.ts +2 -0
- package/dist/runtime/__tests__/acp-history-reconciler.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/acp-history-reconciler.test.js +69 -0
- package/dist/runtime/__tests__/acp-history-reconciler.test.js.map +1 -0
- package/dist/runtime/__tests__/acp-process-manager.test.d.ts +2 -0
- package/dist/runtime/__tests__/acp-process-manager.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/acp-process-manager.test.js +51 -0
- package/dist/runtime/__tests__/acp-process-manager.test.js.map +1 -0
- package/dist/runtime/__tests__/acp-projector.test.d.ts +2 -0
- package/dist/runtime/__tests__/acp-projector.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/acp-projector.test.js +195 -0
- package/dist/runtime/__tests__/acp-projector.test.js.map +1 -0
- package/dist/runtime/__tests__/runtime-coordinator.test.d.ts +2 -0
- package/dist/runtime/__tests__/runtime-coordinator.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/runtime-coordinator.test.js +175 -0
- package/dist/runtime/__tests__/runtime-coordinator.test.js.map +1 -0
- package/dist/runtime/acp/acp-driver.d.ts +7 -0
- package/dist/runtime/acp/acp-driver.d.ts.map +1 -0
- package/dist/runtime/acp/acp-driver.js +441 -0
- package/dist/runtime/acp/acp-driver.js.map +1 -0
- package/dist/runtime/acp/agents/claude-code.d.ts +3 -0
- package/dist/runtime/acp/agents/claude-code.d.ts.map +1 -0
- package/dist/runtime/acp/agents/claude-code.js +147 -0
- package/dist/runtime/acp/agents/claude-code.js.map +1 -0
- package/dist/runtime/acp/agents/codex.d.ts +3 -0
- package/dist/runtime/acp/agents/codex.d.ts.map +1 -0
- package/dist/runtime/acp/agents/codex.js +70 -0
- package/dist/runtime/acp/agents/codex.js.map +1 -0
- package/dist/runtime/acp/agents/cursor-agent.d.ts +2 -0
- package/dist/runtime/acp/agents/cursor-agent.d.ts.map +1 -0
- package/dist/runtime/acp/agents/cursor-agent.js +12 -0
- package/dist/runtime/acp/agents/cursor-agent.js.map +1 -0
- package/dist/runtime/acp/agents/executable-resolution.d.ts +6 -0
- package/dist/runtime/acp/agents/executable-resolution.d.ts.map +1 -0
- package/dist/runtime/acp/agents/executable-resolution.js +72 -0
- package/dist/runtime/acp/agents/executable-resolution.js.map +1 -0
- package/dist/runtime/acp/agents/gemini-cli.d.ts +2 -0
- package/dist/runtime/acp/agents/gemini-cli.d.ts.map +1 -0
- package/dist/runtime/acp/agents/gemini-cli.js +13 -0
- package/dist/runtime/acp/agents/gemini-cli.js.map +1 -0
- package/dist/runtime/acp/agents/grok-build.d.ts +2 -0
- package/dist/runtime/acp/agents/grok-build.d.ts.map +1 -0
- package/dist/runtime/acp/agents/grok-build.js +26 -0
- package/dist/runtime/acp/agents/grok-build.js.map +1 -0
- package/dist/runtime/acp/agents/kiro-cli.d.ts +2 -0
- package/dist/runtime/acp/agents/kiro-cli.d.ts.map +1 -0
- package/dist/runtime/acp/agents/kiro-cli.js +18 -0
- package/dist/runtime/acp/agents/kiro-cli.js.map +1 -0
- package/dist/runtime/acp/agents/managed-directory.d.ts +6 -0
- package/dist/runtime/acp/agents/managed-directory.d.ts.map +1 -0
- package/dist/runtime/acp/agents/managed-directory.js +31 -0
- package/dist/runtime/acp/agents/managed-directory.js.map +1 -0
- package/dist/runtime/acp/agents/minion-acp-sitecustomize.d.ts +2 -0
- package/dist/runtime/acp/agents/minion-acp-sitecustomize.d.ts.map +1 -0
- package/dist/runtime/acp/agents/minion-acp-sitecustomize.js +118 -0
- package/dist/runtime/acp/agents/minion-acp-sitecustomize.js.map +1 -0
- package/dist/runtime/acp/agents/minion-code.d.ts +2 -0
- package/dist/runtime/acp/agents/minion-code.d.ts.map +1 -0
- package/dist/runtime/acp/agents/minion-code.js +53 -0
- package/dist/runtime/acp/agents/minion-code.js.map +1 -0
- package/dist/runtime/acp/agents/native-agent.d.ts +23 -0
- package/dist/runtime/acp/agents/native-agent.d.ts.map +1 -0
- package/dist/runtime/acp/agents/native-agent.js +158 -0
- package/dist/runtime/acp/agents/native-agent.js.map +1 -0
- package/dist/runtime/acp/agents/opencode.d.ts +2 -0
- package/dist/runtime/acp/agents/opencode.d.ts.map +1 -0
- package/dist/runtime/acp/agents/opencode.js +35 -0
- package/dist/runtime/acp/agents/opencode.js.map +1 -0
- package/dist/runtime/acp/agents/pi-coding-agent.d.ts +3 -0
- package/dist/runtime/acp/agents/pi-coding-agent.d.ts.map +1 -0
- package/dist/runtime/acp/agents/pi-coding-agent.js +180 -0
- package/dist/runtime/acp/agents/pi-coding-agent.js.map +1 -0
- package/dist/runtime/acp/agents/qwen-code.d.ts +3 -0
- package/dist/runtime/acp/agents/qwen-code.d.ts.map +1 -0
- package/dist/runtime/acp/agents/qwen-code.js +67 -0
- package/dist/runtime/acp/agents/qwen-code.js.map +1 -0
- package/dist/runtime/acp/agents/registry.d.ts +5 -0
- package/dist/runtime/acp/agents/registry.d.ts.map +1 -0
- package/dist/runtime/acp/agents/registry.js +34 -0
- package/dist/runtime/acp/agents/registry.js.map +1 -0
- package/dist/runtime/acp/agents/types.d.ts +35 -0
- package/dist/runtime/acp/agents/types.d.ts.map +1 -0
- package/dist/runtime/acp/agents/types.js +2 -0
- package/dist/runtime/acp/agents/types.js.map +1 -0
- package/dist/runtime/acp/codex-provider-config.d.ts +9 -0
- package/dist/runtime/acp/codex-provider-config.d.ts.map +1 -0
- package/dist/runtime/acp/codex-provider-config.js +107 -0
- package/dist/runtime/acp/codex-provider-config.js.map +1 -0
- package/dist/runtime/acp/history-reconciler.d.ts +8 -0
- package/dist/runtime/acp/history-reconciler.d.ts.map +1 -0
- package/dist/runtime/acp/history-reconciler.js +82 -0
- package/dist/runtime/acp/history-reconciler.js.map +1 -0
- package/dist/runtime/acp/process-manager.d.ts +33 -0
- package/dist/runtime/acp/process-manager.d.ts.map +1 -0
- package/dist/runtime/acp/process-manager.js +204 -0
- package/dist/runtime/acp/process-manager.js.map +1 -0
- package/dist/runtime/acp/projector.d.ts +23 -0
- package/dist/runtime/acp/projector.d.ts.map +1 -0
- package/dist/runtime/acp/projector.js +354 -0
- package/dist/runtime/acp/projector.js.map +1 -0
- package/dist/runtime/cli-driver.d.ts +7 -0
- package/dist/runtime/cli-driver.d.ts.map +1 -0
- package/dist/runtime/cli-driver.js +282 -0
- package/dist/runtime/cli-driver.js.map +1 -0
- package/dist/runtime/cli-parser.d.ts +5 -0
- package/dist/runtime/cli-parser.d.ts.map +1 -0
- package/dist/runtime/cli-parser.js +15 -0
- package/dist/runtime/cli-parser.js.map +1 -0
- package/dist/runtime/contracts.d.ts +113 -0
- package/dist/runtime/contracts.d.ts.map +1 -0
- package/dist/runtime/contracts.js +2 -0
- package/dist/runtime/contracts.js.map +1 -0
- package/dist/runtime/errors.d.ts +9 -0
- package/dist/runtime/errors.d.ts.map +1 -0
- package/dist/runtime/errors.js +29 -0
- package/dist/runtime/errors.js.map +1 -0
- package/dist/runtime/index.d.ts +9 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +9 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/runtime-coordinator.d.ts +33 -0
- package/dist/runtime/runtime-coordinator.d.ts.map +1 -0
- package/dist/runtime/runtime-coordinator.js +347 -0
- package/dist/runtime/runtime-coordinator.js.map +1 -0
- package/dist/runtime/runtime-registry.d.ts +8 -0
- package/dist/runtime/runtime-registry.d.ts.map +1 -0
- package/dist/runtime/runtime-registry.js +17 -0
- package/dist/runtime/runtime-registry.js.map +1 -0
- package/dist/runtime/runtime-state-view.d.ts +5 -0
- package/dist/runtime/runtime-state-view.d.ts.map +1 -0
- package/dist/runtime/runtime-state-view.js +15 -0
- package/dist/runtime/runtime-state-view.js.map +1 -0
- package/dist/services/__tests__/provider-config.service.test.js +31 -2
- package/dist/services/__tests__/provider-config.service.test.js.map +1 -1
- package/dist/services/__tests__/session-manager.lifecycle.test.js +107 -2
- package/dist/services/__tests__/session-manager.lifecycle.test.js.map +1 -1
- package/dist/services/__tests__/session-manager.team-run.test.js +22 -14
- package/dist/services/__tests__/session-manager.team-run.test.js.map +1 -1
- package/dist/services/conversation.service.d.ts.map +1 -1
- package/dist/services/conversation.service.js +3 -0
- package/dist/services/conversation.service.js.map +1 -1
- package/dist/services/mcp-config.integration.test.d.ts +2 -0
- package/dist/services/mcp-config.integration.test.d.ts.map +1 -0
- package/dist/services/mcp-config.integration.test.js +75 -0
- package/dist/services/mcp-config.integration.test.js.map +1 -0
- package/dist/services/mcp-config.service.d.ts +10 -3
- package/dist/services/mcp-config.service.d.ts.map +1 -1
- package/dist/services/mcp-config.service.js +70 -18
- package/dist/services/mcp-config.service.js.map +1 -1
- package/dist/services/mcp-config.service.test.js +44 -13
- package/dist/services/mcp-config.service.test.js.map +1 -1
- package/dist/services/provider-config.service.d.ts.map +1 -1
- package/dist/services/provider-config.service.js +34 -5
- package/dist/services/provider-config.service.js.map +1 -1
- package/dist/services/provider-effective-connection.service.d.ts +7 -1
- package/dist/services/provider-effective-connection.service.d.ts.map +1 -1
- package/dist/services/provider-effective-connection.service.js +56 -1
- package/dist/services/provider-effective-connection.service.js.map +1 -1
- package/dist/services/session-manager.d.ts +32 -24
- package/dist/services/session-manager.d.ts.map +1 -1
- package/dist/services/session-manager.js +280 -445
- package/dist/services/session-manager.js.map +1 -1
- package/dist/services/team-reconciler.service.d.ts +3 -0
- package/dist/services/team-reconciler.service.d.ts.map +1 -1
- package/dist/services/team-reconciler.service.js +14 -3
- package/dist/services/team-reconciler.service.js.map +1 -1
- package/dist/services/team-run.service.d.ts.map +1 -1
- package/dist/services/team-run.service.js +5 -1
- package/dist/services/team-run.service.js.map +1 -1
- package/dist/services/workspace.service.d.ts +2 -0
- package/dist/services/workspace.service.d.ts.map +1 -1
- package/dist/socket/__tests__/socket-gateway.test.js +42 -0
- package/dist/socket/__tests__/socket-gateway.test.js.map +1 -1
- package/dist/socket/events.d.ts +1 -1
- package/dist/socket/events.d.ts.map +1 -1
- package/dist/socket/events.js.map +1 -1
- package/dist/socket/index.js +1 -1
- package/dist/socket/index.js.map +1 -1
- package/dist/socket/socket-gateway.d.ts.map +1 -1
- package/dist/socket/socket-gateway.js +13 -1
- package/dist/socket/socket-gateway.js.map +1 -1
- package/dist/types/index.d.ts +7 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -1
- package/dist/web/agent-icons/codex.svg +4 -1
- package/dist/web/agent-icons/grok-build.svg +5 -0
- package/dist/web/agent-icons/kiro-cli.svg +6 -0
- package/dist/web/agent-icons/opencode.svg +5 -0
- package/dist/web/agent-icons/pi-coding-agent.svg +5 -0
- package/dist/web/agent-icons/qwen-code.svg +13 -0
- package/dist/web/assets/{AgentDemoPage-C3SHOCDR.js → AgentDemoPage-XrttOpQW.js} +1 -1
- package/dist/web/assets/{AgentEnvironmentSettingsPage-D-BWLcC0.js → AgentEnvironmentSettingsPage-CAo0bCpZ.js} +1 -1
- package/dist/web/assets/AgentLogo-BCwbooTN.js +1 -0
- package/dist/web/assets/ConversationPage-kyHuICil.js +3 -0
- package/dist/web/assets/CreateTaskInput-B67vzMJD.js +1 -0
- package/dist/web/assets/{DemoPage-Cd1ggnZY.js → DemoPage-DHMh9-zU.js} +1 -1
- package/dist/web/assets/{GeneralSettingsPage-B9D9wA_9.js → GeneralSettingsPage-DvWaqR9O.js} +1 -1
- package/dist/web/assets/{Icons-CM6Yg2lw.js → Icons-DADUmnB1.js} +1 -1
- package/dist/web/assets/{LoadingPreviewPage-BJ_Se_T_.js → LoadingPreviewPage-Dk91Ua1W.js} +1 -1
- package/dist/web/assets/{McpSettingsPage-B5GtqNme.js → McpSettingsPage-CH8jFyxp.js} +1 -1
- package/dist/web/assets/{MemberAvatar-yC8O30hv.js → MemberAvatar-l-WCdlLA.js} +1 -1
- package/dist/web/assets/{NotificationSettingsPage-BaJpYHLD.js → NotificationSettingsPage-Byu8b9X3.js} +1 -1
- package/dist/web/assets/{ProfileSettingsPage-DYXew66J.js → ProfileSettingsPage-BdylqWUj.js} +1 -1
- package/dist/web/assets/{ProjectKanbanPage-DbgIwiUC.js → ProjectKanbanPage--cx6wNDR.js} +37 -36
- package/dist/web/assets/{ProjectSettingsPage-B2K8Kw_S.js → ProjectSettingsPage-6psG0Vfc.js} +1 -1
- package/dist/web/assets/ProviderSettingsPage-BPEEkhtA.js +93 -0
- package/dist/web/assets/{SettingsMasterDetail-ByKe_zcK.js → SettingsMasterDetail-DTGIIGdI.js} +1 -1
- package/dist/web/assets/{TeamSettingsPage-4sHo9Wpb.js → TeamSettingsPage-BXuG4Bou.js} +1 -1
- package/dist/web/assets/agent-tower-lockup-DPAcheCt.png +0 -0
- package/dist/web/assets/{arc-g6Y4qqcK.js → arc-DrcjdWTE.js} +1 -1
- package/dist/web/assets/{architectureDiagram-3BPJPVTR-ILRcqNPe.js → architectureDiagram-3BPJPVTR-CAoBhXSL.js} +1 -1
- package/dist/web/assets/{arrow-left-D0MkHwKU.js → arrow-left-CCWDjOmp.js} +1 -1
- package/dist/web/assets/{blockDiagram-GPEHLZMM-ZTMQ6CTT.js → blockDiagram-GPEHLZMM-CcTSBbUq.js} +1 -1
- package/dist/web/assets/{c4Diagram-AAUBKEIU-CAW8PcM8.js → c4Diagram-AAUBKEIU-BuUKdgUg.js} +1 -1
- package/dist/web/assets/channel-Bh_PCZNP.js +1 -0
- package/dist/web/assets/check-BN_PVKzE.js +1 -0
- package/dist/web/assets/{chevron-down-CmGXPki1.js → chevron-down-BQcW9sFf.js} +1 -1
- package/dist/web/assets/{chevron-right-jrkLz9qG.js → chevron-right-pH923eYp.js} +1 -1
- package/dist/web/assets/{chevron-up-UwBybVMK.js → chevron-up-DyQW115F.js} +1 -1
- package/dist/web/assets/{chunk-2J33WTMH-BvuLBX1d.js → chunk-2J33WTMH-BWNSmQa8.js} +1 -1
- package/dist/web/assets/{chunk-4BX2VUAB-DJO5Yx2A.js → chunk-4BX2VUAB-Blldhw0k.js} +1 -1
- package/dist/web/assets/{chunk-55IACEB6-Dc117Qwf.js → chunk-55IACEB6-hTffyPXL.js} +1 -1
- package/dist/web/assets/{chunk-727SXJPM-DsZmTw67.js → chunk-727SXJPM-Cd48r7c-.js} +1 -1
- package/dist/web/assets/{chunk-AQP2D5EJ-DgmF7gD6.js → chunk-AQP2D5EJ-BdDrOIL7.js} +1 -1
- package/dist/web/assets/{chunk-FMBD7UC4-vgh3Erl0.js → chunk-FMBD7UC4-6XIvQYVJ.js} +1 -1
- package/dist/web/assets/{chunk-ND2GUHAM-Ogtl4wwd.js → chunk-ND2GUHAM-BJlcb_pB.js} +1 -1
- package/dist/web/assets/{chunk-QZHKN3VN-Cif7bPpF.js → chunk-QZHKN3VN-3TZzFkxK.js} +1 -1
- package/dist/web/assets/{circle-alert-B6ZM3dSn.js → circle-alert-oa-BQ5e7.js} +1 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-B0lQFDoP.js +1 -0
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-B0lQFDoP.js +1 -0
- package/dist/web/assets/{code-block-OCS4YCEC-BQnKZly0.js → code-block-OCS4YCEC-xJQWFyR7.js} +1 -1
- package/dist/web/assets/{confirm-dialog-BZeaAl5j.js → confirm-dialog-CRiC3xBd.js} +1 -1
- package/dist/web/assets/{copy-DqNqPI8d.js → copy-DaoAUKTO.js} +1 -1
- package/dist/web/assets/{cose-bilkent-S5V4N54A-rxJB-TPw.js → cose-bilkent-S5V4N54A-Cjcm-rW_.js} +1 -1
- package/dist/web/assets/cssMode-_D6u4YDd.js +1 -0
- package/dist/web/assets/{dagre-BM42HDAG-BkB6VpXn.js → dagre-BM42HDAG-YqubcAJi.js} +1 -1
- package/dist/web/assets/{diagram-2AECGRRQ-BH2e-eqy.js → diagram-2AECGRRQ-Dk4ayFqg.js} +1 -1
- package/dist/web/assets/{diagram-5GNKFQAL-B0I47Yhs.js → diagram-5GNKFQAL-CQ0joYfB.js} +1 -1
- package/dist/web/assets/{diagram-KO2AKTUF-BVXUYRvI.js → diagram-KO2AKTUF-DmuZzIdW.js} +1 -1
- package/dist/web/assets/{diagram-LMA3HP47-C1fEOLke.js → diagram-LMA3HP47-YTPEfEZy.js} +1 -1
- package/dist/web/assets/{diagram-OG6HWLK6-CVE8cOcO.js → diagram-OG6HWLK6-DmwRuz8-.js} +1 -1
- package/dist/web/assets/{erDiagram-TEJ5UH35-qCfnXmfp.js → erDiagram-TEJ5UH35-LRL_DMXa.js} +1 -1
- package/dist/web/assets/{flowDiagram-I6XJVG4X-KMhbF5QC.js → flowDiagram-I6XJVG4X-ELBDyOvk.js} +1 -1
- package/dist/web/assets/{folder-picker-C3BgqamQ.js → folder-picker-WUhXxIM5.js} +1 -1
- package/dist/web/assets/{freemarker2-tYgVOcFl.js → freemarker2-DxJFkRz5.js} +2 -2
- package/dist/web/assets/{ganttDiagram-6RSMTGT7-CaX3qYV1.js → ganttDiagram-6RSMTGT7-D0e9ILuF.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PVQCEYII-CBAlZX7C.js → gitGraphDiagram-PVQCEYII-Ck6OXXw0.js} +1 -1
- package/dist/web/assets/handlebars-djdO6ZKR.js +1 -0
- package/dist/web/assets/html-CHeBxmFi.js +1 -0
- package/dist/web/assets/htmlMode-SZh8FaPi.js +1 -0
- package/dist/web/assets/index-CjAJoGg5.css +1 -0
- package/dist/web/assets/{index-BuQDZjol.js → index-CjdqAcbu.js} +4 -4
- package/dist/web/assets/{index-DHKgc87I.js → index-D9kBRMR0.js} +18 -18
- package/dist/web/assets/{infoDiagram-5YYISTIA-Bp_GeFtA.js → infoDiagram-5YYISTIA-Cx8be-MV.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-BfBNEV_D.js → ishikawaDiagram-YF4QCWOH-Dlc7akl7.js} +1 -1
- package/dist/web/assets/javascript-l6fV6hf7.js +1 -0
- package/dist/web/assets/{journeyDiagram-JHISSGLW-DJkUQG4Z.js → journeyDiagram-JHISSGLW-BVDSbS9-.js} +1 -1
- package/dist/web/assets/{jsonMode-D4_2geMa.js → jsonMode-B5CJhoWd.js} +2 -2
- package/dist/web/assets/{kanban-definition-UN3LZRKU-Bk7sA26p.js → kanban-definition-UN3LZRKU-nFR0zB7B.js} +1 -1
- package/dist/web/assets/{layers-BFkjcml2.js → layers-Bo4aml98.js} +1 -1
- package/dist/web/assets/{linear-CmC68WUf.js → linear-BCWZjcpP.js} +1 -1
- package/dist/web/assets/liquid-DkFOeJ6J.js +1 -0
- package/dist/web/assets/{lspLanguageFeatures-vY541IS0.js → lspLanguageFeatures-Cbk7wEkj.js} +1 -1
- package/dist/web/assets/mdx-BOPNdexu.js +1 -0
- package/dist/web/assets/{mermaid-NOHMQCX5-C6wHDXti.js → mermaid-NOHMQCX5-DWQaYVL0.js} +59 -61
- package/dist/web/assets/{message-square-Wwixl9YA.js → message-square-DxbkpGqF.js} +1 -1
- package/dist/web/assets/{mindmap-definition-RKZ34NQL-Ck1je2Hf.js → mindmap-definition-RKZ34NQL-LI7W1FIX.js} +1 -1
- package/dist/web/assets/{modal-kFSArLJi.js → modal-Cymk-6Df.js} +1 -1
- package/dist/web/assets/{monaco-D3FVQqPj.js → monaco-Bc-Z2u8N.js} +3 -3
- package/dist/web/assets/{pencil-5Kegi5_H.js → pencil-DOL2nlgg.js} +1 -1
- package/dist/web/assets/{pieDiagram-4H26LBE5-6Ao8YaoY.js → pieDiagram-4H26LBE5-mgUzAFkk.js} +1 -1
- package/dist/web/assets/python-D_wlYLCL.js +1 -0
- package/dist/web/assets/{quadrantDiagram-W4KKPZXB-md1eBgjS.js → quadrantDiagram-W4KKPZXB-CaDF2kqA.js} +1 -1
- package/dist/web/assets/razor-DBFVg4JU.js +1 -0
- package/dist/web/assets/{requirementDiagram-4Y6WPE33-DJOb4wf-.js → requirementDiagram-4Y6WPE33-DhmHdr_0.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-5OEKKPKP-B7srXhHb.js → sankeyDiagram-5OEKKPKP-B7qnGfue.js} +1 -1
- package/dist/web/assets/{select-C2v0aFwN.js → select-BpKQyMvD.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-3UESZ5HK-L0qwgf37.js → sequenceDiagram-3UESZ5HK-D2LhPgpM.js} +1 -1
- package/dist/web/assets/{stateDiagram-AJRCARHV-DGbH9dJ5.js → stateDiagram-AJRCARHV-ClkO4Gu5.js} +1 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-YnSeSD_N.js +1 -0
- package/dist/web/assets/{switch-DjnF5A3R.js → switch-BJ4Ar_OA.js} +1 -1
- package/dist/web/assets/{textarea-CbZnd5PO.js → textarea-DjwjAAG8.js} +1 -1
- package/dist/web/assets/{timeline-definition-PNZ67QCA-Dku_Yjmk.js → timeline-definition-PNZ67QCA-DhGIG-GC.js} +1 -1
- package/dist/web/assets/{trash-2-DA--Uikt.js → trash-2-R46i6Uus.js} +1 -1
- package/dist/web/assets/{tsMode-CRNPFR24.js → tsMode-CKaqpIrz.js} +2 -2
- package/dist/web/assets/typescript-DsixnGVt.js +1 -0
- package/dist/web/assets/{upload-hWnFHuhE.js → upload-CgWqsmdI.js} +1 -1
- package/dist/web/assets/{use-profiles-roHXR8He.js → use-profiles-BlGgvdYm.js} +1 -1
- package/dist/web/assets/{use-projects-DiJMGduU.js → use-projects-Cuv0A0RC.js} +1 -1
- package/dist/web/assets/{use-providers-efX4HCcr.js → use-providers-DLcAY6E1.js} +1 -1
- package/dist/web/assets/{useNormalizedLogs-xEobyuGF.js → useNormalizedLogs-tfxFAJOF.js} +1 -1
- package/dist/web/assets/{vennDiagram-CIIHVFJN-_ufI1hxk.js → vennDiagram-CIIHVFJN-BngQhsYJ.js} +1 -1
- package/dist/web/assets/{wardley-L42UT6IY-Dve662aX.js → wardley-L42UT6IY-BEY6sftT.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-YWT4CUSO-Dn2x3M_Q.js → wardleyDiagram-YWT4CUSO-IH_Yh-cw.js} +1 -1
- package/dist/web/assets/xml-dEcQ1gzo.js +1 -0
- package/dist/web/assets/{xychartDiagram-2RQKCTM6-BMe6JPre.js → xychartDiagram-2RQKCTM6-BdrGFDsr.js} +1 -1
- package/dist/web/assets/yaml-BfGVqGj4.js +1 -0
- package/dist/web/index.html +2 -2
- package/node_modules/@agent-tower/shared/dist/agent-runtime-support.d.ts +11 -0
- package/node_modules/@agent-tower/shared/dist/agent-runtime-support.d.ts.map +1 -0
- package/node_modules/@agent-tower/shared/dist/agent-runtime-support.js +26 -0
- package/node_modules/@agent-tower/shared/dist/agent-runtime-support.js.map +1 -0
- package/node_modules/@agent-tower/shared/dist/index.d.ts +1 -0
- package/node_modules/@agent-tower/shared/dist/index.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/index.js +1 -0
- package/node_modules/@agent-tower/shared/dist/index.js.map +1 -1
- package/node_modules/@agent-tower/shared/dist/log-adapter.d.ts +38 -3
- package/node_modules/@agent-tower/shared/dist/log-adapter.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/log-adapter.js +21 -2
- package/node_modules/@agent-tower/shared/dist/log-adapter.js.map +1 -1
- package/node_modules/@agent-tower/shared/dist/provider-capabilities.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/provider-capabilities.js +58 -0
- package/node_modules/@agent-tower/shared/dist/provider-capabilities.js.map +1 -1
- package/node_modules/@agent-tower/shared/dist/socket/events.d.ts +17 -0
- package/node_modules/@agent-tower/shared/dist/socket/events.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/socket/events.js +3 -0
- package/node_modules/@agent-tower/shared/dist/socket/events.js.map +1 -1
- package/node_modules/@agent-tower/shared/dist/types.d.ts +63 -2
- package/node_modules/@agent-tower/shared/dist/types.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/types.js +12 -0
- package/node_modules/@agent-tower/shared/dist/types.js.map +1 -1
- package/package.json +9 -3
- package/prisma/migrations/20260723000000_add_agent_runtime/migration.sql +2 -0
- package/prisma/schema.prisma +2 -0
- package/scripts/patch-claude-agent-acp.mjs +77 -0
- package/scripts/postinstall.js +5 -0
- package/dist/web/assets/AgentLogo-DOc8QQHe.js +0 -1
- package/dist/web/assets/ConversationPage-sknzMK-I.js +0 -3
- package/dist/web/assets/CreateTaskInput-Cn0k5D8K.js +0 -1
- package/dist/web/assets/ProviderSettingsPage-n2AFrtkZ.js +0 -93
- package/dist/web/assets/channel-DpisCjBV.js +0 -1
- package/dist/web/assets/check-VMcYyBr4.js +0 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-ByrAXg7x.js +0 -1
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-ByrAXg7x.js +0 -1
- package/dist/web/assets/cssMode-BvIKUSIl.js +0 -1
- package/dist/web/assets/handlebars-O23dzm6n.js +0 -1
- package/dist/web/assets/html-QaPgl834.js +0 -1
- package/dist/web/assets/htmlMode-CWyii3pY.js +0 -1
- package/dist/web/assets/index-BeEbDvc9.css +0 -1
- package/dist/web/assets/javascript-C_IpQDkn.js +0 -1
- package/dist/web/assets/liquid-C6FS7ekL.js +0 -1
- package/dist/web/assets/mdx-LQJToB8m.js +0 -1
- package/dist/web/assets/python-HMxhKAEt.js +0 -1
- package/dist/web/assets/razor-CfDc2DcT.js +0 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-Bq1LxgY_.js +0 -1
- package/dist/web/assets/typescript-CNopspEc.js +0 -1
- package/dist/web/assets/xml-dqhfYLW3.js +0 -1
- package/dist/web/assets/yaml-BOxNX83z.js +0 -1
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import{k as qe,m as dt,q as ut,p as mt,u as X,r as E,j as n,l as K,a4 as Je,T as Pe,I as se,B as T,a3 as ft,S as Re,_ as pt,g as xt,ac as gt,s as ht,C as vt,t as L,a0 as bt,i as Ne,ad as yt,a9 as Ee}from"./index-DHKgc87I.js";import{a as jt,b as wt,u as Nt,c as Et,d as Ct,e as St,f as kt,g as Pt,h as _t}from"./use-providers-efX4HCcr.js";import{C as It}from"./confirm-dialog-BZeaAl5j.js";import{M as _e}from"./modal-kFSArLJi.js";import{S as Tt}from"./select-C2v0aFwN.js";import{T as Le}from"./textarea-CbZnd5PO.js";import{S as We}from"./switch-DjnF5A3R.js";import{i as Ie,h as _,P as ve,j as me}from"./mermaid-NOHMQCX5-C6wHDXti.js";import{A as fe}from"./AgentLogo-DOc8QQHe.js";import{C as Xe}from"./chevron-down-CmGXPki1.js";import{S as At}from"./SettingsMasterDetail-ByKe_zcK.js";import{T as Ve,P as Ce}from"./trash-2-DA--Uikt.js";import{U as Ot}from"./upload-hWnFHuhE.js";import{P as Dt}from"./pencil-5Kegi5_H.js";import"./check-VMcYyBr4.js";import"./chevron-right-jrkLz9qG.js";import"./arrow-left-D0MkHwKU.js";const Ut=[["path",{d:"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2",key:"18mbvz"}],["path",{d:"M6.453 15h11.094",key:"3shlmq"}],["path",{d:"M8.5 2h7",key:"csnxdl"}]],Rt=qe("flask-conical",Ut);const Lt=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],Kt=qe("key-round",Lt);function Bt(e,t){let r=e.slice(0,t).split(/\r\n|\n|\r/g);return[r.length,r.pop().length+1]}function zt(e,t,r){let s=e.split(/\r\n|\n|\r/g),a="",o=(Math.log10(t+1)|0)+1;for(let i=t-1;i<=t+1;i++){let c=s[i-1];c&&(a+=i.toString().padEnd(o," "),a+=": ",a+=c,a+=`
|
|
2
|
-
`,i===t&&(a+=" ".repeat(o+r+2),a+=`^
|
|
3
|
-
`))}return a}class w extends Error{line;column;codeblock;constructor(t,r){const[s,a]=Bt(r.toml,r.ptr),o=zt(r.toml,s,a);super(`Invalid TOML document: ${t}
|
|
4
|
-
|
|
5
|
-
${o}`,r),this.line=s,this.column=a,this.codeblock=o}}function Mt(e,t){let r=0;for(;e[t-++r]==="\\";);return--r&&r%2}function Se(e,t=0,r=e.length){let s=e.indexOf(`
|
|
6
|
-
`,t);return e[s-1]==="\r"&&s--,s<=r?s:-1}function ye(e,t){for(let r=t;r<e.length;r++){let s=e[r];if(s===`
|
|
7
|
-
`)return r;if(s==="\r"&&e[r+1]===`
|
|
8
|
-
`)return r+1;if(s<" "&&s!==" "||s==="")throw new w("control characters are not allowed in comments",{toml:e,ptr:t})}return e.length}function $(e,t,r,s){let a;for(;(a=e[t])===" "||a===" "||!r&&(a===`
|
|
9
|
-
`||a==="\r"&&e[t+1]===`
|
|
10
|
-
`);)t++;return s||a!=="#"?t:$(e,ye(e,t),r)}function Ft(e,t,r,s,a=!1){if(!s)return t=Se(e,t),t<0?e.length:t;for(let o=t;o<e.length;o++){let i=e[o];if(i==="#")o=Se(e,o);else{if(i===r)return o+1;if(i===s||a&&(i===`
|
|
11
|
-
`||i==="\r"&&e[o+1]===`
|
|
12
|
-
`))return o}}throw new w("cannot find end of structure",{toml:e,ptr:t})}function Ge(e,t){let r=e[t],s=r===e[t+1]&&e[t+1]===e[t+2]?e.slice(t,t+3):r;t+=s.length-1;do t=e.indexOf(s,++t);while(t>-1&&r!=="'"&&Mt(e,t));return t>-1&&(t+=s.length,s.length>1&&(e[t]===r&&t++,e[t]===r&&t++)),t}let $t=/^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|[-+]\d{2}:\d{2})?$/i;class ae extends Date{#t=!1;#n=!1;#e=null;constructor(t){let r=!0,s=!0,a="Z";if(typeof t=="string"){let o=t.match($t);o?(o[1]||(r=!1,t=`0000-01-01T${t}`),s=!!o[2],s&&t[10]===" "&&(t=t.replace(" ","T")),o[2]&&+o[2]>23?t="":(a=o[3]||null,t=t.toUpperCase(),!a&&s&&(t+="Z"))):t=""}super(t),isNaN(this.getTime())||(this.#t=r,this.#n=s,this.#e=a)}isDateTime(){return this.#t&&this.#n}isLocal(){return!this.#t||!this.#n||!this.#e}isDate(){return this.#t&&!this.#n}isTime(){return this.#n&&!this.#t}isValid(){return this.#t||this.#n}toISOString(){let t=super.toISOString();if(this.isDate())return t.slice(0,10);if(this.isTime())return t.slice(11,23);if(this.#e===null)return t.slice(0,-1);if(this.#e==="Z")return t;let r=+this.#e.slice(1,3)*60+ +this.#e.slice(4,6);return r=this.#e[0]==="-"?r:-r,new Date(this.getTime()-r*6e4).toISOString().slice(0,-1)+this.#e}static wrapAsOffsetDateTime(t,r="Z"){let s=new ae(t);return s.#e=r,s}static wrapAsLocalDateTime(t){let r=new ae(t);return r.#e=null,r}static wrapAsLocalDate(t){let r=new ae(t);return r.#n=!1,r.#e=null,r}static wrapAsLocalTime(t){let r=new ae(t);return r.#t=!1,r.#e=null,r}}let qt=/^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/,Jt=/^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/,Wt=/^[+-]?0[0-9_]/,Xt=/^[0-9a-f]{2,8}$/i,Ke={b:"\b",t:" ",n:`
|
|
13
|
-
`,f:"\f",r:"\r",e:"\x1B",'"':'"',"\\":"\\"};function Ye(e,t=0,r=e.length){let s=e[t]==="'",a=e[t++]===e[t]&&e[t]===e[t+1];a&&(r-=2,e[t+=2]==="\r"&&t++,e[t]===`
|
|
14
|
-
`&&t++);let o=0,i,c="",d=t;for(;t<r-1;){let l=e[t++];if(l===`
|
|
15
|
-
`||l==="\r"&&e[t]===`
|
|
16
|
-
`){if(!a)throw new w("newlines are not allowed in strings",{toml:e,ptr:t-1})}else if(l<" "&&l!==" "||l==="")throw new w("control characters are not allowed in strings",{toml:e,ptr:t-1});if(i){if(i=!1,l==="x"||l==="u"||l==="U"){let m=e.slice(t,t+=l==="x"?2:l==="u"?4:8);if(!Xt.test(m))throw new w("invalid unicode escape",{toml:e,ptr:o});try{c+=String.fromCodePoint(parseInt(m,16))}catch{throw new w("invalid unicode escape",{toml:e,ptr:o})}}else if(a&&(l===`
|
|
17
|
-
`||l===" "||l===" "||l==="\r")){if(t=$(e,t-1,!0),e[t]!==`
|
|
18
|
-
`&&e[t]!=="\r")throw new w("invalid escape: only line-ending whitespace may be escaped",{toml:e,ptr:o});t=$(e,t)}else if(l in Ke)c+=Ke[l];else throw new w("unrecognized escape sequence",{toml:e,ptr:o});d=t}else!s&&l==="\\"&&(o=t-1,i=!0,c+=e.slice(d,o))}return c+e.slice(d,r-1)}function Vt(e,t,r,s){if(e==="true")return!0;if(e==="false")return!1;if(e==="-inf")return-1/0;if(e==="inf"||e==="+inf")return 1/0;if(e==="nan"||e==="+nan"||e==="-nan")return NaN;if(e==="-0")return s?0n:0;let a=qt.test(e);if(a||Jt.test(e)){if(Wt.test(e))throw new w("leading zeroes are not allowed",{toml:t,ptr:r});e=e.replace(/_/g,"");let i=+e;if(isNaN(i))throw new w("invalid number",{toml:t,ptr:r});if(a){if((a=!Number.isSafeInteger(i))&&!s)throw new w("integer value cannot be represented losslessly",{toml:t,ptr:r});(a||s===!0)&&(i=BigInt(e))}return i}const o=new ae(e);if(!o.isValid())throw new w("invalid value",{toml:t,ptr:r});return o}function Gt(e,t,r){let s=e.slice(t,r),a=s.indexOf("#");return a>-1&&(ye(e,a),s=s.slice(0,a)),[s.trimEnd(),a]}function Te(e,t,r,s,a){if(s===0)throw new w("document contains excessively nested structures. aborting.",{toml:e,ptr:t});let o=e[t];if(o==="["||o==="{"){let[d,l]=o==="["?Ht(e,t,s,a):Zt(e,t,s,a);if(r){if(l=$(e,l),e[l]===",")l++;else if(e[l]!==r)throw new w("expected comma or end of structure",{toml:e,ptr:l})}return[d,l]}let i;if(o==='"'||o==="'"){i=Ge(e,t);let d=Ye(e,t,i);if(r){if(i=$(e,i),e[i]&&e[i]!==","&&e[i]!==r&&e[i]!==`
|
|
19
|
-
`&&e[i]!=="\r")throw new w("unexpected character encountered",{toml:e,ptr:i});i+=+(e[i]===",")}return[d,i]}i=Ft(e,t,",",r);let c=Gt(e,t,i-+(e[i-1]===","));if(!c[0])throw new w("incomplete key-value declaration: no value specified",{toml:e,ptr:t});return r&&c[1]>-1&&(i=$(e,t+c[1]),i+=+(e[i]===",")),[Vt(c[0],e,t,a),i]}let Yt=/^[a-zA-Z0-9-_]+[ \t]*$/;function ke(e,t,r="="){let s=t-1,a=[],o=e.indexOf(r,t);if(o<0)throw new w("incomplete key-value: cannot find end of key",{toml:e,ptr:t});do{let i=e[t=++s];if(i!==" "&&i!==" ")if(i==='"'||i==="'"){if(i===e[t+1]&&i===e[t+2])throw new w("multiline strings are not allowed in keys",{toml:e,ptr:t});let c=Ge(e,t);if(c<0)throw new w("unfinished string encountered",{toml:e,ptr:t});s=e.indexOf(".",c);let d=e.slice(c,s<0||s>o?o:s),l=Se(d);if(l>-1)throw new w("newlines are not allowed in keys",{toml:e,ptr:t+s+l});if(d.trimStart())throw new w("found extra tokens after the string part",{toml:e,ptr:c});if(o<c&&(o=e.indexOf(r,c),o<0))throw new w("incomplete key-value: cannot find end of key",{toml:e,ptr:t});a.push(Ye(e,t,c))}else{s=e.indexOf(".",t);let c=e.slice(t,s<0||s>o?o:s);if(!Yt.test(c))throw new w("only letter, numbers, dashes and underscores are allowed in keys",{toml:e,ptr:t});a.push(c.trimEnd())}}while(s+1&&s<o);return[a,$(e,o+1,!0,!0)]}function Zt(e,t,r,s){let a={},o=new Set,i;for(t++;(i=e[t++])!=="}"&&i;){if(i===",")throw new w("expected value, found comma",{toml:e,ptr:t-1});if(i==="#")t=ye(e,t);else if(i!==" "&&i!==" "&&i!==`
|
|
20
|
-
`&&i!=="\r"){let c,d=a,l=!1,[m,f]=ke(e,t-1);for(let C=0;C<m.length;C++){if(C&&(d=l?d[c]:d[c]={}),c=m[C],(l=Object.hasOwn(d,c))&&(typeof d[c]!="object"||o.has(d[c])))throw new w("trying to redefine an already defined value",{toml:e,ptr:t});!l&&c==="__proto__"&&Object.defineProperty(d,c,{enumerable:!0,configurable:!0,writable:!0})}if(l)throw new w("trying to redefine an already defined value",{toml:e,ptr:t});let[v,j]=Te(e,f,"}",r-1,s);o.add(v),d[c]=v,t=j}}if(!i)throw new w("unfinished table encountered",{toml:e,ptr:t});return[a,t]}function Ht(e,t,r,s){let a=[],o;for(t++;(o=e[t++])!=="]"&&o;){if(o===",")throw new w("expected value, found comma",{toml:e,ptr:t-1});if(o==="#")t=ye(e,t);else if(o!==" "&&o!==" "&&o!==`
|
|
21
|
-
`&&o!=="\r"){let i=Te(e,t-1,"]",r-1,s);a.push(i[0]),t=i[1]}}if(!o)throw new w("unfinished array encountered",{toml:e,ptr:t});return[a,t]}function Be(e,t,r,s){let a=t,o=r,i,c=!1,d;for(let l=0;l<e.length;l++){if(l){if(a=c?a[i]:a[i]={},o=(d=o[i]).c,s===0&&(d.t===1||d.t===2))return null;if(d.t===2){let m=a.length-1;a=a[m],o=o[m].c}}if(i=e[l],(c=Object.hasOwn(a,i))&&o[i]?.t===0&&o[i]?.d)return null;c||(i==="__proto__"&&(Object.defineProperty(a,i,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(o,i,{enumerable:!0,configurable:!0,writable:!0})),o[i]={t:l<e.length-1&&s===2?3:s,d:!1,i:0,c:{}})}if(d=o[i],d.t!==s&&!(s===1&&d.t===3)||(s===2&&(d.d||(d.d=!0,a[i]=[]),a[i].push(a={}),d.c[d.i++]=d={t:1,d:!1,i:0,c:{}}),d.d))return null;if(d.d=!0,s===1)a=c?a[i]:a[i]={};else if(s===0&&c)return null;return[i,a,d.c]}function oe(e,{maxDepth:t=1e3,integersAsBigInt:r}={}){let s={},a={},o=s,i=a;for(let c=$(e,0);c<e.length;){if(e[c]==="["){let d=e[++c]==="[",l=ke(e,c+=+d,"]");if(d){if(e[l[1]-1]!=="]")throw new w("expected end of table declaration",{toml:e,ptr:l[1]-1});l[1]++}let m=Be(l[0],s,a,d?2:1);if(!m)throw new w("trying to redefine an already defined table or value",{toml:e,ptr:c});i=m[2],o=m[1],c=l[1]}else{let d=ke(e,c),l=Be(d[0],o,i,0);if(!l)throw new w("trying to redefine an already defined table or value",{toml:e,ptr:c});let m=Te(e,d[1],void 0,t,r);l[1][l[0]]=m[0],c=m[1]}if(c=$(e,c,!0),e[c]&&e[c]!==`
|
|
22
|
-
`&&e[c]!=="\r")throw new w("each key-value declaration must be followed by an end-of-line",{toml:e,ptr:c});c=$(e,c)}return s}function Qt(){return dt({queryKey:ut.system.cursorAgentModels,queryFn:()=>mt.get("/system/cursor-agent-models"),staleTime:1e3*60*10})}function en({value:e,onChange:t}){const{t:r}=X(),{data:s,isLoading:a,isError:o}=Qt(),i=s?.models??[],[c,d]=E.useState(!1),[l,m]=E.useState(""),f=E.useMemo(()=>{const v=l.trim().toLowerCase();return v?i.filter(j=>j.id.toLowerCase().includes(v)||j.label.toLowerCase().includes(v)):i},[i,l]);return n.jsxs("div",{className:"flex flex-col gap-2 flex-1 min-w-0",children:[n.jsx("input",{type:"text",value:e,onChange:v=>{const j=v.target.value;t(j===""?void 0:j)},placeholder:r("留空为 auto;或直接输入模型 ID(与 cursor-agent --model 一致)"),className:"w-full px-3 py-1.5 text-sm border border-neutral-200 rounded focus:outline-none focus:ring-1 focus:ring-neutral-900 font-mono"}),n.jsxs("button",{type:"button",onClick:()=>d(v=>!v),disabled:a,className:"flex items-center gap-1 text-xs text-neutral-600 hover:text-neutral-900 disabled:opacity-50 w-fit",children:[n.jsx(Xe,{size:14,className:K("transition-transform",c&&"rotate-180")}),a?r("正在加载 cursor-agent 模型列表…"):c?r("收起列表"):r("从本机 cursor-agent 选择({count} 个)",{count:i.length})]}),c&&!a&&n.jsxs("div",{className:"rounded-lg border border-neutral-200 bg-white shadow-sm overflow-hidden",children:[n.jsx("input",{type:"text",value:l,onChange:v=>m(v.target.value),placeholder:r("筛选模型…"),className:"w-full px-3 py-2 text-sm border-b border-neutral-100 focus:outline-none focus:ring-1 focus:ring-inset focus:ring-neutral-300"}),n.jsxs("div",{className:"max-h-[min(50vh,22rem)] overflow-y-auto py-1",children:[n.jsx("button",{type:"button",onClick:()=>{t(void 0),d(!1),m("")},className:K("w-full px-3 py-2 text-left text-sm hover:bg-neutral-50",e?"text-neutral-700":"bg-neutral-50 font-medium"),children:r("默认 (auto)")}),f.map(v=>n.jsxs("button",{type:"button",onClick:()=>{t(v.id),d(!1),m("")},className:K("w-full px-3 py-2 text-left text-sm hover:bg-neutral-50 border-t border-neutral-100",e===v.id?"bg-blue-50/80":""),children:[n.jsx("div",{className:"font-mono text-xs text-neutral-900 break-all",children:v.id}),n.jsx("div",{className:"text-xs text-neutral-500 mt-0.5 break-words",children:v.label})]},v.id)),f.length===0&&n.jsx("div",{className:"px-3 py-4 text-xs text-neutral-400 text-center",children:r("无匹配项")})]})]}),(o||s?.error)&&n.jsxs("p",{className:"text-xs text-amber-700",children:[r("无法从本机加载模型列表({error})。仍可手动输入;或在安装 cursor-agent 的机器上运行",{error:s?.error??r("请求失败")}),n.jsx("code",{className:"mx-0.5 bg-neutral-100 px-1 rounded text-[11px]",children:"cursor-agent --list-models"}),r("查看 ID。")]})]})}function tn(e){if(!e)return null;try{const t=new URL(e);return t.protocol!=="http:"&&t.protocol!=="https:"?null:`${t.origin}${t.pathname}`}catch{return null}}function nn(e,t){if(!e)return null;const r=new Date(e);return Number.isNaN(r.getTime())?null:new Intl.DateTimeFormat(t,{dateStyle:"medium",timeStyle:"medium"}).format(r)}function rn({result:e}){const{locale:t,t:r}=X(),s=tn(e.target?.endpoint),a=nn(e.testedAt,t);return n.jsx("div",{"data-provider-test-result":!0,className:K("rounded-lg border px-4 py-3 text-sm",e.ok?"border-success/30 bg-success/10 text-success":"border-warning/30 bg-warning/10 text-foreground"),children:n.jsxs("div",{className:"flex min-w-0 items-start gap-2",children:[e.ok?n.jsx(Je,{size:16,className:"shrink-0"}):n.jsx(Pe,{size:16,className:"shrink-0 text-warning"}),n.jsxs("div",{className:"min-w-0 flex-1",children:[n.jsx("div",{className:"font-medium",children:e.ok?e.stage==="connection"?r("连接测试通过"):r("本机可用性检查通过"):r("配置检查未通过")}),n.jsx("div",{className:"mt-0.5 break-words text-xs opacity-80",children:e.summary}),(s||a)&&n.jsxs("dl",{className:"mt-2 grid min-w-0 grid-cols-[auto_minmax(0,1fr)] gap-x-2 gap-y-1 text-xs opacity-80",children:[s&&n.jsxs(n.Fragment,{children:[n.jsx("dt",{className:"font-medium",children:r("测试对象")}),n.jsx("dd",{className:"min-w-0",children:n.jsx("code",{className:"break-all",children:s})})]}),a&&n.jsxs(n.Fragment,{children:[n.jsx("dt",{className:"font-medium",children:r("测试时间")}),n.jsx("dd",{className:"min-w-0 break-words",children:n.jsx("time",{dateTime:e.testedAt,children:a})})]})]}),!e.ok&&n.jsx("div",{className:"mt-1 text-xs opacity-80",children:r("测试失败不会阻止保存。")})]})]})})}function sn({options:e,value:t,onChange:r,label:s,efficiencyLabel:a,intelligenceLabel:o,followCliLabel:i,currentLabel:c,disabled:d=!1,error:l}){const m=e.findIndex(b=>b.value===t),f=t==="",v=E.useRef(m>=0?t:void 0),j=E.useRef(null),C=E.useRef(null),[I,A]=E.useState(!1);E.useEffect(()=>{m>=0&&(v.current=t)},[m,t]);const O=b=>{if(d||f||e.length===0)return;const P=e[Math.max(0,Math.min(e.length-1,b))];P&&P.value!==t&&r(P.value)},q=b=>{const P=C.current?.getBoundingClientRect();if(!P||P.width<=0)return;const Q=Math.max(0,Math.min(1,(b-P.left)/P.width));O(Math.round(Q*(e.length-1)))},R=m>=0?e[m]:void 0,B=m<0||e.length<2?0:m/(e.length-1)*100,z=E.useId(),J=`${z}-label`,M=`${z}-current`,U=`${z}-error`;return n.jsxs("div",{className:"space-y-2.5",children:[n.jsxs("div",{className:"flex min-h-8 items-center justify-between gap-3",children:[n.jsx("label",{id:J,className:"text-xs font-medium text-foreground",children:s}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"text-xs text-muted-foreground",children:i}),n.jsx(We,{checked:f,disabled:d,onCheckedChange:b=>{r(b?"":v.current??e.find(P=>P.value==="medium")?.value??e[0]?.value??"")},"aria-label":i})]})]}),n.jsxs("div",{className:"flex items-center justify-between text-[11px] text-muted-foreground","aria-hidden":"true",children:[n.jsx("span",{children:a}),n.jsx("span",{children:o})]}),n.jsxs("div",{id:z,ref:C,role:"slider",tabIndex:f||d?-1:0,"aria-labelledby":J,"aria-disabled":f||d,"aria-valuemin":0,"aria-valuemax":Math.max(0,e.length-1),"aria-valuenow":m>=0?m:void 0,"aria-valuetext":R?`${R.label}, ${R.value}`:i,"aria-describedby":l?`${M} ${U}`:M,onKeyDown:b=>{if(f||d||m<0)return;let P=m;if(b.key==="ArrowLeft"||b.key==="ArrowDown")P-=1;else if(b.key==="ArrowRight"||b.key==="ArrowUp")P+=1;else if(b.key==="Home")P=0;else if(b.key==="End")P=e.length-1;else return;b.preventDefault(),O(P)},onPointerDown:b=>{f||d||(j.current=b.pointerId,A(!0),b.currentTarget.setPointerCapture?.(b.pointerId),q(b.clientX))},onPointerMove:b=>{j.current===b.pointerId&&q(b.clientX)},onPointerUp:b=>{j.current===b.pointerId&&(j.current=null,A(!1),b.currentTarget.releasePointerCapture?.(b.pointerId))},onPointerCancel:()=>{j.current=null,A(!1)},className:K("relative mx-2.5 flex h-11 touch-pan-y items-center outline-none select-none",f||d?"cursor-not-allowed opacity-55":"cursor-pointer","focus-visible:ring-2 focus-visible:ring-ring/60 focus-visible:ring-offset-2"),children:[n.jsx("div",{className:"absolute inset-x-0 h-1 rounded-full bg-border"}),!f&&n.jsx("div",{className:"absolute left-0 h-1 rounded-full bg-primary transition-[width] duration-150 motion-reduce:transition-none",style:{width:`${B}%`}}),e.map((b,P)=>n.jsx("span",{"aria-hidden":"true",className:K("absolute size-3 -translate-x-1/2 rounded-full border-2 transition-colors motion-reduce:transition-none",!f&&P<=m?"border-primary bg-primary":"border-border bg-background"),style:{left:`${e.length<2?0:P/(e.length-1)*100}%`}},b.value)),!f&&R&&n.jsx("span",{"aria-hidden":"true",className:K("absolute size-5 -translate-x-1/2 rounded-full border-[5px] border-primary bg-background shadow-sm transition-[left,transform] duration-150 motion-reduce:transition-none",I&&"scale-110"),style:{left:`${B}%`}})]}),n.jsx("div",{id:M,className:"min-h-5 text-center text-xs text-muted-foreground",children:f?i:`${c}: ${R?.label??t} (${R?.value??t})`}),l&&n.jsx("p",{id:U,role:"alert",className:"text-xs text-destructive",children:l})]})}function an(e){if(!e)return null;const t=e.trim();if(!t.startsWith("http://")&&!t.startsWith("https://"))return"API URL must be a complete http:// or https:// URL";try{if(new URL(t).host)return null}catch{}return"API URL must be a complete http:// or https:// URL"}function on(e,t,r){return r==="advanced"?"advanced":e?.write.action==="clear"?"unconfigured":e?.write.action==="replace"?e.value?"configured":"unconfigured":e?.configured||t?"configured":"unconfigured"}function ln(e,t,r,s){let a=e.config,o=e.settings;const i=c=>{a={...a},r?a[c]=r:delete a[c]};return t==="apiBaseUrl"&&s.apiBaseUrl?s.apiBaseUrl.kind==="config"?i(s.apiBaseUrl.path):s.apiBaseUrl.kind==="settings"&&(o=e.agentType==="CODEX"?mn(o,r):ue(o,s.apiBaseUrl.path,r||void 0)):t==="model"?(s.model.kind==="config"?i(s.model.path):s.model.kind==="settings"&&(o=ue(o,s.model.path,r||void 0)),e.agentType==="CODEX"&&(o=ue(o,"model",void 0))):t==="reasoningEffort"&&s.reasoningEffort&&(s.reasoningEffort.kind==="config"?i(s.reasoningEffort.path):s.reasoningEffort.kind==="settings"&&(o=ue(o,s.reasoningEffort.path,r||void 0))),{...e,config:a,settings:o,simplified:{...e.simplified,[t]:r}}}function ge(e){let t="",r=!1;for(let s=0;s<e.length;s+=1){const a=e[s];if(r){r=!1;continue}if(t==='"'&&a==="\\"){r=!0;continue}if((a==='"'||a==="'")&&!t)t=a;else if(a===t)t="";else if(a==="#"&&!t)return{value:e.slice(0,s).trimEnd(),comment:e.slice(s)}}return{value:e.trimEnd(),comment:""}}function ze(e){const t=[];let r=0,s="",a=!1;for(let o=0;o<=e.length;o+=1){const i=e[o]??".";if(a){a=!1;continue}if(s==='"'&&i==="\\"){a=!0;continue}if((i==='"'||i==="'")&&!s)s=i;else if(i===s)s="";else if(i==="."&&!s){const c=e.slice(r,o).trim();if(c.startsWith('"')&&c.endsWith('"'))try{t.push(JSON.parse(c))}catch{t.push(c.slice(1,-1))}else c.startsWith("'")&&c.endsWith("'")?t.push(c.slice(1,-1)):c&&t.push(c);r=o+1}}return t}function cn(e){let t="",r=!1;for(let s=0;s<e.length;s+=1){const a=e[s];if(r){r=!1;continue}if(t==='"'&&a==="\\"){r=!0;continue}if((a==='"'||a==="'")&&!t)t=a;else if(a===t)t="";else{if(a==="="&&!t)return s;if(a==="#"&&!t)return-1}}return-1}function Me(e,t){return e.length===t.length&&e.every((r,s)=>r===t[s])}function dn(e,t){let r=t,s,a;for(let o=0;o<e.length;o+=1){const i=e[o];if(r){if(r==='"""'&&i==="\\"){o+=1;continue}const d=r[0];if(i===d){let l=o+1;for(;e[l]===d;)l+=1;if(l-o<r.length)continue;a??=l,r=void 0,o=l-1}continue}if(s){s==='"'&&i==="\\"?o+=1:i===s&&(s=void 0);continue}if(i==="#")break;const c=e.startsWith('"""',o)?'"""':e.startsWith("'''",o)?"'''":void 0;c?(r=c,o+=2):(i==='"'||i==="'")&&(s=i)}return{multiline:r,closingDelimiterEnd:a}}function un(e){const t=[],r=new Map;let s,a;for(let o=0;o<e.length;o+=1){t[o]=s===void 0;const{multiline:i,closingDelimiterEnd:c}=dn(e[o],s);s===void 0&&i!==void 0&&(a=o),s!==void 0&&c!==void 0&&a!==void 0&&(r.set(a,{end:o,suffix:e[o].slice(c)}),a=void 0),s=i}return{structural:t,multilineSpanByStart:r}}function Ze(e,t,r){try{oe(e)}catch{return e}const s=e.split(`
|
|
23
|
-
`),{structural:a,multilineSpanByStart:o}=un(s);let i=[],c=t.length===1?-1:void 0;const d=[];for(let f=0;f<s.length;f+=1){if(!a[f])continue;const v=ge(s[f]).value.trim(),j=v.match(/^\[\[(.+)\]\]$/),C=j??v.match(/^\[(.+)\]$/);if(C){i=ze(C[1]),!j&&Me(i,t.slice(0,-1))&&(c=f);continue}const I=cn(s[f]);if(I<0)continue;const A=[...i,...ze(s[f].slice(0,I))];if(Me(A,t)){const O=o.get(f);d.push({index:f,equals:I,end:O?.end??f,closingSuffix:O?.suffix})}}if(d.length>1)return e;if(d.length===1){const f=d[0],v=s[f.index],j=v.slice(0,f.equals+1),C=v.slice(f.equals+1),I=C.match(/^\s*/)?.[0]??" ",{comment:A}=ge(C),O=f.end-f.index+1,q=f.closingSuffix??(A?` ${A}`:"");return r?s.splice(f.index,O,`${j}${I}${JSON.stringify(r)}${q}`):f.closingSuffix&&ge(f.closingSuffix).comment?s.splice(f.index,O,`${v.match(/^\s*/)?.[0]??""}${f.closingSuffix}`):A?s.splice(f.index,O,`${v.match(/^\s*/)?.[0]??""}${A}`):s.splice(f.index,O),s.join(`
|
|
24
|
-
`)}if(!r)return e;const l=`${t.at(-1)} = ${JSON.stringify(r)}`;if(t.length>1)return c===void 0?e:(s.splice(c+1,0,l),s.join(`
|
|
25
|
-
`));const m=s.findIndex((f,v)=>{if(!a[v])return!1;const j=ge(f).value.trim();return/^\[\[?.+\]\]?$/.test(j)});return m>=0?(s.splice(m,0,l),s.join(`
|
|
26
|
-
`)):e?e.endsWith(`
|
|
27
|
-
`)?`${e}${l}
|
|
28
|
-
`:`${e}
|
|
29
|
-
${l}`:l}function ue(e,t,r){return Ze(e,[t],r)}function mn(e,t){let r;try{r=oe(e)}catch{return e}const s=typeof r.model_provider=="string"&&r.model_provider.trim()?r.model_provider.trim():"openai",a=t.trim()||void 0;return s==="openai"?ue(e,"openai_base_url",a):Ie(s)?e:Ze(e,["model_providers",s,"base_url"],a)}function fn(e,t){return He(e,t.executionPermission)}function He(e,t){const r=e[t.path];return r===void 0||r===!1?{enabled:!1,error:null}:r===!0?{enabled:!0,error:null}:{enabled:!1,error:`${t.path} must be true or false`}}function pn(e,t,r){return{...e,config:{...e.config,[t.path]:r}}}function H(e,t){const r=t?.trim();return!!r&&e.trim()===r}function xn(e,t){return H(e,t.apiKey?.envKey)}function be(e,t){return e.sensitive||/key|token|secret|password|auth/i.test(e.key)||xn(e.key,t)}function gn(e,t){const r=e.simplified??{};return Object.entries(e.redactedEnv??{}).map(([s,a])=>({key:s,value:t.apiBaseUrl?.kind==="env"&&s===t.apiBaseUrl.path?r.apiBaseUrl??"":"",write:{action:"keep"},configured:a.configured,sensitive:be({key:s,sensitive:a.sensitive},r)}))}function hn(e,t){return e.map(r=>be(r,t)&&!r.sensitive?{...r,sensitive:!0}:r)}function vn(){let e=0;return{begin:()=>(e+=1,e),invalidate:()=>{e+=1},isCurrent:t=>t===e}}function bn(e){const t=new Map;for(const a of e){const o=a.key.trim();if(!o)continue;const i=t.get(o)??[];i.push(a),t.set(o,i)}const r=(a,o)=>a<o?-1:a>o?1:0,s=(a,o)=>{const i=o.filter(m=>m.write.action!=="keep");if(i.length===0)return{action:"keep"};const c=i.filter(m=>m.key===a),d=c.length>0?c:i,l=d.find(m=>m.write.action==="clear");return l?l.write:[...d].sort((m,f)=>r(m.key,f.key)||r(m.write.action==="replace"?m.write.value:"",f.write.action==="replace"?f.write.value:""))[0].write};return Object.fromEntries([...t.entries()].sort(([a],[o])=>r(a,o)).map(([a,o])=>[a,s(a,o)]))}function yn(e,t,r){return{...e,model:typeof t[r.model.path]=="string"?t[r.model.path]:"",reasoningEffort:r.reasoningEffort?.kind==="config"?typeof t[r.reasoningEffort.path]=="string"?t[r.reasoningEffort.path]:"":e.reasoningEffort}}function Fe(e,t,r,s=new Set){if(r!=="CODEX")return e;const a=oe(t),o=typeof a.model_provider=="string"&&a.model_provider.trim()?a.model_provider.trim():"openai",i=typeof a.model_reasoning_effort=="string"?a.model_reasoning_effort:"",c=v=>[...s].some(j=>H(j,v));if(o==="openai")return{...e,apiBaseUrl:typeof a.openai_base_url=="string"?a.openai_base_url:"",apiKey:{configured:H(e.apiKey?.envKey??"","OPENAI_API_KEY")?e.apiKey?.configured??!1:c("OPENAI_API_KEY"),envKey:"OPENAI_API_KEY"},reasoningEffort:i};if(Ie(o))return{...e,apiBaseUrl:void 0,apiKey:void 0,reasoningEffort:i};const d=a.model_providers,l=d&&typeof d=="object"&&!Array.isArray(d)?d[o]:void 0,m=l&&typeof l=="object"&&!Array.isArray(l)?l:{},f=typeof m.env_key=="string"&&m.env_key.trim()?m.env_key.trim():void 0;return{...e,apiBaseUrl:typeof m.base_url=="string"?m.base_url:"",apiKey:f?{configured:H(e.apiKey?.envKey??"",f)?e.apiKey?.configured??!1:c(f),envKey:f}:void 0,reasoningEffort:i}}function jn(e){try{const t=oe(e);return typeof t.model_provider=="string"&&Ie(t.model_provider.trim())}catch{return!1}}function wn(e,t,r){try{if(e.agentType==="CLAUDE_CODE"&&(t==="apiBaseUrl"||t==="apiKey")){const s=JSON.parse(e.settings),a=t==="apiBaseUrl"?r.apiBaseUrl?.path:r.apiKey?.path,o=a?s.env?.[a]:void 0;return typeof o=="string"?o:void 0}if(e.agentType==="CODEX"&&(t==="model"||t==="reasoningEffort")){const s=oe(e.settings),a=t==="model"?"model":r.reasoningEffort?.path,o=a?s[a]:void 0;return typeof o=="string"?o:void 0}}catch{return}}function Nn(e,t,r,s){if(r==="simple")return e;const a=wn(e,t,s),o={...e.config},i={...e.simplified};let c=e.env;return t==="apiBaseUrl"&&s.apiBaseUrl?(a!==void 0&&(i.apiBaseUrl=a),c=c.map(d=>d.key===s.apiBaseUrl.path?{...d,value:"",write:{action:"clear"}}:d)):t==="apiKey"&&s.apiKey?(i.apiKey={configured:a!==void 0,envKey:s.apiKey.path},c=c.map(d=>d.key===s.apiKey.path?{...d,value:"",write:{action:"clear"}}:d)):t==="model"?(a!==void 0&&(i.model=a),delete o[s.model.path]):t==="reasoningEffort"&&a!==void 0&&(i.reasoningEffort=a),{...e,config:o,env:c,simplified:i}}const he={key:"appendPrompt",label:"追加 Prompt",type:"textarea",rows:3,placeholder:"追加到每次 prompt 末尾的文本"},Qe={[_.CLAUDE_CODE]:[{key:"dangerouslySkipPermissions",label:"跳过权限确认",type:"switch"},he],[_.GEMINI_CLI]:[{key:"yolo",label:"自动批准操作(YOLO)",type:"switch"},he],[_.CURSOR_AGENT]:[{key:"force",label:"强制执行",type:"switch"},he],[_.CODEX]:[{key:"dangerouslyBypassApprovalsAndSandbox",label:"跳过所有确认和沙盒",type:"switch"},{key:"disableResponsesWebsocket",label:"禁用 WebSocket",type:"switch"},{key:"profile",label:"Profile",type:"input",placeholder:"~/.codex/config.toml 中的 profile 名称"},he]};function $e(){return{}}function et(e,t){return{...t}}const En=JSON.stringify({env:{ANTHROPIC_API_KEY:"",ANTHROPIC_BASE_URL:""}},null,2),Cn=`# Codex config.toml 配置片段 — 通过 -c 参数注入,不会修改 ~/.codex/config.toml
|
|
30
|
-
# 参考: https://developers.openai.com/codex/config-sample
|
|
31
|
-
|
|
32
|
-
# ─── 模型与推理 ─────────────────────────────────────────────
|
|
33
|
-
# model_reasoning_effort = "medium" # minimal | low | medium | high | xhigh
|
|
34
|
-
# model_reasoning_summary = "auto" # auto | concise | detailed | none
|
|
35
|
-
# model_verbosity = "medium" # low | medium | high
|
|
36
|
-
# service_tier = "flex" # fast | flex
|
|
37
|
-
|
|
38
|
-
# ─── 自定义 Model Provider ──────────────────────────────────
|
|
39
|
-
# model_provider = "azure"
|
|
40
|
-
#
|
|
41
|
-
# [model_providers.azure]
|
|
42
|
-
# name = "Azure OpenAI"
|
|
43
|
-
# base_url = "https://YOUR_PROJECT.openai.azure.com/openai"
|
|
44
|
-
# env_key = "AZURE_OPENAI_API_KEY"
|
|
45
|
-
# env_key_instructions = "Set AZURE_OPENAI_API_KEY in Provider env"
|
|
46
|
-
# wire_api = "responses"
|
|
47
|
-
# query_params = { api-version = "2025-04-01-preview" }
|
|
48
|
-
|
|
49
|
-
# ─── OpenAI 数据驻留 ────────────────────────────────────────
|
|
50
|
-
# [model_providers.openai-us]
|
|
51
|
-
# name = "OpenAI US"
|
|
52
|
-
# base_url = "https://us.api.openai.com/v1"
|
|
53
|
-
# wire_api = "responses"
|
|
54
|
-
# requires_openai_auth = true
|
|
55
|
-
|
|
56
|
-
# ─── 本地 OSS (Ollama) ──────────────────────────────────────
|
|
57
|
-
# [model_providers.ollama]
|
|
58
|
-
# name = "Ollama"
|
|
59
|
-
# base_url = "http://localhost:11434/v1"
|
|
60
|
-
# wire_api = "responses"
|
|
61
|
-
`,Sn=`# Codex config.toml snippet — injected through -c; ~/.codex/config.toml is not modified.
|
|
62
|
-
# Reference: https://developers.openai.com/codex/config-sample
|
|
63
|
-
|
|
64
|
-
# ─── Model and reasoning ────────────────────────────────────
|
|
65
|
-
# model_reasoning_effort = "medium" # minimal | low | medium | high | xhigh
|
|
66
|
-
# model_reasoning_summary = "auto" # auto | concise | detailed | none
|
|
67
|
-
# model_verbosity = "medium" # low | medium | high
|
|
68
|
-
# service_tier = "flex" # fast | flex
|
|
69
|
-
|
|
70
|
-
# ─── Custom Model Provider ──────────────────────────────────
|
|
71
|
-
# model_provider = "azure"
|
|
72
|
-
#
|
|
73
|
-
# [model_providers.azure]
|
|
74
|
-
# name = "Azure OpenAI"
|
|
75
|
-
# base_url = "https://YOUR_PROJECT.openai.azure.com/openai"
|
|
76
|
-
# env_key = "AZURE_OPENAI_API_KEY"
|
|
77
|
-
# env_key_instructions = "Set AZURE_OPENAI_API_KEY in Provider env"
|
|
78
|
-
# wire_api = "responses"
|
|
79
|
-
# query_params = { api-version = "2025-04-01-preview" }
|
|
80
|
-
|
|
81
|
-
# ─── OpenAI data residency ──────────────────────────────────
|
|
82
|
-
# [model_providers.openai-us]
|
|
83
|
-
# name = "OpenAI US"
|
|
84
|
-
# base_url = "https://us.api.openai.com/v1"
|
|
85
|
-
# wire_api = "responses"
|
|
86
|
-
# requires_openai_auth = true
|
|
87
|
-
|
|
88
|
-
# ─── Local OSS (Ollama) ─────────────────────────────────────
|
|
89
|
-
# [model_providers.ollama]
|
|
90
|
-
# name = "Ollama"
|
|
91
|
-
# base_url = "http://localhost:11434/v1"
|
|
92
|
-
# wire_api = "responses"
|
|
93
|
-
`;function kn(e,t){return e===_.CLAUDE_CODE?En:e===_.CODEX?t==="zh-CN"?Cn:Sn:""}function Pn(e){return e===_.CLAUDE_CODE||e===_.CODEX}function _n(e,t){if(!e.trim())return e;try{const r=JSON.parse(e);if(!r.env||typeof r.env!="object"||Array.isArray(r.env))return e;const s=r.env;return t in s?(delete s[t],JSON.stringify(r,null,2)):e}catch{return e}}const In=Object.values(Qe).flat().reduce((e,t)=>(e[t.key]||(e[t.key]=t.label),e),{}),Tn=Object.values(Qe).flat().reduce((e,t)=>(t.options&&(e[t.key]=Object.fromEntries(t.options.map(r=>[r.value,r.label]))),e),{});function An(e,t){if(typeof t=="boolean")return t?Ee("是"):Ee("否");if(typeof t=="string"&&t){const r=Tn[e]?.[t];return r?Ee(r):t}return String(t)}function Z(e,t){return e instanceof Error?e.message:t}function On(e){return e==="apiBaseUrl"?"API 地址":e==="apiKey"?"API Key":e==="reasoningEffort"?"思考强度":e==="model"?"模型":e==="executionPermission"?"执行权限":e==="disableResponsesWebsocket"?"禁用 WebSocket":e}function Dn(e){return{minimal:"最低",low:"低",medium:"中",high:"高",xhigh:"超高",max:"最高"}[e]??e}function Un(e){return`agent-tower-provider-backup-${e.replace(/[:.]/g,"-")}.json`}function Rn(e,t){const r=new Blob([JSON.stringify(t,null,2)],{type:"application/json"}),s=URL.createObjectURL(r),a=document.createElement("a");a.href=s,a.download=e,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(s)}function Ln(e){switch(e){case"CREATE":return{label:"新增",className:"bg-success/10 text-success"};case"OVERWRITE":return{label:"覆盖",className:"bg-warning/10 text-warning"};case"SKIP":return{label:"跳过",className:"bg-muted text-muted-foreground"}}}function Kn({type:e}){const t=e==="LOGIN_DETECTED"||e==="INSTALLATION_FOUND";return n.jsx("span",{className:K("inline-block h-2 w-2 rounded-full shrink-0",t?"bg-success":"bg-border"),title:t?"Available":"Unavailable",children:n.jsx("span",{className:"sr-only",children:t?"Available":"Unavailable"})})}function Bn({type:e}){const{t}=X();return e==="LOGIN_DETECTED"||e==="INSTALLATION_FOUND"?n.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full bg-success/10 px-2 py-0.5 text-[11px] font-medium text-success",children:[n.jsx(Je,{size:11,"aria-hidden":"true"}),t("可用")]}):n.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-[11px] font-medium text-muted-foreground",children:[n.jsx(yt,{size:11,"aria-hidden":"true"}),t("不可用")]})}function zn({title:e,status:t,defaultOpen:r=!1,children:s}){const[a,o]=E.useState(r);return n.jsxs("div",{className:"rounded-lg border border-border",children:[n.jsxs("button",{type:"button",onClick:()=>o(i=>!i),"aria-expanded":a,className:"w-full flex items-center justify-between rounded-lg px-4 py-2.5 text-sm font-medium text-foreground transition-colors hover:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60 focus-visible:ring-inset",children:[n.jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[n.jsx("span",{children:e}),t]}),n.jsx(Xe,{size:14,"aria-hidden":"true",className:K("text-muted-foreground transition-transform motion-reduce:transition-none",a&&"rotate-180")})]}),a&&n.jsx("div",{className:"px-4 pb-4 space-y-3",children:s})]})}function Mn({isOpen:e,onClose:t,providerId:r,initialData:s,onSave:a}){const{locale:o,t:i}=X(),{data:c}=jt(),d=wt(),[l,m]=E.useState(s??{name:"",agentType:_.CLAUDE_CODE,config:$e(),settings:"",env:[],simplified:{apiKey:{configured:!1,envKey:"ANTHROPIC_API_KEY"}},diagnostics:[],isDefault:!1}),[f,v]=E.useState(()=>JSON.stringify(l.config,null,2)),[j,C]=E.useState(""),[I,A]=E.useState(()=>l.diagnostics?.find(u=>u.field==="settings")?.message??""),[O,q]=E.useState(!1),[R,B]=E.useState(!1),[z,J]=E.useState(null),[M,U]=E.useState(()=>new Set),[b,P]=E.useState(()=>l.diagnostics?.filter(u=>u.code==="CONFLICT")??[]),[Q,ee]=E.useState({}),te=E.useRef(vn()),S=c?.[l.agentType]??ve[l.agentType],F=S.apiBaseUrl?an(l.simplified.apiBaseUrl):null,V=fn(l.config,S),G=S.disableResponsesWebsocket,W=G?He(l.config,G):null,le=l.simplified.reasoningEffort??"",ne=le&&!S.reasoningEffort?.options?.includes(le)?i("请选择当前 Agent 支持的思考强度档位"):null,h=u=>{te.current.invalidate(),u&&m(u),B(!0),J(null)},y=u=>{h(u)},D=()=>{R&&!window.confirm(i("存在未保存的修改,确定放弃吗?"))||t()},Y=u=>l.env.find(p=>H(p.key,u)),ce=(u,p,x="")=>{if(p.action!=="keep"){const g=u===S.apiBaseUrl?.path?"apiBaseUrl":u===S.apiKey?.path?"apiKey":null;g&&ee(N=>{const k={...N};return delete k[g],k})}y(g=>{const N=g.env.findIndex(ct=>H(ct.key,u)),k=[...g.env],re=N>=0?k[N]:null,de={key:re?.key??u,value:x,write:p,configured:re?.configured??!1,sensitive:H(u,g.simplified.apiKey?.envKey)||!!re?.sensitive||/key|token|secret|password|auth/i.test(u)};N>=0?k[N]=de:k.push(de);const lt=g.agentType===_.CLAUDE_CODE&&p.action!=="keep"&&(u===S.apiBaseUrl?.path||u===S.apiKey?.path);return{...g,env:k,settings:lt?_n(g.settings,u):g.settings}})},pe=(u,p)=>{ee(x=>{if(!(u in x))return x;const g={...x};return delete g[u],g}),U(x=>new Set(x).add(u)),u==="apiBaseUrl"&&S.apiBaseUrl?.kind==="env"&&ce(S.apiBaseUrl.path,p?{action:"replace",value:p}:{action:"clear"},p),y(x=>{const g=ln(x,u,p,S);return g.config!==x.config&&v(JSON.stringify(g.config,null,2)),g})},tt=u=>{G&&y(p=>{const x=pn(p,G,u);return v(JSON.stringify(x.config,null,2)),x})},nt=u=>{if(R&&!window.confirm(i("切换 Agent 类型会清空当前类型的配置,是否继续?")))return;const p=ve[u],x={...l,agentType:u,config:$e(),settings:"",env:[],simplified:{apiKey:p.apiKey?{configured:!1,envKey:p.apiKey.path}:void 0}};h(()=>x),v("{}"),C(""),A(""),q(!1),U(new Set),P([]),ee({})},Ae=(u=!1)=>{let p=!j&&!V.error&&!W?.error&&!ne;const x=l.settings.trim();if(x&&(O||u))try{if(l.agentType===_.CODEX)oe(x);else if(l.agentType===_.CLAUDE_CODE){const g=JSON.parse(x);if(!g||typeof g!="object"||Array.isArray(g))throw new Error(i("JSON 顶层必须是对象"))}A("")}catch(g){A(i("{format} 语法错误: {message}",{format:l.agentType===_.CODEX?"TOML":"JSON",message:g instanceof Error?g.message:String(g)})),p=!1}return p},Oe=()=>{const u=bn(l.env),p=Object.fromEntries([...M].map(x=>[x,l.simplified[x]]));return{providerId:r,name:l.name,agentType:l.agentType,env:u,config:l.config,settings:l.settings,simplified:M.size>0?p:void 0,conflictResolutions:Q,isDefault:l.isDefault}},it=()=>{if(F||!Ae(!1))return;const p={...Oe()};delete p.providerId,a(p)},rt=()=>{if(F||b.length>0||!Ae(!0))return;const u=te.current.begin();J(null),d.mutate(Oe(),{onSuccess:p=>{te.current.isCurrent(u)&&J(p)},onError:p=>{te.current.isCurrent(u)&&J({ok:!1,stage:"connection",errorKind:"unknown",summary:Z(p,i("测试配置失败"))})}})};if(!e)return null;const st=Pn(l.agentType),xe=l.agentType===_.CODEX,je=xe&&jn(l.settings),ie=l.simplified.apiKey?.envKey??S.apiKey?.path,we=ie?Y(ie):void 0,De=on(we,!!l.simplified.apiKey?.configured,Q.apiKey),at=De==="advanced",Ue=De!=="unconfigured",ot=!l.name.trim()||!!F||!!j||!!V.error||!!W?.error||!!ne||!!I&&O||b.length>0;return n.jsx(n.Fragment,{children:n.jsx(_e,{isOpen:e,onClose:D,title:i(s?"编辑 Provider":"新建 Provider"),className:"max-w-3xl",action:n.jsxs("div",{className:"flex w-full flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-between",children:[n.jsxs(T,{variant:"outline",onClick:rt,disabled:d.isPending||!!F||!!j||!!V.error||!!W?.error||!!ne||!!I&&O||b.length>0,children:[d.isPending?n.jsx(ft,{className:"animate-spin"}):n.jsx(Rt,{}),d.isPending?i("测试中..."):i("测试配置")]}),n.jsxs("div",{className:"flex gap-2",children:[n.jsx(T,{variant:"outline",onClick:D,children:i("取消")}),n.jsx(T,{onClick:it,disabled:ot,children:i("保存 Provider")})]})]}),children:n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:[n.jsxs("div",{children:[n.jsx("label",{htmlFor:"provider-name",className:"mb-1 block text-xs font-medium text-foreground",children:i("名称")}),n.jsx(se,{id:"provider-name",value:l.name,onChange:u=>y(p=>({...p,name:u.target.value})),placeholder:i("例如: Claude Code (官方)")})]}),!s&&n.jsxs("div",{children:[n.jsx("label",{className:"mb-1 block text-xs font-medium text-foreground",children:i("Agent 类型")}),n.jsx(Tt,{value:l.agentType,onChange:u=>nt(u),options:Object.values(_).map(u=>({value:u,label:me(u),icon:n.jsx(fe,{agentType:u,className:"size-4"})})),placeholder:i("选择 Agent 类型")})]}),s&&n.jsxs("div",{children:[n.jsx("label",{className:"mb-1 block text-xs font-medium text-foreground",children:i("Agent 类型")}),n.jsxs("div",{className:"flex h-9 items-center gap-2 rounded-lg border border-neutral-200 bg-muted/30 px-3 text-sm text-muted-foreground",children:[n.jsx(fe,{agentType:l.agentType,className:"size-4"}),n.jsx("span",{className:"min-w-0 truncate",children:me(l.agentType)})]})]})]}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("input",{type:"checkbox",id:"isDefault",checked:l.isDefault,onChange:u=>y(p=>({...p,isDefault:u.target.checked})),className:"h-4 w-4 rounded border-border accent-primary"}),n.jsx("label",{htmlFor:"isDefault",className:"text-sm text-foreground",children:i("设为该类型的默认 Provider")})]}),n.jsxs("div",{className:"space-y-3 rounded-lg border border-border bg-muted/20 p-4",children:[n.jsx("div",{className:"text-sm font-medium text-foreground",children:i("基本配置")}),S.apiBaseUrl&&!je&&n.jsxs("div",{children:[n.jsx("label",{htmlFor:"provider-api-url",className:"mb-1 block text-xs font-medium text-foreground",children:i("API 地址")}),n.jsx(se,{id:"provider-api-url",type:"url",value:l.simplified.apiBaseUrl??"",onChange:u=>pe("apiBaseUrl",u.target.value),placeholder:S.apiBaseUrl.placeholder,"aria-invalid":!!F,"aria-describedby":F?"provider-api-url-error":void 0}),F&&n.jsx("p",{id:"provider-api-url-error",role:"alert",className:"mt-1 text-xs text-destructive",children:i("请输入以 http:// 或 https:// 开头的完整 API 地址")})]}),S.apiKey&&!je&&(l.agentType!==_.CODEX||!!l.simplified.apiKey)&&n.jsxs("div",{children:[n.jsxs("div",{className:"mb-1 flex items-center justify-between gap-3",children:[n.jsx("label",{htmlFor:"provider-api-key",className:"text-xs font-medium text-foreground",children:"API Key"}),n.jsxs("span",{className:"inline-flex items-center gap-1 text-xs text-muted-foreground",children:[n.jsx(Kt,{size:12}),i(at?"由高级配置管理":Ue?"已配置":"未配置")]})]}),we?.write.action==="replace"||!Ue?n.jsxs("div",{className:"flex gap-2",children:[n.jsx(se,{id:"provider-api-key",type:"password",autoComplete:"new-password",value:we?.value??"",onChange:u=>ce(ie,{action:"replace",value:u.target.value},u.target.value),placeholder:i("输入 API Key")}),l.simplified.apiKey?.configured&&n.jsx(T,{variant:"outline",size:"sm",onClick:()=>ce(ie,{action:"keep"}),children:i("取消替换")})]}):n.jsxs("div",{className:"flex gap-2",children:[n.jsx(T,{variant:"outline",size:"sm",onClick:()=>ce(ie,{action:"replace",value:""}),children:i("替换")}),n.jsx(T,{variant:"outline",size:"sm",onClick:()=>{window.confirm(i("确定清除此 API Key?"))&&ce(ie,{action:"clear"})},children:i("清除")})]})]}),n.jsxs("div",{children:[n.jsx("label",{htmlFor:"provider-model",className:"mb-1 block text-xs font-medium text-foreground",children:i("模型")}),l.agentType===_.CURSOR_AGENT?n.jsx(en,{value:l.simplified.model??"",onChange:u=>pe("model",u??"")}):n.jsx(se,{id:"provider-model",value:l.simplified.model??"",onChange:u=>pe("model",u.target.value),placeholder:S.model.placeholder})]}),S.reasoningEffort&&n.jsx(sn,{options:(S.reasoningEffort.options??[]).map(u=>({value:u,label:i(Dn(u))})),value:le,onChange:u=>pe("reasoningEffort",u),label:i("思考强度"),efficiencyLabel:i("更高效"),intelligenceLabel:i("更智能"),followCliLabel:i("跟随 CLI"),currentLabel:i("当前"),error:ne}),G&&W&&n.jsxs("section",{className:"border-t border-border pt-3",children:[n.jsxs("div",{className:"flex items-center justify-between gap-3",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("div",{className:"text-xs font-medium text-foreground",children:i("禁用 WebSocket")}),n.jsx("div",{className:"mt-0.5 text-xs text-muted-foreground",children:i(je?"当前原生 Provider 已使用非 WebSocket 传输;此开关不会添加额外运行时覆盖。":"仅禁用 Codex Responses API 的 WebSocket 传输;新启动和后续继续的请求将使用 HTTP。")})]}),n.jsx(We,{checked:W.enabled,disabled:!!W.error,onCheckedChange:tt,"aria-label":i("禁用 WebSocket")})]}),W.error&&n.jsx("p",{role:"alert",className:"mt-1 text-xs text-destructive",children:i("禁用 WebSocket 字段必须为 true 或 false,请在运行配置 JSON 中修正。")})]})]}),z&&n.jsx(rn,{result:z}),b.length>0&&n.jsxs("div",{className:"space-y-3 rounded-lg border border-warning/30 bg-warning/10 p-4",children:[n.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium text-foreground",children:[n.jsx(Pe,{size:16,className:"text-warning"}),i("需要解决配置冲突")]}),b.map(u=>n.jsxs("div",{className:"flex flex-col gap-2 rounded-md border border-warning/20 bg-background/70 p-3 sm:flex-row sm:items-center sm:justify-between",children:[n.jsxs("div",{className:"text-xs text-muted-foreground",children:[n.jsx("span",{className:"font-medium text-foreground",children:i(On(u.field))})," · ",i("简化字段与高级配置值不同")]}),n.jsx("div",{className:"flex flex-wrap gap-2",children:["simple","advanced"].map(p=>n.jsx(T,{variant:"outline",size:"sm",onClick:()=>{const x=u.field,g=Nn(l,x,p,S);y(()=>g),v(JSON.stringify(g.config,null,2)),ee(N=>({...N,[x]:p})),p==="advanced"&&(x==="apiBaseUrl"||x==="model"||x==="reasoningEffort")&&U(N=>{const k=new Set(N);return k.delete(x),k}),P(N=>N.filter(k=>k.field!==x))},children:i(p==="simple"?"采用简化值":"保留高级值")},p))})]},u.field))]}),n.jsxs(zn,{title:i("高级配置"),defaultOpen:!!j||!!I||!!V.error||b.length>0,children:[n.jsxs("div",{children:[n.jsx("label",{className:"mb-1 block text-xs font-medium text-foreground",children:i("运行配置 (JSON)")}),n.jsx(Le,{value:f,onChange:u=>{const p=u.target.value;v(p);try{const x=JSON.parse(p);if(!x||typeof x!="object"||Array.isArray(x))throw new Error(i("JSON 顶层必须是对象"));const g=x;C(""),U(N=>{const k=new Set(N).add("model");return S.reasoningEffort?.kind==="config"&&k.add("reasoningEffort"),k}),y(N=>({...N,config:g,simplified:yn(N.simplified,g,S)}))}catch(x){h(),C(x instanceof Error?x.message:i("JSON 语法错误"))}},rows:7,className:"font-mono","aria-invalid":!!j}),j&&n.jsx("p",{role:"alert",className:"mt-1 text-xs text-destructive",children:j}),V.error&&n.jsx("p",{role:"alert",className:"mt-1 text-xs text-destructive",children:i("执行权限字段必须为 true 或 false,请在运行配置 JSON 中修正。")})]}),n.jsxs("div",{className:"border-t border-border pt-3",children:[n.jsx("label",{className:"mb-2 block text-xs font-medium text-foreground",children:i("环境变量")}),n.jsxs("p",{className:"text-xs text-muted-foreground mb-2",children:[i("注入到 Agent 进程的环境变量。Codex 的")," ",n.jsx("code",{className:"rounded bg-muted px-1",children:"env_key"})," ",i("指定的是变量名,实际值需在此处设置。")]}),n.jsxs("div",{className:"space-y-2",children:[l.env.map((u,p)=>u.write.action!=="clear"&&n.jsxs("div",{className:"flex gap-2 items-center",children:[n.jsx(se,{value:u.key,disabled:u.configured,onChange:x=>{const g=x.target.value;y(N=>{const k=[...N.env],re=k[p];if(!re)return N;const de={...re,key:g};return k[p]={...de,sensitive:be(de,N.simplified)},{...N,env:k}})},placeholder:i("变量名,如 AZURE_OPENAI_API_KEY"),className:"flex-1 py-1.5 font-mono"}),n.jsx(se,{value:u.value,type:be(u,l.simplified)?"password":"text",onChange:x=>{const g=[...l.env];g[p]={...g[p],value:x.target.value,write:{action:"replace",value:x.target.value}},y(N=>({...N,env:g,simplified:u.key===S.apiBaseUrl?.path?{...N.simplified,apiBaseUrl:x.target.value}:N.simplified})),u.key===S.apiBaseUrl?.path&&U(N=>new Set(N).add("apiBaseUrl"))},placeholder:u.configured&&u.write.action==="keep"?i("已配置,输入新值以替换"):i("值"),className:"flex-1 py-1.5 font-mono"}),n.jsx("button",{type:"button",onClick:()=>{const x=[...l.env];u.configured?x[p]={...u,value:"",write:{action:"clear"}}:x.splice(p,1),y(g=>({...g,env:x,simplified:u.key===S.apiBaseUrl?.path?{...g.simplified,apiBaseUrl:""}:g.simplified})),u.key===S.apiBaseUrl?.path&&U(g=>new Set(g).add("apiBaseUrl"))},"aria-label":i("删除"),className:"rounded-md p-1.5 text-muted-foreground transition-colors hover:text-destructive focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60",children:n.jsx(Ve,{size:14})})]},p)),n.jsxs(T,{variant:"outline",size:"sm",onClick:()=>y(u=>({...u,env:[...u.env,{key:"",value:"",write:{action:"replace",value:""},configured:!1,sensitive:!1}]})),children:[n.jsx(Ce,{size:12,className:"mr-1"}),i("添加变量")]})]})]}),st&&n.jsxs("div",{className:"border-t border-border pt-3",children:[n.jsx("label",{className:"mb-2 block text-xs font-medium text-foreground",children:i(xe?"CLI 原生配置 (config.toml)":"CLI 原生配置 (settings.json)")}),n.jsx("p",{className:"text-xs text-muted-foreground mb-2",children:xe?n.jsxs(n.Fragment,{children:[i("直接填写 Codex")," ",n.jsx("code",{className:"rounded bg-muted px-1",children:"config.toml"})," ",i("格式的配置片段,通过")," ",n.jsx("code",{className:"rounded bg-muted px-1",children:"-c"})," ",i("参数注入。不会修改你的")," ",n.jsx("code",{className:"rounded bg-muted px-1",children:"~/.codex/config.toml"})," ",i("文件。")]}):n.jsxs(n.Fragment,{children:[i("对应 Claude Code 的")," ",n.jsx("code",{className:"rounded bg-muted px-1",children:"~/.claude/settings.json"}),",",i("通过")," ",n.jsx("code",{className:"rounded bg-muted px-1",children:"--settings"})," ",i("参数注入。在")," ",n.jsx("code",{className:"rounded bg-muted px-1",children:"env"})," ",i("中设置 ANTHROPIC_API_KEY、ANTHROPIC_BASE_URL 等。")]})}),n.jsx(Le,{value:l.settings,onChange:u=>{const p=u.target.value;q(!0),A("");let x;if(xe)try{x=Fe(l.simplified,p,_.CODEX),U(g=>new Set(g).add("reasoningEffort"))}catch{}y(g=>{const N=x===void 0?g.simplified:Fe(g.simplified,p,_.CODEX,new Set(g.env.flatMap(k=>k.write.action==="clear"?[]:k.write.action==="replace"?k.value?[k.key]:[]:k.configured?[k.key]:[])));return{...g,settings:p,env:hn(g.env,N),simplified:N}})},rows:10,className:"font-mono",placeholder:kn(l.agentType,o),"aria-invalid":!!I}),I&&n.jsx("p",{role:"alert",className:"mt-1 text-xs text-destructive",children:I})]})]})]})})})}function Fn({isOpen:e,onClose:t,onConfirm:r,acknowledged:s,onAcknowledgedChange:a,isLoading:o}){const{t:i}=X();return n.jsx(_e,{isOpen:e,onClose:t,title:i("导出 Provider 备份"),className:"max-w-xl",action:n.jsxs(n.Fragment,{children:[n.jsx(T,{variant:"outline",onClick:t,disabled:o,children:i("取消")}),n.jsx(T,{onClick:r,disabled:!s||o,children:i(o?"导出中...":"导出备份")})]}),children:n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"flex items-start gap-2.5 rounded-lg border border-warning/30 bg-warning/10 px-4 py-3 text-sm text-foreground",children:[n.jsx(Pe,{size:15,className:"mt-0.5 shrink-0 text-warning","aria-hidden":"true"}),n.jsx("span",{children:i("导出的备份文件将包含完整的 Provider 配置,包括环境变量、CLI settings 等敏感信息。任何拿到文件的人都可能直接使用这些 Provider。")})]}),n.jsxs("div",{className:"space-y-2 text-sm text-muted-foreground",children:[n.jsx("p",{children:i("这个功能用于备份和迁移,不用于分享配置。")}),n.jsx("p",{children:i("导出内容只包含用户层配置:自定义 Provider,以及对内置 Provider 的覆盖。")})]}),n.jsxs("label",{className:"flex items-start gap-3 rounded-lg border border-border px-4 py-3 text-sm text-foreground",children:[n.jsx("input",{type:"checkbox",checked:s,onChange:c=>a(c.target.checked),className:"mt-0.5 h-4 w-4 rounded border-border accent-primary"}),n.jsx("span",{children:i("我已知晓该备份文件包含敏感信息,只会保存在安全位置。")})]})]})})}function $n({isOpen:e,onClose:t,preview:r,backup:s,onConfirm:a,isLoading:o}){const{t:i}=X();if(!r||!s)return null;const c=r.summary.create+r.summary.overwrite,d=[...r.items].sort((l,m)=>{const f={CREATE:0,OVERWRITE:1,SKIP:2};return f[l.action]-f[m.action]});return n.jsx(_e,{isOpen:e,onClose:t,title:i("导入 Provider 备份"),className:"max-w-3xl",action:n.jsxs(n.Fragment,{children:[n.jsx(T,{variant:"outline",onClick:t,disabled:o,children:i("取消")}),n.jsx(T,{onClick:a,disabled:c===0||o,children:o?i("导入中..."):i("确认导入 {count} 项",{count:c})})]}),children:n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"rounded-lg border border-border bg-muted/40 px-4 py-3 text-sm text-muted-foreground",children:[n.jsx("div",{children:i("导出时间:{value}",{value:new Date(s.exportedAt).toLocaleString()})}),n.jsx("div",{children:i("模式:完整备份(含敏感信息)")}),n.jsx("div",{children:i("文件内 Provider 数量:{count}",{count:s.providers.length})})]}),n.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[n.jsxs("div",{className:"rounded-lg border border-success/25 bg-success/10 px-4 py-3",children:[n.jsx("div",{className:"text-xs font-medium text-success",children:i("新增")}),n.jsx("div",{className:"text-lg font-semibold text-foreground",children:r.summary.create})]}),n.jsxs("div",{className:"rounded-lg border border-warning/25 bg-warning/10 px-4 py-3",children:[n.jsx("div",{className:"text-xs font-medium text-warning",children:i("覆盖")}),n.jsx("div",{className:"text-lg font-semibold text-foreground",children:r.summary.overwrite})]}),n.jsxs("div",{className:"rounded-lg border border-border bg-muted/40 px-4 py-3",children:[n.jsx("div",{className:"text-xs font-medium text-muted-foreground",children:i("跳过")}),n.jsx("div",{className:"text-lg font-semibold text-foreground",children:r.summary.skip})]})]}),n.jsx("div",{className:"max-h-[420px] overflow-y-auto space-y-3 pr-1",children:d.map(l=>{const m=Ln(l.action);return n.jsxs("div",{className:"rounded-lg border border-border px-4 py-3",children:[n.jsx("div",{className:"flex items-center justify-between gap-3",children:n.jsxs("div",{className:"min-w-0",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("h4",{className:"truncate text-sm font-medium text-foreground",children:l.incoming.name}),n.jsx("span",{className:`inline-flex rounded-full px-2 py-0.5 text-[11px] font-medium ${m.className}`,children:i(m.label)})]}),n.jsxs("div",{className:"mt-1 flex min-w-0 items-center gap-1.5 text-xs text-muted-foreground",children:[n.jsx(fe,{agentType:l.incoming.agentType,className:"size-3.5"}),n.jsx("span",{className:"min-w-0 truncate",children:me(l.incoming.agentType)})," · ",n.jsx("code",{className:"rounded bg-muted px-1 py-0.5",children:l.incoming.id})]})]})}),l.action==="OVERWRITE"&&l.existing&&n.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:i("将覆盖当前已有的 Provider:{name}",{name:l.existing.name})}),l.action==="SKIP"&&n.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:i("当前同 ID Provider 配置一致,本次不会重复写入。")}),l.action==="CREATE"&&n.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:i("当前不存在同 ID Provider,将直接新增。")})]},l.incoming.id)})})]})})}function qn({item:e,onEdit:t,onDelete:r}){const{t:s}=X(),a=e.provider,o=e.availability,i=et(a.agentType,a.config),c=ve[a.agentType],d=Object.entries(i).filter(([m])=>m!=="cmd"&&m!==c.executionPermission.path),l=Object.keys(a.redactedEnv||{});return n.jsxs("div",{className:"min-w-0 space-y-6",children:[n.jsxs("div",{className:"flex min-w-0 flex-col gap-4 sm:flex-row sm:items-start sm:justify-between",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsxs("div",{className:"flex min-w-0 items-center gap-2.5",children:[n.jsx("h3",{className:"min-w-0 truncate text-base font-semibold text-foreground",children:a.name}),n.jsx(Bn,{type:o.type})]}),n.jsxs("div",{className:"mt-1 flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[n.jsxs("span",{className:"inline-flex min-w-0 items-center gap-1.5",children:[n.jsx(fe,{agentType:a.agentType,className:"size-3.5"}),n.jsx("span",{className:"truncate",children:me(a.agentType)})]}),a.isDefault&&n.jsx("span",{className:"rounded-full bg-primary/[0.06] px-2 py-0.5 text-[11px] font-medium text-primary",children:s("默认")}),a.builtIn&&n.jsx("span",{className:"rounded-full bg-muted px-2 py-0.5 text-[11px] font-medium text-muted-foreground",children:s("内置")})]})]}),n.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 sm:shrink-0",children:[n.jsxs(T,{size:"sm",variant:"outline",onClick:t,children:[n.jsx(Dt,{size:13}),s("编辑")]}),n.jsxs(T,{size:"sm",variant:a.builtIn?"outline":"destructive",onClick:r,disabled:a.deletable===!1,children:[a.builtIn?n.jsx(bt,{size:13}):n.jsx(Ve,{size:13}),a.builtIn?s("恢复默认"):s("删除")]})]})]}),d.length>0&&n.jsxs("div",{children:[n.jsx(Ne,{className:"mb-3",children:s("运行配置")}),n.jsx("div",{className:"grid gap-px overflow-hidden rounded-lg border border-border bg-border/60",children:d.map(([m,f])=>n.jsxs("div",{className:"flex min-w-0 flex-col items-start gap-1 bg-background px-4 py-2.5 sm:flex-row sm:items-center sm:gap-4",children:[n.jsx("span",{className:"min-w-0 break-words text-[13px] text-muted-foreground sm:w-32 sm:shrink-0",children:s(In[m]??m)}),n.jsx("span",{className:"min-w-0 max-w-full break-all font-mono text-[13px] text-foreground",children:An(m,f)})]},m))})]}),l.length>0&&n.jsxs("div",{children:[n.jsx(Ne,{className:"mb-3",children:s("环境变量")}),n.jsx("div",{className:"grid gap-px overflow-hidden rounded-lg border border-border bg-border/60",children:l.map(m=>n.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-2 bg-background px-4 py-2.5 sm:gap-4",children:[n.jsx("span",{className:"min-w-0 max-w-full break-all font-mono text-[13px] text-foreground",children:m}),n.jsx("span",{className:"text-[13px] text-muted-foreground","aria-label":"hidden",children:"•••••"})]},m))})]}),a.settings?.trim()&&n.jsxs("div",{children:[n.jsx(Ne,{className:"mb-3",children:s("CLI 配置")}),n.jsx("div",{className:"rounded-lg border border-border bg-muted/40 p-4",children:n.jsx("pre",{className:"max-h-[200px] overflow-y-auto whitespace-pre-wrap break-all font-mono text-xs text-muted-foreground",children:a.settings})})]}),d.length===0&&l.length===0&&!a.settings?.trim()&&n.jsx("div",{className:"py-8 text-center text-sm text-muted-foreground",children:s('该 Provider 未配置额外参数。点击"编辑"添加运行配置、环境变量或 CLI 配置。')})]})}function li(){const{t:e}=X(),{data:t,isLoading:r}=Nt(),s=Et(),a=Ct(),o=St(),i=kt(),c=Pt(),d=_t(),l=E.useRef(null),[m,f]=E.useState(null),[v,j]=E.useState(null),[C,I]=E.useState(null),[A,O]=E.useState(!1),[q,R]=E.useState(!1),[B,z]=E.useState(null),[J,M]=E.useState(!1),U=t??[],b=m??U[0]?.provider.id??null,P=h=>{s.mutate(h,{onSuccess:()=>j(null),onError:y=>L.error(Z(y,e("创建 Provider 失败")))})},Q=(h,y)=>{a.mutate({id:h,data:y},{onSuccess:()=>j(null),onError:D=>L.error(Z(D,e("更新 Provider 失败")))})},ee=h=>{if(!(h.deletable??!h.builtIn)){L.error(e("系统内置 Provider 不可删除"));return}I({id:h.id,name:h.name,builtIn:h.builtIn})},te=()=>{C&&o.mutate(C.id,{onSuccess:()=>{L.success(C.builtIn?e("已恢复默认 Provider 配置"):e("Provider 已删除")),b===C.id&&f(null),I(null),M(!1)},onError:h=>L.error(Z(h,e("删除 Provider 失败")))})},S=()=>{O(!1),R(!1)},F=()=>z(null),V=()=>{i.mutate(void 0,{onSuccess:h=>{Rn(Un(h.exportedAt),h),L.success(e("Provider 备份已导出")),S()},onError:h=>L.error(Z(h,e("导出 Provider 备份失败")))})},G=()=>{l.current&&(l.current.value="",l.current.click())},W=async h=>{const y=h.target.files?.[0];if(h.target.value="",!y)return;let D;try{D=JSON.parse(await y.text())}catch{L.error(e("备份文件不是有效的 JSON"));return}c.mutate(D,{onSuccess:Y=>z({backup:D,preview:Y}),onError:Y=>L.error(Z(Y,e("导入预览失败")))})},le=()=>{B&&d.mutate(B.backup,{onSuccess:h=>{const y=h.summary.create+h.summary.overwrite;L.success(y===0?e("导入完成,当前配置无需变更"):e("导入完成:新增 {create},覆盖 {overwrite},跳过 {skip}",{create:h.summary.create,overwrite:h.summary.overwrite,skip:h.summary.skip})),F()},onError:h=>L.error(Z(h,e("导入 Provider 备份失败")))})},ne=h=>{const y=h.provider,D=ve[y.agentType],Y=gn(y,D);j({id:y.id,data:{name:y.name,agentType:y.agentType,config:et(y.agentType,y.config),settings:y.settings??"",env:Y,simplified:y.simplified??{},diagnostics:y.diagnostics,isDefault:y.isDefault}})};return r?n.jsx(Re,{className:"max-w-5xl",children:n.jsx(pt,{})}):n.jsxs(Re,{className:"max-w-5xl",children:[n.jsx("input",{ref:l,type:"file",accept:".json,application/json",className:"hidden",onChange:W}),n.jsx(xt,{title:e("Agent 配置"),actions:n.jsxs(n.Fragment,{children:[n.jsxs(T,{variant:"outline",size:"sm",onClick:G,disabled:c.isPending||d.isPending,children:[n.jsx(Ot,{size:13}),e("导入")]}),n.jsxs(T,{variant:"outline",size:"sm",onClick:()=>O(!0),disabled:i.isPending,children:[n.jsx(gt,{size:13}),e("导出")]}),n.jsxs(T,{size:"sm",onClick:()=>j({}),children:[n.jsx(Ce,{size:13,className:"mr-1"}),e("新建")]})]})}),U.length===0?n.jsx(ht,{icon:vt,message:e("暂无 Agent 配置"),action:n.jsxs(T,{size:"sm",onClick:()=>j({}),children:[n.jsx(Ce,{size:13,className:"mr-1"}),e("新建配置")]})}):n.jsx(At,{items:U,selectedId:b,onSelectItem:h=>{f(h),M(!0)},getItemId:h=>h.provider.id,mobileShowDetail:J,onMobileBack:()=>M(!1),renderListItem:(h,y)=>{const D=h.provider;return n.jsxs(n.Fragment,{children:[n.jsx(Kn,{type:h.availability.type}),n.jsxs("div",{className:"min-w-0 flex-1",children:[n.jsx("div",{className:"truncate text-[13px] font-medium",children:D.name}),n.jsxs("div",{className:K("flex min-w-0 items-center gap-1.5 text-[11px]",y?"text-primary-foreground/60":"text-muted-foreground"),children:[n.jsx(fe,{agentType:D.agentType,className:"size-3.5",fallbackClassName:y?"text-primary-foreground/70":"text-muted-foreground"}),n.jsx("span",{className:"min-w-0 truncate",children:me(D.agentType)})]})]}),D.isDefault&&n.jsx("span",{className:K("shrink-0 rounded px-1.5 py-0.5 text-[10px] font-medium",y?"bg-white/20 text-primary-foreground":"bg-primary/[0.06] text-primary"),children:e("默认")})]})},renderDetail:h=>h?n.jsx("div",{className:"min-w-0 p-5",children:n.jsx(qn,{item:h,onEdit:()=>ne(h),onDelete:()=>ee(h.provider)})}):n.jsx("div",{className:"py-16 text-center text-sm text-muted-foreground",children:e("选择一个 Provider 查看详情")})}),v&&n.jsx(Mn,{isOpen:!0,onClose:()=>j(null),providerId:v.id,initialData:v.data,onSave:h=>{v.id?Q(v.id,h):P(h)}}),n.jsx(It,{isOpen:C!==null,onClose:()=>{o.isPending||I(null)},onConfirm:te,title:C?.builtIn?e("恢复默认 Provider"):e("删除 Provider"),description:C?.builtIn?e('确定删除 "{name}" 的自定义覆盖,并恢复系统默认配置?',{name:C?.name}):e('确定删除 "{name}"?此操作不可撤销。',{name:C?.name}),confirmText:C?.builtIn?e("恢复默认"):e("删除"),cancelText:e("取消"),variant:"danger",isLoading:o.isPending}),n.jsx(Fn,{isOpen:A,onClose:S,onConfirm:V,acknowledged:q,onAcknowledgedChange:R,isLoading:i.isPending}),n.jsx($n,{isOpen:!!B,onClose:F,preview:B?.preview??null,backup:B?.backup??null,onConfirm:le,isLoading:d.isPending})]})}export{Mn as ProviderFormModal,li as ProviderSettingsPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{U as a,V as n}from"./index-BuQDZjol.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{k as c}from"./index-DHKgc87I.js";const e=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],t=c("check",e);export{t as C};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-727SXJPM-DsZmTw67.js";import{_ as i}from"./index-BuQDZjol.js";import"./chunk-FMBD7UC4-vgh3Erl0.js";import"./chunk-ND2GUHAM-Ogtl4wwd.js";import"./chunk-55IACEB6-Dc117Qwf.js";import"./chunk-2J33WTMH-BvuLBX1d.js";import"./index-DHKgc87I.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-727SXJPM-DsZmTw67.js";import{_ as i}from"./index-BuQDZjol.js";import"./chunk-FMBD7UC4-vgh3Erl0.js";import"./chunk-ND2GUHAM-Ogtl4wwd.js";import"./chunk-55IACEB6-Dc117Qwf.js";import"./chunk-2J33WTMH-BvuLBX1d.js";import"./index-DHKgc87I.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as g,l as o}from"./monaco-D3FVQqPj.js";import{C as l,H as h,D as c,a as u,R as f,b as _,c as w,d as k,F as v,e as D,S as P,f as R,g as I}from"./lspLanguageFeatures-vY541IS0.js";import{h as ie,i as oe,j as se,t as ne,k as ae}from"./lspLanguageFeatures-vY541IS0.js";import"./ProjectKanbanPage-DbgIwiUC.js";import"./index-DHKgc87I.js";import"./mermaid-NOHMQCX5-C6wHDXti.js";import"./chevron-right-jrkLz9qG.js";import"./chevron-down-CmGXPki1.js";import"./confirm-dialog-BZeaAl5j.js";import"./modal-kFSArLJi.js";import"./Icons-CM6Yg2lw.js";import"./CreateTaskInput-Cn0k5D8K.js";import"./AgentLogo-DOc8QQHe.js";import"./check-VMcYyBr4.js";import"./use-projects-DiJMGduU.js";import"./MemberAvatar-yC8O30hv.js";import"./use-providers-efX4HCcr.js";import"./trash-2-DA--Uikt.js";import"./useNormalizedLogs-xEobyuGF.js";import"./folder-picker-C3BgqamQ.js";import"./circle-alert-B6ZM3dSn.js";import"./message-square-Wwixl9YA.js";import"./layers-BFkjcml2.js";import"./chevron-up-UwBybVMK.js";import"./select-C2v0aFwN.js";import"./upload-hWnFHuhE.js";import"./arrow-left-D0MkHwKU.js";import"./copy-DqNqPI8d.js";const C=120*1e3;class A{constructor(n){this._defaults=n,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval(()=>this._checkIfIdle(),30*1e3),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange(()=>this._stopWorker())}_stopWorker(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){if(!this._worker)return;Date.now()-this._lastUsedTime>C&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||(this._worker=g({moduleId:"vs/language/css/cssWorker",createWorker:()=>new Worker(new URL("/assets/css.worker-DBVD8oXr.js",import.meta.url),{type:"module"}),label:this._defaults.languageId,createData:{options:this._defaults.options,languageId:this._defaults.languageId}}),this._client=this._worker.getProxy()),this._client}getLanguageServiceWorker(...n){let e;return this._getClient().then(a=>{e=a}).then(a=>{if(this._worker)return this._worker.withSyncedResources(n)}).then(a=>e)}}function ee(s){const n=[],e=[],a=new A(s);n.push(a);const r=(...t)=>a.getLanguageServiceWorker(...t);function m(){const{languageId:t,modeConfiguration:i}=s;p(e),i.completionItems&&e.push(o.registerCompletionItemProvider(t,new l(r,["/","-",":"]))),i.hovers&&e.push(o.registerHoverProvider(t,new h(r))),i.documentHighlights&&e.push(o.registerDocumentHighlightProvider(t,new c(r))),i.definitions&&e.push(o.registerDefinitionProvider(t,new u(r))),i.references&&e.push(o.registerReferenceProvider(t,new f(r))),i.documentSymbols&&e.push(o.registerDocumentSymbolProvider(t,new _(r))),i.rename&&e.push(o.registerRenameProvider(t,new w(r))),i.colors&&e.push(o.registerColorProvider(t,new k(r))),i.foldingRanges&&e.push(o.registerFoldingRangeProvider(t,new v(r))),i.diagnostics&&e.push(new D(t,r,s.onDidChange)),i.selectionRanges&&e.push(o.registerSelectionRangeProvider(t,new P(r))),i.documentFormattingEdits&&e.push(o.registerDocumentFormattingEditProvider(t,new R(r))),i.documentRangeFormattingEdits&&e.push(o.registerDocumentRangeFormattingEditProvider(t,new I(r)))}return m(),n.push(d(e)),d(n)}function d(s){return{dispose:()=>p(s)}}function p(s){for(;s.length;)s.pop().dispose()}export{l as CompletionAdapter,u as DefinitionAdapter,D as DiagnosticsAdapter,k as DocumentColorAdapter,R as DocumentFormattingEditProvider,c as DocumentHighlightAdapter,ie as DocumentLinkAdapter,I as DocumentRangeFormattingEditProvider,_ as DocumentSymbolAdapter,v as FoldingRangeAdapter,h as HoverAdapter,f as ReferenceAdapter,w as RenameAdapter,P as SelectionRangeAdapter,A as WorkerManager,oe as fromPosition,se as fromRange,ee as setupMode,ne as toRange,ae as toTextEdit};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{l as t}from"./monaco-D3FVQqPj.js";import"./ProjectKanbanPage-DbgIwiUC.js";import"./index-DHKgc87I.js";import"./mermaid-NOHMQCX5-C6wHDXti.js";import"./chevron-right-jrkLz9qG.js";import"./chevron-down-CmGXPki1.js";import"./confirm-dialog-BZeaAl5j.js";import"./modal-kFSArLJi.js";import"./Icons-CM6Yg2lw.js";import"./CreateTaskInput-Cn0k5D8K.js";import"./AgentLogo-DOc8QQHe.js";import"./check-VMcYyBr4.js";import"./use-projects-DiJMGduU.js";import"./MemberAvatar-yC8O30hv.js";import"./use-providers-efX4HCcr.js";import"./trash-2-DA--Uikt.js";import"./useNormalizedLogs-xEobyuGF.js";import"./folder-picker-C3BgqamQ.js";import"./circle-alert-B6ZM3dSn.js";import"./message-square-Wwixl9YA.js";import"./layers-BFkjcml2.js";import"./chevron-up-UwBybVMK.js";import"./select-C2v0aFwN.js";import"./upload-hWnFHuhE.js";import"./arrow-left-D0MkHwKU.js";import"./copy-DqNqPI8d.js";const e=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],A={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["{{!--","--}}"]},brackets:[["<!--","-->"],["<",">"],["{{","}}"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"}],onEnterRules:[{beforeText:new RegExp(`<(?!(?:${e.join("|")}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,"i"),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:t.IndentAction.IndentOutdent}},{beforeText:new RegExp(`<(?!(?:${e.join("|")}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,"i"),action:{indentAction:t.IndentAction.Indent}}]},C={defaultToken:"",tokenPostfix:"",tokenizer:{root:[[/\{\{!--/,"comment.block.start.handlebars","@commentBlock"],[/\{\{!/,"comment.start.handlebars","@comment"],[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.root"}],[/<!DOCTYPE/,"metatag.html","@doctype"],[/<!--/,"comment.html","@commentHtml"],[/(<)(\w+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)(script)/,["delimiter.html",{token:"tag.html",next:"@script"}]],[/(<)(style)/,["delimiter.html",{token:"tag.html",next:"@style"}]],[/(<)([:\w]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)(\w+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/\{/,"delimiter.html"],[/[^<{]+/]],doctype:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.comment"}],[/[^>]+/,"metatag.content.html"],[/>/,"metatag.html","@pop"]],comment:[[/\}\}/,"comment.end.handlebars","@pop"],[/./,"comment.content.handlebars"]],commentBlock:[[/--\}\}/,"comment.block.end.handlebars","@pop"],[/./,"comment.content.handlebars"]],commentHtml:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.comment"}],[/-->/,"comment.html","@pop"],[/[^-]+/,"comment.content.html"],[/./,"comment.content.html"]],otherTag:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.otherTag"}],[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.script"}],[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],scriptAfterType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.scriptAfterType"}],[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.scriptAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.scriptWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInEmbeddedState.scriptEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],style:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.style"}],[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],styleAfterType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.styleAfterType"}],[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.styleAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.styleWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInEmbeddedState.styleEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],handlebarsInSimpleState:[[/\{\{\{?/,"delimiter.handlebars"],[/\}\}\}?/,{token:"delimiter.handlebars",switchTo:"@$S2.$S3"}],{include:"handlebarsRoot"}],handlebarsInEmbeddedState:[[/\{\{\{?/,"delimiter.handlebars"],[/\}\}\}?/,{token:"delimiter.handlebars",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}],{include:"handlebarsRoot"}],handlebarsRoot:[[/"[^"]*"/,"string.handlebars"],[/[#/][^\s}]+/,"keyword.helper.handlebars"],[/else\b/,"keyword.helper.handlebars"],[/[\s]+/],[/[^}]/,"variable.parameter.handlebars"]]}};export{A as conf,C as language};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{l as t}from"./monaco-D3FVQqPj.js";import"./ProjectKanbanPage-DbgIwiUC.js";import"./index-DHKgc87I.js";import"./mermaid-NOHMQCX5-C6wHDXti.js";import"./chevron-right-jrkLz9qG.js";import"./chevron-down-CmGXPki1.js";import"./confirm-dialog-BZeaAl5j.js";import"./modal-kFSArLJi.js";import"./Icons-CM6Yg2lw.js";import"./CreateTaskInput-Cn0k5D8K.js";import"./AgentLogo-DOc8QQHe.js";import"./check-VMcYyBr4.js";import"./use-projects-DiJMGduU.js";import"./MemberAvatar-yC8O30hv.js";import"./use-providers-efX4HCcr.js";import"./trash-2-DA--Uikt.js";import"./useNormalizedLogs-xEobyuGF.js";import"./folder-picker-C3BgqamQ.js";import"./circle-alert-B6ZM3dSn.js";import"./message-square-Wwixl9YA.js";import"./layers-BFkjcml2.js";import"./chevron-up-UwBybVMK.js";import"./select-C2v0aFwN.js";import"./upload-hWnFHuhE.js";import"./arrow-left-D0MkHwKU.js";import"./copy-DqNqPI8d.js";const e=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],W={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["<!--","-->"]},brackets:[["<!--","-->"],["<",">"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"}],onEnterRules:[{beforeText:new RegExp(`<(?!(?:${e.join("|")}))([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$`,"i"),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:t.IndentAction.IndentOutdent}},{beforeText:new RegExp(`<(?!(?:${e.join("|")}))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,"i"),action:{indentAction:t.IndentAction.Indent}}],folding:{markers:{start:new RegExp("^\\s*<!--\\s*#region\\b.*-->"),end:new RegExp("^\\s*<!--\\s*#endregion\\b.*-->")}}},j={defaultToken:"",tokenPostfix:".html",ignoreCase:!0,tokenizer:{root:[[/<!DOCTYPE/,"metatag","@doctype"],[/<!--/,"comment","@comment"],[/(<)((?:[\w\-]+:)?[\w\-]+)(\s*)(\/>)/,["delimiter","tag","","delimiter"]],[/(<)(script)/,["delimiter",{token:"tag",next:"@script"}]],[/(<)(style)/,["delimiter",{token:"tag",next:"@style"}]],[/(<)((?:[\w\-]+:)?[\w\-]+)/,["delimiter",{token:"tag",next:"@otherTag"}]],[/(<\/)((?:[\w\-]+:)?[\w\-]+)/,["delimiter",{token:"tag",next:"@otherTag"}]],[/</,"delimiter"],[/[^<]+/]],doctype:[[/[^>]+/,"metatag.content"],[/>/,"metatag","@pop"]],comment:[[/-->/,"comment","@pop"],[/[^-]+/,"comment.content"],[/./,"comment.content"]],otherTag:[[/\/?>/,"delimiter","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter","tag",{token:"delimiter",next:"@pop"}]]],scriptAfterType:[[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/"module"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.text/javascript"}],[/'module'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.text/javascript"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/>/,{token:"delimiter",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]],style:[[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter","tag",{token:"delimiter",next:"@pop"}]]],styleAfterType:[[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/>/,{token:"delimiter",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]]}};export{W as conf,j as language};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as D,l as t}from"./monaco-D3FVQqPj.js";import{H as d,D as m,h as l,F as p,b as c,S as u,c as h,f as w,g as _,C as R}from"./lspLanguageFeatures-vY541IS0.js";import{a as re,e as ie,d as oe,R as ne,i as se,j as ae,t as ge,k as de}from"./lspLanguageFeatures-vY541IS0.js";import"./ProjectKanbanPage-DbgIwiUC.js";import"./index-DHKgc87I.js";import"./mermaid-NOHMQCX5-C6wHDXti.js";import"./chevron-right-jrkLz9qG.js";import"./chevron-down-CmGXPki1.js";import"./confirm-dialog-BZeaAl5j.js";import"./modal-kFSArLJi.js";import"./Icons-CM6Yg2lw.js";import"./CreateTaskInput-Cn0k5D8K.js";import"./AgentLogo-DOc8QQHe.js";import"./check-VMcYyBr4.js";import"./use-projects-DiJMGduU.js";import"./MemberAvatar-yC8O30hv.js";import"./use-providers-efX4HCcr.js";import"./trash-2-DA--Uikt.js";import"./useNormalizedLogs-xEobyuGF.js";import"./folder-picker-C3BgqamQ.js";import"./circle-alert-B6ZM3dSn.js";import"./message-square-Wwixl9YA.js";import"./layers-BFkjcml2.js";import"./chevron-up-UwBybVMK.js";import"./select-C2v0aFwN.js";import"./upload-hWnFHuhE.js";import"./arrow-left-D0MkHwKU.js";import"./copy-DqNqPI8d.js";const I=120*1e3;class f{constructor(o){this._defaults=o,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval(()=>this._checkIfIdle(),30*1e3),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange(()=>this._stopWorker())}_stopWorker(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){if(!this._worker)return;Date.now()-this._lastUsedTime>I&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||(this._worker=D({moduleId:"vs/language/html/htmlWorker",createWorker:()=>new Worker(new URL("/assets/html.worker-CwpTb9lJ.js",import.meta.url),{type:"module"}),createData:{languageSettings:this._defaults.options,languageId:this._defaults.languageId},label:this._defaults.languageId}),this._client=this._worker.getProxy()),this._client}getLanguageServiceWorker(...o){let e;return this._getClient().then(r=>{e=r}).then(r=>{if(this._worker)return this._worker.withSyncedResources(o)}).then(r=>e)}}class v extends R{constructor(o){super(o,[".",":","<",'"',"=","/"])}}function Z(i){const o=new f(i),e=(...n)=>o.getLanguageServiceWorker(...n);let r=i.languageId;t.registerCompletionItemProvider(r,new v(e)),t.registerHoverProvider(r,new d(e)),t.registerDocumentHighlightProvider(r,new m(e)),t.registerLinkProvider(r,new l(e)),t.registerFoldingRangeProvider(r,new p(e)),t.registerDocumentSymbolProvider(r,new c(e)),t.registerSelectionRangeProvider(r,new u(e)),t.registerRenameProvider(r,new h(e)),r==="html"&&(t.registerDocumentFormattingEditProvider(r,new w(e)),t.registerDocumentRangeFormattingEditProvider(r,new _(e)))}function $(i){const o=[],e=[],r=new f(i);o.push(r);const n=(...s)=>r.getLanguageServiceWorker(...s);function P(){const{languageId:s,modeConfiguration:a}=i;k(e),a.completionItems&&e.push(t.registerCompletionItemProvider(s,new v(n))),a.hovers&&e.push(t.registerHoverProvider(s,new d(n))),a.documentHighlights&&e.push(t.registerDocumentHighlightProvider(s,new m(n))),a.links&&e.push(t.registerLinkProvider(s,new l(n))),a.documentSymbols&&e.push(t.registerDocumentSymbolProvider(s,new c(n))),a.rename&&e.push(t.registerRenameProvider(s,new h(n))),a.foldingRanges&&e.push(t.registerFoldingRangeProvider(s,new p(n))),a.selectionRanges&&e.push(t.registerSelectionRangeProvider(s,new u(n))),a.documentFormattingEdits&&e.push(t.registerDocumentFormattingEditProvider(s,new w(n))),a.documentRangeFormattingEdits&&e.push(t.registerDocumentRangeFormattingEditProvider(s,new _(n)))}return P(),o.push(g(e)),g(o)}function g(i){return{dispose:()=>k(i)}}function k(i){for(;i.length;)i.pop().dispose()}export{R as CompletionAdapter,re as DefinitionAdapter,ie as DiagnosticsAdapter,oe as DocumentColorAdapter,w as DocumentFormattingEditProvider,m as DocumentHighlightAdapter,l as DocumentLinkAdapter,_ as DocumentRangeFormattingEditProvider,c as DocumentSymbolAdapter,p as FoldingRangeAdapter,d as HoverAdapter,ne as ReferenceAdapter,h as RenameAdapter,u as SelectionRangeAdapter,f as WorkerManager,se as fromPosition,ae as fromRange,$ as setupMode,Z as setupMode1,ge as toRange,de as toTextEdit};
|