agent-tower 0.7.2-beta.6 → 0.7.2-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +4 -1
- package/dist/app.js.map +1 -1
- package/dist/app.test.js +80 -1
- package/dist/app.test.js.map +1 -1
- package/dist/cli.js +4 -10
- package/dist/cli.js.map +1 -1
- package/dist/core/container.d.ts +8 -0
- package/dist/core/container.d.ts.map +1 -1
- package/dist/core/container.js +42 -0
- package/dist/core/container.js.map +1 -1
- package/dist/core/event-bus.d.ts +2 -0
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js.map +1 -1
- package/dist/executors/__tests__/image-utils.test.d.ts +2 -0
- package/dist/executors/__tests__/image-utils.test.d.ts.map +1 -0
- package/dist/executors/__tests__/image-utils.test.js +25 -0
- package/dist/executors/__tests__/image-utils.test.js.map +1 -0
- package/dist/executors/base.executor.d.ts +2 -0
- package/dist/executors/base.executor.d.ts.map +1 -1
- package/dist/executors/base.executor.js +6 -0
- package/dist/executors/base.executor.js.map +1 -1
- package/dist/executors/image-utils.d.ts.map +1 -1
- package/dist/executors/image-utils.js +10 -8
- package/dist/executors/image-utils.js.map +1 -1
- package/dist/git/git-cli.d.ts +2 -0
- package/dist/git/git-cli.d.ts.map +1 -1
- package/dist/git/git-cli.js +2 -0
- package/dist/git/git-cli.js.map +1 -1
- package/dist/git/worktree.manager.d.ts +2 -1
- package/dist/git/worktree.manager.d.ts.map +1 -1
- package/dist/git/worktree.manager.js +18 -12
- package/dist/git/worktree.manager.js.map +1 -1
- package/dist/index.js +16 -31
- package/dist/index.js.map +1 -1
- package/dist/mcp/http-client.d.ts +1 -0
- package/dist/mcp/http-client.d.ts.map +1 -1
- package/dist/mcp/http-client.js +3 -0
- package/dist/mcp/http-client.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +15 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/sessions.js +2 -2
- package/dist/mcp/tools/sessions.js.map +1 -1
- package/dist/mcp/tools/workspaces.d.ts.map +1 -1
- package/dist/mcp/tools/workspaces.js +2 -1
- package/dist/mcp/tools/workspaces.js.map +1 -1
- package/dist/middleware/access-auth.d.ts +1 -0
- package/dist/middleware/access-auth.d.ts.map +1 -1
- package/dist/middleware/access-auth.js +1 -1
- package/dist/middleware/access-auth.js.map +1 -1
- package/dist/output/__tests__/text-block-lifecycle.test.d.ts +2 -0
- package/dist/output/__tests__/text-block-lifecycle.test.d.ts.map +1 -0
- package/dist/output/__tests__/text-block-lifecycle.test.js +241 -0
- package/dist/output/__tests__/text-block-lifecycle.test.js.map +1 -0
- package/dist/output/claude-code-parser.d.ts +3 -0
- package/dist/output/claude-code-parser.d.ts.map +1 -1
- package/dist/output/claude-code-parser.js +58 -7
- package/dist/output/claude-code-parser.js.map +1 -1
- package/dist/output/codex-parser.d.ts.map +1 -1
- package/dist/output/codex-parser.js +4 -6
- package/dist/output/codex-parser.js.map +1 -1
- package/dist/output/cursor-agent-parser.d.ts.map +1 -1
- package/dist/output/cursor-agent-parser.js +4 -0
- package/dist/output/cursor-agent-parser.js.map +1 -1
- package/dist/output/gemini-parser.d.ts +18 -0
- package/dist/output/gemini-parser.d.ts.map +1 -0
- package/dist/output/gemini-parser.js +91 -0
- package/dist/output/gemini-parser.js.map +1 -0
- package/dist/output/msg-store.d.ts +6 -0
- package/dist/output/msg-store.d.ts.map +1 -1
- package/dist/output/msg-store.js +17 -0
- package/dist/output/msg-store.js.map +1 -1
- package/dist/output/text-block-tracker.d.ts +29 -0
- package/dist/output/text-block-tracker.d.ts.map +1 -0
- package/dist/output/text-block-tracker.js +149 -0
- package/dist/output/text-block-tracker.js.map +1 -0
- package/dist/output/types.d.ts +9 -0
- package/dist/output/types.d.ts.map +1 -1
- package/dist/output/types.js +0 -4
- package/dist/output/types.js.map +1 -1
- package/dist/routes/__tests__/sessions-runtime.test.js +3 -0
- package/dist/routes/__tests__/sessions-runtime.test.js.map +1 -1
- package/dist/routes/__tests__/team-run-translations.test.d.ts +2 -0
- package/dist/routes/__tests__/team-run-translations.test.d.ts.map +1 -0
- package/dist/routes/__tests__/team-run-translations.test.js +418 -0
- package/dist/routes/__tests__/team-run-translations.test.js.map +1 -0
- package/dist/routes/__tests__/translations.test.d.ts +2 -0
- package/dist/routes/__tests__/translations.test.d.ts.map +1 -0
- package/dist/routes/__tests__/translations.test.js +286 -0
- package/dist/routes/__tests__/translations.test.js.map +1 -0
- package/dist/routes/__tests__/workspaces.test.js +140 -0
- package/dist/routes/__tests__/workspaces.test.js.map +1 -1
- package/dist/routes/conversations.d.ts.map +1 -1
- package/dist/routes/conversations.js +19 -2
- package/dist/routes/conversations.js.map +1 -1
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +2 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/sessions.d.ts.map +1 -1
- package/dist/routes/sessions.js +32 -3
- package/dist/routes/sessions.js.map +1 -1
- package/dist/routes/team-runs.d.ts.map +1 -1
- package/dist/routes/team-runs.js +84 -15
- package/dist/routes/team-runs.js.map +1 -1
- package/dist/routes/translations.d.ts +4 -0
- package/dist/routes/translations.d.ts.map +1 -0
- package/dist/routes/translations.js +148 -0
- package/dist/routes/translations.js.map +1 -0
- package/dist/routes/user-input-origin.d.ts +4 -0
- package/dist/routes/user-input-origin.d.ts.map +1 -0
- package/dist/routes/user-input-origin.js +7 -0
- package/dist/routes/user-input-origin.js.map +1 -0
- package/dist/routes/workspaces.d.ts.map +1 -1
- package/dist/routes/workspaces.js +32 -2
- package/dist/routes/workspaces.js.map +1 -1
- package/dist/runtime/__tests__/acp-driver-lifecycle.test.js +2 -2
- package/dist/runtime/__tests__/acp-driver-lifecycle.test.js.map +1 -1
- package/dist/runtime/__tests__/acp-driver-submission.test.d.ts +2 -0
- package/dist/runtime/__tests__/acp-driver-submission.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/acp-driver-submission.test.js +88 -0
- package/dist/runtime/__tests__/acp-driver-submission.test.js.map +1 -0
- package/dist/runtime/__tests__/acp-history-reconciler.test.js +244 -0
- package/dist/runtime/__tests__/acp-history-reconciler.test.js.map +1 -1
- package/dist/runtime/__tests__/acp-projector.test.js +36 -0
- package/dist/runtime/__tests__/acp-projector.test.js.map +1 -1
- package/dist/runtime/__tests__/claude-cli-control.test.js +20 -0
- package/dist/runtime/__tests__/claude-cli-control.test.js.map +1 -1
- package/dist/runtime/__tests__/cli-driver-submission.test.d.ts +2 -0
- package/dist/runtime/__tests__/cli-driver-submission.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/cli-driver-submission.test.js +61 -0
- package/dist/runtime/__tests__/cli-driver-submission.test.js.map +1 -0
- package/dist/runtime/__tests__/codex-cli-control.test.js +25 -0
- package/dist/runtime/__tests__/codex-cli-control.test.js.map +1 -1
- package/dist/runtime/acp/acp-driver.js +38 -1
- package/dist/runtime/acp/acp-driver.js.map +1 -1
- package/dist/runtime/acp/history-reconciler.d.ts.map +1 -1
- package/dist/runtime/acp/history-reconciler.js +95 -36
- package/dist/runtime/acp/history-reconciler.js.map +1 -1
- package/dist/runtime/acp/projector.d.ts +5 -2
- package/dist/runtime/acp/projector.d.ts.map +1 -1
- package/dist/runtime/acp/projector.js +50 -23
- package/dist/runtime/acp/projector.js.map +1 -1
- package/dist/runtime/claude-cli-control.d.ts +4 -1
- package/dist/runtime/claude-cli-control.d.ts.map +1 -1
- package/dist/runtime/claude-cli-control.js +3 -1
- package/dist/runtime/claude-cli-control.js.map +1 -1
- package/dist/runtime/cli-driver.js +21 -7
- package/dist/runtime/cli-driver.js.map +1 -1
- package/dist/runtime/cli-parser.d.ts.map +1 -1
- package/dist/runtime/cli-parser.js +3 -0
- package/dist/runtime/cli-parser.js.map +1 -1
- package/dist/runtime/codex-cli-control.d.ts +4 -1
- package/dist/runtime/codex-cli-control.d.ts.map +1 -1
- package/dist/runtime/codex-cli-control.js +9 -6
- package/dist/runtime/codex-cli-control.js.map +1 -1
- package/dist/runtime/codex-cli-projector.d.ts +1 -1
- package/dist/runtime/codex-cli-projector.d.ts.map +1 -1
- package/dist/runtime/codex-cli-projector.js +4 -2
- package/dist/runtime/codex-cli-projector.js.map +1 -1
- package/dist/runtime/contracts.d.ts +15 -2
- package/dist/runtime/contracts.d.ts.map +1 -1
- package/dist/runtime/runtime-coordinator.d.ts.map +1 -1
- package/dist/runtime/runtime-coordinator.js +34 -1
- package/dist/runtime/runtime-coordinator.js.map +1 -1
- package/dist/services/__tests__/conflict-admission.test.d.ts +2 -0
- package/dist/services/__tests__/conflict-admission.test.d.ts.map +1 -0
- package/dist/services/__tests__/conflict-admission.test.js +37 -0
- package/dist/services/__tests__/conflict-admission.test.js.map +1 -0
- package/dist/services/__tests__/conflict-recovery-key.test.d.ts +2 -0
- package/dist/services/__tests__/conflict-recovery-key.test.d.ts.map +1 -0
- package/dist/services/__tests__/conflict-recovery-key.test.js +143 -0
- package/dist/services/__tests__/conflict-recovery-key.test.js.map +1 -0
- package/dist/services/__tests__/message-delivery.integration.test.d.ts +2 -0
- package/dist/services/__tests__/message-delivery.integration.test.d.ts.map +1 -0
- package/dist/services/__tests__/message-delivery.integration.test.js +1137 -0
- package/dist/services/__tests__/message-delivery.integration.test.js.map +1 -0
- package/dist/services/__tests__/review-team-user-counterexamples.test.d.ts +2 -0
- package/dist/services/__tests__/review-team-user-counterexamples.test.d.ts.map +1 -0
- package/dist/services/__tests__/review-team-user-counterexamples.test.js +200 -0
- package/dist/services/__tests__/review-team-user-counterexamples.test.js.map +1 -0
- package/dist/services/__tests__/session-manager.lifecycle.test.js +37 -0
- package/dist/services/__tests__/session-manager.lifecycle.test.js.map +1 -1
- package/dist/services/__tests__/session-manager.team-run.test.js +19 -2
- package/dist/services/__tests__/session-manager.team-run.test.js.map +1 -1
- package/dist/services/__tests__/team-initial-delivery.integration.test.d.ts +2 -0
- package/dist/services/__tests__/team-initial-delivery.integration.test.d.ts.map +1 -0
- package/dist/services/__tests__/team-initial-delivery.integration.test.js +469 -0
- package/dist/services/__tests__/team-initial-delivery.integration.test.js.map +1 -0
- package/dist/services/__tests__/team-reconciler.service.test.js +102 -101
- package/dist/services/__tests__/team-reconciler.service.test.js.map +1 -1
- package/dist/services/__tests__/team-room-delivery.test.d.ts +2 -0
- package/dist/services/__tests__/team-room-delivery.test.d.ts.map +1 -0
- package/dist/services/__tests__/team-room-delivery.test.js +670 -0
- package/dist/services/__tests__/team-room-delivery.test.js.map +1 -0
- package/dist/services/__tests__/team-user-delivery.integration.test.d.ts +2 -0
- package/dist/services/__tests__/team-user-delivery.integration.test.d.ts.map +1 -0
- package/dist/services/__tests__/team-user-delivery.integration.test.js +622 -0
- package/dist/services/__tests__/team-user-delivery.integration.test.js.map +1 -0
- package/dist/services/__tests__/translation-client.test.d.ts +2 -0
- package/dist/services/__tests__/translation-client.test.d.ts.map +1 -0
- package/dist/services/__tests__/translation-client.test.js +240 -0
- package/dist/services/__tests__/translation-client.test.js.map +1 -0
- package/dist/services/__tests__/translation-protection.test.d.ts +2 -0
- package/dist/services/__tests__/translation-protection.test.d.ts.map +1 -0
- package/dist/services/__tests__/translation-protection.test.js +156 -0
- package/dist/services/__tests__/translation-protection.test.js.map +1 -0
- package/dist/services/__tests__/translation-queue.test.d.ts +2 -0
- package/dist/services/__tests__/translation-queue.test.d.ts.map +1 -0
- package/dist/services/__tests__/translation-queue.test.js +277 -0
- package/dist/services/__tests__/translation-queue.test.js.map +1 -0
- package/dist/services/__tests__/translation-room-admission.test.d.ts +2 -0
- package/dist/services/__tests__/translation-room-admission.test.d.ts.map +1 -0
- package/dist/services/__tests__/translation-room-admission.test.js +371 -0
- package/dist/services/__tests__/translation-room-admission.test.js.map +1 -0
- package/dist/services/__tests__/translation-session-blocks.test.d.ts +2 -0
- package/dist/services/__tests__/translation-session-blocks.test.d.ts.map +1 -0
- package/dist/services/__tests__/translation-session-blocks.test.js +367 -0
- package/dist/services/__tests__/translation-session-blocks.test.js.map +1 -0
- package/dist/services/__tests__/translation-settings.service.test.d.ts +2 -0
- package/dist/services/__tests__/translation-settings.service.test.d.ts.map +1 -0
- package/dist/services/__tests__/translation-settings.service.test.js +154 -0
- package/dist/services/__tests__/translation-settings.service.test.js.map +1 -0
- package/dist/services/__tests__/translation.service.test.d.ts +2 -0
- package/dist/services/__tests__/translation.service.test.d.ts.map +1 -0
- package/dist/services/__tests__/translation.service.test.js +480 -0
- package/dist/services/__tests__/translation.service.test.js.map +1 -0
- package/dist/services/access-auth.service.d.ts +1 -0
- package/dist/services/access-auth.service.d.ts.map +1 -1
- package/dist/services/access-auth.service.js +8 -0
- package/dist/services/access-auth.service.js.map +1 -1
- package/dist/services/attachment-context.d.ts +7 -1
- package/dist/services/attachment-context.d.ts.map +1 -1
- package/dist/services/attachment-context.js +23 -2
- package/dist/services/attachment-context.js.map +1 -1
- package/dist/services/conflict-admission.d.ts +37 -0
- package/dist/services/conflict-admission.d.ts.map +1 -0
- package/dist/services/conflict-admission.js +97 -0
- package/dist/services/conflict-admission.js.map +1 -0
- package/dist/services/conflict-resolution-context.d.ts +33 -0
- package/dist/services/conflict-resolution-context.d.ts.map +1 -0
- package/dist/services/conflict-resolution-context.js +434 -0
- package/dist/services/conflict-resolution-context.js.map +1 -0
- package/dist/services/message-delivery.service.d.ts +195 -0
- package/dist/services/message-delivery.service.d.ts.map +1 -0
- package/dist/services/message-delivery.service.js +956 -0
- package/dist/services/message-delivery.service.js.map +1 -0
- package/dist/services/project.service.d.ts +1 -1
- package/dist/services/session-manager.d.ts +94 -74
- package/dist/services/session-manager.d.ts.map +1 -1
- package/dist/services/session-manager.js +91 -17
- package/dist/services/session-manager.js.map +1 -1
- package/dist/services/task.service.d.ts +26 -20
- package/dist/services/task.service.d.ts.map +1 -1
- package/dist/services/task.service.js +9 -26
- package/dist/services/task.service.js.map +1 -1
- package/dist/services/team-room-delivery.d.ts +541 -0
- package/dist/services/team-room-delivery.d.ts.map +1 -0
- package/dist/services/team-room-delivery.js +123 -0
- package/dist/services/team-room-delivery.js.map +1 -0
- package/dist/services/team-run.service.d.ts +83 -0
- package/dist/services/team-run.service.d.ts.map +1 -1
- package/dist/services/team-run.service.js +207 -18
- package/dist/services/team-run.service.js.map +1 -1
- package/dist/services/team-scheduler.service.d.ts +3 -0
- package/dist/services/team-scheduler.service.d.ts.map +1 -1
- package/dist/services/team-scheduler.service.js +65 -11
- package/dist/services/team-scheduler.service.js.map +1 -1
- package/dist/services/team-task-input.d.ts +37 -0
- package/dist/services/team-task-input.d.ts.map +1 -0
- package/dist/services/team-task-input.js +98 -0
- package/dist/services/team-task-input.js.map +1 -0
- package/dist/services/team-task-input.service.d.ts +72 -0
- package/dist/services/team-task-input.service.d.ts.map +1 -0
- package/dist/services/team-task-input.service.js +205 -0
- package/dist/services/team-task-input.service.js.map +1 -0
- package/dist/services/translation-client.d.ts +31 -0
- package/dist/services/translation-client.d.ts.map +1 -0
- package/dist/services/translation-client.js +169 -0
- package/dist/services/translation-client.js.map +1 -0
- package/dist/services/translation-errors.d.ts +14 -0
- package/dist/services/translation-errors.d.ts.map +1 -0
- package/dist/services/translation-errors.js +16 -0
- package/dist/services/translation-errors.js.map +1 -0
- package/dist/services/translation-protection.d.ts +27 -0
- package/dist/services/translation-protection.d.ts.map +1 -0
- package/dist/services/translation-protection.js +547 -0
- package/dist/services/translation-protection.js.map +1 -0
- package/dist/services/translation-queue.d.ts +49 -0
- package/dist/services/translation-queue.d.ts.map +1 -0
- package/dist/services/translation-queue.js +211 -0
- package/dist/services/translation-queue.js.map +1 -0
- package/dist/services/translation-settings.service.d.ts +152 -0
- package/dist/services/translation-settings.service.d.ts.map +1 -0
- package/dist/services/translation-settings.service.js +174 -0
- package/dist/services/translation-settings.service.js.map +1 -0
- package/dist/services/translation.service.d.ts +168 -0
- package/dist/services/translation.service.d.ts.map +1 -0
- package/dist/services/translation.service.js +861 -0
- package/dist/services/translation.service.js.map +1 -0
- package/dist/services/workspace.service.d.ts +84 -93
- package/dist/services/workspace.service.d.ts.map +1 -1
- package/dist/services/workspace.service.js +69 -5
- package/dist/services/workspace.service.js.map +1 -1
- package/dist/socket/__tests__/socket-gateway.test.js +131 -1
- package/dist/socket/__tests__/socket-gateway.test.js.map +1 -1
- package/dist/socket/socket-gateway.d.ts +6 -0
- package/dist/socket/socket-gateway.d.ts.map +1 -1
- package/dist/socket/socket-gateway.js +312 -6
- package/dist/socket/socket-gateway.js.map +1 -1
- package/dist/utils/database-schema.d.ts +9 -0
- package/dist/utils/database-schema.d.ts.map +1 -0
- package/dist/utils/database-schema.js +434 -0
- package/dist/utils/database-schema.js.map +1 -0
- package/dist/utils/database-schema.test.d.ts +2 -0
- package/dist/utils/database-schema.test.d.ts.map +1 -0
- package/dist/utils/database-schema.test.js +359 -0
- package/dist/utils/database-schema.test.js.map +1 -0
- package/dist/utils/database-team-foundation.test.d.ts +2 -0
- package/dist/utils/database-team-foundation.test.d.ts.map +1 -0
- package/dist/utils/database-team-foundation.test.js +467 -0
- package/dist/utils/database-team-foundation.test.js.map +1 -0
- package/dist/utils/owned-child-process.test.js +6 -3
- package/dist/utils/owned-child-process.test.js.map +1 -1
- package/dist/utils/text-preview.d.ts +4 -0
- package/dist/utils/text-preview.d.ts.map +1 -0
- package/dist/utils/text-preview.js +21 -0
- package/dist/utils/text-preview.js.map +1 -0
- package/dist/web/assets/AgentDemoPage-CtCYXopw.js +1 -0
- package/dist/web/assets/{AgentEnvironmentSettingsPage-BnWVgvNe.js → AgentEnvironmentSettingsPage-DSWN546Y.js} +1 -1
- package/dist/web/assets/AttachmentPreview-DRG5_cfN.js +2 -0
- package/dist/web/assets/BranchSelect-Dxs7HnMM.js +1 -0
- package/dist/web/assets/BrandLogo-Ilm880Xs.js +1 -0
- package/dist/web/assets/ConversationPage-B55Bj_ft.js +1 -0
- package/dist/web/assets/CreateTaskInput-CxWPeToI.js +1 -0
- package/dist/web/assets/{DemoPage-BwX2SvcN.js → DemoPage-Dyn-U9JO.js} +3 -3
- package/dist/web/assets/DesignSystemPage-BxypsRUZ.js +12 -0
- package/dist/web/assets/EditableTaskTitle-Dh-SmvFW.js +70 -0
- package/dist/web/assets/{ExecutionPermissionSelector-DeeNd4Kh.js → ExecutionPermissionSelector-CQ_GNxR0.js} +10 -10
- package/dist/web/assets/GeneralSettingsPage-CzoejPZP.js +1 -0
- package/dist/web/assets/{LoadingPreviewPage-BxEFnEQh.js → LoadingPreviewPage-BlW2PJhI.js} +1 -1
- package/dist/web/assets/McpSettingsPage-DD7EqD4L.js +1 -0
- package/dist/web/assets/MemberAvatar-B2pAdWUi.js +1 -0
- package/dist/web/assets/MobileTaskDetail-CvmNW0BQ.js +3 -0
- package/dist/web/assets/NotificationSettingsPage-BIqldIRf.js +1 -0
- package/dist/web/assets/ProfileSettingsPage-DMxpHmF1.js +3 -0
- package/dist/web/assets/ProjectKanbanPage-CHW79td4.js +12 -0
- package/dist/web/assets/ProjectSettingsPage-DKiEUkoa.js +2 -0
- package/dist/web/assets/ProviderSettingsPage-DZT7wyE2.js +67 -0
- package/dist/web/assets/SettingsMasterDetail-DnF0lsV1.js +1 -0
- package/dist/web/assets/TaskDetail-D_970BDY.js +1 -0
- package/dist/web/assets/TeamSettingsPage-BJIEZ7xL.js +1 -0
- package/dist/web/assets/TranslationSettingsPage-D3mazqEW.js +1 -0
- package/dist/web/assets/arc-hUh7ykl8.js +1 -0
- package/dist/web/assets/{architectureDiagram-3BPJPVTR-B5EIiXuX.js → architectureDiagram-3BPJPVTR-CcV9CLkm.js} +1 -1
- package/dist/web/assets/{at-sign-BE17rU5b.js → at-sign-B-nhoGyH.js} +1 -1
- package/dist/web/assets/{blockDiagram-GPEHLZMM-GFwnvSLM.js → blockDiagram-GPEHLZMM-5q3Y9y0e.js} +1 -1
- package/dist/web/assets/{c4Diagram-AAUBKEIU-iJfLTxEa.js → c4Diagram-AAUBKEIU-CorBXi06.js} +1 -1
- package/dist/web/assets/channel-By24WpLg.js +1 -0
- package/dist/web/assets/check-DqPSoX0r.js +1 -0
- package/dist/web/assets/{chevron-down-BaQEBzp3.js → chevron-down-CPnvItQw.js} +1 -1
- package/dist/web/assets/{chevron-up-D0y6skqr.js → chevron-up-B8PE5N0G.js} +1 -1
- package/dist/web/assets/{chunk-2J33WTMH-CDxRPp-8.js → chunk-2J33WTMH-BUf5B4z4.js} +1 -1
- package/dist/web/assets/{chunk-4BX2VUAB-mzPbgyiz.js → chunk-4BX2VUAB-CdnOHkro.js} +1 -1
- package/dist/web/assets/{chunk-55IACEB6-KNAJbQyw.js → chunk-55IACEB6-U7edZDpP.js} +1 -1
- package/dist/web/assets/{chunk-727SXJPM-BqGfqkDK.js → chunk-727SXJPM-B64Tuhla.js} +1 -1
- package/dist/web/assets/{chunk-AQP2D5EJ-D27ue-H0.js → chunk-AQP2D5EJ-dXfe56jB.js} +1 -1
- package/dist/web/assets/{chunk-FMBD7UC4-DRza-3q8.js → chunk-FMBD7UC4-DDYbxc1Q.js} +1 -1
- package/dist/web/assets/{chunk-ND2GUHAM-CUgkviLu.js → chunk-ND2GUHAM-BQDGMv0R.js} +1 -1
- package/dist/web/assets/{chunk-QZHKN3VN-BAlOJwZb.js → chunk-QZHKN3VN-DB8q4xAj.js} +1 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-DxHoimtR.js +1 -0
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-DxHoimtR.js +1 -0
- package/dist/web/assets/code-block-OCS4YCEC-BSdICyOa.js +2 -0
- package/dist/web/assets/confirm-dialog-DxEBZEbV.js +1 -0
- package/dist/web/assets/content-CMUL3HGx.js +2 -0
- package/dist/web/assets/{copy-DejkmIHZ.js → copy-DyxlXxiU.js} +1 -1
- package/dist/web/assets/{cose-bilkent-S5V4N54A-8TBY7BP_.js → cose-bilkent-S5V4N54A-Dx6eMnll.js} +1 -1
- package/dist/web/assets/cssMode-ZnNWfjZ6.js +1 -0
- package/dist/web/assets/{dagre-BM42HDAG-CkMzDiim.js → dagre-BM42HDAG-Cxe8pLgD.js} +1 -1
- package/dist/web/assets/{diagram-2AECGRRQ-CAOQJ2N1.js → diagram-2AECGRRQ-RMsswEBe.js} +1 -1
- package/dist/web/assets/{diagram-5GNKFQAL-DKhE0hiI.js → diagram-5GNKFQAL-Bi4E0hzx.js} +1 -1
- package/dist/web/assets/{diagram-KO2AKTUF-DBdkXSpa.js → diagram-KO2AKTUF-Mv6CDCyn.js} +1 -1
- package/dist/web/assets/{diagram-LMA3HP47-DRi2t32c.js → diagram-LMA3HP47-CJ3qKNzK.js} +1 -1
- package/dist/web/assets/{diagram-OG6HWLK6-DtP92tI1.js → diagram-OG6HWLK6-D8SBY4ft.js} +1 -1
- package/dist/web/assets/dialog-BYdeYC2Y.js +5 -0
- package/dist/web/assets/{erDiagram-TEJ5UH35-DWFKXtst.js → erDiagram-TEJ5UH35-DwVSCU6X.js} +1 -1
- package/dist/web/assets/{flowDiagram-I6XJVG4X-LDE0h4ri.js → flowDiagram-I6XJVG4X-CyipYAWd.js} +1 -1
- package/dist/web/assets/{freemarker2-CLksOOZX.js → freemarker2-DbH_yMCO.js} +2 -2
- package/dist/web/assets/{ganttDiagram-6RSMTGT7-DD2RfdyV.js → ganttDiagram-6RSMTGT7-CsC6Wjt4.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PVQCEYII-DkKrR8ex.js → gitGraphDiagram-PVQCEYII-E5jNbqlq.js} +1 -1
- package/dist/web/assets/{globe-CD4g63c9.js → globe-B2rgTPH3.js} +1 -1
- package/dist/web/assets/handlebars-C5VY_S-z.js +1 -0
- package/dist/web/assets/hooks-Ct0srfV-.js +1 -0
- package/dist/web/assets/html-e5uLnAgN.js +1 -0
- package/dist/web/assets/htmlMode-BeNiGozX.js +1 -0
- package/dist/web/assets/icon-button-BEMJj_6T.js +1 -0
- package/dist/web/assets/index-0XPZayUU.css +1 -0
- package/dist/web/assets/index-BYPOXP6w.js +1 -0
- package/dist/web/assets/{index-D_QVcsLn.js → index-C-M0QDqc.js} +5 -5
- package/dist/web/assets/index-CAjqC8pT.js +41 -0
- package/dist/web/assets/index-CPGzLjEC.js +1 -0
- package/dist/web/assets/index-Cm6snkmR.js +122 -0
- package/dist/web/assets/index-DNdMmXBr.js +1 -0
- package/dist/web/assets/index-DppwrK2G.js +1 -0
- package/dist/web/assets/index-IMdA08Ok.js +1 -0
- package/dist/web/assets/index-kr6U6_pi.js +1 -0
- package/dist/web/assets/{infoDiagram-5YYISTIA-BdPA9Xfi.js → infoDiagram-5YYISTIA-5_0wrRXl.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-220u4uiv.js → ishikawaDiagram-YF4QCWOH-aQujIFZw.js} +5 -5
- package/dist/web/assets/javascript-D7QVj9jR.js +1 -0
- package/dist/web/assets/{journeyDiagram-JHISSGLW-BvE0Y3tZ.js → journeyDiagram-JHISSGLW-ClMzHdqI.js} +1 -1
- package/dist/web/assets/jsonMode-nHmLVf-n.js +7 -0
- package/dist/web/assets/{kanban-definition-UN3LZRKU-Q0JH1P6D.js → kanban-definition-UN3LZRKU-BFVlt0tz.js} +1 -1
- package/dist/web/assets/kbd-Bfq5K6Ux.js +1 -0
- package/dist/web/assets/{key-round-DZm1FLLr.js → key-round-BqsaQdce.js} +1 -1
- package/dist/web/assets/{layers-Dda7MM7a.js → layers-DI4vFJ4F.js} +1 -1
- package/dist/web/assets/{linear-Dr6SfnSn.js → linear-DZ-6PAPS.js} +1 -1
- package/dist/web/assets/{link-BUeSP3T7.js → link-BU4PN723.js} +1 -1
- package/dist/web/assets/liquid-BPIyogoj.js +1 -0
- package/dist/web/assets/{lspLanguageFeatures-Bbp4PWlJ.js → lspLanguageFeatures-DH4Z8jiM.js} +1 -1
- package/dist/web/assets/mdx-CI8yO2pV.js +1 -0
- package/dist/web/assets/menu-C3uB3M7p.js +1 -0
- package/dist/web/assets/menu-styles-DWynpVVz.js +1 -0
- package/dist/web/assets/mermaid-NOHMQCX5-BqeX1osS.js +123 -0
- package/dist/web/assets/{message-square-CFriSt4D.js → message-square-E5K8E3A-.js} +1 -1
- package/dist/web/assets/{mindmap-definition-RKZ34NQL-bvDaNfKs.js → mindmap-definition-RKZ34NQL-C7dea0db.js} +1 -1
- package/dist/web/assets/modal-Cz1iIVeD.js +1 -0
- package/dist/web/assets/{monaco-BuDK9Fat.js → monaco-DM3DuGN5.js} +3 -3
- package/dist/web/assets/{paperclip-BOSklTt7.js → paperclip-COXNce_v.js} +1 -1
- package/dist/web/assets/{pencil-BRQ9W_a-.js → pencil-BFc4n44f.js} +1 -1
- package/dist/web/assets/people-BaCetIqh.js +1 -0
- package/dist/web/assets/{pieDiagram-4H26LBE5-BQCca9Cq.js → pieDiagram-4H26LBE5-2q5medug.js} +2 -2
- package/dist/web/assets/popover-CJCQLoGu.js +1 -0
- package/dist/web/assets/python-CSxVPG9p.js +1 -0
- package/dist/web/assets/{quadrantDiagram-W4KKPZXB-BEM2U7Cd.js → quadrantDiagram-W4KKPZXB-DHPEM56s.js} +1 -1
- package/dist/web/assets/razor-CVoIieeS.js +1 -0
- package/dist/web/assets/{requirementDiagram-4Y6WPE33-CcmFIALZ.js → requirementDiagram-4Y6WPE33-B_KyH7PP.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-5OEKKPKP-D9Nrfbqk.js → sankeyDiagram-5OEKKPKP-CrqkZAYW.js} +1 -1
- package/dist/web/assets/search-CkiBPir_.js +1 -0
- package/dist/web/assets/search-field-CbM2P2KE.js +1 -0
- package/dist/web/assets/select-Br0TAs7A.js +1 -0
- package/dist/web/assets/select-DJsEG0jq.js +1 -0
- package/dist/web/assets/{sequenceDiagram-3UESZ5HK-5udQDi0x.js → sequenceDiagram-3UESZ5HK-BRTm1WQA.js} +1 -1
- package/dist/web/assets/{server-DJaSJ9m1.js → server-DYeSE1wn.js} +1 -1
- package/dist/web/assets/stateDiagram-AJRCARHV-qN49iyR2.js +1 -0
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-B1clBPkJ.js +1 -0
- package/dist/web/assets/{textarea-Ft9KMoEI.js → textarea-B7vtoRE3.js} +1 -1
- package/dist/web/assets/{timeline-definition-PNZ67QCA-DXS236a-.js → timeline-definition-PNZ67QCA-BzarcDi3.js} +1 -1
- package/dist/web/assets/toggles-jo27o0AH.js +1 -0
- package/dist/web/assets/tooltip-DbVtCXcO.js +1 -0
- package/dist/web/assets/track-C0vxnITw.js +1 -0
- package/dist/web/assets/{trash-2-Bc-URu8c.js → trash-2-CUM-XX8B.js} +1 -1
- package/dist/web/assets/tsMode-7D3gqep6.js +11 -0
- package/dist/web/assets/typescript-CbOVEQNg.js +1 -0
- package/dist/web/assets/{upload-C9Z4jLtv.js → upload-CJ6jVmte.js} +1 -1
- package/dist/web/assets/use-profiles-B0xXAf7Z.js +1 -0
- package/dist/web/assets/{use-projects-DI27nNwl.js → use-projects-BlTwWxkY.js} +1 -1
- package/dist/web/assets/{use-providers-DB9ghBPq.js → use-providers-FMSfyTD1.js} +1 -1
- package/dist/web/assets/use-translation-settings-BOlszecX.js +1 -0
- package/dist/web/assets/use-workspaces-DYrEp0Lw.js +1 -0
- package/dist/web/assets/useNormalizedLogs-D0N8MJdH.js +1 -0
- package/dist/web/assets/useTokenUsage-WB3ZQ25v.js +1 -0
- package/dist/web/assets/{vennDiagram-CIIHVFJN-BzyNrP06.js → vennDiagram-CIIHVFJN-B6oZetvf.js} +1 -1
- package/dist/web/assets/{wardley-L42UT6IY-BQ4SyU9_.js → wardley-L42UT6IY-Bzuhm76f.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-YWT4CUSO-CcCqmB58.js → wardleyDiagram-YWT4CUSO-DaC-FUf5.js} +1 -1
- package/dist/web/assets/xml-Cfa9tkdT.js +1 -0
- package/dist/web/assets/{xychartDiagram-2RQKCTM6-RWm1MtQk.js → xychartDiagram-2RQKCTM6-CCvRIJRL.js} +1 -1
- package/dist/web/assets/yaml-C86f7VLL.js +1 -0
- package/dist/web/index.html +2 -2
- 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 +11 -0
- package/node_modules/@agent-tower/shared/dist/log-adapter.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/log-adapter.js +2 -0
- package/node_modules/@agent-tower/shared/dist/log-adapter.js.map +1 -1
- package/node_modules/@agent-tower/shared/dist/socket/events.d.ts +5 -2
- package/node_modules/@agent-tower/shared/dist/socket/events.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/socket/events.js +2 -0
- package/node_modules/@agent-tower/shared/dist/socket/events.js.map +1 -1
- package/node_modules/@agent-tower/shared/dist/translation.d.ts +306 -0
- package/node_modules/@agent-tower/shared/dist/translation.d.ts.map +1 -0
- package/node_modules/@agent-tower/shared/dist/translation.js +8 -0
- package/node_modules/@agent-tower/shared/dist/translation.js.map +1 -0
- package/node_modules/@agent-tower/shared/dist/types.d.ts +23 -0
- package/node_modules/@agent-tower/shared/dist/types.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/prisma/migrations/20261016000000_add_translation_foundation/migration.sql +104 -0
- package/prisma/migrations/20261016010000_add_message_deliveries/migration.sql +158 -0
- package/prisma/migrations/20261019000000_add_room_translation_eligibility/migration.sql +3 -0
- package/prisma/migrations/20261019100000_add_team_delivery_foundation/migration.sql +217 -0
- package/prisma/schema.prisma +224 -0
- package/dist/web/assets/AgentDemoPage-D0LQRcXm.js +0 -1
- package/dist/web/assets/AgentLogo-BDyW3ihb.js +0 -1
- package/dist/web/assets/BranchSelect-Dmp5hq0i.js +0 -1
- package/dist/web/assets/BrandLogo-YGT4Vlw5.js +0 -1
- package/dist/web/assets/ConversationPage-BhapUYGe.js +0 -3
- package/dist/web/assets/CreateTaskInput-GLF3Oyc1.js +0 -1
- package/dist/web/assets/DesignSystemPage-j-1-1JtQ.js +0 -16
- package/dist/web/assets/EditableTaskTitle-mHT39coo.js +0 -70
- package/dist/web/assets/GeneralSettingsPage-BBe3EXcj.js +0 -1
- package/dist/web/assets/McpSettingsPage-DDA8yUxu.js +0 -1
- package/dist/web/assets/MemberAvatar-CCRbS97s.js +0 -1
- package/dist/web/assets/MobileTaskDetail-BOIFPybn.js +0 -5
- package/dist/web/assets/NotificationSettingsPage-B2kUnE8w.js +0 -1
- package/dist/web/assets/ProfileSettingsPage-DPZpUoFd.js +0 -3
- package/dist/web/assets/ProjectKanbanPage-DQnwUBFg.js +0 -12
- package/dist/web/assets/ProjectSettingsPage-CcXAOYb7.js +0 -2
- package/dist/web/assets/ProviderSettingsPage-BAIRvcAS.js +0 -67
- package/dist/web/assets/SettingsMasterDetail-BuxwsR9R.js +0 -1
- package/dist/web/assets/TaskDetail-B3pOSx3f.js +0 -3
- package/dist/web/assets/TeamSettingsPage-DoWmzvKu.js +0 -1
- package/dist/web/assets/agent-meta-MzuGtqxl.js +0 -1
- package/dist/web/assets/arc-Bm_QIbJA.js +0 -1
- package/dist/web/assets/arrow-down-BVePf1ZM.js +0 -1
- package/dist/web/assets/channel-CYYV7_Oi.js +0 -1
- package/dist/web/assets/check-qs0S_9rB.js +0 -1
- package/dist/web/assets/circle-alert-Cbvy2cMo.js +0 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-Cl-3ikxt.js +0 -1
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-Cl-3ikxt.js +0 -1
- package/dist/web/assets/code-block-OCS4YCEC-CO23R1Os.js +0 -2
- package/dist/web/assets/confirm-dialog-BrgNTypL.js +0 -1
- package/dist/web/assets/cssMode-hzDRnxMx.js +0 -1
- package/dist/web/assets/gauge-CPlvCZUV.js +0 -1
- package/dist/web/assets/handlebars-C1M9t0Lo.js +0 -1
- package/dist/web/assets/html-DKVKQovh.js +0 -1
- package/dist/web/assets/htmlMode-BSWjg5ir.js +0 -1
- package/dist/web/assets/index-BnqdwOEH.css +0 -1
- package/dist/web/assets/index-CMJV-mgF.js +0 -122
- package/dist/web/assets/javascript-WwrMY2Bg.js +0 -1
- package/dist/web/assets/jsonMode-Dz0hnnvg.js +0 -7
- package/dist/web/assets/liquid-CzGEh0ls.js +0 -1
- package/dist/web/assets/mdx-y6S3OMMk.js +0 -1
- package/dist/web/assets/mermaid-NOHMQCX5-C72362la.js +0 -123
- package/dist/web/assets/modal-DeigO7aN.js +0 -1
- package/dist/web/assets/play-Mxkwq69n.js +0 -1
- package/dist/web/assets/python-CMnGKsU9.js +0 -1
- package/dist/web/assets/razor-mLurbGgY.js +0 -1
- package/dist/web/assets/select-DKS02St6.js +0 -1
- package/dist/web/assets/stateDiagram-AJRCARHV-D-cF1NGV.js +0 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-a4ugQnZs.js +0 -1
- package/dist/web/assets/status-styles-sQm4KLdp.js +0 -1
- package/dist/web/assets/switch-7LWQ_sEx.js +0 -1
- package/dist/web/assets/task-CDYaC_No.js +0 -42
- package/dist/web/assets/task-priority-acVgTiil.js +0 -1
- package/dist/web/assets/tsMode-Vr3bndW1.js +0 -11
- package/dist/web/assets/typescript-BfjoaUSn.js +0 -1
- package/dist/web/assets/use-attachments-EypT-7PI.js +0 -2
- package/dist/web/assets/use-profiles-nMPGwy3v.js +0 -1
- package/dist/web/assets/use-workspaces-d4n9m9cX.js +0 -1
- package/dist/web/assets/useNormalizedLogs-DRoPbP0w.js +0 -1
- package/dist/web/assets/useTokenUsage-4qTDa8SY.js +0 -1
- package/dist/web/assets/xml-BGVoPR0b.js +0 -1
- package/dist/web/assets/yaml-eFhNavrs.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as Se,r as n,af as Bt,j as e,B as ne,ag as zt,N as Xs,ah as Ft,ai as Ut,aj as _t,ak as Kt,al as qt,am as Vt,an as L,ao as Gt,ap as Ht,q as Qt,v as $t,s as Ne,aq as us,ar as Xt,ac as Ys,ad as B,as as Yt,w as Jt,at as Js,au as Zt,Q as en,av as sn,aw as A,a2 as tn,ax as nn}from"./index-Cm6snkmR.js";import{r as rn,a as Zs,Q as on,s as an}from"./mermaid-NOHMQCX5-BqeX1osS.js";import{u as ln,r as cn,c as dn,g as _e,a as un,b as mn,d as pn,e as fn,f as xn,h as gn,W as hn,E as bn,i as vn,C as jn,S as yn,T as et,R as kn,j as Cn,k as wn,l as Nn,m as In,n as Sn}from"./EditableTaskTitle-Dh-SmvFW.js";import{t as Rn,D as Tn}from"./ProjectKanbanPage-CHW79td4.js";import{u as An,a as En,R as Wn,P as Pn,T as Dn}from"./useTokenUsage-WB3ZQ25v.js";import{u as Mn,a as On,L as st,T as tt}from"./useNormalizedLogs-D0N8MJdH.js";import{g as Ln}from"./ExecutionPermissionSelector-CQ_GNxR0.js";import{u as Bn,A as zn}from"./AttachmentPreview-DRG5_cfN.js";import{T as Fn,u as Un,a as _n,b as Kn,c as qn,d as Vn,e as Gn,S as nt}from"./CreateTaskInput-CxWPeToI.js";import{u as Hn,a as Qn,b as $n,c as Xn,d as Yn,e as Jn}from"./use-workspaces-DYrEp0Lw.js";import{u as Zn}from"./use-providers-FMSfyTD1.js";import{M as er}from"./modal-Cz1iIVeD.js";import{C as sr}from"./confirm-dialog-DxEBZEbV.js";import{C as tr,P as ms}from"./content-CMUL3HGx.js";import{P as rt,T as nr}from"./trash-2-CUM-XX8B.js";import{P as rr}from"./paperclip-COXNce_v.js";import"./use-translation-settings-BOlszecX.js";import"./copy-DyxlXxiU.js";import"./index-kr6U6_pi.js";import"./index-CAjqC8pT.js";import"./index-DNdMmXBr.js";import"./tooltip-DbVtCXcO.js";import"./kbd-Bfq5K6Ux.js";import"./index-DppwrK2G.js";import"./chevron-down-CPnvItQw.js";import"./MemberAvatar-B2pAdWUi.js";import"./people-BaCetIqh.js";import"./chevron-up-B8PE5N0G.js";import"./at-sign-B-nhoGyH.js";import"./check-DqPSoX0r.js";import"./BrandLogo-Ilm880Xs.js";import"./hooks-Ct0srfV-.js";import"./index-CPGzLjEC.js";import"./index-BYPOXP6w.js";import"./select-Br0TAs7A.js";import"./select-DJsEG0jq.js";import"./menu-styles-DWynpVVz.js";import"./index-IMdA08Ok.js";import"./layers-DI4vFJ4F.js";import"./message-square-E5K8E3A-.js";import"./textarea-B7vtoRE3.js";import"./menu-C3uB3M7p.js";import"./server-DYeSE1wn.js";import"./icon-button-BEMJj_6T.js";import"./search-field-CbM2P2KE.js";import"./popover-CJCQLoGu.js";import"./search-CkiBPir_.js";import"./upload-CJ6jVmte.js";import"./use-projects-BlTwWxkY.js";import"./globe-B2rgTPH3.js";import"./BranchSelect-Dxs7HnMM.js";import"./pencil-BFc4n44f.js";import"./track-C0vxnITw.js";import"./dialog-BYdeYC2Y.js";function or({isOpen:t,onClose:c,taskId:P}){const{t:d}=Se(),[C,f]=n.useState("AUTO"),[I,o]=n.useState(null),[u,z]=n.useState([]),[Re,F]=n.useState(null),Te=Bt();n.useEffect(()=>{t&&(f("AUTO"),o(null),z([]),F(null))},[t]);const S=Te.isPending,Ke=!!I||u.length>0,re=async()=>{if(!S){if(!I&&u.length===0){F(d("请选择至少一个团队模板或成员预设。"));return}F(null);try{await Te.mutateAsync({taskId:P,mode:C,...I?{teamTemplateId:I}:{},...u.length>0?{memberPresetIds:u}:{}}),c()}catch(V){F(V instanceof Error?V.message:d("创建 TeamRun 失败"))}}},qe=S||!Ke;return e.jsxs(er,{isOpen:t,onClose:S?()=>{}:c,title:d("创建 TeamRun"),className:"max-w-5xl",action:e.jsxs(e.Fragment,{children:[e.jsx(ne,{type:"button",variant:"outline",onClick:c,disabled:S,children:d("取消")}),e.jsx(ne,{type:"button",onClick:re,disabled:qe,children:d(S?"处理中...":"创建 TeamRun")})]}),children:[e.jsx(Fn,{mode:C,setMode:f,selectedTemplateId:I,setSelectedTemplateId:o,selectedMemberPresetIds:u,setSelectedMemberPresetIds:z,disabled:S}),Re&&e.jsx("div",{role:"alert",className:"rounded-lg border border-destructive/25 bg-destructive/10 px-4 py-3 text-sm text-destructive-ink",children:Re})]})}function ar({workspaceId:t,gitStatus:c,onResolve:P}){const{t:d}=Se(),C=Hn();if(c.operation==="idle"||c.conflictedFiles.length===0)return null;const f=c.operation==="rebase"?"Rebase":"Merge";return e.jsx(zt,{tone:"warning",className:"mx-6 mt-3 items-center",title:e.jsxs("span",{className:"flex items-center gap-2",children:[f," ",d("冲突"),e.jsxs(Ft,{tone:"warning",className:"tabular-nums",children:[c.conflictedFiles.length," ",d("个文件")]})]}),action:e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(Xs,{variant:"ghost",onClick:()=>C.mutate(t),loading:C.isPending,children:d("中止操作")}),e.jsx(Xs,{variant:"primary",onClick:P,children:d("解决冲突")})]})})}const ir=tn(),lr=t=>t.includes("://")||t.startsWith("/api/")?t:t.startsWith("/")?`${ir}/attachments/by-path?path=${encodeURIComponent(t)}`:t,te=520,ps=48,cr=4,dr=420;function ur(){const{t}=Se();return e.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center bg-background text-muted-foreground select-none",children:[e.jsx("div",{className:"w-16 h-16 bg-muted/50 rounded-xl border border-border/60 flex items-center justify-center mb-6",children:e.jsxs("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"text-muted-foreground",children:[e.jsx("path",{d:"M12 2L2 7L12 12L22 7L12 2Z",fill:"currentColor"}),e.jsx("path",{d:"M2 17L12 22L22 17",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),e.jsx("path",{d:"M2 12L12 17L22 12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]})}),e.jsx("h3",{className:"text-foreground font-medium mb-2 text-[15px]",children:"Agent Tower"}),e.jsx("p",{className:"text-sm max-w-sm text-center text-muted-foreground leading-relaxed",children:t("Select a task from the sidebar to view logs, monitor execution, or interact with an agent.")})]})}function Ie(t){const c=nn[t].icon;return e.jsx(c,{className:"size-3"})}const ot=[{status:A.Review,className:"bg-warning/10 text-warning-ink",hoverClass:"hover:bg-warning/15",icon:Ie(A.Review)},{status:A.Running,className:"bg-info/10 text-info-ink",hoverClass:"hover:bg-info/15",icon:Ie(A.Running)},{status:A.Pending,className:"bg-muted/50 text-muted-foreground",hoverClass:"hover:bg-muted",icon:Ie(A.Pending)},{status:A.Done,className:"bg-success/10 text-success-ink",hoverClass:"hover:bg-success/15",icon:Ie(A.Done)},{status:A.Cancelled,className:"bg-muted/50 text-muted-foreground",hoverClass:"hover:bg-border",icon:Ie(A.Cancelled)}];function mr({status:t,onChangeStatus:c}){const{t:P}=Se(),[d,C]=n.useState(!1),f=n.useRef(null);n.useEffect(()=>{if(!d)return;const o=u=>{f.current&&!f.current.contains(u.target)&&C(!1)};return document.addEventListener("mousedown",o),()=>document.removeEventListener("mousedown",o)},[d]);const I=ot.find(o=>o.status===t);return e.jsxs("div",{className:"relative",ref:f,children:[e.jsxs("button",{onClick:()=>c&&C(o=>!o),className:`flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium transition-colors ${I.className} ${c?"cursor-pointer hover:opacity-80":""}`,children:[I.icon,e.jsx("span",{children:P(t)}),c&&e.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor",className:`ml-0.5 transition-transform ${d?"rotate-180":""}`,children:e.jsx("path",{d:"M2 3.5L5 6.5L8 3.5",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})})]}),d&&e.jsx("div",{className:"absolute right-0 top-full mt-2 w-40 bg-background rounded-lg border border-border shadow-popover z-50 py-1 animate-in fade-in zoom-in-95 duration-100",children:ot.filter(o=>o.status!==t).map(o=>e.jsxs("button",{onClick:()=>{c?.(o.status),C(!1)},className:`w-full flex items-center gap-2 px-3 py-2 text-xs font-medium transition-colors ${o.hoverClass}`,children:[e.jsx("span",{className:o.className.split(" ").find(u=>u.startsWith("text-")),children:o.icon}),e.jsx("span",{className:"text-foreground/80",children:P(o.status)})]},o.status))})]})}function fo({task:t,onDeleteTask:c,isDeleting:P,onTaskStatusChange:d,onTaskPriorityChange:C,autoStartState:f,onAutoStartRecovered:I}){const{t:o}=Se(),[u,z]=n.useState(""),[Re,F]=n.useState(!1),[Te,S]=n.useState(!1),[Ke,re]=n.useState(!1),[qe,V]=n.useState(!1),[at,fs]=n.useState(!1),Ae=n.useRef(null),[Ve,oe]=n.useState(!1),[R,Ge]=n.useState(null),[ae,G]=n.useState(void 0),[H,Ee]=n.useState(!1),He=n.useRef(null),Qe=n.useRef(null),ie=n.useRef(null),xs=n.useRef(null),{scrollRef:U,contentRef:gs,isAtBottom:hs,scrollToBottom:We,stopScroll:bs}=An({resize:"smooth",initial:"instant"}),[E,vs]=n.useState(!1),[$e,le]=n.useState(te),[Pe,js]=n.useState(!1),ys=n.useRef(0),ks=n.useRef(te),Cs=n.useRef(null),Xe=n.useCallback((s,r,i)=>{Ae.current?.openFile(s,r,i)},[]),{data:a,isLoading:it}=Qn(t?.id??""),ce=ln(t?.id),ws=ce?.status==="completed"&&f?.status!=="failed"?null:f,Ye=!!(ws||ce&&ce.status!=="completed"),{data:de}=Ut(t?.id??""),{data:lt}=_t(de?.id??""),Ns=Kt(de?.id??""),m=de??null,ue=!!m,Q=t?.isGitRepo!==!1&&t?.worktreeReady!==!1,De=de===null&&Q,ct=!!(t?.id&&de===null),{data:$,isLoading:Is}=qt(t?.id??"",ct);n.useEffect(()=>{Ee(!1),Ge(null),G(void 0)},[t?.id]);const _=n.useMemo(()=>cn(a,m,ae),[ae,m,a]);n.useEffect(()=>{ae&&!a?.some(s=>s.id===ae)&&G(void 0)},[ae,a]);const g=n.useMemo(()=>a?.find(s=>s.id===_),[_,a]),k=g?.status===Vt.ACTIVE?g.id:void 0,me=Q&&dn(g,m);n.useEffect(()=>{if(!H||!a)return;a.some(r=>r.status==="ACTIVE"&&r.sessions&&r.sessions.length>0)&&Ee(!1)},[a,H]);const h=n.useMemo(()=>{if(H||!a)return null;const s=l=>{const ds=l.createdAt,we=l.endedAt??l.startedAt??ds;if(!we)return 0;const se=Date.parse(we);return Number.isNaN(se)?0:se},r=(l,ds)=>{const we=l.filter(se=>ds.includes(se.status));return we.length===0?null:we.sort((se,Lt)=>s(Lt)-s(se))[0]??null},i=a.filter(l=>l.status==="ACTIVE"&&Array.isArray(l.sessions)).flatMap(l=>l.sessions??[]),p=r(i,[L.RUNNING])??r(i,[L.PENDING])??r(i,[L.COMPLETED,L.FAILED,L.CANCELLED]);if(p)return p;const N=a.filter(l=>(l.status==="MERGED"||l.status==="ABANDONED"||l.status==="HIBERNATED")&&Array.isArray(l.sessions)).flatMap(l=>l.sessions??[]);return r(N,[L.COMPLETED,L.FAILED,L.CANCELLED])},[a,H]),X=h?.id??"",b=ue?R??"":X,dt=n.useMemo(()=>{if(!R||!a)return null;for(const s of a){const r=s.sessions?.find(i=>i.id===R);if(r)return r}return null},[R,a]),Je=n.useMemo(()=>{if(!R||!m?.invocations)return null;const s=m.invocations.filter(r=>r.sessionId===R);return s.length===0?null:s.sort((r,i)=>{const p=Date.parse(r.updatedAt??r.createdAt??""),N=Date.parse(i.updatedAt??i.createdAt??"");return(Number.isNaN(N)?0:N)-(Number.isNaN(p)?0:p)})[0]??null},[R,m?.invocations]),ut=n.useMemo(()=>!Je?.memberId||!m?.members?null:m.members.find(s=>s.id===Je.memberId)??null,[Je?.memberId,m?.members]),v=R?dt:h??null,D=v?.id,Y=n.useMemo(()=>{if(v?.workspaceId)return v.workspaceId;if(!(!v||!a))return a.find(s=>s.sessions?.some(r=>r.id===v.id))?.id},[v,a]),Me=n.useCallback((s,r)=>{const p=(r&&a?.some(N=>N.id===r)?r:void 0)??Y??_??void 0;p&&G(p),Ae.current?.openPreview(s,p)},[Y,_,a]),Ze=n.useCallback((s,r)=>{Me({kind:"web",url:s},r)},[Me]),es=n.useCallback((s,r,i)=>{Me({kind:"visualization",sessionId:s,file:r},i)},[Me]),Ss=n.useCallback(s=>{Ze(s,Y)},[Y,Ze]),Rs=n.useCallback(s=>{D&&es(D,s,Y)},[D,Y,es]),{isActive:pe,isCancelling:fe}=Un(D??"",v?.status),x=!!t?.projectArchivedAt,Ts=!!t?.projectRepoDeletedAt,ss=o(Ts?"项目已删除,本地仓库文件也已清理。恢复项目并重新绑定仓库后才能继续操作。":"项目已删除。恢复项目后才能继续创建会话或修改任务。"),{data:J}=Zn(),[Oe,As]=n.useState(null),Le=h?Ln(J,Oe??h.providerId):void 0;n.useEffect(()=>{As(h?.providerId??null)},[h?.providerId]);const mt=n.useMemo(()=>!h||!a?!1:!a.some(r=>r.status==="ACTIVE"&&r.sessions?.some(i=>i.id===h.id)),[h,a]),w=n.useMemo(()=>{if(!(!a||H)){if(g)return _e(g);for(const s of a)if(s.status==="ACTIVE"&&_e(s))return _e(s);return _e(a[0])}},[H,g,a]),K=_n({agentType:h?.agentType,workingDir:w,input:u,setInput:z,textareaRef:ie,minHeight:60,maxHeight:300}),q=un({agentType:h?.agentType,workingDir:w,input:u,setInput:z,textareaRef:ie,minHeight:60,maxHeight:300}),ts=Gt(s=>s.setVisibleContext),xe=!!(me&&k&&w&&!x),{data:T,isLoading:pt}=$n(k??"",{enabled:xe}),{data:ft}=mn(w,{enabled:xe});n.useEffect(()=>{if(!(E||!xe||!k||!w))return ts({workspaceId:k,workingDir:w,tab:"changes"}),()=>{ts(null)}},[E,k,ts,xe,w]);const xt=g?.sessions??[],ge=pn(g),Es=g?.commitMessage,he=n.useMemo(()=>fn(g,a,t?.mainBranch??""),[g,t?.mainBranch,a]),be=xn((a??[]).map(s=>s.id),!ue),{pendingConflictDetails:ve}=be,Ws=!!ve,j=n.useMemo(()=>ve||(T?.conflictOp&&T.conflictedFiles.length>0?Ht({conflictOp:T.conflictOp,conflictedFiles:T.conflictedFiles,resolutionContextToken:T.resolutionContextToken,sourceWorkspaceId:k,sourceWorktreePath:g?.worktreePath,sourceBranch:ge,targetBranch:he}):ve),[T,ve,k,g?.worktreePath,ge,he]),Ps=j?.targetWorkspaceId??k,gt=j?.targetWorktreePath??g?.worktreePath,ht=j?.sourceBranch??ge,bt=j?.targetBranch??he,y=Qt(),Be=n.useCallback(async()=>t?.id?y.fetchQuery({queryKey:Ne.tasks.body(t.id),queryFn:()=>$t.get(`/tasks/${t.id}/body`)}):null,[y,t?.id]),Ds=n.useCallback(()=>t?.id?y.invalidateQueries({queryKey:Ne.workspaces.list(t.id)}):Promise.resolve(),[t?.id,y]);n.useEffect(()=>{if(!Ve)return;const s=r=>{Qe.current&&!Qe.current.contains(r.target)&&oe(!1)};return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[Ve]);const M=Kn(),Ms=Xn(),Os=Yn(t?.id??""),Ls=qn(),ns=Jn(),je=n.useMemo(()=>!a||a.some(r=>r.status==="ACTIVE")?null:a.find(r=>r.status==="HIBERNATED")??null,[a]),rs=n.useRef(null);n.useEffect(()=>{je&&rs.current!==je.id&&(ns.isPending||(rs.current=je.id,ns.mutate(je.id,{onSettled:()=>{rs.current=null}})))},[je,ns]);const vt=n.useCallback(async()=>{if(!t?.id)return;const s=h?.providerId??J?.find(r=>r.availability.type!=="NOT_FOUND")?.provider.id;if(s){V(!1),fs(!0);try{const i=(await Be())?.prompt??t.title;Ee(!0),await Rn(t.id,{providerId:s,prompt:i,retryTask:!0,workspaceKind:Q?us.WORKTREE:us.MAIN_DIRECTORY},{createWorkspace:p=>Os.mutateAsync({clientSubmissionId:p,workspaceKind:Q?void 0:us.MAIN_DIRECTORY}),startSession:p=>Ls.mutateAsync(p)}),await y.invalidateQueries({queryKey:Ne.workspaces.list(t.id)})}catch(r){console.error("[retry] failed:",r),Ee(!1)}finally{fs(!1)}}},[t?.id,t?.title,Q,h?.providerId,J,Be,Os,Ls,y]),os=n.useCallback(async()=>{t?.id&&(await Be(),F(!0))},[Be,t?.id]),jt=n.useCallback(()=>{g?.id&&Ms.mutate({workspaceId:g.id})},[Ms,g?.id]),yt=n.useCallback(()=>{!t?.id||!c||(c(t.id),re(!1))},[t?.id,c]),Bs=n.useCallback(s=>{Ge(s),requestAnimationFrame(()=>{We()})},[We]),kt=n.useCallback(()=>{Ge(null)},[]),ye=n.useCallback(s=>{const r=s??j;r&&be.openDialog(r)},[j,be]),Ct=n.useCallback(s=>Ns.mutateAsync(s),[Ns]),Z=n.useCallback(()=>{y.invalidateQueries({queryKey:Xt.all})},[y]),{isConnected:zs,isLoadingSnapshot:Fs,isOutputActive:Us,lastExitAt:_s,logs:ke,entries:wt,attach:ze}=Mn({sessionId:b,sessionStatus:v?.status,sessionStartedAt:v?.startedAt??v?.createdAt,sessionEndedAt:v?.endedAt??(pe?null:v?.updatedAt),onExit:n.useCallback(()=>{y.invalidateQueries({queryKey:["workspaces"]})},[y])});n.useEffect(()=>{if(!t?.id)return;const s=Ys.connect(),r=rn(t.id),i=l=>{l.taskId===t.id&&(y.invalidateQueries({queryKey:["tasks"]}),Z())},p=l=>{l.taskId===t.id&&(y.invalidateQueries({queryKey:Ne.workspaces.list(t.id)}),Z())},N=l=>{l.taskId===t.id&&(y.invalidateQueries({queryKey:Ne.workspaces.list(t.id)}),Z())};return s.on(B.TASK_UPDATED,i),s.on(B.WORKSPACE_COMMIT_MESSAGE_UPDATED,p),s.on(B.WORKSPACE_HIBERNATED,N),()=>{s.off(B.TASK_UPDATED,i),s.off(B.WORKSPACE_COMMIT_MESSAGE_UPDATED,p),s.off(B.WORKSPACE_HIBERNATED,N),r()}},[t?.id,y,Z]),n.useEffect(()=>{if(!b)return;const s=Ys.connect(),r=i=>{i.sessionId===b&&(y.invalidateQueries({queryKey:["workspaces"]}),Z())};return s.on(B.SESSION_COMPLETED,r),()=>{s.off(B.SESSION_COMPLETED,r)}},[b,y,Z]);const{todos:Fe}=On(wt),{files:Nt,addFiles:ee,removeFile:It,clear:Ks,getDoneAttachments:qs,hasFiles:Ce,isUploading:Ue}=Bn(),St=n.useMemo(()=>gn(v),[v?.tokenUsage]),Vs=En(ke,St);n.useEffect(()=>{b&&zs&&ze()},[b,zs,ze]);const Gs=n.useRef(t?.id);n.useEffect(()=>{if(Gs.current!==t?.id&&U.current){const s=U.current;requestAnimationFrame(()=>{s.scrollTop=s.scrollHeight})}Gs.current=t?.id},[t?.id,U]);const O=Vn(),as=n.useRef(!1),Hs=n.useCallback(async()=>{if(!u.trim()&&!Ce||!b||as.current||O.isPending||fe||Ue||Le)return;as.current=!0;const s=qs().map(i=>i.id),r=u.trim()||(s.length?" ":"");z(""),Ks(),ie.current&&(ie.current.style.height="60px"),M.mutate({id:b,message:r,attachmentIds:s,providerId:Oe??void 0},{onSuccess:()=>{ze()},onSettled:()=>{as.current=!1}})},[u,b,M,ze,Ce,Ue,qs,Ks,Oe,Le,O.isPending,fe]),Rt=n.useCallback(()=>{!b||O.isPending||O.mutate(b)},[b,O]),Tt=n.useCallback(s=>{const r=s.target.files;r&&r.length>0&&ee(Array.from(r)),s.target.value=""},[ee]),At=n.useCallback(s=>{const r=s.clipboardData.items,i=[];for(const p of r)if(p.kind==="file"){const N=p.getAsFile();N&&i.push(N)}i.length>0&&(s.preventDefault(),ee(i))},[ee]),[Qs,is]=n.useState(!1),Et=n.useCallback(s=>{s.preventDefault(),is(!0)},[]),Wt=n.useCallback(s=>{s.preventDefault(),is(!1)},[]),Pt=n.useCallback(s=>{s.preventDefault(),is(!1);const r=s.dataTransfer.files;r.length>0&&ee(Array.from(r))},[ee]),W=n.useCallback(s=>{const r=Cs.current?.getBoundingClientRect().width??(typeof window<"u"?window.innerWidth:void 0),i=r?Math.max(te,r-ps-cr-dr):te;return Math.max(te,Math.min(Math.round(s),i))},[]),ls=n.useCallback(s=>{const r=s.clientX-ys.current;le(W(ks.current-r))},[W]),cs=n.useCallback(()=>{js(!1),document.body.style.cursor="",document.body.style.userSelect=""},[]);n.useEffect(()=>{if(Pe)return document.addEventListener("mousemove",ls),document.addEventListener("mouseup",cs),document.body.style.cursor="col-resize",document.body.style.userSelect="none",()=>{document.removeEventListener("mousemove",ls),document.removeEventListener("mouseup",cs),document.body.style.cursor="",document.body.style.userSelect=""}},[cs,ls,Pe]);const Dt=n.useCallback(s=>{s.preventDefault(),ys.current=s.clientX,ks.current=$e,js(!0)},[$e]);n.useEffect(()=>{!E||Pe||le(s=>W(s))},[W,E,Pe]),n.useEffect(()=>{if(!E)return;const s=()=>{le(r=>W(r))};return window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)},[W,E]);const Mt=n.useCallback(()=>{le(s=>W(s)),vs(!0),requestAnimationFrame(()=>{Ae.current?.setTab("review")})},[W]),Ot=n.useCallback(s=>{z(s.target.value);const r=s.target;r.style.height="auto";const i=r.scrollHeight;r.style.height=`${Math.max(60,Math.min(i,300))}px`},[]),$s=xe&&k?e.jsx(hn,{projectId:t?.projectId??"",workspaceId:k,branchName:ge,targetBranch:he,commitMessage:Es,changes:ft,gitStatus:T,isGitStatusLoading:pt,canRunGitOperations:me,onOpenChanges:Mt,onRefreshCommitMessage:Ds,onConflict:ye,className:"mb-1.5"}):null;return t?e.jsxs("div",{className:"flex-1 flex flex-col h-full bg-background relative overflow-hidden",children:[e.jsxs("div",{className:"px-6 py-3 flex items-center justify-between border-b border-border/60 bg-background z-20 flex-shrink-0",children:[e.jsxs("div",{className:"flex flex-col min-w-0 flex-1 mr-4",children:[e.jsxs("div",{className:"flex items-center gap-1.5 mb-0.5",children:[e.jsx("span",{className:`w-2 h-2 rounded-full shrink-0 ${t.projectColor.replace("text-","bg-")}`}),e.jsx("span",{className:"text-xs text-muted-foreground truncate",children:t.projectName}),t.projectArchivedAt&&e.jsx("span",{className:"rounded-full bg-muted px-2 py-0.5 text-xs font-medium text-muted-foreground shrink-0",children:t.projectRepoDeletedAt?o("源码已删除"):o("已删除")}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"/"}),e.jsx("span",{className:"text-xs text-muted-foreground font-mono truncate",children:t.branch})]}),e.jsx(bn,{taskId:t.id,title:t.title,readOnly:x})]}),e.jsxs("div",{className:"flex items-center gap-3 flex-shrink-0",children:[e.jsx(mr,{status:t.status,onChangeStatus:!x&&d?s=>d(t.id,s):void 0}),e.jsx(Gn,{value:t.priority,onChange:!x&&C?s=>C(t.id,s):void 0}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("button",{onClick:jt,disabled:!w||x,className:"w-8 h-8 flex items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors disabled:opacity-30 disabled:cursor-not-allowed",title:o("Open in IDE"),children:e.jsx(tr,{size:16})}),(c||De)&&!x&&e.jsxs("div",{className:"relative",ref:Qe,children:[e.jsx("button",{onClick:()=>oe(s=>!s),className:"w-8 h-8 flex items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",title:o("More actions"),children:e.jsx(vn,{size:16})}),Ve&&e.jsxs("div",{className:"absolute right-0 top-full mt-2 w-44 bg-background rounded-lg border border-border shadow-popover z-50 py-1",children:[De&&e.jsxs("button",{onClick:()=>{S(!0),oe(!1)},className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-foreground/80 hover:bg-muted/50 transition-colors",children:[e.jsx(rt,{size:15}),e.jsx("span",{children:o("创建 TeamRun")})]}),e.jsxs("button",{onClick:()=>{V(!0),oe(!1)},className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-foreground/80 hover:bg-muted/50 transition-colors",children:[e.jsx(Yt,{size:15}),e.jsx("span",{children:o("重新开始")})]}),c&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"my-1 border-t border-border/60"}),e.jsxs("button",{onClick:()=>{re(!0),oe(!1)},className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-destructive-ink hover:bg-destructive/10 transition-colors",children:[e.jsx(nr,{size:15}),e.jsx("span",{children:o("删除任务")})]})]})]})]})]})]})]}),!ue&&e.jsx(jn,{recovery:be,onRecover:s=>{G(s.sourceWorkspaceId),ye(s)}}),me&&k&&T&&e.jsx(ar,{workspaceId:k,gitStatus:T,onResolve:()=>ye()}),e.jsxs("div",{ref:Cs,className:"flex-1 flex overflow-hidden",children:[e.jsx("div",{className:"flex min-w-0 flex-1 flex-col bg-background relative",children:ue&&m?R?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative z-20 flex shrink-0 items-center justify-between gap-3 overflow-visible border-b border-border px-4 py-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-xs font-semibold text-foreground",children:o("Invocation details")}),e.jsx("div",{className:"truncate text-[11px] text-muted-foreground",children:R})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-2",children:[e.jsx(yn,{session:v,providers:J,usage:Vs,providerIdFallback:ut?.providerId,agentTypeFallback:v?.agentType,tokenTooltipSide:"bottom"}),e.jsxs(ne,{type:"button",size:"sm",variant:"ghost",className:"h-7 gap-1 rounded-lg border border-border/70 bg-background/60 px-2 text-xs font-medium text-muted-foreground hover:border-muted-foreground/40 hover:bg-muted hover:text-foreground",onClick:kt,children:[e.jsx(Jt,{size:13}),e.jsx("span",{children:o("Team room")})]})]})]}),e.jsxs("div",{className:"relative flex-1 min-h-0",children:[e.jsx("div",{ref:U,className:"h-full overflow-y-auto scrollbar-app-thin px-6 pt-6 pb-4",children:e.jsxs("div",{ref:gs,className:"w-full max-w-4xl mx-auto",children:[!m&&t&&e.jsx(et,{taskId:t.id}),Fs?e.jsxs("div",{className:"flex items-center justify-center py-12 gap-3 text-muted-foreground",children:[e.jsxs("svg",{className:"animate-spin motion-reduce:[animation-duration:2.4s] h-5 w-5",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),e.jsx("span",{className:"text-sm",children:o("Loading logs...")})]}):ke.length===0&&!b?e.jsx("div",{className:"text-muted-foreground text-center py-8",children:o(pe?"Waiting for agent output...":"No logs recorded for this session.")}):e.jsx(st,{children:e.jsx(Zs,{logs:ke,sessionId:D,downloadSessionId:D,isOutputActive:Us,lastExitAt:_s,onUserToggleDetails:bs,workingDir:w,scrollElementRef:U,onOpenWorkspaceFile:Xe,onOpenPreviewUrl:Ss,onOpenVisualization:Rs})})]})}),!hs&&e.jsxs("button",{onClick:()=>We(),className:"absolute bottom-3 left-1/2 -translate-x-1/2 z-10 flex items-center gap-1.5 px-3 py-1.5 bg-background/90 backdrop-blur-sm border border-border rounded-full shadow-raised text-xs text-muted-foreground hover:bg-background hover:text-foreground transition-all","aria-label":o("Scroll to bottom"),children:[e.jsx(Js,{size:14}),e.jsx("span",{children:o("回到底部")})]})]}),Fe.length>0&&e.jsx("div",{className:"px-6 pt-2 pb-1 bg-background flex-shrink-0 border-t border-border/60",children:e.jsx("div",{className:"max-w-4xl mx-auto",children:e.jsx(tt,{todos:Fe})})})]}):e.jsx(kn,{teamRun:m,messages:lt??m.messages??[],readOnly:x,readOnlyMessage:ss,onSendMessage:Ct,onViewInvocationSession:Bs,changeSummaryBar:$s,centered:!0,workingDir:w,onOpenWorkspaceFile:Xe,onOpenPreviewUrl:Ze,onOpenVisualization:es}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative flex-1 min-h-0",children:[e.jsx("div",{ref:U,className:"h-full overflow-y-auto scrollbar-app-thin px-6 pt-6 pb-4",children:e.jsxs("div",{ref:gs,className:"w-full min-w-0 max-w-4xl mx-auto",children:[!m&&t&&e.jsx(et,{taskId:t.id}),(Is||$?.body)&&e.jsx("div",{className:"mb-4 pb-4 border-b border-border/60 min-w-0",children:Is?e.jsx("p",{className:"text-sm text-muted-foreground italic",children:o("Loading...")}):$?.body?e.jsx("div",{className:"text-sm text-muted-foreground leading-relaxed prose prose-sm max-w-none break-words overflow-hidden",children:e.jsx(on,{urlTransform:lr,components:an,children:$.body})}):null}),!x&&e.jsx(Cn,{state:ws,setupProgress:ce,sessionStarted:!!h?.startedAt,onRetry:X&&f?.status==="failed"?os:void 0},t.id),it?(!Ye||x)&&e.jsxs("div",{className:"flex items-center justify-center py-12 gap-3 text-muted-foreground",children:[e.jsxs("svg",{className:"animate-spin motion-reduce:[animation-duration:2.4s] h-5 w-5",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),e.jsx("span",{className:"text-sm",children:o("Loading...")})]}):X?Fs?e.jsxs("div",{className:"flex items-center justify-center py-12 gap-3 text-muted-foreground",children:[e.jsxs("svg",{className:"animate-spin motion-reduce:[animation-duration:2.4s] h-5 w-5",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),e.jsx("span",{className:"text-sm",children:o("Loading logs...")})]}):ke.length===0&&!b?e.jsx("div",{className:"text-muted-foreground text-center py-8",children:o(pe?"Waiting for agent output...":"No logs recorded for this session.")}):e.jsx(st,{children:e.jsx(Zs,{logs:ke,sessionId:D,downloadSessionId:D,isOutputActive:Us,lastExitAt:_s,onUserToggleDetails:bs,workingDir:w,scrollElementRef:U,onOpenWorkspaceFile:Xe,onOpenPreviewUrl:Ss,onOpenVisualization:Rs})}):!Ye||f?.status==="failed"||ce?.status==="failed"||x?e.jsxs("div",{className:"flex flex-col items-center justify-center py-16 text-center",children:[(!Ye||x)&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"w-14 h-14 bg-muted/50 rounded-xl border border-border/60 flex items-center justify-center mb-5",children:e.jsx(ms,{size:24,className:"text-muted-foreground/70 ml-0.5"})}),e.jsx("h3",{className:"text-base font-medium text-foreground mb-1.5",children:o(x?"项目为只读历史":"尚未启动 Agent")}),e.jsx("p",{className:"text-sm text-muted-foreground mb-6 max-w-xs",children:x?ss:o("选择一个 Agent 来执行此任务,Agent 将自动创建工作空间并开始工作。")})]}),!x&&(!f||f.status==="failed")&&e.jsxs("div",{className:"flex flex-wrap items-center justify-center gap-3",children:[e.jsxs(ne,{onClick:os,disabled:!!(f&&f.status!=="failed"),children:[e.jsx(ms,{size:16,className:"mr-1.5"}),f?.status==="failed"?o("重试启动 Agent"):o("启动 Agent")]}),De&&e.jsxs(ne,{variant:"outline",onClick:()=>S(!0),children:[e.jsx(rt,{size:16,className:"mr-1.5"}),o("创建 TeamRun")]})]})]}):null]})}),!hs&&e.jsxs("button",{onClick:()=>We(),className:"absolute bottom-3 left-1/2 -translate-x-1/2 z-10 flex items-center gap-1.5 px-3 py-1.5 bg-background/90 backdrop-blur-sm border border-border rounded-full shadow-raised text-xs text-muted-foreground hover:bg-background hover:text-foreground transition-all","aria-label":o("Scroll to bottom"),children:[e.jsx(Js,{size:14}),e.jsx("span",{children:o("回到底部")})]})]}),Fe.length>0&&e.jsx("div",{className:"px-6 pt-2 pb-1 bg-background flex-shrink-0 border-t border-border/60",children:e.jsx("div",{className:"max-w-4xl mx-auto",children:e.jsx(tt,{todos:Fe})})}),x?e.jsx("div",{className:"p-6 pt-3 bg-background flex-shrink-0 w-full z-10 pb-6 border-t border-border/60",children:e.jsx("div",{className:"max-w-4xl mx-auto",children:e.jsx("div",{className:"bg-muted/50 rounded-xl border border-border px-4 py-3 text-sm text-muted-foreground",children:ss})})}):mt?e.jsx("div",{className:"p-6 pt-3 bg-background flex-shrink-0 w-full z-10 pb-6 border-t border-border/60",children:e.jsx("div",{className:"max-w-4xl mx-auto",children:e.jsxs("div",{className:"flex items-center justify-between bg-muted/50 rounded-xl border border-border px-4 py-3",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:o("代码已合并,以上为历史沟通记录")}),e.jsxs(ne,{size:"sm",onClick:os,children:[e.jsx(ms,{size:14,className:"mr-1.5"}),o("启动新 Agent")]})]})})}):e.jsxs("div",{className:"p-6 pt-2 bg-background flex-shrink-0 w-full z-10 pb-6 border-t border-transparent",onDragOver:Et,onDragLeave:Wt,onDrop:Pt,children:[e.jsxs("div",{className:"max-w-4xl mx-auto",children:[$s,b?e.jsx(Wn,{sessionId:b}):null,e.jsxs("div",{ref:He,className:`relative bg-background rounded-xl border hover:border-ring/40 focus-within:border-ring/60 transition-colors duration-200 ${Qs?"border-foreground/40 bg-foreground/[0.02]":"border-border"}`,children:[e.jsx(zn,{files:Nt,onRemove:It}),e.jsx("textarea",{ref:ie,value:u,onChange:Ot,onPaste:At,onKeyDown:s=>{q.handleKeyDown(s)||K.handleKeyDown(s)||s.key==="Enter"&&!s.shiftKey&&!s.repeat&&!s.nativeEvent.isComposing&&s.nativeEvent.keyCode!==229&&(s.preventDefault(),Hs())},rows:1,placeholder:o(Qs?"Drop files here...":X&&!pe?"Continue conversation...":"Message Agent..."),className:"w-full px-4 pt-4 pb-2 bg-transparent border-none focus:outline-none resize-none text-sm text-foreground placeholder-muted-foreground/70 leading-relaxed",style:{minHeight:"60px",maxHeight:"300px"}}),e.jsx("input",{ref:xs,type:"file",multiple:!0,className:"hidden",onChange:Tt}),e.jsxs("div",{className:"flex items-center justify-between px-2 pb-2 pt-1",children:[e.jsx("div",{className:"flex items-center gap-1",children:e.jsx("button",{onClick:()=>xs.current?.click(),className:"p-2 text-muted-foreground hover:text-muted-foreground hover:bg-muted rounded-lg transition-colors",title:o("Upload file"),children:e.jsx(rr,{size:18})})}),e.jsxs("div",{className:"flex items-center gap-2",children:[h&&J&&e.jsx(Pn,{providers:J,currentProviderId:Oe,agentType:h.agentType,runtimeType:h.runtimeType,onSelect:As}),e.jsx(Dn,{usage:Vs}),pe&&!M.isPending&&!u.trim()&&!Ce?e.jsx("button",{onClick:Rt,disabled:O.isPending||fe,"aria-label":o("Stop"),title:o("Stop"),className:"p-2 rounded-lg transition-all duration-200 bg-destructive-ink text-white hover:bg-destructive-ink/90 disabled:opacity-50",children:e.jsx(Zt,{size:14})}):e.jsx("button",{onClick:Hs,"aria-label":o(M.isPending?"发送中...":"Send"),"aria-busy":M.isPending,disabled:!u.trim()&&!Ce||Ue||M.isPending||O.isPending||fe||!!Le,className:`p-2 rounded-lg transition-all duration-200 ${(u.trim()||Ce)&&!Ue&&!M.isPending&&!O.isPending&&!fe&&!Le?"bg-primary text-primary-foreground hover:bg-primary/90":"bg-transparent text-muted-foreground cursor-not-allowed"}`,children:M.isPending?e.jsx(en,{size:18,className:"animate-spin"}):e.jsx(sn,{size:18})})]})]})]})]}),e.jsx(nt,{open:K.query!==null,anchorRef:He,commands:K.filteredCommands,selectedIndex:K.selectedIndex,query:K.query??"",hasCatalog:K.allCommands.length>0,onSelect:K.applyCommand}),e.jsx(nt,{open:q.query!==null,anchorRef:He,commands:q.filteredSkills,selectedIndex:q.selectedIndex,query:q.query??"",hasCatalog:q.allSkills.length>0,title:"Skills",queryPrefix:"$",emptyCatalogMessage:"No skills catalog for this agent yet.",onSelect:q.applySkill})]})]})}),E&&e.jsx("div",{className:"w-1 cursor-col-resize hover:bg-border active:bg-ring/40 transition-colors z-50 -ml-[2px] flex-shrink-0 h-full",onMouseDown:Dt,role:"separator","aria-orientation":"vertical","aria-label":o("调整工作区宽度")}),e.jsx("div",{className:"flex h-full flex-shrink-0 bg-background",style:{width:E?ps+$e:ps},children:e.jsx(wn,{sessionId:X||void 0,workspaceId:_,workingDir:w,projectId:t.projectId,readOnly:x,repoDeleted:Ts,teamRun:m,teamStatus:m?e.jsx(Nn,{teamRun:m,workspaces:a,selectedWorkspaceId:_,onSelectWorkspace:G,onViewInvocationSession:Bs}):void 0,workspaces:a,selectedWorkspaceId:_,onSelectWorkspace:G,variant:"rail",expanded:E,onExpandedChange:s=>{s&&le(r=>W(r)),vs(s)},minContentWidth:te,tabRef:Ae,gitAvailable:Q,gitProps:me&&k?{branchName:ge,targetBranch:he,commitMessage:Es,canRunGitOperations:!0,onRefreshCommitMessage:Ds,onConflict:ye,onResolveConflicts:()=>ye()}:void 0})})]}),!x&&e.jsx(In,{isOpen:Re,onClose:()=>F(!1),taskId:t.id,projectId:t.projectId,taskTitle:$?.title??t.title,taskDescription:$?.body??"",taskPrompt:$?.prompt,projectIsGitRepo:t.isGitRepo,projectWorktreeReady:t.worktreeReady,projectGitReason:t.reason,onStarted:()=>I?.(t.id)}),De&&!x&&e.jsx(or,{isOpen:Te,onClose:()=>S(!1),taskId:t.id}),Ws&&me&&Ps&&j&&e.jsx(Sn,{open:Ws,onOpenChange:s=>{s||be.closeDialog()},workspaceId:Ps,conflictOp:j.conflictOp,conflictedFiles:j.conflictedFiles,resolutionContextToken:j.resolutionContextToken,sourceBranch:ht,targetBranch:bt,operation:T?.operation,worktreePath:gt,mergeAborted:j.mergeAborted,mergeStrategy:j.mergeStrategy,sourceWorkspaceId:j.sourceWorkspaceId,targetWorkspaceId:j.targetWorkspaceId,sourceWorktreePath:j.sourceWorktreePath,targetWorktreePath:j.targetWorktreePath,sessions:xt,currentSessionId:ue?void 0:X,teamRunId:m?.id}),e.jsx(sr,{isOpen:qe,onClose:()=>V(!1),onConfirm:vt,title:o("重新开始任务"),description:e.jsx("p",{children:o("将归档当前工作区并自动在新 Worktree 中重新启动 Agent,旧工作区内容保留供参考。")}),confirmText:o("确认重试"),variant:"default",isLoading:at}),e.jsx(Tn,{isOpen:Ke,onClose:()=>re(!1),onConfirm:yt,taskId:t.id,taskTitle:t.title,workspaces:a,isLoading:P})]}):e.jsx(ur,{})}export{fo as TaskDetail};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as Re,T as gt,U as bt,V as ft,W as ht,Y as vt,Z as jt,_ as yt,$ as Pt,r as i,j as e,a0 as Nt,i as Ee,a1 as kt,k as Tt,n as B,w as Ae,B as p,G as _e,t as c,a2 as wt}from"./index-Cm6snkmR.js";import{C as Fe}from"./confirm-dialog-DxEBZEbV.js";import{M as Ct}from"./modal-Cz1iIVeD.js";import{S as O}from"./select-Br0TAs7A.js";import"./mermaid-NOHMQCX5-BqeX1osS.js";import"./AttachmentPreview-DRG5_cfN.js";import{M as U}from"./MemberAvatar-B2pAdWUi.js";import{u as It}from"./use-providers-FMSfyTD1.js";import{T as ue,P as R}from"./trash-2-CUM-XX8B.js";import{C as St}from"./chevron-up-B8PE5N0G.js";import{C as Mt}from"./chevron-down-CPnvItQw.js";import"./dialog-BYdeYC2Y.js";import"./index-CAjqC8pT.js";import"./select-DJsEG0jq.js";import"./menu-styles-DWynpVVz.js";import"./check-DqPSoX0r.js";import"./index-BYPOXP6w.js";import"./index-DNdMmXBr.js";import"./index-IMdA08Ok.js";import"./index-DppwrK2G.js";import"./use-translation-settings-BOlszecX.js";import"./copy-DyxlXxiU.js";import"./index-kr6U6_pi.js";import"./tooltip-DbVtCXcO.js";import"./kbd-Bfq5K6Ux.js";import"./people-BaCetIqh.js";const o="/avatars/presets",Et=[{id:"developer",label:"Developer",src:`${o}/avatar-preset-01-developer.png`},{id:"architect",label:"Architect",src:`${o}/avatar-preset-02-architect.png`},{id:"tester",label:"Tester",src:`${o}/avatar-preset-03-tester.png`},{id:"devops",label:"DevOps",src:`${o}/avatar-preset-04-devops.png`},{id:"data-scientist",label:"Data scientist",src:`${o}/avatar-preset-05-data-scientist.png`},{id:"frontend",label:"Frontend",src:`${o}/avatar-preset-06-frontend.png`},{id:"backend",label:"Backend",src:`${o}/avatar-preset-07-backend.png`},{id:"security",label:"Security",src:`${o}/avatar-preset-08-security.png`},{id:"project-manager",label:"Project manager",src:`${o}/avatar-preset-09-project-manager.png`},{id:"product-manager",label:"Product manager",src:`${o}/avatar-preset-10-product-manager.png`},{id:"scrum-master",label:"Scrum master",src:`${o}/avatar-preset-11-scrum-master.png`},{id:"tech-lead",label:"Tech lead",src:`${o}/avatar-preset-12-tech-lead.png`},{id:"coordinator",label:"Coordinator",src:`${o}/avatar-preset-13-coordinator.png`},{id:"mentor",label:"Mentor",src:`${o}/avatar-preset-14-mentor.png`},{id:"reviewer",label:"Reviewer",src:`${o}/avatar-preset-15-reviewer.png`},{id:"ui-designer",label:"UI designer",src:`${o}/avatar-preset-16-ui-designer.png`},{id:"ux-researcher",label:"UX researcher",src:`${o}/avatar-preset-17-ux-researcher.png`},{id:"documenter",label:"Documenter",src:`${o}/avatar-preset-18-documenter.png`},{id:"translator",label:"Translator",src:`${o}/avatar-preset-19-translator.png`},{id:"analyst",label:"Analyst",src:`${o}/avatar-preset-20-analyst.png`},{id:"consultant",label:"Consultant",src:`${o}/avatar-preset-21-consultant.png`},{id:"creative-director",label:"Creative director",src:`${o}/avatar-preset-22-creative-director.png`},{id:"support",label:"Support",src:`${o}/avatar-preset-23-support.png`},{id:"assistant",label:"Assistant",src:`${o}/avatar-preset-24-assistant.png`},{id:"robot",label:"Robot",src:`${o}/avatar-preset-25-robot.png`}],De=wt(),At=2*1024*1024,_t=[],Ft=[],$t=[],ze=[{key:"readRoom",label:"读房间"},{key:"postRoomMessage",label:"发房间消息"},{key:"mentionMembers",label:"提及成员"},{key:"stopMemberWork",label:"停止成员工作"},{key:"markReadyForReview",label:"标记可审查"},{key:"readFiles",label:"读文件"},{key:"writeFiles",label:"写文件"},{key:"runCommands",label:"运行命令"},{key:"readDiff",label:"读 diff"},{key:"mergeWorkspace",label:"合并工作区"}],Le={readRoom:!1,postRoomMessage:!1,mentionMembers:!1,stopMemberWork:!1,markReadyForReview:!1,readFiles:!1,writeFiles:!1,runCommands:!1,readDiff:!1,mergeWorkspace:!1},$e=[{value:"none",label:"无"},{value:"shared",label:"共享"},{value:"dedicated",label:"独占"}],Ot=[{value:"MENTION_ONLY",label:"仅提及"},{value:"USER_MESSAGES",label:"所有用户消息"}],Rt=[{value:"new_per_request",label:"每次新会话"},{value:"resume_last",label:"复用上次会话"}],Dt=[{value:"own_only",label:"仅自己队列"},{value:"team_pending",label:"全队列待处理"}];function Y(){return{name:"",aliasesText:"",providerId:"",rolePrompt:"",capabilities:{...Le},workspacePolicy:"none",triggerPolicy:"MENTION_ONLY",sessionPolicy:"new_per_request",queueManagementPolicy:"own_only",avatar:""}}function xe(r){return{name:r.name,aliasesText:r.aliases.join(", "),providerId:r.providerId,rolePrompt:r.rolePrompt,capabilities:{...Le,...r.capabilities},workspacePolicy:r.workspacePolicy,triggerPolicy:r.triggerPolicy,sessionPolicy:r.sessionPolicy,queueManagementPolicy:r.queueManagementPolicy,avatar:r.avatar??""}}function q(){return{name:"",heartbeatTimeoutMinutes:10,memberPresetIds:[]}}function pe(r){return{name:r.name,heartbeatTimeoutMinutes:r.heartbeatTimeoutMinutes??10,memberPresetIds:r.members?.map(l=>l.memberPresetId)??[]}}function zt(r,l,d,m){if(d.filter(A=>A===m).length<=1)return r;const W=d.slice(0,l+1).filter(A=>A===m).length;return`${r} #${W}`}function Lt(r){return Array.from(new Set(r.split(/[\n,]/).map(l=>l.trim()).filter(Boolean)))}function Bt(r){return r.trim()||null}function Oe(r){return ze.reduce((l,d)=>l+(r[d.key]?1:0),0)}function E(r,l){return r instanceof Error?r.message:l}function Ut(r){return["image/png","image/jpeg","image/webp"].includes(r.type)}async function Yt(r){const l=new FormData;l.append("file",r);const d=await fetch(`${De}/attachments/upload`,{method:"POST",body:l});if(!d.ok){const m=await d.json().catch(()=>({}));throw new Error(m.error||m.message||`Upload failed (${d.status})`)}return d.json()}function G({title:r,error:l,isFetching:d,onRetry:m}){const{t:T}=Re();return e.jsx("div",{role:"alert",className:"rounded-lg border border-destructive/30 bg-destructive/10 px-4 py-3 text-sm text-destructive-ink",children:e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"font-medium",children:r}),e.jsx("div",{className:"mt-1 text-xs text-destructive-ink",children:E(l,T("请稍后重试。"))})]}),e.jsx(p,{type:"button",size:"sm",variant:"outline",onClick:m,disabled:d,children:T(d?"加载中...":"重试")})]})})}function br(){const{t:r}=Re(),{data:l,error:d,isError:m,isFetching:T,isLoading:W,refetch:A}=It(),{data:Be,error:ge,isError:w,isFetching:be,isLoading:V,refetch:fe}=gt(),{data:Ue,error:Ye,isError:D,isFetching:qe,isLoading:H,refetch:Ge}=bt(),Q=ft(),X=ht(),he=vt(),J=jt(),K=yt(),ve=Pt(),[Z,je]=i.useState("presets"),[C,ee]=i.useState("edit"),[h,te]=i.useState(null),[a,j]=i.useState(Y()),[ye,_]=i.useState(!1),[y,re]=i.useState(null),[We,se]=i.useState(!1),[Pe,Ne]=i.useState(!1),ke=i.useRef(null),[I,ae]=i.useState("edit"),[v,ne]=i.useState(null),[g,b]=i.useState(q()),[Te,P]=i.useState(!1),[N,oe]=i.useState(null),[we,F]=i.useState(!1),u=Be??_t,f=Ue??Ft,z=l??$t,$=i.useMemo(()=>new Map(u.map(t=>[t.id,t])),[u]),ie=i.useMemo(()=>new Map(f.map(t=>[t.id,t])),[f]),Ve=i.useMemo(()=>{const t=z.map(({provider:s,availability:n})=>({value:s.id,label:s.name+(n.type==="NOT_FOUND"?r(" (不可用)"):""),icon:e.jsx(Nt,{agentType:s.agentType,className:"size-4"}),disabled:n.type==="NOT_FOUND"}));return a.providerId&&!t.some(s=>s.value===a.providerId)&&t.unshift({value:a.providerId,label:`${a.providerId}${r(" (不可用)")}`,disabled:!0}),t},[a.providerId,z,r]),le=h?$.get(h)??null:null,de=v?ie.get(v)??null:null,He=i.useMemo(()=>new Map(z.map(({provider:t,availability:s})=>[t.id,t.name+(s.type==="NOT_FOUND"?r(" (不可用)"):"")])),[z,r]);if(i.useEffect(()=>{if(!(V||w||ye)){if(C==="create"){j(Y());return}if(h){const t=$.get(h);t&&j(xe(t));return}if(u.length>0){const t=u[0];te(t.id),ee("edit"),j(xe(t));return}ee("create"),te(null),j(Y())}},[$,ye,C,u,w,V,h]),i.useEffect(()=>{if(!(H||D||Te)){if(I==="create"){b(q());return}if(v){const t=ie.get(v);t&&b(pe(t));return}if(f.length>0){const t=f[0];ne(t.id),ae("edit"),b(pe(t));return}ae("create"),ne(null),b(q())}},[v,ie,Te,I,f,D,H]),W||V||H)return e.jsx(Ee,{className:"max-w-6xl",children:e.jsx(kt,{cards:6})});const x=(t,s)=>{j(n=>({...n,[t]:s})),_(!0)},Qe=(t,s)=>{j(n=>({...n,capabilities:{...n.capabilities,[t]:s}})),_(!0)},Xe=t=>{x("avatar",t),se(!1)},Je=()=>{x("avatar","")},Ke=async t=>{const s=t.target.files?.[0];if(t.target.value="",!!s){if(!Ut(s)){c.error(r("仅支持 PNG、JPG、WebP 头像。"));return}if(s.size>At){c.error(r("头像图片不能超过 2MB。"));return}Ne(!0);try{const n=await Yt(s);x("avatar",`${De}${n.url}`),c.success(r("头像已上传"))}catch(n){c.error(E(n,r("头像上传失败")))}finally{Ne(!1)}}},S=(t,s)=>{ee(t),te(s?.id??null),j(s?xe(s):Y()),_(!1)},Ce=(t,s)=>{b(n=>({...n,[t]:s})),P(!0)},M=(t,s)=>{ae(t),ne(s?.id??null),b(s?pe(s):q()),P(!1)},Ze=async()=>{const t={name:a.name.trim(),aliases:Lt(a.aliasesText),providerId:a.providerId.trim(),rolePrompt:a.rolePrompt.trim(),capabilities:{...a.capabilities},workspacePolicy:a.workspacePolicy,triggerPolicy:a.triggerPolicy,sessionPolicy:a.sessionPolicy,queueManagementPolicy:a.queueManagementPolicy,avatar:Bt(a.avatar)};try{if(C==="create"||!h){const s=await Q.mutateAsync(t);S("edit",s),c.success(r("已创建"))}else{const s=await X.mutateAsync({id:h,data:t});S("edit",s),c.success(r("已保存"))}}catch(s){c.error(E(s,r("保存失败")))}},et=async()=>{if(y)try{await he.mutateAsync(y.id),c.success(r("Deleted"));const t=u.filter(s=>s.id!==y.id);h===y.id&&(t.length>0?S("edit",t[0]):S("create",null)),re(null)}catch(t){c.error(E(t,r("删除失败")))}},tt=async()=>{const t={name:g.name.trim(),heartbeatTimeoutMinutes:g.heartbeatTimeoutMinutes,memberPresetIds:g.memberPresetIds};try{if(I==="create"||!v){const s=await J.mutateAsync(t);M("edit",s),c.success(r("已创建"))}else{const s=await K.mutateAsync({id:v,data:t});M("edit",s),c.success(r("已保存"))}}catch(s){c.error(E(s,r("保存失败")))}},rt=async()=>{if(N)try{await ve.mutateAsync(N.id),c.success(r("Deleted"));const t=f.filter(s=>s.id!==N.id);v===N.id&&(t.length>0?M("edit",t[0]):M("create",null)),oe(null)}catch(t){c.error(E(t,r("删除失败")))}},st=Oe(a.capabilities),at=!!a.name.trim()&&!!a.providerId.trim()&&!!a.rolePrompt.trim()&&!m&&!w&&!Q.isPending&&!X.isPending,nt=!!g.name.trim()&&!D&&!w&&!J.isPending&&!K.isPending,ce=g.memberPresetIds.map(t=>$.get(t)).filter(t=>!!t),ot=t=>{_(!1),S("edit",t)},it=()=>{_(!1),S("create",null)},lt=t=>{P(!1),M("edit",t)},dt=()=>{P(!1),M("create",null)},ct=t=>{b(s=>({...s,memberPresetIds:[...s.memberPresetIds,t]})),P(!0)},mt=t=>{b(s=>({...s,memberPresetIds:s.memberPresetIds.filter((n,k)=>k!==t)})),P(!0)},Ie=(t,s)=>{b(n=>{const k=t+s;if(k<0||k>=n.memberPresetIds.length)return n;const me=[...n.memberPresetIds],[pt]=me.splice(t,1);return me.splice(k,0,pt),{...n,memberPresetIds:me}}),P(!0)},ut=t=>{ot(t),F(!0)},Se=()=>{it(),F(!0)},xt=t=>{lt(t),F(!0)},Me=()=>{dt(),F(!0)},L=()=>F(!1);return e.jsxs(Ee,{className:"max-w-6xl",children:[e.jsx(Tt,{title:r("团队协作设置"),actions:e.jsxs("div",{className:"inline-flex rounded-lg border border-border bg-muted/80 p-0.5",children:[e.jsx("button",{type:"button",onClick:()=>{je("presets"),L()},className:B("rounded-md px-3 py-1.5 text-[12px] font-medium transition-all",Z==="presets"?"bg-background text-foreground shadow-raised":"text-muted-foreground hover:text-foreground"),children:r("成员预设")}),e.jsx("button",{type:"button",onClick:()=>{je("templates"),L()},className:B("rounded-md px-3 py-1.5 text-[12px] font-medium transition-all",Z==="templates"?"bg-background text-foreground shadow-raised":"text-muted-foreground hover:text-foreground"),children:r("团队模板")})]})}),m&&e.jsx(G,{title:r("Provider 列表加载失败"),error:d,isFetching:T,onRetry:()=>{A()}}),Z==="presets"?we?e.jsxs("div",{className:"rounded-xl border border-border bg-background",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 border-b border-border/60 px-5 py-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("button",{onClick:L,className:"flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors",children:[e.jsx(Ae,{size:14}),r("返回")]}),e.jsx("span",{className:"text-muted-foreground",children:"|"}),e.jsx("h3",{className:"text-[13px] font-semibold text-foreground",children:C==="create"?r("创建新预设"):le?.name??r("编辑预设")})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[C==="edit"&&le&&e.jsx("button",{onClick:()=>re(le),className:"flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors",title:r("删除"),children:e.jsx(ue,{size:14})}),e.jsx(p,{size:"sm",onClick:Ze,disabled:!at,children:Q.isPending||X.isPending?r("保存中..."):r(C==="create"?"创建":"保存")})]})]}),e.jsxs("div",{className:"p-5 space-y-5",children:[e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsxs("div",{className:"shrink-0",children:[e.jsx(U,{name:a.name||r("Agent"),avatar:a.avatar,className:"h-14 w-14 text-sm"}),e.jsxs("div",{className:"flex justify-center gap-1 mt-2",children:[e.jsx("button",{type:"button",onClick:()=>se(!0),className:"text-xs text-muted-foreground hover:text-foreground transition-colors",children:r("选择")}),e.jsx("span",{className:"text-[10px] text-muted-foreground",children:"·"}),e.jsx("button",{type:"button",onClick:()=>ke.current?.click(),disabled:Pe,className:"text-xs text-muted-foreground hover:text-foreground transition-colors",children:r(Pe?"...":"上传")}),a.avatar.trim()&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-[10px] text-muted-foreground",children:"·"}),e.jsx("button",{type:"button",onClick:Je,className:"text-xs text-muted-foreground hover:text-destructive-ink transition-colors",children:r("清除")})]})]}),e.jsx("input",{ref:ke,type:"file",accept:"image/png,image/jpeg,image/webp",className:"hidden",onChange:Ke})]}),e.jsxs("div",{className:"flex-1 min-w-0 grid gap-3 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-[12px] font-medium text-muted-foreground mb-1",children:r("名称")}),e.jsx("input",{value:a.name,onChange:t=>x("name",t.target.value),className:"w-full rounded-lg border border-border bg-background px-3 py-2 text-sm transition-colors focus:border-ring focus:outline-none"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[12px] font-medium text-muted-foreground mb-1",children:r("别名")}),e.jsx("input",{value:a.aliasesText,onChange:t=>x("aliasesText",t.target.value),placeholder:r("alice, a, reviewer"),className:"w-full rounded-lg border border-border bg-background px-3 py-2 text-sm transition-colors focus:border-ring focus:outline-none"})]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[12px] font-medium text-muted-foreground mb-1",children:r("Provider")}),e.jsx(O,{value:a.providerId,onChange:t=>x("providerId",t),options:Ve,disabled:m}),m&&e.jsx("p",{className:"mt-1 text-xs text-destructive-ink",children:r("Provider 列表加载失败。")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[12px] font-medium text-muted-foreground mb-1",children:r("角色提示词")}),e.jsx("textarea",{value:a.rolePrompt,onChange:t=>x("rolePrompt",t.target.value),rows:4,className:"w-full rounded-lg border border-border bg-muted/50 px-3 py-2 text-sm font-mono transition-colors focus:border-ring focus:bg-background focus:outline-none resize-y"})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-end justify-between gap-3 mb-2",children:[e.jsx("label",{className:"text-[12px] font-medium text-muted-foreground",children:r("可用能力")}),e.jsxs("span",{className:"text-[11px] text-muted-foreground",children:[st,"/10"]})]}),e.jsx("div",{className:"grid gap-1 sm:grid-cols-2 xl:grid-cols-3",children:ze.map(t=>e.jsxs("label",{className:"flex items-center gap-2 rounded px-2.5 py-1.5 text-[12px] text-foreground hover:bg-muted transition-colors cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:a.capabilities[t.key],onChange:s=>Qe(t.key,s.target.checked),className:"h-3.5 w-3.5 rounded border-border"}),e.jsx("span",{children:r(t.label)})]},t.key))})]}),e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-[12px] font-medium text-muted-foreground mb-1",children:r("工作区")}),e.jsx(O,{value:a.workspacePolicy,onChange:t=>x("workspacePolicy",t),options:$e.map(t=>({value:t.value,label:r(t.label)}))})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[12px] font-medium text-muted-foreground mb-1",children:r("触发")}),e.jsx(O,{value:a.triggerPolicy,onChange:t=>x("triggerPolicy",t),options:Ot.map(t=>({value:t.value,label:r(t.label)}))})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[12px] font-medium text-muted-foreground mb-1",children:r("会话")}),e.jsx(O,{value:a.sessionPolicy,onChange:t=>x("sessionPolicy",t),options:Rt.map(t=>({value:t.value,label:r(t.label)}))})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[12px] font-medium text-muted-foreground mb-1",children:r("队列")}),e.jsx(O,{value:a.queueManagementPolicy,onChange:t=>x("queueManagementPolicy",t),options:Dt.map(t=>({value:t.value,label:r(t.label)}))})]})]})]})]}):e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-4",children:[e.jsx("span",{className:"text-[12px] text-muted-foreground",children:r("{count} 个成员预设",{count:u.length})}),e.jsxs(p,{size:"sm",variant:"outline",onClick:Se,children:[e.jsx(R,{size:13})," ",r("新增预设")]})]}),w?e.jsx(G,{title:r("加载失败"),error:ge,isFetching:be,onRetry:()=>{fe()}}):u.length===0?e.jsx(_e,{message:r("暂无成员预设"),action:e.jsxs(p,{size:"sm",onClick:Se,children:[e.jsx(R,{size:13,className:"mr-1"})," ",r("新增预设")]})}):e.jsx("div",{className:"grid gap-3 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",children:u.map(t=>{const s=Oe(t.capabilities);return e.jsxs("button",{type:"button",onClick:()=>ut(t),className:"flex items-start gap-3 rounded-xl border border-border bg-background p-4 text-left transition-all hover:border-border hover:shadow-raised",children:[e.jsx(U,{name:t.name,avatar:t.avatar,className:"h-10 w-10 text-xs shrink-0"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"truncate text-[13px] font-semibold text-foreground",children:t.name}),t.aliases.length>0&&e.jsx("div",{className:"truncate text-xs text-muted-foreground mt-0.5",children:t.aliases.join(", ")}),e.jsx("div",{className:"truncate text-xs text-muted-foreground mt-1",children:He.get(t.providerId)??t.providerId}),e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 mt-2",children:[e.jsx("span",{className:"rounded bg-muted px-1.5 py-0.5 text-xs font-medium text-muted-foreground",children:r($e.find(n=>n.value===t.workspacePolicy)?.label??t.workspacePolicy)}),e.jsxs("span",{className:"rounded bg-muted px-1.5 py-0.5 text-xs font-medium text-muted-foreground",children:[s,"/10 ",r("能力")]})]})]})]},t.id)})})]}):we?e.jsxs("div",{className:"rounded-xl border border-border bg-background",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 border-b border-border/60 px-5 py-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("button",{onClick:L,className:"flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors",children:[e.jsx(Ae,{size:14}),r("返回")]}),e.jsx("span",{className:"text-muted-foreground",children:"|"}),e.jsx("h3",{className:"text-[13px] font-semibold text-foreground",children:I==="create"?r("创建新模板"):de?.name??r("编辑模板")})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[I==="edit"&&de&&e.jsx("button",{onClick:()=>oe(de),className:"flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors",title:r("删除"),children:e.jsx(ue,{size:14})}),e.jsx(p,{size:"sm",onClick:tt,disabled:!nt,children:J.isPending||K.isPending?r("保存中..."):r(I==="create"?"创建":"保存")})]})]}),e.jsxs("div",{className:"p-5 space-y-5",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-[12px] font-medium text-muted-foreground mb-1",children:r("模板名称")}),e.jsx("input",{value:g.name,onChange:t=>Ce("name",t.target.value),className:"w-full rounded-lg border border-border bg-background px-3 py-2 text-sm transition-colors focus:border-ring focus:outline-none"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[12px] font-medium text-muted-foreground mb-1",children:r("成员心跳检测时间(分钟)")}),e.jsx("input",{type:"number",min:1,max:120,step:1,value:g.heartbeatTimeoutMinutes,onChange:t=>Ce("heartbeatTimeoutMinutes",Math.min(120,Math.max(1,Number(t.target.value)||1))),className:"w-full rounded-lg border border-border bg-background px-3 py-2 text-sm transition-colors focus:border-ring focus:outline-none"})]}),e.jsxs("div",{className:"grid gap-4 xl:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-[12px] font-medium text-muted-foreground mb-2",children:r("可用预设")}),e.jsx("div",{className:"max-h-[400px] space-y-1 overflow-y-auto scrollbar-app-thin",children:w?e.jsx(G,{title:r("加载失败"),error:ge,isFetching:be,onRetry:()=>{fe()}}):u.length===0?e.jsx("div",{className:"rounded-lg border border-dashed border-border p-3 text-center text-[12px] text-muted-foreground",children:r("先创建成员预设")}):u.map(t=>{const s=g.memberPresetIds.filter(n=>n===t.id).length;return e.jsxs("button",{type:"button",onClick:()=>ct(t.id),className:B("flex w-full items-center gap-2.5 rounded-lg border px-3 py-2 text-left transition-all",s>0?"border-foreground bg-muted":"border-border bg-background hover:border-border"),children:[e.jsx(U,{name:t.name,avatar:t.avatar,className:"h-7 w-7 text-[10px] shrink-0"}),e.jsx("div",{className:"min-w-0 flex-1",children:e.jsx("div",{className:"truncate text-[12px] font-medium text-foreground",children:t.name})}),e.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[s>0&&e.jsxs("span",{className:"rounded-full bg-primary px-1.5 py-0.5 text-[11px] font-medium text-primary-foreground",children:["x",s]}),e.jsx(R,{size:13,className:"text-muted-foreground"})]})]},t.id)})})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-[12px] font-medium text-muted-foreground mb-2",children:r("已选成员")}),e.jsx("div",{className:"max-h-[400px] space-y-1 overflow-y-auto scrollbar-app-thin",children:ce.length===0?e.jsx("div",{className:"rounded-lg border border-dashed border-border p-3 text-center text-[12px] text-muted-foreground",children:r("尚未选择")}):ce.map((t,s)=>e.jsxs("div",{className:"flex items-center justify-between gap-2 rounded-lg border border-border bg-background px-3 py-2",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[e.jsx(U,{name:t.name,avatar:t.avatar,className:"h-7 w-7 text-[10px] shrink-0"}),e.jsx("span",{className:"truncate text-[12px] font-medium text-foreground",children:zt(t.name,s,g.memberPresetIds,t.id)})]}),e.jsxs("div",{className:"flex items-center gap-0.5 shrink-0",children:[e.jsx(p,{type:"button",variant:"ghost",size:"icon-sm",onClick:()=>Ie(s,-1),disabled:s===0,children:e.jsx(St,{size:13})}),e.jsx(p,{type:"button",variant:"ghost",size:"icon-sm",onClick:()=>Ie(s,1),disabled:s===ce.length-1,children:e.jsx(Mt,{size:13})}),e.jsx(p,{type:"button",variant:"ghost",size:"icon-sm",onClick:()=>mt(s),children:e.jsx(ue,{size:13})})]})]},`${t.id}-${s}`))})]})]})]})]}):e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-4",children:[e.jsx("span",{className:"text-[12px] text-muted-foreground",children:r("{count} 个团队模板",{count:f.length})}),e.jsxs(p,{size:"sm",variant:"outline",onClick:Me,children:[e.jsx(R,{size:13})," ",r("新增模板")]})]}),D?e.jsx(G,{title:r("加载失败"),error:Ye,isFetching:qe,onRetry:()=>{Ge()}}):f.length===0?e.jsx(_e,{message:r("暂无团队模板"),action:e.jsxs(p,{size:"sm",onClick:Me,children:[e.jsx(R,{size:13,className:"mr-1"})," ",r("新增模板")]})}):e.jsx("div",{className:"grid gap-3 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",children:f.map(t=>{const s=t.members?.length??0,n=(t.members??[]).slice(0,3).map(k=>$.get(k.memberPresetId)?.name).filter(Boolean);return e.jsxs("button",{type:"button",onClick:()=>xt(t),className:"flex flex-col rounded-xl border border-border bg-background p-4 text-left transition-all hover:border-border hover:shadow-raised",children:[e.jsx("div",{className:"truncate text-[13px] font-semibold text-foreground",children:t.name}),e.jsx("div",{className:"text-xs text-muted-foreground mt-1",children:r("{count} 个成员",{count:s})}),n.length>0&&e.jsxs("div",{className:"truncate text-xs text-muted-foreground mt-1.5",children:[n.join(", "),s>3?` +${s-3}`:""]})]},t.id)})})]}),e.jsx(Fe,{isOpen:!!y,onClose:()=>re(null),onConfirm:et,title:r("删除"),description:y?r('确定删除 "{name}"?此操作不可撤销。',{name:y.name}):"",variant:"danger",confirmText:r("删除"),cancelText:r("取消"),isLoading:he.isPending}),e.jsx(Ct,{isOpen:We,onClose:()=>se(!1),title:r("选择预设头像"),className:"max-w-2xl",children:e.jsx("div",{className:"grid grid-cols-4 gap-2 sm:grid-cols-5",children:Et.map(t=>{const s=a.avatar===t.src;return e.jsxs("button",{type:"button",onClick:()=>Xe(t.src),className:B("group rounded-xl border bg-background p-2 text-center transition-all hover:border-foreground/20 hover:bg-muted focus:outline-none focus:ring-2 focus:ring-ring/60",s?"border-foreground ring-2 ring-foreground":"border-border"),"aria-pressed":s,"aria-label":r("选择 {name} 头像",{name:t.label}),children:[e.jsx("img",{src:t.src,alt:t.label,loading:"lazy",className:"mx-auto h-14 w-14 rounded-full object-cover sm:h-16 sm:w-16"}),e.jsx("span",{className:"mt-1 block truncate text-xs font-medium text-muted-foreground",children:t.label})]},t.id)})})}),e.jsx(Fe,{isOpen:!!N,onClose:()=>oe(null),onConfirm:rt,title:r("删除"),description:N?r('确定删除 "{name}"?此操作不可撤销。',{name:N.name}):"",variant:"danger",confirmText:r("删除"),cancelText:r("取消"),isLoading:ve.isPending})]})}export{br as TeamSettingsPage};
|