@taskforcehq/taskforce 0.3.328 → 0.3.330
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/Taskforce.module.css +523 -79
- package/dist/TaskforceCore.js +237 -230
- package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.js +1 -1
- package/dist/cli.js +34 -0
- package/dist/cliCloudTargetGuard.d.ts +5 -0
- package/dist/cliCloudTargetGuard.js +11 -0
- package/dist/components/features/AiProfilesModule.js +3 -5
- package/dist/components/features/AnnotatedAttachmentWorkspace.js +24 -8
- package/dist/components/features/TaskSettings.d.ts +12 -1
- package/dist/components/features/TaskSettings.js +217 -54
- package/dist/components/features/TaskforceAgentsModule.d.ts +1 -2
- package/dist/components/features/TaskforceAgentsModule.js +586 -116
- package/dist/components/features/agentCapabilities/AgentCapabilitiesPrototype.d.ts +1 -1
- package/dist/components/features/agentConnections/AgentConnectionControl.d.ts +15 -0
- package/dist/components/features/agentConnections/AgentConnectionControl.js +125 -0
- package/dist/components/features/agentConnections/ModelConnectionsPanel.d.ts +18 -0
- package/dist/components/features/agentConnections/ModelConnectionsPanel.js +393 -0
- package/dist/components/features/agentConnections/modelConnectionsApi.d.ts +65 -0
- package/dist/components/features/agentConnections/modelConnectionsApi.js +129 -0
- package/dist/components/features/planning/PlanningModule.js +2 -5
- package/dist/components/features/planning/PlanningTaskOrderList.d.ts +1 -1
- package/dist/components/features/planning/PlanningTaskOrderList.js +17 -6
- package/dist/components/features/planning/planningTaskArrangement.d.ts +1 -0
- package/dist/components/features/planning/planningTaskArrangement.js +5 -5
- package/dist/components/features/taskforceAgentAssignments/AgentBehaviorAssignments.js +15 -24
- package/dist/components/features/taskforceAgentEditorModel.d.ts +2 -1
- package/dist/components/features/taskforceAgentEditorModel.js +5 -1
- package/dist/components/features/workflowManager/workflowManagerApi.d.ts +1 -1
- package/dist/components/features/workflowManager/workflowManagerApi.js +3 -0
- package/dist/components/task/TaskCard.d.ts +5 -0
- package/dist/components/task/TaskCard.js +65 -10
- package/dist/components/task/TaskImageReviews.js +14 -5
- package/dist/components/task/TaskKanban.d.ts +6 -1
- package/dist/components/task/TaskKanban.js +152 -6
- package/dist/components/task/TaskList.d.ts +5 -0
- package/dist/components/task/TaskList.js +3 -3
- package/dist/components/task/TaskWorkflowAssignmentField.js +68 -10
- package/dist/components/ui/PasswordInput.d.ts +6 -0
- package/dist/components/ui/PasswordInput.js +11 -0
- package/dist/components/ui/TopNoticeLayer.js +1 -1
- package/dist/components/views/AppShellHeader.js +32 -11
- package/dist/components/views/PlanComparisonPage.js +12 -0
- package/dist/components/views/StandaloneLayout.js +32 -55
- package/dist/components/views/WidgetView.js +3 -3
- package/dist/components/views/panels/PlanningDrawer.js +5 -12
- package/dist/components/views/standalone/modals/AccountSettingsModal.js +26 -17
- package/dist/components/views/standalone/modals/SyncStatusModal.d.ts +4 -3
- package/dist/components/views/standalone/modals/SyncStatusModal.js +33 -38
- package/dist/config/envSchema.js +60 -1
- package/dist/config/localServiceRuntimeContract.d.ts +13 -0
- package/dist/config/localServiceRuntimeContract.js +135 -0
- package/dist/core/AiProfileService.js +46 -8
- package/dist/core/DeletedTaskLifecycleService.d.ts +1 -0
- package/dist/core/DeletedTaskLifecycleService.js +37 -6
- package/dist/core/McpTokenService.d.ts +23 -1
- package/dist/core/McpTokenService.js +93 -10
- package/dist/core/TaskAttachmentLinksDurableMutationService.d.ts +3 -2
- package/dist/core/TaskAttachmentLinksDurableMutationService.js +33 -9
- package/dist/core/TaskChecklistCommandService.d.ts +27 -0
- package/dist/core/TaskChecklistCommandService.js +83 -5
- package/dist/core/TaskLifecycleCommandService.d.ts +3 -1
- package/dist/core/TaskLifecycleCommandService.js +6 -2
- package/dist/core/Taskforce.d.ts +94 -2
- package/dist/core/Taskforce.js +760 -36
- package/dist/core/types.d.ts +14 -0
- package/dist/documentReviews/commandService.d.ts +2 -1
- package/dist/documentReviews/commandService.js +6 -3
- package/dist/hooks/sync/orchestratorShared.d.ts +1 -0
- package/dist/hooks/sync/orchestratorShared.js +2 -0
- package/dist/hooks/sync/useDurableLocalOutboxDrain.d.ts +1 -1
- package/dist/hooks/sync/useDurableTaskCreateMutation.js +1 -1
- package/dist/hooks/sync/useDurableTaskMetadataMutation.d.ts +1 -0
- package/dist/hooks/sync/useDurableTaskMetadataMutation.js +1 -0
- package/dist/hooks/sync/useDurableTaskStatusMutation.d.ts +1 -0
- package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.d.ts +3 -0
- package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.js +85 -9
- package/dist/hooks/sync/useSyncStatusControls.d.ts +4 -1
- package/dist/hooks/sync/useSyncStatusControls.js +47 -11
- package/dist/hooks/tasks/taskHttpMutation.js +1 -0
- package/dist/hooks/tasks/useCloudTaskSearch.d.ts +12 -0
- package/dist/hooks/tasks/useCloudTaskSearch.js +71 -0
- package/dist/hooks/tasks/useTaskDescriptionImageDraftRecovery.d.ts +16 -0
- package/dist/hooks/tasks/useTaskDescriptionImageDraftRecovery.js +197 -0
- package/dist/hooks/tasks/useTaskEditorNavigation.d.ts +16 -3
- package/dist/hooks/tasks/useTaskEditorNavigation.js +72 -13
- package/dist/hooks/tasks/useTaskFormActions.d.ts +6 -0
- package/dist/hooks/tasks/useTaskFormActions.js +65 -12
- package/dist/hooks/ui/useSettingsModel.d.ts +24 -2
- package/dist/hooks/ui/useSettingsModel.js +13 -2
- package/dist/hooks/ui/useSettingsPersistence.d.ts +12 -1
- package/dist/hooks/ui/useSettingsPersistence.js +74 -47
- package/dist/hooks/useFilterSort.d.ts +7 -3
- package/dist/hooks/useFilterSort.js +15 -5
- package/dist/hooks/useSyncOrchestrator.d.ts +3 -0
- package/dist/hooks/useSyncOrchestrator.js +111 -2
- package/dist/hooks/useTaskData.d.ts +40 -1
- package/dist/hooks/useTaskData.js +240 -9
- package/dist/hooks/useTaskMutations.d.ts +12 -2
- package/dist/hooks/useTaskMutations.js +266 -52
- package/dist/hooks/useTaskforce.d.ts +39 -9
- package/dist/hooks/useTaskforce.js +359 -40
- package/dist/hooks/useUiNotice.d.ts +4 -0
- package/dist/hooks/useUiNotice.js +4 -0
- package/dist/mcp/adminWorkspaceRegistrar.js +3 -3
- package/dist/mcp/clientRegistry.d.ts +2 -2
- package/dist/mcp/clientRegistry.js +1 -1
- package/dist/mcp/documentAssetRegistrar.js +53 -41
- package/dist/mcp/documentHelpers.d.ts +1 -0
- package/dist/mcp/documentHelpers.js +7 -3
- package/dist/mcp/durableTaskMutationRouter.d.ts +4 -1
- package/dist/mcp/durableTaskMutationRouter.js +10 -0
- package/dist/mcp/durableTaskRelationshipMutationRouter.js +4 -0
- package/dist/mcp/httpProtocolRouting.d.ts +10 -0
- package/dist/mcp/httpProtocolRouting.js +19 -0
- package/dist/mcp/localCliHealth.d.ts +2 -2
- package/dist/mcp/localCliHealth.js +2 -2
- package/dist/mcp/localServiceProxy.d.ts +1 -0
- package/dist/mcp/localServiceProxy.js +530 -68
- package/dist/mcp/planningAttachmentCommandAdapter.d.ts +3 -1
- package/dist/mcp/planningAttachmentCommandAdapter.js +20 -2
- package/dist/mcp/runtime.d.ts +54 -79
- package/dist/mcp/runtime.js +556 -139
- package/dist/mcp/taskPlanningRegistrar.js +64 -42
- package/dist/mcp/toolCallCompatibility.js +38 -1
- package/dist/mcp/toolCatalog.d.ts +1 -0
- package/dist/mcp/toolProfiles.d.ts +2 -0
- package/dist/mcp/toolProfiles.js +10 -0
- package/dist/mcp/toolRegistry.d.ts +1 -0
- package/dist/mcp/toolRegistry.js +1 -0
- package/dist/mcp/workflowExecutionRegistrar.js +4 -4
- package/dist/migrations/taskSchemaMigrations.d.ts +5 -0
- package/dist/migrations/taskSchemaMigrations.js +427 -0
- package/dist/runtime/appGateDefinitions.d.ts +30 -6
- package/dist/runtime/appGateDefinitions.js +6 -6
- package/dist/runtime/appGates.d.ts +13 -13
- package/dist/runtime/appGates.js +36 -13
- package/dist/runtime/nodeAppGates.d.ts +8 -0
- package/dist/runtime/nodeAppGates.js +27 -0
- package/dist/server/cloudCollectionRead.d.ts +1 -1
- package/dist/server/cloudCollectionRead.js +2 -2
- package/dist/server/index.d.ts +6 -0
- package/dist/server/index.js +123 -14
- package/dist/server/localDatabaseIdentity.js +4 -1
- package/dist/server/localServiceLease.d.ts +3 -0
- package/dist/server/localServiceLease.js +11 -2
- package/dist/server/localServiceSessions.d.ts +14 -17
- package/dist/server/localServiceSessions.js +308 -94
- package/dist/server/localWorkspaceSyncServerRuntime.js +12 -7
- package/dist/server/rateLimit.d.ts +1 -0
- package/dist/server/rateLimit.js +4 -0
- package/dist/server/realtimeSyncWs.js +36 -12
- package/dist/server/routes/admin.d.ts +4 -0
- package/dist/server/routes/admin.js +113 -3
- package/dist/server/routes/agentRoles.js +3 -2
- package/dist/server/routes/agentSkills.js +3 -2
- package/dist/server/routes/agents.d.ts +7 -0
- package/dist/server/routes/agents.js +394 -39
- package/dist/server/routes/annotatedAttachments.js +3 -2
- package/dist/server/routes/auth.js +3 -1
- package/dist/server/routes/billing.js +5 -1
- package/dist/server/routes/durableTaskHttpRouters.d.ts +11 -2
- package/dist/server/routes/executorPhaseAApprovals.d.ts +19 -0
- package/dist/server/routes/executorPhaseAApprovals.js +140 -0
- package/dist/server/routes/executorPhaseAIssuerRedemptions.d.ts +11 -0
- package/dist/server/routes/executorPhaseAIssuerRedemptions.js +24 -0
- package/dist/server/routes/githubReviewEvidence.d.ts +19 -0
- package/dist/server/routes/githubReviewEvidence.js +116 -0
- package/dist/server/routes/localService.d.ts +15 -4
- package/dist/server/routes/localService.js +138 -40
- package/dist/server/routes/modelConnections.d.ts +24 -0
- package/dist/server/routes/modelConnections.js +205 -0
- package/dist/server/routes/primitives.d.ts +2 -0
- package/dist/server/routes/shared.d.ts +19 -0
- package/dist/server/routes/shared.js +95 -19
- package/dist/server/routes/sync.js +1 -0
- package/dist/server/routes/syncAuxRoutes.js +9 -2
- package/dist/server/routes/syncPullApplyRoutes.js +23 -4
- package/dist/server/routes/syncPushRoutes.d.ts +1 -0
- package/dist/server/routes/syncPushRoutes.js +1 -0
- package/dist/server/routes/syncV3FeedRoutes.js +27 -16
- package/dist/server/routes/syncV3LocalCaptureRoutes.js +28 -2
- package/dist/server/routes/syncV3LocalFeedApplyRoutes.d.ts +1 -0
- package/dist/server/routes/syncV3LocalFeedApplyRoutes.js +26 -0
- package/dist/server/routes/syncV3OperationRoutes.js +45 -9
- package/dist/server/routes/tasks.js +124 -13
- package/dist/server/routes/workflows.js +9 -1
- package/dist/server/routes/workspaces.js +43 -1
- package/dist/server/routes.js +59 -0
- package/dist/server/workspaceDeletionAdmission.d.ts +23 -0
- package/dist/server/workspaceDeletionAdmission.js +50 -0
- package/dist/service/localServiceCli.js +16 -0
- package/dist/service/localServiceClientLifecycle.js +36 -10
- package/dist/services/codexAppServerModelGateway.d.ts +161 -0
- package/dist/services/codexAppServerModelGateway.js +663 -0
- package/dist/services/codexDeviceCodeLoginManager.d.ts +39 -0
- package/dist/services/codexDeviceCodeLoginManager.js +265 -0
- package/dist/services/codexModelProviderConnectionLifecycle.d.ts +8 -0
- package/dist/services/codexModelProviderConnectionLifecycle.js +73 -0
- package/dist/services/executorPhaseAApprovalRuntime.d.ts +14 -0
- package/dist/services/executorPhaseAApprovalRuntime.js +24 -0
- package/dist/services/executorPhaseAApprovalService.d.ts +40 -0
- package/dist/services/executorPhaseAApprovalService.js +609 -0
- package/dist/services/executorPhaseADriftEvaluator.d.ts +78 -0
- package/dist/services/executorPhaseADriftEvaluator.js +93 -0
- package/dist/services/executorPhaseAIssuerCore.d.ts +126 -0
- package/dist/services/executorPhaseAIssuerCore.js +295 -0
- package/dist/services/executorPhaseAIssuerRedemptionService.d.ts +34 -0
- package/dist/services/executorPhaseAIssuerRedemptionService.js +158 -0
- package/dist/services/githubReviewEvidenceRuntime.d.ts +14 -0
- package/dist/services/githubReviewEvidenceRuntime.js +30 -0
- package/dist/services/githubReviewEvidenceService.d.ts +93 -0
- package/dist/services/githubReviewEvidenceService.js +336 -0
- package/dist/services/modelGateway.d.ts +7 -0
- package/dist/services/modelProviderConnectionService.d.ts +71 -0
- package/dist/services/modelProviderConnectionService.js +279 -0
- package/dist/services/modelProviderCredentialHome.d.ts +32 -0
- package/dist/services/modelProviderCredentialHome.js +271 -0
- package/dist/services/ownerScopedModelConnectionGateway.d.ts +12 -0
- package/dist/services/ownerScopedModelConnectionGateway.js +30 -0
- package/dist/services/taskforceAgentConnectionBindingService.d.ts +66 -0
- package/dist/services/taskforceAgentConnectionBindingService.js +185 -0
- package/dist/services/taskforceAgentMcpBridge.d.ts +8 -2
- package/dist/services/taskforceAgentMcpBridge.js +30 -27
- package/dist/shared/adminEdgeProxy.d.ts +5 -0
- package/dist/shared/adminEdgeProxy.js +94 -0
- package/dist/shared/adminProxySessionCookies.d.ts +16 -0
- package/dist/shared/adminProxySessionCookies.js +86 -0
- package/dist/shared/aiProfileColors.d.ts +31 -1
- package/dist/shared/aiProfileColors.js +14 -6
- package/dist/shared/executorPhaseAApprovalGoldenVector.json +269 -0
- package/dist/shared/executorPhaseAApprovalReceipt.d.ts +112 -0
- package/dist/shared/executorPhaseAApprovalReceipt.js +58 -0
- package/dist/shared/executorPhaseAApprovalTrustPolicy.json +10 -0
- package/dist/shared/executorPhaseADriftContracts.d.ts +37 -0
- package/dist/shared/executorPhaseADriftContracts.js +63 -0
- package/dist/shared/executorPhaseAIssuerContracts.d.ts +75 -0
- package/dist/shared/executorPhaseAIssuerContracts.js +90 -0
- package/dist/shared/executorPhaseARunAuthorization.d.ts +120 -0
- package/dist/shared/executorPhaseARunAuthorization.js +232 -0
- package/dist/shared/executorPhaseASchemaValidation.d.ts +7 -0
- package/dist/shared/executorPhaseASchemaValidation.js +53 -0
- package/dist/shared/executorPhaseASchemas/approval-receipt.schema.json +106 -0
- package/dist/shared/executorPhaseASchemas/drift-attestation.schema.json +54 -0
- package/dist/shared/executorPhaseASchemas/drift-request.schema.json +47 -0
- package/dist/shared/executorPhaseASchemas/foundation-manifest.schema.json +29 -0
- package/dist/shared/executorPhaseASchemas/issuer-audit-record.schema.json +24 -0
- package/dist/shared/executorPhaseASchemas/issuer-proof.schema.json +43 -0
- package/dist/shared/executorPhaseASchemas/issuer-redemption-request.schema.json +18 -0
- package/dist/shared/executorPhaseASchemas/issuer-redemption-response.schema.json +39 -0
- package/dist/shared/executorPhaseASchemas/logical-envelope.schema.json +149 -0
- package/dist/shared/executorPhaseASchemas/preflight-report.schema.json +216 -0
- package/dist/shared/executorPhaseASchemas/run-capability.schema.json +111 -0
- package/dist/shared/executorPhaseASchemas/sender-proof.schema.json +37 -0
- package/dist/shared/executorPhaseASchemas/workload-grant.schema.json +68 -0
- package/dist/shared/executorPhaseASchemas/workload-jwt-claims.schema.json +67 -0
- package/dist/shared/executorPhaseATiming.d.ts +1 -0
- package/dist/shared/executorPhaseATiming.js +1 -0
- package/dist/shared/planningIdentity.js +1 -1
- package/dist/shared/productLogoKeys.d.ts +2 -0
- package/dist/shared/productLogoKeys.js +18 -0
- package/dist/shared/taskforceAgentDefinition.d.ts +0 -1
- package/dist/shared/taskforceAgentDefinition.js +6 -3
- package/dist/shared/taskforceAgentModels.d.ts +1 -0
- package/dist/shared/taskforceAgentModels.js +36 -3
- package/dist/shared/userFeatureGrants.d.ts +4 -0
- package/dist/shared/userFeatureGrants.js +7 -0
- package/dist/storage/executorPhaseAApprovalReceiptStore.d.ts +37 -0
- package/dist/storage/executorPhaseAApprovalReceiptStore.js +81 -0
- package/dist/storage/executorPhaseARunAuthorizationStore.d.ts +103 -0
- package/dist/storage/executorPhaseARunAuthorizationStore.js +492 -0
- package/dist/storage/githubReviewEvidenceInstallationStore.d.ts +26 -0
- package/dist/storage/githubReviewEvidenceInstallationStore.js +89 -0
- package/dist/storage/modelProviderConnectionStore.d.ts +99 -0
- package/dist/storage/modelProviderConnectionStore.js +446 -0
- package/dist/storage/postgresAdapter.d.ts +24 -3
- package/dist/storage/postgresAdapter.js +117 -14
- package/dist/storage/postgresWorker.js +22 -5
- package/dist/storage/postgresWorkerProtocol.d.ts +30 -0
- package/dist/storage/postgresWorkerProtocol.js +30 -0
- package/dist/storage/taskforceAgentConnectionBindingStore.d.ts +31 -0
- package/dist/storage/taskforceAgentConnectionBindingStore.js +84 -0
- package/dist/sync/cloudSyncApi.d.ts +4 -1
- package/dist/sync/cloudSyncApi.js +7 -2
- package/dist/sync/contentSyncState.d.ts +1 -1
- package/dist/sync/coordinator/localSyncExecutionPermitStore.d.ts +1 -0
- package/dist/sync/coordinator/localSyncExecutionPermitStore.js +67 -30
- package/dist/sync/coordinator/localWorkspaceSyncPendingV2PushProgress.d.ts +10 -0
- package/dist/sync/coordinator/localWorkspaceSyncPendingV2PushProgress.js +29 -0
- package/dist/sync/coordinator/localWorkspaceSyncRunner.js +6 -2
- package/dist/sync/coordinator/localWorkspaceSyncRunnerState.d.ts +15 -1
- package/dist/sync/coordinator/localWorkspaceSyncRunnerState.js +99 -2
- package/dist/sync/coordinator/workspaceSyncCredentialBroker.d.ts +1 -0
- package/dist/sync/coordinator/workspaceSyncCredentialBroker.js +33 -4
- package/dist/sync/engine/workspaceSyncContentLifecycleAdapter.d.ts +2 -1
- package/dist/sync/engine/workspaceSyncContentVersionStore.d.ts +38 -0
- package/dist/sync/engine/workspaceSyncContentVersionStore.js +50 -1
- package/dist/sync/engine/workspaceSyncEngineBrowserGatewayRemoteServices.js +20 -2
- package/dist/sync/engine/workspaceSyncEngineLifecyclePolicy.js +6 -6
- package/dist/sync/engine/workspaceSyncEngineLocalServices.d.ts +4 -0
- package/dist/sync/engine/workspaceSyncEngineLocalServices.js +11 -0
- package/dist/sync/engine/workspaceSyncEnginePushCompletion.d.ts +14 -0
- package/dist/sync/engine/workspaceSyncEnginePushCompletion.js +84 -0
- package/dist/sync/engine/workspaceSyncEngineRecovery.js +1 -0
- package/dist/sync/engine/workspaceSyncEngineRemoteServices.d.ts +11 -0
- package/dist/sync/engine/workspaceSyncEngineRemoteServices.js +2 -1
- package/dist/sync/engine/workspaceSyncEngineRuntime.d.ts +1 -0
- package/dist/sync/engine/workspaceSyncEngineRuntime.js +1 -0
- package/dist/sync/engine/workspaceSyncEngineServerRemoteServices.js +31 -4
- package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.d.ts +3 -1
- package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.js +134 -43
- package/dist/sync/engine/workspaceSyncEngineServerSnapshotReader.js +6 -0
- package/dist/sync/engine/workspaceSyncEngineTransfers.d.ts +1 -1
- package/dist/sync/engine/workspaceSyncEngineTransfers.js +11 -4
- package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.d.ts +1 -0
- package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.js +29 -0
- package/dist/sync/syncApplyHandlers.d.ts +2 -0
- package/dist/sync/syncApplyHandlers.js +10 -1
- package/dist/sync/syncService.d.ts +17 -0
- package/dist/sync/syncService.js +87 -19
- package/dist/sync/taskforceAgentSyncAuthorization.d.ts +16 -0
- package/dist/sync/taskforceAgentSyncAuthorization.js +20 -0
- package/dist/sync/v3/combinedFeedCapability.js +8 -0
- package/dist/sync/v3/durableInitiativeMutationRouter.js +18 -10
- package/dist/sync/v3/durableOperationReplay.d.ts +14 -0
- package/dist/sync/v3/durableOperationReplay.js +18 -0
- package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.d.ts +2 -0
- package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.js +14 -1
- package/dist/sync/v3/durableTaskChecklistMutationRouter.d.ts +4 -1
- package/dist/sync/v3/durableTaskChecklistMutationRouter.js +62 -15
- package/dist/sync/v3/durableTaskCommentMutationRouter.js +3 -0
- package/dist/sync/v3/durableTaskHttpBulkMutationRouter.d.ts +1 -0
- package/dist/sync/v3/durableTaskHttpBulkMutationRouter.js +30 -8
- package/dist/sync/v3/durableTaskHttpRootMutationRouter.d.ts +5 -3
- package/dist/sync/v3/durableTaskHttpRootMutationRouter.js +37 -2
- package/dist/sync/v3/durableTaxonomyMutationRouter.js +5 -0
- package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.d.ts +11 -0
- package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.js +39 -10
- package/dist/sync/v3/durableWorkstreamMutationRouter.js +18 -10
- package/dist/sync/v3/durableWorkstreamTaskOrderMutationRouter.js +16 -5
- package/dist/sync/v3/localOutboxDispatchRuntime.js +2 -2
- package/dist/sync/v3/localTaskAttachmentLinksOutboxService.d.ts +2 -0
- package/dist/sync/v3/localTaskAttachmentLinksOutboxService.js +47 -7
- package/dist/sync/v3/localTaskChecklistOutboxHandler.js +16 -2
- package/dist/sync/v3/localTaskChecklistOutboxService.d.ts +4 -0
- package/dist/sync/v3/localTaskChecklistOutboxService.js +14 -1
- package/dist/sync/v3/localTaskCreateOutboxService.js +15 -6
- package/dist/sync/v3/localTaskMetadataClient.d.ts +1 -0
- package/dist/sync/v3/localTaskMetadataClient.js +1 -0
- package/dist/sync/v3/localTaskMetadataOutboxHandler.js +5 -1
- package/dist/sync/v3/localTaskMetadataOutboxService.d.ts +2 -0
- package/dist/sync/v3/localTaskMetadataOutboxService.js +7 -0
- package/dist/sync/v3/localTaskRestoreOutboxService.js +14 -6
- package/dist/sync/v3/localTaskStatusClient.d.ts +1 -0
- package/dist/sync/v3/localTaskStatusClient.js +6 -1
- package/dist/sync/v3/localTaskStatusOutboxService.d.ts +10 -0
- package/dist/sync/v3/localTaskStatusOutboxService.js +272 -24
- package/dist/sync/v3/syncDurabilityStore.d.ts +41 -0
- package/dist/sync/v3/syncDurabilityStore.js +199 -13
- package/dist/sync/v3/taskAttachmentLinksMutationService.d.ts +6 -4
- package/dist/sync/v3/taskAttachmentLinksMutationService.js +19 -10
- package/dist/sync/v3/taskChecklistMutationService.d.ts +15 -2
- package/dist/sync/v3/taskChecklistMutationService.js +48 -1
- package/dist/sync/v3/taskCreateMutationService.d.ts +2 -2
- package/dist/sync/v3/taskCreateMutationService.js +7 -4
- package/dist/sync/v3/taskMetadataMutationService.d.ts +3 -0
- package/dist/sync/v3/taskMetadataMutationService.js +4 -0
- package/dist/sync/v3/taskRestoreMutationService.d.ts +2 -2
- package/dist/sync/v3/taskRestoreMutationService.js +7 -4
- package/dist/sync/v3/taskStatusMutationService.d.ts +31 -1
- package/dist/sync/v3/taskStatusMutationService.js +123 -3
- package/dist/sync/v3/workflowAssignmentSync.d.ts +6 -0
- package/dist/sync/v3/workflowAssignmentSync.js +30 -0
- package/dist/sync/v3/workspaceSyncJournalReader.js +1 -1
- package/dist/sync/v3/workspaceSyncOperationRetentionService.d.ts +16 -0
- package/dist/sync/v3/workspaceSyncOperationRetentionService.js +83 -0
- package/dist/sync/v3/workspaceSyncV2ProjectionExclusions.d.ts +1 -1
- package/dist/sync/v3/workspaceSyncV2ProjectionExclusions.js +13 -3
- package/dist/sync/v3/workspaceSyncV3AttachmentApplyObligationStore.d.ts +11 -0
- package/dist/sync/v3/workspaceSyncV3AttachmentApplyObligationStore.js +27 -10
- package/dist/sync/v3/workspaceSyncV3AttachmentAssetHydration.d.ts +2 -1
- package/dist/sync/v3/workspaceSyncV3AttachmentAssetHydration.js +52 -10
- package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.d.ts +1 -0
- package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.js +18 -3
- package/dist/sync/v3/workspaceSyncV3CombinedFeedOrchestrator.js +8 -3
- package/dist/sync/v3/workspaceSyncV3CombinedLocalApply.js +51 -10
- package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.d.ts +14 -0
- package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.js +49 -25
- package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.d.ts +13 -4
- package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.js +124 -57
- package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.d.ts +20 -0
- package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.js +106 -30
- package/dist/sync/v3/workspaceSyncV3CombinedWireContract.d.ts +4 -1
- package/dist/sync/v3/workspaceSyncV3CombinedWireContract.js +34 -0
- package/dist/sync/v3/workspaceSyncV3CoverageRegistry.js +12 -0
- package/dist/sync/v3/workspaceSyncV3FeedProfile.d.ts +1 -1
- package/dist/sync/v3/workspaceSyncV3LegacyBoundaryAttestation.d.ts +1 -0
- package/dist/sync/v3/workspaceSyncV3LegacyBoundaryAttestation.js +23 -10
- package/dist/sync/v3/workspaceSyncV3NestedTaskApply.d.ts +3 -0
- package/dist/sync/v3/workspaceSyncV3NestedTaskApply.js +64 -13
- package/dist/sync/v3/workspaceSyncV3NestedTaskCodecs.d.ts +9 -0
- package/dist/sync/v3/workspaceSyncV3NestedTaskCodecs.js +26 -0
- package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.d.ts +15 -5
- package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.js +50 -14
- package/dist/sync/v3/workspaceSyncV3NestedTaskRepairSnapshot.d.ts +2 -1
- package/dist/sync/v3/workspaceSyncV3NestedTaskRepairSnapshot.js +11 -3
- package/dist/sync/v3/workspaceSyncV3OperationProtocol.d.ts +5 -0
- package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.d.ts +7 -0
- package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.js +55 -9
- package/dist/sync/v3/workspaceSyncV3RepairSnapshotRetentionService.d.ts +17 -0
- package/dist/sync/v3/workspaceSyncV3RepairSnapshotRetentionService.js +64 -0
- package/dist/sync/v3/workspaceSyncV3TaskCommentAudit.js +9 -2
- package/dist/sync/v3/workspaceSyncV3TaskCoverCoverage.d.ts +7 -0
- package/dist/sync/v3/workspaceSyncV3TaskCoverCoverage.js +37 -0
- package/dist/sync/v3/workspaceSyncV3TaskCoverWireContract.d.ts +6 -0
- package/dist/sync/v3/workspaceSyncV3TaskCoverWireContract.js +9 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverCoverage.d.ts +7 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverCoverage.js +33 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverWireContract.d.ts +7 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowTaskCoverWireContract.js +8 -0
- package/dist/sync/workspacePullFeed.js +2 -1
- package/dist/sync/workspaceRepair.d.ts +8 -2
- package/dist/sync/workspaceRepair.js +222 -6
- package/dist/sync/workspaceSyncModel.d.ts +21 -0
- package/dist/sync/workspaceSyncModel.js +35 -7
- package/dist/sync/workspaceSyncState.d.ts +1 -0
- package/dist/sync/workspaceSyncV2SnapshotBuilder.d.ts +6 -0
- package/dist/sync/workspaceSyncV2SnapshotBuilder.js +5 -0
- package/dist/types.d.ts +47 -1
- package/dist/types.js +6 -0
- package/dist/ui/assets/AiIdentityRosterCard-OcSz1PkK.js +1 -0
- package/dist/ui/assets/AiProfilesModule-ByhYW5Xi.js +1 -0
- package/dist/ui/assets/AnnotatedAttachmentWorkspace-BTM6nIg_.js +3 -0
- package/dist/ui/assets/AnnotatedAttachmentWorkspace-TzYu7pkG.css +1 -0
- package/dist/ui/assets/{AssetTraySortControl-Kf1pelSy.js → AssetTraySortControl-DabEG8L4.js} +1 -1
- package/dist/ui/assets/{ContextAttachmentManager-B8boOs6Q.js → ContextAttachmentManager-Coa8yVGM.js} +2 -2
- package/dist/ui/assets/{DocumentWorkspace-DXH4XUsB.js → DocumentWorkspace-BB0qhdix.js} +1 -1
- package/dist/ui/assets/{EntityActivityTimeline-BtSTq0ON.js → EntityActivityTimeline-CZ8x4UJE.js} +1 -1
- package/dist/ui/assets/PlanningModule-pRPjR7v5.js +1 -0
- package/dist/ui/assets/PlansPage-D86pZSSl.js +1 -0
- package/dist/ui/assets/TaskContextUpload-BVIkU9yT.js +1 -0
- package/dist/ui/assets/TaskSettings-Cv1mNhv_.js +12 -0
- package/dist/ui/assets/TaskforceAgentsModule-b-8R25cJ.css +1 -0
- package/dist/ui/assets/TaskforceAgentsModule-gmH-PD2q.js +24 -0
- package/dist/ui/assets/{WorkflowManagerModule-DWFspC-o.js → WorkflowManagerModule-DbfnHJ-f.js} +1 -1
- package/dist/ui/assets/index-BZ-hdZSk.css +1 -0
- package/dist/ui/assets/index-CTsDBaef.js +7 -0
- package/dist/ui/assets/{vendor-icons-BkFLXavV.js → vendor-icons-Bsq-mcEn.js} +1 -1
- package/dist/ui/branding/logos/letterhead_dark.png +0 -0
- package/dist/ui/branding/logos/letterhead_light.png +0 -0
- package/dist/ui/branding/logos/signature_dark.png +0 -0
- package/dist/ui/branding/logos/signature_light.png +0 -0
- package/dist/ui/index.html +3 -3
- package/dist/utils/aiProfileDefaultLogo.js +16 -48
- package/dist/utils/httpSetCookie.d.ts +1 -0
- package/dist/utils/httpSetCookie.js +4 -1
- package/dist/utils/localRuntimeUrl.d.ts +1 -0
- package/dist/utils/localRuntimeUrl.js +14 -0
- package/dist/utils/productLogoRegistry.d.ts +2 -0
- package/dist/utils/productLogoRegistry.js +36 -0
- package/dist/utils/syncStatusPresentation.d.ts +4 -0
- package/dist/utils/syncStatusPresentation.js +17 -0
- package/dist/utils/taskActivity.d.ts +3 -2
- package/dist/utils/taskActivity.js +19 -2
- package/dist/utils/taskEditorReconciliation.d.ts +40 -0
- package/dist/utils/taskEditorReconciliation.js +217 -0
- package/dist/utils/taskEvents.d.ts +2 -0
- package/dist/utils/taskNormalization.d.ts +1 -0
- package/dist/utils/taskNormalization.js +39 -0
- package/dist/utils/taskSearch.js +2 -2
- package/dist/utils/uiNotice.d.ts +4 -0
- package/dist/utils/workspaceSyncPresentation.d.ts +1 -1
- package/dist/utils/workspaceSyncPresentation.js +23 -17
- package/package.json +36 -6
- package/dist/ui/assets/AiIdentityRosterCard-MZs7lVED.js +0 -1
- package/dist/ui/assets/AiProfilesModule-C3i0LOxe.js +0 -1
- package/dist/ui/assets/AnnotatedAttachmentWorkspace-CBRZ8rca.css +0 -1
- package/dist/ui/assets/AnnotatedAttachmentWorkspace-DVZk5Tln.js +0 -3
- package/dist/ui/assets/PlanningModule-BPVyEa-f.js +0 -1
- package/dist/ui/assets/PlansPage-ChqgxALc.js +0 -1
- package/dist/ui/assets/TaskContextUpload-CB3ol0sN.js +0 -1
- package/dist/ui/assets/TaskSettings-g4ECKNOz.js +0 -12
- package/dist/ui/assets/TaskforceAgentsModule-BazdUwxZ.js +0 -21
- package/dist/ui/assets/TaskforceAgentsModule-D6IC0S7Q.css +0 -1
- package/dist/ui/assets/index-BUplSsv_.js +0 -7
- package/dist/ui/assets/index-gz2EXuoK.css +0 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/EntityActivityTimeline-CZ8x4UJE.js","assets/vendor-react-CKJs5o3c.js","assets/vendor-icons-Bsq-mcEn.js","assets/vendor-markdown-_lhNCyq-.js","assets/vendor-dnd-CJ-AjP-Y.js","assets/vendor-router-AqJMU8Lz.js","assets/EntityActivityTimeline-BfJbZRdl.css","assets/TaskContextUpload-BVIkU9yT.js","assets/ContextAttachmentManager-Coa8yVGM.js","assets/TaskContextUpload-qmBeUw3u.css","assets/TaskSettings-Cv1mNhv_.js","assets/TaskSettings-CnIBL_Eb.css","assets/AnnotatedAttachmentWorkspace-BTM6nIg_.js","assets/AssetTraySortControl-DabEG8L4.js","assets/AssetTraySortControl-B9k5caQW.css","assets/AnnotatedAttachmentWorkspace-TzYu7pkG.css","assets/DocumentWorkspace-BB0qhdix.js","assets/DocumentWorkspace-BIBGBfd7.css","assets/TaskforceAgentsModule-gmH-PD2q.js","assets/AiIdentityRosterCard-OcSz1PkK.js","assets/TaskforceAgentsModule-b-8R25cJ.css","assets/WorkflowManagerModule-DbfnHJ-f.js","assets/WorkflowManagerModule-DF10XENz.css","assets/AiProfilesModule-ByhYW5Xi.js","assets/PlanningModule-pRPjR7v5.js","assets/PlanningModule-CoIR9hbV.css","assets/PlansPage-D86pZSSl.js","assets/PlansPage-C2nkK2Bp.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as o,j as a,R as ne,a as uc,b as n0}from"./vendor-react-CKJs5o3c.js";import{I as Xs,C as Md,a as Fd,S as ry,F as a0,R as $i,b as s0,c as o0,d as ZA,U as pg,G as i0,H as c0,M as l0,e as d0,P as u0,B as f0,f as m0,W as p0,L as h0,g as g0,h as y0,i as k0,j as v0,k as Tg,l as cc,m as w0,n as b0,o as S0,p as A0,T as C0,q as Jm,r as fp,s as I0,t as di,u as Fi,A as sw,v as JA,w as ea,x as Ld,y as _0,z as T0,D as x0,E as XA,J as Cd,K as tf,N as QA,O as R0,X as fi,Q as ow,V as Um,Y as Pd,Z as Od,_ as P0,$ as eC,a0 as Xm,a1 as j0,a2 as Eb,a3 as E0,a4 as Qm,a5 as N0,a6 as tC,a7 as rC,a8 as iw,a9 as nC,aa as D0,ab as M0,ac as L0,ad as O0,ae as B0,af as W0,ag as $0,ah as aC,ai as F0,aj as cw,ak as vo,al as sC,am as U0,an as z0,ao as H0,ap as V0,aq as Nb,ar as Db,as as G0,at as K0,au as q0,av as Y0,aw as Z0,ax as oC,ay as J0,az as Mb,aA as X0,aB as Q0,aC as ex}from"./vendor-icons-Bsq-mcEn.js";import{s as tx,M as rx,r as Lb,a as nx}from"./vendor-markdown-_lhNCyq-.js";import{u as lw,a as ep,P as dw,b as iC,D as uw,c as cC,S as fw,v as mw,d as pw,C as ny,e as hw,s as lC,K as dC,f as ax,p as sx,g as Ob,h as ox,i as uC,j as ix}from"./vendor-dnd-CJ-AjP-Y.js";import{u as fC,a as mC,b as cx,M as lx,N as Bb,B as dx}from"./vendor-router-AqJMU8Lz.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))n(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&n(l)}).observe(document,{childList:!0,subtree:!0});function r(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(s){if(s.ep)return;s.ep=!0;const i=r(s);fetch(s.href,i)}})();const rf="default",ay="General",wo="task",ux=2,fx=[{value:rf,label:ay,icon:"Inbox"}],pC=[{value:wo,label:"Task",icon:"CheckSquare",color:"blue-500"}],mx=[{value:ux,label:"Medium",color:"blue-500",icon:"Minus"}];function px(){return fx.map(e=>({...e}))}function hx(){return pC.map(e=>({...e}))}function gx(e){const t=String(e||"").trim().toLowerCase();return pC.find(r=>r.value===t)}function hC(){return mx.map(e=>({...e}))}const yx={categories:px(),types:hx(),priorities:hC(),taxonomies:[],apiEndpoint:"/api/taskforce/task",apiBaseUrl:void 0,cloudAuthBaseUrl:void 0,cloudMcpBaseUrl:void 0,wsBaseUrl:void 0,appGates:void 0,position:"bottom-right",offsetY:70,theme:"dawn",shortcut:"Alt+T",manualComplexityEnabled:!1,checklistDropdownEnabled:!0,showTaskCardStatusLabel:!1,showTaskCardDescription:!0,showTaskCardAttachments:!0,showTaskCardChecklistProgress:!0,showTaskCardLatestActivity:!0,tintTaskCardActivityBackground:!1},kx=["light","dawn","dark","midnight"],xg="dawn",vx=[{id:"light",label:"Light",family:"light",icon:"sun"},{id:"dawn",label:"Dawn",family:"light",icon:"wind"},{id:"dark",label:"Dark",family:"dark",icon:"moon"},{id:"midnight",label:"Midnight",family:"dark",icon:"sparkles"}],wx=new Set(kx),bx=new Set(vx.filter(e=>e.family==="light").map(e=>e.id));function Sx(e){return typeof e=="string"&&wx.has(e)}function Zu(e){if(typeof e!="string")return null;const t=e.trim().toLowerCase();return Sx(t)?t:null}function gC(e){const t=Zu(e);return t!==null&&bx.has(t)}function Rg(e){const t=typeof e=="number"?e:Number(e);if(!Number.isFinite(t))return null;const r=Math.floor(t);return r>0?r:null}const Ax=new RegExp("(?<![\\w-])((?:IN|WS|D|I)-\\d+)(?![\\w-])","gi"),Cx={IN:"initiative",WS:"workstream",D:"document",I:"image"};function yC(e){const r=String(e||"").trim().toUpperCase().match(/^(IN|WS|D|I)-(\d+)$/);if(!r)return null;const n=Rg(r[2]);return n?{kind:Cx[r[1]],token:`${r[1]}-${n}`,referenceNumber:n}:null}function af(e,t){const r=Rg(typeof t=="object"&&t!==null?t.referenceNumber:t);return r?`${e}${r}`:""}function sy(e,t){const r=String(e||"").trim(),n=String(t||"").trim();if(!r||!n)return null;const s=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),i=n.match(new RegExp(`^${s}(\\d+)$`,"i"));return i?Rg(i[1]):null}function mp(e,t){return t?typeof t.referenceLabel=="string"&&t.referenceLabel.trim().length>0?t.referenceLabel.trim():af(e,t.referenceNumber):""}const gw="T-",hv="LT-",Ix=/^task-[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i,_x=/^task-\d{10,}-[a-z0-9]+$/i,Tx=new RegExp("(?<![\\w-])((?:LT|T)-\\d+|task-(?:[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}|\\d{10,}-[a-z0-9]+))(?![\\w-])","gi");function kC(e){const t=String(e||"").trim();return oy(t)!==null||wC(t)!==null||Ix.test(t)||_x.test(t)}function xx(e,t){const r=String(t||"").trim();if(!r||!kC(r))return null;const n=r.toLowerCase(),s=oy(r),i=wC(r),l=e.filter(c=>c.id.toLowerCase()===n||s!==null&&c.referenceNumber===s||i!==null&&c.localReferenceNumber===i?!0:Ss(c).toLowerCase()===n);return l.length===1?l[0].id:null}function Rx(e){const t=new Map,r=(s,i)=>{const l=String(s||"").trim().toLowerCase();if(l){if(!t.has(l)){t.set(l,i);return}t.get(l)!==i&&t.set(l,null)}};return e.forEach(s=>{r(s.id,s.id),s.referenceNumber&&r(vC(s.referenceNumber),s.id),s.localReferenceNumber&&r(yw(s.localReferenceNumber),s.id),r(Ss(s),s.id)}),{revision:JSON.stringify(Array.from(t.entries()).sort(([s],[i])=>s.localeCompare(i))),resolve:s=>{const i=String(s||"").trim();return!i||!kC(i)?null:t.get(i.toLowerCase())??null}}}function vC(e){return af(gw,e)}function yw(e){return typeof e=="number"||e===null||e===void 0?af(hv,e):af(hv,{referenceNumber:e.localReferenceNumber??null})}function oy(e){return sy(gw,e)}function wC(e){return sy(hv,e)}function Ss(e){if(!e)return"";if(typeof e.referenceLabel=="string"&&e.referenceLabel.trim().length>0)return e.referenceLabel.trim();const t=mp(gw,e);return t||yw(e.localReferenceNumber)}function Px(e){return!e?.referenceNumber&&!!e?.localReferenceNumber}function kw(e){return{label:Ss(e),isProvisional:Px(e)}}function jx(e){return e==="taskId"?"Task":e==="title"?"Title":e==="description"?"Description":e==="ownerId"?"Owner":e==="status"?"Status":e==="scheduledDate"?"Scheduled date":e==="dueDate"?"Due date":e==="workstreamId"?"Workstream":e==="initiativeId"?"Initiative":e}function Ph(e){const t=String(e??"").trim().toLowerCase();return!t||t==="none"||t==="null"||t==="unassigned"||t==="user"}function Ex(e){return e==="task"?"Task":e.replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,t=>t.toUpperCase())}function Ha(e,t,r){const n=r?.(t,e);if(typeof n=="string")return n;if(e==null||e==="")return"none";if(Array.isArray(e)){const s=e.map(i=>Ha(i,t,r)).filter(Boolean);return s.length>0?s.join(", "):"none"}return typeof e=="object"?"updated":t==="status"?Ex(String(e)):String(e)}function Wb(e){return Array.isArray(e)?e.map((t,r)=>{const n=t&&typeof t=="object"?t:{},s=Number(n.order);return{id:String(n.id||"").trim(),title:String(n.title||"").trim(),isCompleted:!!n.isCompleted,order:Number.isFinite(s)?s:r}}):[]}function Nx(e){const t=Wb(e?.from),r=Wb(e?.to),n=new Map(t.map(l=>[l.id||l.title,l])),s=new Map(r.map(l=>[l.id||l.title,l]));for(const[l,c]of s.entries()){const d=n.get(l);if(!d)return c.title?`Checklist item added: ${c.title}`:"Checklist item added";if(d.isCompleted!==c.isCompleted)return c.title?c.isCompleted?`Checklist item completed: ${c.title}`:`Checklist item reopened: ${c.title}`:c.isCompleted?"Checklist item completed":"Checklist item reopened"}for(const[l,c]of n.entries())if(!s.has(l))return c.title?`Checklist item removed: ${c.title}`:"Checklist item removed";return t.length===r.length&&t.every(l=>s.has(l.id||l.title))&&t.some((c,d)=>{const m=r[d];return(c.id||c.title)!==(m?.id||m?.title)})?"Checklist reordered":"Checklist updated"}function vw(e){return e.split(/[?#]/,1)[0]||e}function $b(e){const t=vw(e).replace(/\\/g,"/"),r=t.split("/").filter(Boolean);return r[r.length-1]||t}function Dx(e){return/\.(png|jpe?g|webp|gif)$/i.test(vw(e))}function Mx(e){return e.includes("/api/taskforce/documents/")?!0:/\.(pdf|txt|md|markdown|csv|json|docx?|html?|js|jsx|ts|tsx|css|py|java|go|rs|sh)$/i.test(vw(e))}function Fb(e){return Array.isArray(e)?e.flatMap((t,r)=>{const n=t&&typeof t=="object"?t:null,s=typeof t=="string"?t:String(n?.path||"").trim(),i=String(n?.fsPath||"").trim(),l=String(n?.assetId||"").trim(),c=String(n?.referenceLabel||"").trim(),d=[n?.displayName,n?.originalFilename,n?.caption,c,i?$b(i):"",s?$b(s):""].map(h=>String(h||"").trim()).find(Boolean)||`Attachment ${r+1}`,m=l||i||s||`${d}:${r}`,f=[s,i,String(n?.originalFilename||"").trim(),String(n?.displayName||"").trim(),c].filter(Boolean),g=f.some(h=>Dx(h))?"image":c.startsWith("D-")||f.some(h=>Mx(h))?"document":"attachment";return[{key:m,label:d,kind:g}]}):[]}function Lx(e,t){return t===1?e:e==="image"?"images":e==="document"?"documents":"attachments"}function jh(e){if(e.length===0)return"attachments";const t=e.reduce((n,s)=>(n[s.kind]+=1,n),{image:0,document:0,attachment:0}),r=Object.entries(t).filter(([,n])=>n>0).map(([n,s])=>s===1?n:`${s} ${Lx(n,s)}`);return r.length===1?r[0]:e.length<=3&&r.length<=2?r.join(" and "):`${e.length} attachments`}function Il(e){return e&&e.charAt(0).toUpperCase()+e.slice(1)}function Pk(e){return Array.isArray(e)?e.map(t=>typeof t=="string"?t.trim():"").filter(Boolean):[]}function Ox(e){if(Array.isArray(e.from)||Array.isArray(e.to)||!["fromCount","toCount","added","removed","updated"].some(c=>Object.prototype.hasOwnProperty.call(e,c)))return null;const r=Pk(e.added),n=Pk(e.removed),s=Pk(e.updated);if(r.length===1&&n.length===0&&s.length===0)return`Attachment attached: ${r[0]}`;if(n.length===1&&r.length===0&&s.length===0)return`Attachment removed: ${n[0]}`;if(r.length===1&&n.length===1&&s.length===0)return`Attachment replaced: ${n[0]} -> ${r[0]}`;if(s.length===1&&r.length===0&&n.length===0)return`Attachment updated: ${s[0]}`;if(s.length>0&&r.length===0&&n.length===0)return`${s.length} attachments updated`;if(r.length>0||n.length>0){const c=[...r.length>0?[`${r.length} ${r.length===1?"attachment":"attachments"} attached`]:[],...n.length>0?[`${n.length} ${n.length===1?"attachment":"attachments"} removed`]:[],...s.length>0?[`${s.length} ${s.length===1?"attachment":"attachments"} updated`]:[]];return Il(c.join(", "))}const i=Number(e.fromCount),l=Number(e.toCount);if(Number.isSafeInteger(i)&&i>=0&&Number.isSafeInteger(l)&&l>=0){const c=l-i;if(c===1)return"Attachment attached";if(c>1)return`${c} attachments attached`;if(c===-1)return"Attachment removed";if(c<-1)return`${Math.abs(c)} attachments removed`}return"Attachment details updated"}function Bx(e){const t=e?Ox(e):null;if(t)return t;const r=Fb(e?.from),n=Fb(e?.to),s=new Map(r.map(m=>[m.key,m])),i=new Map(n.map(m=>[m.key,m])),l=n.filter(m=>!s.has(m.key)),c=r.filter(m=>!i.has(m.key));if(l.length===1&&c.length===0)return`${Il(l[0].kind)} attached: ${l[0].label}`;if(c.length===1&&l.length===0)return`${Il(c[0].kind)} removed: ${c[0].label}`;if(l.length>0&&c.length===0)return`${Il(jh(l))} attached`;if(c.length>0&&l.length===0)return`${Il(jh(c))} removed`;if(l.length===1&&c.length===1)return`${Il(l[0].kind)} replaced: ${c[0].label} -> ${l[0].label}`;if(l.length>0||c.length>0)return`${Il(jh(l))} attached, ${jh(c)} removed`;const d=n.filter(m=>{const f=s.get(m.key);return f&&f.label!==m.label});if(d.length===1&&r.length===1&&n.length===1){const m=s.get(d[0].key);return`${Il(d[0].kind)} renamed: ${m?.label||"Attachment"} -> ${d[0].label}`}return"Attachment details updated"}function Pg(e,t,r){if(e==="checklistItems")return Nx(t);if(e==="attachments")return Bx(t);if(e==="assignee"){const s=Ha(t?.from,e,r),i=Ha(t?.to,e,r);return Ph(t?.from)&&!Ph(t?.to)?`Assigned to ${i}`:!Ph(t?.from)&&Ph(t?.to)?`Unassigned from ${s}`:`Reassigned: ${s} → ${i}`}const n=jx(e);if(e==="title")return`${n}: updated`;if(e==="description"){const s=Ha(t?.from,e,r)!=="none",i=Ha(t?.to,e,r)!=="none";return!s&&i?`${n}: added`:s&&!i?`${n}: cleared`:`${n}: updated`}return`${n}: ${Ha(t?.from,e,r)} -> ${Ha(t?.to,e,r)}`}function bC(e,t){const r=e.details?.changes||{},n=Object.keys(r);if(e.action==="task-created")return"Task created";if(e.action==="task-comment-added")return"Comment added";if(e.action==="task-archived")return"Task marked done";if(e.action==="task-cancelled")return"Task cancelled";if(e.action==="task-unarchived")return"Task restored";if(e.action==="task-status-changed"&&r.status)return`Status changed: ${Ha(r.status.from,"status",t)} -> ${Ha(r.status.to,"status",t)}`;if(e.action==="task-schedule-changed")return r.scheduledDate?`Scheduled date changed: ${Ha(r.scheduledDate.from,"scheduledDate",t)} -> ${Ha(r.scheduledDate.to,"scheduledDate",t)}`:r.dueDate?`Due date changed: ${Ha(r.dueDate.from,"dueDate",t)} -> ${Ha(r.dueDate.to,"dueDate",t)}`:"Schedule updated";if(e.action==="task-relationship-changed"&&r.workstreamId)return`Workstream changed: ${Ha(r.workstreamId.from,"workstreamId",t)} -> ${Ha(r.workstreamId.to,"workstreamId",t)}`;if(e.action==="task-relationship-changed"&&r.initiativeId)return`Initiative changed: ${Ha(r.initiativeId.from,"initiativeId",t)} -> ${Ha(r.initiativeId.to,"initiativeId",t)}`;if(e.action==="task-attachments-changed")return r.attachments?Pg("attachments",r.attachments,t):"Attachments updated";if(n.length===1){const s=n[0],i=r[s];return Pg(s,i,t)}return n.length>1?`${n.length} fields updated`:"Task updated"}function zre(e,t){if(e.taskId||e.entityType==="task")return bC(e,t);const r=e.details?.changes||{},n=Object.keys(r),s=e.entityType==="initiative"?"Initiative":"Workstream",i=typeof e.details?.taskTitle=="string"&&e.details.taskTitle.trim().length>0?e.details.taskTitle.trim():null;return e.action==="initiative-created"?"Initiative created":e.action==="initiative-archived"?"Initiative archived":e.action==="initiative-unarchived"?"Initiative restored":e.action==="workstream-created"?"Workstream created":e.action==="workstream-archived"?"Workstream archived":e.action==="workstream-unarchived"?"Workstream restored":e.action==="workstream-task-added"?i?`Task added: ${i}`:"Task added":e.action==="workstream-task-removed"?i?`Task removed: ${i}`:"Task removed":e.action==="workstream-relationship-changed"&&r.initiativeId?`Initiative changed: ${Ha(r.initiativeId.from,"initiativeId",t)} -> ${Ha(r.initiativeId.to,"initiativeId",t)}`:(e.action==="initiative-attachments-changed"||e.action==="workstream-attachments-changed")&&r.attachments?Pg("attachments",r.attachments,t):n.length===1?Pg(n[0],r[n[0]],t):n.length>1?`${n.length} fields updated`:e.action==="initiative-updated"||e.action==="workstream-updated"?`${s} updated`:`${s} activity updated`}function jg(e){const t=Date.parse(String(e.timestamp||""));return Number.isFinite(t)?t:null}function Wx(e){const t=e.details?.changes||{},r=Object.keys(t);if(e.action==="task-status-changed"&&t.status)return"status";if(e.action==="task-schedule-changed"){if(t.scheduledDate)return"scheduledDate";if(t.dueDate)return"dueDate"}if(e.action==="task-relationship-changed"){if(t.workstreamId)return"workstreamId";if(t.initiativeId)return"initiativeId"}return e.action==="task-attachments-changed"&&t.attachments?"attachments":r.length===1?r[0]:null}function Hre(e){if(e.taskId||e.entityType==="task")return Wx(e);const t=e.details?.changes||{},r=Object.keys(t);return(e.action==="workstream-task-added"||e.action==="workstream-task-removed")&&e.details?.taskId?"taskId":e.action==="workstream-relationship-changed"&&t.initiativeId?"initiativeId":(e.action==="initiative-attachments-changed"||e.action==="workstream-attachments-changed")&&t.attachments?"attachments":r.length===1?r[0]:null}function SC(e){const t=new Map,r=new Set,n=s=>{if(s.type==="event"&&s.event.action==="task-comment-added"||s.type==="event"&&s.event.action==="task-updated"&&s.event.details?.saveSource==="autosave"&&Object.keys(s.event.details?.changes||{}).length===0)return;const i=s.type==="comment"?`comment:${String(s.comment.id||s.id).replace(/^comment:/,"")}`:`event:${String(s.event.id||s.id).replace(/^event:/,"")}`;t.set(i,{...s,id:i}),s.type==="comment"&&r.add(String(s.comment.id||s.id).replace(/^comment:/,""))};return Array.isArray(e.activity)&&e.activity.forEach(n),Array.isArray(e.comments)&&e.comments.forEach(s=>{const i=String(s.id||"").trim();!i||r.has(i)||n({id:`comment:${i}`,type:"comment",timestamp:s.timestamp,comment:s})}),[...t.values()].sort((s,i)=>{const l=jg(s),c=jg(i);return l!==null&&c!==null&&l!==c?l-c:l!==null&&c===null?-1:l===null&&c!==null?1:String(s.id||"").localeCompare(String(i.id||""))})}function ww(e){return SC(e)}function AC(e){const t=ww(e);return t.length===0?null:[...t].sort((r,n)=>{const s=jg(r),i=jg(n);return s!==null&&i!==null&&s!==i?i-s:s!==null&&i===null?-1:s===null&&i!==null?1:String(n.id||"").localeCompare(String(r.id||""))})[0]||null}function $x(e,t){return e?e.type==="comment"?e.comment.text:bC(e.event,t):""}hC();const Fx={low:1,medium:2,high:3,critical:4,"on-hold":1};function Ux(e){const t=String(e||"").trim().toLowerCase();return t==="blocked"||t==="on hold"||t==="on-hold"?"on-hold":t==="task"||t==="on-hold"||t==="in-progress"||t==="review"||t==="done"||t==="cancelled"?t:"task"}function Eg(e){if(typeof e=="number"&&Number.isFinite(e))return Math.max(1,Math.round(e));const t=Number(e);return Number.isFinite(t)?Math.max(1,Math.round(t)):Fx[String(e||"").trim().toLowerCase()]??2}function Qs(e){const t=typeof e.referenceNumber=="number"?e.referenceNumber:Number.isFinite(Number(e.referenceNumber))?Number(e.referenceNumber):null,r=typeof e.localReferenceNumber=="number"?e.localReferenceNumber:Number.isFinite(Number(e.localReferenceNumber))?Number(e.localReferenceNumber):null;return{...e,referenceNumber:t&&t>0?Math.floor(t):null,localReferenceNumber:r&&r>0?Math.floor(r):null,referenceLabel:typeof e.referenceLabel=="string"&&e.referenceLabel.trim().length>0?e.referenceLabel.trim():t?vC(t):yw(r),assignee:(()=>{const n=String(e.assignee||"").trim(),s=n.toLowerCase();return s==="agent"||s==="ai"?"agent":!n||s==="user"||s==="human"||s==="unassigned"||s==="none"||s==="null"?"unassigned":n})(),category:typeof e.category=="string"?e.category:e.category?.value||"default",type:(typeof e.type=="string"?e.type:e.type?.label||"task").toLowerCase(),priority:Eg(e.priority),complexity:typeof e.complexity=="number"?e.complexity:3,status:Ux(e.status)}}function Ub(e){const{description:t,comments:r,activity:n,taskEvents:s,attachments:i,checklistItems:l,createdByActor:c,assigneeActor:d,...m}=e,f=b=>b.reduce((w,R)=>String(R||"")>w?String(R||""):w,""),g=e.commentCount??r?.length??0,h=e.checklistCount??l?.length??0,y=e.completedChecklistCount??l?.filter(b=>b.isCompleted).length??0,k=e.attachmentCount??i?.length??0,v=e.relationshipCount??0,A=e.latestActivity??AC(e);return{...m,cardCoverAttachment:e.cardCoverAttachment??(e.cardCoverAssetId&&i?.find(b=>typeof b!="string"&&b.assetId===e.cardCoverAssetId)||null),isSummary:!0,commentCount:g,checklistCount:h,completedChecklistCount:y,attachmentCount:k,relationshipCount:v,latestActivity:A,detailRevision:e.detailRevision||JSON.stringify([String(e.updatedAt||e.createdAt||""),g,f(r?.map(b=>b.timestamp)||[]),h,y,f(l?.map(b=>b.updatedAt||b.createdAt)||[]),k,f(i?.map(b=>typeof b=="string"?"":b.timestamp)||[]),v,A?.timestamp||"",A?.id||""])}}function tp(e){return JSON.stringify(e)}function zb(e,t){if(e.length===0)return t.length===0?e:t;const r=new Map(e.map(i=>[i.id,i]));let n=e.length!==t.length;const s=t.map((i,l)=>{const c=r.get(i.id),d=c&&tp(c)===tp(i)?c:i;return d!==e[l]&&(n=!0),d});return n?s:e}function zx(e,t,r){if(!e||typeof e!="object")return{tasks:t,archivedTasks:r};const n=Qs(e),s=String(n.id||"").trim();if(!s)return{tasks:t,archivedTasks:r};const i=!!n.isArchived,l=i?{...n,isArchived:!0}:{...n,isArchived:!1},c=(i?r:t).find(h=>h.id===s),d=(i?t:r).some(h=>h.id===s);if(c&&!d&&tp(c)===tp(l))return{tasks:t,archivedTasks:r};const m=h=>[...h].sort((y,k)=>{const v=Date.parse(String(y.updatedAt||y.createdAt||"")),A=Date.parse(String(k.updatedAt||k.createdAt||""));if(Number.isFinite(v)&&Number.isFinite(A)&&v!==A)return A-v;if(Number.isFinite(v)!==Number.isFinite(A))return Number.isFinite(A)?1:-1;const b=Date.parse(String(k.createdAt||""))-Date.parse(String(y.createdAt||""));return Number.isFinite(b)&&b!==0?b:String(y.id).localeCompare(String(k.id))}),f=t.some(h=>h.id===s)?t.filter(h=>h.id!==s):t,g=r.some(h=>h.id===s)?r.filter(h=>h.id!==s):r;return i?{tasks:f,archivedTasks:m([...g,l])}:{tasks:m([...f,l]),archivedTasks:g}}function Hx(e,t){if(!t.length||!e.length)return[];const r=new Set(t.map(s=>Number(s.value))),n=Array.from(new Set(e.map(s=>Number(s)).filter(s=>Number.isFinite(s)&&r.has(s))));return n.length>0?n:t.map(s=>Number(s.value))}function jk(e,t){return t.some(r=>String(r)===String(e))}function Vx(e,t){if(!e.length||!t.length)return e;const r=new Set(t.map(s=>s.value)),n=Array.from(new Set(e.filter(s=>r.has(s))));return n.length>0?n:t.map(s=>s.value)}const Gx={taskForm:{commentsSectionTitle:"Activity & Comments",noComments:"No comments yet. Start the conversation!",noActivity:"No activity yet.",you:"You",commentPlaceholder:"Type a comment...",newActivity:"New activity",newActivityAriaLabel:"New activity. Scroll to latest.",scheduledLabel:"Scheduled:",dueLabel:"Due:",createdLabel:"Created:",updatedLabel:"Updated:",completedLabel:"Completed:",emptyValue:"—",dueBeforeScheduled:"Due date is before scheduled date.",overdue:"This task is overdue."},schedule:{},taskList:{searchPlaceholder:"Search tasks...",clearSearchTitle:"Clear search",categoryLabel:"Category",typeLabel:"Type",priorityLabel:"Priority",statusLabel:"Status",assigneeLabel:"Assignee",sortByLabel:"Sort By:",sortCreated:"Created",sortUpdated:"Updated",sortPriority:"Priority",sortDirectionDescTitle:"Sort: Last First",sortDirectionAscTitle:"Sort: First First",resetFiltersTitle:"Reset all filters",archiveAllTitle:"Archive all completed and cancelled tasks",noTasksToArchiveTitle:"No tasks to archive",archiveFinished:"Archive Finished",linksLabel:"Links",linksAll:"All",linksParents:"Parents",linksLinked:"Linked",linksUnlinked:"Unlinked",includeArchive:"Archived",noMatchingTasks:"No matching tasks",noActiveTasks:"No active tasks",addTaskToCategoryTitle:"Add task to {category}"},actionHeader:{saveChangesTitle:"Save Changes",update:"Update",copyTaskIdTitle:"Click to copy Task ID",startWorking:"Start Working",stopWorking:"Stop Working",unlockAndContinue:"Unlock & Continue Work",readyForReview:"Ready for Review",markComplete:"Mark Complete",unmarkComplete:"Unmark Complete",cancelTask:"Cancel Task",unmarkCancelled:"Unmark Cancelled",archiveNow:"Archive Now",completeTaskToArchive:"Complete task to archive",clearFormTitle:"Clear Form",clear:"Clear",addTaskTitle:"Add Task",addTask:"Add Task"},standalone:{searchPlaceholder:"Search tasks...",clearSearchTitle:"Clear search",sortLabel:"Sort:",sortCreated:"Created",sortUpdated:"Updated",sortPriority:"Priority",sortComplexity:"Complexity",sortDirectionDescTitle:"Sort: Last First",sortDirectionAscTitle:"Sort: First First",groupLabel:"Group:",groupCategory:"Category",groupType:"Type",groupPriority:"Priority",groupComplexity:"Complexity",groupAssignee:"Assignee",groupStatus:"Status",groupHierarchy:"Hierarchy",groupSchedule:"Schedule",showEmptyColumns:"Show Empty Columns",compressEmptyColumns:"Compress Empty Columns",hideEmptyColumns:"Hide Empty Columns",expandCards:"Expand Cards",compressCards:"Compress Cards",exitZenMode:"Exit Zen Mode",enterZenMode:"Enter Zen Mode",toggleFilters:"Toggle Filters",addTask:"Add Task",helpTutorial:"Help & Support",settings:"Settings",filtersCaps:"FILTERS:",categoryLabel:"Category",typeLabel:"Type",priorityLabel:"Priority",statusLabel:"Status",assigneeLabel:"Assignee",linksLabel:"Links:",chooseLinksTitle:"Choose which linked tasks are shown",linksAll:"All",linksParents:"Parents",linksLinked:"Linked",linksUnlinked:"Unlinked",includeArchiveTitle:"Include archived tasks",includeArchive:"Archived",clearFilters:"Clear Filters",noTasksMatchFilters:"No tasks match current filters.",showingWithLinksHint:"Showing: {parentFilterLabel}. Switch Links to All or clear filters.",visibleActiveTasksTitle:"Visible active tasks / total active tasks",totalActiveTasksTitle:"Total active tasks"},setup:{headingCheckFailed:"Setup Check Failed",headingGlobalRequired:"Global Setup Required",headingWorkspaceRequired:"Configure your new workspace.",subtitleUnreadable:"Taskforce could not read setup state. Retry to continue.",subtitleGlobalRequired:"Choose your default operating mode to continue.",subtitleWorkspaceRequired:"",runtimeLabel:"Runtime",workspaceTermProject:"Project",workspaceTermMission:"Mission",coreModeOption:"Core Mode: {workspaceLabel} planning defaults",operationsModeOption:"Operations Mode: Mission-first terminology and flows",workspaceNamePlaceholder:"{workspaceLabel} name",workspaceDescriptionPlaceholder:"{workspaceLabel} description (optional)",saving:"Saving...",saveGlobalSetup:"Save Global Setup",saveWorkspaceSetup:"Save {workspaceLabel} Setup",globalSetupSaved:"Global setup saved.",workspaceSetupSaved:"{workspaceLabel} setup saved.",saveFailedWithStatus:"Failed to save setup ({status})",saveFailed:"Failed to save setup.",saveWorkspaceFailed:"Failed to save workspace profile.",retrySetupCheck:"Retry Setup Check",signOut:"Sign Out"}},Kx={taskForm:{commentsSectionTitle:"Actividad y comentarios",noComments:"Aun no hay comentarios. Inicia la conversacion.",noActivity:"Aun no hay actividad.",you:"Tu",commentPlaceholder:"Escribe un comentario...",newActivity:"Nueva actividad",newActivityAriaLabel:"Nueva actividad. Ir a la mas reciente.",scheduledLabel:"Programado:",dueLabel:"Vence:",createdLabel:"Creado:",updatedLabel:"Actualizado:",completedLabel:"Completado:",emptyValue:"—",dueBeforeScheduled:"La fecha de vencimiento es anterior a la fecha programada.",overdue:"Esta tarea esta vencida."},schedule:{},taskList:{searchPlaceholder:"Buscar tareas...",clearSearchTitle:"Limpiar busqueda",categoryLabel:"Categoria",typeLabel:"Tipo",priorityLabel:"Prioridad",statusLabel:"Estado",assigneeLabel:"Asignado a",sortByLabel:"Ordenar por:",sortCreated:"Creado",sortUpdated:"Actualizado",sortPriority:"Prioridad",sortDirectionDescTitle:"Orden: mas reciente primero",sortDirectionAscTitle:"Orden: mas antiguo primero",resetFiltersTitle:"Restablecer todos los filtros",archiveAllTitle:"Archivar todas las tareas completadas y canceladas",noTasksToArchiveTitle:"No hay tareas para archivar",archiveFinished:"Archivar finalizadas",linksLabel:"Vinculos",linksAll:"Todas",linksParents:"Padres",linksLinked:"Vinculadas",linksUnlinked:"Sin vinculo",includeArchive:"Incluir archivo",noMatchingTasks:"No hay tareas coincidentes",noActiveTasks:"No hay tareas activas",addTaskToCategoryTitle:"Agregar tarea a {category}"},actionHeader:{saveChangesTitle:"Guardar cambios",update:"Actualizar",copyTaskIdTitle:"Haz clic para copiar el ID de la tarea",startWorking:"Comenzar trabajo",stopWorking:"Detener trabajo",unlockAndContinue:"Desbloquear y continuar",readyForReview:"Lista para revision",markComplete:"Marcar como completada",unmarkComplete:"Quitar completada",cancelTask:"Cancelar tarea",unmarkCancelled:"Quitar cancelada",archiveNow:"Archivar ahora",completeTaskToArchive:"Completa la tarea para archivar",clearFormTitle:"Limpiar formulario",clear:"Limpiar",addTaskTitle:"Agregar tarea",addTask:"Agregar tarea"},standalone:{searchPlaceholder:"Buscar tareas...",clearSearchTitle:"Limpiar busqueda",sortLabel:"Orden:",sortCreated:"Creado",sortUpdated:"Actualizado",sortPriority:"Prioridad",sortComplexity:"Complejidad",sortDirectionDescTitle:"Orden: mas reciente primero",sortDirectionAscTitle:"Orden: mas antiguo primero",groupLabel:"Agrupar:",groupCategory:"Categoria",groupType:"Tipo",groupPriority:"Prioridad",groupComplexity:"Complejidad",groupAssignee:"Asignado a",groupStatus:"Estado",groupHierarchy:"Jerarquia",groupSchedule:"Calendario",showEmptyColumns:"Mostrar columnas vacias",compressEmptyColumns:"Comprimir columnas vacias",hideEmptyColumns:"Ocultar columnas vacias",expandCards:"Expandir tarjetas",compressCards:"Comprimir tarjetas",exitZenMode:"Salir del modo zen",enterZenMode:"Entrar en modo zen",toggleFilters:"Alternar filtros",addTask:"Agregar tarea",helpTutorial:"Ayuda y soporte",settings:"Configuracion",filtersCaps:"FILTROS:",categoryLabel:"Categoria",typeLabel:"Tipo",priorityLabel:"Prioridad",statusLabel:"Estado",assigneeLabel:"Asignado a",linksLabel:"Vinculos:",chooseLinksTitle:"Elige que tareas vinculadas se muestran",linksAll:"Todas",linksParents:"Padres",linksLinked:"Vinculadas",linksUnlinked:"Sin vinculo",includeArchiveTitle:"Incluir tareas archivadas",includeArchive:"Incluir archivo",clearFilters:"Limpiar filtros",noTasksMatchFilters:"Ninguna tarea coincide con los filtros actuales.",showingWithLinksHint:"Mostrando: {parentFilterLabel}. Cambia Vinculos a Todas o limpia filtros.",visibleActiveTasksTitle:"Tareas activas visibles / total de tareas activas",totalActiveTasksTitle:"Total de tareas activas"},setup:{headingCheckFailed:"Fallo en verificacion de configuracion",headingGlobalRequired:"Configuracion global requerida",headingWorkspaceRequired:"Configuracion del espacio requerida",subtitleUnreadable:"Taskforce no pudo leer el estado de configuracion. Reintenta para continuar.",subtitleGlobalRequired:"Elige tu modo operativo predeterminado para continuar.",subtitleWorkspaceRequired:"Configura el perfil de tu espacio para continuar.",runtimeLabel:"Entorno",workspaceTermProject:"Proyecto",workspaceTermMission:"Mision",coreModeOption:"Modo Core: valores predeterminados de planificacion para {workspaceLabel}",operationsModeOption:"Modo Operaciones: terminologia y flujos orientados a Mision",workspaceNamePlaceholder:"Nombre de {workspaceLabel}",workspaceDescriptionPlaceholder:"Descripcion de {workspaceLabel} (opcional)",saving:"Guardando...",saveGlobalSetup:"Guardar configuracion global",saveWorkspaceSetup:"Guardar configuracion de {workspaceLabel}",globalSetupSaved:"Configuracion global guardada.",workspaceSetupSaved:"Configuracion de {workspaceLabel} guardada.",saveFailedWithStatus:"Error al guardar la configuracion ({status})",saveFailed:"Error al guardar la configuracion.",saveWorkspaceFailed:"Error al guardar el perfil del espacio.",retrySetupCheck:"Reintentar verificacion",signOut:"Cerrar sesion"}},qx={taskForm:{commentsSectionTitle:"Atividade e comentarios",noComments:"Ainda nao ha comentarios. Inicie a conversa.",noActivity:"Ainda nao ha atividade.",you:"Voce",commentPlaceholder:"Digite um comentario...",newActivity:"Nova atividade",newActivityAriaLabel:"Nova atividade. Ir para a mais recente.",scheduledLabel:"Agendado:",dueLabel:"Vencimento:",createdLabel:"Criado:",updatedLabel:"Atualizado:",completedLabel:"Concluido:",emptyValue:"—",dueBeforeScheduled:"A data de vencimento e anterior a data agendada.",overdue:"Esta tarefa esta atrasada."},schedule:{},taskList:{searchPlaceholder:"Buscar tarefas...",clearSearchTitle:"Limpar busca",categoryLabel:"Categoria",typeLabel:"Tipo",priorityLabel:"Prioridade",statusLabel:"Status",assigneeLabel:"Atribuido para",sortByLabel:"Ordenar por:",sortCreated:"Criado",sortUpdated:"Atualizado",sortPriority:"Prioridade",sortDirectionDescTitle:"Ordem: mais recente primeiro",sortDirectionAscTitle:"Ordem: mais antigo primeiro",resetFiltersTitle:"Redefinir todos os filtros",archiveAllTitle:"Arquivar todas as tarefas concluidas e canceladas",noTasksToArchiveTitle:"Nao ha tarefas para arquivar",archiveFinished:"Arquivar finalizadas",linksLabel:"Vinculos",linksAll:"Todas",linksParents:"Pais",linksLinked:"Vinculadas",linksUnlinked:"Sem vinculo",includeArchive:"Incluir arquivo",noMatchingTasks:"Nenhuma tarefa correspondente",noActiveTasks:"Nenhuma tarefa ativa",addTaskToCategoryTitle:"Adicionar tarefa a {category}"},actionHeader:{saveChangesTitle:"Salvar alteracoes",update:"Atualizar",copyTaskIdTitle:"Clique para copiar o ID da tarefa",startWorking:"Iniciar trabalho",stopWorking:"Parar trabalho",unlockAndContinue:"Desbloquear e continuar",readyForReview:"Pronto para revisao",markComplete:"Marcar como concluida",unmarkComplete:"Desmarcar concluida",cancelTask:"Cancelar tarefa",unmarkCancelled:"Desmarcar cancelada",archiveNow:"Arquivar agora",completeTaskToArchive:"Conclua a tarefa para arquivar",clearFormTitle:"Limpar formulario",clear:"Limpar",addTaskTitle:"Adicionar tarefa",addTask:"Adicionar tarefa"},standalone:{searchPlaceholder:"Buscar tarefas...",clearSearchTitle:"Limpar busca",sortLabel:"Ordenar:",sortCreated:"Criado",sortUpdated:"Atualizado",sortPriority:"Prioridade",sortComplexity:"Complexidade",sortDirectionDescTitle:"Ordem: mais recente primeiro",sortDirectionAscTitle:"Ordem: mais antigo primeiro",groupLabel:"Agrupar:",groupCategory:"Categoria",groupType:"Tipo",groupPriority:"Prioridade",groupComplexity:"Complexidade",groupAssignee:"Atribuido para",groupStatus:"Status",groupHierarchy:"Hierarquia",groupSchedule:"Agenda",showEmptyColumns:"Mostrar colunas vazias",compressEmptyColumns:"Comprimir colunas vazias",hideEmptyColumns:"Ocultar colunas vazias",expandCards:"Expandir cards",compressCards:"Comprimir cards",exitZenMode:"Sair do modo zen",enterZenMode:"Entrar no modo zen",toggleFilters:"Alternar filtros",addTask:"Adicionar tarefa",helpTutorial:"Ajuda e suporte",settings:"Configuracoes",filtersCaps:"FILTROS:",categoryLabel:"Categoria",typeLabel:"Tipo",priorityLabel:"Prioridade",statusLabel:"Status",assigneeLabel:"Atribuido para",linksLabel:"Vinculos:",chooseLinksTitle:"Escolha quais tarefas vinculadas sao exibidas",linksAll:"Todas",linksParents:"Pais",linksLinked:"Vinculadas",linksUnlinked:"Sem vinculo",includeArchiveTitle:"Incluir tarefas arquivadas",includeArchive:"Incluir arquivo",clearFilters:"Limpar filtros",noTasksMatchFilters:"Nenhuma tarefa corresponde aos filtros atuais.",showingWithLinksHint:"Mostrando: {parentFilterLabel}. Mude Vinculos para Todas ou limpe os filtros.",visibleActiveTasksTitle:"Tarefas ativas visiveis / total de tarefas ativas",totalActiveTasksTitle:"Total de tarefas ativas"},setup:{headingCheckFailed:"Falha na verificacao da configuracao",headingGlobalRequired:"Configuracao global obrigatoria",headingWorkspaceRequired:"Configuracao do espaco obrigatoria",subtitleUnreadable:"Taskforce nao conseguiu ler o estado da configuracao. Tente novamente para continuar.",subtitleGlobalRequired:"Escolha seu modo operacional padrao para continuar.",subtitleWorkspaceRequired:"Configure o perfil do seu espaco para continuar.",runtimeLabel:"Ambiente",workspaceTermProject:"Projeto",workspaceTermMission:"Missao",coreModeOption:"Modo Core: padroes de planejamento para {workspaceLabel}",operationsModeOption:"Modo Operacoes: terminologia e fluxos orientados por Missao",workspaceNamePlaceholder:"Nome de {workspaceLabel}",workspaceDescriptionPlaceholder:"Descricao de {workspaceLabel} (opcional)",saving:"Salvando...",saveGlobalSetup:"Salvar configuracao global",saveWorkspaceSetup:"Salvar configuracao de {workspaceLabel}",globalSetupSaved:"Configuracao global salva.",workspaceSetupSaved:"Configuracao de {workspaceLabel} salva.",saveFailedWithStatus:"Falha ao salvar configuracao ({status})",saveFailed:"Falha ao salvar configuracao.",saveWorkspaceFailed:"Falha ao salvar perfil do espaco.",retrySetupCheck:"Tentar verificacao novamente",signOut:"Sair"}},CC=["en-US","es-419","pt-BR"],Ng="en-US",Ek={"en-US":Gx,"es-419":Kx,"pt-BR":qx},IC={en:"en-US",es:"es-419",pt:"pt-BR"};let jd=Ng;function Yx(e){return e.split(".").filter(Boolean)}function Nk(e,t){let r=e;for(const n of t){if(!r||typeof r!="object")return;r=r[n]}return typeof r=="string"?r:void 0}function _C(e){if(!e)return Ng;const t=CC.find(n=>n.toLowerCase()===e.toLowerCase());if(t)return t;const r=e.split("-")[0]?.toLowerCase()||"";return IC[r]||Ng}function Dk(e,t){return t?e.replace(/\{([^}]+)\}/g,(r,n)=>{const s=t[n];return s==null?"":String(s)}):e}function TC(){return jd}function Zx(){return[...CC]}function xC(e){const t=_C(e);return jd=t,t}function Jx(e){const t=typeof navigator<"u"?navigator.language:null;return jd=_C(t),jd}function jt(e,t){const r=Yx(e),n=Nk(Ek[jd],r);if(n)return Dk(n,t);const s=jd.split("-")[0]?.toLowerCase()||"",i=IC[s];if(i&&i!==jd){const c=Nk(Ek[i],r);if(c)return Dk(c,t)}const l=Nk(Ek[Ng],r);return l?Dk(l,t):e}const Xx="default",Bd="bootstrap";function Qx(e){let t=2166136261;for(let r=0;r<e.length;r+=1)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function iy(e){const t=String(e||"").trim().toLowerCase();return t?`${(t.replace(/[^a-z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")||"project").slice(0,56)}-${Qx(t)}`:Bd}function bw(e){const t=String(e||"").trim().toLowerCase();if(!t)return Bd;const r=t.replace(/[^a-z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"");return r?r.slice(0,96):Bd}function RC(e){const t=String(e||"").trim();return t?iy(t):Bd}function eR(e){return(e.runtimeMode==="cloud"?"cloud":"local")==="cloud"?Bd:RC(e.projectRoot)}function tR(e){if((e.runtimeMode==="cloud"?"cloud":"local")==="cloud"){const r=String(e.workspaceId||"").trim();return r&&!Sw(r)?iy(`cloud-workspace:${r}`):Bd}return RC(e.projectRoot)}function Sw(e){return String(e||"").trim().toLowerCase()===Xx}const rR={local:{runtimeMode:"local",authSource:"cloud",workspaceMode:"single-local",workspaceSwitchingEnabled:!1},cloud:{runtimeMode:"cloud",authSource:"cloud",workspaceMode:"multi-cloud",workspaceSwitchingEnabled:!0}};function nR(e){return String(e||"").trim().toLowerCase()==="cloud"?"cloud":"local"}function aR(e){return rR[nR(e)]}const rp={production:{appBaseUrl:"https://app.taskforcehq.ai",mcpBaseUrl:"https://mcp.taskforcehq.ai",label:"Production",themeToken:"production"},staging:{appBaseUrl:"https://staging-app.taskforcehq.ai",mcpBaseUrl:"https://staging-mcp.taskforcehq.ai",label:"Staging",themeToken:"staging"},performance:{appBaseUrl:"https://performance-app.taskforcehq.ai",mcpBaseUrl:"https://performance-mcp.taskforcehq.ai",label:"Performance",themeToken:"performance"}};function pp(e){const t=String(e||"").trim().toLowerCase();return t==="production"||t==="staging"||t==="performance"?t:null}function sR(e){return pp(e)||"production"}function Hb(e){return rp[sR(String(e||""))]}function oR(e){const t=String(e||"").trim().toLowerCase();if(!t)return null;for(const[r,n]of Object.entries(rp))if(new URL(n.appBaseUrl).hostname.toLowerCase()===t||new URL(n.mcpBaseUrl).hostname.toLowerCase()===t)return r;return null}function Aw(e){const t=String(e||"").trim();if(!t)return null;try{return oR(new URL(t).hostname)}catch{return null}}function iR(e){const t=Aw(e);return t?rp[t].mcpBaseUrl:null}function pd(e,t){return String(e[t]||"").trim()}function Vb(e,t,r){e.push(t),r?.(t)}function cR(e,t){const r=[],n=pd(e,"ENV"),s=pp(n);if(s)return Vb(r,`[Taskforce compat] ENV=${n} is deprecated; set TASKFORCE_CLOUD_ENVIRONMENT=${s} instead.`,t),{cloudEnvironment:s,warnings:r};const i=[{key:"TASKFORCE_CLOUD_PROXY_BASE_URL",value:pd(e,"TASKFORCE_CLOUD_PROXY_BASE_URL")},{key:"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL",value:pd(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")},{key:"VITE_TASKFORCE_CLOUD_MCP_BASE_URL",value:pd(e,"VITE_TASKFORCE_CLOUD_MCP_BASE_URL")},{key:"VITE_TASKFORCE_API_BASE_URL",value:pd(e,"VITE_TASKFORCE_API_BASE_URL")},{key:"VITE_TASKFORCE_BASE_URL",value:pd(e,"VITE_TASKFORCE_BASE_URL")},{key:"TASKFORCE_BASE_URL",value:pd(e,"TASKFORCE_BASE_URL")}];for(const l of i){if(!l.value)continue;const c=Aw(l.value);if(c)return Vb(r,`[Taskforce compat] ${l.key} is being used to infer TASKFORCE_CLOUD_ENVIRONMENT=${c}. Set TASKFORCE_CLOUD_ENVIRONMENT explicitly.`,t),{cloudEnvironment:c,warnings:r}}return{cloudEnvironment:null,warnings:r}}function ac(e,t){return String(e[t]||"").trim()}function lR(e){return e.toLowerCase()==="cloud"?"cloud":"local"}function $u(e){return String(e||"").trim().replace(/\/+$/,"")}function dR(e){return String(e||"").trim().replace(/\/+$/,"")}function Gc(...e){for(const t of e)if(String(t||"").trim())return String(t||"").trim();return""}function uR(e,t={}){const r=[],n=S=>{r.push(S),t.onWarning?.(S)},s=lR(ac(e,"TASKFORCE_RUNTIME_MODE")),i=pp(ac(e,"TASKFORCE_CLOUD_ENVIRONMENT")),l=i?{cloudEnvironment:i}:cR(e,n),c=i||l.cloudEnvironment,d=$u(String(t.requestBaseUrl||"")),m=$u(Gc(ac(e,"VITE_TASKFORCE_BASE_URL"),ac(e,"TASKFORCE_BASE_URL"))),f=$u(ac(e,"VITE_TASKFORCE_API_BASE_URL")),g=$u(ac(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")),h=$u(Gc(ac(e,"VITE_TASKFORCE_CLOUD_MCP_BASE_URL"),ac(e,"TASKFORCE_CLOUD_MCP_BASE_URL"))),y=$u(ac(e,"TASKFORCE_CLOUD_PROXY_BASE_URL")),k=dR(ac(e,"VITE_TASKFORCE_WS_BASE_URL")),v=c?rp[c].appBaseUrl:"",A=c?rp[c].mcpBaseUrl:"",b=Gc(y,g,f,m,v),w=Gc(h,A,b),R=Gc(d,m,f,g,b),N=Gc(d,f,m,b),j=Gc(g,m,f,b),E=s==="local"?Gc(k,d,f,m,y,g,v,b):Gc(d,k,N,R,b);return{runtimeMode:s,cloudEnvironment:c,cloudBaseUrl:b,cloudMcpBaseUrl:w,baseUrl:R,apiBaseUrl:N,cloudAuthBaseUrl:j,wsBaseUrl:E,cloudAuthViaLocalProxy:s==="local"||!!y,warnings:r}}function Cw(e){return uR({TASKFORCE_CLOUD_ENVIRONMENT:"",VITE_TASKFORCE_BASE_URL:e.VITE_TASKFORCE_BASE_URL,VITE_TASKFORCE_API_BASE_URL:e.VITE_TASKFORCE_API_BASE_URL,VITE_TASKFORCE_CLOUD_AUTH_BASE_URL:e.VITE_TASKFORCE_CLOUD_AUTH_BASE_URL,VITE_TASKFORCE_CLOUD_MCP_BASE_URL:e.VITE_TASKFORCE_CLOUD_MCP_BASE_URL,VITE_TASKFORCE_WS_BASE_URL:e.VITE_TASKFORCE_WS_BASE_URL})}function gv(e){if(e===null||typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number"){if(!Number.isFinite(e))throw new Error("Canonical JSON cannot contain non-finite numbers.");return e}if(Array.isArray(e))return e.map(gv);if(typeof e=="object"){const t={};for(const r of Object.keys(e).sort()){const n=e[r];n!==void 0&&(t[r]=gv(n))}return t}throw new Error(`Canonical JSON cannot contain ${typeof e}.`)}function hn(e){return JSON.stringify(gv(e))}const fR=["title","description","category","type","priority","complexity","status","assignee","scheduledDate","dueDate","workstreamId"];function Mk(e){return{title:e.title||"",description:e.description||"",category:e.category||"",type:e.type||"",priority:e.priority,complexity:Number(e.complexity)||3,status:e.status||"task",assignee:e.assignee||"unassigned",scheduledDate:e.scheduledDate||"",dueDate:e.dueDate||"",workstreamId:e.workstreamId||"",taxonomies:{...e.taxonomies||{}},checklistItems:[...e.checklistItems||[]],attachments:[...e.attachments||[]]}}function Lk(e,t){return{...e,title:t.title,description:t.description||null,category:t.category,type:t.type,priority:t.priority,complexity:t.complexity,status:t.status,assignee:t.assignee,scheduledDate:t.scheduledDate||null,dueDate:t.dueDate||null,workstreamId:t.workstreamId||null,taxonomies:t.taxonomies,checklistItems:t.checklistItems,attachments:t.attachments}}function xl(e,t){return hn(e??null)===hn(t??null)}function yv(e,t,r){const n=!xl(t,e),s=!xl(r,e);return n?!s||xl(t,r)?{value:t,conflict:!1,remoteChanged:s}:{value:t,conflict:!0,remoteChanged:s}:{value:r,conflict:!1,remoteChanged:s}}function Dg(e){return typeof e=="string"?`path:${e}`:e.assetId?`asset:${e.assetId}`:e.referenceLabel?`reference:${e.referenceLabel}`:e.referenceNumber!=null?`number:${e.referenceNumber}`:`path:${e.path||e.fsPath||hn(e)}`}function Gb(e,t,r,n){const s=new Map(e.map(g=>[n(g),g])),i=new Map(t.map(g=>[n(g),g])),l=new Map(r.map(g=>[n(g),g])),c=new Set([...s.keys(),...l.keys(),...i.keys()]),d=new Map,m=[];for(const g of c){const h=s.get(g),y=i.get(g),k=l.get(g),v=yv(h,y,k);v.value!==void 0&&d.set(g,v.value),v.conflict&&m.push(g)}return{items:[...r.map(n),...t.map(n).filter(g=>!l.has(g))].filter((g,h,y)=>y.indexOf(g)===h&&d.has(g)).map(g=>d.get(g)),conflictKeys:m,remoteChanged:!xl(e,r)}}function mR(e,t,r){const n={...r},s=[],i=new Set;for(const f of fR){const g=yv(e[f],t[f],r[f]);n[f]=g.value,g.conflict&&s.push({field:f}),g.remoteChanged&&i.add(f)}const l=new Set([...Object.keys(e.taxonomies),...Object.keys(t.taxonomies),...Object.keys(r.taxonomies)]),c={};for(const f of l){const g=yv(e.taxonomies[f],t.taxonomies[f],r.taxonomies[f]);g.value!==void 0&&(c[f]=g.value),g.conflict&&s.push({field:"taxonomies",key:f}),g.remoteChanged&&i.add(`taxonomies.${f}`)}n.taxonomies=c;const d=Gb(e.checklistItems,t.checklistItems,r.checklistItems,f=>f.id);n.checklistItems=d.items,d.conflictKeys.forEach(f=>s.push({field:"checklistItems",key:f})),d.remoteChanged&&i.add("checklistItems");const m=Gb(e.attachments,t.attachments,r.attachments,Dg);return n.attachments=m.items,m.conflictKeys.forEach(f=>s.push({field:"attachments",key:f})),m.remoteChanged&&i.add("attachments"),{merged:n,conflicts:s,remoteChangedFields:[...i]}}function pR(e,t,r,n=e.merged){if(r==="local")return n;const s={...n,taxonomies:{...n.taxonomies},checklistItems:[...n.checklistItems],attachments:[...n.attachments]};for(const i of e.conflicts){if(i.field==="taxonomies"){const l=t.taxonomies[i.key];l===void 0?delete s.taxonomies[i.key]:s.taxonomies[i.key]=l;continue}if(i.field==="checklistItems"||i.field==="attachments"){const l=i.field==="checklistItems"?g=>g.id:g=>Dg(g),c=s[i.field],m=t[i.field].find(g=>l(g)===i.key),f=c.filter(g=>l(g)!==i.key);s[i.field]=m?[...f,m]:f;continue}s[i.field]=t[i.field]}return s}function hR(e,t,r){return e.field==="taxonomies"?xl(t.taxonomies[e.key],r.taxonomies[e.key]):e.field==="checklistItems"?xl(t.checklistItems.find(n=>n.id===e.key),r.checklistItems.find(n=>n.id===e.key)):e.field==="attachments"?xl(t.attachments.find(n=>Dg(n)===e.key),r.attachments.find(n=>Dg(n)===e.key)):xl(t[e.field],r[e.field])}function gR(e){return"key"in e?`${e.field}:${e.key}`:e.field}function yR(e,t,r,n){return[...new Map([...e.filter(i=>!hR(i,r,n)),...t].map(i=>[gR(i),i])).values()]}function kR(e){const t={title:"title",description:"description",category:"category",type:"type",priority:"priority",complexity:"complexity",status:"status",assignee:"assignee",scheduledDate:"scheduled date",dueDate:"due date",workstreamId:"workstream",taxonomies:"taxonomy",checklistItems:"checklist",attachments:"attachments"};return[...new Set(e.map(r=>t[r.field]||String(r.field)))]}const vR={"annotated_attachments.workspace_access":{enabledByEnvironment:{performance:!0,staging:!0,production:!0},description:"Annotated Attachment workspace readiness gate.",owner:"taskforce",removalMilestone:"Annotated Attachment GA"},"documents.workspace_access":{enabledByEnvironment:{performance:!0,staging:!0,production:!0},description:"Document Manager/editor workspace readiness gate.",owner:"taskforce",removalMilestone:"Document Manager GA"},"workflow_manager.workspace_access":{enabledByEnvironment:{performance:!0,staging:!0,production:!1},description:"Workflow Manager workspace readiness gate.",owner:"taskforce",removalMilestone:"Workflow Manager GA"},"taskforce_agents.workspace_access":{enabledByEnvironment:{performance:!0,staging:!0,production:!1},description:"Taskforce Agents workspace readiness gate.",owner:"taskforce",removalMilestone:"Taskforce Agents workspace GA"},"ai_profiles.workspace_access":{enabledByEnvironment:{performance:!0,staging:!0,production:!0},description:"AI Profiles workspace readiness gate.",owner:"taskforce",removalMilestone:"AI Profiles workspace GA"},"planning.workspace_access":{enabledByEnvironment:{performance:!1,staging:!1,production:!1},description:"Planning workspace readiness gate.",owner:"taskforce",removalMilestone:"Planning workspace GA"}},kv="annotated_attachments.workspace_access",vv="documents.workspace_access",Kb="workflow_manager.workspace_access",zm="taskforce_agents.workspace_access",qb="ai_profiles.workspace_access",Yb="planning.workspace_access",wR=Object.fromEntries(Object.entries(vR).map(([e,t])=>[e,Object.freeze({key:e,enabledByEnvironment:Object.freeze({...t.enabledByEnvironment}),description:t.description,owner:t.owner,removalMilestone:t.removalMilestone})])),PC=Object.freeze(wR);function jC(){return Object.values(PC)}function bR(e){const t=String(e||"").trim();return t&&PC[t]||null}function SR(e,t){const r=bR(e);return r?r.enabledByEnvironment[t]?{featureKey:e,allowed:!0,source:"app_gate",code:"OK"}:{featureKey:e,allowed:!1,source:"app_gate",code:"APP_GATE_DISABLED"}:{featureKey:e,allowed:!0,source:"none",code:"OK"}}function AR(e){return Object.fromEntries(jC().map(({key:t})=>[t,SR(t,e)]))}function CR(e,t){if(e&&EC(e))return e;const r=pp(String(t||""))||"production";return AR(r)}function EC(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return jC().every(({key:r})=>{const n=t[r];if(!n||typeof n!="object"||Array.isArray(n))return!1;const s=n;return s.featureKey===r&&typeof s.allowed=="boolean"&&(s.source==="app_gate"||s.source==="cloud_entitlement"||s.source==="none")&&typeof s.code=="string"})}function Zb(e){const t=String(e.workspaceId||"default").trim().replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"default",r=Number.isFinite(Number(e.epoch))?Math.max(0,Math.floor(Number(e.epoch))):0,n=String(e.seed||"session").trim().replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"session",s=String(e.phase||"bootstrap").trim().replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"bootstrap";return`tfb-${n}-${t}-e${r}-${s}`}function Ok(e,t){const r=String(t||"").trim();if(!r)return e;const n=new Headers(e?.headers||void 0);return n.has("x-taskforce-bootstrap-trace-id")||n.set("x-taskforce-bootstrap-trace-id",r),{...e||{},headers:n}}function IR(e){const t=String(e.activeWorkspaceId||"").trim();return{email:e.email,password:e.password,...t&&t!=="default"?{workspaceId:t}:{}}}const Mg="unassigned",NC="agent",hp="UserRound",cy="color-mix(in srgb, var(--text-helper) 68%, transparent)",_R="user",TR=/^[0-9a-f]{8,}$/i,Ed={value:Mg,label:"Unassigned",icon:hp,color:cy,kind:"unassigned"};function DC(e){const t=String(e||"").trim().toLowerCase();return t===NC||t==="ai"||t.startsWith("ai-profile-")}function Iw(e){const t=String(e||"").trim().toLowerCase();return!t||t===Mg||t==="none"||t==="null"||t===_R}function wv(e){return DC(e)?"agent":Iw(e)?"unassigned":"member"}function xR(e){const t=String(e.displayName||"").trim(),r=String(e.email||"").trim().toLowerCase();return t||r||String(e.userId||"").trim()||"Workspace member"}function jl(){return[{...Ed}]}function RR(e){const t=new Map;for(const r of e){const n=String(r.userId||"").trim();n&&t.set(n,{value:n,label:xR(r),icon:"User",color:"#22c55e",kind:"member",avatarUrl:typeof r.avatarUrl=="string"&&r.avatarUrl.trim().length>0?r.avatarUrl.trim():null})}return sf(Array.from(t.values()))}function sf(e){const t=new Map;for(const n of jl())t.set(n.value,n);for(const n of Array.isArray(e)?e:[]){const s=String(n?.value||"").trim(),i=typeof n?.archivedAt=="string"?n.archivedAt.trim():"";!s||i||s===Mg||s===NC||t.set(s,{value:s,label:String(n.label||s).trim()||s,icon:String(n.icon||(n.kind==="agent"?"Bot":"User")),color:String(n.color||(n.kind==="agent"?"#8b5cf6":"#22c55e")),kind:n.kind==="agent"?"agent":"member",avatarUrl:typeof n.avatarUrl=="string"&&n.avatarUrl.trim().length>0?n.avatarUrl.trim():null,avatarRevision:Number.isFinite(Number(n.avatarRevision))?Math.max(0,Math.floor(Number(n.avatarRevision))):null,avatarUpdatedAt:typeof n.avatarUpdatedAt=="string"&&n.avatarUpdatedAt.trim().length>0?n.avatarUpdatedAt.trim():null,username:typeof n.username=="string"&&n.username.trim().length>0?n.username.trim():null,surfaceType:typeof n.surfaceType=="string"&&n.surfaceType.trim().length>0?n.surfaceType.trim():null,providerMetadata:n.providerMetadata&&typeof n.providerMetadata=="object"&&!Array.isArray(n.providerMetadata)?n.providerMetadata:null,archivedAt:null,createdAt:typeof n.createdAt=="string"&&n.createdAt.trim().length>0?n.createdAt.trim():null,updatedAt:typeof n.updatedAt=="string"&&n.updatedAt.trim().length>0?n.updatedAt.trim():null})}const r=[Mg];return Array.from(t.values()).sort((n,s)=>{const i=r.indexOf(n.value),l=r.indexOf(s.value);return i>=0||l>=0?i<0?1:l<0?-1:i-l:n.label.localeCompare(s.label,void 0,{sensitivity:"base"})})}function MC(e,t){const r=String(t||"").trim();if(!r||e.some(i=>i.value===r))return e;const n=r.replace(/^ai-profile-/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ").trim(),s=n?n.split(" ").map(i=>i.charAt(0).toUpperCase()+i.slice(1)).join(" "):r;if(wv(r)==="agent"){const i=String(r).toLowerCase().startsWith("ai-profile-")&&n.split(" ").every(l=>TR.test(l));return sf([...e,{value:r,label:i?"AI":s||"AI",icon:"Bot",color:"#8b5cf6",kind:"agent"}])}return wv(r)==="member"?sf([...e,{value:r,label:s||r,icon:"User",color:"#22c55e",kind:"member"}]):e}function LC(e){const t=Array.isArray(e)?e.filter(Boolean):[];return sf(t)}function np(e,t){const r=String(e||"").trim(),s=LC(t).find(i=>i.value===r);return s?s.label:DC(r)?"AI":Iw(r)?"Unassigned":r||"Unassigned"}const bv=1,OC="taskforce.workspaceContext.v2",PR="taskforce.uiState.app.v1",jR="taskforce.bootstrapDebug.v1",Jb=5e3,Eh=new Map;function Nh(e){return Array.from(new Set(e.map(t=>String(t??"").trim()).filter(t=>t.length>0))).sort()}function of(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function Id(e){if(Array.isArray(e))return Array.from(new Set(e.filter(t=>typeof t=="string").map(t=>t.trim()).filter(Boolean)))}function Sv(e){if(Array.isArray(e))return Array.from(new Set(e.filter(t=>typeof t=="string"&&t.trim().length>0||typeof t=="number")))}function ER(e){if(!of(e))return;const t={};return Object.entries(e).forEach(([r,n])=>{const s=String(r||"").trim(),i=Sv(n);!s||!i||(t[s]=i)}),t}function NR(e){if(!of(e))return;const t={};return Object.entries(e).forEach(([r,n])=>{const s=String(r||"").trim();!s||typeof n!="boolean"||(t[s]=n)}),t}function DR(e){if(!of(e))return;const t={};return Object.entries(e).forEach(([r,n])=>{const s=String(r||"").trim();if(!s||typeof n!="string")return;const i=n.trim();i&&(t[s]=i)}),t}function MR(e){if(!of(e))return;const t=Id(e.categories),r=Id(e.types),n=Id(e.priorities);if(!t||!r||!n)return;const s={};return of(e.taxonomies)&&Object.entries(e.taxonomies).forEach(([i,l])=>{const c=String(i||"").trim(),d=Id(l);!c||!d||(s[c]=d)}),{categories:t,types:r,priorities:n,taxonomies:s}}function BC(e){if(!of(e))return null;const t={version:bv},r=["category","type","priority","assignee","status","complexity","schedule","docs"];e.groupBy==="approach"&&(t.groupBy="status"),typeof e.groupBy=="string"&&r.includes(e.groupBy)&&(t.groupBy=e.groupBy);const n=e.activeWorkspaceModule==="agents"?"aiProfiles":e.activeWorkspaceModule==="workflows"?"tasks":e.activeWorkspaceModule;typeof n=="string"&&["tasks","planning","docs","annotate","workflowManager","taskforceAgents","aiProfiles"].includes(n)&&(t.activeWorkspaceModule=n),(e.emptyColumnMode==="show"||e.emptyColumnMode==="collapse"||e.emptyColumnMode==="hide")&&(t.emptyColumnMode=e.emptyColumnMode),(e.taskScope==="open"||e.taskScope==="archived"||e.taskScope==="deleted")&&(t.taskScope=e.taskScope),typeof e.openTaskId=="string"?t.openTaskId=e.openTaskId.trim()||null:e.openTaskId===null&&(t.openTaskId=null),typeof e.compressedCards=="boolean"&&(t.compressedCards=e.compressedCards),typeof e.zenMode=="boolean"&&(t.zenMode=e.zenMode),typeof e.searchQuery=="string"&&(t.searchQuery=e.searchQuery);const i=NR(e.collapsedCategories);i&&(t.collapsedCategories=i);const l=Id(e.filterCategories);l&&(t.filterCategories=l);const c=Sv(e.filterPriorities);c&&(t.filterPriorities=c);const d=Id(e.filterTypes);d&&(t.filterTypes=d);const m=Sv(e.filterStatus);m&&(t.filterStatus=m);const f=Id(e.filterAssignees);f&&(t.filterAssignees=f),typeof e.filterAssigneesAllSelected=="boolean"&&(t.filterAssigneesAllSelected=e.filterAssigneesAllSelected);const g=ER(e.filterTaxonomies);g&&(t.filterTaxonomies=g);const h=MR(e.filterTaxonomySignature);if(h&&(t.filterTaxonomySignature=h),(e.sortBy==="created"||e.sortBy==="priority"||e.sortBy==="updated"||e.sortBy==="complexity")&&(t.sortBy=e.sortBy),(e.sortOrder==="asc"||e.sortOrder==="desc")&&(t.sortOrder=e.sortOrder),typeof e.hasInitedFilters=="boolean"&&(t.hasInitedFilters=e.hasInitedFilters),typeof e.lastCategory=="string"&&(t.lastCategory=e.lastCategory),typeof e.taskforceAgentId=="string"){const k=e.taskforceAgentId.trim();k&&(t.taskforceAgentId=k)}if(typeof e.taskforceAgentConversationId=="string"){const k=e.taskforceAgentConversationId.trim();k&&(t.taskforceAgentConversationId=k)}const y=DR(e.taskforceAgentConversationByAgentId);return y&&Object.keys(y).length>0&&(t.taskforceAgentConversationByAgentId=y),t}function LR(e){const t=Nh(e.categories.map(i=>i.value)),r=Nh(e.types.map(i=>i.value)),n=Nh(e.priorities.map(i=>i.value));if(t.length===0||r.length===0||n.length===0)return null;const s={};return(e.taxonomies||[]).forEach(i=>{const l=String(i.id??"").trim();l&&(s[l]=Nh((i.options||[]).map(c=>c.value)))}),{categories:t,types:r,priorities:n,taxonomies:s}}function vm(e,t){return e.length===t.length&&e.every((r,n)=>r===t[n])}function OR(e,t){if(!e||!t||!vm(e.categories||[],t.categories||[])||!vm(e.types||[],t.types||[])||!vm(e.priorities||[],t.priorities||[]))return!1;const r=Object.keys(e.taxonomies||{}).sort(),n=Object.keys(t.taxonomies||{}).sort();return vm(r,n)?r.every(s=>vm(e.taxonomies[s]||[],t.taxonomies[s]||[])):!1}function BR(){if(typeof window>"u")return!1;try{const e=String(window.localStorage.getItem(jR)||"").trim().toLowerCase();return e==="1"||e==="true"||e==="on"||e==="yes"}catch{return!1}}function Cr(e,t){if(!BR())return;console.info("[Taskforce Bootstrap]",e,t&&typeof t=="object"?t:{})}function WR(e,t,r,n=!1){const s=String(e).trim()||"default",i=String(t).trim()||"default",l=String(r||"default").trim()||"default";return`${n?"cloud":"same-origin"}::${i}::${s}::${l}`}async function Hm(e){const t=String(e.stateKey||"default").trim()||"default",r=String(e.workspaceId||"").trim(),n=e.patch&&typeof e.patch=="object"?e.patch:{},s=JSON.stringify(n),i=WR(t,r||"default",e.dedupeScope,e.useCloudProxy),l=Date.now(),c=Eh.get(i);if(c&&c.serializedPatch===s){if(c.status==="success"&&e.skipIfUnchanged!==!1)return Cr("ui_state_persist_skipped",{stateKey:t,workspaceId:r||"default",reason:"unchanged"}),{skipped:!0,reason:"unchanged"};if(e.respectFailureCooldown!==!1&&c.retryAfter>l)return Cr("ui_state_persist_skipped",{stateKey:t,workspaceId:r||"default",reason:"cooldown",retryAfterMs:c.retryAfter-l}),{skipped:!0,reason:"cooldown"}}try{const d=await fetch(`/api/taskforce/ui-state${e.useCloudProxy?"?taskforceCloud=1":""}`,{method:"POST",headers:{"Content-Type":"application/json",...e.headers||{}},credentials:"include",...e.keepalive?{keepalive:!0}:{},body:JSON.stringify({stateKey:t,...r?{workspaceId:r}:{},patch:n})}),m=await d.json().catch(()=>({}));if(d.ok&&m?.success!==!1)return Eh.set(i,{serializedPatch:s,status:"success",retryAfter:0}),{skipped:!1,response:d,payload:m};if(Eh.set(i,{serializedPatch:s,status:"failure",retryAfter:l+(e.failureRetryMs??Jb)}),Cr("ui_state_persist_failed",{stateKey:t,workspaceId:r||"default",status:d.status,error:String(m?.error||"")}),e.throwOnError)throw new Error(String(m?.error||`Failed to persist UI state (${d.status})`));return{skipped:!1,response:d,payload:m}}catch(d){if(Eh.set(i,{serializedPatch:s,status:"failure",retryAfter:l+(e.failureRetryMs??Jb)}),Cr("ui_state_persist_failed",{stateKey:t,workspaceId:r||"default",error:d instanceof Error?d.message:String(d)}),e.throwOnError)throw d;return{skipped:!1,payload:null}}}function _w(e){const t=iy(e);return`${OC}.${t}`}function WC(e){const t=bw(e);return`${OC}.${t}`}function Av(e){if(typeof window>"u")return"";try{const t=_w(e),r=String(window.localStorage.getItem(t)||"").trim();if(r&&r.length<=120&&!/\s/.test(r))return r;const n=WC(e),s=String(window.localStorage.getItem(n)||"").trim();return s&&s.length<=120&&!/\s/.test(s)?(window.localStorage.setItem(t,s),s):""}catch{return""}}function $R(e,t){if(typeof window>"u")return;const r=String(e||"").trim();try{if(!r||Sw(r))return;const n=_w(t),s=String(window.localStorage.getItem(n)||"").trim();if(!r&&s&&s.toLowerCase()!=="default")return;window.localStorage.setItem(n,r)}catch{}}function Xb(e){if(!(typeof window>"u"))try{window.localStorage.removeItem(_w(e)),window.localStorage.removeItem(WC(e))}catch{}}function $C(e){const t=bw(e);return`${PR}.${t}`}function Qb(e){if(typeof window>"u")return null;try{const t=window.localStorage.getItem($C(e));if(!t)return null;const r=JSON.parse(t);return BC(r)}catch{return null}}function FR(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem($C(t),JSON.stringify(e))}catch{}}const Cv="taskforce.localMutationActorUserId.v1";function FC(e){return typeof e=="string"?e.trim().replace(/\/+$/,""):""}function UR(e){const t=String(e||"").trim().toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="::1"||t==="[::1]"}function Nm(e){if(!(typeof window>"u"))try{const t=String(e||"").trim();if(!t||t==="anonymous"){window.sessionStorage.removeItem(Cv);return}window.sessionStorage.setItem(Cv,t)}catch{}}function Tw(){if(typeof window>"u")return"";try{return String(window.sessionStorage.getItem(Cv)||"").trim()}catch{return""}}function zR(e,t){if(typeof window>"u"||!e.startsWith("/api/taskforce/")||!UR(window.location.hostname))return!1;try{return new URL(t,window.location.origin).origin===window.location.origin}catch{return e.startsWith("/")}}function HR(e,t,r){if(!zR(e,t))return r;const n=Tw();if(!n)return r;const s=new Headers(r?.headers||void 0);return s.has("x-taskforce-user-id")||s.set("x-taskforce-user-id",n),{...r,headers:s}}function VR(e,t){if(!e.startsWith("/"))return e;const r=FC(t);return r?`${r}${e}`:e}async function GR(e,t,r){const n=VR(e,r),s=FC(r).length>0,i=HR(e,n,t),l=typeof performance<"u"?performance.now():Date.now();try{const c=await fetch(n,i);if(!(s&&n!==e&&e.startsWith("/api/taskforce/")&&(c.status===401||c.status===403)))return c;Cr("taskforce_api_auth_fallback_retry",{path:e,primaryUrl:n,fallbackUrl:e,status:c.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l)});try{const m=await fetch(e,i);return Cr("taskforce_api_auth_fallback_completed",{path:e,primaryUrl:n,fallbackUrl:e,primaryStatus:c.status,fallbackStatus:m.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l)}),m}catch{return Cr("taskforce_api_auth_fallback_failed",{path:e,primaryUrl:n,fallbackUrl:e,status:c.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l)}),c}}catch(c){if(!s||!e.startsWith("/"))throw c;Cr("taskforce_api_network_fallback_retry",{path:e,primaryUrl:n,fallbackUrl:e,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l),error:c instanceof Error?c.message:String(c)});const d=await fetch(e,i);return Cr("taskforce_api_network_fallback_completed",{path:e,primaryUrl:n,fallbackUrl:e,fallbackStatus:d.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-l)}),d}}const Dm=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:4,coverageDigest:"c622f33d62c9f9251559a5b3644ba617da31c1b53d4fd0927b529e76c89948d1"}),ly=Object.freeze(["task/root-v1","task-relationship/full-v1","taxonomy/full-v1","initiative/full-v1","workstream/full-v1","task-comments/full-v1","task-checklist/full-v1","task-attachment-links/full-v1","entity-event/full-v1"]),Mm=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:5,coverageDigest:"1227152d1998809427f8560f85c8ef2da8780d3ea697390fbaa48c9e85a97be2"}),KR=ly,Lm=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:6,coverageDigest:"0aa90b110c71cf37a1234617b098d055f1df1e8da389184c7b147833164e338d"}),qR=Object.freeze([...ly,"workstream-task-order/full-v1"]),Om=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:7,coverageDigest:"84b0dee7ac0811234288c1b296357b2ddbcfe82d438ccf90b6bc6e8b5afea0b6"}),UC=Object.freeze(ly.map(e=>e==="task-attachment-links/full-v1"?"task-attachment-links/full-v2":e)),Dh=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:8,coverageDigest:"344c3360d36d383241b212192fe6c2ac1a7694fe521d3b6636559043b7e58253"}),YR=UC,Ca=Object.freeze({coverageProfileId:"task-planning-metadata",coverageVersion:3,coverageDigest:"48544ecfcb72c44866cdd39d02d0ba83222bc5e236045880f7f62b979be46117"}),ZR=1,JR=Object.freeze(["task/root-v1","task-relationship/full-v1","taxonomy/full-v1","initiative/full-v1","workstream/full-v1"]);function El(e){const t=String(e.coverageProfileId||"").trim(),r=Number(e.coverageVersion),n=String(e.coverageDigest||"").trim();return t===Ca.coverageProfileId&&r===Ca.coverageVersion&&n===Ca.coverageDigest?{coverage:Ca,excludedProjections:JR,nestedWriterPrerequisitesRequired:!1,workflowWriterPrerequisitesRequired:!1,planningOrderWriterPrerequisitesRequired:!1,taskCoverProjectionRequired:!1}:t===Dm.coverageProfileId&&r===Dm.coverageVersion&&n===Dm.coverageDigest?{coverage:Dm,excludedProjections:ly,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!1,planningOrderWriterPrerequisitesRequired:!1,taskCoverProjectionRequired:!1}:t===Mm.coverageProfileId&&r===Mm.coverageVersion&&n===Mm.coverageDigest?{coverage:Mm,excludedProjections:KR,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!0,planningOrderWriterPrerequisitesRequired:!1,taskCoverProjectionRequired:!1}:t===Lm.coverageProfileId&&r===Lm.coverageVersion&&n===Lm.coverageDigest?{coverage:Lm,excludedProjections:qR,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!1,planningOrderWriterPrerequisitesRequired:!0,taskCoverProjectionRequired:!1}:t===Om.coverageProfileId&&r===Om.coverageVersion&&n===Om.coverageDigest?{coverage:Om,excludedProjections:UC,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!1,planningOrderWriterPrerequisitesRequired:!1,taskCoverProjectionRequired:!0}:t===Dh.coverageProfileId&&r===Dh.coverageVersion&&n===Dh.coverageDigest?{coverage:Dh,excludedProjections:YR,nestedWriterPrerequisitesRequired:!0,workflowWriterPrerequisitesRequired:!0,planningOrderWriterPrerequisitesRequired:!1,taskCoverProjectionRequired:!0}:null}function xw(e){for(const t of[Ca,Dm,Mm,Lm,Om]){const r=El(t);if(e.length===r.excludedProjections.length&&r.excludedProjections.every((n,s)=>e[s]===n))return t}return null}function Rw(e,t=Ca){if(!e||typeof e!="object"||Array.isArray(e))return!1;const r=e,n=r.coverage;return r.capabilityVersion===ZR&&r.runtimeMode==="cloud"&&r.routeAvailable===!0&&r.writerPrerequisitesReady===!0&&r.activationReady===!0&&Array.isArray(r.missingPrerequisites)&&r.missingPrerequisites.length===0&&!!n&&typeof n=="object"&&!Array.isArray(n)&&n.coverageProfileId===t.coverageProfileId&&n.coverageVersion===t.coverageVersion&&n.coverageDigest===t.coverageDigest}function Pw(e,t=Ca){if(!e||typeof e!="object"||Array.isArray(e))return!1;const r=e,n=r.excludedProjections,s=El(t);return s?r.cloudWritesFenced===!0&&Array.isArray(n)&&n.length===s.excludedProjections.length&&s.excludedProjections.every((i,l)=>n[l]===i):!1}function XR(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return t.cloudWritesFenced===!1&&Array.isArray(t.excludedProjections)&&t.excludedProjections.length===0}const zC=Object.freeze(["task/root-v1","task-relationship/full-v1","taxonomy/full-v1","initiative/full-v1","workstream/full-v1","task-comments/full-v1","task-checklist/full-v1","task-attachment-links/full-v1","task-attachment-links/full-v2","entity-event/full-v1","workstream-task-order/full-v1"]),QR=new Set(zC);function Lg(e){const t=new Set;for(const r of e||[]){const n=String(r||"").trim();if(!n||!QR.has(n)||t.has(n))throw new Error("Workspace sync v2 projection exclusions are invalid.");t.add(n)}return zC.filter(r=>t.has(r))}function e1(e,t){try{const r=Lg(e),n=Lg(t);return r.length===n.length&&r.every((s,i)=>s===n[i])}catch{return!1}}function t1(e,t){const r=[],n={},s=i=>{n[i]=(n[i]||0)+1};for(const i of e){if(i.op==="upsert"){const l=t.has("task-comments/full-v1"),c=t.has("task-checklist/full-v1"),d=t.has("task-attachment-links/full-v2")?"task-attachment-links/full-v2":"task-attachment-links/full-v1",m=t.has(d);if(t.has("task/root-v1")&&s("task/root-v1"),l||c||m){const f={...i.task};l&&(delete f.comments,s("task-comments/full-v1")),c&&(delete f.checklistItems,s("task-checklist/full-v1")),m&&(delete f.attachments,d==="task-attachment-links/full-v2"&&delete f.cardCoverAssetId,s(d)),r.push({...i,task:f});continue}}if(t.has("task/root-v1")&&i.op==="delete"){s("task/root-v1");continue}if(t.has("task-relationship/full-v1")&&(i.op==="task-relationship-upsert"||i.op==="task-relationship-delete")){s("task-relationship/full-v1");continue}if(t.has("taxonomy/full-v1")&&i.op==="taxonomy-upsert"){s("taxonomy/full-v1");continue}if(t.has("initiative/full-v1")&&i.op==="initiative-upsert"){s("initiative/full-v1");continue}if(t.has("workstream/full-v1")&&i.op==="workstream-upsert"){s("workstream/full-v1");continue}if(t.has("entity-event/full-v1")&&(i.op==="task-event-upsert"||i.op==="entity-event-upsert")){s("entity-event/full-v1");continue}r.push(i)}return{changes:r,suppressedCounts:n}}const HC=1;function r1(e){if(e.version!==HC)throw new TypeError("The sync transfer completion group version is unsupported.");if(!e.workspaceId.trim())throw new TypeError("The sync transfer completion group workspace is required.");if(!Number.isSafeInteger(e.coordinatorGeneration)||e.coordinatorGeneration<0)throw new TypeError("The sync transfer completion group generation is invalid.");if(e.ownerMode!=="browser-gateway"&&e.ownerMode!=="server")throw new TypeError("The sync transfer completion group owner is invalid.");if(!e.serverInstanceId.trim())throw new TypeError("The sync transfer completion group server instance is required.");if(!Array.isArray(e.permitIds)||e.permitIds.length===0)throw new TypeError("The sync transfer completion group requires at least one permit.");const t=e.permitIds.map(r=>r.trim());if(t.some((r,n)=>!r||r!==e.permitIds[n]))throw new TypeError("The sync transfer completion group contains an invalid permit ID.");if(new Set(t).size!==t.length)throw new TypeError("The sync transfer completion group contains duplicate permit IDs.");hn(e.previousBoundary),hn(e.expectedBoundary)}const bo=45e3,jw=18e4;function dy(e,t){const r=t?.completionGroup;if(!r)return{};if(r1(r),r.workspaceId!==e)throw new TypeError("The local sync apply completion group workspace does not match the request.");if(r.ownerMode!=="browser-gateway")throw new TypeError("The local sync browser apply requires a browser-gateway completion group.");return{coordinatorGeneration:r.coordinatorGeneration,permitIds:[...r.permitIds]}}async function VC(e,t=100){const r=new URLSearchParams({workspaceId:e,limit:String(Math.max(1,Math.min(100,Math.floor(t))))});return la(fetch(`/api/taskforce/sync/workspace/content-obligations?${r.toString()}`,{credentials:"include",headers:{"x-taskforce-workspace-id":e}}))}async function GC(e,t,r){return la(fetch("/api/taskforce/sync/workspace/content-obligations/failures",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},body:JSON.stringify({workspaceId:e,obligationIds:t,error:r})}))}async function n1(e,t,r=[],n=[],s=oI){const i=await s(e);if(!i.ok)return i;const l=new Set(Array.from(t,S=>String(S||"").trim()).filter(Boolean)),c=new Set(Array.from(r,S=>String(S||"").trim()).filter(Boolean)),d=new Set(Array.from(n,S=>String(S||"").trim()).filter(Boolean)),m=i.data;if(m.success!==!0||m.contractVersion!==3||m.workspaceId!==e||!Array.isArray(m.tasks)||!Array.isArray(m.activeTaskRelationshipIds)||!Array.isArray(m.initiatives)||!Array.isArray(m.workstreams)||!m.initiativeProjection||typeof m.initiativeProjection!="object"||m.initiativeProjection.owner!=="v2"&&m.initiativeProjection.owner!=="v3"||typeof m.initiativeProjection.epoch!="string"||!/^\d+$/.test(m.initiativeProjection.epoch)||m.activeTaskRelationshipIds.some(S=>typeof S!="string"||!S.trim())||!m.taxonomy||typeof m.taxonomy!="object"||Array.isArray(m.taxonomy)||typeof m.taxonomy.activeOperation!="boolean"||typeof m.taxonomy.owned!="boolean"||typeof m.taxonomy.entityRevision!="string"||!/^\d+$/.test(m.taxonomy.entityRevision)||typeof m.taxonomy.lifecycleRevision!="string"||!/^\d+$/.test(m.taxonomy.lifecycleRevision)||m.taxonomy.lastSequence!==null&&(typeof m.taxonomy.lastSequence!="string"||!/^\d+$/.test(m.taxonomy.lastSequence)))return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0"}};const f=m.combinedProjection;if(f!==void 0&&(!f||typeof f!="object"||Array.isArray(f)||f.owner!=="v2"&&f.owner!=="v3"||typeof f.epoch!="string"||!/^\d+$/.test(f.epoch)))return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0"}};const g=f?El({coverageProfileId:f.coverageProfileId,coverageVersion:f.coverageVersion,coverageDigest:f.coverageDigest}):null;if(f?.owner==="v3"&&!g)return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0",combinedExcludedProjections:[]}};const h=[];for(const S of m.tasks){const L=String(S?.taskId||"").trim();if(!S||typeof S!="object"||Array.isArray(S)||!L||typeof S.activeOperation!="boolean"||typeof S.activeCreateOperation!="boolean"||S.activeDeleteOperation!==void 0&&typeof S.activeDeleteOperation!="boolean"||S.deleteOwned!==void 0&&typeof S.deleteOwned!="boolean"||typeof S.activeLifecycleOperation!="boolean"||typeof S.activeReopenOperation!="boolean"||typeof S.reopenAssigneeOwned!="boolean")return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0"}};h.push({entry:S,taskId:L})}const y=h.filter(({taskId:S})=>S.length>0&&l.has(S)),k=Array.from(new Set(y.filter(({entry:S})=>S?.activeOperation===!0).map(({taskId:S})=>S))).sort(),v=Array.from(new Set(y.filter(({entry:S})=>S?.activeCreateOperation===!0).map(({taskId:S})=>S))).sort(),A=Array.from(new Set(y.filter(({entry:S})=>S?.activeDeleteOperation===!0||S?.deleteOwned===!0).map(({taskId:S})=>S))).sort(),b=Array.from(new Set(y.filter(({entry:S})=>S?.activeLifecycleOperation===!0).map(({taskId:S})=>S))).sort(),w=Array.from(new Set(y.filter(({entry:S})=>S?.activeReopenOperation===!0).map(({taskId:S})=>S))).sort(),R=Array.from(new Set(m.activeTaskRelationshipIds.map(S=>String(S).trim()))).sort(),N=[],j=[];for(const S of m.initiatives){const L=String(S?.entityId||"").trim();if(!(S&&typeof S=="object"&&!Array.isArray(S)&&S.domain==="initiative"&&L.length>0&&typeof S.activeOperation=="boolean"&&typeof S.owned=="boolean"&&typeof S.entityRevision=="string"&&/^\d+$/.test(S.entityRevision)&&typeof S.lifecycleRevision=="string"&&/^\d+$/.test(S.lifecycleRevision)&&(S.lastSequence===null||typeof S.lastSequence=="string"&&/^\d+$/.test(S.lastSequence))&&(S.canonicalFingerprint===null||typeof S.canonicalFingerprint=="string"&&/^[a-f0-9]{64}$/.test(S.canonicalFingerprint))))return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0"}};c.has(L)&&(S.activeOperation===!0&&N.push(L),(S.activeOperation===!0||S.owned===!0)&&j.push(L))}const E=[];for(const S of m.workstreams){const L=String(S?.entityId||"").trim();if(!(S&&typeof S=="object"&&!Array.isArray(S)&&S.domain==="workstream"&&L.length>0&&typeof S.activeOperation=="boolean"&&typeof S.owned=="boolean"&&typeof S.entityRevision=="string"&&/^\d+$/.test(S.entityRevision)&&typeof S.lifecycleRevision=="string"&&/^\d+$/.test(S.lifecycleRevision)&&(S.lastSequence===null||typeof S.lastSequence=="string"&&/^\d+$/.test(S.lastSequence))&&(S.canonicalFingerprint===null||typeof S.canonicalFingerprint=="string"&&/^[a-f0-9]{64}$/.test(S.canonicalFingerprint))))return{ok:!1,status:502,data:{activeMetadataTaskIds:[],activeCreateTaskIds:[],activeDeleteTaskIds:[],activeLifecycleTaskIds:[],activeReopenTaskIds:[],activeTaskRelationshipIds:[],activeInitiativeIds:[],protectedInitiativeIds:[],protectedWorkstreamIds:[],taxonomyProtected:!0,initiativeProjectionOwner:"v3",initiativeProjectionEpoch:"0",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0"}};d.has(L)&&(S.activeOperation===!0||S.owned===!0)&&E.push(L)}return{ok:!0,status:i.status,data:{activeMetadataTaskIds:k,activeCreateTaskIds:v,activeDeleteTaskIds:A,activeLifecycleTaskIds:b,activeReopenTaskIds:w,activeTaskRelationshipIds:R,activeInitiativeIds:Array.from(new Set(N)).sort(),protectedInitiativeIds:Array.from(new Set(j)).sort(),protectedWorkstreamIds:Array.from(new Set(E)).sort(),taxonomyProtected:m.taxonomy.activeOperation===!0||m.taxonomy.owned===!0,initiativeProjectionOwner:m.initiativeProjection.owner,initiativeProjectionEpoch:m.initiativeProjection.epoch,combinedProjectionOwner:f?.owner==="v3"?"v3":"v2",combinedProjectionEpoch:f&&typeof f.epoch=="string"?f.epoch:"0",combinedCoverage:f?.owner==="v3"&&g?g.coverage:void 0,combinedExcludedProjections:f?.owner==="v3"&&g?[...g.excludedProjections]:[]}}}function a1(e){const t=Number(e?.status);return Number.isFinite(t)&&t>0?Math.floor(t):0}async function la(e){try{const t=await e,r=await t.text().catch(()=>"");let n={};if(r)try{n=JSON.parse(r)}catch{n={error:!t.ok&&t.statusText?`${t.status} ${t.statusText}`:r.slice(0,400)}}else!t.ok&&t.statusText&&(n={error:`${t.status} ${t.statusText}`});const s=t.headers.get("retry-after");let i;if(s){const l=Number.parseInt(s,10);if(Number.isFinite(l)&&l>0)i=l*1e3;else{const c=Date.parse(s);if(Number.isFinite(c)){const d=c-Date.now();d>0&&(i=d)}}}return{ok:t.ok,status:t.status,data:n,retryAfterMs:i}}catch(t){const n=String(t?.name||"").trim()==="AbortError"?{error:"Workspace sync pull request timed out."}:{};return{ok:!1,status:a1(t),data:n}}}function Os(e,t,r){const n=typeof AbortController=="function"?new AbortController:null,s=n?globalThis.setTimeout(()=>n.abort(),Math.max(1,Math.floor(r))):null;return fetch(e,{...t,...n?{signal:n.signal}:{}}).finally(()=>{s!==null&&globalThis.clearTimeout(s)})}async function s1(e){return la(fetch(e("/api/taskforce/sync/user-settings"),{method:"GET",credentials:"include"}))}async function o1(e,t){return la(fetch(e("/api/taskforce/sync/user-settings"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)}))}async function i1(e,t){return la(fetch(e("/api/taskforce/sync/workspace/handshake"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:t})}))}async function c1(e,t){return la(fetch(e("/api/taskforce/sync/workspace/provision"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)}))}async function l1(e,t){const r=new URLSearchParams({limit:String(t.limit),workspaceId:t.workspaceId});if(t.cursor&&r.set("cursor",t.cursor),t.repairMode===!0&&r.set("repair","1"),t.contentMode==="manifest"&&r.set("content","manifest"),t.excludeInitiatives===!0&&r.set("excludeInitiatives","1"),t.excludedProjections?.length){r.set("excludeProjections",t.excludedProjections.join(","));const i=xw(t.excludedProjections);i&&(r.set("coverageProfileId",i.coverageProfileId),r.set("coverageVersion",String(i.coverageVersion)),r.set("coverageDigest",i.coverageDigest))}const n=e("/api/taskforce/sync/workspace/pull"),s=n.includes("?")?"&":"?";return la(Os(`${n}${s}${r.toString()}`,{method:"GET",credentials:"include"},bo))}async function KC(e,t){const r=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||100)});t.cursor&&r.set("cursor",t.cursor),t.repairCursor&&r.set("repairCursor",t.repairCursor);const n=e("/api/taskforce/sync/v3/workspace/feed"),s=n.includes("?")?"&":"?";return la(Os(`${n}${s}${r.toString()}`,{method:"GET",credentials:"include"},bo))}async function qC(e,t){const r=t.coverage||Ca,n=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||100),coverageProfileId:r.coverageProfileId,coverageVersion:String(r.coverageVersion),coverageDigest:r.coverageDigest});t.cursor&&n.set("cursor",t.cursor),t.repairCursor&&n.set("repairCursor",t.repairCursor),t.forceRepair===!0&&n.set("forceRepair","1");const s=e("/api/taskforce/sync/v3/workspace/feed"),i=s.includes("?")?"&":"?",l=t.forceRepair===!0||t.repairCursor?jw:bo;return la(Os(`${s}${i}${n.toString()}`,{method:"GET",credentials:"include"},l))}async function YC(e){const t=new URLSearchParams({workspaceId:e});return la(Os(`/api/taskforce/sync/v3/local/feed?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},bo))}async function ZC(e,t,r){return la(Os("/api/taskforce/sync/v3/local/feed",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},credentials:"include",body:JSON.stringify({workspaceId:e,...t,...dy(e,r)})},bo))}async function JC(e,t=Ca){const r=new URLSearchParams({workspaceId:e,coverageProfileId:t.coverageProfileId,coverageVersion:String(t.coverageVersion),coverageDigest:t.coverageDigest});return la(Os(`/api/taskforce/sync/v3/local/feed?${r.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},bo))}async function XC(e,t,r=Ca,n){return la(Os("/api/taskforce/sync/v3/local/feed",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},credentials:"include",body:JSON.stringify({workspaceId:e,...t,...r,...dy(e,n)})},bo))}async function QC(e){const t=new URLSearchParams({workspaceId:e});return la(Os(`/api/taskforce/sync/v3/local/task-comment-audit?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},bo))}async function eI(e,t){const r=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||50)});t.cursor&&r.set("cursor",t.cursor);const n=e("/api/taskforce/sync/v3/workspace/task-comment-audit"),s=n.includes("?")?"&":"?";return la(Os(`${n}${s}${r.toString()}`,{method:"GET",credentials:"include"},bo))}async function tI(e,t,r){return la(Os("/api/taskforce/sync/v3/local/task-comment-audit",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},credentials:"include",body:JSON.stringify({workspaceId:e,page:t,...dy(e,r)})},bo))}async function d1(e){return la(Os("/api/taskforce/sync/v3/local/coordinator/recovery/authoritative-repair-complete",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e.workspaceId},credentials:"include",body:JSON.stringify(e)},bo))}async function rI(e,t){const r=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||100)});t.cursor&&r.set("cursor",t.cursor);const n=e("/api/taskforce/sync/workspace/initiative-repair"),s=n.includes("?")?"&":"?";return la(Os(`${n}${s}${r.toString()}`,{method:"GET",credentials:"include"},jw))}async function nI(e,t){const r=t.coverage||Ca,n=new URLSearchParams({workspaceId:t.workspaceId,limit:String(t.limit||100),coverageProfileId:r.coverageProfileId,coverageVersion:String(r.coverageVersion),coverageDigest:r.coverageDigest});t.cursor&&n.set("cursor",t.cursor);const s=e("/api/taskforce/sync/workspace/combined-repair"),i=s.includes("?")?"&":"?";return la(Os(`${s}${i}${n.toString()}`,{method:"GET",credentials:"include"},jw))}async function aI(e){const t=new URLSearchParams({workspaceId:e});return la(Os(`/api/taskforce/sync/workspace/content-manifest?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},bo))}async function u1(e,t){return la(Os(e("/api/taskforce/sync/workspace/content"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)},bo))}async function sI(e,t={}){const r=e.changes.filter(_=>_.op==="upsert").map(_=>String(_.task?.id||"").trim()).filter(Boolean),n=e.changes.filter(_=>_.op==="delete").map(_=>String(_.taskId||"").trim()).filter(Boolean),s=new Set(r),i=e.changes.filter(_=>_.op==="initiative-upsert").map(_=>String(_.initiative?.id||"").trim()).filter(Boolean),l=e.changes.filter(_=>_.op==="workstream-upsert").map(_=>String(_.workstream?.id||"").trim()).filter(Boolean);let c=[],d=[],m=[],f=new Set,g=new Set,h=new Set,y=!1,k=[],v=new Set,A=new Set,b="v2",w="v2",R="0",N=null,j=[];if(e.changes.length>0){const _=await n1(e.workspaceId,[...r,...n],i,l,t.readOwnership);if(!_.ok)return{ok:!1,status:_.status,data:_.data,retryAfterMs:_.retryAfterMs};f=new Set(_.data.activeCreateTaskIds),g=new Set(_.data.activeDeleteTaskIds),h=new Set(_.data.activeTaskRelationshipIds),y=_.data.taxonomyProtected,k=_.data.activeInitiativeIds,v=new Set(_.data.protectedInitiativeIds),A=new Set(_.data.protectedWorkstreamIds),b=_.data.initiativeProjectionOwner,w=_.data.combinedProjectionOwner,R=_.data.combinedProjectionEpoch,N=_.data.combinedCoverage||null,j=_.data.combinedExcludedProjections||[],c=_.data.activeMetadataTaskIds.filter(T=>s.has(T)&&!f.has(T)),d=_.data.activeLifecycleTaskIds.filter(T=>s.has(T)&&!f.has(T)),m=_.data.activeReopenTaskIds.filter(T=>s.has(T)&&!f.has(T))}const E=e.changes.filter(_=>_.op==="upsert"?!f.has(String(_.task?.id||"").trim()):_.op==="delete"?!g.has(String(_.taskId||"").trim()):_.op==="task-relationship-upsert"||_.op==="task-relationship-delete"?!h.has(String(_.relationship?.id||"").trim()):_.op==="taxonomy-upsert"?!y:_.op==="initiative-upsert"?b!=="v3"&&!v.has(String(_.initiative?.id||"").trim()):_.op==="workstream-upsert"?!A.has(String(_.workstream?.id||"").trim()):!0),S=t1(E,new Set(j)).changes,L=w==="v3"?e.changes.length-S.length:0;return{ok:!0,status:200,data:{changes:S,ownership:{activeV3TaskMetadataIds:c,activeV3TaskLifecycleIds:d,activeV3TaskReopenAssigneeIds:m,activeV3InitiativeIds:k,initiativeProjectionOwner:b,combinedProjectionOwner:w,combinedProjectionEpoch:R,combinedCoverage:N,combinedExcludedProjections:j,combinedV3SuppressedChangeCount:L}}}}async function f1(e,t){const r=await sI({workspaceId:t.workspaceId,changes:t.changes});if(!r.ok)return r;const{changes:n,ownership:s}=r.data;return n.length===0?{ok:!0,status:204,data:{success:!0,skipped:!0}}:la(fetch(e("/api/taskforce/sync/workspace/push"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({...t,changes:n,...s.activeV3TaskMetadataIds.length>0?{activeV3TaskMetadataIds:s.activeV3TaskMetadataIds}:{},...s.activeV3TaskLifecycleIds.length>0?{activeV3TaskLifecycleIds:s.activeV3TaskLifecycleIds}:{},...s.activeV3TaskReopenAssigneeIds.length>0?{activeV3TaskReopenAssigneeIds:s.activeV3TaskReopenAssigneeIds}:{},...s.activeV3InitiativeIds.length>0?{activeV3InitiativeIds:s.activeV3InitiativeIds}:{},...s.initiativeProjectionOwner==="v3"?{v3InitiativeProjectionOwned:!0}:{},...s.combinedCoverage?{combinedCoverage:s.combinedCoverage,excludedProjections:s.combinedExcludedProjections||[]}:{},...t.repairMode===!0?{repair:!0}:{}})}))}async function oI(e){const t=new URLSearchParams({workspaceId:e});return la(Os(`/api/taskforce/sync/v3/local/metadata-ownership?${t.toString()}`,{method:"GET",headers:{"x-taskforce-workspace-id":e},credentials:"include"},bo))}async function iI(e,t,r){const n=Lg(r?.excludedProjections||[]),s=n.length?xw(n):null,i=JSON.stringify({workspaceId:e,changes:t,workspaceMembers:Array.isArray(r?.workspaceMembers)?r.workspaceMembers:void 0,...r?.repairMode===!0?{repair:!0}:{},excludedProjections:n,...s?{combinedCoverage:s}:{},contentPullObligations:r?.contentPullObligations,contentPullResolutionClaims:r?.contentPullResolutionClaims,...dy(e,r),bootstrapSnapshot:r?.bootstrapSnapshot?{currentAnnotatedAttachmentSessionIds:Array.isArray(r.bootstrapSnapshot.currentAnnotatedAttachmentSessionIds)?r.bootstrapSnapshot.currentAnnotatedAttachmentSessionIds:[]}:void 0}),l="/api/taskforce/sync/workspace/apply-local",c=[];try{const d=await fetch(l,{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},credentials:"include",body:i});if(d.ok){const g=await d.json().catch(()=>({}));return{ok:!0,status:d.status,data:g,failures:c}}const m=await d.text().catch(()=>"");let f={};if(m)try{f=JSON.parse(m)}catch{f={error:m.slice(0,400)}}else d.statusText&&(f={error:`${d.status} ${d.statusText}`});return c.push(`${l}:${d.status}`),{ok:!1,status:d.status,data:f,failures:c}}catch{c.push(`${l}:network`)}return{ok:!1,status:0,data:{},failures:c}}function Kc(e){return`${e.kind}:${e.path}`}const eS="WORKSPACE_SYNC_V3_APPLY_NOT_COMMITTED";function Ew(e){return{handshakeWorkspace:t=>i1(e,t),provisionWorkspace:t=>c1(e,t),pushWorkspaceChanges:({ownership:t,pushBoundary:r,...n})=>f1(e,n),pullWorkspaceChanges:t=>l1(e,t),pullWorkspaceContent:({previousCursor:t,independentCompletionIdentity:r,...n})=>u1(e,n),pullInitiativeFeed:t=>KC(e,t),pullInitiativeRepair:t=>rI(e,t),pullCombinedFeed:t=>qC(e,t),pullCombinedRepair:t=>nI(e,t),pullTaskCommentAudit:t=>eI(e,t),abandonTransferReceipts:()=>{},acknowledgeNonApplyingTransferReceipts:()=>{},buildV2ApplyCompletionGroup:()=>{},buildIndependentContentApplyCompletionGroup:()=>{},buildV2PushApplyCompletionGroup:()=>{},buildV3ApplyCompletionGroup:()=>{}}}const cI=1;function lI(e){if(!Array.isArray(e)||e.length===0||e.some(t=>typeof t!="string"||t.trim().length===0||t!==t.trim())||new Set(e).size!==e.length)throw new TypeError("A V2 push boundary requires nonempty, unique, trimmed batch operation identities.");return Object.freeze({version:cI,projection:"v2-push",batchOperationIdentities:Object.freeze([...e])})}function Mh(e){if(!e||typeof e!="object"||Array.isArray(e)||e.version!==cI||e.projection!=="v2-push"||!Array.isArray(e.batchOperationIdentities))throw new TypeError("The V2 push boundary is invalid.");return lI(e.batchOperationIdentities)}function hg(e){const t=e.filter(r=>r?.op==="upsert").map(r=>String(r.task?.id||"").trim()).filter(Boolean);return Array.from(new Set(t))}function dI(e,t){if(!Array.isArray(t)||t.some(i=>typeof i!="string"||i.trim().length===0||i!==i.trim())||new Set(t).size!==t.length)throw new TypeError("The expected V2 push task echo identities are invalid.");if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("The V2 push authoritative echo response is invalid.");const r=e;if(!Array.isArray(r.appliedTaskUpserts))throw new TypeError("The V2 push authoritative echo response is missing appliedTaskUpserts.");const n=r.appliedTaskUpserts.map(i=>{const l=i&&typeof i=="object"&&!Array.isArray(i)?i:null;if(!l||typeof l.archived!="boolean")return null;const c=l.task&&typeof l.task=="object"&&!Array.isArray(l.task)?l.task:null,d=String(c?.id||"").trim();return!c||!d?null:{archived:l.archived===!0,task:c,...l.durableRevision&&typeof l.durableRevision=="object"&&!Array.isArray(l.durableRevision)?{durableRevision:l.durableRevision}:{}}}).filter(i=>!!i),s=n.map(i=>String(i.task.id).trim());if(n.length!==r.appliedTaskUpserts.length||s.length!==t.length||new Set(s).size!==s.length||s.some((i,l)=>i!==t[l]))throw new TypeError("The V2 push authoritative task echo contract is incomplete or malformed.");return n}function uI(e,t){const{updatedAt:r,...n}=structuredClone(e);return t||delete n.referenceNumber,n}function tS(e){const t=uI(e.task,e.preserveReferenceNumber),r=e.excludedProjections.has("task/root-v1"),n=e.excludedProjections.has("task-comments/full-v1"),s=e.excludedProjections.has("task-checklist/full-v1"),i=e.excludedProjections.has("task-attachment-links/full-v1"),l=e.excludedProjections.has("task-attachment-links/full-v2");if(r)for(const c of Object.keys(t))["id","comments","checklistItems","attachments","cardCoverAssetId"].includes(c)||delete t[c];return n&&delete t.comments,s&&delete t.checklistItems,(i||l)&&delete t.attachments,l&&delete t.cardCoverAssetId,{...r?{}:{archived:e.archived},task:t}}function m1(e){const t=String(e.operationIdentity||"").trim();if(!t||t!==e.operationIdentity)throw new TypeError("The V2 push settlement operation identity is invalid.");const r=e.changes.filter(c=>c.op==="upsert");if(r.length!==e.appliedTaskUpserts.length)throw new TypeError("The V2 push authoritative settlement projection is incomplete.");const n=r.map(c=>({archived:c.archived,task:uI(c.task,c.task.referenceNumber!==void 0&&c.task.referenceNumber!==null)})),s=new Set(e.excludedProjections||[]),i=r.map(c=>tS({archived:c.archived,task:c.task,preserveReferenceNumber:c.task.referenceNumber!==void 0&&c.task.referenceNumber!==null,excludedProjections:s})),l=e.appliedTaskUpserts.map((c,d)=>tS({archived:c.archived,task:c.task,preserveReferenceNumber:r[d]?.task.referenceNumber!==void 0&&r[d]?.task.referenceNumber!==null,excludedProjections:s}));if(hn(l)!==hn(i))throw new TypeError("The V2 push authoritative settlement does not match the canonical request state.");return{version:1,operationIdentity:t,taskUpserts:n}}const Iv="V1:AESGCM:",Nw="AES-GCM",p1=12;async function fI(e){const t=Buffer.from(e,"base64");if(t.length!==32)throw new Error("Encryption key must be exactly 32 bytes (256-bit).");return crypto.subtle.importKey("raw",t,{name:Nw},!1,["encrypt","decrypt"])}async function rS(e,t){if(!e)return e;const r=crypto.getRandomValues(new Uint8Array(p1)),n=await fI(t),i=new TextEncoder().encode(e),l=await crypto.subtle.encrypt({name:Nw,iv:r},n,i),c=Buffer.from(l).toString("base64"),d=Buffer.from(r).toString("base64");return`${Iv}${d}:${c}`}async function nS(e,t){if(!e||!e.startsWith(Iv))return e;const r=e.slice(Iv.length),[n,s]=r.split(":");if(!n||!s)throw new Error("Malformed encrypted document payload.");const i=Buffer.from(n,"base64"),l=Buffer.from(s,"base64"),c=await fI(t);try{const d=await crypto.subtle.decrypt({name:Nw,iv:i},c,l);return new TextDecoder("utf-8").decode(d)}catch(d){throw new Error(`Failed to decrypt document: ${d.message}`)}}async function gg(e,t){t&&(e.op==="document-upsert"&&typeof e.content=="string"&&(e.content=await nS(e.content,t)),e.op==="asset-upsert"&&typeof e.contentBase64=="string"&&(e.contentBase64=await nS(e.contentBase64,t)))}async function Og(e,t){const r=e==="document"?new TextEncoder().encode(t):Uint8Array.from(atob(t),s=>s.charCodeAt(0)),n=await crypto.subtle.digest("SHA-256",r);return{sha256:Array.from(new Uint8Array(n),s=>s.toString(16).padStart(2,"0")).join(""),sizeBytes:r.byteLength}}function aS(e){return String(e||"").trim().toLowerCase()}function sS(e){return/^[a-f0-9]{64}$/.test(e)}function oS(e){return Number.isSafeInteger(e)&&e>=0}function h1(e,t){if(!t||!t.existsLocally||t.kind!==e.kind||t.path!==e.path||t.manifestVersion!==e.manifestVersion)return{shouldFetch:!0,reasons:["missing"]};const r=[],n=aS(e.sha256),s=aS(t.sha256);return!sS(n)||!sS(s)?r.push("unknown-hash"):n!==s&&r.push("hash-mismatch"),(!oS(e.sizeBytes)||!oS(t.sizeBytes)||e.sizeBytes!==t.sizeBytes)&&r.push("size-mismatch"),(!e.metadataFingerprint||!t.metadataFingerprint||e.metadataFingerprint!==t.metadataFingerprint)&&r.push("metadata-mismatch"),{shouldFetch:r.length>0,reasons:r}}const iS=1;var _l={};function Aa(e){return e&&typeof e=="object"?e:{}}const g1=3e4,y1=60*6e4;function k1(e,t=Date.now()){const r=Math.max(0,Math.floor(Number(e.attempts)||0));if(r===0)return!0;const n=Date.parse(String(e.updatedAt||""));if(!Number.isFinite(n))return!0;const s=Math.min(y1,g1*2**Math.min(r-1,7));return n+s<=t}function li(e){const t=Number(e||0);return t===0||t===429||t>=500}function cS(e,t){const r=String(e.code||"").trim().toUpperCase(),n=String(e.error||"").trim();return r==="WORKSPACE_ID_ALREADY_EXISTS"||n.toLowerCase()==="workspace id already exists"?"This workspace is already linked to another cloud account. Sign in with the original account, ask the workspace owner to grant you access, or keep this workspace local-only.":n||`Workspace provisioning failed (${t})`}function v1(e,t){if(t!==400)return!1;const r=String(e.code||"").trim().toUpperCase(),n=String(e.error||"").trim().toLowerCase();return r==="WORKSPACE_ID_REQUIRED"&&n.includes("no cloud workspace is selected")}async function w1(e){if(!e.cloudAuthConfigured)return{success:!1,error:"Cloud auth endpoint is not configured."};if(e.runtimeMode!=="local")return{success:!1,error:"Workspace sync is only available in local runtime."};if(!e.isAuthenticated)return{success:!1,error:"Authentication required."};try{const t=e.remoteServices||Ew(e.resolveCloudAuthUrl);let r=await t.handshakeWorkspace(e.workspaceId);if(r.ok)return{success:!0,provisioned:!1};const n=Aa(r.data);if(r.status===401)return{success:!1,statusCode:401,transient:!1,error:String(n.error||"Authentication required for workspace sync.")};if(r.status===429)return{success:!1,statusCode:429,retryAfterMs:r.retryAfterMs,transient:!0,error:String(n.error||"Workspace sync rate limited. Please retry later.")};if(v1(n,r.status)){const s=await t.provisionWorkspace({workspaceId:e.workspaceId,name:e.workspaceName||e.workspaceId});if(!s.ok){const i=Aa(s.data);return{success:!1,statusCode:s.status,transient:li(s.status),retryAfterMs:s.retryAfterMs,error:cS(i,s.status)}}if(r=await t.handshakeWorkspace(e.workspaceId),!r.ok){const i=Aa(r.data);return r.status===401?{success:!1,statusCode:401,transient:!1,error:String(i.error||"Authentication required for workspace sync.")}:r.status===429?{success:!1,statusCode:429,retryAfterMs:r.retryAfterMs,transient:!0,error:String(i.error||"Workspace sync rate limited. Please retry later.")}:{success:!1,statusCode:r.status,transient:li(r.status),error:String(i.error||`Workspace sync handshake failed (${r.status})`)}}return{success:!0,provisioned:!0}}if(r.status===409&&n.code==="WORKSPACE_ID_MISMATCH"){if(e.allowProvisionOnMismatch===!1)return{success:!1,statusCode:409,transient:!1,error:String(n.error||"Selected cloud workspace could not be attached to this local workspace.")};const s=await t.provisionWorkspace({workspaceId:e.workspaceId,name:e.workspaceName||e.workspaceId});if(!s.ok){const i=Aa(s.data);return{success:!1,statusCode:s.status,error:cS(i,s.status)}}if(r=await t.handshakeWorkspace(e.workspaceId),!r.ok){const i=Aa(r.data);return r.status===401?{success:!1,statusCode:401,transient:!1,error:String(i.error||"Authentication required for workspace sync.")}:r.status===429?{success:!1,statusCode:429,retryAfterMs:r.retryAfterMs,transient:!0,error:String(i.error||"Workspace sync rate limited. Please retry later.")}:{success:!1,statusCode:r.status,transient:li(r.status),error:String(i.error||`Workspace sync handshake failed (${r.status})`)}}return{success:!0,provisioned:!0}}return{success:!1,statusCode:r.status,transient:li(r.status),error:String(n.error||`Workspace sync handshake failed (${r.status})`)}}catch{return{success:!1,statusCode:0,transient:!0,error:"Failed to validate workspace sync access."}}}function b1(e,t,r){if(!e)return;const n={};for(const i of t)n[i.op]=(n[i.op]||0)+1;const s=(i,l)=>i&&{...i,changeCount:l};return{...e,totalChanges:t.length,byOp:n,domains:{...e.domains,tasks:s(e.domains.tasks,(n.upsert||0)+(n.delete||0)),taskRelationships:s(e.domains.taskRelationships,(n["task-relationship-upsert"]||0)+(n["task-relationship-delete"]||0)),initiatives:s(e.domains.initiatives,n["initiative-upsert"]||0),workstreams:s(e.domains.workstreams,n["workstream-upsert"]||0),taxonomy:s(e.domains.taxonomy,n["taxonomy-upsert"]||0)},...r?.combinedV3SuppressedChangeCount?{combinedV3SuppressedChangeCount:r.combinedV3SuppressedChangeCount}:{}}}async function mI(e,t){const r=hn(e);try{const n=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return Array.from(new Uint8Array(n)).map(s=>s.toString(16).padStart(2,"0")).join("")}catch{let n=2166136261;for(let i=0;i<r.length;i+=1)n^=r.charCodeAt(i),n=Math.imul(n,16777619);const s=(n>>>0).toString(16).padStart(8,"0");return t?`${t}:fallback:${s}`:s.repeat(8)}}async function S1(e,t,r){return mI({contractVersion:1,workspaceId:e,repairMode:r,changes:t},e)}const A1=64,lS=4*1024*1024,C1=45*1024*1024,I1=64*1024;function dS(e){switch(e.op){case"upsert":return`${e.op}:${e.task.id}`;case"delete":return`${e.op}:${e.taskId}`;case"task-relationship-upsert":case"task-relationship-delete":return`${e.op}:${e.relationship.id}`;case"initiative-upsert":return`${e.op}:${e.initiative.id}`;case"workstream-upsert":return`${e.op}:${e.workstream.id}`;case"planning-identity-upsert":return`${e.op}:${e.identity.entityType}:${e.identity.entityId}`;case"taxonomy-upsert":return e.op;case"ai-profile-upsert":return`${e.op}:${e.profile.id}`;case"document-upsert":case"document-delete":return`${e.op}:${e.path}`;case"document-manifest":return`${e.op}:${e.manifest.path}`;case"asset-upsert":case"asset-delete":return`${e.op}:${e.path}`;case"asset-manifest":return`${e.op}:${e.manifest.path}`;case"document-review-session-upsert":return`${e.op}:${e.session.id}`;case"document-review-session-delete":return`${e.op}:${e.sessionId}`;case"document-review-comment-upsert":return`${e.op}:${e.comment.id}`;case"document-review-comment-delete":return`${e.op}:${e.commentId}`;case"annotated-attachment-session-upsert":return`${e.op}:${e.session.id}`;case"annotated-attachment-session-delete":return`${e.op}:${e.sessionId}`;case"taskforce-agent-upsert":return`${e.op}:${e.agent.id}`;case"agent-role-upsert":return`${e.op}:${e.role.id}`;case"taskforce-agent-skill-upsert":return`${e.op}:${e.skill.id}`;case"agent-conversation-upsert":return`${e.op}:${e.conversation.id}`;case"entity-event-upsert":return`${e.op}:${e.event.id}`;case"task-event-upsert":return`${e.op}:${e.event.id}`}}function _1(e,t){const r=new Map;for(const[s,i]of e.entries()){const l=dS(i),c=r.get(l)||[];c.push(s),r.set(l,c)}const n=new Map;return t.map(s=>{const i=dS(s),l=r.get(i)||[],c=n.get(i)||0,d=l[c];if(d===void 0)throw new Error(`Prepared V2 push change is not present in the frozen payload: ${i}.`);n.set(i,c+1);const m=e[d];return JSON.stringify(m)===JSON.stringify(s)?{sourceChangeIndex:d}:{sourceChangeIndex:d,preparedChange:s}})}function T1(e,t){const r=new Set;return t.batches.map(n=>n.map(s=>{const i=s.sourceChangeIndex;if(!Number.isSafeInteger(i)||i<0||i>=e.length||r.has(i))throw new Error("Persisted V2 push prepared plan contains an invalid source change index.");return r.add(i),s.preparedChange||e[i]}))}function pI(e){switch(e.op){case"taxonomy-upsert":case"ai-profile-upsert":case"initiative-upsert":case"taskforce-agent-upsert":case"taskforce-agent-skill-upsert":return 0;case"workstream-upsert":return 1;case"planning-identity-upsert":return 2;case"upsert":return 2;case"document-upsert":case"document-manifest":case"asset-upsert":case"asset-manifest":return 3;case"document-review-session-upsert":case"annotated-attachment-session-upsert":case"agent-conversation-upsert":case"task-relationship-upsert":return 4;case"document-review-comment-upsert":case"task-event-upsert":case"entity-event-upsert":return 5;case"document-review-comment-delete":case"annotated-attachment-session-delete":case"task-relationship-delete":return 6;case"document-review-session-delete":case"document-delete":case"asset-delete":return 7;case"delete":return 8;default:return 4}}function x1(e){return e.op==="document-upsert"||e.op==="document-manifest"||e.op==="asset-upsert"||e.op==="asset-manifest"||e.op==="document-delete"||e.op==="asset-delete"}function uS(e,t){return I1+new TextEncoder().encode(JSON.stringify({workspaceId:e.workspaceId,idempotencyKey:"0".repeat(64),changes:t,repairMode:e.repairMode===!0,repair:e.repairMode===!0})).byteLength}function R1(e,t,r){const n=t.map((l,c)=>({plain:l,safe:r[c],phase:pI(l),preparedIndex:c})).sort((l,c)=>l.phase-c.phase||l.preparedIndex-c.preparedIndex);if(n.length===0)return{batches:[[]],oversizedChangeIndex:null};const s=[];let i=[];for(const l of n){const c=uS(e,[l.safe]);if(c>C1)return{batches:[],oversizedChangeIndex:l.preparedIndex};const d=i.length>0&&i[0].phase!==l.phase,m=[...i,l],f=i.length>0&&uS(e,m.map(g=>g.safe))>lS;(d||i.length>=A1||f)&&(s.push(i),i=[]),i.push(l),c>lS&&(s.push(i),i=[])}return i.length>0&&s.push(i),{batches:s,oversizedChangeIndex:null}}async function P1(e){const t=e.remoteServices||Ew(e.resolveCloudAuthUrl);let r={activeV3TaskMetadataIds:[],activeV3TaskLifecycleIds:[],activeV3TaskReopenAssigneeIds:[],activeV3InitiativeIds:[],initiativeProjectionOwner:"v2",combinedProjectionOwner:"v2",combinedProjectionEpoch:"0",combinedV3SuppressedChangeCount:0},n,s=e.preparedPlan||null,i=null;if(s){if(s.contractVersion!==iS)throw new Error("Persisted V2 push prepared plan version is unsupported.");i=T1(e.payload.changes,s),n=i.flat(),r=s.ownership}else n=e.payload.changes;if(!s&&n.length>0){const z=await sI({workspaceId:e.workspaceId,changes:n},{readOwnership:e.localServices?.readPushOwnership});if(!z.ok){const M=Aa(z.data);return{success:!1,status:z.status,error:typeof M.error=="string"?M.error:"Local workspace sync ownership could not be verified.",code:typeof M.code=="string"?M.code:void 0,retryAfterMs:z.retryAfterMs,transient:li(z.status),requestMs:0,changeCount:e.payload.changes.length,deleteCount:e.payload.deleteTaskIds.size,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,currentTaskRelationshipChangeKeys:e.payload.currentTaskRelationshipChangeKeys??new Map,currentTaxonomyChangeKey:e.payload.currentTaxonomyChangeKey??"",deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentPlanningIdentityWatermarks:e.payload.currentPlanningIdentityWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,currentAiProfileChangeKeys:e.payload.currentAiProfileChangeKeys??new Map,currentDocumentPaths:e.payload.currentDocumentPaths,deleteDocumentPaths:e.payload.deleteDocumentPaths,currentDocumentWatermarks:e.payload.currentDocumentWatermarks,currentAssetPaths:e.payload.currentAssetPaths,deleteAssetPaths:e.payload.deleteAssetPaths,currentAssetWatermarks:e.payload.currentAssetWatermarks,currentDocumentReviewSessionIds:e.payload.currentDocumentReviewSessionIds,deleteDocumentReviewSessionIds:e.payload.deleteDocumentReviewSessionIds,currentDocumentReviewSessionWatermarks:e.payload.currentDocumentReviewSessionWatermarks,currentDocumentReviewCommentIds:e.payload.currentDocumentReviewCommentIds,deleteDocumentReviewCommentIds:e.payload.deleteDocumentReviewCommentIds,currentDocumentReviewCommentWatermarks:e.payload.currentDocumentReviewCommentWatermarks,currentAnnotatedAttachmentSessionIds:e.payload.currentAnnotatedAttachmentSessionIds,deleteAnnotatedAttachmentSessionIds:e.payload.deleteAnnotatedAttachmentSessionIds,currentAnnotatedAttachmentSessionWatermarks:e.payload.currentAnnotatedAttachmentSessionWatermarks,currentTaskforceAgentIds:e.payload.currentTaskforceAgentIds??new Set,currentTaskforceAgentWatermarks:e.payload.currentTaskforceAgentWatermarks??new Map,currentTaskforceAgentSkillIds:e.payload.currentTaskforceAgentSkillIds??new Set,currentTaskforceAgentSkillWatermarks:e.payload.currentTaskforceAgentSkillWatermarks??new Map,currentAgentConversationIds:e.payload.currentAgentConversationIds??new Set,currentAgentConversationWatermarks:e.payload.currentAgentConversationWatermarks??new Map,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:new Map,pushedTaskChangeKeys:new Map,emittedEventIds:[],appliedTaskUpserts:[]}}n=z.data.changes,r=z.data.ownership}const l=n.length,c=b1(e.payload.deltaDiagnostics,n,r),d=Lg(r.combinedExcludedProjections||[]),m=e.payload.deleteTaskIds.size;let f=0;if(l===0&&e.repairMode!==!0&&(r?.combinedProjectionOwner==="v3"||!!e.payload.deltaDiagnostics&&e.payload.deltaDiagnostics?.baselineResetReason!=="missing-baseline"))return{success:!0,syncedAt:new Date().toISOString(),requestMs:0,changeCount:0,effectiveDeltaDiagnostics:c,effectiveV2ExcludedProjections:d,deleteCount:m,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,currentTaskRelationshipChangeKeys:e.payload.currentTaskRelationshipChangeKeys??new Map,currentTaxonomyChangeKey:e.payload.currentTaxonomyChangeKey??"",deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentPlanningIdentityWatermarks:e.payload.currentPlanningIdentityWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,currentAiProfileChangeKeys:e.payload.currentAiProfileChangeKeys??new Map,currentDocumentPaths:e.payload.currentDocumentPaths,deleteDocumentPaths:e.payload.deleteDocumentPaths,currentDocumentWatermarks:e.payload.currentDocumentWatermarks,currentAssetPaths:e.payload.currentAssetPaths,deleteAssetPaths:e.payload.deleteAssetPaths,currentAssetWatermarks:e.payload.currentAssetWatermarks,currentDocumentReviewSessionIds:e.payload.currentDocumentReviewSessionIds,deleteDocumentReviewSessionIds:e.payload.deleteDocumentReviewSessionIds,currentDocumentReviewSessionWatermarks:e.payload.currentDocumentReviewSessionWatermarks,currentDocumentReviewCommentIds:e.payload.currentDocumentReviewCommentIds,deleteDocumentReviewCommentIds:e.payload.deleteDocumentReviewCommentIds,currentDocumentReviewCommentWatermarks:e.payload.currentDocumentReviewCommentWatermarks,currentAnnotatedAttachmentSessionIds:e.payload.currentAnnotatedAttachmentSessionIds,deleteAnnotatedAttachmentSessionIds:e.payload.deleteAnnotatedAttachmentSessionIds,currentAnnotatedAttachmentSessionWatermarks:e.payload.currentAnnotatedAttachmentSessionWatermarks,currentTaskforceAgentIds:e.payload.currentTaskforceAgentIds??new Set,currentTaskforceAgentWatermarks:e.payload.currentTaskforceAgentWatermarks??new Map,currentTaskforceAgentSkillIds:e.payload.currentTaskforceAgentSkillIds??new Set,currentTaskforceAgentSkillWatermarks:e.payload.currentTaskforceAgentSkillWatermarks??new Map,currentAgentConversationIds:e.payload.currentAgentConversationIds??new Set,currentAgentConversationWatermarks:e.payload.currentAgentConversationWatermarks??new Map,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:new Map,pushedTaskChangeKeys:new Map,emittedEventIds:[],appliedTaskUpserts:[]};let h=n;if(typeof process<"u"&&_l?.TASKFORCE_SYNC_KEY){const z=_l.TASKFORCE_SYNC_KEY,M=[];for(const Z of h)Z.op==="document-upsert"&&typeof Z.content=="string"?M.push({...Z,content:await rS(Z.content,z)}):Z.op==="asset-upsert"&&typeof Z.contentBase64=="string"&&Z.contentBase64.length>0?M.push({...Z,contentBase64:await rS(Z.contentBase64,z)}):M.push(Z);h=M}let y=R1(e,n,h);if(i){let z=0;y={oversizedChangeIndex:null,batches:i.map(M=>M.map(Z=>{const J={plain:Z,safe:h[z],phase:pI(Z),preparedIndex:z};return z+=1,J}))}}if(y.oversizedChangeIndex!==null){const z=n[y.oversizedChangeIndex];return{success:!1,status:413,error:`Workspace sync change ${y.oversizedChangeIndex+1} (${z.op}) exceeds the single-change transfer limit.`,transient:!1,requestMs:f,changeCount:l,deleteCount:m,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,currentTaskRelationshipChangeKeys:e.payload.currentTaskRelationshipChangeKeys??new Map,currentTaxonomyChangeKey:e.payload.currentTaxonomyChangeKey??"",deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentPlanningIdentityWatermarks:e.payload.currentPlanningIdentityWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,currentAiProfileChangeKeys:e.payload.currentAiProfileChangeKeys??new Map,currentDocumentPaths:e.payload.currentDocumentPaths,deleteDocumentPaths:e.payload.deleteDocumentPaths,currentDocumentWatermarks:e.payload.currentDocumentWatermarks,currentAssetPaths:e.payload.currentAssetPaths,deleteAssetPaths:e.payload.deleteAssetPaths,currentAssetWatermarks:e.payload.currentAssetWatermarks,currentDocumentReviewSessionIds:e.payload.currentDocumentReviewSessionIds,deleteDocumentReviewSessionIds:e.payload.deleteDocumentReviewSessionIds,currentDocumentReviewSessionWatermarks:e.payload.currentDocumentReviewSessionWatermarks,currentDocumentReviewCommentIds:e.payload.currentDocumentReviewCommentIds,deleteDocumentReviewCommentIds:e.payload.deleteDocumentReviewCommentIds,currentDocumentReviewCommentWatermarks:e.payload.currentDocumentReviewCommentWatermarks,currentAnnotatedAttachmentSessionIds:e.payload.currentAnnotatedAttachmentSessionIds,deleteAnnotatedAttachmentSessionIds:e.payload.deleteAnnotatedAttachmentSessionIds,currentAnnotatedAttachmentSessionWatermarks:e.payload.currentAnnotatedAttachmentSessionWatermarks,currentTaskforceAgentIds:e.payload.currentTaskforceAgentIds??new Set,currentTaskforceAgentWatermarks:e.payload.currentTaskforceAgentWatermarks??new Map,currentTaskforceAgentSkillIds:e.payload.currentTaskforceAgentSkillIds??new Set,currentTaskforceAgentSkillWatermarks:e.payload.currentTaskforceAgentSkillWatermarks??new Map,currentAgentConversationIds:e.payload.currentAgentConversationIds??new Set,currentAgentConversationWatermarks:e.payload.currentAgentConversationWatermarks??new Map,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:new Map,pushedTaskChangeKeys:new Map,emittedEventIds:[],appliedTaskUpserts:[]}}const k=new Set,v=[];let A;if(s){if(A=[...s.batchOperationIdentities],A.length!==y.batches.length||new Set(A).size!==A.length||A.some(z=>!/^[a-f0-9]{64}$/.test(z)))throw new Error("Persisted V2 push prepared plan fingerprint does not match its frozen batches.")}else{A=await Promise.all(y.batches.map(M=>S1(e.workspaceId,M.map(Z=>Z.plain),e.repairMode===!0)));const z=_1(e.payload.changes,n);s={contractVersion:iS,ownership:r,batches:y.batches.map(M=>M.map(Z=>z[Z.preparedIndex])),batchOperationIdentities:[...A]}}const b=lI(A),w=e.acknowledgedNonApplyingBatchOperationIdentities||[];if(new Set(w).size!==w.length)throw new Error("Persisted V2 push batch acknowledgement state does not match the frozen push plan.");for(const z of w){const M=A.indexOf(z);if(M>=0&&hg(y.batches[M].map(Z=>Z.plain)).length>0)throw new Error("Persisted V2 push batch acknowledgement state does not match the frozen push plan.")}const R=w.filter(z=>{const M=A.indexOf(z);return M>=0&&hg(y.batches[M].map(Z=>Z.plain)).length===0}),N=e.preparedPlan?[]:w.filter(z=>!R.includes(z));s&&!e.preparedPlan&&await e.onPreparedPlan?.({plan:s,acknowledgedOperationIdentities:R,replayedLegacyAcknowledgementIdentities:N});const j=new Set(R);if(e.preparedPlan&&j.size!==w.length)throw new Error("Persisted V2 push batch acknowledgement state does not match the frozen push plan.");const E=e.settledBatchOperationIdentities||[];if(E.length>0&&!e.onAcceptedBatchSettled||new Set(E).size!==E.length||E.some(z=>!A.includes(z)))throw new Error("Persisted V2 push batch settlement state does not match the frozen push plan.");const S=new Set(E);let L=0,_=0,T=null;const H=[],q=async z=>{if(H.length===0)return;const M=H.splice(0);await t.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:M,errorCode:z})};try{for(const[z,M]of y.batches.entries()){const Z=M.map(oe=>oe.plain),J=M.map(oe=>oe.safe),ee=hg(Z),te=A[z];if(S.has(te)||j.has(te)){L+=1,_+=Z.length;continue}H.length>0&&await t.retainTransferReceipts?.({workspaceId:e.workspaceId,receipts:H});const fe=async()=>{const oe=Date.now(),ie=await t.pushWorkspaceChanges({workspaceId:e.workspaceId,idempotencyKey:te,pushBoundary:b,changes:J,ownership:r,repairMode:e.repairMode===!0});return f+=Date.now()-oe,ie};let Ie=await fe(),$e=Aa(Ie.data),Ye=Ie.status===409&&$e.code==="SYNC_PUSH_IN_PROGRESS";if(!Ie.ok&&!Ye&&(Ie.status===403||Ie.status===409)&&(await e.ensureCloudWorkspaceReadyForSync()).success&&(Ie=await fe(),$e=Aa(Ie.data),Ye=Ie.status===409&&$e.code==="SYNC_PUSH_IN_PROGRESS"),Ie.transferReceipt&&H.push(Ie.transferReceipt),!Ie.ok){await q("WORKSPACE_SYNC_V2_PUSH_ATTEMPT_FAILED");const oe=Aa(Ie.data),ie=Array.from(new Set(Z.map(B=>B.op))),me=Z.filter(x1).length,W=me===Z.length?"content":me===0?"metadata":"mixed",V={success:!1,status:Ie.status,error:typeof oe.error=="string"?oe.error:void 0,code:typeof oe.code=="string"?oe.code:void 0,batchProgress:{totalBatches:y.batches.length,completedBatches:L,completedChanges:_,failedBatchIndex:z,failedChangeCount:Z.length,failedOperations:ie,failureDomain:W},retryAfterMs:Ie.retryAfterMs,transient:Ye||li(Ie.status),requestMs:f,changeCount:l,deleteCount:m,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,currentTaskRelationshipChangeKeys:e.payload.currentTaskRelationshipChangeKeys??new Map,currentTaxonomyChangeKey:e.payload.currentTaxonomyChangeKey??"",deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentPlanningIdentityWatermarks:e.payload.currentPlanningIdentityWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,currentAiProfileChangeKeys:e.payload.currentAiProfileChangeKeys??new Map,currentDocumentPaths:e.payload.currentDocumentPaths,deleteDocumentPaths:e.payload.deleteDocumentPaths,currentDocumentWatermarks:e.payload.currentDocumentWatermarks,currentAssetPaths:e.payload.currentAssetPaths,deleteAssetPaths:e.payload.deleteAssetPaths,currentAssetWatermarks:e.payload.currentAssetWatermarks,currentDocumentReviewSessionIds:e.payload.currentDocumentReviewSessionIds,deleteDocumentReviewSessionIds:e.payload.deleteDocumentReviewSessionIds,currentDocumentReviewSessionWatermarks:e.payload.currentDocumentReviewSessionWatermarks,currentDocumentReviewCommentIds:e.payload.currentDocumentReviewCommentIds,deleteDocumentReviewCommentIds:e.payload.deleteDocumentReviewCommentIds,currentDocumentReviewCommentWatermarks:e.payload.currentDocumentReviewCommentWatermarks,currentAnnotatedAttachmentSessionIds:e.payload.currentAnnotatedAttachmentSessionIds,deleteAnnotatedAttachmentSessionIds:e.payload.deleteAnnotatedAttachmentSessionIds,currentAnnotatedAttachmentSessionWatermarks:e.payload.currentAnnotatedAttachmentSessionWatermarks,currentTaskforceAgentIds:e.payload.currentTaskforceAgentIds??new Set,currentTaskforceAgentWatermarks:e.payload.currentTaskforceAgentWatermarks??new Map,currentTaskforceAgentSkillIds:e.payload.currentTaskforceAgentSkillIds??new Set,currentTaskforceAgentSkillWatermarks:e.payload.currentTaskforceAgentSkillWatermarks??new Map,currentAgentConversationIds:e.payload.currentAgentConversationIds??new Set,currentAgentConversationWatermarks:e.payload.currentAgentConversationWatermarks??new Map,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:new Map,pushedTaskChangeKeys:new Map,emittedEventIds:[],appliedTaskUpserts:[]};if(T||=V,W!=="content")return V;continue}const ye=Aa(Ie.data);if(Array.isArray(ye.emittedEventIds))for(const oe of ye.emittedEventIds.map(ie=>String(ie||"").trim()).filter(Boolean))k.add(oe);const ge=dI(ye,ee);if(v.push(...ge),e.onAcceptedBatchSettled){if(!Ie.transferReceipt)throw new Error("Accepted V2 push batch is missing its atomic settlement receipt.");await e.onAcceptedBatchSettled({operationIdentity:te,settlementIdentityFingerprint:await mI(m1({operationIdentity:te,changes:Z,appliedTaskUpserts:ge,excludedProjections:d})),appliedTaskUpserts:ge,transferReceipt:Ie.transferReceipt,pushBoundary:b,excludedProjections:d});const oe=H.indexOf(Ie.transferReceipt);oe>=0&&H.splice(oe,1),S.add(te)}else if(Ie.transferReceipt&&ge.length===0){await t.acknowledgeNonApplyingTransferReceipts({workspaceId:e.workspaceId,receipts:[Ie.transferReceipt]});const oe=H.indexOf(Ie.transferReceipt);oe>=0&&H.splice(oe,1),j.add(te),await e.onNonApplyingBatchAcknowledged?.({operationIdentity:te,acknowledgedOperationIdentities:A.filter(ie=>j.has(ie))})}L+=1,_+=Z.length}}catch(z){throw await q("WORKSPACE_SYNC_V2_PUSH_ATTEMPT_FAILED"),z}return T?{...T,batchProgress:{...T.batchProgress,completedBatches:L,completedChanges:_},requestMs:f}:{success:!0,syncedAt:new Date().toISOString(),requestMs:f,changeCount:l,batchProgress:{totalBatches:y.batches.length,completedBatches:L,completedChanges:_,failedBatchIndex:null,failedChangeCount:0,failedOperations:[],failureDomain:null},effectiveDeltaDiagnostics:c,effectiveV2ExcludedProjections:d,deleteCount:m,currentTaskIds:e.payload.currentTaskIds,currentTaskWatermarks:e.payload.currentTaskWatermarks??new Map,currentTaskChangeKeys:e.payload.currentTaskChangeKeys??new Map,currentTaskRelationshipChangeKeys:e.payload.currentTaskRelationshipChangeKeys??new Map,currentTaxonomyChangeKey:e.payload.currentTaxonomyChangeKey??"",deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentPlanningIdentityWatermarks:e.payload.currentPlanningIdentityWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,currentAiProfileChangeKeys:e.payload.currentAiProfileChangeKeys??new Map,currentDocumentPaths:e.payload.currentDocumentPaths,deleteDocumentPaths:e.payload.deleteDocumentPaths,currentDocumentWatermarks:e.payload.currentDocumentWatermarks,currentAssetPaths:e.payload.currentAssetPaths,deleteAssetPaths:e.payload.deleteAssetPaths,currentAssetWatermarks:e.payload.currentAssetWatermarks,currentDocumentReviewSessionIds:e.payload.currentDocumentReviewSessionIds,deleteDocumentReviewSessionIds:e.payload.deleteDocumentReviewSessionIds,currentDocumentReviewSessionWatermarks:e.payload.currentDocumentReviewSessionWatermarks,currentDocumentReviewCommentIds:e.payload.currentDocumentReviewCommentIds,deleteDocumentReviewCommentIds:e.payload.deleteDocumentReviewCommentIds,currentDocumentReviewCommentWatermarks:e.payload.currentDocumentReviewCommentWatermarks,currentAnnotatedAttachmentSessionIds:e.payload.currentAnnotatedAttachmentSessionIds,deleteAnnotatedAttachmentSessionIds:e.payload.deleteAnnotatedAttachmentSessionIds,currentAnnotatedAttachmentSessionWatermarks:e.payload.currentAnnotatedAttachmentSessionWatermarks,currentTaskforceAgentIds:e.payload.currentTaskforceAgentIds??new Set,currentTaskforceAgentWatermarks:e.payload.currentTaskforceAgentWatermarks??new Map,currentTaskforceAgentSkillIds:e.payload.currentTaskforceAgentSkillIds??new Set,currentTaskforceAgentSkillWatermarks:e.payload.currentTaskforceAgentSkillWatermarks??new Map,currentAgentConversationIds:e.payload.currentAgentConversationIds??new Set,currentAgentConversationWatermarks:e.payload.currentAgentConversationWatermarks??new Map,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:e.payload.pushedWatermarks,pushedTaskChangeKeys:e.payload.pushedTaskChangeKeys??new Map,emittedEventIds:Array.from(k),appliedTaskUpserts:v,pushBoundary:b,pushTransferReceipts:H}}async function j1(e){const t=e.remoteServices||Ew(e.resolveCloudAuthUrl);let r=[];const n=ee=>{ee.transferReceipt&&r.push(ee.transferReceipt)},s=async ee=>{if(r.length===0)return;const te=r;await t.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:te,errorCode:ee}),r=[]},i=e.localServices?.readContentManifest||aI,l=e.localServices?.applyV2Batch||iI,c=e.localServices?.listContentPullObligations||VC,d=e.localServices?.recordContentPullObligationFailures||GC,m=async(ee,te)=>{const fe=await d(e.workspaceId,ee,te);if(!fe.ok)throw new Error(String(fe.data?.error||"Failed to persist content-pull retry state."))};let f=e.cursor,g=!0,h=0,y=0,k=0,v=0;const A=new Set;let b=!1,w=!1,R=!1,N=!1,j=!1,E=!1,S=!1,L=!1;const _=new Set,T=new Set,H=new Set;let q=null;const z={manifestEntries:0,bodiesRequested:0,bodiesTransferred:0,contentBytesTransferred:0,contentBytesAvoided:0,obligationsAttempted:0,obligationsResolved:0,obligationsRemaining:0},M=Number.isFinite(Number(e.maxPages))?Math.max(1,Math.floor(Number(e.maxPages))):20;let Z=new Map;const J=new Set;try{{const ee=await c(e.workspaceId,100);if(!ee.ok)throw new Error(String(ee.data?.error||`Local content-pull obligation read failed (${ee.status}).`));const te=Array.isArray(ee.data?.obligations)?ee.data.obligations:[];te.forEach(Ie=>{J.add(Kc(Ie))});const fe=te.filter(Ie=>k1(Ie));if(z.obligationsAttempted=fe.length,fe.length>0){const Ie=await t.pullWorkspaceContent({workspaceId:e.workspaceId,requests:fe.map(({kind:$e,path:Ye})=>({kind:$e,path:Ye})),previousCursor:f});if(n(Ie),Ie.ok){const $e=Ie.data||{},Ye=Array.isArray($e.changes)?$e.changes:[],ye=Array.isArray($e.contentMetadata)?$e.contentMetadata:[],ge=new Map(ye.map(W=>[`${W.kind}:${W.path}`,W])),oe=new Map(fe.map(W=>[Kc(W),W]));if(ge.size!==ye.length||ye.some(W=>!oe.has(`${W.kind}:${W.path}`)))throw await m(fe.map(Kc),"Content response contained duplicate or unexpected authoritative metadata."),new Error("Workspace content obligation response contained invalid authoritative metadata.");const ie=[],me=[];for(const W of Ye){if(W.op!=="document-upsert"&&W.op!=="asset-upsert")throw await m(fe.map(Kc),`Content response contained invalid operation ${W.op}.`),new Error(`Workspace content obligation returned invalid operation: ${W.op}.`);const V=W.op==="document-upsert"?"document":"asset",B=`${V}:${W.path}`;if(!oe.has(B))throw await m(fe.map(Kc),`Content response contained unexpected body ${B}.`),new Error(`Workspace content obligation returned an unexpected body: ${B}.`);const D=ge.get(B);if(!D)throw await m([B],"Content response omitted authoritative metadata."),new Error(`Workspace content obligation omitted authoritative metadata: ${B}.`);if(ie.includes(B))throw await m([B],"Content response contained a duplicate body."),new Error(`Workspace content obligation returned a duplicate body: ${B}.`);if(typeof process<"u"&&_l?.TASKFORCE_SYNC_KEY)try{await gg(W,_l.TASKFORCE_SYNC_KEY)}catch(K){throw await m([B],String(K?.message||"Content decryption failed.")),K}const be=await Og(V,W.op==="document-upsert"?W.content:W.contentBase64);if(be.sha256!==String(D.sha256||"").toLowerCase()||be.sizeBytes!==Number(D.sizeBytes)||String(D.updatedAt||"")<String(oe.get(B)?.sourceWatermark||"")||String(W.updatedAt||"")<String(oe.get(B)?.sourceWatermark||""))throw await m([B],"Authoritative content response was stale or failed verification."),new Error(`Workspace content obligation verification failed: ${B}.`);ie.push(B);const Se=oe.get(B);me.push({kind:V,path:W.path,resolution:"exact-version",sourceWatermark:Se.sourceWatermark,metadataFingerprint:Se.metadataFingerprint})}if(Ye.length>0){const W=r.length>0?t.buildV2ApplyCompletionGroup({workspaceId:e.workspaceId,previousCursor:f,nextCursor:f,receipts:r}):void 0;if(r.length>0&&!W)throw new Error("Content-obligation receipts did not produce an apply completion group.");let V;try{V=await l(e.workspaceId,Ye,{repairMode:e.repairMode===!0,excludedProjections:e.excludedProjections,contentPullResolutionClaims:me,...W?{completionGroup:W}:{}})}catch(D){throw await m(ie,String(D?.message||"Content obligation apply failed.")),D}if(!V.ok||Aa(V.data).success===!1)throw await m(ie,String(Aa(V.data).error||"Workspace content obligation apply failed.")),new Error(String(Aa(V.data).error||"Workspace content obligation apply failed."));r=[],z.obligationsResolved=ie.length;const B=fe.map(Kc).filter(D=>!ie.includes(D));B.length>0&&await m(B,"Authoritative content body remains unavailable.")}else{if(r.length>0){const W=t.buildV2ApplyCompletionGroup({workspaceId:e.workspaceId,previousCursor:f,nextCursor:f,receipts:r});if(!W)throw new Error("Unavailable content receipts did not produce an apply completion group.");const V=await l(e.workspaceId,[],{repairMode:e.repairMode===!0,excludedProjections:e.excludedProjections,completionGroup:W});if(!V.ok||Aa(V.data).success===!1)throw new Error(String(Aa(V.data).error||"Unavailable content receipt settlement failed."));r=[]}await m(fe.map(Kc),"Authoritative content body remains unavailable.")}}else await s("WORKSPACE_SYNC_CONTENT_OBLIGATION_RETRY"),await m(fe.map(Kc),String(Aa(Ie.data).error||`Content pull failed (${Ie.status}).`))}z.obligationsRemaining=Math.max(0,te.length-z.obligationsResolved)}if(e.contentMode==="manifest"){const ee=await i(e.workspaceId);if(!ee.ok)throw new Error(`Local workspace content manifest failed (${ee.status||0}).`);const te=Array.isArray(ee.data?.entries)?ee.data.entries:[];Z=new Map(te.map(fe=>[`${fe.kind}:${fe.path}`,fe]))}for(;g&&h<M;){const ee=async()=>{const B=Date.now(),D=await t.pullWorkspaceChanges({workspaceId:e.workspaceId,cursor:f,limit:e.bootstrap?500:200,repairMode:e.repairMode===!0,contentMode:e.contentMode,excludeInitiatives:e.excludeInitiatives,excludedProjections:e.excludedProjections});return k+=Date.now()-B,D};let te=await ee();if(n(te),!te.ok&&te.status===403&&e.ensureCloudWorkspaceReadyForSync&&(await e.ensureCloudWorkspaceReadyForSync()).success&&(await s("WORKSPACE_SYNC_V2_PULL_RETRY"),te=await ee(),n(te)),!te.ok){await s("WORKSPACE_SYNC_V2_PULL_REJECTED");const B=Aa(te.data);return{success:!1,kind:"pull_http",status:te.status,errorCode:typeof B.code=="string"?B.code:void 0,error:typeof B.error=="string"?B.error:void 0,retryAfterMs:te.retryAfterMs,transient:li(te.status),cursor:f,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:A,pulledActiveUpserts:b,pulledArchivedUpserts:w,pulledTaskEventUpserts:R,pulledPlanningUpserts:N,pulledTaskforceAgentUpserts:j,pulledTaskforceAgentSkillUpserts:S,pulledAgentConversationUpserts:L,documentDecryptFailures:Array.from(_),serverDiagnostics:null}}const fe=te.data||{};if(!e1(fe.excludedProjections,e.excludedProjections))return await s("SYNC_V2_PROJECTION_EXCLUSIONS_MISMATCH"),{success:!1,kind:"pull_http",status:502,errorCode:"SYNC_V2_PROJECTION_EXCLUSIONS_MISMATCH",error:"Cloud pull did not attest the requested v2 projection exclusions.",transient:!1,cursor:f,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:A,pulledActiveUpserts:b,pulledArchivedUpserts:w,pulledTaskEventUpserts:R,pulledPlanningUpserts:N,pulledTaskforceAgentUpserts:j,pulledTaskforceAgentSkillUpserts:S,pulledAgentConversationUpserts:L,documentDecryptFailures:Array.from(_),serverDiagnostics:null};let Ie=Array.isArray(fe?.changes)?fe.changes:[];const $e=new Map,Ye=[];if(e.contentMode==="manifest"){const B=[],D=[];for(const Se of Ie){if(Se.op!=="document-manifest"&&Se.op!=="asset-manifest"){D.push(Se);continue}const K=Se.manifest;if(z.manifestEntries+=1,!K.existsLocally){Ye.push({manifest:K,sourceWatermark:K.updatedAt}),J.add(`${K.kind}:${K.path}`);continue}const Y=`${K.kind}:${K.path}`,G=h1(K,Z.get(Y));G.shouldFetch?G.reasons.every(ae=>ae==="metadata-mismatch")?(D.push(Se),z.contentBytesAvoided+=Math.max(0,K.sizeBytes)):(B.push({kind:K.kind,path:K.path}),$e.set(Y,K),z.bodiesRequested+=1):z.contentBytesAvoided+=Math.max(0,K.sizeBytes)}const be=[...B];for(;be.length>0;){let Se=be.splice(0,100);for(;Se.length>0;){const K=await t.pullWorkspaceContent({workspaceId:e.workspaceId,requests:Se,previousCursor:f});if(!K.ok)throw n(K),new Error(`Workspace content pull failed (${K.status||0}).`);n(K);const Y=K.data||{},G=Array.isArray(Y.changes)?Y.changes:[],ae=Array.isArray(Y.missing)?Y.missing:[];if(ae.length>0){const Oe="path"in ae[0]?ae[0].path:ae[0].assetId;throw new Error(`Workspace content changed or disappeared during reconciliation: ${ae[0].kind}:${Oe}`)}D.push(...G);const _e=Array.isArray(Y.remaining)?Y.remaining:[];if(G.length===0&&_e.length>=Se.length)throw new Error("Workspace content pull made no progress.");Se=_e}}Ie=D}else{const B=[];for(const D of Ie){if(D.op!=="document-manifest"&&D.op!=="asset-manifest"){B.push(D);continue}Ye.push({manifest:D.manifest,sourceWatermark:D.manifest.updatedAt}),J.add(`${D.manifest.kind}:${D.manifest.path}`)}Ie=B}const ye=fe?.diagnostics&&typeof fe.diagnostics=="object"?fe.diagnostics:null;q=ye;const ge=Array.isArray(fe?.workspaceMembers),oe=ge?fe.workspaceMembers:void 0;for(const B of Ie){if(B.op==="upsert"){B?.archived===!0||B?.task?.isArchived===!0?w=!0:b=!0;continue}if(B.op==="annotated-attachment-session-upsert"){const be=String(B?.session?.id||"").trim();be&&H.add(be);continue}if(B.op==="task-event-upsert"||B.op==="entity-event-upsert"){R=!0;continue}if(B.op==="initiative-upsert"||B.op==="workstream-upsert"){N=!0;continue}if(B.op==="taskforce-agent-upsert"){j=!0;continue}if(B.op==="agent-role-upsert"){E=!0;continue}if(B.op==="taskforce-agent-skill-upsert"){S=!0;continue}if(B.op==="agent-conversation-upsert"){L=!0;continue}if(B.op==="document-upsert"){if(typeof B.content=="string"&&typeof process<"u"&&_l?.TASKFORCE_SYNC_KEY)try{await gg(B,_l.TASKFORCE_SYNC_KEY)}catch{const be=String(B.path||"").trim();be&&_.add(be)}continue}if(B.op==="asset-upsert"){if(typeof B.contentBase64=="string"&&typeof process<"u"&&_l?.TASKFORCE_SYNC_KEY)try{await gg(B,_l.TASKFORCE_SYNC_KEY)}catch{const be=String(B.path||"").trim();be&&_.add(be)}continue}if(B.op!=="delete")continue;const D=String(B.taskId||"").trim();D&&A.add(D)}if(e.contentMode==="manifest"&&$e.size>0){const B=new Set;for(const D of Ie){if(D.op!=="document-upsert"&&D.op!=="asset-upsert")continue;const be=D.op==="document-upsert"?"document":"asset",Se=$e.get(`${be}:${D.path}`);if(!Se)continue;const K=await Og(be,D.op==="document-upsert"?D.content:D.contentBase64);if(Se.sha256&&K.sha256!==Se.sha256.toLowerCase()||K.sizeBytes!==Se.sizeBytes)throw new Error(`Workspace content verification failed for ${be}:${D.path}.`);B.add(`${be}:${D.path}`),z.bodiesTransferred+=1,z.contentBytesTransferred+=K.sizeBytes}if(B.size!==$e.size)throw new Error("Workspace content pull did not return every requested body.")}e.onPagePulled&&e.onPagePulled();const ie=fe&&"nextCursor"in fe&&(fe.nextCursor===null||typeof fe.nextCursor=="string")?fe.nextCursor:f,me=Ie.flatMap(B=>B.op!=="document-delete"&&B.op!=="asset-delete"?[]:B.deletedAt?[{kind:B.op==="document-delete"?"document":"asset",path:B.path,resolution:"at-or-before-watermark",sourceWatermark:B.deletedAt}]:[]),W=e.bootstrap&&!fe?.hasMore,V=r.length>0?t.buildV2ApplyCompletionGroup({workspaceId:e.workspaceId,previousCursor:f,nextCursor:ie,receipts:r}):void 0;if(r.length>0&&!V)throw new Error("V2 sync transfer receipts did not produce an apply completion group.");if(Ie.length>0||Ye.length>0||ge||V||W){const B=Date.now(),D=await l(e.workspaceId,Ie,{...ge?{workspaceMembers:oe}:{},repairMode:e.repairMode===!0,excludedProjections:e.excludedProjections,...W?{bootstrapSnapshot:{currentAnnotatedAttachmentSessionIds:Array.from(H)}}:{},...V?{completionGroup:V}:{},...Ye.length>0?{contentPullObligations:Ye}:{},...me.length>0?{contentPullResolutionClaims:me}:{}}),be=D.failures;if(!D.ok){v+=Date.now()-B,await s("WORKSPACE_SYNC_V2_APPLY_NOT_COMMITTED");const K=Aa(D.data);if(be.some(ae=>ae.endsWith(":401")))return{success:!1,kind:"apply_auth",status:401,transient:!1,failures:be,cursor:f,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:A,pulledActiveUpserts:b,pulledArchivedUpserts:w,pulledTaskEventUpserts:R,pulledPlanningUpserts:N,pulledTaskforceAgentUpserts:j,pulledTaskforceAgentSkillUpserts:S,pulledAgentConversationUpserts:L,documentDecryptFailures:Array.from(_),serverDiagnostics:ye};const G=be.some(ae=>{if(ae.endsWith(":network"))return!0;const _e=ae.split(":").pop()||"",Oe=Number.parseInt(_e,10);return Number.isFinite(Oe)&&(Oe===429||Oe>=500)});return{success:!1,kind:"apply_all_candidates",status:D.status||void 0,transient:G,error:String(K.error||"").trim()||void 0,failures:be,hasTransientApplyFailure:G,cursor:f,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:A,pulledActiveUpserts:b,pulledArchivedUpserts:w,pulledTaskEventUpserts:R,pulledPlanningUpserts:N,pulledTaskforceAgentUpserts:j,pulledTaskforceAgentSkillUpserts:S,pulledAgentConversationUpserts:L,documentDecryptFailures:Array.from(_),emittedEventIds:Array.from(T),serverDiagnostics:q}}const Se=Aa(D.data);if(Se.success===!1)return v+=Date.now()-B,await s("WORKSPACE_SYNC_V2_APPLY_NOT_COMMITTED"),{success:!1,kind:"apply_payload",transient:!1,error:String(Se.error||"Workspace sync apply failed."),cursor:f,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:A,pulledActiveUpserts:b,pulledArchivedUpserts:w,pulledTaskEventUpserts:R,pulledPlanningUpserts:N,pulledTaskforceAgentUpserts:j,pulledTaskforceAgentSkillUpserts:S,pulledAgentConversationUpserts:L,documentDecryptFailures:Array.from(_),emittedEventIds:Array.from(T),serverDiagnostics:q};if(v+=Date.now()-B,y+=Ie.length,Array.isArray(Se.emittedEventIds))for(const K of Se.emittedEventIds)T.add(String(K));Ie.some(K=>K.op==="ai-profile-upsert")&&e.onAiProfilesApplied?.(),e.onChangesApplied&&e.onChangesApplied(Ie.length),me.forEach(K=>{J.delete(Kc(K))})}r=[],fe&&"nextCursor"in fe&&(fe.nextCursor===null||typeof fe.nextCursor=="string")&&(f=fe.nextCursor),g=!!fe?.hasMore,h+=1}return{success:!0,hasMore:g,syncedAt:new Date().toISOString(),cursor:f||null,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:A,pulledActiveUpserts:b,pulledArchivedUpserts:w,pulledTaskEventUpserts:R,pulledPlanningUpserts:N,pulledTaskforceAgentUpserts:j,pulledAgentRoleUpserts:E,pulledTaskforceAgentSkillUpserts:S,pulledAgentConversationUpserts:L,documentDecryptFailures:Array.from(_),emittedEventIds:Array.from(T),serverDiagnostics:e.contentMode==="manifest"?{...q||{},contentReconciliation:z}:q}}catch(ee){let te=ee;try{await s("WORKSPACE_SYNC_V2_APPLY_NOT_COMMITTED")}catch(fe){te=fe}return{success:!1,kind:"exception",status:0,transient:!0,error:String(te?.message||te||"Workspace sync pull failed unexpectedly."),cursor:f||null,pages:h,appliedChanges:y,pullRequestMs:k,applyMs:v,pulledDeleteTaskIds:A,pulledActiveUpserts:b,pulledArchivedUpserts:w,pulledTaskEventUpserts:R,pulledPlanningUpserts:N,pulledTaskforceAgentUpserts:j,pulledTaskforceAgentSkillUpserts:S,pulledAgentConversationUpserts:L,documentDecryptFailures:Array.from(_),emittedEventIds:Array.from(T),serverDiagnostics:e.contentMode==="manifest"?{...q||{},contentReconciliation:z}:q}}}async function E1(e){const t=await s1(e.resolveCloudAuthUrl);if(!t.ok){const h=Number(t.status||0);return{success:!1,error:`Sync pull failed (${t.status})`,statusCode:t.status,retryAfterMs:t.retryAfterMs,transient:li(h)}}const r=Aa(t.data),n=r.settings&&typeof r.settings=="object"?r.settings:{},s=typeof r.updatedAt=="string"&&r.updatedAt.trim().length>0?r.updatedAt.trim():null,i=e.getLocalUpdatedAt(e.userId),l=i?Date.parse(i):NaN,c=s?Date.parse(s):NaN;if(!i&&e.preferCloudOnFirstSync&&Number.isFinite(c))return await e.applyRemoteSettings(n),{success:!0,mode:"pulled",updatedAt:s};if(Number.isFinite(c)&&(!Number.isFinite(l)||c>l))return await e.applyRemoteSettings(n),{success:!0,mode:"pulled",updatedAt:s};const d=i||new Date().toISOString(),m=await o1(e.resolveCloudAuthUrl,{settings:e.buildLocalSettings(),updatedAt:d});if(!m.ok){const h=Number(m.status||0);return{success:!1,error:`Sync push failed (${m.status})`,statusCode:m.status,retryAfterMs:m.retryAfterMs,transient:li(h)}}const f=Aa(m.data);return{success:!0,mode:"pushed",updatedAt:typeof f.updatedAt=="string"&&f.updatedAt.trim().length>0?f.updatedAt.trim():d}}function N1(e){const t=Math.max(1,Math.floor(Number(e)||1)),r=Math.min(12e4,1500*2**Math.max(0,t-1)),n=Math.floor(r*(.15*Math.random()));return r+n}function D1(e){const t=String(e||"").trim().replace(/\\/g,"/");if(!t||t.startsWith("/"))return null;const r=t.split("/").filter(Boolean);return r.length===0||r.some(n=>n==="."||n==="..")?null:r.join("/")}function M1(e){const t=D1(e);return!t||!["users/","workspaces/","system/","tmp/","quarantine/"].some(n=>t.startsWith(n))?null:t}function L1(e){return String(e||"").trim()}function O1(e,t){return L1(e).replace(/[^a-zA-Z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")||t}function B1(e,t){const r=O1(t,"default"),n=String(e||"").replace(/\\/g,"/");return(n.startsWith(`workspaces/${r}/assets/ai-profiles/`)||n.startsWith(`workspaces/${r}/assets/images/ai-profiles/`))&&n.includes("/avatar/")}function W1(e,t){const r=String(e||"").trim();if(!r.startsWith("/api/taskforce/context/"))return null;const n=r.slice(23).split(/[?#]/,1)[0]||"";if(!n)return null;try{return t(decodeURIComponent(n))}catch{return null}}function $1(e,t){return B1(e,t)}function F1(e){const t=e.split("/").pop()||"",r=t.lastIndexOf("."),n=r>=0?t.slice(r).toLowerCase():"";return n===".png"?"image/png":n===".jpg"||n===".jpeg"?"image/jpeg":n===".webp"?"image/webp":n===".gif"?"image/gif":"application/octet-stream"}function U1(e){return String(e||"").match(/(^|\/)(asset-[a-f0-9]{32})(?=[^/]*$)/i)?.[2]}function z1(e,t,r){const n=new Map;for(const s of Array.isArray(e)?e:[]){const i=String(s?.updatedAt||s?.createdAt||"").trim();for(const l of[s?.avatarUrl,s?.avatarSourceUrl]){const c=W1(l,r);!c||!$1(c,t)||n.has(c)||n.set(c,{updatedAt:i,assetId:U1(c),originalFilename:c.split("/").pop()||c,mimeType:F1(c)})}}return n}const H1=new Set(["assetId","path","caption","displayName","originalFilename","referenceNumber","referenceLabel","linkRole"]);[...H1];function _v(e,t){return e<t?-1:e>t?1:0}function ci(e){return typeof e!="string"?void 0:e.trim()||void 0}function ap(e){if(e!==void 0){if(!Array.isArray(e))throw new Error("Planning comments must be an array.");return e.map((t,r)=>{if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`Planning comment ${r} must be an object.`);const n=t,s=ci(n.id),i=ci(n.author),l=Date.parse(String(n.timestamp||"").trim());if(!s||!i||!Number.isFinite(l))throw new Error(`Planning comment ${r} has invalid identity, author, or timestamp.`);const c=ci(n.submittedAuthor);return{id:s,author:i,...c?{submittedAuthor:c}:{},text:String(n.text||""),timestamp:new Date(l).toISOString()}}).sort((t,r)=>_v(t.timestamp,r.timestamp)||_v(t.id,r.id))}}function sp(e){if(e!==void 0){if(!Array.isArray(e))throw new Error("Planning attachments must be an array.");return e.map((t,r)=>{if(typeof t=="string"){const h=t.trim();if(!h)throw new Error(`Planning attachment ${r} path is required.`);return h}if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`Planning attachment ${r} must be a path or object.`);const n=t,s=ci(n.path);if(!s)throw new Error(`Planning attachment ${r} path is required.`);const i=ci(n.fsPath),l=ci(n.timestamp),c=n.assetId===null?null:ci(n.assetId),d=n.referenceNumber===null?null:Number.isFinite(Number(n.referenceNumber))?Math.max(1,Math.floor(Number(n.referenceNumber))):void 0,m=n.referenceLabel===null?null:ci(n.referenceLabel),f=n.taskId===null?null:ci(n.taskId),g=n.linkRole==="attachment"||n.linkRole==="image"||n.linkRole==="reference"?n.linkRole:void 0;return{path:s,...i?{fsPath:i}:{},...typeof n.caption=="string"?{caption:n.caption}:{},...typeof n.displayName=="string"?{displayName:n.displayName}:{},...typeof n.originalFilename=="string"?{originalFilename:n.originalFilename}:{},...l?{timestamp:l}:{},...c!==void 0?{assetId:c}:{},...d!==void 0?{referenceNumber:d}:{},...m!==void 0?{referenceLabel:m}:{},...f!==void 0?{taskId:f}:{},...g?{linkRole:g}:{}}})}}function V1(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("Planning attachments must be an array.");return e.map((t,r)=>{if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`Durable planning attachment ${r} must be a canonical asset link.`);const n=t,s=ci(n.assetId),i=ci(n.path);if(!s||!i)throw new Error(`Durable planning attachment ${r} requires assetId and path.`);const l=n.referenceNumber===null?null:Number.isInteger(n.referenceNumber)&&Number(n.referenceNumber)>0?Number(n.referenceNumber):void 0,c=n.referenceLabel===null?null:ci(n.referenceLabel),d=n.linkRole==="attachment"||n.linkRole==="image"||n.linkRole==="reference"?n.linkRole:void 0;return{assetId:s,path:i,...typeof n.caption=="string"?{caption:n.caption}:{},...typeof n.displayName=="string"?{displayName:n.displayName}:{},...typeof n.originalFilename=="string"?{originalFilename:n.originalFilename}:{},...l!==void 0?{referenceNumber:l}:{},...c!==void 0?{referenceLabel:c}:{},...d?{linkRole:d}:{}}}).sort((t,r)=>_v(`${t.assetId}\0${t.linkRole||""}\0${t.path}\0${JSON.stringify(t)}`,`${r.assetId}\0${r.linkRole||""}\0${r.path}\0${JSON.stringify(r)}`))}function G1(e){return Array.isArray(e)?e.slice(0,24).flatMap(t=>{if(!t||typeof t!="object"||Array.isArray(t))return[];const r=t,n=String(r.name||"").trim();if(!n)return[];const s=String(r.resultText||"").trim().slice(0,4e3);return[{name:n.slice(0,120),...r.arguments&&typeof r.arguments=="object"&&!Array.isArray(r.arguments)?{arguments:r.arguments}:{},ok:r.ok!==!1,...s?{resultText:s}:{}}]}):[]}function K1(e){return Array.isArray(e)?e.flatMap(t=>{if(!t||typeof t!="object"||Array.isArray(t))return[];const r=t,n=r.role==="assistant"?"assistant":r.role==="user"?"user":null,s=String(r.content||"").trim();if(!n||!s)return[];const i={role:n,content:s};for(const c of["agentId","agentName","providerKey","providerLabel","modelKey","modelLabel","modelId"]){const d=String(r[c]||"").trim();d&&(i[c]=d)}const l=G1(r.toolActivity);return n==="assistant"&&l.length>0&&(i.toolActivity=l),[i]}):[]}const q1=["chat_app","ide","cli","coding_tool","agent"],Y1={chat_app:"Chat App",ide:"IDE",cli:"CLI",coding_tool:"Coding Tool",agent:"Agent"},Z1={chat_app:"Chat Apps",ide:"IDEs",cli:"CLI",coding_tool:"Coding Tools",agent:"Agents",unclassified:"Unclassified"};function J1(e){return typeof e=="string"&&q1.includes(e)}function hI(e){if(typeof e!="string")return null;const t=e.trim();return t==="other"?"agent":J1(t)?t:null}function Vre(e){return Y1[e]}function Gre(e){return e??"unclassified"}function Kre(e){return Z1[e]}const X1=["cloud_metered","local_unmetered"],Q1={cloud_metered:"Cloud MCP",local_unmetered:"Local MCP"};function eP(e){return typeof e=="string"&&X1.includes(e)}function gI(e){if(typeof e!="string")return null;const t=e.trim();return eP(t)?t:null}function qre(e){return Q1[e]}function Rl(e){if(e==null)return;const t=String(e).trim();return t.length>0?t:void 0}function Kn(e){if(e==null)return null;const t=String(e).trim();return t.length>0?t:null}function op(e){return Rl(e)}function Qc(e){return Kn(e)}function bs(e){return Kn(e)}function cf(e){const t=Kn(e);return t&&t.startsWith("/api/taskforce/context/")?t:null}function Bk(e){return Rl(e)}function wm(e){if(e!==void 0)return Kn(e)}function tP(e){return typeof e=="boolean"?e:void 0}function Lh(e,t){if(e===void 0)return;if(e===null||e==="")return t?.nullable?null:void 0;const r=typeof e=="number"?e:Number(e);if(!Number.isFinite(r))return t?.nullable?null:void 0;const n=Math.floor(r);return Number.isFinite(t?.min)&&n<Number(t?.min)?t?.nullable?null:void 0:n}function rP(e){if(!e||typeof e!="object"||Array.isArray(e))return;const r=Object.entries(e).reduce((n,[s,i])=>s==="approach"?n:Array.isArray(i)?(n[s]=i.map(l=>String(l??"")),n):(i==null||(n[s]=String(i)),n),{});return Object.keys(r).length>0?r:{}}function nP(e){if(Array.isArray(e))return e.map(t=>{const r=t;return{id:r.id,author:r.author,...r.submittedAuthor===void 0?{}:{submittedAuthor:r.submittedAuthor},text:r.text,timestamp:r.timestamp}})}function aP(e){return Array.isArray(e)?e:void 0}function sP(e){return Array.isArray(e)?e:void 0}function yI(e){const t=e&&typeof e=="object"?e:{},r=Object.prototype.hasOwnProperty.call(t,"cardCoverAssetId");return{id:String(t.id||"").trim(),title:String(t.title||"").trim(),description:t.description===void 0?void 0:t.description||null,status:String(t.status||"task").trim()||"task",priority:Lh(t.priority,{min:1})??void 0,complexity:Lh(t.complexity,{min:1,nullable:!0}),type:String(t.type||"").trim(),category:String(t.category||"").trim(),canceledReason:t.canceledReason===void 0?void 0:t.canceledReason||null,createdAt:String(t.createdAt||"").trim(),updatedAt:Bk(t.updatedAt),completedAt:t.completedAt===void 0?void 0:t.completedAt||null,isArchived:tP(t.isArchived),taxonomies:rP(t.taxonomies),createdBy:Bk(t.createdBy),assignee:Bk(t.assignee),scheduledDate:wm(t.scheduledDate),dueDate:wm(t.dueDate),scheduledWeekKey:wm(t.scheduledWeekKey),orderInDay:Lh(t.orderInDay,{min:0,nullable:!0}),workstreamId:wm(t.workstreamId),referenceNumber:Lh(t.referenceNumber,{min:1,nullable:!0}),comments:nP(t.comments),attachments:aP(t.attachments),...r?{cardCoverAssetId:wm(t.cardCoverAssetId)}:{},checklistItems:sP(t.checklistItems)}}function oP(e){if(!e||typeof e!="object"||Array.isArray(e))return{};const t=Object.entries(e).filter(([n])=>String(n||"").trim().length>0).sort(([n],[s])=>n.localeCompare(s)),r={};for(const[n,s]of t){if(Array.isArray(s)){r[n]=s.map(i=>String(i??"")).sort((i,l)=>i.localeCompare(l));continue}s!=null&&(r[n]=String(s))}return r}function iP(e){return Array.isArray(e)?e.map(t=>{const r=t&&typeof t=="object"?t:{};return{id:String(r.id||"").trim(),title:String(r.title||"").trim(),isCompleted:!!r.isCompleted,order:r.order===void 0||r.order===null?"":String(r.order)}}).sort((t,r)=>{const n=Number.parseInt(t.order,10),s=Number.parseInt(r.order,10);return Number.isFinite(n)&&Number.isFinite(s)&&n!==s?n-s:t.title!==r.title?t.title.localeCompare(r.title):t.id.localeCompare(r.id)}):[]}function cP(e){return Array.isArray(e)?e.map(t=>{const r=t&&typeof t=="object"?t:null;return{id:String(r?.id||"").trim(),author:String(r?.author||"").trim(),submittedAuthor:Rl(r?.submittedAuthor)||"",text:String(r?.text||""),timestamp:bs(r?.timestamp)||"",actor:r?.actor??null}}).sort((t,r)=>t.timestamp!==r.timestamp?t.timestamp.localeCompare(r.timestamp):t.id!==r.id?t.id.localeCompare(r.id):t.author!==r.author?t.author.localeCompare(r.author):t.text.localeCompare(r.text)):[]}function lP(e){return Array.isArray(e)?e.map(t=>{if(typeof t=="string")return{path:t.trim(),fsPath:"",caption:"",displayName:"",originalFilename:"",assetId:"",referenceNumber:"",taskId:"",timestamp:""};const r=t&&typeof t=="object"?t:null;return{path:String(r?.path||"").trim(),fsPath:Rl(r?.fsPath)||"",caption:Rl(r?.caption)||"",displayName:Rl(r?.displayName)||"",originalFilename:Rl(r?.originalFilename)||"",assetId:op(r?.assetId)||"",referenceNumber:r?.referenceNumber===void 0||r.referenceNumber===null?"":String(r.referenceNumber),taskId:Qc(r?.taskId)||"",timestamp:bs(r?.timestamp)||""}}).sort((t,r)=>t.path!==r.path?t.path.localeCompare(r.path):t.assetId!==r.assetId?t.assetId.localeCompare(r.assetId):t.timestamp!==r.timestamp?t.timestamp.localeCompare(r.timestamp):JSON.stringify(t).localeCompare(JSON.stringify(r))):[]}function dP(e,t){const r=yI(e);return JSON.stringify({id:r.id,title:r.title,description:Kn(r.description)||"",category:r.category,type:r.type,priority:r.priority===void 0||r.priority===null?"":String(r.priority),complexity:r.complexity===void 0||r.complexity===null?"":String(r.complexity),status:r.status,canceledReason:Kn(r.canceledReason)||"",createdAt:r.createdAt,completedAt:bs(r.completedAt)||"",taxonomies:oP(r.taxonomies),createdBy:op(r.createdBy)||"",assignee:op(r.assignee)||"",scheduledDate:Kn(r.scheduledDate)||"",dueDate:Kn(r.dueDate)||"",scheduledWeekKey:Kn(r.scheduledWeekKey)||"",orderInDay:r.orderInDay===void 0||r.orderInDay===null?"":String(r.orderInDay),workstreamId:Qc(r.workstreamId)||"",referenceNumber:r.referenceNumber===void 0||r.referenceNumber===null?"":String(r.referenceNumber),comments:cP(r.comments),attachments:lP(r.attachments),checklistItems:iP(r.checklistItems),isArchived:t?"1":"0"})}function uP(...e){return e.reduce((t,r)=>{const n=bs(r)||"";return t?n&&n>t?n:t:n},"")}function fP(e){const t=e||{};return uP(t.createdAt,t.updatedAt,t.lastActiveAt,t.colorUpdatedAt,t.archivedAt,t.rosterStateUpdatedAt)}function kI(e){const t=e||{};return JSON.stringify({id:String(t.id||"").trim(),workspaceId:String(t.workspaceId||"").trim(),profileToken:String(t.profileToken||"").trim(),name:String(t.name||"").trim(),username:String(t.username||"").trim(),icon:String(t.icon||"Bot").trim()||"Bot",color:String(t.color||"#8b5cf6").trim()||"#8b5cf6",colorSource:Kn(t.colorSource)||"",colorUpdatedAt:bs(t.colorUpdatedAt)||"",avatarUrl:cf(t.avatarUrl)||"",avatarSourceUrl:cf(t.avatarSourceUrl)||"",avatarRevision:Number.isFinite(Number(t.avatarRevision))?Math.max(0,Math.floor(Number(t.avatarRevision))):0,avatarUpdatedAt:bs(t.avatarUpdatedAt)||"",description:Kn(t.description)||"",role:Kn(t.role)||"",provider:Kn(t.provider)||"",model:Kn(t.model)||"",surfaceType:Kn(t.surfaceType)||"",seatScope:Kn(t.seatScope)||"",providerMetadata:t.providerMetadata&&typeof t.providerMetadata=="object"&&!Array.isArray(t.providerMetadata)?t.providerMetadata:null,archivedAt:bs(t.archivedAt)||"",archivedBy:op(t.archivedBy)||"",archivedReason:Kn(t.archivedReason)||"",mergedIntoProfileId:op(t.mergedIntoProfileId)||"",rosterStateUpdatedAt:bs(t.rosterStateUpdatedAt)||"",createdAt:bs(t.createdAt)||"",updatedAt:bs(t.updatedAt)||"",lastActiveAt:bs(t.lastActiveAt)||""})}function mP(e){return JSON.stringify(e.map(t=>kI(t)).sort())}function Dw(e){return hn(e||null)}function vI(e){return e.taxonomyState&&typeof e.taxonomyState=="object"?hn({taxonomyState:e.taxonomyState}):Array.isArray(e.taxonomies)?hn({taxonomies:e.taxonomies}):""}const ii={kind:"task",getId:e=>String(e?.id||"").trim(),getWatermark:e=>String(e?.updatedAt||e?.createdAt||"").trim(),getChangeKey:e=>dP(e,!!e?.isArchived)},Vm={kind:"ai-profile",getId:e=>String(e?.id||"").trim(),getWatermark:e=>fP(e),getChangeKey:e=>kI(e)};function fS(e,t,r){const n=e.getId(t);if(!n)return!1;const s=e.getChangeKey(t),i=r?.watermarks;if(!i||i.size===0||!i.has(n))return!0;const c=r?.changeKeys?.get(n);return typeof c=="string"?c!==s:(i.get(n)||"")!==s}function mS(e){return yI(e)}function pS(e,t){const r=e??t;return new Set(Array.from(r).map(n=>String(n||"").trim()).filter(n=>n.length>0))}function pP(e){return[...e].sort((t,r)=>{const n=String(t?.createdAt||"").trim(),s=String(r?.createdAt||"").trim(),i=n.localeCompare(s);return i!==0?i:String(t?.id||"").trim().localeCompare(String(r?.id||"").trim())})}function hS(e){return[...e].sort((t,r)=>{const n=String(t?.id||"").trim(),s=String(r?.id||"").trim();return n.localeCompare(s)})}function hP(e){const t=new Date().toISOString(),r=new Set(Array.from(e.pendingDeletedTaskIds).map(u=>String(u||"").trim()).filter(u=>u.length>0)),n=new Map(Array.from(e.pendingDeletedTaskWatermarks||new Map).map(([u,bt])=>[String(u||"").trim(),String(bt||"").trim()]).filter(([u,bt])=>u.length>0&&Number.isFinite(Date.parse(bt)))),s=new Map((e.deletedTasks||[]).map(u=>[String(u.taskId||"").trim(),u])),i=u=>{const bt=s.get(u);return{op:"delete",taskId:u,deletedAt:bt?.deletedAt||n.get(u)||t,...bt?{actor:bt.actor,actorType:bt.actorType,source:bt.source,details:bt.details}:{}}},l=e.lastPushedWatermarks,c=e.lastPushedTaskChangeKeys,d=(u,bt)=>(u?.referenceNumber===void 0||u?.referenceNumber===null)&&Number.isFinite(Number(u?.localReferenceNumber))?!0:fS(ii,{...u,isArchived:bt},{watermarks:l,changeKeys:c}),m=hS(e.tasks||[]),f=hS(e.archivedTasks||[]),g=new Map,h=new Map,y=new Map,k=new Map,v=m.filter(u=>!r.has(String(u?.id||"").trim())&&d(u,!1)).map(u=>{const bt=String(u?.id||"").trim(),gt=ii.getWatermark(u),Xr=ii.getChangeKey({...u,isArchived:!1});return bt&&(y.set(bt,gt),k.set(bt,Xr)),{op:"upsert",archived:!1,task:mS(u)}}),A=f.filter(u=>!r.has(String(u?.id||"").trim())&&d(u,!0)).map(u=>{const bt=String(u?.id||"").trim(),gt=ii.getWatermark(u),Xr=ii.getChangeKey({...u,isArchived:!0});return bt&&(y.set(bt,gt),k.set(bt,Xr)),{op:"upsert",archived:!0,task:mS(u)}}),b=new Set;for(const u of e.tasks||[]){const bt=String(u?.id||"").trim();bt&&(b.add(bt),g.set(bt,ii.getWatermark(u)),h.set(bt,ii.getChangeKey({...u,isArchived:!1})))}for(const u of e.archivedTasks||[]){const bt=String(u?.id||"").trim();bt&&(b.add(bt),g.set(bt,ii.getWatermark(u)),h.set(bt,ii.getChangeKey({...u,isArchived:!0})))}const w=Array.from(e.lastPushedTaskIds).filter(u=>!b.has(u)).map(u=>i(u)),R=Array.from(r).map(u=>i(u)),N=new Set([...w.map(u=>String(u.taskId)),...R.map(u=>String(u.taskId))]),j=e.lastPushedTaskRelationshipChangeKeys,E=new Map,S=(Array.isArray(e.taskRelationships)?e.taskRelationships:[]).filter(u=>u?.id&&Number.isFinite(Date.parse(String(u.updatedAt||"")))).map(u=>{const bt=String(u.id||"").trim(),gt=Dw(u);return E.set(bt,gt),{op:u.deletedAt?"task-relationship-delete":"task-relationship-upsert",relationship:u,relationshipId:bt,changeKey:gt}}).filter(u=>j?.get(u.relationshipId)!==u.changeKey).map(({relationshipId:u,changeKey:bt,...gt})=>gt),L=new Set((Array.isArray(e.initiatives)?e.initiatives:[]).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),_=new Map((Array.isArray(e.initiatives)?e.initiatives:[]).map(u=>[String(u?.id||"").trim(),String(u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),T=e.lastPushedInitiativeWatermarks,H=!T||T.size===0,q=(Array.isArray(e.initiatives)?e.initiatives:[]).map(u=>({op:"initiative-upsert",initiative:{id:String(u?.id||"").trim(),referenceNumber:Number.isFinite(Number(u?.referenceNumber))?Math.max(1,Math.floor(Number(u.referenceNumber))):null,referenceLabel:typeof u?.referenceLabel=="string"&&u.referenceLabel.trim().length>0?u.referenceLabel.trim():void 0,title:String(u?.title||"").trim(),description:typeof u?.description=="string"?u.description:null,ownerId:typeof u?.ownerId=="string"&&u.ownerId.trim().length>0?u.ownerId.trim():null,comments:ap(u?.comments),createdAt:String(u?.createdAt||"").trim(),updatedAt:String(u?.updatedAt||u?.createdAt||"").trim(),order:Number.isFinite(Number(u?.order))?Math.floor(Number(u.order)):null,attachments:sp(u?.attachments),isArchived:!!u?.isArchived}})).filter(u=>u.initiative.id.length>0).filter(u=>H?!0:T.get(u.initiative.id)!==u.initiative.updatedAt),z=new Set((Array.isArray(e.workstreams)?e.workstreams:[]).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),M=new Map((Array.isArray(e.workstreams)?e.workstreams:[]).map(u=>[String(u?.id||"").trim(),String(u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),Z=e.lastPushedWorkstreamWatermarks,J=!Z||Z.size===0,ee=(Array.isArray(e.workstreams)?e.workstreams:[]).map(u=>({op:"workstream-upsert",workstream:{id:String(u?.id||"").trim(),referenceNumber:Number.isFinite(Number(u?.referenceNumber))?Math.max(1,Math.floor(Number(u.referenceNumber))):null,referenceLabel:typeof u?.referenceLabel=="string"&&u.referenceLabel.trim().length>0?u.referenceLabel.trim():void 0,initiativeId:typeof u?.initiativeId=="string"&&u.initiativeId.trim().length>0?u.initiativeId.trim():null,title:String(u?.title||"").trim(),description:typeof u?.description=="string"?u.description:null,ownerId:typeof u?.ownerId=="string"&&u.ownerId.trim().length>0?u.ownerId.trim():null,comments:ap(u?.comments),createdAt:String(u?.createdAt||"").trim(),updatedAt:String(u?.updatedAt||u?.createdAt||"").trim(),order:Number.isFinite(Number(u?.order))?Math.floor(Number(u.order)):null,attachments:sp(u?.attachments),isArchived:!!u?.isArchived}})).filter(u=>u.workstream.id.length>0).filter(u=>J?!0:Z.get(u.workstream.id)!==u.workstream.updatedAt),te=e.lastPushedPlanningIdentityWatermarks,fe=new Map,Ie=[...(Array.isArray(e.initiatives)?e.initiatives:[]).map(u=>({entityType:"initiative",entityId:String(u?.id||"").trim(),icon:u?.icon??null,color:u?.color??null,updatedAt:String(u?.identityUpdatedAt||"").trim()})),...(Array.isArray(e.workstreams)?e.workstreams:[]).map(u=>({entityType:"workstream",entityId:String(u?.id||"").trim(),icon:u?.icon??null,color:u?.color??null,updatedAt:String(u?.identityUpdatedAt||"").trim()}))].filter(u=>u.entityId.length>0&&Number.isFinite(Date.parse(u.updatedAt))).map(u=>{const bt=`${u.entityType}:${u.entityId}`;return fe.set(bt,u.updatedAt),{op:"planning-identity-upsert",identity:u,identityKey:bt}}).filter(u=>te?.get(u.identityKey)!==u.identity.updatedAt).map(({identityKey:u,...bt})=>bt),$e=new Set((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Ye=new Map((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(u=>[String(u?.id||"").trim(),Vm.getWatermark(u)]).filter(([u])=>u.length>0)),ye=new Map((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(u=>[String(u?.id||"").trim(),Vm.getChangeKey(u)]).filter(([u])=>u.length>0)),ge=e.lastPushedAiProfileWatermarks,oe=e.lastPushedAiProfileChangeKeys,ie=!ge||ge.size===0,me=(Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(u=>({op:"ai-profile-upsert",profile:{id:String(u.id||"").trim(),workspaceId:String(u.workspaceId||"").trim(),profileToken:String(u.profileToken||"").trim(),name:String(u.name||"").trim(),username:String(u.username||"").trim(),icon:String(u.icon||"Bot").trim()||"Bot",color:String(u.color||"#8b5cf6").trim()||"#8b5cf6",colorSource:typeof u.colorSource=="string"?u.colorSource:null,colorUpdatedAt:typeof u.colorUpdatedAt=="string"?u.colorUpdatedAt:null,avatarUrl:cf(u.avatarUrl),avatarSourceUrl:cf(u.avatarSourceUrl),avatarRevision:Number.isFinite(Number(u.avatarRevision))?Math.max(0,Math.floor(Number(u.avatarRevision))):0,avatarUpdatedAt:typeof u.avatarUpdatedAt=="string"&&u.avatarUpdatedAt.trim().length>0?u.avatarUpdatedAt.trim():null,description:typeof u.description=="string"&&u.description.trim()||null,role:typeof u.role=="string"&&u.role.trim()||null,provider:typeof u.provider=="string"&&u.provider.trim()||null,model:typeof u.model=="string"&&u.model.trim()||null,surfaceType:hI(u.surfaceType),seatScope:gI(u.seatScope),providerMetadata:u.providerMetadata&&typeof u.providerMetadata=="object"&&!Array.isArray(u.providerMetadata)?u.providerMetadata:null,archivedAt:typeof u.archivedAt=="string"&&u.archivedAt.trim().length>0?u.archivedAt.trim():null,archivedBy:typeof u.archivedBy=="string"&&u.archivedBy.trim().length>0?u.archivedBy.trim():null,archivedReason:typeof u.archivedReason=="string"&&u.archivedReason.trim()||null,mergedIntoProfileId:typeof u.mergedIntoProfileId=="string"&&u.mergedIntoProfileId.trim().length>0?u.mergedIntoProfileId.trim():null,rosterStateUpdatedAt:typeof u.rosterStateUpdatedAt=="string"&&u.rosterStateUpdatedAt.trim().length>0?u.rosterStateUpdatedAt.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),lastActiveAt:typeof u.lastActiveAt=="string"&&u.lastActiveAt.trim().length>0?u.lastActiveAt.trim():null}})).filter(u=>u.profile.id.length>0&&u.profile.workspaceId.length>0).filter(u=>ie?!0:fS(Vm,u.profile,{watermarks:ge,changeKeys:oe})),W=pS(e.currentDocumentPaths,(Array.isArray(e.documents)?e.documents:[]).map(u=>String(u?.path||"").trim())),B=e.documentsSnapshotComplete!==!1?new Set(Array.from(e.lastPushedDocumentPaths||new Set).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!W.has(u))):new Set,D=new Map((Array.isArray(e.documents)?e.documents:[]).map(u=>[String(u?.path||"").trim(),String(u?.updatedAt||"").trim()]).filter(([u])=>u.length>0)),be=e.lastPushedDocumentWatermarks,Se=!be||be.size===0,K=(Array.isArray(e.documents)?e.documents:[]).map(u=>({op:"document-upsert",path:String(u.path||"").trim(),updatedAt:String(u.updatedAt||"").trim(),content:typeof u.content=="string"?u.content:"",assetId:typeof u.assetId=="string"&&u.assetId.trim().length>0?u.assetId.trim():void 0,documentId:typeof u.documentId=="string"&&u.documentId.trim().length>0?u.documentId.trim():null,referenceNumber:Number.isFinite(Number(u.referenceNumber))?Math.max(1,Math.floor(Number(u.referenceNumber))):null,version:Number.isFinite(Number(u.version))?Math.max(1,Math.floor(Number(u.version))):null,taskId:typeof u.taskId=="string"&&u.taskId.trim().length>0?u.taskId.trim():null,linkTargetType:u.linkTargetType==="initiative"||u.linkTargetType==="workstream"||u.linkTargetType==="task"?u.linkTargetType:null,linkTargetId:typeof u.linkTargetId=="string"&&u.linkTargetId.trim().length>0?u.linkTargetId.trim():null,logicalName:typeof u.logicalName=="string"&&u.logicalName.trim().length>0?u.logicalName.trim():null,caption:typeof u.caption=="string"&&u.caption.trim().length>0?u.caption.trim():null,originalFilename:typeof u.originalFilename=="string"&&u.originalFilename.trim().length>0?u.originalFilename.trim():null,linkRole:u.linkRole==="reference"?"reference":"attachment",...u.links?{links:u.links}:{}})).filter(u=>u.path.length>0).filter(u=>Se?!0:be.get(u.path)!==u.updatedAt),Y=pS(e.currentAssetPaths,(Array.isArray(e.assets)?e.assets:[]).map(u=>String(u?.path||"").trim())),ae=e.assetsSnapshotComplete!==!1?new Set(Array.from(e.lastPushedAssetPaths||new Set).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!Y.has(u))):new Set,_e=new Map((Array.isArray(e.assets)?e.assets:[]).map(u=>[String(u?.path||"").trim(),String(u?.updatedAt||"").trim()]).filter(([u])=>u.length>0)),Oe=e.lastPushedAssetWatermarks,Fe=!Oe||Oe.size===0,st=(Array.isArray(e.assets)?e.assets:[]).map(u=>({op:"asset-upsert",path:String(u.path||"").trim(),updatedAt:String(u.updatedAt||"").trim(),contentBase64:typeof u.contentBase64=="string"?u.contentBase64:"",assetId:typeof u.assetId=="string"&&u.assetId.trim().length>0?u.assetId.trim():void 0,kind:u.kind==="image"?"image":"file",mimeType:typeof u.mimeType=="string"&&u.mimeType.trim().length>0?u.mimeType.trim():"application/octet-stream",referenceNumber:Number.isFinite(Number(u.referenceNumber))?Math.max(1,Math.floor(Number(u.referenceNumber))):null,taskId:typeof u.taskId=="string"&&u.taskId.trim().length>0?u.taskId.trim():null,linkTargetType:u.linkTargetType==="initiative"||u.linkTargetType==="workstream"||u.linkTargetType==="task"?u.linkTargetType:null,linkTargetId:typeof u.linkTargetId=="string"&&u.linkTargetId.trim().length>0?u.linkTargetId.trim():null,logicalName:typeof u.logicalName=="string"&&u.logicalName.trim().length>0?u.logicalName.trim():null,caption:typeof u.caption=="string"&&u.caption.trim().length>0?u.caption.trim():null,originalFilename:typeof u.originalFilename=="string"&&u.originalFilename.trim().length>0?u.originalFilename.trim():null,linkRole:u.linkRole==="reference"?"reference":u.linkRole==="image"?"image":"attachment",...u.links?{links:u.links}:{}})).filter(u=>u.path.length>0&&u.contentBase64.length>0).filter(u=>Fe?!0:Oe.get(u.path)!==u.updatedAt),ft=Array.isArray(e.documentReviewSessions)?e.documentReviewSessions:[],xe=new Set(ft.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),ke=new Set(ft.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),ve=e.lastPushedDocumentReviewSessionIds||new Set,Ve=new Map(ft.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),Ne=e.lastPushedDocumentReviewSessionWatermarks,de=!Ne||Ne.size===0,x=ft.map(u=>({op:"document-review-session-upsert",session:{id:String(u.id||"").trim(),assetId:String(u.assetId||"").trim(),documentId:typeof u.documentId=="string"&&u.documentId.trim().length>0?u.documentId.trim():null,documentVersion:Number.isFinite(Number(u.documentVersion))?Math.max(1,Math.floor(Number(u.documentVersion))):null,title:typeof u.title=="string"&&u.title.trim().length>0?u.title.trim():null,status:u.status==="resolved"?"resolved":"open",comments:[],createdByActorId:typeof u.createdByActorId=="string"&&u.createdByActorId.trim().length>0?u.createdByActorId.trim():null,updatedByActorId:typeof u.updatedByActorId=="string"&&u.updatedByActorId.trim().length>0?u.updatedByActorId.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim().length>0?u.deletedAt.trim():null}})).filter(u=>u.session.id.length>0&&u.session.assetId.length>0&&!u.session.deletedAt).filter(u=>de?!0:Ne.get(u.session.id)!==u.session.updatedAt),le=ft.filter(u=>String(u?.deletedAt||"").trim().length>0).map(u=>({sessionId:String(u?.id||"").trim(),deletedAt:String(u?.deletedAt||u?.updatedAt||u?.createdAt||t).trim()||t})).filter(u=>u.sessionId.length>0).filter(u=>de?!0:Ne.get(u.sessionId)!==u.deletedAt),Re=Array.from(ve).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!xe.has(u)),Je=[...Re.map(u=>({sessionId:u,deletedAt:t})),...le],X=new Set([...Re,...le.map(u=>u.sessionId)]),Ze=Array.isArray(e.documentReviewComments)?e.documentReviewComments:[],re=new Set(Ze.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Ee=new Set(Ze.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),je=e.lastPushedDocumentReviewCommentIds||new Set,Pe=new Map(Ze.map(u=>[String(u?.id||"").trim(),[u?.deletedAt,u?.threadStatusUpdatedAt,u?.updatedAt,u?.createdAt].map(bt=>String(bt||"").trim()).filter(bt=>Number.isFinite(Date.parse(bt))).sort().at(-1)||""]).filter(([u])=>u.length>0)),Ce=e.lastPushedDocumentReviewCommentWatermarks,Te=!Ce||Ce.size===0,pe=Ze.map(u=>({op:"document-review-comment-upsert",comment:{id:String(u.id||"").trim(),sessionId:String(u.sessionId||"").trim(),body:String(u.body||"").trim(),anchor:u.anchor??null,order:Number.isFinite(Number(u.order))?Math.max(0,Math.floor(Number(u.order))):0,authorActorId:typeof u.authorActorId=="string"&&u.authorActorId.trim().length>0?u.authorActorId.trim():null,updatedByActorId:typeof u.updatedByActorId=="string"&&u.updatedByActorId.trim().length>0?u.updatedByActorId.trim():null,deletedByActorId:typeof u.deletedByActorId=="string"&&u.deletedByActorId.trim().length>0?u.deletedByActorId.trim():null,parentCommentId:typeof u.parentCommentId=="string"&&u.parentCommentId.trim().length>0?u.parentCommentId.trim():null,threadStatus:u.parentCommentId?null:u.threadStatus==="resolved"?"resolved":"open",threadStatusUpdatedAt:typeof u.threadStatusUpdatedAt=="string"&&u.threadStatusUpdatedAt.trim().length>0?u.threadStatusUpdatedAt.trim():null,resolvedAt:typeof u.resolvedAt=="string"&&u.resolvedAt.trim().length>0?u.resolvedAt.trim():null,resolvedByActorId:typeof u.resolvedByActorId=="string"&&u.resolvedByActorId.trim().length>0?u.resolvedByActorId.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim().length>0?u.deletedAt.trim():null}})).filter(u=>u.comment.id.length>0&&u.comment.sessionId.length>0&&!u.comment.deletedAt).filter(u=>Te?!0:Ce.get(u.comment.id)!==([u.comment.threadStatusUpdatedAt,u.comment.updatedAt].filter(bt=>typeof bt=="string"&&Number.isFinite(Date.parse(bt))).sort().at(-1)||u.comment.updatedAt)),Me=Ze.filter(u=>String(u?.deletedAt||"").trim().length>0).map(u=>({commentId:String(u?.id||"").trim(),deletedAt:String(u?.deletedAt||u?.updatedAt||u?.createdAt||t).trim()||t,deletedByActorId:typeof u?.deletedByActorId=="string"&&u.deletedByActorId.trim().length>0?u.deletedByActorId.trim():null})).filter(u=>u.commentId.length>0).filter(u=>Te?!0:Ce.get(u.commentId)!==u.deletedAt),et=Array.from(je).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!re.has(u)),Ue=[...et.map(u=>({commentId:u,deletedAt:t,deletedByActorId:null})),...Me],yt=new Set([...et,...Me.map(u=>u.commentId)]),Le=Array.isArray(e.annotatedAttachmentSessions)?e.annotatedAttachmentSessions:[],mt=new Set(Le.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),kt=new Set(Le.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),He=e.lastPushedAnnotatedAttachmentSessionIds||new Set,rt=new Map(Le.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),It=e.lastPushedAnnotatedAttachmentSessionWatermarks,Xe=!It||It.size===0,wt=Le.map(u=>({op:"annotated-attachment-session-upsert",session:{id:String(u.id||"").trim(),workspaceId:String(u.workspaceId||"").trim(),taskId:String(u.taskId||"").trim(),baseImageAssetId:String(u.baseImageAssetId||"").trim(),title:typeof u.title=="string"&&u.title.trim().length>0?u.title.trim():null,globalInstruction:typeof u.globalInstruction=="string"&&u.globalInstruction.trim().length>0?u.globalInstruction.trim():null,annotations:Array.isArray(u.annotations)?u.annotations:[],createdByActorId:typeof u.createdByActorId=="string"&&u.createdByActorId.trim().length>0?u.createdByActorId.trim():null,updatedByActorId:typeof u.updatedByActorId=="string"&&u.updatedByActorId.trim().length>0?u.updatedByActorId.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim().length>0?u.deletedAt.trim():null}})).filter(u=>u.session.id.length>0&&u.session.workspaceId.length>0&&u.session.baseImageAssetId.length>0&&!u.session.deletedAt).filter(u=>Xe?!0:It.get(u.session.id)!==u.session.updatedAt),at=Le.filter(u=>String(u?.deletedAt||"").trim().length>0).map(u=>({sessionId:String(u?.id||"").trim(),deletedAt:String(u?.deletedAt||u?.updatedAt||u?.createdAt||t).trim()||t})).filter(u=>u.sessionId.length>0).filter(u=>Xe?!0:It.get(u.sessionId)!==u.deletedAt),U=Array.from(He).map(u=>String(u||"").trim()).filter(u=>u.length>0&&!mt.has(u)),he=[...U.map(u=>({sessionId:u,deletedAt:t})),...at],Ke=new Set([...U,...at.map(u=>u.sessionId)]),Et=Array.isArray(e.taskforceAgents)?e.taskforceAgents:[],vt=new Set(Et.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Bt=new Map(Et.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),dr=e.lastPushedTaskforceAgentWatermarks,er=!dr||dr.size===0,cr=Et.map(u=>({op:"taskforce-agent-upsert",agent:{id:String(u.id||"").trim(),tenantId:String(u.tenantId||"").trim()||void 0,workspaceId:String(u.workspaceId||"").trim(),...Object.prototype.hasOwnProperty.call(u,"definition")?{definition:u.definition,definitionRevision:Number(u.definitionRevision)||0,definitionHash:String(u.definitionHash||"").trim(),lifecycleStatus:String(u.lifecycleStatus||"").trim(),managedProfileId:typeof u.managedProfileId=="string"&&u.managedProfileId.trim()||null,configurationState:u.configurationState,configurationIssues:Array.isArray(u.configurationIssues)?u.configurationIssues:[]}:{},name:String(u.name||"").trim()||"Agent",modelProvider:"taskforce_hq",providerKey:String(u.providerKey||"").trim(),modelKey:String(u.modelKey||"").trim(),modelTier:String(u.modelTier||"").trim(),systemPrompt:typeof u.systemPrompt=="string"?u.systemPrompt:"",enabled:u.enabled!==!1,createdByUserId:typeof u.createdByUserId=="string"&&u.createdByUserId.trim().length>0?u.createdByUserId.trim():null,updatedByUserId:typeof u.updatedByUserId=="string"&&u.updatedByUserId.trim().length>0?u.updatedByUserId.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim().length>0?u.deletedAt.trim():null}})).filter(u=>u.agent.id.length>0&&u.agent.workspaceId.length>0).filter(u=>er?!0:dr.get(u.agent.id)!==(u.agent.deletedAt||u.agent.updatedAt)),Ot=Array.isArray(e.agentRoles)?e.agentRoles:[];Ot.forEach(u=>{const bt=String(u?.id||"").trim();if(!bt)return;const gt=`agent-role:${bt}`;String(u?.deletedAt||"").trim()||vt.add(gt),Bt.set(gt,String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim())});const fr=Ot.map(u=>({op:"agent-role-upsert",role:{id:String(u.id||"").trim(),tenantId:String(u.tenantId||"").trim()||void 0,workspaceId:String(u.workspaceId||"").trim(),lifecycleStatus:u.lifecycleStatus==="retired"?"retired":"active",currentRevision:Number(u.currentRevision)||0,currentContentHash:String(u.currentContentHash||"").trim(),definition:u.definition,revisions:Array.isArray(u.revisions)?u.revisions:[],createdByActorId:typeof u.createdByActorId=="string"&&u.createdByActorId.trim()||null,updatedByActorId:typeof u.updatedByActorId=="string"&&u.updatedByActorId.trim()||null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),retiredAt:typeof u.retiredAt=="string"&&u.retiredAt.trim()||null,deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim()||null}})).filter(u=>u.role.id.length>0&&u.role.workspaceId.length>0&&u.role.currentRevision>0&&u.role.currentContentHash.length>0).filter(u=>{if(er)return!0;const bt=`agent-role:${u.role.id}`;return dr.get(bt)!==(u.role.deletedAt||u.role.updatedAt)}),Ar=Array.isArray(e.taskforceAgentSkills)?e.taskforceAgentSkills:[],Lr=new Set(Ar.map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Wr=new Map(Ar.map(u=>[String(u?.id||"").trim(),String(u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),De=e.lastPushedTaskforceAgentSkillWatermarks,nt=!De||De.size===0,pt=Ar.map(u=>({op:"taskforce-agent-skill-upsert",skill:{...u,id:String(u.id||"").trim(),tenantId:String(u.tenantId||"").trim()||void 0,workspaceId:String(u.workspaceId||"").trim(),revision:Number(u.revision),contentHash:String(u.contentHash||"").trim(),createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim()}})).filter(u=>u.skill.id.length>0&&u.skill.workspaceId.length>0&&Number.isInteger(u.skill.revision)&&u.skill.revision>0).filter(u=>nt?!0:De.get(u.skill.id)!==u.skill.updatedAt),ut=Array.isArray(e.agentConversations)?e.agentConversations:[],Tt=new Set(ut.filter(u=>String(u?.deletedAt||"").trim().length===0).map(u=>String(u?.id||"").trim()).filter(u=>u.length>0)),Xt=new Map(ut.map(u=>[String(u?.id||"").trim(),String(u?.deletedAt||u?.updatedAt||u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),Nt=e.lastPushedAgentConversationWatermarks,Qt=!Nt||Nt.size===0,St=ut.map(u=>({op:"agent-conversation-upsert",conversation:{id:String(u.id||"").trim(),tenantId:String(u.tenantId||"").trim()||void 0,workspaceId:String(u.workspaceId||"").trim(),agentId:String(u.agentId||"").trim(),taskId:typeof u.taskId=="string"&&u.taskId.trim().length>0?u.taskId.trim():null,title:String(u.title||"Agent chat").trim()||"Agent chat",messages:K1(u.messages),modelProvider:typeof u.modelProvider=="string"&&u.modelProvider.trim().length>0?u.modelProvider.trim():null,modelId:typeof u.modelId=="string"&&u.modelId.trim().length>0?u.modelId.trim():null,usage:u.usage&&typeof u.usage=="object"?u.usage:null,latencyMs:Number.isFinite(Number(u.latencyMs))?Number(u.latencyMs):null,createdByUserId:typeof u.createdByUserId=="string"&&u.createdByUserId.trim().length>0?u.createdByUserId.trim():null,updatedByUserId:typeof u.updatedByUserId=="string"&&u.updatedByUserId.trim().length>0?u.updatedByUserId.trim():null,createdAt:String(u.createdAt||"").trim(),updatedAt:String(u.updatedAt||u.createdAt||"").trim(),deletedAt:typeof u.deletedAt=="string"&&u.deletedAt.trim().length>0?u.deletedAt.trim():null}})).filter(u=>u.conversation.id.length>0&&u.conversation.workspaceId.length>0&&u.conversation.agentId.length>0).filter(u=>Qt?!0:Nt.get(u.conversation.id)!==(u.conversation.deletedAt||u.conversation.updatedAt)),Kt=pP(Array.isArray(e.taskEvents)?e.taskEvents:[]),Ft=new Map(Kt.map(u=>[String(u?.id||"").trim(),String(u?.createdAt||"").trim()]).filter(([u])=>u.length>0)),ir=e.lastPushedTaskEventWatermarks,sr=!ir||ir.size===0,ot=Kt.map(u=>{const bt=u.entityType==="initiative"||u.entityType==="workstream"?u.entityType:"task",gt=String(u.entityId||u.taskId||"").trim(),Xr={id:String(u.id||"").trim(),workspaceId:String(u.workspaceId||"").trim(),entityType:bt,entityId:gt,taskId:bt==="task"?String(u.taskId||gt).trim():void 0,action:String(u.action||"").trim(),actor:String(u.actor||"system").trim()||"system",actorType:u.actorType==="ai"||u.actorType==="human"||u.actorType==="system"?u.actorType:"system",details:u.details&&typeof u.details=="object"&&!Array.isArray(u.details)?u.details:{},createdAt:String(u.createdAt||"").trim()};return bt==="task"?{op:"task-event-upsert",event:{...Xr,entityType:"task",taskId:String(Xr.taskId||gt).trim()}}:{op:"entity-event-upsert",event:{...Xr,entityType:bt,taskId:void 0}}}).filter(u=>u.event.id.length>0&&u.event.entityId.length>0&&u.event.workspaceId.length>0&&u.event.action.length>0&&Number.isFinite(Date.parse(u.event.createdAt))).filter(u=>sr?!0:ir.get(u.event.id)!==u.event.createdAt),or=vI({taxonomyState:e.taxonomyState,taxonomies:e.taxonomies}),Nr=or.length>0&&e.lastPushedTaxonomyChangeKey!==or,ur=[...q,...ee,...Ie,...Nr&&e.taxonomyState&&typeof e.taxonomyState=="object"?[{op:"taxonomy-upsert",taxonomyState:e.taxonomyState,updatedAt:t}]:Nr&&Array.isArray(e.taxonomies)?[{op:"taxonomy-upsert",taxonomies:e.taxonomies,updatedAt:t}]:[],...me,...K,...Array.from(B).map(u=>({op:"document-delete",path:u,deletedAt:t})),...st,...Array.from(ae).map(u=>({op:"asset-delete",path:u,deletedAt:t})),...x,...Je.map(u=>({op:"document-review-session-delete",sessionId:u.sessionId,deletedAt:u.deletedAt})),...pe,...Ue.map(u=>({op:"document-review-comment-delete",commentId:u.commentId,deletedAt:u.deletedAt,deletedByActorId:u.deletedByActorId})),...wt,...he.map(u=>({op:"annotated-attachment-session-delete",sessionId:u.sessionId,deletedAt:u.deletedAt})),...cr,...fr,...pt,...St,...ot,...v,...A,...S.filter(u=>!u.relationship.deletedAt),...S.filter(u=>!!u.relationship.deletedAt),...Array.from(N).map(u=>i(u))],ra=e.baselineResetReason??null,wr=u=>{const bt=u.upsertCount+(u.deleteCount||0);if(u.currentCount===0&&bt===0)return{mode:"none",reason:null,currentCount:0,baselineCount:u.baselineCount,changeCount:bt};if(u.alwaysFull)return{mode:bt>0?"send-all":"none",reason:bt>0?"full-state-domain":null,currentCount:u.currentCount,baselineCount:u.baselineCount,changeCount:bt};const gt=u.baselineCount===0&&u.currentCount>0&&u.upsertCount>=u.currentCount;return{mode:gt?"send-all":"delta",reason:gt?ra||"missing-baseline":null,currentCount:u.currentCount,baselineCount:u.baselineCount,changeCount:bt}},lr=ur.reduce((u,bt)=>{const gt=String(bt.op||"").trim();return u[gt]=(u[gt]||0)+1,u},{});return{changes:ur,currentTaskIds:new Set(Array.from(b).filter(u=>!r.has(u))),currentTaskWatermarks:new Map(Array.from(g.entries()).filter(([u])=>!r.has(u))),currentTaskChangeKeys:new Map(Array.from(h.entries()).filter(([u])=>!r.has(u))),currentTaskRelationshipChangeKeys:E,currentTaxonomyChangeKey:or,deleteTaskIds:N,currentInitiativeIds:L,currentInitiativeWatermarks:_,currentWorkstreamIds:z,currentWorkstreamWatermarks:M,currentPlanningIdentityWatermarks:fe,currentAiProfileIds:$e,currentAiProfileWatermarks:Ye,currentAiProfileChangeKeys:ye,currentDocumentPaths:W,deleteDocumentPaths:B,currentDocumentWatermarks:D,currentAssetPaths:Y,deleteAssetPaths:ae,currentAssetWatermarks:_e,currentDocumentReviewSessionIds:ke,deleteDocumentReviewSessionIds:X,currentDocumentReviewSessionWatermarks:Ve,currentDocumentReviewCommentIds:Ee,deleteDocumentReviewCommentIds:yt,currentDocumentReviewCommentWatermarks:Pe,currentAnnotatedAttachmentSessionIds:kt,deleteAnnotatedAttachmentSessionIds:Ke,currentAnnotatedAttachmentSessionWatermarks:rt,currentTaskforceAgentIds:vt,currentTaskforceAgentWatermarks:Bt,currentTaskforceAgentSkillIds:Lr,currentTaskforceAgentSkillWatermarks:Wr,currentAgentConversationIds:Tt,currentAgentConversationWatermarks:Xt,currentTaskEventWatermarks:Ft,pushedWatermarks:y,pushedTaskChangeKeys:k,deltaDiagnostics:{totalChanges:ur.length,byOp:lr,baselineResetReason:ra,domains:{tasks:wr({currentCount:b.size,baselineCount:l?.size||0,upsertCount:v.length+A.length,deleteCount:N.size}),taskRelationships:wr({currentCount:E.size,baselineCount:j?.size||0,upsertCount:lr["task-relationship-upsert"]||0,deleteCount:lr["task-relationship-delete"]||0}),initiatives:wr({currentCount:L.size,baselineCount:T?.size||0,upsertCount:q.length}),workstreams:wr({currentCount:z.size,baselineCount:Z?.size||0,upsertCount:ee.length}),planningIdentities:wr({currentCount:fe.size,baselineCount:te?.size||0,upsertCount:Ie.length}),aiProfiles:wr({currentCount:$e.size,baselineCount:ge?.size||0,upsertCount:me.length}),documents:wr({currentCount:W.size,baselineCount:be?.size||0,upsertCount:K.length,deleteCount:B.size}),assets:wr({currentCount:Y.size,baselineCount:Oe?.size||0,upsertCount:st.length,deleteCount:ae.size}),documentReviewSessions:wr({currentCount:ke.size,baselineCount:Ne?.size||0,upsertCount:x.length,deleteCount:X.size}),documentReviewComments:wr({currentCount:Ee.size,baselineCount:Ce?.size||0,upsertCount:pe.length,deleteCount:yt.size}),annotatedAttachmentSessions:wr({currentCount:kt.size,baselineCount:It?.size||0,upsertCount:wt.length,deleteCount:Ke.size}),taskforceAgents:wr({currentCount:vt.size,baselineCount:dr?.size||0,upsertCount:cr.length+fr.length}),taskforceAgentSkills:wr({currentCount:Lr.size,baselineCount:De?.size||0,upsertCount:pt.length}),agentConversations:wr({currentCount:Tt.size,baselineCount:Nt?.size||0,upsertCount:St.length}),taskEvents:wr({currentCount:Ft.size,baselineCount:ir?.size||0,upsertCount:ot.length}),taxonomy:wr({currentCount:e.taxonomyState&&typeof e.taxonomyState=="object"||Array.isArray(e.taxonomies)?1:0,baselineCount:e.lastPushedTaxonomyChangeKey?1:0,upsertCount:lr["taxonomy-upsert"]||0})}}}}function gP(e){const t=(e.tasks||[]).map(c=>`${c.id}:${c.updatedAt||c.createdAt||""}:${c.status}`).sort(),r=(e.archivedTasks||[]).map(c=>`${c.id}:${c.updatedAt||c.createdAt||""}:${c.status}`).sort(),n=e.pendingDeletedTaskIds?Array.from(e.pendingDeletedTaskIds).sort():[],s=(e.taskRelationships||[]).filter(c=>String(c?.id||"").trim().length>0&&Number.isFinite(Date.parse(String(c?.updatedAt||"")))).map(c=>({id:String(c.id||"").trim(),changeKey:Dw(c)})).sort((c,d)=>c.id.localeCompare(d.id)||c.changeKey.localeCompare(d.changeKey)),i=(e.initiatives||[]).map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),title:String(c.title||"").trim(),ownerId:typeof c.ownerId=="string"?c.ownerId.trim():"",comments:ap(c.comments)||[],attachments:sp(c.attachments)||[],isArchived:!!c.isArchived,icon:c.icon??null,color:c.color??null,identityUpdatedAt:String(c.identityUpdatedAt||"").trim()})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)),l=(e.workstreams||[]).map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),initiativeId:typeof c.initiativeId=="string"?c.initiativeId.trim():"",title:String(c.title||"").trim(),ownerId:typeof c.ownerId=="string"?c.ownerId.trim():"",comments:ap(c.comments)||[],attachments:sp(c.attachments)||[],isArchived:!!c.isArchived,icon:c.icon??null,color:c.color??null,identityUpdatedAt:String(c.identityUpdatedAt||"").trim()})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id));return JSON.stringify({workspaceId:e.workspaceId,initiatives:i,workstreams:l,taskRelationships:s,taxonomyState:e.taxonomyState&&typeof e.taxonomyState=="object"?e.taxonomyState:null,taxonomies:Array.isArray(e.taxonomies)?e.taxonomies:[],aiProfiles:Array.isArray(e.aiProfiles)?e.aiProfiles.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),name:String(c.name||"").trim(),username:String(c.username||"").trim(),archivedAt:String(c.archivedAt||"").trim(),archivedReason:String(c.archivedReason||"").trim(),mergedIntoProfileId:String(c.mergedIntoProfileId||"").trim(),rosterStateUpdatedAt:String(c.rosterStateUpdatedAt||"").trim()})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],taskEvents:Array.isArray(e.taskEvents)?e.taskEvents.map(c=>({id:String(c.id||"").trim(),taskId:String(c.taskId||"").trim(),action:String(c.action||"").trim(),actor:String(c.actor||"").trim(),actorType:c.actorType==="ai"||c.actorType==="human"||c.actorType==="system"?c.actorType:"system",createdAt:String(c.createdAt||"").trim()})).filter(c=>c.id.length>0&&c.taskId.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],documents:Array.isArray(e.documents)?e.documents.map(c=>({path:String(c.path||"").trim(),updatedAt:String(c.updatedAt||"").trim(),length:typeof c.content=="string"?c.content.length:0})).filter(c=>c.path.length>0).sort((c,d)=>c.path.localeCompare(d.path)):[],assets:Array.isArray(e.assets)?e.assets.map(c=>({path:String(c.path||"").trim(),updatedAt:String(c.updatedAt||"").trim(),length:typeof c.contentBase64=="string"?c.contentBase64.length:0,kind:c.kind==="image"?"image":"file"})).filter(c=>c.path.length>0).sort((c,d)=>c.path.localeCompare(d.path)):[],documentReviewSessions:Array.isArray(e.documentReviewSessions)?e.documentReviewSessions.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),assetId:String(c.assetId||"").trim(),status:c.status==="resolved"?"resolved":"open",deletedAt:String(c.deletedAt||"").trim(),commentCount:Array.isArray(c.comments)?c.comments.length:0})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],documentReviewComments:Array.isArray(e.documentReviewComments)?e.documentReviewComments.map(c=>({id:String(c.id||"").trim(),sessionId:String(c.sessionId||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),deletedAt:String(c.deletedAt||"").trim(),bodyLength:String(c.body||"").length})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],annotatedAttachmentSessions:Array.isArray(e.annotatedAttachmentSessions)?e.annotatedAttachmentSessions.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),taskId:String(c.taskId||"").trim(),baseImageAssetId:String(c.baseImageAssetId||"").trim(),deletedAt:String(c.deletedAt||"").trim(),annotationCount:Array.isArray(c.annotations)?c.annotations.length:0})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],taskforceAgents:Array.isArray(e.taskforceAgents)?e.taskforceAgents.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),deletedAt:String(c.deletedAt||"").trim(),definitionRevision:Number(c.definitionRevision)||0,definitionHash:String(c.definitionHash||"").trim(),lifecycleStatus:String(c.lifecycleStatus||"").trim(),managedProfileId:String(c.managedProfileId||"").trim(),name:String(c.name||"").trim(),modelTier:String(c.modelTier||"").trim(),providerKey:String(c.providerKey||"").trim(),modelKey:String(c.modelKey||"").trim(),enabled:c.enabled!==!1})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],agentRoles:Array.isArray(e.agentRoles)?e.agentRoles.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),deletedAt:String(c.deletedAt||"").trim(),lifecycleStatus:c.lifecycleStatus,currentRevision:Number(c.currentRevision)||0,currentContentHash:String(c.currentContentHash||"").trim(),revisionCount:Array.isArray(c.revisions)?c.revisions.length:0})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],taskforceAgentSkills:Array.isArray(e.taskforceAgentSkills)?e.taskforceAgentSkills.map(c=>({id:String(c.id||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),revision:Number(c.revision)||0,contentHash:String(c.contentHash||"").trim(),lifecycleStatus:String(c.lifecycleStatus||"").trim(),revisionCount:Array.isArray(c.revisions)?c.revisions.length:0})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],agentConversations:Array.isArray(e.agentConversations)?e.agentConversations.map(c=>({id:String(c.id||"").trim(),agentId:String(c.agentId||"").trim(),taskId:String(c.taskId||"").trim(),updatedAt:String(c.updatedAt||c.createdAt||"").trim(),deletedAt:String(c.deletedAt||"").trim(),messageCount:Array.isArray(c.messages)?c.messages.length:0,modelId:String(c.modelId||"").trim()})).filter(c=>c.id.length>0).sort((c,d)=>c.id.localeCompare(d.id)):[],active:t,archived:r,pendingDeletes:n})}function Tv(e,t,r=[],n=[]){const s=new Map;for(const i of[...e||[],...t||[]]){const l=Array.isArray(i?.taskEvents)?i.taskEvents:[];for(const c of l){const d=String(c?.id||"").trim(),m=String(c?.taskId||i?.id||"").trim(),f=String(c?.workspaceId||"").trim(),g=String(c?.createdAt||"").trim();if(!d||!m||!f||!g)continue;const h={id:d,workspaceId:f,entityType:"task",entityId:m,taskId:m,action:String(c?.action||"").trim(),actor:String(c?.actor||"system").trim()||"system",actorType:c?.actorType==="ai"||c?.actorType==="human"||c?.actorType==="system"?c.actorType:"system",details:c?.details,createdAt:g},y=s.get(d);(!y||h.createdAt>y.createdAt)&&s.set(d,h)}}for(const i of r||[]){const l=Array.isArray(i?.entityEvents)?i.entityEvents:[];for(const c of l){const d=String(c?.id||"").trim(),m=String(c?.entityId||i?.id||"").trim(),f=String(c?.workspaceId||"").trim(),g=String(c?.createdAt||"").trim();if(!d||!m||!f||!g)continue;const h={id:d,workspaceId:f,entityType:"initiative",entityId:m,action:String(c?.action||"").trim(),actor:String(c?.actor||"system").trim()||"system",actorType:c?.actorType==="ai"||c?.actorType==="human"||c?.actorType==="system"?c.actorType:"system",details:c?.details,createdAt:g},y=s.get(d);(!y||h.createdAt>y.createdAt)&&s.set(d,h)}}for(const i of n||[]){const l=Array.isArray(i?.entityEvents)?i.entityEvents:[];for(const c of l){const d=String(c?.id||"").trim(),m=String(c?.entityId||i?.id||"").trim(),f=String(c?.workspaceId||"").trim(),g=String(c?.createdAt||"").trim();if(!d||!m||!f||!g)continue;const h={id:d,workspaceId:f,entityType:"workstream",entityId:m,action:String(c?.action||"").trim(),actor:String(c?.actor||"system").trim()||"system",actorType:c?.actorType==="ai"||c?.actorType==="human"||c?.actorType==="system"?c.actorType:"system",details:c?.details,createdAt:g},y=s.get(d);(!y||h.createdAt>y.createdAt)&&s.set(d,h)}}return Array.from(s.values()).sort((i,l)=>i.createdAt!==l.createdAt?i.createdAt.localeCompare(l.createdAt):i.id.localeCompare(l.id))}function as(e){return Object.freeze(structuredClone(Array.from(e||[])))}function gS(e,t){return new Set(e?Array.from(e):t)}function yP(e){const t=as(e.tasks),r=as(e.archivedTasks),n=as(e.deletedTasks),s=as(e.initiatives),i=as(e.workstreams),l=as(e.documents),c=as(e.assets),d=e.pendingDeletedTaskIds?new Set(e.pendingDeletedTaskIds):new Set,m=e.pendingDeletedTaskWatermarks?new Map(e.pendingDeletedTaskWatermarks):new Map;if(!e.pendingDeletedTaskIds&&!e.pendingDeletedTaskWatermarks)for(const g of n){const h=String(g?.taskId||"").trim(),y=String(g?.deletedAt||"").trim();h&&(d.add(h),Number.isFinite(Date.parse(y))&&m.set(h,y))}const f=e.taskEvents?as(e.taskEvents):Object.freeze(Tv(t,r,s,i));return Object.freeze({workspaceId:String(e.workspaceId||"").trim(),tasks:t,archivedTasks:r,deletedTasks:n,pendingDeletedTaskIds:d,pendingDeletedTaskWatermarks:m,taskRelationships:as(e.taskRelationships),initiatives:s,workstreams:i,taxonomies:as(e.taxonomies),taxonomyState:e.taxonomyState?structuredClone(e.taxonomyState):void 0,aiProfiles:as(e.aiProfiles),documents:l,assets:c,currentDocumentPaths:gS(e.currentDocumentPaths,l.map(g=>g.path)),currentAssetPaths:gS(e.currentAssetPaths,c.map(g=>g.path)),documentsSnapshotComplete:e.documentsSnapshotComplete!==!1,assetsSnapshotComplete:e.assetsSnapshotComplete!==!1,documentReviewSessions:as(e.documentReviewSessions),documentReviewComments:as(e.documentReviewComments),annotatedAttachmentSessions:as(e.annotatedAttachmentSessions),taskforceAgents:as(e.taskforceAgents),agentRoles:as(e.agentRoles),taskforceAgentSkills:as(e.taskforceAgentSkills),agentConversations:as(e.agentConversations),taskEvents:f})}function yo(e){return new Set(e)}function ss(e){return new Map(e)}function kP(e,t){return new Set(z1(Array.from(e),t,r=>M1(String(r||"").trim())).keys())}function vP(e){const{snapshot:t,baseline:r}=e,n=e.forceAllAiProfiles===!0,s=n?kP(t.aiProfiles,t.workspaceId):new Set,i=yo(r.lastPushedAssetPaths),l=ss(r.lastPushedAssetWatermarks),c=yo(r.lastPushedDocumentPaths),d=ss(r.lastPushedDocumentWatermarks);for(const g of[...s,...e.forceAssetPaths||[]])i.delete(g),l.delete(g);for(const g of e.forceDocumentPaths||[])c.delete(g),d.delete(g);const m=structuredClone(hP({tasks:Array.from(t.tasks),archivedTasks:Array.from(t.archivedTasks),taskRelationships:Array.from(t.taskRelationships),taskEvents:Array.from(t.taskEvents),lastPushedTaskIds:yo(r.lastPushedTaskIds),pendingDeletedTaskIds:yo(t.pendingDeletedTaskIds),pendingDeletedTaskWatermarks:ss(t.pendingDeletedTaskWatermarks),deletedTasks:Array.from(t.deletedTasks),initiatives:Array.from(t.initiatives),workstreams:Array.from(t.workstreams),taxonomies:Array.from(t.taxonomies),taxonomyState:t.taxonomyState,lastPushedInitiativeIds:yo(r.lastPushedInitiativeIds),lastPushedInitiativeWatermarks:ss(r.lastPushedInitiativeWatermarks),lastPushedWorkstreamIds:yo(r.lastPushedWorkstreamIds),lastPushedWorkstreamWatermarks:ss(r.lastPushedWorkstreamWatermarks),lastPushedPlanningIdentityWatermarks:ss(r.lastPushedPlanningIdentityWatermarks||new Map),aiProfiles:Array.from(t.aiProfiles),lastPushedAiProfileIds:n?new Set:yo(r.lastPushedAiProfileIds),lastPushedAiProfileWatermarks:n?new Map:ss(r.lastPushedAiProfileWatermarks),lastPushedAiProfileChangeKeys:n?new Map:ss(r.lastPushedAiProfileChangeKeys),documents:Array.from(t.documents),assets:Array.from(t.assets),currentDocumentPaths:t.currentDocumentPaths,currentAssetPaths:t.currentAssetPaths,documentsSnapshotComplete:t.documentsSnapshotComplete,assetsSnapshotComplete:t.assetsSnapshotComplete,documentReviewSessions:Array.from(t.documentReviewSessions),documentReviewComments:Array.from(t.documentReviewComments),annotatedAttachmentSessions:Array.from(t.annotatedAttachmentSessions),taskforceAgents:Array.from(t.taskforceAgents),agentRoles:Array.from(t.agentRoles),taskforceAgentSkills:Array.from(t.taskforceAgentSkills),agentConversations:Array.from(t.agentConversations),lastPushedDocumentPaths:c,lastPushedDocumentWatermarks:d,lastPushedAssetPaths:i,lastPushedAssetWatermarks:l,lastPushedDocumentReviewSessionIds:yo(r.lastPushedDocumentReviewSessionIds),lastPushedDocumentReviewSessionWatermarks:ss(r.lastPushedDocumentReviewSessionWatermarks),lastPushedDocumentReviewCommentIds:yo(r.lastPushedDocumentReviewCommentIds),lastPushedDocumentReviewCommentWatermarks:ss(r.lastPushedDocumentReviewCommentWatermarks),lastPushedAnnotatedAttachmentSessionIds:yo(r.lastPushedAnnotatedAttachmentSessionIds),lastPushedAnnotatedAttachmentSessionWatermarks:ss(r.lastPushedAnnotatedAttachmentSessionWatermarks),lastPushedTaskforceAgentIds:n?new Set:yo(r.lastPushedTaskforceAgentIds),lastPushedTaskforceAgentWatermarks:n?new Map:ss(r.lastPushedTaskforceAgentWatermarks),lastPushedTaskforceAgentSkillIds:n?new Set:yo(r.lastPushedTaskforceAgentSkillIds),lastPushedTaskforceAgentSkillWatermarks:n?new Map:ss(r.lastPushedTaskforceAgentSkillWatermarks),lastPushedAgentConversationIds:yo(r.lastPushedAgentConversationIds),lastPushedAgentConversationWatermarks:ss(r.lastPushedAgentConversationWatermarks),lastPushedTaskEventWatermarks:ss(r.lastPushedTaskEventWatermarks),baselineResetReason:r.baselineResetReason,lastPushedWatermarks:ss(r.lastPushedWatermarks),lastPushedTaskChangeKeys:ss(r.lastPushedTaskChangeKeys),lastPushedTaskRelationshipChangeKeys:ss(r.lastPushedTaskRelationshipChangeKeys),lastPushedTaxonomyChangeKey:r.lastPushedTaxonomyChangeKey})),f=wI(t);return Object.freeze({snapshot:t,signature:f,payload:m})}function wI(e){return gP({workspaceId:e.workspaceId,tasks:Array.from(e.tasks),archivedTasks:Array.from(e.archivedTasks),taskRelationships:Array.from(e.taskRelationships),taskEvents:Array.from(e.taskEvents),pendingDeletedTaskIds:yo(e.pendingDeletedTaskIds),initiatives:Array.from(e.initiatives),workstreams:Array.from(e.workstreams),taxonomies:Array.from(e.taxonomies),taxonomyState:e.taxonomyState,aiProfiles:Array.from(e.aiProfiles),documents:Array.from(e.documents),assets:Array.from(e.assets),documentReviewSessions:Array.from(e.documentReviewSessions),documentReviewComments:Array.from(e.documentReviewComments),annotatedAttachmentSessions:Array.from(e.annotatedAttachmentSessions),taskforceAgents:Array.from(e.taskforceAgents),agentRoles:Array.from(e.agentRoles),taskforceAgentSkills:Array.from(e.taskforceAgentSkills),agentConversations:Array.from(e.agentConversations)})}function bI(e){return Rl(e)}function lc(e){return Kn(e)}function wP(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return null;const n=e,s=String(n.id||"").trim(),i=String(n.workspaceId||t||"").trim(),l=Number(n.currentRevision),c=Number.isInteger(l)&&l>0?l:0,d=String(n.currentContentHash||"").trim(),m=n.lifecycleStatus;return!s||!i||!c||!d||m!=="active"&&m!=="retired"||t&&i!==t?null:{id:s,tenantId:bI(n.tenantId),workspaceId:i,lifecycleStatus:m,currentRevision:c,currentContentHash:d,definition:n.definition,revisions:Array.isArray(n.revisions)?n.revisions.map(f=>({roleId:String(f?.roleId||s).trim()||s,revision:Number.isInteger(Number(f?.revision))&&Number(f?.revision)>0?Number(f.revision):0,definition:f?.definition,contentHash:String(f?.contentHash||"").trim(),createdByActorId:lc(f?.createdByActorId),createdAt:String(f?.createdAt||r||"").trim()})):[],createdByActorId:lc(n.createdByActorId),updatedByActorId:lc(n.updatedByActorId),createdAt:String(n.createdAt||r||"").trim(),updatedAt:String(n.updatedAt||r||n.createdAt||"").trim(),retiredAt:lc(n.retiredAt),deletedAt:lc(n.deletedAt)}}function bP(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return null;const n=e,s=String(n.id||"").trim(),i=String(n.workspaceId||t||"").trim(),l=String(n.lifecycleStatus||"").trim(),c=Number(n.revision);return!s||!i||!Number.isInteger(c)||c<1||t&&i!==t||l!=="active"&&l!=="retired"||!Array.isArray(n.revisions)?null:{id:s,tenantId:bI(n.tenantId),workspaceId:i,lifecycleStatus:l,definition:n.definition,revision:c,contentHash:String(n.contentHash||"").trim(),revisions:n.revisions.map(d=>{if(!d||typeof d!="object"||Array.isArray(d))return null;const m=d,f=Number(m.revision);return!Number.isInteger(f)||f<1?null:{revision:f,contentHash:String(m.contentHash||"").trim(),definition:m.definition,createdByActorId:lc(m.createdByActorId),createdAt:String(m.createdAt||r||"").trim()}}).filter(d=>d!==null),createdByActorId:lc(n.createdByActorId),updatedByActorId:lc(n.updatedByActorId),createdAt:String(n.createdAt||r||"").trim(),updatedAt:String(n.updatedAt||r||n.createdAt||"").trim(),retiredAt:lc(n.retiredAt),retiredByActorId:lc(n.retiredByActorId)}}function yS(e){if(!Array.isArray(e))return;const t=e.filter(r=>typeof r=="string"&&r.trim().length>0).map(r=>r.trim());return t.length>0?t:void 0}function SI(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return Array.isArray(t.categories)||Array.isArray(t.types)||Array.isArray(t.priorities)||Array.isArray(t.taxonomies)||!!t.displayLabels&&typeof t.displayLabels=="object"&&!Array.isArray(t.displayLabels)}function SP(e){const t=e||{};return{categories:Array.isArray(t.categories)?t.categories.map(n=>typeof n=="string"?{value:n.toLowerCase().replace(/\s+/g,"-"),label:n}:n):[],types:Array.isArray(t.types)?t.types.map(n=>({...gx(n.value),...n,aliases:Array.isArray(n.aliases)?n.aliases.filter(i=>typeof i=="string"&&i.trim().length>0).map(i=>i.trim()):void 0,status:n.status==="retired"?"retired":"active"})):[],priorities:Array.isArray(t.priorities)?t.priorities:[],taxonomies:Array.isArray(t.taxonomies)?t.taxonomies.map(n=>({...n,aliases:yS(n.aliases),options:Array.isArray(n.options)?n.options.map(s=>({...s,aliases:yS(s.aliases),status:s.status==="retired"?"retired":"active"})):[],status:n.status==="retired"?"retired":"active",formEnabled:n.formEnabled!==!1,filterEnabled:n.filterEnabled!==!1,sortEnabled:n.sortEnabled===!0})):[],displayLabels:{category:typeof t.displayLabels?.category=="string"&&t.displayLabels.category.trim().length>0?t.displayLabels.category.trim():void 0,type:typeof t.displayLabels?.type=="string"&&t.displayLabels.type.trim().length>0?t.displayLabels.type.trim():void 0,priority:typeof t.displayLabels?.priority=="string"&&t.displayLabels.priority.trim().length>0?t.displayLabels.priority.trim():void 0}}}function yg(){return{version:2,revision:null,enabled:!1,phase:"idle",setupIntent:null,startupFullReconcileCompletedAt:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null,lastErrorMessage:null,pushBaseline:null}}function kS(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,r=t.counter,n=typeof t.writerId=="string"?t.writerId.trim():"";return!Number.isSafeInteger(r)||Number(r)<1||!n||n.length>200?null:{counter:Number(r),writerId:n}}function AP(e,t){return e?t?e.counter!==t.counter?e.counter<t.counter?-1:1:e.writerId===t.writerId?0:e.writerId<t.writerId?-1:1:1:t?-1:0}function CP(e,t){const r=String(t||"").trim();if(!r)throw new Error("Workspace sync state revision writer is required");if(r.length>200)throw new Error("Workspace sync state revision writer is too long");if(e?.counter===Number.MAX_SAFE_INTEGER)throw new Error("Workspace sync state revision counter is exhausted");return{counter:(e?.counter||0)+1,writerId:r}}function sc(e){const t=String(e||"").trim();return t.length>0?t:null}function vS(e){return String(e||"").trim().toLowerCase()==="attach-cloud-import"?"attach-cloud-import":null}function IP(e){if(!Array.isArray(e)||e.length<2)return null;const t=String(e[0]||"").trim(),r=String(e[1]||"").trim();return!t||!r?null:[t,r]}function _P(e){return Array.isArray(e)?e.map(t=>String(t||"").trim()).filter(t=>t.length>0):[]}function wS(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,r=n=>Array.isArray(t[n])?t[n].map(s=>IP(s)).filter(s=>Array.isArray(s)):[];return{taskIds:_P(t.taskIds),taskWatermarks:r("taskWatermarks"),taskChangeKeys:r("taskChangeKeys"),taskRelationshipChangeKeys:r("taskRelationshipChangeKeys"),initiativeWatermarks:r("initiativeWatermarks"),workstreamWatermarks:r("workstreamWatermarks"),aiProfileWatermarks:r("aiProfileWatermarks"),aiProfileChangeKeys:r("aiProfileChangeKeys"),documentWatermarks:r("documentWatermarks"),assetWatermarks:r("assetWatermarks"),documentReviewSessionWatermarks:r("documentReviewSessionWatermarks"),documentReviewCommentWatermarks:r("documentReviewCommentWatermarks"),annotatedAttachmentSessionWatermarks:r("annotatedAttachmentSessionWatermarks"),taskEventWatermarks:r("taskEventWatermarks"),taxonomyStateFingerprint:String(t.taxonomyStateFingerprint||"").trim(),taxonomyChangeKey:String(t.taxonomyChangeKey||"")}}function TP(e,t){if(!!!(e.enabled??e.cloudSyncEnabled))return"idle";const n=String(e.phase||"").trim().toLowerCase();if(n==="idle"||n==="provision-local"||n==="attach-cloud"||n==="active"||n==="error")return n;const s=String(e.bootstrapMode||"").trim().toLowerCase();if(s==="provision-local"||s==="attach-cloud")return s;const i=String(e.sourceOfTruth||"").trim().toLowerCase();return e.onboardingCompleted?"active":i==="cloud"?t.lastPullAt?"active":"attach-cloud":i==="local"?t.lastPullAt||t.lastPushAt?"active":"provision-local":(t.lastPullAt||t.lastPushAt,"active")}function Wk(e){const t=yg();if(!e||typeof e!="object")return{state:t,changed:!1};const r=e,n=r.lastErrorMessage,s=typeof n=="string"&&n.trim().length>0?n:null,i={version:2,revision:kS(r.revision),enabled:!!(r.enabled??r.cloudSyncEnabled),phase:"idle",setupIntent:vS(r.setupIntent),startupFullReconcileCompletedAt:sc(r.startupFullReconcileCompletedAt),pullCursor:sc(r.pullCursor),lastPullAt:sc(r.lastPullAt),lastPushAt:sc(r.lastPushAt),lastSyncedAt:sc(r.lastSyncedAt),lastErrorMessage:s,pushBaseline:wS(r.pushBaseline)};i.phase=TP(r,i),i.enabled||(i.phase="idle",i.pullCursor=null);const c=Number(r.version||0)!==2||JSON.stringify(kS(r.revision))!==JSON.stringify(i.revision)||!!(r.enabled??r.cloudSyncEnabled)!==i.enabled||String(r.phase||"").trim()!==i.phase||vS(r.setupIntent)!==i.setupIntent||sc(r.startupFullReconcileCompletedAt)!==i.startupFullReconcileCompletedAt||sc(r.pullCursor)!==i.pullCursor||sc(r.lastPullAt)!==i.lastPullAt||sc(r.lastPushAt)!==i.lastPushAt||sc(r.lastSyncedAt)!==i.lastSyncedAt||s!==i.lastErrorMessage||JSON.stringify(wS(r.pushBaseline))!==JSON.stringify(i.pushBaseline);return{state:i,changed:c}}const xP="taskforce.sync.lease.v1",RP="taskforce.sync.completed.v1",PP="taskforce.sync.lease.v1",jP=2500,EP=9e3,NP=()=>!0;function Cl(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}function bm(e){const t=String(e||"").trim();return t.length>0?t:null}function $k(e){return`${xP}.${e}`}function bS(e,t){return`${RP}.${e}.${t}`}function DP(e){if(!e)return null;try{const t=JSON.parse(e),r=String(t?.workspaceId||"").trim(),n=String(t?.operation||"").trim(),s=String(t?.completedAt||"").trim();return!r||!Number.isFinite(Date.parse(s))||n!=="pull"&&n!=="push"&&n!=="repair"?null:{workspaceId:r,operation:n,completedAt:s}}catch{return null}}function MP(e){if(!e)return null;try{const t=JSON.parse(e),r=String(t?.ownerId||"").trim(),n=String(t?.workspaceId||"").trim(),s=String(t?.operation||"").trim(),i=String(t?.heartbeatAt||"").trim(),l=String(t?.expiresAt||"").trim();return!r||!n||!i||!l||s!=="pull"&&s!=="push"&&s!=="repair"?null:{ownerId:r,workspaceId:n,operation:s,heartbeatAt:i,expiresAt:l}}catch{return null}}function LP(e,t,r,n){return{ownerId:e,workspaceId:t,operation:r,heartbeatAt:new Date(n).toISOString(),expiresAt:new Date(n+EP).toISOString()}}function OP(e,t=Date.now()){if(!e)return!0;const r=Date.parse(e.expiresAt);return!Number.isFinite(r)||r<=t}function Fk(e,t){const r={...e,...t,version:2,phase:t.phase||e.phase,setupIntent:t.setupIntent===void 0?e.setupIntent??null:t.setupIntent??null,startupFullReconcileCompletedAt:t.startupFullReconcileCompletedAt===void 0?e.startupFullReconcileCompletedAt??null:bm(t.startupFullReconcileCompletedAt),pullCursor:t.pullCursor===void 0?e.pullCursor:bm(t.pullCursor),lastPullAt:t.lastPullAt===void 0?e.lastPullAt:bm(t.lastPullAt),lastPushAt:t.lastPushAt===void 0?e.lastPushAt:bm(t.lastPushAt),lastSyncedAt:t.lastSyncedAt===void 0?e.lastSyncedAt:bm(t.lastSyncedAt),lastErrorMessage:t.lastErrorMessage===void 0?e.lastErrorMessage:t.lastErrorMessage??null,pushBaseline:t.pushBaseline===void 0?e.pushBaseline??null:t.pushBaseline??null};return r.enabled||(r.phase="idle",r.setupIntent=null,r.pullCursor=null),r}function SS(e){return{...e,pushBaseline:null}}function BP(e){const{currentWorkspaceId:t,setWorkspaceCloudSyncEnabled:r,setWorkspaceSyncPhase:n,setWorkspaceSyncSetupIntent:s,setWorkspaceLastPullAt:i,setWorkspaceLastPushAt:l,setWorkspaceLastErrorMessage:c,isWorkspaceOperationAuthorized:d=NP}=e,[m,f]=o.useState(null),g=o.useRef(null),h=o.useRef(null),y=o.useRef(0),k=o.useRef(!1),v=o.useRef(!1),A=o.useRef(""),b=o.useRef(""),w=o.useRef(new Set),R=o.useRef(new Set),N=o.useRef(new Map),j=o.useRef(null),E=o.useRef(yg()),S=o.useRef(""),L=o.useRef(null),_=o.useRef(null),T=o.useRef(null),H=o.useRef(null);if(!S.current){const K=Date.now().toString(36),Y=Math.random().toString(36).slice(2,10);S.current=`sync-lease-${K}-${Y}`}const q=o.useCallback(()=>{y.current=0,h.current=null,g.current!==null&&typeof window<"u"&&(window.clearTimeout(g.current),g.current=null),f(null)},[]),z=o.useCallback((K,Y)=>{if(typeof window>"u"||!d())return;const G=Math.max(1,y.current+1);y.current=G;const ae=N1(G),_e=Number(Y?.minDelayMs),Oe=Number.isFinite(_e)&&_e>0?Math.max(ae,Math.floor(_e)):ae,Fe=Date.now()+Oe;h.current=Fe,f(new Date(Fe).toISOString()),g.current!==null&&window.clearTimeout(g.current),g.current=window.setTimeout(()=>{g.current=null,h.current=null,f(null),d()&&K()},Oe)},[d]),M=o.useCallback(()=>{const K=h.current;return typeof K=="number"&&Number.isFinite(K)&&K>Date.now()},[]),Z=o.useCallback(K=>{if(typeof window>"u")return null;const Y=String(K||"").trim();return Cl(Y)?MP(window.localStorage.getItem($k(Y))):null},[]),J=o.useCallback((K,Y)=>{if(typeof window>"u")return null;const G=String(K||"").trim();if(!Cl(G))return null;try{const ae=DP(window.localStorage.getItem(bS(G,Y)));return ae?.workspaceId===G&&ae.operation===Y?ae:null}catch{return null}},[]),ee=o.useCallback(K=>{const Y=String(K||"").trim();if(Y)try{H.current?.postMessage({workspaceId:Y})}catch{}},[]),te=o.useCallback((K,Y)=>{const G=String(K||"").trim();if(Cl(G))try{H.current?.postMessage({kind:"state",workspaceId:G,state:SS(Y)})}catch{}},[]),fe=o.useCallback((K,Y,G=new Date().toISOString())=>{if(typeof window>"u")return;const ae=String(K||"").trim();if(!(!Cl(ae)||!Number.isFinite(Date.parse(G))))try{window.localStorage.setItem(bS(ae,Y),JSON.stringify({workspaceId:ae,operation:Y,completedAt:new Date(G).toISOString()}))}catch{return}},[]),Ie=o.useCallback((K,Y,G,ae=Date.now())=>{const _e=J(K,Y),Oe=_e?Date.parse(_e.completedAt):NaN,Fe=Number(G);return Number.isFinite(Oe)&&Number.isFinite(Fe)&&Fe>0&&Oe<=ae&&ae-Oe<Fe},[J]),$e=o.useCallback((K,Y)=>{if(typeof window>"u")return null;const G=String(K||"").trim();if(!Cl(G))return null;const ae=LP(S.current,G,Y,Date.now());try{window.localStorage.setItem($k(G),JSON.stringify(ae))}catch{return null}return ee(G),ae},[ee]),Ye=o.useCallback(()=>{T.current!==null&&typeof window<"u"&&(window.clearInterval(T.current),T.current=null)},[]),ye=o.useCallback((K,Y)=>{if(typeof window>"u")return;const G=String(K||L.current||"").trim();if(!G)return;const ae=Z(G),_e=ae?.ownerId===S.current;if(!(!Y?.force&&ae&&!_e)){Ye();try{window.localStorage.removeItem($k(G))}catch{}L.current=null,_.current=null,ee(G)}},[ee,Z,Ye]),ge=o.useCallback((K,Y)=>{typeof window>"u"||(Ye(),T.current=window.setInterval(()=>{if(!d()){Ye();return}const G=String(L.current||"").trim(),ae=_.current;if(!G||!ae){Ye();return}if(Z(G)?.ownerId!==S.current){Ye(),L.current=null,_.current=null;return}$e(G,ae)},jP),L.current=K,_.current=Y)},[d,Z,Ye,$e]),oe=o.useCallback(async(K,Y)=>{if(!d())return!1;if(typeof window>"u")return!0;const G=String(K||"").trim();if(!Cl(G))return!1;const ae=Z(G);if(ae?.ownerId===S.current)return $e(G,Y)?(ge(G,Y),!0):!1;if(ae&&!OP(ae)||!$e(G,Y))return!1;const Fe=Z(G);return!Fe||Fe.ownerId!==S.current?!1:(ge(G,Y),!0)},[d,Z,ge,$e]),ie=o.useCallback(K=>{ye(K,{force:!0})},[ye]),me=o.useCallback(K=>{const Y=E.current,G=Fk(Y,{enabled:!!K.enabled,phase:K.phase||Y.phase,setupIntent:K.setupIntent,pullCursor:K.pullCursor,lastPullAt:K.lastPullAt,lastPushAt:K.lastPushAt,lastSyncedAt:K.lastSyncedAt,lastErrorMessage:K.lastErrorMessage});E.current=G,j.current=G.pullCursor,r(G.enabled),n(G.phase),s(G.setupIntent??null),i(G.lastPullAt),l(G.lastPushAt),c(G.lastErrorMessage??null)},[r,n,s,i,l,c]),W=o.useCallback((K,Y)=>{const G=E.current.revision,ae=K.revision;if(ae){const _e=AP(ae,G);if(_e<0||_e===0&&!Y?.allowEqualRevision)return!1}else if(G||!Y?.allowUnversioned)return!1;return E.current=K,me(K),!0},[me]),V=o.useCallback(K=>{const Y=Fk(E.current,K);return me(Y),Y},[me]),B=o.useCallback(()=>E.current,[]),D=o.useCallback(async K=>{const Y=Fk(E.current,{...K,revision:CP(E.current.revision,S.current)});E.current=Y,j.current=Y.pullCursor;const G=await Hm({workspaceId:t,stateKey:"workspace-sync",patch:SS(Y),throwOnError:!0,respectFailureCooldown:!1}),ae=G.response,_e=G.payload;if(G.skipped)return W(Y,{allowEqualRevision:!0})&&te(t,Y),E.current;if(!ae)throw new Error("Failed to persist workspace sync state (missing response)");if(!ae.ok||_e?.success===!1)throw new Error(_e?.error||`Failed to persist workspace sync state (${ae.status})`);const Oe=_e?.state&&typeof _e.state=="object"&&!Array.isArray(_e.state)?Wk(_e.state).state:Y;return W(Oe,{allowEqualRevision:!0})&&te(t,Oe),E.current},[W,te,t]),be=o.useCallback(async()=>{if(!Cl(t)){const K=yg();E.current=K,me(K);return}try{const K=await fetch(`/api/taskforce/ui-state?key=workspace-sync&workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!K.ok)return;const Y=await K.json().catch(()=>({})),G=Wk(Y?.state&&typeof Y.state=="object"?Y.state:null);W(G.state,{allowEqualRevision:!0,allowUnversioned:!0})&&(G.changed||!G.state.revision)&&D(G.state)}catch{}},[W,t,D]),Se=o.useCallback(async(K,Y)=>{if(!Cl(t))return{success:!1,error:"Workspace setup is required before enabling sync."};try{if(!K.enabled)return await D({enabled:!1,phase:"idle",setupIntent:null,pullCursor:null}),{success:!0};if(!Y.isAuthenticated)return{success:!1,error:"Sign in is required before enabling workspace sync."};if(!Y.cloudAuthConfigured)return{success:!1,error:"Cloud authentication endpoint is not configured."};const G=await Y.ensureCloudWorkspaceReadyForSync();return G.success?(await D({enabled:!0,phase:G.provisioned?"provision-local":"attach-cloud",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null}),{success:!0}):{success:!1,error:G.error||"Workspace sync handshake failed."}}catch{return{success:!1,error:"Failed to save workspace sync settings."}}},[t,D]);return o.useEffect(()=>{A.current="",b.current="",w.current=new Set,R.current=new Set,N.current=new Map,j.current=null,E.current=yg(),k.current=!1,v.current=!1,ye(),q()},[q,t,ye]),o.useEffect(()=>{if(typeof window>"u"||typeof BroadcastChannel>"u")return;const K=new BroadcastChannel(PP);return H.current=K,K.onmessage=Y=>{const G=Y.data;if(G?.kind!=="state"||String(G.workspaceId||"").trim()!==t||!G.state||typeof G.state!="object"||Array.isArray(G.state))return;const ae=Wk(G.state);W(ae.state)},()=>{K.onmessage=null,K.close(),H.current===K&&(H.current=null)}},[W,t]),o.useEffect(()=>()=>{g.current!==null&&typeof window<"u"&&(window.clearTimeout(g.current),g.current=null),ye()},[ye]),{workspaceRetryAt:m,isWorkspaceRetryPending:M,workspacePushInFlightRef:k,workspacePullInFlightRef:v,workspaceLastPushedSignatureRef:A,workspacePendingSignatureRef:b,workspaceLastPushedTaskIdsRef:w,workspaceDeletedTaskIdsRef:R,workspaceDeletedTaskWatermarksRef:N,workspacePullCursorRef:j,clearWorkspaceRetry:q,scheduleWorkspaceRetry:z,persistWorkspaceSyncPatch:D,applyWorkspaceSyncPatchLocally:V,readWorkspaceSyncStateSnapshot:B,loadWorkspaceSyncState:be,applyWorkspaceSyncStateSnapshot:me,saveWorkspaceCloudSyncSettings:Se,acquireWorkspaceSyncLease:oe,releaseWorkspaceSyncLease:ye,forceClearWorkspaceSyncLease:ie,readWorkspaceSyncLease:Z,readWorkspaceSyncCompletion:J,recordWorkspaceSyncCompletion:fe,wasWorkspaceSyncOperationCompletedRecently:Ie}}class WP{constructor(t=2048){this.maxSeenEventIds=t}seenEventIds=new Set;seenEventIdQueue=[];activeEpoch="";lastSeq=null;telemetry={accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0};process(t){const r=typeof t.eventId=="string"?t.eventId.trim():"";if(r&&this.seenEventIds.has(r))return this.telemetry.duplicateDiscarded+=1,{accepted:!1,reason:"duplicate",shouldRecover:!1};const n=typeof t.serverEpoch=="string"?t.serverEpoch.trim():"",s=Number(t.seq);if(!(n.length>0&&Number.isFinite(s)&&s>=0))return r?(this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1}):(this.telemetry.invalidDiscarded+=1,{accepted:!1,reason:"invalid",shouldRecover:!1});const l=Math.floor(s);if(this.activeEpoch&&this.activeEpoch!==n)return this.activeEpoch=n,this.lastSeq=l,r&&this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1};if(!this.activeEpoch)return this.activeEpoch=n,this.lastSeq=l,r&&this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1};const c=this.lastSeq;if(typeof c=="number"){if(l<=c){this.telemetry.outOfOrderDiscarded+=l===c?0:1,this.telemetry.duplicateDiscarded+=l===c?1:0;const d=l<c;return d&&(this.telemetry.recoveryTriggered+=1),{accepted:!1,reason:l===c?"duplicate":"out-of-order",shouldRecover:d}}if(l>c+1)return this.telemetry.outOfOrderDiscarded+=1,this.telemetry.recoveryTriggered+=1,{accepted:!1,reason:"out-of-order",shouldRecover:!0}}return this.lastSeq=l,r&&this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1}}getTelemetry(){return{...this.telemetry}}rememberEventId(t){for(this.seenEventIds.add(t),this.seenEventIdQueue.push(t);this.seenEventIdQueue.length>this.maxSeenEventIds;){const r=this.seenEventIdQueue.shift();r&&this.seenEventIds.delete(r)}}}function AI(e){const{enabled:t,workspaceId:r,websocketUrl:n,reconnectBaseMs:s=400,reconnectMaxMs:i=1e4,degradeAfterAttempts:l=5,replayLimit:c=200,onSignal:d,onTelemetry:m,userId:f}=e,[g,h]=o.useState("degraded-fallback"),y=o.useRef(null),k=o.useRef(null),v=o.useRef(0),A=o.useRef(""),b=o.useRef(!1),w=o.useRef(null),R=o.useRef(null),N=o.useRef(new WP),j=o.useRef(d),E=o.useRef(m);o.useEffect(()=>{j.current=d},[d]),o.useEffect(()=>{E.current=m},[m]);const[S,L]=o.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),_=o.useMemo(()=>String(r||"").trim(),[r]),T=o.useMemo(()=>String(n||"").trim(),[n]);return o.useEffect(()=>{let H=!1;const q=()=>{k.current!==null&&(window.clearTimeout(k.current),k.current=null)},z=()=>{const ye=y.current;if(y.current=null,ye)try{ye.close()}catch{}},M=ye=>ye==="taskforce:replay-gap"||ye==="taskforce:replay-reset"?4:ye==="taskforce:mutation"||ye==="taskforce:replay"?3:1,Z=ye=>{const ge=R.current;if(ge){const oe=M(ge.type),ie=M(ye.type);if(ie<oe)return;ie===oe&&(ye={...ye,eventIds:Array.from(new Set([...ge.eventIds||[],...ge.eventId?[ge.eventId]:[],...ye.eventIds||[],...ye.eventId?[ye.eventId]:[]])),invalidations:[...ge.invalidations||[],...ye.invalidations||[]]})}R.current=ye,w.current!==null&&window.clearTimeout(w.current),w.current=window.setTimeout(()=>{w.current=null;const oe=j.current;if(!R.current||typeof oe!="function")return;const ie=R.current;R.current=null,oe(ie)},80)},J=ye=>{try{const ge=JSON.parse(String(ye.data||""));return!ge||typeof ge!="object"?null:ge}catch{return null}},ee=ye=>{const ge=typeof ye.serverEpoch=="string"?ye.serverEpoch.trim():"",oe=Number(ye.seq);!ge||!Number.isFinite(oe)||oe<0||(A.current=`${ge}:${Math.floor(oe)}`,b.current=!1)},te=ye=>{const ge=typeof ye.entityType=="string"?ye.entityType.trim():"";if(!ge)return null;const oe=Array.isArray(ye.affectedCollections)?ye.affectedCollections.map(me=>typeof me=="string"?me.trim():"").filter(Boolean):void 0,ie=Number(ye.dataVersion);return{entityType:ge,changeType:typeof ye.changeType=="string"?ye.changeType.trim():void 0,entityIds:Array.isArray(ye.entityIds)?ye.entityIds.map(me=>typeof me=="string"?me.trim():"").filter(Boolean):[],affectedCollections:oe,lifecycleTransition:typeof ye.lifecycleTransition=="string"?ye.lifecycleTransition.trim():void 0,dataVersion:Number.isFinite(ie)?ie:void 0}},fe=()=>{const ye=N.current.getTelemetry();L(ye);const ge=E.current;typeof ge=="function"&&ge(ye)},Ie=ye=>{const ge={type:"taskforce:replay",workspaceId:_,limit:c},oe=A.current;oe&&(ge.cursor=oe),ye.send(JSON.stringify(ge))},$e=()=>{if(!t||H)return;q(),v.current+=1;const ye=v.current,ge=Math.max(50,Math.floor(s)),oe=Math.max(ge,Math.floor(i)),ie=Math.min(oe,ge*Math.pow(2,Math.max(0,ye-1)));h(ye>=l?"degraded-fallback":"reconnecting"),k.current=window.setTimeout(()=>{H||(k.current=null,Ye())},ie)},Ye=()=>{if(!t||H||!_||!T)return;z();let ye;try{ye=new WebSocket(T)}catch{$e();return}y.current=ye,ye.addEventListener("open",()=>{v.current=0,h("connected"),ye.send(JSON.stringify({type:"taskforce:subscribe",workspaceId:_,userId:f||void 0})),Ie(ye)}),ye.addEventListener("message",ge=>{const oe=J(ge);if(!oe||typeof oe.type!="string")return;const ie=typeof oe.workspaceId=="string"?oe.workspaceId.trim():_;if(!(!ie||ie!==_)){if(oe.type==="taskforce:update"){Z({type:"taskforce:update",workspaceId:_,eventId:typeof oe.eventId=="string"?oe.eventId.trim():void 0});return}if(oe.type==="taskforce:mutation"){const me=N.current.process({eventId:oe.eventId,serverEpoch:oe.serverEpoch,seq:oe.seq});if(!me.accepted){fe(),me.shouldRecover&&(A.current="",b.current||(b.current=!0,Z({type:"taskforce:replay-gap",workspaceId:_})));return}ee(oe),fe();const W=te(oe);Z({type:oe.type,workspaceId:_,eventId:typeof oe.eventId=="string"?oe.eventId.trim():void 0,invalidations:W?[W]:void 0});return}if(oe.type==="taskforce:replay"){const me=Array.isArray(oe.events)?oe.events:[];let W=0;const V=[],B=[];for(const D of me){if(!N.current.process({eventId:D.eventId,serverEpoch:D.serverEpoch,seq:D.seq}).accepted)continue;W+=1,ee(D);const Se=te(D);Se&&V.push(Se),typeof D.eventId=="string"&&D.eventId.trim()&&B.push(D.eventId.trim())}b.current=!1,fe(),(W>0||oe.truncated===!0)&&Z({type:"taskforce:replay",workspaceId:_,eventIds:B,invalidations:V}),oe.truncated===!0&&Ie(ye);return}if(oe.type==="taskforce:replay-gap"||oe.type==="taskforce:replay-reset"){if(A.current="",b.current)return;b.current=!0,Z({type:oe.type,workspaceId:_})}}}),ye.addEventListener("close",ge=>{if(y.current===ye&&(y.current=null),!H&&t){const oe=Number(ge?.code||0),ie=String(ge?.reason||"").trim();console.warn(`[Taskforce] Realtime socket closed workspace=${_} user=${String(f||"anonymous").trim()||"anonymous"} code=${oe}${ie?` reason=${ie}`:""}`)}$e()}),ye.addEventListener("error",()=>{try{ye.close()}catch{}})};return!t||!_||!T?(h("degraded-fallback"),q(),z(),()=>{q(),z()}):(h("reconnecting"),Ye(),()=>{H=!0,q(),w.current!==null&&(window.clearTimeout(w.current),w.current=null),R.current=null,z()})},[t,_,T,s,i,l,c,f]),{connectionState:g,telemetry:S}}const xv="taskforce:context-assets-mutated";function $P(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(xv,{detail:e}))}const Rv="taskforce:ai-profiles-mutated";function CI(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Rv,{detail:e}))}const Pv="taskforce:agents-mutated";function II(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Pv,{detail:e}))}const jv="taskforce:agent-skills-mutated";function _I(e){typeof window>"u"||window.dispatchEvent(new CustomEvent(jv,{detail:e}))}const FP=4,Oh=100;function Bm(e,t,r){if(e===null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:String(e);if(typeof e=="bigint")return e.toString();if(e instanceof Date)return e.toISOString();if(t>=FP)return"[MaxDepth]";if(typeof e=="function"||typeof e=="symbol"||typeof e>"u")return String(e);if(Array.isArray(e))return e.slice(0,Oh).map(n=>Bm(n,t+1,r));if(e instanceof Set)return Array.from(e.values()).slice(0,Oh).map(n=>Bm(n,t+1,r));if(e instanceof Map){const n={};for(const[s,i]of Array.from(e.entries()).slice(0,Oh))n[String(s)]=Bm(i,t+1,r);return n}if(typeof e=="object"){if(r.has(e))return"[Circular]";r.add(e);const n={};for(const[s,i]of Object.entries(e).slice(0,Oh))n[s]=Bm(i,t+1,r);return r.delete(e),n}return String(e)}function uy(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return Bm(e,0,new WeakSet)}function TI(e){const t=uy(e);if(!t)return"null";try{return JSON.stringify(t)}catch{return"[UnserializableSyncEventDetails]"}}const xI="anthropic",UP="anthropic.claude-sonnet-4-6",RI=[{key:"anthropic",label:"Anthropic"},{key:"openai",label:"OpenAI"},{key:"google",label:"Google"},{key:"xai",label:"xAI"},{key:"deepseek",label:"DeepSeek"},{key:"meta",label:"Meta"},{key:"mistral",label:"Mistral AI"},{key:"amazon",label:"Amazon"}],Mw=[{key:UP,providerKey:"anthropic",label:"Claude Sonnet 4.6",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"us.anthropic.claude-sonnet-4-6",availability:"verified",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"anthropic.claude-haiku-4-5",providerKey:"anthropic",label:"Claude Haiku 4.5",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"fast",runtimeModelId:"us.anthropic.claude-haiku-4-5-20251001-v1:0",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"anthropic.claude-sonnet-5",providerKey:"anthropic",label:"Claude Sonnet 5",source:"bedrock",runtime:"bedrock-anthropic-messages",defaultTier:"balanced",runtimeModelId:"anthropic.claude-sonnet-5",availability:"account_unavailable",visible:!1,supportsTemperature:!1,defaultMaxTokens:1024},{key:"anthropic.claude-fable-5",providerKey:"anthropic",label:"Claude Fable 5",source:"bedrock",runtime:"bedrock-anthropic-messages",defaultTier:"advanced",runtimeModelId:"anthropic.claude-fable-5",availability:"account_unavailable",visible:!1,supportsTemperature:!1,defaultMaxTokens:1024},{key:"anthropic.claude-opus-4-8",providerKey:"anthropic",label:"Claude Opus 4.8",source:"bedrock",runtime:"bedrock-anthropic-messages",defaultTier:"advanced",runtimeModelId:"anthropic.claude-opus-4-8",availability:"account_unavailable",visible:!1,supportsTemperature:!1,defaultMaxTokens:1024},{key:"amazon.nova-lite",providerKey:"amazon",label:"Nova Lite",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"fast",runtimeModelId:"us.amazon.nova-lite-v1:0",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"amazon.nova-2-lite",providerKey:"amazon",label:"Nova 2 Lite",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"fast",runtimeModelId:"us.amazon.nova-2-lite-v1:0",availability:"verified",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"amazon.nova-pro",providerKey:"amazon",label:"Nova Pro",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"us.amazon.nova-pro-v1:0",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"deepseek.v3-2",providerKey:"deepseek",label:"DeepSeek V3.2",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"deepseek.v3.2",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"google.gemma-3-12b-it",providerKey:"google",label:"Gemma 3 12B IT",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"fast",runtimeModelId:"google.gemma-3-12b-it",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"meta.llama-3-3-70b-instruct",providerKey:"meta",label:"Llama 3.3 70B Instruct",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"us.meta.llama3-3-70b-instruct-v1:0",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"meta.llama-4-scout-17b-instruct",providerKey:"meta",label:"Llama 4 Scout 17B Instruct",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"us.meta.llama4-scout-17b-instruct-v1:0",availability:"verified",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"mistral.large-3",providerKey:"mistral",label:"Mistral Large 3",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"mistral.mistral-large-3-675b-instruct",availability:"configured",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"xai.grok-4-3",providerKey:"xai",label:"Grok 4.3",source:"bedrock",runtime:"bedrock-mantle",defaultTier:"advanced",runtimeModelId:"xai.grok-4.3",availability:"verified",visible:!0,supportsTemperature:!1,defaultMaxTokens:1024},{key:"openai.gpt-oss-120b",providerKey:"openai",label:"gpt-oss-120b",source:"bedrock",runtime:"bedrock-runtime",defaultTier:"balanced",runtimeModelId:"openai.gpt-oss-120b-1:0",availability:"verified",visible:!0,supportsTemperature:!0,defaultMaxTokens:512},{key:"openai.codex-gpt-5-6-sol",providerKey:"openai",label:"Codex GPT-5.6 Sol",source:"subscription_dev",runtime:"subscription-dev",defaultTier:"advanced",runtimeModelId:"gpt-5.6-sol",availability:"configured",visible:!0,supportsTemperature:!1,defaultMaxTokens:1024,devOnly:!0},{key:"openai.gpt-5-4",providerKey:"openai",label:"GPT-5.4",source:"bedrock",runtime:"bedrock-mantle",defaultTier:"advanced",runtimeModelId:"openai.gpt-5.4",availability:"account_unavailable",visible:!1,supportsTemperature:!1,defaultMaxTokens:1024}];function AS(e){const t=String(e||"").trim().toLowerCase();return t==="1"||t==="true"||t==="yes"||t==="on"}function zP(){const e=globalThis;return AS(e.__TASKFORCE_AGENT_SUBSCRIPTION_DEV_MODELS__)||AS(e.process?.env?.TASKFORCE_AGENT_SUBSCRIPTION_DEV_MODELS)}function HP(e){return e.visible&&e.availability!=="account_unavailable"&&(!e.devOnly||zP())}function Yre(e){const t=String(e||"").trim();return Mw.find(r=>r.key===t)||null}function Lw(e){const t=String(e||"").trim().toLowerCase();return RI.some(r=>r.key===t)?t:xI}function VP(e){const t=Lw(e);return Mw.filter(r=>r.providerKey===t&&KP(r))}function GP(e,t){const r=String(e||"").trim(),n=VP(t??xI);return n.some(s=>s.key===r)?r:n[0]?.key||""}function KP(e){return HP(e)}function Zre(e){const t=Lw(e);return RI.find(r=>r.key===t)?.label||"Anthropic"}function Jre(e){const t=String(e||"").trim();return Mw.find(r=>r.key===t)?.label||t||"No configured model"}const PI="taskforce.userGlobalSyncMeta.v1",qP="taskforce.syncDebug.v1",YP=12e4,jI="taskforce.syncWatermarks.v3",ZP=300*1e3,CS="Another local window is already syncing this workspace. Wait a few seconds, or press Repair in that window.";function Yc(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}function JP(){if(typeof window>"u")return!1;try{const e=String(window.localStorage.getItem(qP)||"").trim().toLowerCase();return e==="1"||e==="true"||e==="on"||e==="yes"}catch{return!1}}function Ds(e,t){if(!JP())return;console.info("[Taskforce Sync]",e,t&&typeof t=="object"?t:{})}function XP(e){const t=e?.providerMetadata??e?.provider_metadata??null;return{id:String(e?.id||"").trim(),workspaceId:String(e?.workspaceId||e?.workspace_id||"").trim(),profileToken:String(e?.profileToken||e?.profile_token||"").trim(),name:String(e?.name||"").trim(),username:String(e?.username||"").trim(),icon:String(e?.icon||"Bot").trim()||"Bot",color:String(e?.color||"#8b5cf6").trim()||"#8b5cf6",avatarUrl:cf(e?.avatarUrl??e?.avatar_url),avatarSourceUrl:cf(e?.avatarSourceUrl??e?.avatar_source_url),avatarRevision:Number.isFinite(Number(e?.avatarRevision??e?.avatar_revision))?Math.max(0,Math.floor(Number(e?.avatarRevision??e?.avatar_revision))):0,avatarUpdatedAt:bs(e?.avatarUpdatedAt??e?.avatar_updated_at),description:Kn(e?.description),role:Kn(e?.role),provider:Kn(e?.provider),model:Kn(e?.model),surfaceType:hI(e?.surfaceType??e?.surface_type),seatScope:gI(e?.seatScope??e?.seat_scope),providerMetadata:t&&typeof t=="object"&&!Array.isArray(t)?t:null,archivedAt:bs(e?.archivedAt??e?.archived_at),archivedBy:Qc(e?.archivedBy??e?.archived_by),archivedReason:Kn(e?.archivedReason??e?.archived_reason),mergedIntoProfileId:Qc(e?.mergedIntoProfileId??e?.merged_into_profile_id),rosterStateUpdatedAt:bs(e?.rosterStateUpdatedAt??e?.roster_state_updated_at),createdAt:String(e?.createdAt||e?.created_at||"").trim(),updatedAt:String(e?.updatedAt||e?.updated_at||e?.createdAt||e?.created_at||"").trim(),lastActiveAt:bs(e?.lastActiveAt??e?.last_active_at)}}function QP(e){const t=String(e?.modelTier||e?.model_tier||"").trim().toLowerCase();return{id:String(e?.id||"").trim(),tenantId:String(e?.tenantId||e?.tenant_id||"").trim()||void 0,workspaceId:String(e?.workspaceId||e?.workspace_id||"").trim(),name:String(e?.name||"Agent").trim()||"Agent",modelProvider:"taskforce_hq",providerKey:Lw(e?.providerKey??e?.provider_key),modelKey:GP(e?.modelKey??e?.model_key,e?.providerKey??e?.provider_key),modelTier:t==="fast"||t==="advanced"?t:"balanced",systemPrompt:typeof(e?.systemPrompt??e?.system_prompt)=="string"?String(e?.systemPrompt??e?.system_prompt):"",enabled:(e?.enabled??!0)!==!1&&Number(e?.enabled??1)!==0,createdByUserId:Qc(e?.createdByUserId??e?.created_by_user_id),updatedByUserId:Qc(e?.updatedByUserId??e?.updated_by_user_id),createdAt:String(e?.createdAt||e?.created_at||"").trim(),updatedAt:String(e?.updatedAt||e?.updated_at||e?.createdAt||e?.created_at||"").trim(),deletedAt:bs(e?.deletedAt??e?.deleted_at)}}function ej(e){const t=Array.isArray(e?.messages)?e.messages.map(n=>({role:n?.role==="assistant"?"assistant":"user",content:String(n?.content||"").trim()})).filter(n=>n.content.length>0):[],r=(e?.usage??e?.usage_json)&&typeof(e?.usage??e?.usage_json)=="object"?e?.usage??e?.usage_json:null;return{id:String(e?.id||"").trim(),tenantId:String(e?.tenantId||e?.tenant_id||"").trim()||void 0,workspaceId:String(e?.workspaceId||e?.workspace_id||"").trim(),agentId:String(e?.agentId||e?.agent_id||"").trim(),taskId:Qc(e?.taskId??e?.task_id),title:String(e?.title||"Agent chat").trim()||"Agent chat",messages:t,modelProvider:Kn(e?.modelProvider??e?.model_provider),modelId:Kn(e?.modelId??e?.model_id),usage:r,latencyMs:Number.isFinite(Number(e?.latencyMs??e?.latency_ms))?Number(e?.latencyMs??e?.latency_ms):null,createdByUserId:Qc(e?.createdByUserId??e?.created_by_user_id),updatedByUserId:Qc(e?.updatedByUserId??e?.updated_by_user_id),createdAt:String(e?.createdAt||e?.created_at||"").trim(),updatedAt:String(e?.updatedAt||e?.updated_at||e?.createdAt||e?.created_at||"").trim(),deletedAt:bs(e?.deletedAt??e?.deleted_at)}}function IS(){if(typeof window>"u")return{};try{const e=window.localStorage.getItem(PI);if(!e)return{};const t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function tj(e){if(!(typeof window>"u"))try{window.localStorage.setItem(PI,JSON.stringify(e))}catch{}}function rj(e){try{return JSON.stringify(e&&typeof e=="object"?e:null)}catch{return"null"}}function nj(e){return e.flatMap(t=>{const r=String(t?.id||"").trim();return!r||!Array.isArray(t?.comments)?[]:t.comments.map(n=>({id:String(n?.id||"").trim(),sessionId:r,body:String(n?.body||""),anchor:n?.anchor??null,order:Number.isFinite(Number(n?.order))?Math.max(0,Math.floor(Number(n.order))):0,authorActorId:typeof n?.authorActorId=="string"&&n.authorActorId.trim().length>0?n.authorActorId.trim():null,updatedByActorId:typeof n?.updatedByActorId=="string"&&n.updatedByActorId.trim().length>0?n.updatedByActorId.trim():null,deletedByActorId:typeof n?.deletedByActorId=="string"&&n.deletedByActorId.trim().length>0?n.deletedByActorId.trim():null,createdAt:String(n?.createdAt||"").trim(),updatedAt:String(n?.updatedAt||n?.createdAt||"").trim(),deletedAt:typeof n?.deletedAt=="string"&&n.deletedAt.trim().length>0?n.deletedAt.trim():null})).filter(n=>n.id.length>0&&n.sessionId.length>0)})}function EI(e){return{taskIds:Array.from(e.taskIds.values()),taskWatermarks:Array.from(e.taskWatermarks.entries()),taskChangeKeys:Array.from((e.taskChangeKeys||new Map).entries()),taskRelationshipChangeKeys:Array.from((e.taskRelationshipChangeKeys||new Map).entries()),initiativeWatermarks:Array.from(e.initiativeWatermarks.entries()),workstreamWatermarks:Array.from(e.workstreamWatermarks.entries()),planningIdentityWatermarks:Array.from((e.planningIdentityWatermarks||new Map).entries()),aiProfileWatermarks:Array.from(e.aiProfileWatermarks.entries()),aiProfileChangeKeys:Array.from((e.aiProfileChangeKeys||new Map).entries()),taskforceAgentWatermarks:Array.from((e.taskforceAgentWatermarks||new Map).entries()),taskforceAgentSkillWatermarks:Array.from((e.taskforceAgentSkillWatermarks||new Map).entries()),agentConversationWatermarks:Array.from((e.agentConversationWatermarks||new Map).entries()),documentWatermarks:Array.from(e.documentWatermarks.entries()),assetWatermarks:Array.from(e.assetWatermarks.entries()),documentReviewSessionWatermarks:Array.from(e.documentReviewSessionWatermarks.entries()),documentReviewCommentWatermarks:Array.from(e.documentReviewCommentWatermarks.entries()),annotatedAttachmentSessionWatermarks:Array.from(e.annotatedAttachmentSessionWatermarks.entries()),taskEventWatermarks:Array.from(e.taskEventWatermarks.entries()),taxonomyStateFingerprint:typeof e.taxonomyStateFingerprint=="string"?e.taxonomyStateFingerprint:"",taxonomyChangeKey:typeof e.taxonomyChangeKey=="string"?e.taxonomyChangeKey:""}}function NI(e,t){if(!e||typeof e!="object")return null;const r=typeof e.taxonomyStateFingerprint=="string"?e.taxonomyStateFingerprint:"",n=!t||!r||r===t?new Map(Array.isArray(e.taskWatermarks)?e.taskWatermarks:[]):new Map;return{taskIds:new Set(Array.isArray(e.taskIds)?e.taskIds.map(i=>String(i||"").trim()).filter(i=>i.length>0):Array.from(n.keys())),taskWatermarks:n,taskChangeKeys:new Map(Array.isArray(e.taskChangeKeys)?e.taskChangeKeys:[]),taskRelationshipChangeKeys:new Map(Array.isArray(e.taskRelationshipChangeKeys)?e.taskRelationshipChangeKeys:[]),initiativeWatermarks:new Map(Array.isArray(e.initiativeWatermarks)?e.initiativeWatermarks:[]),workstreamWatermarks:new Map(Array.isArray(e.workstreamWatermarks)?e.workstreamWatermarks:[]),planningIdentityWatermarks:new Map(Array.isArray(e.planningIdentityWatermarks)?e.planningIdentityWatermarks:[]),aiProfileWatermarks:new Map(Array.isArray(e.aiProfileWatermarks)?e.aiProfileWatermarks:[]),aiProfileChangeKeys:new Map(Array.isArray(e.aiProfileChangeKeys)?e.aiProfileChangeKeys:[]),taskforceAgentWatermarks:new Map(Array.isArray(e.taskforceAgentWatermarks)?e.taskforceAgentWatermarks:[]),taskforceAgentSkillWatermarks:new Map(Array.isArray(e.taskforceAgentSkillWatermarks)?e.taskforceAgentSkillWatermarks:[]),agentConversationWatermarks:new Map(Array.isArray(e.agentConversationWatermarks)?e.agentConversationWatermarks:[]),documentWatermarks:new Map(Array.isArray(e.documentWatermarks)?e.documentWatermarks:[]),assetWatermarks:new Map(Array.isArray(e.assetWatermarks)?e.assetWatermarks:[]),documentReviewSessionWatermarks:new Map(Array.isArray(e.documentReviewSessionWatermarks)?e.documentReviewSessionWatermarks:[]),documentReviewCommentWatermarks:new Map(Array.isArray(e.documentReviewCommentWatermarks)?e.documentReviewCommentWatermarks:[]),annotatedAttachmentSessionWatermarks:new Map(Array.isArray(e.annotatedAttachmentSessionWatermarks)?e.annotatedAttachmentSessionWatermarks:[]),taskEventWatermarks:new Map(Array.isArray(e.taskEventWatermarks)?e.taskEventWatermarks:[]),taxonomyChangeKey:typeof e.taxonomyChangeKey=="string"?e.taxonomyChangeKey:""}}function Uk(e,t){if(typeof window>"u")return null;try{const r=`${jI}.${e}`,n=window.localStorage.getItem(r);if(!n)return null;const s=JSON.parse(n);return!s||s.v!==2&&s.v!==3&&s.v!==4&&s.v!==5&&s.v!==6&&s.v!==7&&s.v!==8&&s.v!==9&&s.v!==10&&s.v!==11&&s.v!==12?null:NI(s,t)}catch{return null}}function _S(e,t){if(typeof window>"u")return!1;try{const r=`${jI}.${e}`;return window.localStorage.setItem(r,JSON.stringify({v:12,savedAt:new Date().toISOString(),...EI(t)})),!0}catch{return!1}}function aj({currentWorkspaceId:e,workspaceSyncPhase:t,clearWorkspaceRetry:r,setWorkspaceSyncBusy:n,setUserGlobalSyncStatus:s,setUserGlobalSyncError:i,setWorkspaceLastErrorMessage:l,setWorkspaceLastErrorAt:c,reportSyncEvent:d,setAuthBlocked:m,setIsAuthenticated:f,checkAuthSession:g,ensureCloudWorkspaceReadyForSync:h,scheduleWorkspaceSyncRetry:y,persistWorkspaceSyncPatchSafely:k}){const v=async(b,w)=>{r(),n(!1),s("error");const R="Session expired. Sign in again to resume cloud sync.";i(R),l(R),c(new Date().toISOString()),d(e,{eventType:b==="handshake"?"handshake":b,status:"error",statusCode:w,errorMessage:R}),m(!0),f(!1),await g()};return{handleSyncAuthFailure:v,ensureWorkspaceSyncReady:async()=>{if(!Yc(e)){const R="Workspace sync blocked: local workspace ID is unresolved.";return l(R),c(new Date().toISOString()),i(R),s("error"),!1}const b=await h();if(b.success)return!0;if(b.statusCode===401)return await v("handshake",401),!1;const w=b.error||"Workspace sync handshake failed.";return l(w),c(new Date().toISOString()),i(w),s("error"),d(e,{eventType:"handshake",status:"error",statusCode:b.statusCode,errorMessage:w}),b.transient||li(b.statusCode)?y(b.retryAfterMs):(t==="active"||t==="attach-cloud"||t==="provision-local")&&k({phase:"error",lastErrorMessage:w}),!1}}}const DI=5*6e4;function zk(e){if(!e)return null;const t=Date.parse(e);return Number.isFinite(t)?t:null}function gp(e){return e.cloudAuthConfigured&&e.runtimeMode==="local"&&e.workspaceCloudSyncEnabled&&e.authSessionResolved}function sj({enabled:e,phase:t,busy:r,retryAt:n,lastErrorMessage:s,lastErrorAt:i,lastPullAt:l,lastPushAt:c,nowMs:d,pullLagToleranceMs:m=DI,pendingChanges:f=0,durableOutbox:g}){if(!e)return{status:"off",summary:"Sync is turned off for this workspace.",recommendedAction:"Turn on sync when you are ready to back up this workspace."};if(t==="provision-local")return{status:"syncing",summary:r?"Uploading this workspace to cloud for the first time.":"Preparing the first upload to cloud.",recommendedAction:"Keep this window open while the first upload finishes."};if(t==="attach-cloud")return{status:"syncing",summary:r?"Pulling the cloud workspace into this device.":"Waiting for the first cloud pull into this device.",recommendedAction:"Keep this window open for the first cloud pull. If it does not move, press Repair."};if((g?.blocked||0)>0){const A=g?.blocked||0,b=g?.pending||0;return{status:"attention",summary:`${A} durable local change${A===1?"":"s"} could not sync${b>0?`; ${b} later change${b===1?" is":"s are"} waiting`:""}.`,recommendedAction:"Press Repair to reconcile and replay supported task changes. If Repair is blocked, copy the report for diagnosis."}}if(g?.recovery&&g.recovery.state!=="completed")return g.recovery.state==="awaiting_baseline"?{status:"attention",summary:"Durable local recovery is waiting for an authoritative cloud repair.",recommendedAction:"Press Repair to resume the verified cloud baseline and replay."}:g.recovery.replayBlocked>0?{status:"attention",summary:"A recovered local change is still blocked during replay.",recommendedAction:"Copy the Sync Manager report so the replay conflict can be diagnosed safely."}:{status:"syncing",summary:"Recovered local changes are replaying against the repaired cloud baseline.",recommendedAction:"No action needed unless the recovery state remains unchanged."};if(n)return{status:"attention",summary:"Sync hit a temporary problem and will retry automatically.",recommendedAction:"Wait for the automatic retry."};if(s||t==="error")return{status:"attention",summary:"Sync needs attention before it can continue.",recommendedAction:"Keep sync enabled. If the same error keeps returning, press Repair."};if(f>0||(g?.pending||0)>0||(g?.inFlight||0)>0)return{status:"syncing",summary:"Local changes are waiting to sync.",recommendedAction:"No action needed unless the queue remains unchanged."};if(r)return{status:"syncing",summary:"Sync is currently running.",recommendedAction:"No action needed."};const h=zk(l),y=zk(c),k=zk(i);return h===null?{status:"attention",summary:y===null?"This device has not completed its first cloud pull.":"Cloud uploads are working, but this device has not completed a cloud pull.",recommendedAction:"Keep sync enabled. If the cloud check still does not complete, press Repair and copy the report."}:k!==null&&k>h?{status:"attention",summary:"A sync issue occurred after the last successful cloud pull.",recommendedAction:"Wait for the automatic retry. If the issue returns, copy the report."}:Number.isFinite(d)&&d-h>Math.max(0,m)?{status:"attention",summary:y!==null&&y>h?"Cloud uploads are succeeding, but this device has not received cloud changes recently.":"This device has not checked for cloud changes recently.",recommendedAction:"Keep sync enabled. If Last cloud check does not advance, press Repair and copy the report."}:{status:"healthy",summary:"A recent cloud check succeeded and no local changes are waiting.",recommendedAction:"No action needed."}}function oj(e){return gp(e)&&e.workspaceSyncPhase!=="attach-cloud"&&e.workspaceSyncReferenceSnapshotsReady}function ij(e){return gp(e)&&e.workspaceSyncPhase==="active"&&e.workspaceSyncReferenceSnapshotsReady}function cj(e){return gp(e)?e.workspaceSyncPhase==="provision-local"||e.workspaceSyncPhase==="error"||e.retryPending?{shouldStart:!1,shouldKickOffImmediately:!1}:{shouldStart:!0,shouldKickOffImmediately:e.workspaceSyncPhase==="attach-cloud"||!e.lastPullAt}:{shouldStart:!1,shouldKickOffImmediately:!1}}function lj(e){return gp(e)&&e.isAuthenticated&&e.workspaceSyncPhase==="active"}function dj(e){return gp(e)&&e.isAuthenticated&&e.workspaceSyncPhase!=="provision-local"&&e.workspaceSyncPhase!=="attach-cloud"&&!e.alreadyRan}function uj(e){const{workspaceSyncPhase:t,lastBootstrapPhase:r,workspaceLastPullAt:n}=e;return t==="provision-local"?"provision-local":t==="attach-cloud"?"attach-cloud":t==="active"||r==="active"?"active":r==="provision-local"||r==="attach-cloud"?r:n?"attach-cloud":"provision-local"}function fj({workspaceSyncPhase:e,lastBootstrapPhaseRef:t,bootstrapPhaseStartedAtRef:r,bootstrapLastProgressAtRef:n}){if(e==="attach-cloud"||e==="provision-local"){t.current=e,r.current===null&&(r.current=Date.now()),n.current=null;return}r.current=null,n.current=null}function mj({currentWorkspaceId:e,workspaceCloudSyncEnabled:t,workspaceSyncPhase:r,workspacePullInFlightRef:n,workspacePushInFlightRef:s,bootstrapPhaseStartedAtRef:i,bootstrapLastProgressAtRef:l,isExecutionAuthorized:c=()=>!0,setWorkspaceLastErrorMessage:d,setWorkspaceLastErrorAt:m,setUserGlobalSyncStatus:f,setUserGlobalSyncError:g,setWorkspaceSyncBusy:h,persistWorkspaceSyncPatchSafely:y}){if(!c()||!t||r!=="attach-cloud"&&r!=="provision-local")return;const k=window.setInterval(()=>{if(!c()||r!=="attach-cloud"&&r!=="provision-local"||n.current||s.current)return;const v=Math.max(i.current??0,l.current??0);if(v>0&&Date.now()-v<YP)return;const b=`Workspace sync ${r==="attach-cloud"?"initial cloud pull":"initial cloud upload"} stalled. Press Repair to restart sync for this workspace.`;d(b),m(new Date().toISOString()),f("error"),g(b),h(!1),y({phase:"error",lastErrorMessage:b}),Ds("workspace_sync_bootstrap_timeout",{workspaceId:e,phase:r})},1e4);return()=>window.clearInterval(k)}function pj(e){const t=String(e||"").trim();return t.length>0&&t.toLowerCase()!=="default"}const Ow={allowed:!0};function As(e,t){return{allowed:!1,reason:e,retainPendingSignature:t?.retainPendingSignature===!0}}function Bw(e,t){return e.cloudAuthConfigured?e.runtimeMode!=="local"?As("runtime-not-local"):e.workspaceCloudSyncEnabled?(t?.requireValidWorkspace??!0)&&!pj(e.currentWorkspaceId)?As("invalid-workspace"):null:As("sync-disabled"):As("cloud-auth-unconfigured")}function Ev(e){const t=Bw(e);return t||(e.repairModeActive&&!e.repairModeBypass?As("repair-active",{retainPendingSignature:!0}):e.workspaceSyncPhase==="attach-cloud"&&!e.repairModeBypass?As("attach-cloud",{retainPendingSignature:!0}):e.isAuthenticated?e.pushInFlight?As("push-in-flight",{retainPendingSignature:!0}):e.pullInFlight?As("pull-in-flight",{retainPendingSignature:!0}):Ow:As("auth-required"))}function Nv(e){const t=Bw(e);return t||(e.repairModeActive&&!e.repairModeBypass?As("repair-active"):e.workspaceSyncPhase==="provision-local"?As("provision-local"):e.retryPending?As("retry-pending"):e.isAuthenticated?e.pullInFlight?As("pull-in-flight"):e.pushInFlight?As("push-in-flight"):Ow:As("auth-required"))}function Dv(e){const t=Bw(e,{requireValidWorkspace:!1});return t||(e.isAuthenticated?Ow:As("auth-required"))}function hj(e){return As("lease-held",{retainPendingSignature:e==="push"})}const gj=512;function yj({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:r,workspaceSyncPhase:n,workspacePullInFlightRef:s,realtimePullDebounceRef:i,realtimeSuppressedEventIdsRef:l,clearWorkspaceRetry:c,isWorkspaceRetryPending:d,isExecutionAuthorized:m=()=>!0,isServerOwned:f=()=>!1,signalServerWake:g,pullWorkspaceChangesFromCloud:h}){const y=new Set;let k=!1,v=!1,A=null,b=!1;const w=()=>{if(v||!f())return;const _=b?[]:A;_&&(b=!1,A=null,v=!0,g?.(_).catch(()=>{}).finally(()=>{v=!1,w()}))},R=_=>{if(!b){if(!v&&A===null){A=_,w();return}if(A===null){A=_;return}A=null,b=!0}},N=()=>{A=null,b=!0,w()},j=()=>{if(!k&&y.size===0)return;const _=k?[]:Array.from(y);y.clear(),k=!1,_.length===0?N():R(_)};return{handleRealtimeSignal:_=>{if(!e||t!=="local"||!r||n==="provision-local")return;const T=Array.from(new Set([..._?.eventIds||[],..._?.eventId?[_.eventId]:[]].map(q=>String(q||"").trim()).filter(Boolean)));let H=T.length===0;for(const q of T)l.current.delete(q)||(H=!0);if(H){if(f()){if(T.length===0)k=!0;else if(!k)for(const q of T)y.add(q),y.size>=gj&&(R(Array.from(y)),y.clear());i.current!==null&&window.clearTimeout(i.current),i.current=window.setTimeout(()=>{i.current=null,j()},180);return}m()&&(s.current||(d()&&c(),i.current!==null&&window.clearTimeout(i.current),i.current=window.setTimeout(()=>{i.current=null,m()&&h()},180)))}},recordSuppressedEventIds:(_,T)=>{const H=T?.queueRef,q=Number.isFinite(T?.maxQueueSize)?Math.max(1,Number(T?.maxQueueSize)):2048,z=Number.isFinite(T?.ttlMs)?Math.max(0,Number(T?.ttlMs)):null;for(const M of _){const Z=String(M||"").trim();!Z||l.current.has(Z)||(l.current.add(Z),H&&H.current.push(Z),z!==null&&window.setTimeout(()=>{l.current.delete(Z)},z))}if(H)for(;H.current.length>q;){const M=H.current.shift();M&&l.current.delete(M)}},clearRealtimePullDebounce:()=>{i.current!==null&&(window.clearTimeout(i.current),i.current=null),y.clear(),k=!1,A=null,b=!1}}}function MI(e){e.lastPushedTaskIds.current=new Set,e.lastPushedWatermarks.current=new Map,e.lastPushedTaskChangeKeys.current=new Map,e.lastPushedTaskRelationshipChangeKeys.current=new Map,e.lastPushedTaxonomyChangeKey.current="",e.lastPushedInitiativeIds.current=new Set,e.lastPushedInitiativeWatermarks.current=new Map,e.lastPushedWorkstreamIds.current=new Set,e.lastPushedWorkstreamWatermarks.current=new Map,e.lastPushedPlanningIdentityWatermarks.current=new Map,e.lastPushedAiProfileIds.current=new Set,e.lastPushedAiProfileWatermarks.current=new Map,e.lastPushedAiProfileChangeKeys.current=new Map,e.lastPushedDocumentPaths.current=new Set,e.lastPushedDocumentWatermarks.current=new Map,e.lastPushedAssetPaths.current=new Set,e.lastPushedAssetWatermarks.current=new Map,e.baselineResetReason.current="repair-reset"}function kj(e){MI(e),e.lastPushedDocumentReviewSessionIds.current=new Set,e.lastPushedDocumentReviewSessionWatermarks.current=new Map,e.lastPushedDocumentReviewCommentIds.current=new Set,e.lastPushedDocumentReviewCommentWatermarks.current=new Map,e.lastPushedAnnotatedAttachmentSessionIds.current=new Set,e.lastPushedAnnotatedAttachmentSessionWatermarks.current=new Map,e.lastPushedTaskEventWatermarks.current=new Map}async function vj(e){const t=await globalThis.crypto.subtle.digest("SHA-256",new TextEncoder().encode(e));return Array.from(new Uint8Array(t),r=>r.toString(16).padStart(2,"0")).join("")}function wj({currentWorkspaceId:e,workspaceCloudSyncEnabled:t,workspaceSyncPhase:r,workspaceLastPullAt:n,runtime:s,localServices:i,acquireWorkspaceSyncLease:l,releaseWorkspaceSyncLease:c,forceClearWorkspaceSyncLease:d,clearWorkspaceRetry:m,clearWorkspaceIssue:f,reportWorkspaceWindowContention:g,reportSyncEvent:h,persistWorkspaceSyncPatch:y,persistWorkspaceSyncWatermarksSnapshotBestEffort:k,buildWorkspaceSyncSignature:v,pullWorkspaceChangesFromCloud:A,pushWorkspaceChangesToCloud:b,cloudAuthConfigured:w,runtimeMode:R,isAuthenticated:N,checkAuthSession:j,isExecutionAuthorized:E=()=>!0,coordinatorGeneration:S=null}){const L=s.lastBootstrapPhase,_=s.repairMode,T=s.forceFullAiProfilePush,H=s.startupRepairRan,q=s.startupFullReconcileRan,z=s.fullReconcileInFlight,M=s.pullCursor,Z=s.attachBootstrapBaselineSignature,J=s.captureAttachBootstrapBaseline,ee=s.pendingSignature,te=s.pendingPushReplay,fe=s.lastPushedSignature;s.baselineResetReason;const Ie=s.bootstrapPhaseStartedAtMs,$e=s.bootstrapLastProgressAtMs,Ye=r==="provision-local"?"push":r==="attach-cloud"?"bootstrap":"pull";return{retryWorkspaceCloudSync:async()=>{if(!E())return!1;m();let oe=Dv({cloudAuthConfigured:w,runtimeMode:R,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:N});if(!oe.allowed&&oe.reason==="auth-required"){if(!await j())return h(e,{eventType:Ye,status:"error",errorMessage:"Manual sync retry blocked: sign in is required.",details:{source:"retry.blocked",reason:"auth-required",phase:r}}),!1;oe=Dv({cloudAuthConfigured:w,runtimeMode:R,workspaceCloudSyncEnabled:t,currentWorkspaceId:e,isAuthenticated:!0})}if(!oe.allowed)return h(e,{eventType:Ye,status:"error",errorMessage:`Manual sync retry blocked: ${oe.reason}.`,details:{source:"retry.blocked",reason:oe.reason,phase:r}}),!1;if(T.current=!0,r==="provision-local"){const V=v();return V?b(V,{forceAllAiProfiles:!0}):!1}const ie=te.current;if(r==="active"&&ie)return ee.current=ie.signature,b(ie.signature,{forceAllAiProfiles:ie.forceAllAiProfiles,repairMode:ie.repairMode});const me=await A();if(r==="attach-cloud")return me;const W=v();if(W){ee.current=W;const V=await b(W,{forceAllAiProfiles:T.current===!0});return me||V}return me},resetWorkspaceSyncCursorAndPull:async()=>{if(!E())return;if(!await l(e,"repair")&&(d(e),!await l(e,"repair"))){g("repair"),h(e,{eventType:"bootstrap",status:"error",errorMessage:"Manual sync repair blocked because another window is already syncing this workspace.",details:{source:"repair.blocked",reason:"lease-held",phase:r}});return}const ie=uj({workspaceSyncPhase:r,lastBootstrapPhase:L.current,workspaceLastPullAt:n}),me=ie==="provision-local",W=ie==="active"||ie==="attach-cloud";m(),f();try{if(!t){h(e,{eventType:"bootstrap",status:"error",errorMessage:"Manual sync repair blocked because workspace sync is turned off.",details:{source:"repair.blocked",reason:"sync-disabled",phase:r}});return}let V=null;if(ie!=="provision-local")try{V=await i.prepareOutboxRecovery(e)}catch(Se){h(e,{eventType:"bootstrap",status:"error",errorMessage:String(Se?.message||"Blocked local changes could not enter recovery."),details:{source:"repair.local-recovery-blocked",phase:r}});return}if(Ie.current=null,$e.current=null,M.current=null,Z.current="",J.current=!1,ee.current="",fe.current="",T.current=!1,H.current=!1,q.current=!1,z.current=!1,me&&(kj(s),k()),_.current=!0,h(e,{eventType:"bootstrap",status:"success",errorMessage:"Manual sync repair started.",details:{source:"repair.started",phase:r,repairPhase:ie,lastBootstrapPhase:L.current}}),await y({phase:ie,pullCursor:null,startupFullReconcileCompletedAt:null,lastErrorMessage:null}),ie==="provision-local"){const Se=v();if(!Se)return;await b(Se,{forceAllAiProfiles:!0,repairMode:!0});return}const B=await A({repairMode:!0,...V?.kind==="recovery"&&V.needsAuthoritativeRepair?{forceV3AuthoritativeRepair:!0,recoveryBatchId:V.recoveryBatchId}:{}});if(ie!=="active"&&ie!=="attach-cloud"||!B)return;W&&(MI(s),k());const D=v();if(!D)return;if(ee.current=D,await b(D,{forceAllAiProfiles:!0,repairMode:!0})&&S!==null&&i.completeAuthoritativeRepair){const Se=await i.completeAuthoritativeRepair({workspaceId:e,coordinatorGeneration:S,repairId:`repair-${globalThis.crypto.randomUUID()}`,stateSignatureSha256:await vj(D)});(!Se.ok||Se.data?.success!==!0)&&h(e,{eventType:"bootstrap",status:"error",statusCode:Se.status,errorMessage:String(Se.data?.error||"Authoritative repair could not settle coordinator recovery."),details:{source:"repair.coordinator-recovery-settlement-failed",phase:r,code:Se.data?.code||null}})}}finally{_.current=!1,c(e)}}}}function bj({workspaceSyncPhase:e,forceCursorNull:t,currentCursor:r}){const n=e==="attach-cloud";return{bootstrap:n,cursor:n||t===!0?null:r,successEventType:n?"bootstrap":"pull"}}function Sj({workspaceSyncPhase:e,forceCursorNull:t,repairMode:r,startupFullReconcileRan:n,pendingSignature:s,fallbackSignature:i,lastPushedSignature:l}){const c=e==="attach-cloud",d=c&&r===!0,m=s||i,f=!c&&m&&m!==l?m:null;return{successEventType:c?"bootstrap":"pull",shouldCaptureAttachBootstrapBaseline:c&&!d,shouldClearPendingSignature:c||f!==null,shouldRefreshReferenceSnapshots:c,shouldSeedWorkspaceSnapshotPushBaseline:c&&!d,shouldScheduleStartupFullReconcile:!t&&!c&&!n,deferredPushSignature:f}}function LI(e){if(typeof e!="string")return;const t=e.trim();return t.length>0?t:void 0}function Aj(e){return LI(e)??null}function Cj(e){if(e==null||e==="")return null;const t=typeof e=="number"?e:Number(e);return Number.isFinite(t)?Math.max(1,Math.floor(t)):null}function Ij(e){if(e==null||e==="")return null;const t=typeof e=="number"?e:Number(e);return Number.isFinite(t)?Math.floor(t):null}function _j(e,t,r){if(e===void 0||!e||typeof e!="object"||Array.isArray(e))return;const n=e,s=["canonicalFingerprint","contractVersion","domain","entityId","entityRevision","lifecycleRevision","mutationKind","sequence"],i=Object.keys(n).sort(),l=new Set(["create","metadata-update","append-comment","archive","unarchive"]);if(!(i.length!==s.length||i.some((c,d)=>c!==s[d])||n.contractVersion!==3||n.domain!==t||n.entityId!==r||typeof n.mutationKind!="string"||!l.has(n.mutationKind)||typeof n.sequence!="string"||!/^[1-9]\d*$/.test(n.sequence)||typeof n.entityRevision!="string"||!/^\d+$/.test(n.entityRevision)||typeof n.lifecycleRevision!="string"||!/^\d+$/.test(n.lifecycleRevision)||n.entityRevision==="0"||n.mutationKind==="create"&&(n.entityRevision!=="1"||n.lifecycleRevision!=="0")||(n.mutationKind==="archive"||n.mutationKind==="unarchive")&&n.lifecycleRevision==="0"||typeof n.canonicalFingerprint!="string"||!/^[a-f0-9]{64}$/.test(n.canonicalFingerprint)))return n}function Tj(e,t){if(!e||typeof e!="object"||Array.isArray(e))return null;const r=e,n=String(r.id||"").trim();if(!n)return null;const s=_j(r.durableRevision,"initiative",n);if(Object.prototype.hasOwnProperty.call(r,"durableRevision")&&!s)throw new Error("Initiative durable revision is invalid.");const i=ap(r.comments);return{id:n,referenceNumber:Cj(r.referenceNumber),referenceLabel:LI(r.referenceLabel),title:String(r.title||"").trim(),description:typeof r.description=="string"?r.description:null,ownerId:Aj(r.ownerId),...i?{comments:i}:{},createdAt:String(r.createdAt||t||"").trim(),updatedAt:String(r.updatedAt||t||r.createdAt||"").trim(),order:Ij(r.order),attachments:sp(r.attachments),isArchived:!!r.isArchived,...s?{durableRevision:s}:{}}}function xj(e){const t=Tj(e);if(!t||!t.createdAt||!t.updatedAt)throw new Error("Initiative is missing canonical sync identity or watermarks.");return{...t,attachments:V1(e.attachments)}}const OI=["create","metadata-update","append-comment","archive","unarchive"],Rj={coverageProfileId:"covered-metadata",coverageVersion:1,projections:[{projectionId:"initiative/full-v1",domain:"initiative",schemaVersion:1,mutationKinds:OI,fields:["id","referenceNumber","referenceLabel","title","description","ownerId","comments","attachments","order","createdAt","updatedAt","isArchived"],dependencies:[],operationAtomic:!0}]};function Mv(e){return Array.isArray(e)?e.every(Mv):!e||typeof e!="object"?!0:Object.entries(e).every(([t,r])=>t!=="content"&&t!=="contentBase64"&&Mv(r))}function BI(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=e;return typeof t.coverageDigest=="string"&&/^[a-f0-9]{64}$/.test(t.coverageDigest)&&hn({coverageProfileId:t.coverageProfileId,coverageVersion:t.coverageVersion,projections:t.projections})===hn(Rj)}function WI(e){const t=n=>/^\d+$/.test(String(n??""));if(e.projection!=="initiative/full-v1"||e.domain!=="initiative"||!e.entityId||!OI.includes(e.mutationKind)||!t(e.sequence)||!t(e.entityRevision)||!t(e.lifecycleRevision)||!/^[a-f0-9]{64}$/.test(e.payloadFingerprint)||!Mv(e.payload)||e.contentSha256!==void 0||e.sizeBytes!==void 0)throw new Error("Workspace sync v3 initiative entry is invalid.");const r=xj(e.payload);if(r.id!==e.entityId||hn(r)!==hn(e.payload))throw new Error("Workspace sync v3 initiative payload is not canonical.")}const Pj={getLocalProjection:YC,applyLocalProjection:ZC,pullFeed:KC,pullInitiativeRepair:rI};function jj(e,t){const r=e.data?.projection;return!e.ok||e.data?.success!==!0||e.data?.contractVersion!==3||e.data?.workspaceId!==t||!r||r.owner!=="v2"&&r.owner!=="v3"||!/^\d+$/.test(r.epoch)?null:r}function Gm(e){return e.data?.result?.projection||e.data?.projection||null}function Tl(e,t,r){return{kind:"transient-failure",status:e.status,retryAfterMs:e.retryAfterMs,error:String(e.data?.error||r),excludeInitiativesFromV2:t==="v3"}}function Bh(e){return e===0||e===429||e>=500}function TS(e,t){const r=e.data,n=r.coverage,s=r?.repair;if(e.status!==409||r?.workspaceId!==t||r?.protocolVersion!==3||r.legacyInitiativePushDisabled!==!0||r.code!=="CURSOR_EXPIRED"&&r.code!=="COVERAGE_CHANGED"||!s||!BI(n)||s.mode!=="authoritative-covered-projection-snapshot"||!/^\d+$/.test(String(s.snapshotSequence||""))||!Array.isArray(s.entries)||typeof s.hasMore!="boolean"||s.hasMore!==!!s.nextRepairCursor||typeof s.resumeCursor!="string"||!s.resumeCursor)return null;try{s.entries.forEach(WI)}catch{return null}return s}function Ej(e,t){const r=e.data;if(!e.ok||r?.protocolVersion!==3||r?.workspaceId!==t||r.legacyInitiativePushDisabled!==!0||!Array.isArray(r.entries)||typeof r.nextCursor!="string"||!r.nextCursor||typeof r.hasMore!="boolean"||!BI(r.coverage)||!/^\d+$/.test(String(r.cycleHighWatermark||""))||!/^\d+$/.test(String(r.lastScannedSequence||""))||!r.diagnostics||r.diagnostics.coveredCount!==r.entries.length||r.diagnostics.scannedCount<r.entries.length)return null;try{r.entries.forEach(WI)}catch{return null}return r}async function Nj(e){let t=e.projection,r=t.repair?.cursor||null;const n=new Set;for(;;){const s=await e.dependencies.pullInitiativeRepair(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:r,limit:100});if(!s.ok)return s.status===401?{kind:"auth-failure",status:401,excludeInitiativesFromV2:!1}:Tl(s,"v2","Initiative fallback repair failed.");const i=s.data;if(i?.success!==!0||i.workspaceId!==e.workspaceId||!/^\d+$/.test(String(i.snapshotSequence||""))||!Array.isArray(i.entries)||typeof i.hasMore!="boolean"||i.hasMore!==!!i.nextRepairCursor)return{kind:"transient-failure",status:502,error:"Initiative fallback repair returned an invalid page.",excludeInitiativesFromV2:!1};const l=await e.dependencies.applyLocalProjection(e.workspaceId,{kind:"fallback-repair",epoch:t.epoch,previousCursor:r,page:{snapshotSequence:String(i.snapshotSequence),entries:i.entries,hasMore:i.hasMore,nextRepairCursor:i.nextRepairCursor||null}}),c=Gm(l);if(!l.ok||!c)return Tl(l,"v3","Initiative fallback repair could not be staged locally.");if(t=c,!i.hasMore)return t.owner==="v2"?{kind:"v2-fallback",excludeInitiativesFromV2:!1}:{kind:"transient-failure",status:502,error:"Initiative fallback repair did not switch ownership.",excludeInitiativesFromV2:!0};const d=String(i.nextRepairCursor||"");if(!d||d===r||n.has(d))return{kind:"transient-failure",status:502,error:"Initiative fallback repair made no progress.",excludeInitiativesFromV2:!1};n.add(d),r=d}}async function hd(e){return Nj(e)}async function Wh(e){const t=await e.dependencies.applyLocalProjection(e.workspaceId,{kind:"rollback",epoch:e.projection.epoch}),r=Gm(t);return!t.ok||!r||r.owner!=="v2"?Tl(t,e.projection.owner,"Initiative activation rollback is not ready."):{kind:"transient-failure",status:409,error:"Local initiative changes must complete v2 synchronization before v3 activation can retry.",excludeInitiativesFromV2:!1}}async function Lv(e){const t={...Pj,...e.dependencies},r={...t,applyLocalProjection:async(...l)=>{const c=await t.applyLocalProjection(...l);return c.ok&&c.data?.success!==!1&&"page"in l[1]&&e.onChangesApplied?.(l[1].page.entries.length),c}},n=await r.getLocalProjection(e.workspaceId),s=jj(n,e.workspaceId);if(!s)return Tl(n,"v2","Local initiative projection state is unavailable.");if(s.owner==="v3"&&s.repair?.resumeCursor.startsWith("v2-fallback:"))return hd({...e,projection:s,dependencies:r});if(!e.activationEnabled)return s.owner==="v3"?hd({...e,projection:s,dependencies:r}):s.repair?Wh({workspaceId:e.workspaceId,projection:s,dependencies:r}):{kind:"v2-fallback",excludeInitiativesFromV2:!1};let i=s;for(;i.owner==="v2"||i.repair;){const l=await r.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,repairCursor:i.repair?.cursor||null,limit:100});if(l.status===401)return{kind:"auth-failure",status:401,excludeInitiativesFromV2:!1};if(l.status===404||l.status!==409&&!Bh(l.status))return i.owner==="v3"?hd({...e,projection:i,dependencies:r}):Wh({workspaceId:e.workspaceId,projection:i,dependencies:r});if(Bh(l.status))return Tl(l,"v2","Workspace sync v3 feed is temporarily unavailable.");const c=TS(l,e.workspaceId);if(!c)return i.owner==="v3"?hd({...e,projection:i,dependencies:r}):Wh({workspaceId:e.workspaceId,projection:i,dependencies:r});const d=await r.applyLocalProjection(e.workspaceId,{kind:"repair",epoch:i.epoch,previousCursor:i.repair?.cursor||null,page:c}),m=Gm(d);if(!d.ok||!m)return Wh({workspaceId:e.workspaceId,projection:i,dependencies:r});const f=i.repair?.cursor||null;if(i=m,i.owner==="v2"&&i.repair?.cursor===f)return{kind:"transient-failure",status:502,error:"Initiative repair made no local progress.",excludeInitiativesFromV2:!1}}for(;i.owner==="v3";){const l=await r.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:i.opaqueCursor,limit:100});if(l.status===401)return{kind:"auth-failure",status:401,excludeInitiativesFromV2:!0};if(l.status===404||l.status!==409&&!l.ok&&!Bh(l.status))return hd({...e,projection:i,dependencies:r});if(Bh(l.status))return Tl(l,"v3","Workspace sync v3 feed is temporarily unavailable.");if(l.status===409){const f=TS(l,e.workspaceId);if(!f)return hd({...e,projection:i,dependencies:r});const g=await r.applyLocalProjection(e.workspaceId,{kind:"repair",epoch:i.epoch,previousCursor:null,page:f}),h=Gm(g);if(!g.ok||!h)return Tl(g,"v3","Initiative repair could not be applied locally.");if(i=h,i.repair)return Lv({...e,dependencies:t});continue}const c=Ej(l,e.workspaceId);if(!c||!i.opaqueCursor)return hd({...e,projection:i,dependencies:r});const d=await r.applyLocalProjection(e.workspaceId,{kind:"delta",epoch:i.epoch,previousCursor:i.opaqueCursor,page:c}),m=Gm(d);if(!d.ok||!m)return Tl(d,"v3","Workspace sync v3 feed could not be applied locally.");if(m.owner!=="v3"||m.repair||m.opaqueCursor!==c.nextCursor)return{kind:"transient-failure",status:502,error:"Workspace sync v3 feed did not commit its exact cursor.",excludeInitiativesFromV2:!0};if(!c.hasMore)return{kind:"v3-active",excludeInitiativesFromV2:!0};if(m.opaqueCursor===i.opaqueCursor)return{kind:"transient-failure",status:502,error:"Workspace sync v3 feed made no local progress.",excludeInitiativesFromV2:!0};i=m}return{kind:"v2-fallback",excludeInitiativesFromV2:!1}}const _d=Object.freeze([]),Dj=960*1e3,Mj="coverage/task-planning-metadata-v1",Lj={getLocalProjection:JC,applyLocalProjection:XC,pullFeed:qC,pullFallbackRepair:nI,getLocalTaskCommentAudit:QC,pullTaskCommentAudit:eI,applyLocalTaskCommentAudit:tI};function kg(e){return El(e)?.coverage||null}function Pl(e){return e.owner!=="v3"?_d:El(e)?.excludedProjections||_d}function Bi(e,t){return e.coverageProfileId===t.coverageProfileId&&e.coverageVersion===t.coverageVersion&&e.coverageDigest===t.coverageDigest}function Oj(e,t){return Bi(t,Ca)?e:{...e,coverage:t}}function Vu(e,t,r,n){return Bi(n,Ca)?e.applyLocalProjection(t,r):e.applyLocalProjection(t,r,n)}function $I(e){return!!(e&&e.coverageId===Mj&&(e.owner==="v2"||e.owner==="v3")&&El(e)&&typeof e.coverageRepairRequired=="boolean"&&/^\d+$/.test(e.epoch)&&(e.repair===null||typeof e.repair=="object"&&/^\d+$/.test(String(e.repair.epoch||""))&&e.repair.snapshotId&&/^\d+$/.test(String(e.repair.snapshotSequence||""))&&typeof e.repair.resumeCursor=="string"&&(e.repair.cursor===null||typeof e.repair.cursor=="string")))}function Bj(e,t){const r=e.data?.projection;return!e.ok||e.data?.success!==!0||e.data?.contractVersion!==3||e.data?.workspaceId!==t||!$I(r)?null:r}function Gu(e,t){const r=e.data?.result?.projection||e.data?.projection;return e.ok&&e.data?.success===!0&&e.data?.contractVersion===3&&e.data?.workspaceId===t&&$I(r)?r:null}function Sm(e){return e.ok&&e.data?.success===!0&&e.data?.result?.state==="invalidated"}function ko(e,t,r){return{kind:"transient-failure",status:e.status,retryAfterMs:e.retryAfterMs,error:String(e.data?.error||r),...e.data?.causeCode?{causeCode:String(e.data.causeCode)}:{},...e.data?.causeAssetId?{causeAssetId:String(e.data.causeAssetId)}:{},excludedProjections:Pl(t)}}function vs(e,t){return{kind:"transient-failure",status:502,error:t,excludedProjections:Pl(e)}}function Wj(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return!1;const n=e;return n.success===!0&&n.contractVersion===3&&n.workspaceId===t&&n.previousCursor===r&&Array.isArray(n.entries)&&typeof n.hasMore=="boolean"&&n.hasMore===!!n.nextCursor}async function $j(e){const t=await e.dependencies.getLocalTaskCommentAudit(e.workspaceId),r=t.ok&&t.data?.success===!0&&t.data.contractVersion===3&&t.data.workspaceId===e.workspaceId&&(t.data.cursor===null||t.data.cursor===void 0||typeof t.data.cursor=="string")?t.data.cursor||null:void 0,n=t.data?.nextSweepAt==null?null:String(t.data.nextSweepAt);if(r===void 0)return ko(t,e.projection,"Local task comment audit state is unavailable.");const s=Date.now(),i=Date.parse(n||""),l=Number.isFinite(i)&&i>s&&i<=s+Dj;if(r===null&&l)return null;const c=await e.dependencies.pullTaskCommentAudit(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:r,limit:50});if(c.status===401)return{kind:"auth-failure",status:401,excludedProjections:Pl(e.projection)};if(!c.ok||!Wj(c.data,e.workspaceId,r))return ko(c,e.projection,"Cloud task comment audit is temporarily unavailable.");const d=await e.dependencies.applyLocalTaskCommentAudit(e.workspaceId,c.data),m=d.data?.result,f=m?.stale===!0&&m.previousCursor===c.data.nextCursor&&m.nextCursor===c.data.nextCursor;return!d.ok||d.data?.success!==!0||d.data.contractVersion!==3||d.data.workspaceId!==e.workspaceId||!f&&(m?.previousCursor!==r||m?.nextCursor!==c.data.nextCursor)?ko(d,e.projection,"Task comment audit could not be applied locally."):(f||e.onChangesApplied?.(Math.max(0,Number(m?.reconciliationsQueued)||0)+Math.max(0,Number(m?.activityEventsApplied)||0)),null)}function Am(e){return e===0||e===429||e>=500}function fy(e,t){if(!e||typeof e!="object"||Array.isArray(e))return!1;const r=e;return r.coverageProfileId===t.coverageProfileId&&r.coverageVersion===t.coverageVersion&&r.coverageDigest===t.coverageDigest}function Ww(e,t,r){if(!e||typeof e!="object"||Array.isArray(e))return!1;const n=e;return n.success===!0&&n.protocolVersion===3&&n.workspaceId===t&&fy(n.coverage,r)&&!!n.snapshotId&&/^\d+$/.test(String(n.snapshotSequence||""))&&Number.isFinite(Date.parse(String(n.expiresAt||"")))&&Array.isArray(n.entries)&&typeof n.hasMore=="boolean"&&n.hasMore===!!n.nextRepairCursor&&!!n.resumeCursor&&!!n.diagnostics&&n.diagnostics.returnedEntries===n.entries.length}function FI(e,t,r){const n=e.data,s=String(n?.code||"unknown");let i="repair envelope is incompatible";n?.protocolVersion!==3||n?.workspaceId!==t?i="protocol or workspace scope is incompatible":["CURSOR_EXPIRED","COVERAGE_CHANGED","EXPLICIT_REPAIR"].includes(s)?fy(n.coverage,r)?n.repairMode!=="authoritative-covered-projection-snapshot"?i="repair mode is incompatible":Rw(n.peerCapability,r)?Pw(n.legacyV2Boundary,r)?Ww(n.repair,t,r)||(i="repair page is incompatible"):i="legacy v2 boundary attestation is incompatible":i="peer capability attestation is incompatible":i="coverage attestation is incompatible":i="repair code is unsupported";const l=String(n?.error||"").trim();return`Cloud combined workspace sync returned an invalid repair response (${s}; ${i}).`+(l?` Cloud error: ${l}`:"")}function $h(e,t,r){const n=e.data;return e.status===409&&n?.protocolVersion===3&&n.workspaceId===t&&(n.code==="CURSOR_EXPIRED"||n.code==="COVERAGE_CHANGED"||n.code==="EXPLICIT_REPAIR")&&fy(n.coverage,r)&&n.repairMode==="authoritative-covered-projection-snapshot"&&Rw(n.peerCapability,r)&&Pw(n.legacyV2Boundary,r)&&Ww(n.repair,t,r)?n.repair:null}function Fj(e,t,r){const n=e.data;return e.ok&&n?.success===!0&&n.protocolVersion===3&&n.workspaceId===t&&fy(n.coverage,r)&&Rw(n.peerCapability,r)&&Pw(n.legacyV2Boundary,r)&&Array.isArray(n.entries)&&typeof n.nextCursor=="string"&&n.nextCursor&&typeof n.hasMore=="boolean"&&/^\d+$/.test(String(n.cycleHighWatermark||""))&&/^\d+$/.test(String(n.lastScannedSequence||""))&&n.diagnostics&&n.diagnostics.coveredCount===n.entries.length&&n.diagnostics.scannedCount>=n.entries.length?n:null}function Uj(e){const t=e.data&&typeof e.data=="object"?e.data.peerCapability:void 0,r=Array.isArray(t?.missingPrerequisites)?String(t.missingPrerequisites[0]||"").trim():"";return r?`Cloud combined workspace sync prerequisite is not ready (${r}).`:"Cloud combined workspace sync capability attestation is missing or incompatible."}function zj(e,t,r){const n=String(e.data?.code||"").trim();return n&&!["CURSOR_EXPIRED","COVERAGE_CHANGED","EXPLICIT_REPAIR"].includes(n)?FI(e,t,r):Uj(e)}function Hj(e){return e.data?.success!==!1?!1:e.status===410&&e.data.code==="WORKSPACE_SYNC_V3_COMBINED_REPAIR_SNAPSHOT_UNAVAILABLE"||e.status===400&&e.data.code==="INVALID_SYNC_V3_REPAIR_CURSOR"}async function Fh(e){let t=e.projection;const r=kg(t);if(!r)return vs(t,"Persisted combined workspace sync coverage is unsupported.");let n=t.repair?.resumeCursor.startsWith("v2-fallback:")?t.repair.cursor:null;const s=new Set;let i=!1;for(;;){const l=await e.dependencies.pullFallbackRepair(e.resolveCloudAuthUrl,Oj({workspaceId:e.workspaceId,cursor:n,limit:100},r));if(l.status===401)return{kind:"auth-failure",status:401,excludedProjections:Pl(t)};if(l.status===410&&n&&!i&&l.data?.success===!1&&l.data.code==="WORKSPACE_SYNC_V3_COMBINED_REPAIR_SNAPSHOT_UNAVAILABLE"){i=!0,n=null,s.clear();continue}if(!l.ok)return ko(l,t,"Combined v2 fallback repair failed.");const c=Ww(l.data,e.workspaceId,r)&&XR(l.data.legacyV2Boundary)?l.data:null;if(!c)return vs(t,"Combined v2 fallback repair returned an invalid page.");const d=await Vu(e.dependencies,e.workspaceId,{kind:"fallback-repair",epoch:t.epoch,previousCursor:n,page:c},r),m=Gu(d,e.workspaceId);if(!d.ok||!m)return ko(d,t,"Combined v2 fallback repair could not be applied locally.");if(t=m,!c.hasMore)return t.owner==="v2"&&!t.repair?{kind:"v2-fallback",excludedProjections:_d}:vs(t,"Combined v2 fallback repair did not release v3 ownership.");const f=String(c.nextRepairCursor||"");if(!f||f===n||s.has(f)||t.owner!=="v3"||t.repair?.cursor!==f||!t.repair.resumeCursor.startsWith("v2-fallback:"))return vs(t,"Combined v2 fallback repair made no progress.");s.add(f),n=f}}function xS(e){return Ov(e,!1)}async function Ov(e,t){const r={...Lj,...e.dependencies},n={...r,applyLocalProjection:async(...b)=>{const w=await r.applyLocalProjection(...b);return w.ok&&w.data?.success!==!1&&!Sm(w)&&e.onChangesApplied?.(b[1].page.entries.length),w}},s=e.coverage||Ca,i=El(s);if(!i)return{kind:"transient-failure",status:502,error:"Requested combined workspace sync coverage is unsupported.",excludedProjections:_d};const l=await n.getLocalProjection(e.workspaceId,s),c=Bj(l,e.workspaceId);if(!c)return{kind:"transient-failure",status:l.status,retryAfterMs:l.retryAfterMs,error:String(l.data?.error||"Local combined projection state is unavailable."),excludedProjections:_d};if(c.owner==="v3"&&c.repair?.resumeCursor.startsWith("v2-fallback:"))return Fh({...e,projection:c,dependencies:n});if(!e.activationEnabled)return c.owner==="v3"?Fh({...e,projection:c,dependencies:n}):{kind:"v2-fallback",excludedProjections:_d};let d=c,m=!1,f=!1,g=!1,h=t;const y=kg(d);if(!y)return vs(d,"Persisted combined workspace sync coverage is unsupported.");if(g=d.owner==="v3"&&d.repair!==null&&!Bi(y,s),d.coverageRepairRequired||d.owner==="v3"&&!d.repair&&!Bi(y,s)){const b=await n.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,...d.owner==="v3"&&d.opaqueCursor?{cursor:d.opaqueCursor}:{},limit:100,...Bi(s,Ca)?{}:{coverage:s}});if(b.status===401)return{kind:"auth-failure",status:401,excludedProjections:Pl(d)};if(Am(b.status))return ko(b,d,"Combined workspace sync coverage upgrade is temporarily unavailable.");const w=$h(b,e.workspaceId,s);if(!w)return vs(d,"Cloud combined workspace sync did not provide the required coverage upgrade repair.");const R=await Vu(n,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:null,page:w,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),N=Gu(R,e.workspaceId),j=N?kg(N):null;if(N&&Sm(R)){if(h)return vs(N,"A refreshed combined repair snapshot still predates authoritative local state.");d=N,f=!0,h=!0}else if(!R.ok||!N||!j||(w.hasMore?!N.repair||N.repair.cursor!==w.nextRepairCursor||!Bi(j,y):N.coverageRepairRequired||N.repair!==null||!Bi(j,s)))return ko(R,d,"Combined workspace sync coverage upgrade could not be applied locally.");d=N,m=!!(e.recoveryBatchId&&!d.repair)}if(e.forceAuthoritativeRepair&&!m&&d.owner==="v3"&&!d.repair){const b=await n.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,limit:100,forceRepair:!0,...Bi(s,Ca)?{}:{coverage:s}});if(b.status===401)return{kind:"auth-failure",status:401,excludedProjections:Pl(d)};if(Am(b.status))return ko(b,d,"Combined workspace sync authoritative recovery is temporarily unavailable.");const w=$h(b,e.workspaceId,s);if(!w)return vs(d,"Cloud combined workspace sync did not provide the requested authoritative repair.");const R=await Vu(n,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:null,page:w,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),N=Gu(R,e.workspaceId);if(!R.ok||!N)return ko(R,d,"Combined workspace sync authoritative recovery could not be applied locally.");if(d=N,Sm(R)){if(h)return vs(d,"A refreshed combined repair snapshot still predates authoritative local state.");f=!0,h=!0}}let k=!1,v=!1;for(;d.owner==="v2"||d.repair||f||g;){const b=k||f||g?null:d.repair?.cursor||null,w=await n.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,...k||f||g?{forceRepair:!0}:{repairCursor:b},limit:100,...Bi(s,Ca)?{}:{coverage:s}});if(w.status===401)return{kind:"auth-failure",status:401,excludedProjections:Pl(d)};if(b&&!v&&Hj(w)){v=!0,k=!0;continue}if(Am(w.status))return ko(w,d,"Combined workspace sync feed is temporarily unavailable.");const R=$h(w,e.workspaceId,s);if(!R)return vs(d,zj(w,e.workspaceId,s));const N=await Vu(n,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:b,page:R,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),j=Gu(N,e.workspaceId);if(!N.ok||!j)return ko(N,d,"Combined workspace sync repair could not be applied locally.");if(d=j,k=!1,f=!1,g=!1,Sm(N)){if(h)return vs(d,"A refreshed combined repair snapshot still predates authoritative local state.");h=!0,f=!0;continue}if(d.repair?.cursor===b)return vs(d,"Combined workspace sync repair made no local progress.")}const A=kg(d);if(d.owner!=="v3"||!A||!Bi(A,s))return vs(d,"Combined workspace sync repair did not activate the requested coverage.");if(e.recoveryBatchId)return{kind:"v3-active",excludedProjections:i.excludedProjections};for(;d.owner==="v3";){const b=await n.pullFeed(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:d.opaqueCursor,limit:100,...Bi(s,Ca)?{}:{coverage:s}});if(b.status===401)return{kind:"auth-failure",status:401,excludedProjections:Pl(d)};if(b.status===404||b.status!==409&&!b.ok&&!Am(b.status))return Fh({...e,projection:d,dependencies:n});if(Am(b.status))return ko(b,d,"Combined workspace sync feed is temporarily unavailable.");if(b.status===409){const j=$h(b,e.workspaceId,s);if(!j)return vs(d,FI(b,e.workspaceId,s));const E=await Vu(n,e.workspaceId,{kind:"repair",epoch:d.epoch,previousCursor:null,page:j,...e.recoveryBatchId?{recoveryBatchId:e.recoveryBatchId}:{}},s),S=Gu(E,e.workspaceId);if(!E.ok||!S)return ko(E,d,"Combined workspace sync repair could not be applied locally.");if(d=S,Sm(E))return h?vs(d,"A refreshed combined repair snapshot still predates authoritative local state."):Ov({...e,forceAuthoritativeRepair:!0},!0);if(d.repair)return Ov({...e,dependencies:r},h);continue}const w=Fj(b,e.workspaceId,s);if(!w||!d.opaqueCursor)return Fh({...e,projection:d,dependencies:n});const R=await Vu(n,e.workspaceId,{kind:"delta",epoch:d.epoch,previousCursor:d.opaqueCursor,page:w},s),N=Gu(R,e.workspaceId);if(!R.ok||!N)return ko(R,d,"Combined workspace sync page could not be applied locally.");if(N.owner!=="v3"||N.repair||N.opaqueCursor!==w.nextCursor)return vs(d,"Combined workspace sync feed did not commit its exact v3 cursor.");if(!w.hasMore)return await $j({resolveCloudAuthUrl:e.resolveCloudAuthUrl,workspaceId:e.workspaceId,projection:N,dependencies:n,onChangesApplied:e.onChangesApplied})||{kind:"v3-active",excludedProjections:i.excludedProjections};if(N.opaqueCursor===d.opaqueCursor)return vs(d,"Combined workspace sync feed made no local progress.");d=N}return{kind:"v2-fallback",excludedProjections:_d}}var Vj={};async function UI(e){const t=e.remoteServices,r=e.localServices.applyV2Batch,n=`attachment-asset:${e.assetId}`,s=await t.pullWorkspaceContent({workspaceId:e.workspaceId,requests:[{kind:"asset",assetId:e.assetId}],previousCursor:null,independentCompletionIdentity:n}),i=s.transferReceipt;let l=!1,c=!1;try{if(!s.ok)return{success:!1,error:`Workspace attachment asset hydration failed (${s.status||0}).`};const d=s.data||{};if((d.remaining?.length||0)>0)return{success:!1,error:`Workspace attachment asset hydration is incomplete: ${e.assetId}`,disposition:"retryable"};const m=Array.isArray(d.missing)&&d.missing.find(j=>j?.kind==="asset"&&"assetId"in j&&String(j.assetId||"").trim()===e.assetId);if(m)return{success:!1,error:m.disposition==="terminal-unavailable"?`Workspace attachment asset is authoritatively unavailable in cloud metadata: ${e.assetId}`:`Workspace attachment asset body is temporarily unavailable in cloud content: ${e.assetId}`,disposition:m.disposition==="terminal-unavailable"?"terminal-unavailable":"retryable"};if((d.missing?.length||0)>0)return{success:!1,error:`Workspace attachment asset hydration returned an unexpected missing result: ${e.assetId}`,disposition:"retryable"};const f=Array.isArray(d.changes)?d.changes:[],g=f.filter(j=>(j.op==="document-upsert"||j.op==="asset-upsert")&&String(j.assetId||"").trim()===e.assetId);if(f.length!==1||g.length!==1)return{success:!1,error:`Workspace attachment asset hydration returned an unexpected payload: ${e.assetId}`};try{await gg(g[0],typeof process<"u"?Vj?.TASKFORCE_SYNC_KEY:void 0)}catch{return{success:!1,error:`Workspace attachment asset hydration decryption failed: ${e.assetId}`}}const h=Array.isArray(d.contentMetadata)?d.contentMetadata:[],y=g[0].op==="document-upsert"?"document":"asset",k=h.filter(j=>j.kind===y&&j.assetId===e.assetId&&j.path===g[0].path);if(h.length!==1||k.length!==1)return{success:!1,error:`Workspace attachment asset hydration metadata is unavailable: ${e.assetId}`};const v=k[0],A=g[0].op==="document-upsert"?await Og("document",g[0].content):await Og("asset",g[0].contentBase64);if(A.sha256!==v.sha256.toLowerCase()||A.sizeBytes!==v.sizeBytes)return{success:!1,error:`Workspace attachment asset hydration verification failed: ${e.assetId}`};const b=i?t.buildIndependentContentApplyCompletionGroup({workspaceId:e.workspaceId,identity:n,receipts:[i]}):void 0;if(i&&!b)return{success:!1,error:"Workspace attachment asset hydration could not bind its transfer to local apply."};c=!0;const w=b?await r(e.workspaceId,g,{completionGroup:b}):await r(e.workspaceId,g);if(!w.ok)return{success:!1,error:`Workspace attachment asset hydration apply failed (${w.status||0}).`};l=!0;const R=w.data&&typeof w.data=="object"?w.data:{},N=Array.isArray(R.emittedEventIds)?R.emittedEventIds.map(j=>String(j||"").trim()).filter(Boolean):[];return{success:!0,appliedChanges:g.length,emittedEventIds:N}}finally{if(i&&!l){if(!c){const d=t.buildIndependentContentApplyCompletionGroup({workspaceId:e.workspaceId,identity:n,receipts:[i]});d&&(c=!0,l=(await r(e.workspaceId,[],{completionGroup:d})).ok)}l||await t.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:[i],errorCode:"WORKSPACE_SYNC_V3_ATTACHMENT_HYDRATION_NOT_COMMITTED"})}}}const Gj="/api/taskforce/sync/v3/local/recovery";async function Kj(e){const t=String(e.workspaceId||"").trim();if(!t)throw new Error("Workspace id is required to prepare local recovery.");const r=await(e.fetchImpl||fetch)(Gj,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:t})}),n=await r.json().catch(()=>null);if(!r.ok||n?.success!==!0){const c=String(n?.error||`Local workspace sync recovery failed (${r.status}).`),d=typeof n?.code=="string"?n.code.trim():"";let m="unknown-origin";try{m=new URL(r.url).origin}catch{}throw new Error(`${c} [${d||"UNKNOWN_RECOVERY_ERROR"}; HTTP ${r.status}; ${m}]`)}if(n.kind==="none"&&n.needsAuthoritativeRepair===!1&&n.recovery===null)return{kind:"none",needsAuthoritativeRepair:!1,recoveryBatchId:null};if(n.kind!=="recovery"||typeof n.needsAuthoritativeRepair!="boolean"||!n.recovery||typeof n.recovery!="object"||Array.isArray(n.recovery))throw new Error("Local workspace sync recovery returned an invalid response.");const s=n.recovery,i=String(s.recoveryBatchId||"").trim(),l=String(s.state||"");if(!/^recovery-[A-Za-z0-9-]{1,200}$/.test(i)||!["awaiting_baseline","baseline_ready","replay_queued","completed"].includes(l)||n.needsAuthoritativeRepair===!0&&l!=="awaiting_baseline")throw new Error("Local workspace sync recovery returned an invalid state.");return{kind:"recovery",needsAuthoritativeRepair:n.needsAuthoritativeRepair,recoveryBatchId:i,state:l}}function qj(e){const t=e.data&&typeof e.data=="object"&&!Array.isArray(e.data)?e.data:{},r=String(t.error||"").trim(),n=String(t.code||"").trim(),s=Number(e.status)||0;return r?`Authoritative V2 push echo apply failed (${s}): ${r}${n?` [${n}]`:""}`:`Authoritative V2 push echo apply failed (${s}).`}function Yj(e={}){return{readPushOwnership:oI,readContentManifest:aI,applyV2Batch:iI,listContentPullObligations:VC,recordContentPullObligationFailures:GC,readInitiativeProjection:YC,applyInitiativeProjection:ZC,readCombinedProjection:JC,applyCombinedProjection:XC,readTaskCommentAuditCursor:QC,applyTaskCommentAuditPage:tI,prepareOutboxRecovery:t=>Kj({workspaceId:t,...e.recoveryFetchImpl?{fetchImpl:e.recoveryFetchImpl}:{}}),completeAuthoritativeRepair:d1}}function Zj(e){return e.causeCode==="TASK_ATTACHMENT_ASSET_NOT_READY"&&e.causeAssetId?e.causeAssetId:e.status!==409?null:/^Task attachment asset is unavailable because it has not reached this runtime: ([A-Za-z0-9._:-]+)$/.exec(String(e.error||""))?.[1]||null}function Jj(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e.repair;return t&&typeof t=="object"&&!Array.isArray(t)?t:e}function RS(e){return e.kind==="delta"?String(e.page.nextCursor||"")||null:e.page.hasMore===!0?String(e.page.nextRepairCursor||"")||null:e.kind==="repair"&&String(e.page.resumeCursor||"")||null}function Xj(e){const t=new WeakMap,r=new Set,n=m=>{const f=Jj(m.data);return m.transferReceipt&&(r.add(m.transferReceipt),f&&t.set(f,m.transferReceipt)),m},s=(m,f)=>{const g=t.get(m);if(!g)return;const h=e.remoteServices.buildV3ApplyCompletionGroup({workspaceId:e.workspaceId,apply:f,receipts:[g]});if(!h)throw new Error("A v3 sync transfer receipt did not produce an apply completion group.");return h},i=async m=>{try{await e.remoteServices.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:m,errorCode:eS})}catch{await e.remoteServices.abandonTransferReceipts({workspaceId:e.workspaceId,receipts:m,errorCode:eS})}},l=async m=>{const f=t.get(m);f&&(await i([f]),t.delete(m),r.delete(f))},c=async(m,f,g)=>{let h=!1;try{const y=s(m,f),k=await g(y);if(y&&(!k||typeof k!="object"||!("ok"in k)||k.ok!==!0))h=!0,await l(m);else if(y){const v=t.get(m);t.delete(m),v&&r.delete(v)}return k}catch(y){throw h||await l(m),y}};return{abandonPendingReceipts:async()=>{if(r.size===0)return;const m=Array.from(r);await i(m);for(const f of m)r.delete(f)},initiative:{getLocalProjection:e.localServices.readInitiativeProjection,applyLocalProjection:(m,f)=>{if(f.kind==="rollback")return e.localServices.applyInitiativeProjection(m,f);const g={projection:"initiative",kind:f.kind,epoch:f.epoch,previousCursor:f.previousCursor,nextCursor:RS({kind:f.kind,page:f.page})};return c(f.page,g,h=>e.localServices.applyInitiativeProjection(m,f,h?{completionGroup:h}:void 0))},pullFeed:async(m,f)=>n(await e.remoteServices.pullInitiativeFeed(f)),pullInitiativeRepair:async(m,f)=>n(await e.remoteServices.pullInitiativeRepair(f))},combined:{getLocalProjection:e.localServices.readCombinedProjection,applyLocalProjection:(m,f,g)=>{const h={projection:"combined",kind:f.kind,epoch:f.epoch,previousCursor:f.previousCursor,nextCursor:RS({kind:f.kind,page:f.page})};return c(f.page,h,y=>e.localServices.applyCombinedProjection(m,f,g,y?{completionGroup:y}:void 0))},getLocalTaskCommentAudit:e.localServices.readTaskCommentAuditCursor,applyLocalTaskCommentAudit:(m,f)=>{const g={projection:"task-comment-audit",kind:"audit",previousCursor:f.previousCursor,nextCursor:f.nextCursor};return c(f,g,h=>e.localServices.applyTaskCommentAuditPage(m,f,h?{completionGroup:h}:void 0))},pullFeed:async(m,f)=>n(await e.remoteServices.pullCombinedFeed(f)),pullFallbackRepair:async(m,f)=>n(await e.remoteServices.pullCombinedRepair(f)),pullTaskCommentAudit:async(m,f)=>n(await e.remoteServices.pullTaskCommentAudit(f))}}}function Qj({cloudAuthConfigured:e,runtimeMode:t,initiativeFeedActivationEnabled:r,combinedFeedActivationEnabled:n,combinedFeedCoverage:s,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:d,checkAuthSession:m,resolveCloudAuthUrl:f,ensureCloudWorkspaceReadyForSync:g,ensureWorkspaceSyncReady:h,handleSyncAuthFailure:y,clearWorkspaceRetry:k,clearWorkspaceIssue:v,isWorkspaceRetryPending:A,isDurableRecoveryBlockingOrdinaryPush:b,isExecutionAuthorized:w=()=>!0,scheduleWorkspaceSyncRetry:R,persistWorkspaceSyncPatchSafely:N,persistWorkspaceSyncPatchBestEffort:j,persistWorkspaceSyncWatermarksSnapshotBestEffort:E,refreshWorkspaceAiProfilePushBaselineFromPersistence:S,reportSyncEvent:L,acquireWorkspaceSyncLease:_,releaseWorkspaceSyncLease:T,recordWorkspaceSyncCompletion:H,reportWorkspaceWindowContention:q,refreshWorkspaceSyncMarkdownDocumentsSnapshot:z,refreshWorkspaceSyncAiProfilesSnapshot:M,refreshWorkspaceSyncAssetsSnapshot:Z,refreshWorkspaceSyncTaxonomySnapshot:J,refreshWorkspaceSyncPlanningEntitiesSnapshot:ee,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:te,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:fe,refreshWorkspaceSyncTaskforceAgentsSnapshot:Ie,refreshLocalWorkspaceTaskCollections:$e,buildWorkspaceSyncPayload:Ye,buildWorkspaceSyncSignature:ye,seedWorkspaceSnapshotPushBaseline:ge,shouldSuppressAttachBootstrapPush:oe,recordSuppressedEventIds:ie,runtime:me,localServices:W,remoteServices:V,setWorkspaceSyncBusy:B,setUserGlobalSyncStatus:D,setUserGlobalSyncError:be,setWorkspaceLastErrorMessage:Se,setWorkspaceLastErrorAt:K,setWorkspaceLastPullAt:Y,setWorkspaceLastPushAt:G,setWorkspaceSyncPendingChanges:ae,setTasks:_e,setArchivedTasks:Oe,now:Fe,scheduleTask:st,logDebug:ft=()=>{},notifyAiProfilesMutated:xe=()=>{},notifyAgentsMutated:ke=()=>{},notifyAgentSkillsMutated:ve=()=>{}}){const{repairMode:Ve,forceFullAiProfilePush:Ne,pushInFlight:de,pullInFlight:x,pullAfterPushRequested:le,pendingPushReplay:Re,blockedPushSignature:Je,lastPushedSignature:X,pendingSignature:Ze,lastPushedTaskIds:re,deletedTaskIds:Ee,deletedTaskWatermarks:je,pullCursor:Pe,lastPushedWatermarks:Ce,lastPushedTaskChangeKeys:Te,lastPushedTaskRelationshipChangeKeys:pe,lastPushedTaxonomyChangeKey:Me,lastPushedInitiativeIds:et,lastPushedInitiativeWatermarks:Ue,lastPushedWorkstreamIds:yt,lastPushedWorkstreamWatermarks:Le,lastPushedPlanningIdentityWatermarks:mt,lastPushedAiProfileIds:kt,lastPushedAiProfileWatermarks:He,lastPushedAiProfileChangeKeys:rt,lastPushedDocumentPaths:It,lastPushedDocumentWatermarks:Xe,lastPushedAssetPaths:wt,lastPushedAssetWatermarks:at,lastPushedDocumentReviewSessionIds:U,lastPushedDocumentReviewSessionWatermarks:he,lastPushedDocumentReviewCommentIds:Ke,lastPushedDocumentReviewCommentWatermarks:Et,lastPushedAnnotatedAttachmentSessionIds:vt,lastPushedAnnotatedAttachmentSessionWatermarks:Bt,lastPushedTaskforceAgentIds:dr,lastPushedTaskforceAgentWatermarks:er,lastPushedTaskforceAgentSkillIds:cr,lastPushedTaskforceAgentSkillWatermarks:Ot,lastPushedAgentConversationIds:fr,lastPushedAgentConversationWatermarks:Ar,lastPushedTaskEventWatermarks:Lr,baselineResetReason:Wr,captureAttachBootstrapBaseline:De,startupFullReconcileRan:nt,startupFullReconcileRequested:pt,fullReconcileInFlight:ut,bootstrapLastProgressAtMs:Tt,realtimeSuppressedEventQueue:Xt}=me,Nt=new Map;let Qt=!1;const St=(ot,or,Nr)=>{if(Qt||!w()||Nt.has(ot))return;let ur=null;ur=st(()=>{Nt.delete(ot),!Qt&&w()&&or()},Nr),Nt.set(ot,ur)},Kt=()=>{if(!Qt){Qt=!0;for(const ot of Nt.values())ot.cancel();Nt.clear()}},Ft=async(ot,or)=>{if(!w())return!1;if(or?.repairMode!==!0&&b())return Ze.current=ot,!1;let Nr=Ev({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:d,repairModeActive:Ve.current===!0,repairModeBypass:or?.repairMode===!0,pushInFlight:de.current,pullInFlight:x.current});if(!Nr.allowed&&Nr.reason==="auth-required"){if(!await m())return!1;Nr=Ev({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:!0,repairModeActive:Ve.current===!0,repairModeBypass:or?.repairMode===!0,pushInFlight:de.current,pullInFlight:x.current})}if(!Nr.allowed)return Nr.retainPendingSignature&&(Ze.current=ot),!1;if(oe(ot))return!1;if(!await _(l,"push")){const Ir=hj("push");return!Ir.allowed&&Ir.retainPendingSignature&&(Ze.current=ot),q("push"),!1}de.current=!0,B(!0),D("syncing"),be(null);const ra=Fe().getTime(),wr=or?.forceAllAiProfiles===!0||Ne.current===!0,lr=or?.repairMode===!0||Ve.current===!0;let u=null,bt=!1,gt=ot,Xr=!1;try{S?.();const Ir=[await z(),await M(),await Z(),await J(),await ee(),await te(),await fe(),await Ie?.()];if(lr&&Ir.some(Zt=>Zt===!1)){const Zt="Workspace sync repair could not refresh the complete local snapshot. Press Repair to retry.";return k(),D("error"),be(Zt),Se(Zt),K(Fe().toISOString()),await j({phase:"error",lastErrorMessage:Zt}),L(l,{eventType:"push",status:"error",errorMessage:Zt,details:{recovery:"repair-snapshot-refresh-failed"}}),!1}if(!await h()||!w())return!1;const Ur=ye();if(Ur&&(gt=Ur),oe(gt))return!1;const $r=Re.current,an=$r&&$r.signature===gt&&(!wr||$r.forceAllAiProfiles===!0)&&(!lr||$r.repairMode===!0)?$r:null,Qr=an?.payload||Ye({forceAllAiProfiles:wr});u=Qr,bt=an!==null,ae(Qr.changes.length);const Ge=await P1({resolveCloudAuthUrl:f,workspaceId:l,payload:Qr,ensureCloudWorkspaceReadyForSync:g,repairMode:an?.repairMode??lr,remoteServices:V,localServices:W});if(!Ge.success){if(Ge.status===401)return Xr=!0,Re.current=null,await y("push",401),!1;let Zt=Ge.error?`Workspace sync push failed (${Ge.status||0}): ${Ge.error}`:`Workspace sync push failed (${Ge.status||0})`;return Ge.status===413&&(Zt="Workspace sync failed because the payload is too large. This usually happens when one or more attachments exceed the project limit."),D("error"),be(Zt),Se(Zt),K(Fe().toISOString()),L(l,{eventType:"push",status:"error",statusCode:Ge.status,errorMessage:Zt,requestMs:Ge.requestMs,details:{payloadDiagnostics:Qr.deltaDiagnostics||null,replayedPayload:bt,...Ge.batchProgress?{pushBatchProgress:Ge.batchProgress}:{}}}),Ze.current=gt,Ge.transient||li(Ge.status)?(Re.current={signature:gt,payload:Qr,forceAllAiProfiles:an?.forceAllAiProfiles??wr,repairMode:an?.repairMode??lr},R(Ge.retryAfterMs)):(Xr=!0,Je.current=gt,Re.current=null,c==="active"&&N({phase:"error",lastErrorMessage:Zt})),!1}const Gr=Ge.appliedTaskUpserts||[];if(Gr.length>0){const Zt=Ge.pushTransferReceipts||[],Sn=Ge.pushBoundary?V.buildV2PushApplyCompletionGroup({workspaceId:l,pushBoundary:Ge.pushBoundary,receipts:Zt}):void 0;if(Zt.length>0&&!Sn)throw await V.abandonTransferReceipts({workspaceId:l,receipts:Zt,errorCode:"WORKSPACE_SYNC_V2_PUSH_APPLY_COMPLETION_INVALID"}),new Error("Accepted V2 push echoes are missing an atomic local apply completion group.");let $t;try{const Ut={repairMode:an?.repairMode??lr,excludedProjections:Ge.effectiveV2ExcludedProjections},Fr=Gr.map(Wn=>({op:"upsert",archived:Wn.archived===!0,task:Wn.task,...Wn.durableRevision?{durableRevision:Wn.durableRevision}:{}}));$t=Sn?await W.applyV2Batch(l,Fr,{...Ut,completionGroup:Sn}):await W.applyV2Batch(l,Fr,Ut)}catch(Ut){throw Zt.length>0&&await V.abandonTransferReceipts({workspaceId:l,receipts:Zt,errorCode:"WORKSPACE_SYNC_V2_PUSH_AUTHORITATIVE_APPLY_FAILED"}),Ut}if(!$t.ok)throw Zt.length>0&&await V.abandonTransferReceipts({workspaceId:l,receipts:Zt,errorCode:"WORKSPACE_SYNC_V2_PUSH_AUTHORITATIVE_APPLY_FAILED"}),new Error(qj($t));for(const Ut of Gr){const Fr=String(Ut.task.id||"").trim(),Wn=String(Ut.task.updatedAt||Ut.task.createdAt||"").trim();!Fr||!Wn||(Ge.currentTaskWatermarks?.set(Fr,Wn),Ge.pushedWatermarks.set(Fr,Wn))}try{await $e()}catch{ft("push_local_task_refresh_failed",{workspaceId:l,taskCount:Gr.length})}}Re.current=null,Je.current="",X.current=gt,re.current=Ge.currentTaskIds,Ce.current=Ge.currentTaskWatermarks?new Map(Ge.currentTaskWatermarks):new Map(Ce.current),Te.current=Ge.currentTaskChangeKeys?new Map(Ge.currentTaskChangeKeys):new Map(Te.current),pe&&(pe.current=Ge.currentTaskRelationshipChangeKeys?new Map(Ge.currentTaskRelationshipChangeKeys):new Map(pe.current)),Me&&(Me.current=Ge.currentTaxonomyChangeKey??Me.current),et.current=new Set(Ge.currentInitiativeIds),Ue.current=new Map(Ge.currentInitiativeWatermarks),yt.current=new Set(Ge.currentWorkstreamIds),Le.current=new Map(Ge.currentWorkstreamWatermarks),mt.current=new Map(Ge.currentPlanningIdentityWatermarks||Qr.currentPlanningIdentityWatermarks),kt.current=new Set(Ge.currentAiProfileIds),He.current=new Map(Ge.currentAiProfileWatermarks),rt.current=Ge.currentAiProfileChangeKeys?new Map(Ge.currentAiProfileChangeKeys):new Map(rt.current),It.current=new Set(Ge.currentDocumentPaths),Xe.current=new Map(Ge.currentDocumentWatermarks),wt.current=new Set(Ge.currentAssetPaths),at.current=new Map(Ge.currentAssetWatermarks),U.current=new Set(Ge.currentDocumentReviewSessionIds),he.current=new Map(Ge.currentDocumentReviewSessionWatermarks),Ke.current=new Set(Ge.currentDocumentReviewCommentIds),Et.current=new Map(Ge.currentDocumentReviewCommentWatermarks),vt.current=new Set(Ge.currentAnnotatedAttachmentSessionIds),Bt.current=new Map(Ge.currentAnnotatedAttachmentSessionWatermarks),dr&&(dr.current=new Set(Ge.currentTaskforceAgentIds)),er&&(er.current=new Map(Ge.currentTaskforceAgentWatermarks)),cr&&(cr.current=new Set(Ge.currentTaskforceAgentSkillIds)),Ot&&(Ot.current=new Map(Ge.currentTaskforceAgentSkillWatermarks)),fr&&(fr.current=new Set(Ge.currentAgentConversationIds)),Ar&&(Ar.current=new Map(Ge.currentAgentConversationWatermarks)),Lr.current=new Map(Ge.currentTaskEventWatermarks),wr&&(Ne.current=!1);for(const[Zt,Sn]of Ge.pushedWatermarks)Ce.current.set(Zt,Sn);for(const[Zt,Sn]of Ge.pushedTaskChangeKeys||new Map)Te.current.set(Zt,Sn);if(Ge.deleteTaskIds.size>0)for(const Zt of Ge.deleteTaskIds)Ee.current.delete(Zt),je.current.delete(Zt),Ce.current.delete(Zt),Te.current.delete(Zt);const yr=await E();Wr.current=yr?null:"storage-write-failed",Array.isArray(Ge.emittedEventIds)&&Ge.emittedEventIds.length>0&&ie(Ge.emittedEventIds,{queueRef:Xt,maxQueueSize:2048}),k();const Yt=Ge.syncedAt||Fe().toISOString();return X.current=ye(),G(Yt),ae(0),D("idle"),N({phase:"active",lastPushAt:Yt,lastSyncedAt:Yt}),L(l,{eventType:c==="provision-local"?"bootstrap":"push",status:"success",changeCount:Ge.changeCount,requestMs:Ge.requestMs,details:{payloadDiagnostics:Ge.effectiveDeltaDiagnostics||Qr.deltaDiagnostics||null,...Ge.batchProgress?{pushBatchProgress:Ge.batchProgress}:{},...Ge.effectiveDeltaDiagnostics&&Qr.deltaDiagnostics&&Ge.effectiveDeltaDiagnostics.totalChanges!==Qr.deltaDiagnostics.totalChanges?{candidatePayloadDiagnostics:Qr.deltaDiagnostics}:{},replayedPayload:bt}}),!0}catch(Ir){const Vt="Workspace sync push failed.";return D("error"),be(Vt),Se(Vt),K(Fe().toISOString()),Ze.current=gt,u&&(Re.current={signature:gt,payload:u,forceAllAiProfiles:wr,repairMode:lr}),R(),L(l,{eventType:"push",status:"error",errorMessage:`${Vt} ${String(Ir?.message||"").trim()}`.trim(),details:{replayedPayload:bt}}),ft("push_failed_exception",{workspaceId:l,elapsedMs:Fe().getTime()-ra}),!1}finally{de.current=!1,B(x.current),T(l),le.current&&!x.current&&!A()&&St("pull-after-push",()=>{ir()},0);const Ir=Ze.current,Vt=ye();Ir&&Vt&&Vt!==X.current&&!x.current&&!A()&&!Xr&&St("pending-push",()=>{const Ur=Ze.current||Vt;Ze.current="",Ft(Ur)},120)}},ir=async ot=>{if(!w())return!1;const or=ot?.repairMode===!0,Nr=async u=>{or&&(k(),await j({phase:"error",lastErrorMessage:u}))};let ur=Nv({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:d,repairModeActive:Ve.current===!0,repairModeBypass:or,retryPending:A(),pullInFlight:x.current,pushInFlight:de.current});if(!ur.allowed&&ur.reason==="auth-required"){if(!await m())return await Nr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;ur=Nv({cloudAuthConfigured:e,runtimeMode:t,workspaceCloudSyncEnabled:i,currentWorkspaceId:l,workspaceSyncPhase:c,isAuthenticated:!0,repairModeActive:Ve.current===!0,repairModeBypass:or,retryPending:A(),pullInFlight:x.current,pushInFlight:de.current})}if(!ur.allowed)return ur.reason==="push-in-flight"&&!or&&(le.current=!0),!1;if(le.current=!1,!await _(l,"pull"))return q("pull"),!1;x.current=!0,B(!0),D("syncing"),be(null);const wr=Fe().getTime();let lr=!1;try{if(!await h())return await Nr("Workspace sync repair could not validate cloud access. Resolve the reported error, then press Repair to retry."),!1;if(!w())return!1;const bt={authFailure:!1,failure:null};let gt=!1,Xr=[],Ir=0;const Vt=$t=>{Ir+=Math.max(0,Number($t)||0)},Ur=Xj({workspaceId:l,remoteServices:V,localServices:W});let $r="",Tn="";const an=($t,Ut)=>$t.kind==="auth-failure"?(bt.authFailure=!0,!1):$t.kind==="transient-failure"?(bt.failure={status:$t.status,retryAfterMs:$t.retryAfterMs,error:String($t.error||"Workspace projection synchronization failed."),projectionCycle:Ut},!1):!0;try{if(n===!0){const $t=await Lv({activationEnabled:!1,resolveCloudAuthUrl:f,workspaceId:l,onChangesApplied:Vt,dependencies:Ur.initiative});if(an($t,"initiative")){const Ut=await xS({activationEnabled:!0,coverage:s,resolveCloudAuthUrl:f,workspaceId:l,forceAuthoritativeRepair:ot?.forceV3AuthoritativeRepair===!0,...ot?.recoveryBatchId?{recoveryBatchId:ot.recoveryBatchId}:{},onChangesApplied:Vt,dependencies:Ur.combined});Xr=Ut.excludedProjections;const Fr=Ut.kind==="transient-failure"?Zj(Ut):null;Fr?($r=Fr,Tn=Ut.kind==="transient-failure"?Ut.error:""):an(Ut,"combined")}}else{if(n!==void 0){const $t=await xS({activationEnabled:!1,coverage:s,resolveCloudAuthUrl:f,workspaceId:l,onChangesApplied:Vt,dependencies:Ur.combined});an($t,"combined")}if(!bt.authFailure&&!bt.failure&&r!==void 0){const $t=await Lv({activationEnabled:r,resolveCloudAuthUrl:f,workspaceId:l,onChangesApplied:Vt,dependencies:Ur.initiative});an($t,"initiative")&&(gt=$t.excludeInitiativesFromV2)}}}finally{await Ur.abandonPendingReceipts()}if(bt.authFailure)return await y("pull",401),await Nr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;if(bt.failure)return Se(bt.failure.error),K(Fe().toISOString()),L(l,{eventType:"apply",status:"error",statusCode:bt.failure.status,errorMessage:bt.failure.error,details:{recovery:"projection-cycle-retry",projectionCycle:bt.failure.projectionCycle,...bt.failure.retryAfterMs!==void 0?{retryAfterMs:bt.failure.retryAfterMs}:{}}}),or?await j({phase:"error",lastErrorMessage:bt.failure.error}):R(bt.failure.retryAfterMs),!1;if($r){const $t=await UI({workspaceId:l,assetId:$r,remoteServices:V,localServices:W}).catch(Ut=>({success:!1,error:Ut instanceof Error?Ut.message:String(Ut||"Unknown hydration failure.")}));return $t.success&&$t.emittedEventIds.length>0&&ie($t.emittedEventIds,{ttlMs:6e4}),D("error"),be(Tn),Se(Tn),K(Fe().toISOString()),L(l,{eventType:"apply",status:"error",errorMessage:Tn,changeCount:$t.success?$t.appliedChanges:0,details:{recovery:$t.success?"combined-attachment-asset-hydrated-retry-pending":"combined-attachment-asset-hydration-failed",assetId:$r,...$t.success?{}:{hydrationError:$t.error}}}),R(),!1}const Qr=bj({workspaceSyncPhase:c,forceCursorNull:ot?.forceCursorNull===!0,currentCursor:Pe.current}),Ge=await j1({resolveCloudAuthUrl:f,workspaceId:l,cursor:or?null:Qr.cursor,bootstrap:Qr.bootstrap,ensureCloudWorkspaceReadyForSync:g,maxPages:or?200:20,repairMode:or||Ve.current===!0,contentMode:ot?.forceCursorNull===!0?"manifest":"full",excludeInitiatives:gt,excludedProjections:Xr,onPagePulled:()=>{Tt.current=Fe().getTime()},onAiProfilesApplied:()=>{xe({workspaceId:l,reason:"sync-apply",origin:"sync-orchestrator"})},onChangesApplied:()=>{Tt.current=Fe().getTime()},remoteServices:V,localServices:W});if(!Ge.success){if(Ge.kind==="pull_http"&&Ge.status===401)return await y("pull",401),await Nr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;if(Ge.kind==="apply_auth")return await y("apply",401),await Nr("Session expired. Sign in again, then press Repair to resume cloud sync."),!1;if(Ge.kind==="pull_http"&&Ge.errorCode==="INVALID_SYNC_CURSOR"){const Ut="Saved sync cursor was invalid. Clearing it and retrying from the beginning.";return Pe.current=null,N({pullCursor:null}),D("error"),be(Ut),Se(Ut),K(Fe().toISOString()),L(l,{eventType:"pull",status:"error",statusCode:Ge.status,errorMessage:Ut,requestMs:Ge.pullRequestMs,details:{recovery:"cursor-reset",...Ge.serverDiagnostics?{serverPullDiagnostics:Ge.serverDiagnostics}:{}}}),or?await j({phase:"error",lastErrorMessage:Ut}):R(150),!1}let $t=Ge.kind==="apply_payload"||Ge.kind==="apply_all_candidates"||Ge.kind==="exception"?String(Ge.error||"Workspace sync apply failed."):`Workspace sync pull failed (${Ge.status||0})`;return Ge.status===413&&($t="Local sync failed because the downloaded payload is too large. This usually happens when the workspace contains massive attachments."),D("error"),be($t),Se($t),K(Fe().toISOString()),L(l,{eventType:Ge.kind?.startsWith("apply")?"apply":"pull",status:"error",statusCode:Ge.status,errorMessage:$t,requestMs:Ge.pullRequestMs,details:{pages:Ge.pages,applyMs:Ge.applyMs,...Ge.serverDiagnostics?{serverPullDiagnostics:Ge.serverDiagnostics}:{}}}),or?await j({phase:"error",lastErrorMessage:$t}):Ge.transient||Ge.hasTransientApplyFailure||li(Ge.status)?R(Ge.retryAfterMs):N({phase:"error",lastErrorMessage:$t}),!1}if(or&&Ge.hasMore===!0){const $t="Workspace sync repair stopped before the full cloud snapshot was downloaded. Press Repair to retry.";return D("error"),be($t),Se($t),K(Fe().toISOString()),await j({phase:"error",lastErrorMessage:$t}),L(l,{eventType:"pull",status:"error",errorMessage:$t,requestMs:Ge.pullRequestMs,details:{pages:Ge.pages,applyMs:Ge.applyMs,recovery:"repair-pull-incomplete"}}),!1}Array.isArray(Ge.emittedEventIds)&&ie(Ge.emittedEventIds,{ttlMs:6e4}),(Ge.pulledTaskforceAgentUpserts||Ge.pulledAgentRoleUpserts||Ge.pulledTaskforceAgentSkillUpserts||Ge.pulledAgentConversationUpserts)&&await Ie?.(),(Ge.pulledTaskforceAgentUpserts||Ge.pulledAgentRoleUpserts||Ge.pulledAgentConversationUpserts)&&ke({workspaceId:l,reason:"sync-apply"}),Ge.pulledTaskforceAgentSkillUpserts&&ve({workspaceId:l,reason:"sync-apply"}),Ge.pulledDeleteTaskIds.size>0&&(_e($t=>$t.filter(Ut=>!Ge.pulledDeleteTaskIds.has(String(Ut.id||"")))),Oe($t=>$t.filter(Ut=>!Ge.pulledDeleteTaskIds.has(String(Ut.id||"")))));const yr=Array.isArray(Ge.documentDecryptFailures)?Ge.documentDecryptFailures.filter($t=>String($t||"").trim().length>0):[];if(yr.length>0&&ft("pull_document_decrypt_failures",{workspaceId:l,failureCount:yr.length}),Pe.current=Ge.cursor||null,Ir>0||Ge.appliedChanges>0&&(or||Ge.pulledActiveUpserts||Ge.pulledArchivedUpserts||Ge.pulledTaskEventUpserts||Ge.pulledPlanningUpserts||Ge.pulledDeleteTaskIds.size>0))try{await $e()}catch{if(ft("pull_local_refresh_failed",{workspaceId:l,appliedChanges:Ge.appliedChanges+Ir}),or){const $t="Workspace sync repair could not refresh tasks and relationships after the cloud pull. Press Repair to retry.";return k(),D("error"),be($t),Se($t),K(Fe().toISOString()),await j({phase:"error",lastErrorMessage:$t}),!1}}k(),v();const Yt=Ge.syncedAt||Fe().toISOString();Y(Yt),ae(0),D("idle");const Zt=Sj({workspaceSyncPhase:c,forceCursorNull:ot?.forceCursorNull===!0,repairMode:or,startupFullReconcileRan:nt.current,pendingSignature:Ze.current,fallbackSignature:ye(),lastPushedSignature:X.current});if(Zt.shouldCaptureAttachBootstrapBaseline&&(De.current=!0),Zt.shouldClearPendingSignature&&(Ze.current=Zt.deferredPushSignature||"",Re.current=null),await j({phase:"active",pullCursor:Pe.current,lastPullAt:Yt,lastSyncedAt:Yt,...ot?.forceCursorNull===!0?{startupFullReconcileCompletedAt:Yt}:{},lastErrorMessage:null}),L(l,{eventType:Zt.successEventType,status:"success",changeCount:Ge.appliedChanges+Ir,requestMs:Ge.pullRequestMs,details:{pages:Ge.pages,applyMs:Ge.applyMs,...Ge.serverDiagnostics?{serverPullDiagnostics:Ge.serverDiagnostics}:{}}}),Zt.shouldRefreshReferenceSnapshots&&(await z(),await Z(),await te(),await fe()),Zt.shouldSeedWorkspaceSnapshotPushBaseline&&ge(),Zt.shouldRefreshReferenceSnapshots||Zt.shouldSeedWorkspaceSnapshotPushBaseline)return lr=!0,!0;if(Zt.shouldScheduleStartupFullReconcile&&(pt.current=!0,St("startup-full-reconcile",()=>{!pt.current||ut.current||(pt.current=!1,nt.current=!0,ut.current=!0,ir({forceCursorNull:!0}).finally(()=>{ut.current=!1}))},250)),ot?.forceCursorNull===!0&&!or&&c==="active"){const $t=ye();$t&&(Ne.current=!0,Ze.current=$t,St("pending-push",()=>{const Ut=Ze.current||$t;Ze.current="",Ft(Ut,{forceAllAiProfiles:!0})},120))}else if(Zt.deferredPushSignature){const $t=Zt.deferredPushSignature;St("pending-push",()=>{const Ut=Ze.current||$t;Ze.current="",Ft(Ut)},120)}return lr=!0,!0}catch(u){const bt=String(u?.message||"").trim(),gt=bt?`Workspace sync pull failed. ${bt}`:"Workspace sync pull failed.";return D("error"),be(gt),Se(gt),K(Fe().toISOString()),or?await j({phase:"error",lastErrorMessage:gt}):R(),L(l,{eventType:"pull",status:"error",errorMessage:gt,requestMs:Fe().getTime()-wr}),ft("pull_failed_exception",{workspaceId:l,elapsedMs:Fe().getTime()-wr,error:bt||null}),!1}finally{x.current=!1,B(de.current),lr&&H(l,"pull"),T(l)}};return{pushWorkspaceChangesToCloud:Ft,pullWorkspaceChangesFromCloud:ir,resumeDeferredWork:()=>{w()&&(le.current&&St("pull-after-push",()=>{ir()},0),Ze.current&&St("pending-push",()=>{const ot=Ze.current;ot&&(Ze.current="",Ft(ot,{forceAllAiProfiles:Ne.current}))},120),pt.current&&St("startup-full-reconcile",()=>{!pt.current||ut.current||(pt.current=!1,nt.current=!0,ut.current=!0,ir({forceCursorNull:!0}).finally(()=>{ut.current=!1}))},250))},dispose:Kt}}function eE(e){return Qj({now:()=>new Date,scheduleTask:(t,r)=>{const n=window.setTimeout(t,r);return{cancel:()=>window.clearTimeout(n)}},logDebug:Ds,notifyAiProfilesMutated:CI,notifyAgentsMutated:II,notifyAgentSkillsMutated:_I,...e})}const tE="/api/taskforce/sync/v3/local/dispatch",rE=20,nE=1e5;function aE(e){if(e===void 0)return;if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Local outbox dispatch returned an invalid outbox status.");const t=e,r=v=>{const A=Number(t[v]);return Number.isInteger(A)&&A>=0?A:null},n=r("activeDepth"),s=r("pending"),i=r("inFlight"),l=r("blocked");let c;if(t.operationStates!==void 0){if(!t.operationStates||typeof t.operationStates!="object"||Array.isArray(t.operationStates))throw new Error("Local outbox dispatch returned invalid operation states.");const v=t.operationStates,A=w=>{const R=Number(v[w]);return Number.isInteger(R)&&R>=0?R:null},b={pending:A("pending"),retryScheduled:A("retryScheduled"),inFlight:A("inFlight"),stale:A("stale"),blocked:A("blocked")};if(Object.values(b).some(w=>w===null)||s===null||i===null||l===null||b.pending+b.retryScheduled!==s||b.inFlight+b.stale!==i||b.blocked!==l)throw new Error("Local outbox dispatch returned inconsistent operation states.");c={pending:b.pending,retryScheduled:b.retryScheduled,inFlight:b.inFlight,stale:b.stale,blocked:b.blocked}}const d=v=>t[v]===null||typeof t[v]=="string"?t[v]:void 0,m=d("oldestActiveCreatedAt"),f=d("oldestActionableAt"),g=d("blockedErrorCode"),h=t.recovery;let y=null;if(h!==null){if(!h||typeof h!="object"||Array.isArray(h))throw new Error("Local outbox dispatch returned an invalid recovery status.");const v=h,A=S=>{const L=Number(v[S]);return Number.isInteger(L)&&L>=0?L:null},b=String(v.state||""),w=A("replayTotal"),R=A("replayPending"),N=A("replayInFlight"),j=A("replayBlocked"),E=A("replayAccepted");if(typeof v.recoveryBatchId!="string"||!["awaiting_baseline","baseline_ready","replay_queued","completed"].includes(b)||w===null||R===null||N===null||j===null||E===null||w<R+N+j+E||typeof v.createdAt!="string"||typeof v.updatedAt!="string"||v.completedAt!==null&&typeof v.completedAt!="string")throw new Error("Local outbox dispatch returned an invalid recovery status.");y={recoveryBatchId:v.recoveryBatchId,state:b,replayTotal:w,replayPending:R,replayInFlight:N,replayBlocked:j,replayAccepted:E,createdAt:v.createdAt,updatedAt:v.updatedAt,completedAt:v.completedAt}}let k;if(t.attachmentApplyObligations!==void 0){if(!t.attachmentApplyObligations||typeof t.attachmentApplyObligations!="object"||Array.isArray(t.attachmentApplyObligations))throw new Error("Local outbox dispatch returned invalid attachment apply obligations.");const v=t.attachmentApplyObligations,A=Number(v.open),b=Number(v.due),w=Number(v.totalAttempts);if(![A,b,w].every(R=>Number.isInteger(R)&&R>=0)||b>A||v.oldestOpenCreatedAt!==null&&typeof v.oldestOpenCreatedAt!="string"||v.nextAttemptAt!==null&&typeof v.nextAttemptAt!="string"||v.lastError!==null&&typeof v.lastError!="string")throw new Error("Local outbox dispatch returned invalid attachment apply obligations.");k={open:A,due:b,totalAttempts:w,oldestOpenCreatedAt:v.oldestOpenCreatedAt,nextAttemptAt:v.nextAttemptAt,lastError:v.lastError}}if(n===null||s===null||i===null||l===null||n!==s+i+l||m===void 0||g===void 0||!Object.prototype.hasOwnProperty.call(t,"recovery"))throw new Error("Local outbox dispatch returned an invalid outbox status.");return{activeDepth:n,pending:s,inFlight:i,blocked:l,...c?{operationStates:c}:{},oldestActiveCreatedAt:m,...f!==void 0?{oldestActionableAt:f}:{},blockedErrorCode:g,recovery:y,...k?{attachmentApplyObligations:k}:{}}}function sE(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Local outbox dispatch returned an invalid response.");const t=e,r=Number(t.claimed),n=Array.isArray(t.outcomes)?t.outcomes:[],s=i=>{if(i.retryDependency===void 0)return!0;if(i.disposition!=="retry"||!i.retryDependency||typeof i.retryDependency!="object"||Array.isArray(i.retryDependency))return!1;const l=i.retryDependency;return Object.keys(l).sort().join(",")==="assetId,kind"&&l.kind==="asset"&&typeof l.assetId=="string"&&/^[A-Za-z0-9._:-]+$/.test(l.assetId)};if(t.success!==!0||!Number.isInteger(r)||r<0||r>1||n.length!==r||n.some(i=>!i||typeof i!="object"||!["accepted","retry","blocked","lease-lost"].includes(String(i.disposition||""))))throw new Error("Local outbox dispatch returned an invalid response.");if(n.some(i=>!s(i)))throw new Error("Local outbox dispatch returned an invalid retry dependency.");return{success:!0,claimed:r,outcomes:n,outbox:aE(t.outbox)}}async function oE(e){const t=String(e.workspaceId||"").trim();if(!t)throw new Error("Workspace id is required to drain the local outbox.");const r=e.fetchImpl||fetch,n=Math.max(1,Math.min(100,Math.floor(e.operationBudget??rE))),s=Math.max(1,Math.floor(e.requestTimeoutMs??nE));let i=0;const l=new Set;let c;for(;i<n;){const d=new AbortController;let m,f;const g=new Promise((y,k)=>{f=k,m=setTimeout(()=>{d.abort(),k(new Error("Local outbox dispatch timed out."))},s)}),h=()=>{d.abort(e.signal?.reason),f?.(new DOMException("Local outbox dispatch aborted.","AbortError"))};e.signal?.aborted?h():e.signal?.addEventListener("abort",h,{once:!0});try{const y=(async()=>{const b=await r(tE,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:t,limit:1}),signal:d.signal});if(!b.ok)throw new Error(`Local outbox dispatch failed (${b.status}).`);return sE(await b.json())})(),k=await Promise.race([y,g]);if(c=k.outbox,k.claimed===0)return{processed:i,retryRecommended:!1,budgetExhausted:!1,...c?{outbox:c}:{}};i+=k.claimed;const v=k.outcomes[0],A=v?.disposition;if(A==="retry"&&v.retryDependency?.kind==="asset"){const b=`${v.retryDependency.kind}:${v.retryDependency.assetId}`;if(l.has(b))return{processed:i,retryRecommended:!0,budgetExhausted:!1,...c?{outbox:c}:{}};if(!e.hydrateAsset||!await e.hydrateAsset(v.retryDependency.assetId))return{processed:i,retryRecommended:!0,budgetExhausted:!1,...c?{outbox:c}:{}};l.add(b);continue}if(A==="retry"||A==="lease-lost")return{processed:i,retryRecommended:!0,budgetExhausted:!1,...c?{outbox:c}:{}}}finally{m!==void 0&&clearTimeout(m),e.signal?.removeEventListener("abort",h)}}return{processed:i,retryRecommended:!0,budgetExhausted:!0,...c?{outbox:c}:{}}}const iE=3e4,cE=1e3,lE=3e4;function dE(e){const t=o.useRef(null),r=o.useRef(""),n=o.useRef(null),s=o.useRef(null),i=o.useRef({enabled:e.enabled,workspaceId:e.workspaceId,authorityScope:e.authorityScope,remoteServices:e.remoteServices,localServices:e.localServices,isAuthorityCurrent:e.isAuthorityCurrent,onHydratedEventIds:e.onHydratedEventIds,onOutboxStatus:e.onOutboxStatus});i.current={enabled:e.enabled,workspaceId:e.workspaceId,authorityScope:e.authorityScope,remoteServices:e.remoteServices,localServices:e.localServices,isAuthorityCurrent:e.isAuthorityCurrent,onHydratedEventIds:e.onHydratedEventIds,onOutboxStatus:e.onOutboxStatus};const l=o.useCallback(()=>{n.current!==null&&(window.clearTimeout(n.current),n.current=null)},[]),c=o.useCallback(async()=>{const d=i.current;if(!d.enabled||!d.workspaceId||!d.remoteServices)return;const m=d.workspaceId,f=d.remoteServices,g=s.current;if(g?.key===m&&g.authorityScope===d.authorityScope&&g.at>Date.now()){n.current===null&&(n.current=window.setTimeout(()=>{n.current=null,c()},g.at-Date.now()));return}(g?.key!==m||g.authorityScope!==d.authorityScope||g.at<=Date.now())&&(s.current=null);const h=t.current;if(h?.key===m&&h.authorityScope===d.authorityScope){r.current=m;return}h&&h.controller.abort(),l();const y={key:m,authorityScope:d.authorityScope,controller:new AbortController};t.current=y;let k=0;try{const v=await oE({workspaceId:m,signal:y.controller.signal,hydrateAsset:async b=>{const w=i.current;if(y.controller.signal.aborted||!w.enabled||w.workspaceId!==m||w.authorityScope!==y.authorityScope||w.remoteServices!==f||w.isAuthorityCurrent?.(y.authorityScope)===!1)return!1;const R=await UI({workspaceId:m,assetId:b,remoteServices:f,localServices:d.localServices}).catch(()=>({success:!1,error:"Attachment hydration failed."})),N=i.current;return y.controller.signal.aborted||!N.enabled||N.workspaceId!==m||N.authorityScope!==y.authorityScope||N.remoteServices!==f||N.isAuthorityCurrent?.(y.authorityScope)===!1||!R.success?!1:(R.emittedEventIds.length>0&&d.onHydratedEventIds?.(R.emittedEventIds),!0)}}),A=i.current;if(!A.enabled||A.workspaceId!==m||A.authorityScope!==y.authorityScope)return;v.retryRecommended&&(k=v.budgetExhausted?cE:lE,s.current={key:m,authorityScope:y.authorityScope,at:Date.now()+k}),v.outbox&&d.onOutboxStatus?.(v.outbox)}catch{}finally{t.current===y&&(t.current=null)}if(!(!i.current.enabled||i.current.workspaceId!==m)){if(r.current===m){r.current="",c();return}k>0&&(n.current=window.setTimeout(()=>{n.current=null,c()},k))}},[l]);o.useEffect(()=>{e.onOutboxStatus?.(null)},[e.onOutboxStatus,e.workspaceId]),o.useEffect(()=>{if(!e.enabled){t.current?.controller.abort(),t.current=null,r.current="",s.current=null,i.current.onOutboxStatus?.(null),l();return}c()},[l,e.enabled,e.mutationFingerprint,e.authorityScope,e.remoteServices,e.workspaceId,c]),o.useEffect(()=>{if(!e.enabled)return;const d=()=>{c()},m=()=>{document.visibilityState==="visible"&&c()},f=window.setInterval(()=>{c()},iE);return window.addEventListener("online",d),document.addEventListener("visibilitychange",m),()=>{window.removeEventListener("online",d),document.removeEventListener("visibilitychange",m),window.clearInterval(f);const g=t.current;g?.key===e.workspaceId&&(g.controller.abort(),t.current=null),r.current===e.workspaceId&&(r.current=""),l()}},[l,e.authorityScope,e.enabled,e.remoteServices,e.workspaceId,c])}const go="/api/taskforce/sync/v3/local/coordinator";class Va extends Error{constructor(t,r,n){super(t),this.code=r,this.status=n,this.name="LocalSyncCoordinatorBrowserClientError"}}class zI{fetchImpl;constructor(t){this.fetchImpl=t||globalThis.fetch.bind(globalThis)}attachWorkspace(t){return this.requestJson(`${go}/attach`,Oi("POST",t))}readStatus(t){const r=Uh(t);return this.requestJson(`${go}/status?${r.toString()}`,{method:"GET",credentials:"include"})}attachCredential(t){return this.requestJson(`${go}/credential`,Oi("POST",t))}switchWorkspace(t){return this.requestJson(`${go}/workspace-switch`,Oi("POST",t))}clearCredential(t){const r=Uh(t);return this.requestJson(`${go}/credential?${r.toString()}`,{method:"DELETE",credentials:"include"})}issuePermit(t){return this.requestJson(`${go}/permits`,Oi("POST",t))}issueCommand(t){return this.requestJson(`${go}/commands`,Oi("POST",t))}signalWake(t){return this.requestJson(`${go}/wake`,Oi("POST",t))}transferOwnership(t){return this.requestJson(`${go}/ownership-transfer`,Oi("POST",t))}readCommand(t){const r=Uh(t);return t.rootCommandId&&r.set("rootCommandId",t.rootCommandId),this.requestJson(`${go}/commands/${encodeURIComponent(t.commandId)}?${r.toString()}`,{method:"GET",credentials:"include"})}readPermit(t){const r=Uh(t);return this.requestJson(`${go}/permits/${encodeURIComponent(t.permitId)}?${r.toString()}`,{method:"GET",credentials:"include"})}async executeGateway(t){return await this.fetchImpl(`${go}/gateway`,Oi("POST",t))}applyCombinedFeed(t){const r=t.command.kind==="delta"?t.command:{...t.command,epoch:t.command.expectedEpoch,previousCursor:t.command.previousRepairCursor,expectedEpoch:void 0,previousRepairCursor:void 0};return this.requestJson("/api/taskforce/sync/v3/local/feed",Oi("POST",{workspaceId:t.workspaceId,executionPermitId:t.executionPermitId,coordinatorGeneration:t.coordinatorGeneration,...r,...t.coverage}))}releasePermit(t){return this.requestJson(`${go}/permits/${encodeURIComponent(t.permitId)}/release`,Oi("POST",{workspaceId:t.workspaceId,coordinatorGeneration:t.coordinatorGeneration,...t.pushBoundary?{pushBoundary:t.pushBoundary}:{}}))}abandonPermit(t){return this.permitAction(t,"abandon")}permitAction(t,r){return this.requestJson(`${go}/permits/${encodeURIComponent(t.permitId)}/${r}`,Oi("POST",{workspaceId:t.workspaceId,coordinatorGeneration:t.coordinatorGeneration,...t.errorCode?{errorCode:t.errorCode}:{}}))}async requestJson(t,r){const n=await this.fetchImpl(t,r);return n.ok||await uE(n),n.json()}}function Uh(e){return new URLSearchParams({workspaceId:e.workspaceId,coordinatorGeneration:String(e.coordinatorGeneration)})}function Oi(e,t){return{method:e,headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(t)}}async function uE(e){let t={};try{t=await e.json()}catch{}throw new Va(String(t.error||`Local sync coordinator request failed (${e.status}).`),String(t.code||"SYNC_COORDINATOR_REQUEST_FAILED"),e.status)}const PS="taskforce.local-sync-coordinator.command.v1",fE=500,mE=240,pE=8,hE=600*1e3;function $w(e,t="default"){return t==="priority"?`${PS}.priority:${e}`:`${PS}:${e}`}function gE(e,t,r=()=>new Date,n="default"){e.setItem($w(t.workspaceId,n),JSON.stringify({storedAt:r().toISOString(),envelope:t}))}function jS(e,t,r=()=>new Date,n="default"){const s=$w(t,n);try{const i=e.getItem(s);if(!i)return null;const l=JSON.parse(i),c=Date.parse(String(l.storedAt||"")),d=l.envelope;return!d||d.workspaceId!==t||!d.commandId||!Number.isInteger(d.coordinatorGeneration)||!Number.isFinite(c)||r().getTime()-c>hE?(Ju(e,t,n),null):d}catch{return Ju(e,t,n),null}}function yE(e,t,r="default"){e.removeItem($w(t,r))}async function Hk(e){const{client:t,envelope:r,storage:n=null,pollIntervalMs:s=fE,maxPollAttempts:i=mE,delay:l=SE,recoverExisting:c=!1,storageLane:d="default"}=e;if(n&&!c)try{gE(n,r,void 0,d)}catch{}try{let m=c?await kE(t,r,{delay:l,pollIntervalMs:s,maxPollAttempts:i}):await vE(t,r,{delay:l,pollIntervalMs:s,maxPollAttempts:i});const f=new Set;for(let g=0;g<i;g+=1){if(f.has(m.commandId))throw new Va("The local sync coordinator command references contain a cycle.","SYNC_COORDINATOR_COMMAND_REFERENCE_CYCLE",409);if(f.add(m.commandId),m.status==="succeeded")return Ju(n,r.workspaceId,d),m;if(m.status==="failed")throw Ju(n,r.workspaceId,d),new Va(m.errorMessage||"The local sync coordinator command failed.",m.errorCode||"SYNC_COORDINATOR_COMMAND_FAILED",409);if(m.status==="superseded"){const h=wE(m);if(!h)return Ju(n,r.workspaceId,d),m;if(f.size>=pE)throw new Va("The local sync coordinator command reference chain is too long.","SYNC_COORDINATOR_COMMAND_REFERENCE_LIMIT",409);m=await Bg(t,r,h);continue}await l(Math.max(1,s)),m=await Bg(t,r,m.commandId),f.delete(m.commandId)}throw new Va("The local sync coordinator command did not finish before the browser wait limit.","SYNC_COORDINATOR_COMMAND_WAIT_TIMEOUT",408)}catch(m){const f=$g(m);throw n&&bE(f)&&Ju(n,r.workspaceId,d),f}}function Ju(e,t,r){if(e)try{yE(e,t,r)}catch{}}async function kE(e,t,r){for(let n=0;n<r.maxPollAttempts;n+=1)try{return await Bg(e,t,t.commandId)}catch(s){const i=$g(s);if(i.code==="SYNC_COORDINATOR_COMMAND_NOT_FOUND")return(await e.issueCommand(t)).command;if(!Wg(i))throw i;await r.delay(Math.max(1,r.pollIntervalMs))}throw HI()}async function vE(e,t,r){try{return(await e.issueCommand(t)).command}catch(n){const s=$g(n);if(!Wg(s))throw s;for(let i=0;i<r.maxPollAttempts;i+=1)try{return await Bg(e,t,t.commandId)}catch(l){const c=$g(l);if(c.code==="SYNC_COORDINATOR_COMMAND_NOT_FOUND")return(await e.issueCommand(t)).command;if(!Wg(c))throw c;await r.delay(Math.max(1,r.pollIntervalMs))}throw HI()}}async function Bg(e,t,r){return(await e.readCommand({commandId:r,workspaceId:t.workspaceId,coordinatorGeneration:t.coordinatorGeneration,rootCommandId:t.commandId})).command}function wE(e){if(!e.result||typeof e.result!="object")return null;const t=e.result,r=t.leaderCommandId||t.supersedingCommandId;return typeof r=="string"&&r.trim()?r.trim():null}function Wg(e){return e.status===0||e.status===408||e.status===429||e.status>=500}function bE(e){return!Wg(e)&&e.code!=="SYNC_COORDINATOR_COMMAND_WAIT_TIMEOUT"}function HI(){return new Va("The local sync coordinator command did not finish before the browser wait limit.","SYNC_COORDINATOR_COMMAND_WAIT_TIMEOUT",408)}function $g(e){return e instanceof Va?e:new Va(e instanceof Error&&e.message.trim()?e.message:"The local sync coordinator request failed.","SYNC_COORDINATOR_REQUEST_FAILED",0)}function SE(e){return new Promise(t=>{setTimeout(t,e)})}const Bv="taskforce:auth-session-changed";function ES(){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new Event(Bv))}const AE=new zI;function CE(e){const t=e.client||AE,r=Math.max(1e3,e.pollIntervalMs??3e3),[n,s]=o.useState({phase:"idle",snapshot:null,error:null}),i=o.useRef(0),l=o.useRef(0),c=o.useRef(null),d=o.useRef(null),[m,f]=o.useState(null),[g,h]=o.useState(null),y=o.useRef(null);y.current=n.snapshot,o.useEffect(()=>{f(null),h(null)},[e.workspaceId]);const k=o.useCallback(S=>{const L=c.current;if(L?.workspaceId===e.workspaceId)return L.promise;const _=Vk(),T=_?jS(_,e.workspaceId):null;if(!T)return null;const H=Hk({client:t,envelope:T,storage:_,recoverExisting:!0}),q={workspaceId:e.workspaceId,scope:S,type:T.type,promise:H};return c.current=q,f(T.type),H.catch(()=>{}).finally(()=>{c.current===q&&(c.current=null,f(null))}),H},[t,e.workspaceId]),v=o.useCallback(S=>{const L=d.current;if(L?.workspaceId===e.workspaceId)return L.promise;const _=Vk(),T=_?jS(_,e.workspaceId,void 0,"priority"):null;if(!T)return null;const H=Hk({client:t,envelope:T,storage:_,recoverExisting:!0,storageLane:"priority"}),q={workspaceId:e.workspaceId,scope:S,type:T.type,promise:H};return d.current=q,h(T.type),H.catch(()=>{}).finally(()=>{d.current===q&&(d.current=null,h(null))}),H},[t,e.workspaceId]),A=o.useCallback(async(S,L)=>{const _=await t.attachWorkspace({workspaceId:e.workspaceId});if(i.current!==S||l.current!==L)return null;if(_.runtimeResumePending===!0)throw new Va("The local sync runtime has not resumed yet.",_.runtimeResumeErrorCode||"SYNC_COORDINATOR_RUNTIME_RESUME_PENDING",503);const T=await t.readStatus({workspaceId:e.workspaceId,coordinatorGeneration:_.state.coordinatorGeneration});if(i.current!==S||l.current!==L)return null;if(T.credential.status!=="ready")throw new Va("The local sync coordinator credential is not ready after attach.","SYNC_COORDINATOR_CREDENTIAL_BLOCKED",409);return y.current=T,s({phase:"ready",snapshot:T,error:null}),k(S),v(S),T},[t,e.workspaceId,k,v]),b=o.useCallback(async()=>{if(!e.enabled||!e.workspaceId)return null;const S=i.current,L=l.current+1;l.current=L;try{const _=y.current;if(!_)return await A(S,L);const T=await t.readStatus({workspaceId:e.workspaceId,coordinatorGeneration:_.state.coordinatorGeneration});return i.current!==S||l.current!==L?null:T.credential.status!=="ready"||T.serverInstanceId!==_.serverInstanceId?await A(S,L):(y.current=T,s({phase:"ready",snapshot:T,error:null}),k(S),v(S),T)}catch(_){if(i.current!==S||l.current!==L)return null;const T=Gk(_);if(T.code==="SYNC_COORDINATOR_STALE_GENERATION"||T.code==="SYNC_COORDINATOR_INACTIVE_WORKSPACE")try{return await A(S,L)}catch(H){if(i.current!==S||l.current!==L)return null;const q=Gk(H);return s(z=>({phase:"error",snapshot:z.snapshot,error:q})),null}return s(H=>({phase:"error",snapshot:H.snapshot,error:T})),null}},[A,t,e.enabled,e.workspaceId,k,v]);o.useEffect(()=>{const S=i.current+1;if(i.current=S,y.current=null,!e.enabled||!e.workspaceId||typeof window>"u"){s({phase:"idle",snapshot:null,error:null});return}let L=!1,_=null;s({phase:"attaching",snapshot:null,error:null});const T=()=>{L||(_=window.setTimeout(()=>{_=null,b().finally(T)},r))},H=()=>{document.visibilityState==="visible"&&b()},q=()=>{b()},z=()=>{y.current=null,b()},M=()=>{b().then(J=>{if(J?.state.ownershipMode==="server")return t.signalWake({workspaceId:e.workspaceId,coordinatorGeneration:J.state.coordinatorGeneration,source:"connectivity"}).catch(()=>{})})};document.addEventListener("visibilitychange",H),window.addEventListener("focus",q),window.addEventListener("online",M),window.addEventListener(Bv,z);const Z=l.current+1;return l.current=Z,A(S,Z).catch(J=>{i.current!==S||l.current!==Z||s({phase:"error",snapshot:null,error:Gk(J)})}).finally(T),()=>{L=!0,i.current+=1,_!==null&&window.clearTimeout(_),document.removeEventListener("visibilitychange",H),window.removeEventListener("focus",q),window.removeEventListener("online",M),window.removeEventListener(Bv,z)}},[A,t,e.enabled,e.workspaceId,r,b]);const w=o.useCallback(async(S,L=null)=>{let _=y.current;if(!_)throw new Va("The local sync coordinator is not attached.","SYNC_COORDINATOR_UNAVAILABLE",409);const T=S==="DisableSync";if(T){const te=d.current;if(te?.workspaceId===e.workspaceId){if(te.type===S)return te.promise;await te.promise}const fe=v(i.current);if(fe){if(d.current?.type===S)return fe;await fe}}const H=c.current;if(H?.workspaceId===e.workspaceId){if(H.type===S)return H.promise;const te=H.type==="EnableSync"||H.type==="DisableSync";(!T||te)&&await H.promise}const q=k(i.current);if(q){const te=c.current?.type;if(te===S)return q;(!T||(te==="EnableSync"||te==="DisableSync"))&&await q}if(!T){const te=d.current;if(te?.workspaceId===e.workspaceId){if(te.type===S)return te.promise;await te.promise}const fe=v(i.current);if(fe){if(d.current?.type===S)return fe;await fe}}if(_=y.current,!_)throw new Va("The local sync coordinator is not attached.","SYNC_COORDINATOR_UNAVAILABLE",409);const z={commandId:crypto.randomUUID(),workspaceId:e.workspaceId,coordinatorGeneration:_.state.coordinatorGeneration,type:S,version:1,args:L},M=Hk({client:t,envelope:z,storage:Vk(),storageLane:T?"priority":"default"}),Z={workspaceId:e.workspaceId,scope:i.current,type:S,promise:M},J=T?d:c;J.current=Z,T?h(S):f(S);const ee=()=>{J.current===Z&&(J.current=null,T?h(null):f(null)),i.current===Z.scope&&e.workspaceId===Z.workspaceId&&b()};return M.then(ee,ee),M},[t,e.workspaceId,b,k,v]),R=o.useCallback(async(S,L=[])=>{const _=y.current;return!_||_.state.ownershipMode!=="server"?!1:(await t.signalWake({workspaceId:e.workspaceId,coordinatorGeneration:_.state.coordinatorGeneration,source:S,eventIds:L}),!0)},[t,e.workspaceId]),N=o.useCallback(async()=>{const S=y.current;return!S||!e.workspaceId?!1:(await t.clearCredential({workspaceId:e.workspaceId,coordinatorGeneration:S.state.coordinatorGeneration}),y.current=null,s({phase:"idle",snapshot:null,error:null}),!0)},[t,e.workspaceId]),j=o.useCallback(async S=>{const L=y.current,_=String(L?.state.activeWorkspaceId||"").trim(),T=String(S||"").trim();if(!L||!_)throw new Va("The local sync coordinator is not attached to an active workspace.","SYNC_COORDINATOR_UNAVAILABLE",409);if(!T)throw new Va("The target workspace is required.","SYNC_COORDINATOR_COMMAND_INVALID",400);if(T===_)return L.state;const H=i.current,q=await t.switchWorkspace({commandId:crypto.randomUUID(),expectedActiveWorkspaceId:_,targetWorkspaceId:T,coordinatorGeneration:L.state.coordinatorGeneration,version:1});return i.current===H&&(l.current+=1,y.current=null,s({phase:"attaching",snapshot:null,error:null})),q.state},[t]),E=o.useCallback(async S=>{const L=y.current;if(!L)throw new Va("The local sync coordinator is not attached.","SYNC_COORDINATOR_UNAVAILABLE",409);if(L.state.ownershipMode===S)return L.state;const _=i.current,T=await t.transferOwnership({commandId:crypto.randomUUID(),workspaceId:e.workspaceId,coordinatorGeneration:L.state.coordinatorGeneration,targetMode:S,version:1});if(i.current===_){const H={...L,state:T.state};y.current=H,s({phase:"ready",snapshot:H,error:null}),b()}return T.state},[t,e.workspaceId,b]);return o.useMemo(()=>({...n,activeCommandType:m,activePriorityCommandType:g,refresh:b,issueCommand:w,signalWake:R,clearCredential:N,switchWorkspace:j,transferOwnership:E}),[m,g,N,w,b,R,n,j,E])}function Vk(){if(typeof window>"u")return null;try{return window.sessionStorage}catch{return null}}function Gk(e){return e instanceof Va?e:new Va(e instanceof Error&&e.message.trim()?e.message:"The local sync coordinator request failed.","SYNC_COORDINATOR_REQUEST_FAILED",0)}function IE(e){return e.serverCommandMode}function _E(e){return e.runtimeMode==="local"}function NS(e){const t=String(e.workspaceId||"").trim(),r=e.snapshot,n=r?.state,s=r?.credential,i=r?[r.serverInstanceId,n?.activeWorkspaceId||"",n?.coordinatorGeneration??"",n?.ownershipMode||"",n?.transitionState||"",s?.status||"",s?.coordinatorGeneration??""].join(":"):`${e.phase}:unavailable`;let l,c=!1,d=!1,m=!0;return e.phase!=="ready"||!r||!n||!s?l="coordinator-unavailable":!t||n.activeWorkspaceId!==t?l="workspace-mismatch":s.status!=="ready"||s.workspaceId!==t?l="credential-blocked":s.coordinatorGeneration!==n.coordinatorGeneration?l="generation-mismatch":n.transitionState!=="idle"?l="transition-active":n.ownershipMode==="browser-gateway"?(l="browser-owner",c=!0,m=!1):n.ownershipMode==="server"?(l="server-owner",c=!0,d=!0,m=!1):n.ownershipMode==="stopped"?l="coordinator-stopped":l="transition-active",{browserSchedulingAllowed:l==="browser-owner",coordinatorAuthorityReady:c,serverCommandMode:d,transitionFenced:m,reason:l,authorityEpoch:i}}class TE extends Error{constructor(t,r){super(t),this.code=r,this.name="WorkspaceSyncTransportGatewayError"}}function xE(e){if(e.type==="handshake")return"handshake";if(e.type==="provision"||e.type==="bootstrap-push")return"bootstrap";if(e.type==="push")return"push";if(e.type==="v3-dispatch")return"v3-dispatch";if(e.type==="initiative-repair"||e.type==="combined-repair"||e.type==="v3-feed-repair"||e.type==="pull"&&e.repairMode===!0||e.type==="v3-feed"&&(e.forceRepair===!0||e.repairCursor))return"repair";if(e.type==="pull"||e.type==="v3-feed"||e.type==="task-comment-audit"||e.type==="content-pull")return"pull";throw RE("The requested sync gateway operation is not supported.")}function RE(e){return new TE(e,"SYNC_COORDINATOR_GATEWAY_OPERATION_INVALID")}function PE(e){return e.type==="v3-dispatch"?9e4:e.type==="initiative-repair"||e.type==="combined-repair"||e.type==="v3-feed-repair"||e.type==="v3-feed"&&(e.forceRepair===!0||e.repairCursor)?75e3:e.type==="push"&&e.repairMode===!0||e.type==="pull"&&e.repairMode===!0?18e4:e.type==="push"||e.type==="bootstrap-push"||e.type==="pull"||e.type==="v3-feed"||e.type==="content-pull"?9e4:e.type==="task-comment-audit"?45e3:2e4}const jE=5e3;function DS(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function EE(e,t){return!DS(e)||e.success!==!0||e.workspaceId!==t||!Array.isArray(e.changes)||typeof e.hasMore!="boolean"||!Object.hasOwn(e,"nextCursor")||!(e.nextCursor===null||typeof e.nextCursor=="string")||e.workspaceMembers!==void 0&&!Array.isArray(e.workspaceMembers)||e.excludedProjections!==void 0&&(!Array.isArray(e.excludedProjections)||e.excludedProjections.some(r=>typeof r!="string"))?!1:e.diagnostics===void 0||DS(e.diagnostics)}function zh(e){return{cursor:e??null}}function Cm(e){return{version:1,projection:e.projection,cursor:e.cursor??null,...e.coverage?{coverage:{...e.coverage}}:{}}}function MS(e){const t=String(e||"").trim();if(!t)throw new TypeError("Independent content transfer identity is required.");return{version:1,projection:"independent-content",cursor:null,identity:t}}async function NE(e,t){const r=await e.text();let n={},s=!1;if(r)try{n=JSON.parse(r),s=!!(n&&typeof n=="object"&&!Array.isArray(n))}catch{n={error:r.slice(0,400)}}const i=e.headers.get("retry-after");let l;if(i){const c=Number.parseInt(i,10);if(Number.isFinite(c)&&c>0)l=c*1e3;else{const d=Date.parse(i),m=d-t;Number.isFinite(d)&&m>0&&(l=m)}}return{result:{ok:e.status>=200&&e.status<300,status:e.status,data:n,...l===void 0?{}:{retryAfterMs:l}},validJsonObject:s}}function DE(e){const t=e.now,r=e.createPermitId||(()=>crypto.randomUUID()),n=new WeakMap,s=f=>{if(f!==e.workspaceId)throw new TypeError("The browser-gateway sync operation workspace does not match its coordinator.")},i=async(f,g="SYNC_COORDINATOR_BROWSER_ABANDONED",h)=>{const k=(await e.client.abandonPermit({permitId:f,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration,errorCode:g}))?.permit;if(!k||k.permitId!==f||k.workspaceId!==e.workspaceId||k.coordinatorGeneration!==e.coordinatorGeneration||k.serverInstanceId!==e.serverInstanceId||k.ownerMode!=="browser-gateway"||h&&(k.operationClass!==h.operationClass||k.operationIdentity!==h.operationIdentity)||!["released","abandoned-clean","abandoned-reconcile-required"].includes(k.state)||h?.acceptedReceipt===!0&&(k.upstreamDisposition!=="accepted"||!["released","abandoned-reconcile-required"].includes(k.state)))throw new Error("The browser-gateway execution permit was not abandoned safely.");return k},l=async(f,g,h)=>{try{await i(f,void 0,h)}catch{}throw g},c=async f=>{if(e.isExecutionAuthorized?.()===!1)throw new Error("The browser-gateway sync authority selection was revoked.");s(f.operation.workspaceId);const g=t(),h=Math.max(1,Math.floor(e.permitDeadlineMs??PE(f.operation)+jE)),y=xE(f.operation),k={operationClass:y,operationIdentity:f.operationIdentity||null},v=r();let A;try{A=await e.client.issuePermit({permitId:v,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration,operationClass:y,operationIdentity:f.operationIdentity||null,lastCommittedCursor:f.previousBoundary,deadlineAt:new Date(g.getTime()+h).toISOString()})}catch(L){return l(v,L,k)}const b=A?.permit;if(!b||b.permitId!==v||b.workspaceId!==e.workspaceId||b.coordinatorGeneration!==e.coordinatorGeneration||b.serverInstanceId!==e.serverInstanceId||b.ownerMode!=="browser-gateway"||b.operationClass!==y||b.operationIdentity!==k.operationIdentity||b.state!=="issued-idle")return l(v,new Error("The browser-gateway execution permit is invalid."),k);let w;try{w=await e.client.executeGateway({permitId:b.permitId,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration,operationIdentity:f.operationIdentity||null,operation:f.operation})}catch(L){return l(v,L,k)}let R;try{R=await NE(w,g.getTime())}catch(L){return l(v,L,k)}const N=R.result;let j;try{j=await e.client.readPermit({permitId:v,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration})}catch(L){return l(v,L,k)}const E=j?.permit;if(!E||E.permitId!==v||E.workspaceId!==e.workspaceId||E.coordinatorGeneration!==e.coordinatorGeneration||E.serverInstanceId!==e.serverInstanceId||E.ownerMode!=="browser-gateway"||E.operationClass!==y||E.operationIdentity!==k.operationIdentity||E.state!=="gateway-complete-awaiting-apply"||!["accepted","rejected","unknown"].includes(E.upstreamDisposition||""))return l(v,new Error("The browser-gateway did not settle its execution permit."),k);if(E.upstreamDisposition==="accepted"&&(f.requireAcceptedJsonObject&&!R.validJsonObject||f.validateAcceptedData&&!f.validateAcceptedData(N.data)))return l(v,new Error("The accepted browser-gateway sync response is invalid."),k);if(!f.applying){if(E.upstreamDisposition==="accepted"){let L;try{L=await e.client.releasePermit({permitId:v,workspaceId:e.workspaceId,coordinatorGeneration:e.coordinatorGeneration})}catch(T){return l(v,T,k)}const _=L?.permit;if(!_||_.permitId!==v||_.workspaceId!==e.workspaceId||_.coordinatorGeneration!==e.coordinatorGeneration||_.serverInstanceId!==e.serverInstanceId||_.ownerMode!=="browser-gateway"||_.operationClass!==y||_.operationIdentity!==k.operationIdentity||_.state!=="released")return l(v,new Error("The browser-gateway execution permit was not released."),k)}else await i(v,void 0,k);return N}if(E.upstreamDisposition!=="accepted")return await i(v,void 0,k),N;if(!f.previousBoundary)return l(v,new Error("A browser-gateway applying request did not declare its prior boundary."),k);const S=Object.freeze({});return n.set(S,{permitId:v,workspaceId:e.workspaceId,previousBoundary:f.previousBoundary,operationClass:y,operationIdentity:k.operationIdentity}),{...N,transferReceipt:{token:S}}},d=(f,g,h)=>{if(s(f),!Array.isArray(g)||g.length===0)throw new TypeError("A browser-gateway apply completion group requires transfer receipts.");const y=g.map(k=>{if(!k||typeof k!="object")throw new TypeError("The browser-gateway transfer receipt is invalid.");const v=k.token;if(!v||typeof v!="object")throw new TypeError("The browser-gateway transfer receipt token is invalid.");const A=n.get(v);if(!A||A.workspaceId!==f)throw new TypeError("The browser-gateway transfer receipt does not belong to this adapter.");if(h&&hn(A.previousBoundary)!==hn(h))throw new TypeError("The browser-gateway transfer receipt starts at a different boundary.");return A});if(new Set(y.map(k=>k.permitId)).size!==y.length)throw new TypeError("The browser-gateway apply completion group contains duplicate receipts.");return y},m=(f,g,h,y)=>{const k=d(f,g,h);return{version:HC,workspaceId:f,coordinatorGeneration:e.coordinatorGeneration,ownerMode:"browser-gateway",serverInstanceId:e.serverInstanceId,permitIds:k.map(v=>v.permitId),previousBoundary:h,expectedBoundary:y}};return{handshakeWorkspace:f=>c({operation:{type:"handshake",workspaceId:f},applying:!1}),provisionWorkspace:f=>c({operation:{type:"provision",...f},applying:!1}),pushWorkspaceChanges:f=>{const{ownership:g}=f,h=Mh(f.pushBoundary),y=hg(f.changes);return c({operation:{type:"push",workspaceId:f.workspaceId,idempotencyKey:f.idempotencyKey,changes:f.changes,...f.repairMode===!0?{repairMode:!0}:{},...g.activeV3TaskMetadataIds.length>0?{activeV3TaskMetadataIds:g.activeV3TaskMetadataIds}:{},...g.activeV3TaskLifecycleIds.length>0?{activeV3TaskLifecycleIds:g.activeV3TaskLifecycleIds}:{},...g.activeV3TaskReopenAssigneeIds.length>0?{activeV3TaskReopenAssigneeIds:g.activeV3TaskReopenAssigneeIds}:{},...g.activeV3InitiativeIds.length>0?{activeV3InitiativeIds:g.activeV3InitiativeIds}:{},...g.initiativeProjectionOwner==="v3"?{v3InitiativeProjectionOwned:!0}:{},...g.combinedCoverage?{combinedCoverage:g.combinedCoverage,excludedProjections:g.combinedExcludedProjections||[]}:{}},operationIdentity:f.idempotencyKey,previousBoundary:h,applying:!0,requireAcceptedJsonObject:!0,validateAcceptedData:k=>{try{return dI(k,y),!0}catch{return!1}}})},pullWorkspaceChanges:f=>{const g=f.excludedProjections?.length?xw(f.excludedProjections):null;return c({operation:{type:"pull",...f,...g?{coverage:g}:{},excludedProjections:f.excludedProjections?[...f.excludedProjections]:void 0},previousBoundary:zh(f.cursor),applying:!0,requireAcceptedJsonObject:!0,validateAcceptedData:h=>EE(h,f.workspaceId)})},pullWorkspaceContent:f=>{const{previousCursor:g,independentCompletionIdentity:h,...y}=f;return c({operation:{type:"content-pull",...y},previousBoundary:h?MS(h):zh(g),applying:!0})},pullInitiativeFeed:f=>c({operation:{type:"v3-feed",...f,limit:f.limit||100},previousBoundary:Cm({projection:"initiative",cursor:f.repairCursor||f.cursor}),applying:!0}),pullInitiativeRepair:f=>c({operation:{type:"initiative-repair",...f,limit:f.limit||100},previousBoundary:Cm({projection:"initiative",cursor:f.cursor}),applying:!0}),pullCombinedFeed:f=>c({operation:{type:"v3-feed",...f,limit:f.limit||100},previousBoundary:Cm({projection:"combined",cursor:f.repairCursor||f.cursor,coverage:f.coverage||Ca}),applying:!0}),pullCombinedRepair:f=>c({operation:{type:"combined-repair",...f,limit:f.limit||100,coverage:f.coverage||Ca},previousBoundary:Cm({projection:"combined",cursor:f.cursor,coverage:f.coverage||Ca}),applying:!0}),pullTaskCommentAudit:f=>c({operation:{type:"task-comment-audit",...f,limit:f.limit||50},previousBoundary:Cm({projection:"task-comment-audit",cursor:f.cursor}),applying:!0}),abandonTransferReceipts:async({workspaceId:f,receipts:g,errorCode:h})=>{const y=d(f,g);await Promise.all(y.map(k=>i(k.permitId,h,{operationClass:k.operationClass,operationIdentity:k.operationIdentity,acceptedReceipt:!0})))},acknowledgeNonApplyingTransferReceipts:async({workspaceId:f,receipts:g})=>{const h=d(f,g);await Promise.all(h.map(async y=>{const k=await e.client.releasePermit({permitId:y.permitId,workspaceId:f,coordinatorGeneration:e.coordinatorGeneration,...y.operationClass==="push"?{pushBoundary:Mh(y.previousBoundary)}:{}});if(!k?.permit||k.permit.state!=="released"||k.permit.permitId!==y.permitId||k.permit.workspaceId!==f||k.permit.coordinatorGeneration!==e.coordinatorGeneration||k.permit.serverInstanceId!==e.serverInstanceId||k.permit.ownerMode!=="browser-gateway"||k.permit.operationClass!==y.operationClass)throw new Error("The browser-gateway non-applying transfer receipt was not released.")}))},buildV2ApplyCompletionGroup:({workspaceId:f,previousCursor:g,nextCursor:h,receipts:y})=>m(f,y,zh(g),zh(h)),buildIndependentContentApplyCompletionGroup:({workspaceId:f,identity:g,receipts:h})=>{const y=MS(g);return m(f,h,y,y)},buildV2PushApplyCompletionGroup:({workspaceId:f,pushBoundary:g,receipts:h})=>m(f,h,Mh(g),Mh(g)),buildV3ApplyCompletionGroup:({workspaceId:f,apply:g,receipts:h})=>{const y=d(f,h),k=y[0].previousBoundary;if(!("projection"in k)||k.projection!==g.projection||y.some(b=>hn(b.previousBoundary)!==hn(k)))throw new TypeError("The v3 transfer receipts do not match the applied projection.");const v=g.kind==="repair"&&g.previousCursor===null&&y.every(b=>b.operationClass==="pull");if(k.cursor!==g.previousCursor&&!v)throw new TypeError("The v3 apply does not start at the receipt boundary.");const A=g.kind==="delta"||g.kind==="audit"?"pull":"repair";if(!v&&y.some(b=>b.operationClass!==A))throw new TypeError("The v3 transfer receipt operation does not match the apply.");return m(f,h,k,{...k,cursor:g.nextCursor})}}}function LS(e){const t=e.current===e.captured&&e.current.mode!=="blocked"&&e.browserSchedulingAllowed;return t||e.onDenied?.(),t}function ME(e){if(!e.authority.browserSchedulingAllowed)return{mode:"blocked",remoteServices:null};const t=String(e.workspaceId||"").trim(),r=e.snapshot,n=r?.state,s=r?.credential;if(e.phase!=="ready"||e.authority.reason!=="browser-owner"||!t||!r||!n||!s||n.activeWorkspaceId!==t||n.ownershipMode!=="browser-gateway"||n.transitionState!=="idle"||s.status!=="ready"||s.workspaceId!==t||s.coordinatorGeneration!==n.coordinatorGeneration||!Number.isSafeInteger(n.coordinatorGeneration)||n.coordinatorGeneration<1||!String(r.serverInstanceId||"").trim())return{mode:"blocked",remoteServices:null};const i=e.createGatewayRemoteServices||DE;let l;return l={mode:"browser-gateway",remoteServices:i({workspaceId:t,coordinatorGeneration:n.coordinatorGeneration,serverInstanceId:r.serverInstanceId,client:e.client,now:()=>new Date,isExecutionAuthorized:()=>e.isSelectionAuthorized?.(l)!==!1}),coordinatorGeneration:n.coordinatorGeneration,serverInstanceId:r.serverInstanceId},l}const OS={documents:!1,aiProfiles:!1,assets:!1,documentReviewSessions:!1,annotatedAttachmentSessions:!1,taskforceAgents:!1};function LE(e){const{currentWorkspaceId:t,cloudAuthConfigured:r,runtimeMode:n,authSessionResolved:s,isAuthenticated:i,authUserId:l,projectName:c,resolveCloudAuthUrl:d,resolveWebSocketUrl:m,realtimeSyncEnabled:f,localOutboxDispatchEnabled:g,localCoordinatorBrowserAuthorityGateEnabled:h=!1,localCoordinatorClient:y,initiativeFeedActivationEnabled:k,combinedFeedActivationEnabled:v,combinedFeedCoverage:A,tasks:b,archivedTasks:w,deletedTasks:R=[],initiatives:N,workstreams:j,taxonomies:E,taxonomyState:S,setupState:L,globalTheme:_,locale:T,globalWeekStartsOn:H,themeUseGlobalDefault:q,setTasks:z,setArchivedTasks:M,setAuthBlocked:Z,setIsAuthenticated:J,checkAuthSession:ee,setGlobalTheme:te,setCurrentTheme:fe,setSetupState:Ie,setLocale:$e,setGlobalWeekStartsOn:Ye,fetchPlanningEntities:ye}=e,ge=o.useMemo(()=>rj(S),[S]),[oe,ie]=o.useState("disconnected"),[me,W]=o.useState(null),[V,B]=o.useState(null),[D,be]=o.useState(null),[Se,K]=o.useState(null),[Y,G]=o.useState(null),[ae,_e]=o.useState(!1),[Oe,Fe]=o.useState("idle"),[st,ft]=o.useState(null),[xe,ke]=o.useState(!1),[ve,Ve]=o.useState(0),[Ne,de]=o.useState(null),x=o.useRef(null),le=o.useCallback(F=>{x.current=F,de(F)},[]),[Re,Je]=o.useState([]),[X,Ze]=o.useState(""),re=o.useRef(b||[]),Ee=o.useRef(w||[]),je=o.useRef(R||[]),Pe=o.useRef([]),[Ce,Te]=o.useState([]),pe=o.useCallback(F=>{Pe.current=F,Te(F)},[]),Me=o.useRef(N||[]),et=o.useRef(j||[]),Ue=o.useRef(S),yt=o.useRef(E||[]),Le=o.useRef([]),mt=o.useRef(new Set),[kt,He]=o.useState([]),[rt,It]=o.useState(""),[Xe,wt]=o.useState(null),[at,U]=o.useState(null),[he,Ke]=o.useState(0),[Et,vt]=o.useState(null),Bt=o.useRef([]),[dr,er]=o.useState([]),[cr,Ot]=o.useState(""),fr=o.useRef([]),Ar=o.useRef(new Set),[Lr,Wr]=o.useState([]),[De,nt]=o.useState(""),pt=o.useRef([]),ut=o.useRef([]),[Tt,Xt]=o.useState([]),[Nt,Qt]=o.useState(""),St=o.useRef([]),[Kt,Ft]=o.useState([]),[ir,sr]=o.useState(""),ot=o.useRef([]),or=o.useRef([]),Nr=o.useRef([]),ur=o.useRef([]),[ra,wr]=o.useState(OS),[lr,u]=o.useState("degraded-fallback"),[bt,gt]=o.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),Xr=o.useRef(!1),Ir=o.useRef(null),Vt=o.useRef("missing-baseline"),Ur=o.useRef(0),$r=o.useRef(!1),Tn=o.useRef(new Set),an=o.useRef(""),Qr=o.useRef(""),Ge=o.useRef(""),Gr=o.useRef(""),yr=o.useRef(""),Yt=o.useRef(""),Zt=o.useRef(""),Sn=o.useRef(!1),$t=o.useRef(null),Ut=o.useRef(new Set),Fr=o.useRef([]),Wn=o.useRef(null),da=o.useRef(""),ua=o.useRef(()=>Promise.resolve(!1)),en=o.useRef(""),sn=o.useRef(async()=>{}),on=o.useRef(null),xn=o.useRef(null),cn=o.useRef("idle"),xr=o.useRef(0),Dr=o.useRef(!1),kn=o.useRef(!1),tn=o.useRef(0),ga=o.useRef(0),Mn=o.useCallback(()=>{Ir.current!==null&&(window.clearTimeout(Ir.current),Ir.current=null)},[]),mn=o.useCallback(F=>{if(typeof window>"u")return;Mn();const O=Math.max(1,Math.floor(Ur.current)+1);Ur.current=O;const zt=1500*2**Math.max(0,O-1),Mt=Number.isFinite(Number(F))?Math.max(0,Math.floor(Number(F))):0,Rt=Math.max(Math.min(12e4,zt),Mt);Ir.current=window.setTimeout(()=>{Ir.current=null,sn.current({preferCloudOnFirstSync:!1})},Rt)},[Mn]),Rn=o.useCallback(F=>{wr(O=>O[F]?O:{...O,[F]:!0})},[]),gn=Object.values(ra).every(Boolean),lt=o.useMemo(()=>y||new zI,[y]),Ln=_E({runtimeMode:n}),Wt=CE({enabled:Ln,workspaceId:t,client:lt}),ue=o.useMemo(()=>NS({workspaceId:t,phase:Wt.phase,snapshot:Wt.snapshot}),[t,Wt.phase,Wt.snapshot,h]),it=o.useMemo(()=>NS({workspaceId:t,phase:Wt.phase,snapshot:Wt.snapshot}),[t,Wt.phase,Wt.snapshot]),_t=o.useRef(ue);o.useLayoutEffect(()=>{_t.current=ue},[ue]);const Pt=o.useCallback(()=>_t.current.browserSchedulingAllowed,[]),{workspaceRetryAt:rr,isWorkspaceRetryPending:mr,workspacePushInFlightRef:dn,workspacePullInFlightRef:xt,workspaceLastPushedSignatureRef:Rr,workspacePendingSignatureRef:Yr,workspaceLastPushedTaskIdsRef:ln,workspaceDeletedTaskIdsRef:qn,workspaceDeletedTaskWatermarksRef:Kr,workspacePullCursorRef:jr,clearWorkspaceRetry:Yn,scheduleWorkspaceRetry:Ia,persistWorkspaceSyncPatch:$n,applyWorkspaceSyncPatchLocally:Cs,readWorkspaceSyncStateSnapshot:ya,loadWorkspaceSyncState:Bs,applyWorkspaceSyncStateSnapshot:eo,saveWorkspaceCloudSyncSettings:to,acquireWorkspaceSyncLease:Zn,releaseWorkspaceSyncLease:Ws,forceClearWorkspaceSyncLease:na,recordWorkspaceSyncCompletion:pi,wasWorkspaceSyncOperationCompletedRecently:Jn}=BP({currentWorkspaceId:t,setWorkspaceCloudSyncEnabled:_e,setWorkspaceSyncPhase:Fe,setWorkspaceSyncSetupIntent:ft,setWorkspaceLastPullAt:B,setWorkspaceLastPushAt:be,setWorkspaceLastErrorMessage:G,isWorkspaceOperationAuthorized:Pt}),hi=o.useCallback(F=>{(F.phase==="attach-cloud"||F.phase==="provision-local")&&(cn.current=F.phase,on.current===null&&(on.current=Date.now()),xn.current=null),eo(F)},[eo]),_a=o.useRef(new Map),aa=o.useRef(new Map),Ta=o.useRef(new Map),Ka=o.useRef(""),ls=o.useRef(new Set),ds=o.useRef(new Map),La=o.useRef(new Set),qa=o.useRef(new Map),xa=o.useRef(new Map),Ra=o.useRef(new Set),Fn=o.useRef(new Map),us=o.useRef(new Map),dt=o.useRef(new Set),vr=o.useRef(new Map),Zr=o.useRef(new Set),Cn=o.useRef(new Map),Pn=o.useRef(new Set),ro=o.useRef(new Map),Is=o.useRef(new Set),$s=o.useRef(new Map),Pa=o.useRef(new Set),ka=o.useRef(new Map),jn=o.useRef(new Set),Er=o.useRef(new Map),Oa=o.useRef(new Set),Ya=o.useRef(new Map),sa=o.useRef(new Set),Un=o.useRef(new Map),zn=o.useRef(new Map),Za=o.useCallback(F=>F?(ln.current=new Set(F.taskIds),_a.current=F.taskWatermarks,aa.current=F.taskChangeKeys||new Map,Ta.current=F.taskRelationshipChangeKeys||new Map,Ka.current=F.taxonomyChangeKey||"",ls.current=new Set(Array.from(F.initiativeWatermarks.keys())),ds.current=F.initiativeWatermarks,La.current=new Set(Array.from(F.workstreamWatermarks.keys())),qa.current=F.workstreamWatermarks,xa.current=new Map(F.planningIdentityWatermarks||[]),Ra.current=new Set(Array.from(F.aiProfileWatermarks.keys())),Fn.current=F.aiProfileWatermarks,us.current=F.aiProfileChangeKeys||new Map,jn.current=new Set(Array.from((F.taskforceAgentWatermarks||new Map).keys())),Er.current=F.taskforceAgentWatermarks||new Map,Oa.current=new Set(Array.from((F.taskforceAgentSkillWatermarks||new Map).keys())),Ya.current=F.taskforceAgentSkillWatermarks||new Map,sa.current=new Set(Array.from((F.agentConversationWatermarks||new Map).keys())),Un.current=F.agentConversationWatermarks||new Map,dt.current=new Set(Array.from(F.documentWatermarks.keys())),vr.current=F.documentWatermarks,Zr.current=new Set(Array.from(F.assetWatermarks.keys())),Cn.current=F.assetWatermarks,Pn.current=new Set(Array.from(F.documentReviewSessionWatermarks.keys())),ro.current=F.documentReviewSessionWatermarks,Is.current=new Set(Array.from(F.documentReviewCommentWatermarks.keys())),$s.current=F.documentReviewCommentWatermarks,Pa.current=new Set(Array.from(F.annotatedAttachmentSessionWatermarks.keys())),ka.current=F.annotatedAttachmentSessionWatermarks,zn.current=F.taskEventWatermarks,Vt.current=null,!0):!1,[ln]),So=o.useCallback(()=>({taskIds:ln.current,taskWatermarks:_a.current,taskChangeKeys:aa.current,taskRelationshipChangeKeys:Ta.current,taxonomyChangeKey:Ka.current,initiativeWatermarks:ds.current,workstreamWatermarks:qa.current,planningIdentityWatermarks:xa.current,aiProfileWatermarks:Fn.current,aiProfileChangeKeys:us.current,taskforceAgentWatermarks:Er.current,taskforceAgentSkillWatermarks:Ya.current,agentConversationWatermarks:Un.current,documentWatermarks:vr.current,assetWatermarks:Cn.current,documentReviewSessionWatermarks:ro.current,documentReviewCommentWatermarks:$s.current,annotatedAttachmentSessionWatermarks:ka.current,taskEventWatermarks:zn.current}),[]),gi=o.useCallback(()=>{if(Vt.current==="repair-reset"||Vt.current==="storage-write-failed")return!1;const F=Uk(t,ge);return!F||F.aiProfileWatermarks.size===0?!1:(Ra.current=new Set(F.aiProfileWatermarks.keys()),Fn.current=new Map(F.aiProfileWatermarks),us.current=new Map(F.aiProfileChangeKeys||[]),!0)},[t,ge]),_s=o.useRef(!1),yi=o.useRef(!1),we=o.useRef(!1),Ct=o.useRef(!1),qt=o.useRef(!1),nr=o.useRef(""),br=o.useRef(!1),yn=3e4,fa=f?3e4:15e3,Xn=Math.max(3e4,fa),[pn,fs]=o.useState(null);o.useEffect(()=>{const F=Date.now();if(n!=="local"||!ae||Oe!=="active")return;const O=V?Date.parse(V):NaN;if(!Number.isFinite(O))return;const zt=O+DI-F;if(zt<=0)return;const Mt=window.setTimeout(()=>{fs(Date.now())},zt+50);return()=>window.clearTimeout(Mt)},[n,ae,Oe,V]);const Ui=o.useMemo(()=>{const F=V?Date.parse(V):NaN,O=D?Date.parse(D):NaN;return Number.isFinite(F)&&Number.isFinite(O)?F>=O?V:D:Number.isFinite(F)?V:Number.isFinite(O)?D:null},[V,D]),no=sj({enabled:ae,phase:Oe,busy:xe,retryAt:rr,lastErrorMessage:Y,lastErrorAt:Se,lastPullAt:V,lastPushAt:D,nowMs:pn??Date.now(),pendingChanges:ve,durableOutbox:Ne}),zi=no.status,Fs=no.summary,ar=no.recommendedAction,Hn=o.useCallback(F=>{const O=String(F||"").trim();if(!O)return null;const Mt=IS()[O]?.updatedAt;return typeof Mt=="string"&&Mt.trim().length>0?Mt.trim():null},[]),En=o.useCallback((F,O)=>{const zt=String(F||"").trim(),Mt=String(O||"").trim();if(!zt||!Mt)return;const Rt=IS();Rt[zt]={updatedAt:Mt},tj(Rt)},[]),ms=o.useCallback(()=>{const F=L?.mode==="operations"?"operations":"core";return{theme:_,operatingMode:F,localization:{locale:T,weekStartsOn:H}}},[_,L?.mode,T,H]),In=o.useCallback(async F=>{if(!(!F||typeof F!="object")){$r.current=!0;try{const O={},zt=Zu(F.theme);if(zt&&(te(zt),q&&fe(zt),O.theme=zt),(F.operatingMode==="core"||F.operatingMode==="operations")&&(Ie(Mt=>Mt&&{...Mt,mode:F.operatingMode}),O.setup={mode:F.operatingMode}),F.localization&&typeof F.localization=="object"){const Mt={};if(typeof F.localization.locale=="string"&&F.localization.locale.trim().length>0){const ht=xC(F.localization.locale.trim());$e(ht)}const Rt=String(F.localization.weekStartsOn||"").trim().toLowerCase();(Rt==="sunday"||Rt==="monday")&&(Ye(Rt),Mt.weekStartsOn=Rt),Object.keys(Mt).length>0&&(O.schedulePreferences=Mt)}Object.keys(O).length>0&&await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(O)})}finally{$r.current=!1}}},[q,te,fe,Ie,$e,Ye]),ja=o.useCallback(async F=>{const O=F?.preferCloudOnFirstSync!==!1;if(!r)return;if(n!=="local"||!i){Mn(),Ur.current=0,ie("disconnected");return}const zt=String(l||"").trim();if(!zt||zt==="anonymous"){Mn(),Ur.current=0,ie("disconnected");return}if(!Xr.current){ie("syncing"),W(null),Xr.current=!0;try{const Mt=await E1({resolveCloudAuthUrl:d,userId:zt,preferCloudOnFirstSync:O,getLocalUpdatedAt:Hn,buildLocalSettings:ms,applyRemoteSettings:In});if(!Mt.success){ie("error"),Mt.transient?(W(Mt.error||"Sync failed temporarily. Retrying automatically."),mn(Mt.retryAfterMs)):(Mn(),Ur.current=0,W(Mt.error||"Sync failed."));return}Mn(),Ur.current=0;const Rt=String(Mt.updatedAt||"").trim()||new Date().toISOString();En(zt,Rt),ie("idle"),W(null),Tn.current.add(zt),Mt.mode==="pulled"&&(an.current="")}catch{ie("error"),W("Sync failed temporarily. Retrying automatically."),mn()}finally{Xr.current=!1}}},[r,n,i,l,d,Hn,ms,In,En,Mn,mn]);o.useEffect(()=>{sn.current=ja},[ja]),o.useEffect(()=>()=>{Mn()},[Mn]);const ao=o.useCallback(()=>{G(null),K(null)},[]),Ts=o.useCallback(F=>{G(CS),K(new Date().toISOString()),ie("error"),W(CS),Ds("workspace_sync_window_contention",{workspaceId:t,operation:F})},[t]),Ba=o.useCallback(async F=>{try{return await $n(F)}catch{return Cs(F)}},[Cs,$n]),Wa=o.useCallback(F=>{Ba(F).catch(()=>{})},[Ba]),va=o.useCallback(()=>{const F={...So(),taxonomyStateFingerprint:ge},O=_S(t,F);return Ba({pushBaseline:EI(F)}).catch(()=>{}),O},[So,t,Ba,ge]);o.useEffect(()=>{xr.current+=1,Dr.current=!1,kn.current=!1,Qr.current="",Ge.current="",Gr.current="",yr.current="",Yt.current="",Zt.current="",nr.current="",br.current=!1,Le.current=[],mt.current=new Set,Je([]),Ze(""),Bt.current=[],He([]),It(""),fr.current=[],Ar.current=new Set,er([]),Ot(""),pt.current=[],ut.current=[],Wr([]),nt(""),St.current=[],Xt([]),Qt(""),ot.current=[],or.current=[],ur.current=[],Ft([]),sr(""),wr(OS),G(null),K(null),Ve(0),Ut.current=new Set,Fr.current=[],_a.current=new Map,aa.current=new Map,Ta.current=new Map,Ka.current="",ls.current=new Set,ds.current=new Map,La.current=new Set,qa.current=new Map,xa.current=new Map,Ra.current=new Set,Fn.current=new Map,us.current=new Map,dt.current=new Set,vr.current=new Map,Zr.current=new Set,Cn.current=new Map,Pn.current=new Set,ro.current=new Map,Is.current=new Set,$s.current=new Map,Pa.current=new Set,ka.current=new Map,jn.current=new Set,Er.current=new Map,Oa.current=new Set,Ya.current=new Map,sa.current=new Set,Un.current=new Map,zn.current=new Map,yi.current=!!ya().startupFullReconcileCompletedAt,ki.current=!1;const F=Uk(t,ge);Za(F)||(Vt.current="missing-baseline")},[t,Za,ge]),o.useEffect(()=>{if(Vt.current!=="missing-baseline")return;const F=Uk(t,ge);if(Za(F))return;const O=NI(ya().pushBaseline,ge);Za(O)&&_S(t,{...So(),taxonomyStateFingerprint:ge})},[So,t,Za,ya,ge,ae,Oe]),o.useEffect(()=>{yi.current=!!ya().startupFullReconcileCompletedAt},[t,ya,V,Oe]);const $a=o.useCallback(F=>{Ia(()=>ua.current(),{minDelayMs:F})},[Ia]);o.useEffect(()=>{fj({workspaceSyncPhase:Oe,lastBootstrapPhaseRef:cn,bootstrapPhaseStartedAtRef:on,bootstrapLastProgressAtRef:xn})},[Oe]),o.useEffect(()=>mj({currentWorkspaceId:t,workspaceCloudSyncEnabled:ae,workspaceSyncPhase:Oe,workspacePullInFlightRef:xt,workspacePushInFlightRef:dn,bootstrapPhaseStartedAtRef:on,bootstrapLastProgressAtRef:xn,isExecutionAuthorized:Pt,setWorkspaceLastErrorMessage:F=>G(F),setWorkspaceLastErrorAt:F=>K(F),setUserGlobalSyncStatus:ie,setUserGlobalSyncError:F=>W(F),setWorkspaceSyncBusy:ke,persistWorkspaceSyncPatchSafely:Wa}),[t,ae,Oe,Wa,xt,dn,ue.authorityEpoch,Pt]),o.useEffect(()=>{re.current=b||[]},[b]),o.useEffect(()=>{Ee.current=w||[]},[w]),o.useEffect(()=>{let F=!1;return fetch("/api/taskforce/task-relationships",{method:"GET",credentials:"include"}).then(O=>O.ok?O.json():null).then(O=>{!F&&Array.isArray(O?.relationships)&&pe(O.relationships)}).catch(()=>{}),()=>{F=!0}},[w,t,b,pe]),o.useEffect(()=>{je.current=R||[],qn.current=new Set((R||[]).map(F=>String(F?.taskId||"").trim()).filter(F=>F.length>0)),Kr.current=new Map((R||[]).map(F=>[String(F?.taskId||"").trim(),String(F?.deletedAt||"").trim()]).filter(([F,O])=>F.length>0&&Number.isFinite(Date.parse(O))))},[R,qn,Kr]),o.useEffect(()=>{Me.current=N||[]},[N]),o.useEffect(()=>{et.current=j||[]},[j]),o.useEffect(()=>{Ue.current=S,yt.current=E||[]},[E,S]);const Sr=o.useRef(!1),ki=o.useRef(!1),ps=o.useMemo(()=>({repairMode:Ct,forceFullAiProfilePush:Sr,pushInFlight:dn,pullInFlight:xt,pullAfterPushRequested:qt,pendingPushReplay:Wn,blockedPushSignature:da,lastPushedSignature:Rr,pendingSignature:Yr,lastPushedTaskIds:ln,deletedTaskIds:qn,deletedTaskWatermarks:Kr,pullCursor:jr,lastPushedWatermarks:_a,lastPushedTaskChangeKeys:aa,lastPushedTaskRelationshipChangeKeys:Ta,lastPushedTaxonomyChangeKey:Ka,lastPushedInitiativeIds:ls,lastPushedInitiativeWatermarks:ds,lastPushedWorkstreamIds:La,lastPushedWorkstreamWatermarks:qa,lastPushedPlanningIdentityWatermarks:xa,lastPushedAiProfileIds:Ra,lastPushedAiProfileWatermarks:Fn,lastPushedAiProfileChangeKeys:us,lastPushedDocumentPaths:dt,lastPushedDocumentWatermarks:vr,lastPushedAssetPaths:Zr,lastPushedAssetWatermarks:Cn,lastPushedDocumentReviewSessionIds:Pn,lastPushedDocumentReviewSessionWatermarks:ro,lastPushedDocumentReviewCommentIds:Is,lastPushedDocumentReviewCommentWatermarks:$s,lastPushedAnnotatedAttachmentSessionIds:Pa,lastPushedAnnotatedAttachmentSessionWatermarks:ka,lastPushedTaskforceAgentIds:jn,lastPushedTaskforceAgentWatermarks:Er,lastPushedTaskforceAgentSkillIds:Oa,lastPushedTaskforceAgentSkillWatermarks:Ya,lastPushedAgentConversationIds:sa,lastPushedAgentConversationWatermarks:Un,lastPushedTaskEventWatermarks:zn,baselineResetReason:Vt,captureAttachBootstrapBaseline:br,attachBootstrapBaselineSignature:nr,startupRepairRan:_s,startupFullReconcileRan:yi,startupFullReconcileRequested:we,fullReconcileInFlight:ki,lastBootstrapPhase:cn,bootstrapPhaseStartedAtMs:on,bootstrapLastProgressAtMs:xn,realtimeSuppressedEventQueue:Fr}),[]),Ao=o.useMemo(()=>Yj(),[]),Us=o.useRef(null),Ja=o.useMemo(()=>ME({workspaceId:t,phase:Wt.phase,snapshot:Wt.snapshot,authority:ue,client:lt,isSelectionAuthorized:F=>Us.current===F&&Pt()}),[ue.authorityEpoch,ue.browserSchedulingAllowed,ue.reason,t,lt,Wt.phase,Wt.snapshot?.credential.coordinatorGeneration,Wt.snapshot?.credential.status,Wt.snapshot?.credential.workspaceId,Wt.snapshot?.serverInstanceId,Wt.snapshot?.state.activeWorkspaceId,Wt.snapshot?.state.coordinatorGeneration,Wt.snapshot?.state.ownershipMode,Wt.snapshot?.state.transitionState,h]),wa=Ja.remoteServices;o.useLayoutEffect(()=>(Us.current=Ja,()=>{Us.current===Ja&&(Us.current=null)}),[Ja]);const Fa=o.useCallback(async()=>{const F=Ja,O=Us.current??{mode:"blocked",remoteServices:null};return!wa||!LS({current:O,captured:F,browserSchedulingAllowed:Pt()})?{success:!1,statusCode:409,transient:!0,error:"Browser workspace sync authority changed before cloud readiness validation."}:w1({cloudAuthConfigured:r,runtimeMode:n,isAuthenticated:i,resolveCloudAuthUrl:d,workspaceId:t,workspaceName:c||t,allowProvisionOnMismatch:Oe!=="attach-cloud",remoteServices:wa})},[r,t,i,Pt,c,d,n,wa,Oe,Ja]),so=o.useRef(t);so.current=t;const Ua=o.useCallback(()=>yP({workspaceId:so.current,tasks:re.current,archivedTasks:Ee.current,taskRelationships:Pe.current,deletedTasks:je.current,pendingDeletedTaskIds:qn.current,pendingDeletedTaskWatermarks:Kr.current,initiatives:Me.current,workstreams:et.current,taxonomies:yt.current,taxonomyState:Ue.current,aiProfiles:Bt.current,documents:Le.current,assets:fr.current,currentDocumentPaths:mt.current,currentAssetPaths:Ar.current,documentsSnapshotComplete:Dr.current,assetsSnapshotComplete:kn.current,documentReviewSessions:pt.current,documentReviewComments:ut.current,annotatedAttachmentSessions:St.current,taskforceAgents:ot.current,agentRoles:or.current,taskforceAgentSkills:Nr.current,agentConversations:ur.current}),[]),Xa=o.useCallback(F=>{const O=Ua();return vP({snapshot:O,forceAllAiProfiles:F?.forceAllAiProfiles===!0,baseline:{lastPushedTaskIds:ln.current,lastPushedWatermarks:_a.current,lastPushedTaskChangeKeys:aa.current,lastPushedTaskRelationshipChangeKeys:Ta.current,lastPushedTaxonomyChangeKey:Ka.current,lastPushedInitiativeIds:ls.current,lastPushedInitiativeWatermarks:ds.current,lastPushedWorkstreamIds:La.current,lastPushedWorkstreamWatermarks:qa.current,lastPushedPlanningIdentityWatermarks:xa.current,lastPushedAiProfileIds:Ra.current,lastPushedAiProfileWatermarks:Fn.current,lastPushedAiProfileChangeKeys:us.current,lastPushedDocumentPaths:dt.current,lastPushedDocumentWatermarks:vr.current,lastPushedAssetPaths:Zr.current,lastPushedAssetWatermarks:Cn.current,lastPushedDocumentReviewSessionIds:Pn.current,lastPushedDocumentReviewSessionWatermarks:ro.current,lastPushedDocumentReviewCommentIds:Is.current,lastPushedDocumentReviewCommentWatermarks:$s.current,lastPushedAnnotatedAttachmentSessionIds:Pa.current,lastPushedAnnotatedAttachmentSessionWatermarks:ka.current,lastPushedTaskforceAgentIds:jn.current,lastPushedTaskforceAgentWatermarks:Er.current,lastPushedTaskforceAgentSkillIds:Oa.current,lastPushedTaskforceAgentSkillWatermarks:Ya.current,lastPushedAgentConversationIds:sa.current,lastPushedAgentConversationWatermarks:Un.current,lastPushedTaskEventWatermarks:zn.current,baselineResetReason:Vt.current}})},[Ua]),ba=o.useCallback(F=>Xa(F).payload,[Xa]),Ko=o.useCallback((F,O)=>{if(n==="local")try{const zt={...O,workspaceId:F,details:uy(O.details)};fetch("/api/taskforce/sync/events",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(zt)}).catch(Mt=>{Ds("sync_event_post_failed",{workspaceId:F,eventType:O.eventType,status:O.status,error:String(Mt?.message||Mt||"")})})}catch(zt){Ds("sync_event_post_failed",{workspaceId:F,eventType:O.eventType,status:O.status,error:String(zt?.message||zt||"")})}},[n]),Sa=o.useCallback(()=>wI(Ua()),[Ua]),pc=o.useMemo(()=>JSON.stringify({tasks:(b||[]).map(F=>({id:String(F.id||"").trim(),updatedAt:String(F.updatedAt||F.createdAt||"").trim(),status:String(F.status||"").trim(),referenceNumber:F.referenceNumber??null,localReferenceNumber:F.localReferenceNumber??null})).sort((F,O)=>F.id.localeCompare(O.id)),archivedTasks:(w||[]).map(F=>({id:String(F.id||"").trim(),updatedAt:String(F.updatedAt||F.createdAt||"").trim(),status:String(F.status||"").trim(),referenceNumber:F.referenceNumber??null,localReferenceNumber:F.localReferenceNumber??null})).sort((F,O)=>F.id.localeCompare(O.id)),initiatives:(N||[]).map(F=>({id:String(F.id||"").trim(),updatedAt:String(F.updatedAt||F.createdAt||"").trim(),isArchived:!!F.isArchived})).sort((F,O)=>F.id.localeCompare(O.id)),workstreams:(j||[]).map(F=>({id:String(F.id||"").trim(),updatedAt:String(F.updatedAt||F.createdAt||"").trim(),initiativeId:typeof F.initiativeId=="string"?F.initiativeId.trim():"",isArchived:!!F.isArchived})).sort((F,O)=>F.id.localeCompare(O.id)),taskEvents:Tv(b||[],w||[],N||[],j||[]).map(F=>({id:String(F.id||"").trim(),entityType:String(F.entityType||"task").trim(),entityId:String(F.entityId||F.taskId||"").trim(),createdAt:String(F.createdAt||"").trim(),action:String(F.action||"").trim()})).sort((F,O)=>F.id.localeCompare(O.id)),deletedTasks:(R||[]).map(F=>({taskId:String(F?.taskId||"").trim(),deletedAt:String(F?.deletedAt||"").trim()})).filter(F=>F.taskId.length>0&&Number.isFinite(Date.parse(F.deletedAt))).sort((F,O)=>F.taskId.localeCompare(O.taskId)),taxonomies:Array.isArray(E)?E:[],taxonomyState:S&&typeof S=="object"?S:null}),[b,w,R,N,j,E,S]);dE({enabled:g===!0&&n==="local"&&it.browserSchedulingAllowed&&ae,workspaceId:t,mutationFingerprint:pc,authorityScope:Ja,remoteServices:wa,localServices:Ao,isAuthorityCurrent:F=>Us.current===F&&Pt(),onHydratedEventIds:F=>{_o.current.recordSuppressedEventIds(F,{ttlMs:6e4})},onOutboxStatus:le});const hs=o.useCallback(()=>{if(g!==!0)return!1;const F=x.current;return F===null||F.recovery!==null&&F.recovery.state!=="completed"},[g]),vi=o.useMemo(()=>{const F=[];for(const O of b||[]){const zt=Array.isArray(O.attachments)?O.attachments.length:0;zt>0&&F.push(`${O.id}:${zt}`)}return F.join("|")},[b]),un=o.useCallback(F=>{if(!F)return!1;if(br.current)return br.current=!1,nr.current=F,Rr.current=F,Ve(0),!0;const O=nr.current;return O?F===O?(Rr.current=F,Ve(0),!0):(nr.current="",!1):!1},[]),Hi=o.useCallback(async()=>{if(n!=="local"||!Yc(t)||r&&(!s||!i))return!1;try{const F=await fetch(`/api/taskforce/taxonomy-state?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!F.ok)return!1;const O=await F.json();return SI(O)?(Ue.current=O,yt.current=Array.isArray(O.taxonomies)?O.taxonomies:[],!0):!1}catch(F){return Ds("taxonomy_snapshot_refresh_failed",{workspaceId:t,error:String(F?.message||F||"")}),!1}},[n,t,r,s,i]),ma=o.useCallback(async()=>{if(n!=="local"||!Yc(t)||r&&(!s||!i))return!1;const F=t,O=xr.current,zt=tn.current+=1,Mt=()=>F!==so.current||O!==xr.current||zt!==tn.current;try{const Rt=await fetch(`/api/taskforce/sync/workspace/documents?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(Mt()||!Rt.ok)return!1;const ht=await Rt.json();if(Mt()||!Array.isArray(ht?.documents))return!1;const rn=Array.isArray(ht?.documents)?ht.documents.map(Dt=>({path:String(Dt?.path||"").trim(),updatedAt:String(Dt?.updatedAt||"").trim(),content:typeof Dt?.content=="string"?Dt.content:"",assetId:typeof Dt?.assetId=="string"&&Dt.assetId.trim().length>0?Dt.assetId.trim():void 0,documentId:typeof Dt?.documentId=="string"&&Dt.documentId.trim().length>0?Dt.documentId.trim():null,referenceNumber:Number.isFinite(Number(Dt?.referenceNumber))?Math.max(1,Math.floor(Number(Dt.referenceNumber))):null,version:Number.isFinite(Number(Dt?.version))?Math.max(1,Math.floor(Number(Dt.version))):null,taskId:typeof Dt?.taskId=="string"&&Dt.taskId.trim().length>0?Dt.taskId.trim():null,logicalName:typeof Dt?.logicalName=="string"&&Dt.logicalName.trim().length>0?Dt.logicalName.trim():null,caption:typeof Dt?.caption=="string"&&Dt.caption.trim().length>0?Dt.caption.trim():null,originalFilename:typeof Dt?.originalFilename=="string"&&Dt.originalFilename.trim().length>0?Dt.originalFilename.trim():null,linkRole:Dt?.linkRole==="reference"?"reference":"attachment"})).filter(Dt=>Dt.path.length>0):[],tr=new Set(Array.isArray(ht?.knownPaths)?ht.knownPaths.map(Dt=>String(Dt||"").trim()).filter(Dt=>Dt.length>0):rn.map(Dt=>Dt.path)),Pr=typeof ht?.fingerprint=="string"?ht.fingerprint:JSON.stringify(rn.map(Dt=>`${Dt.path}:${Dt.updatedAt}:${Dt.content.length}`).sort());return Mt()?!1:Pr===Qr.current?(Dr.current=!0,!0):(Qr.current=Pr,Le.current=rn,mt.current=tr,Je(rn),Ze(Pr),Dr.current=!0,!0)}catch(Rt){return Ds("documents_snapshot_refresh_failed",{workspaceId:t,error:String(Rt?.message||Rt||"")}),!1}finally{Rn("documents")}},[n,t,r,s,i,Rn]),zs=o.useCallback(async()=>{if(n!=="local")return vt("runtime-not-local"),!1;if(!Yc(t))return vt("workspace-id-invalid"),!1;if(r&&(!s||!i))return vt(s?"auth-required":"auth-unresolved"),!1;vt(null);try{const F=await fetch(`/api/taskforce/sync/workspace/ai-profiles?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!F.ok)return U(`HTTP ${F.status}`),wt(new Date().toISOString()),!1;const O=await F.json();if(!Array.isArray(O?.aiProfiles))return!1;const zt=Array.isArray(O?.aiProfiles)?O.aiProfiles:[];Ke(zt.length);const Mt=Array.isArray(O?.aiProfiles)?O.aiProfiles.map(ht=>XP(ht)).filter(ht=>ht.id.length>0&&ht.workspaceId.length>0):[];U(null),wt(new Date().toISOString());const Rt=typeof O?.fingerprint=="string"?O.fingerprint:mP(Mt);return Rt===Ge.current||(Ge.current=Rt,Bt.current=Mt,He(Mt),It(Rt)),!0}catch(F){return U(String(F?.message||F||"unknown-error")),wt(new Date().toISOString()),Ds("ai_profiles_snapshot_refresh_failed",{workspaceId:t,error:String(F?.message||F||"")}),!1}finally{Rn("aiProfiles")}},[n,t,r,s,i,Rn]),Ea=o.useCallback(async()=>{if(n!=="local"||!Yc(t)||r&&(!s||!i))return!1;const F=t,O=xr.current,zt=ga.current+=1,Mt=()=>F!==so.current||O!==xr.current||zt!==ga.current;try{const Rt=await fetch(`/api/taskforce/sync/workspace/assets?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(Mt()||!Rt.ok)return!1;const ht=await Rt.json();if(Mt()||!Array.isArray(ht?.assets))return!1;const rn=Array.isArray(ht?.assets)?ht.assets.map(Dt=>({path:String(Dt?.path||"").trim(),updatedAt:String(Dt?.updatedAt||"").trim(),contentBase64:typeof Dt?.contentBase64=="string"?Dt.contentBase64:"",assetId:typeof Dt?.assetId=="string"&&Dt.assetId.trim().length>0?Dt.assetId.trim():void 0,kind:Dt?.kind==="image"?"image":"file",mimeType:typeof Dt?.mimeType=="string"&&Dt.mimeType.trim().length>0?Dt.mimeType.trim():"application/octet-stream",referenceNumber:Number.isFinite(Number(Dt?.referenceNumber))?Math.max(1,Math.floor(Number(Dt.referenceNumber))):null,taskId:typeof Dt?.taskId=="string"&&Dt.taskId.trim().length>0?Dt.taskId.trim():null,logicalName:typeof Dt?.logicalName=="string"&&Dt.logicalName.trim().length>0?Dt.logicalName.trim():null,caption:typeof Dt?.caption=="string"&&Dt.caption.trim().length>0?Dt.caption.trim():null,originalFilename:typeof Dt?.originalFilename=="string"&&Dt.originalFilename.trim().length>0?Dt.originalFilename.trim():null,linkRole:Dt?.linkRole==="reference"?"reference":Dt?.linkRole==="image"?"image":"attachment"})).filter(Dt=>Dt.path.length>0&&Dt.contentBase64.length>0):[],tr=new Set(Array.isArray(ht?.knownPaths)?ht.knownPaths.map(Dt=>String(Dt||"").trim()).filter(Dt=>Dt.length>0):rn.map(Dt=>Dt.path)),Pr=typeof ht?.fingerprint=="string"?ht.fingerprint:JSON.stringify(rn.map(Dt=>`${Dt.path}:${Dt.updatedAt}:${Dt.contentBase64.length}`).sort());return Mt()?!1:Pr===Gr.current?(kn.current=!0,!0):(Gr.current=Pr,fr.current=rn,Ar.current=tr,er(rn),Ot(Pr),kn.current=!0,!0)}catch(Rt){return Ds("assets_snapshot_refresh_failed",{workspaceId:t,error:String(Rt?.message||Rt||"")}),!1}finally{Rn("assets")}},[n,t,r,s,i,Rn]),hc=o.useCallback(async()=>{if(n!=="local"||!Yc(t)||r&&(!s||!i))return!1;try{const F=await fetch(`/api/taskforce/planning/bootstrap?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!F.ok)return!1;const O=await F.json();if(!Array.isArray(O?.initiatives)||!Array.isArray(O?.workstreams))return!1;const zt=Array.isArray(O?.initiatives)?O.initiatives.filter(Rt=>!!(Rt&&typeof Rt=="object"&&typeof Rt.id=="string")):[],Mt=Array.isArray(O?.workstreams)?O.workstreams.filter(Rt=>!!(Rt&&typeof Rt=="object"&&typeof Rt.id=="string")):[];return Me.current=zt,et.current=Mt,!0}catch(F){return Ds("planning_snapshot_refresh_failed",{workspaceId:t,error:String(F?.message||F||"")}),!1}},[n,t,r,s,i]),gs=o.useCallback(async()=>{if(n!=="local"||!Yc(t)||r&&(!s||!i))return!1;try{const F=await fetch(`/api/taskforce/sync/workspace/document-reviews?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!F.ok)return!1;const O=await F.json();if(!Array.isArray(O?.sessions))return!1;const zt=Array.isArray(O?.sessions)?O.sessions.map(ht=>({id:String(ht?.id||"").trim(),assetId:String(ht?.assetId||"").trim(),documentId:typeof ht?.documentId=="string"&&ht.documentId.trim().length>0?ht.documentId.trim():null,documentVersion:Number.isFinite(Number(ht?.documentVersion))?Math.max(1,Math.floor(Number(ht.documentVersion))):null,title:typeof ht?.title=="string"&&ht.title.trim().length>0?ht.title.trim():null,status:ht?.status==="resolved"?"resolved":"open",comments:Array.isArray(ht?.comments)?ht.comments:[],createdByActorId:typeof ht?.createdByActorId=="string"&&ht.createdByActorId.trim().length>0?ht.createdByActorId.trim():null,updatedByActorId:typeof ht?.updatedByActorId=="string"&&ht.updatedByActorId.trim().length>0?ht.updatedByActorId.trim():null,createdAt:String(ht?.createdAt||"").trim(),updatedAt:String(ht?.updatedAt||ht?.createdAt||"").trim(),deletedAt:typeof ht?.deletedAt=="string"&&ht.deletedAt.trim().length>0?ht.deletedAt.trim():null})).filter(ht=>ht.id.length>0&&ht.assetId.length>0):[],Mt=Array.isArray(O?.comments)?O.comments.map(ht=>({id:String(ht?.id||"").trim(),sessionId:String(ht?.sessionId||"").trim(),body:typeof ht?.body=="string"?ht.body:"",anchor:ht?.anchor??null,order:Number.isFinite(Number(ht?.order))?Math.max(0,Math.floor(Number(ht.order))):0,authorActorId:typeof ht?.authorActorId=="string"&&ht.authorActorId.trim().length>0?ht.authorActorId.trim():null,updatedByActorId:typeof ht?.updatedByActorId=="string"&&ht.updatedByActorId.trim().length>0?ht.updatedByActorId.trim():null,deletedByActorId:typeof ht?.deletedByActorId=="string"&&ht.deletedByActorId.trim().length>0?ht.deletedByActorId.trim():null,createdAt:String(ht?.createdAt||"").trim(),updatedAt:String(ht?.updatedAt||ht?.createdAt||"").trim(),deletedAt:typeof ht?.deletedAt=="string"&&ht.deletedAt.trim().length>0?ht.deletedAt.trim():null})).filter(ht=>ht.id.length>0&&ht.sessionId.length>0):nj(zt),Rt=typeof O?.fingerprint=="string"?O.fingerprint:JSON.stringify([...zt.map(ht=>`${ht.id}:${ht.updatedAt}:${ht.status}:${ht.deletedAt||""}:${ht.comments.length}`).sort(),...Mt.map(ht=>`${ht.id}:${ht.sessionId}:${ht.updatedAt}:${ht.deletedAt||""}`).sort()]);return Rt===yr.current||(yr.current=Rt,pt.current=zt,ut.current=Mt,Wr(zt),nt(Rt)),!0}catch(F){return Ds("document_review_sessions_snapshot_refresh_failed",{workspaceId:t,error:String(F?.message||F||"")}),!1}finally{Rn("documentReviewSessions")}},[n,t,r,s,i,Rn]),wi=o.useCallback(async()=>{if(n!=="local"||!Yc(t)||r&&(!s||!i))return!1;try{const F=await fetch(`/api/taskforce/sync/workspace/annotated-attachments?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!F.ok)return!1;const O=await F.json();if(!Array.isArray(O?.sessions))return!1;const zt=Array.isArray(O?.sessions)?O.sessions.map(Rt=>({id:String(Rt?.id||"").trim(),workspaceId:String(Rt?.workspaceId||"").trim(),taskId:String(Rt?.taskId||"").trim(),baseImageAssetId:String(Rt?.baseImageAssetId||"").trim(),title:typeof Rt?.title=="string"&&Rt.title.trim().length>0?Rt.title.trim():null,globalInstruction:typeof Rt?.globalInstruction=="string"&&Rt.globalInstruction.trim().length>0?Rt.globalInstruction.trim():null,annotations:Array.isArray(Rt?.annotations)?Rt.annotations:[],createdByActorId:typeof Rt?.createdByActorId=="string"&&Rt.createdByActorId.trim().length>0?Rt.createdByActorId.trim():null,updatedByActorId:typeof Rt?.updatedByActorId=="string"&&Rt.updatedByActorId.trim().length>0?Rt.updatedByActorId.trim():null,createdAt:String(Rt?.createdAt||"").trim(),updatedAt:String(Rt?.updatedAt||Rt?.createdAt||"").trim(),deletedAt:typeof Rt?.deletedAt=="string"&&Rt.deletedAt.trim().length>0?Rt.deletedAt.trim():null})).filter(Rt=>Rt.id.length>0&&Rt.workspaceId.length>0&&Rt.taskId.length>0&&Rt.baseImageAssetId.length>0):[],Mt=typeof O?.fingerprint=="string"?O.fingerprint:JSON.stringify(zt.map(Rt=>`${Rt.id}:${Rt.updatedAt}:${Rt.taskId}:${Rt.baseImageAssetId}:${Rt.annotations.length}:${Rt.deletedAt||""}`).sort());return Mt===Yt.current||(Yt.current=Mt,St.current=zt,Xt(zt),Qt(Mt)),!0}catch(F){return Ds("annotated_attachment_sessions_snapshot_refresh_failed",{workspaceId:t,error:String(F?.message||F||"")}),!1}finally{Rn("annotatedAttachmentSessions")}},[n,t,r,s,i,Rn]),qo=o.useCallback(async()=>{if(n!=="local"||!Yc(t)||r&&(!s||!i))return!1;try{const F=await fetch(`/api/taskforce/sync/workspace/taskforce-agents?workspaceId=${encodeURIComponent(t)}`,{method:"GET",credentials:"include"});if(!F.ok)return!1;const O=await F.json();if(!Array.isArray(O?.agents)||!Array.isArray(O?.roles)||!Array.isArray(O?.skills)||!Array.isArray(O?.conversations))return!1;const zt=Array.isArray(O?.agents)?O.agents.map(tr=>QP(tr)).filter(tr=>tr.id.length>0&&tr.workspaceId.length>0):[],Mt=Array.isArray(O?.conversations)?O.conversations.map(tr=>ej(tr)).filter(tr=>tr.id.length>0&&tr.workspaceId.length>0&&tr.agentId.length>0):[],Rt=Array.isArray(O?.roles)?O.roles.map(tr=>wP(tr,t)).filter(tr=>!!tr):[],ht=O.skills.map(tr=>bP(tr,t)).filter(tr=>!!(tr&&tr.id.length>0&&tr.workspaceId.length>0)),rn=typeof O?.fingerprint=="string"?O.fingerprint:JSON.stringify([...zt.map(tr=>`${tr.id}:${tr.updatedAt}:${tr.deletedAt||""}:${tr.name}:${tr.modelTier}`).sort(),...Rt.map(tr=>`${tr.id}:${tr.updatedAt}:${tr.deletedAt||""}:${tr.currentRevision}:${tr.currentContentHash}`).sort(),...ht.map(tr=>`${tr.id}:${tr.updatedAt}:${tr.revision}:${tr.contentHash}:${tr.lifecycleStatus}`).sort(),...Mt.map(tr=>`${tr.id}:${tr.agentId}:${tr.updatedAt}:${tr.deletedAt||""}:${tr.messages.length}`).sort()]);return rn===Zt.current||(Zt.current=rn,ot.current=zt,or.current=Rt,Nr.current=ht,ur.current=Mt,Ft(zt),sr(rn)),!0}catch(F){return Ds("taskforce_agents_snapshot_refresh_failed",{workspaceId:t,error:String(F?.message||F||"")}),!1}finally{Rn("taskforceAgents")}},[n,t,r,s,i,Rn]),Co=o.useCallback(()=>{ln.current=new Set([...re.current,...Ee.current].map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),_a.current=new Map([...re.current,...Ee.current].map(O=>[String(O?.id||"").trim(),ii.getWatermark(O)]).filter(([O])=>O.length>0)),aa.current=new Map([...re.current.map(O=>[String(O?.id||"").trim(),ii.getChangeKey({...O,isArchived:!1})]),...Ee.current.map(O=>[String(O?.id||"").trim(),ii.getChangeKey({...O,isArchived:!0})])].filter(([O])=>O.length>0)),Ta.current=new Map(Pe.current.map(O=>[String(O?.id||"").trim(),Dw(O)]).filter(([O])=>O.length>0)),Ka.current=vI({taxonomyState:Ue.current,taxonomies:yt.current}),ls.current=new Set(Me.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),ds.current=new Map(Me.current.map(O=>[String(O?.id||"").trim(),String(O?.updatedAt||O?.createdAt||"").trim()]).filter(([O])=>O.length>0)),La.current=new Set(et.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),qa.current=new Map(et.current.map(O=>[String(O?.id||"").trim(),String(O?.updatedAt||O?.createdAt||"").trim()]).filter(([O])=>O.length>0)),xa.current=new Map([...Me.current.map(O=>[`initiative:${String(O?.id||"").trim()}`,String(O?.identityUpdatedAt||"").trim()]),...et.current.map(O=>[`workstream:${String(O?.id||"").trim()}`,String(O?.identityUpdatedAt||"").trim()])].filter(([O,zt])=>!O.endsWith(":")&&Number.isFinite(Date.parse(zt)))),Ra.current=new Set(Bt.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),Fn.current=new Map(Bt.current.map(O=>[String(O?.id||"").trim(),Vm.getWatermark(O)]).filter(([O])=>O.length>0)),us.current=new Map(Bt.current.map(O=>[String(O?.id||"").trim(),Vm.getChangeKey(O)]).filter(([O])=>O.length>0)),dt.current=new Set(Le.current.map(O=>String(O?.path||"").trim()).filter(O=>O.length>0)),vr.current=new Map(Le.current.map(O=>[String(O?.path||"").trim(),String(O?.updatedAt||"").trim()]).filter(([O])=>O.length>0)),Zr.current=new Set(fr.current.map(O=>String(O?.path||"").trim()).filter(O=>O.length>0)),Cn.current=new Map(fr.current.map(O=>[String(O?.path||"").trim(),String(O?.updatedAt||"").trim()]).filter(([O])=>O.length>0)),Pn.current=new Set(pt.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),ro.current=new Map(pt.current.map(O=>[String(O?.id||"").trim(),String(O?.updatedAt||O?.createdAt||"").trim()]).filter(([O])=>O.length>0)),Is.current=new Set(ut.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),$s.current=new Map(ut.current.map(O=>[String(O?.id||"").trim(),String(O?.updatedAt||O?.createdAt||"").trim()]).filter(([O])=>O.length>0)),Pa.current=new Set(St.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),ka.current=new Map(St.current.map(O=>[String(O?.id||"").trim(),String(O?.updatedAt||O?.createdAt||"").trim()]).filter(([O])=>O.length>0)),jn.current=new Set([...ot.current.map(O=>String(O?.id||"").trim()),...or.current.map(O=>`agent-role:${String(O?.id||"").trim()}`)].filter(O=>O.length>0)),Er.current=new Map([...ot.current.map(O=>[String(O?.id||"").trim(),String(O?.deletedAt||O?.updatedAt||O?.createdAt||"").trim()]),...or.current.map(O=>[`agent-role:${String(O?.id||"").trim()}`,String(O?.deletedAt||O?.updatedAt||O?.createdAt||"").trim()])].filter(([O])=>O.length>0)),Oa.current=new Set(Nr.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),Ya.current=new Map(Nr.current.map(O=>[String(O?.id||"").trim(),String(O?.updatedAt||O?.createdAt||"").trim()]).filter(([O])=>O.length>0)),sa.current=new Set(ur.current.map(O=>String(O?.id||"").trim()).filter(O=>O.length>0)),Un.current=new Map(ur.current.map(O=>[String(O?.id||"").trim(),String(O?.deletedAt||O?.updatedAt||O?.createdAt||"").trim()]).filter(([O])=>O.length>0)),zn.current=new Map(Tv(re.current,Ee.current,Me.current,et.current).map(O=>[String(O?.id||"").trim(),String(O?.createdAt||"").trim()]).filter(([O])=>O.length>0));const F=va();Vt.current=F?null:"storage-write-failed"},[va]),Io=o.useCallback(async()=>{const[F,O,zt]=await Promise.all([fetch("/api/taskforce/tasks",{method:"GET",credentials:"include"}),fetch("/api/taskforce/archive",{method:"GET",credentials:"include"}),fetch("/api/taskforce/task-relationships",{method:"GET",credentials:"include"})]);if(!F.ok||!O.ok||!zt.ok)throw new Error("Required task collection refresh failed.");const[Mt,Rt,ht]=await Promise.all([F.json(),O.json(),zt.json()]);if(!Array.isArray(Mt?.tasks)||!Array.isArray(Rt?.archived)||!Array.isArray(ht?.relationships))throw new Error("Required task collection refresh returned an invalid response.");const rn=Mt.tasks.map(Pr=>Qs(Pr)),tr=Rt.archived.map(Pr=>({...Qs(Pr),isArchived:!0}));re.current=rn,Ee.current=tr,pe(ht.relationships),z(rn),M(tr),await ye().catch(()=>{Ds("refresh_planning_entities_failed",{workspaceId:t})})},[t,ye,M,z,pe]),{handleSyncAuthFailure:gc,ensureWorkspaceSyncReady:Yo}=o.useMemo(()=>aj({currentWorkspaceId:t,workspaceSyncPhase:Oe,clearWorkspaceRetry:Yn,setWorkspaceSyncBusy:ke,setUserGlobalSyncStatus:ie,setUserGlobalSyncError:F=>W(F),setWorkspaceLastErrorMessage:F=>G(F),setWorkspaceLastErrorAt:F=>K(F),reportSyncEvent:Ko,setAuthBlocked:Z,setIsAuthenticated:J,checkAuthSession:ee,ensureCloudWorkspaceReadyForSync:Fa,scheduleWorkspaceSyncRetry:$a,persistWorkspaceSyncPatchSafely:Wa}),[t,Oe,Yn,Ko,Z,J,ee,Fa,$a,Wa]),ys=o.useMemo(()=>{const F=Ja;return wa?eE({cloudAuthConfigured:r,runtimeMode:n,initiativeFeedActivationEnabled:k,combinedFeedActivationEnabled:v,combinedFeedCoverage:A,workspaceCloudSyncEnabled:ae,currentWorkspaceId:t,workspaceSyncPhase:Oe,isAuthenticated:i,checkAuthSession:ee,resolveCloudAuthUrl:d,ensureCloudWorkspaceReadyForSync:Fa,ensureWorkspaceSyncReady:Yo,handleSyncAuthFailure:gc,clearWorkspaceRetry:Yn,clearWorkspaceIssue:ao,isWorkspaceRetryPending:mr,isDurableRecoveryBlockingOrdinaryPush:hs,isExecutionAuthorized:()=>LS({current:Us.current??{mode:"blocked",remoteServices:null},captured:F,browserSchedulingAllowed:Pt(),onDenied:()=>{const O=_t.current;!O.serverCommandMode||en.current===O.authorityEpoch||(en.current=O.authorityEpoch,Ko(t,{eventType:"handshake",status:"error",statusCode:409,errorMessage:"Browser cloud execution was blocked by persisted server ownership.",details:{errorCode:"SYNC_BROWSER_EXECUTION_FENCED_BY_SERVER_OWNER",authorityEpoch:O.authorityEpoch,capturedTransportMode:F.mode}}))}}),scheduleWorkspaceSyncRetry:$a,persistWorkspaceSyncPatchSafely:Wa,persistWorkspaceSyncPatchBestEffort:Ba,persistWorkspaceSyncWatermarksSnapshotBestEffort:va,refreshWorkspaceAiProfilePushBaselineFromPersistence:gi,reportSyncEvent:Ko,acquireWorkspaceSyncLease:Zn,releaseWorkspaceSyncLease:Ws,recordWorkspaceSyncCompletion:pi,reportWorkspaceWindowContention:Ts,refreshWorkspaceSyncMarkdownDocumentsSnapshot:ma,refreshWorkspaceSyncAiProfilesSnapshot:zs,refreshWorkspaceSyncAssetsSnapshot:Ea,refreshWorkspaceSyncTaxonomySnapshot:Hi,refreshWorkspaceSyncPlanningEntitiesSnapshot:hc,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:gs,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:wi,refreshWorkspaceSyncTaskforceAgentsSnapshot:qo,refreshLocalWorkspaceTaskCollections:Io,buildWorkspaceSyncPayload:ba,buildWorkspaceSyncSignature:Sa,seedWorkspaceSnapshotPushBaseline:Co,shouldSuppressAttachBootstrapPush:un,recordSuppressedEventIds:(...O)=>_o.current.recordSuppressedEventIds(...O),runtime:ps,localServices:Ao,remoteServices:wa,setWorkspaceSyncBusy:ke,setUserGlobalSyncStatus:ie,setUserGlobalSyncError:W,setWorkspaceLastErrorMessage:G,setWorkspaceLastErrorAt:K,setWorkspaceLastPullAt:B,setWorkspaceLastPushAt:be,setWorkspaceSyncPendingChanges:Ve,setTasks:z,setArchivedTasks:M,scheduleTask:(O,zt)=>{const Mt=window.setTimeout(O,zt);return{cancel:()=>window.clearTimeout(Mt)}},logDebug:Ds,notifyAiProfilesMutated:CI,notifyAgentsMutated:II,notifyAgentSkillsMutated:_I}):null},[r,n,k,v,A,ae,t,Oe,ge,i,ee,d,Fa,Yo,gc,Yn,ao,hs,$a,Wa,Ba,va,gi,Ko,Zn,Ws,pi,Ts,ma,zs,Ea,Hi,hc,gs,wi,qo,Io,ba,Sa,Co,un,Ja,wa,z,M]);o.useEffect(()=>{ys?.resumeDeferredWork()},[ue.authorityEpoch,ys]),o.useEffect(()=>()=>ys?.dispose(),[ys]);const pa=o.useCallback((F,O)=>ys?ys.pushWorkspaceChangesToCloud(F,O):Promise.resolve(!1),[ys]),oo=o.useCallback(F=>ys?ys.pullWorkspaceChangesFromCloud(F):Promise.resolve(!1),[ys]),fn=o.useRef(oo);fn.current=oo;const _o=o.useRef({handleRealtimeSignal:()=>{},recordSuppressedEventIds:()=>{},clearRealtimePullDebounce:()=>{}}),Qa=o.useMemo(()=>yj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,workspaceSyncPhase:Oe,workspacePullInFlightRef:xt,realtimePullDebounceRef:$t,realtimeSuppressedEventIdsRef:Ut,clearWorkspaceRetry:Yn,isWorkspaceRetryPending:mr,isExecutionAuthorized:Pt,isServerOwned:()=>IE(_t.current),signalServerWake:F=>Wt.signalWake("realtime",F),pullWorkspaceChangesFromCloud:oo}),[r,n,ae,Oe,Yn,mr,Pt,Wt.signalWake,oo]);_o.current=Qa;const Qn=m("/taskforce-ws"),yc=String(l||"").trim(),Nl=!!(f&&(Pt()||ue.serverCommandMode)&&r&&n==="local"&&ae&&s&&i&&yc&&yc!=="anonymous"&&Qn),tl=AI({enabled:Nl,workspaceId:t,websocketUrl:Qn,onSignal:Qa.handleRealtimeSignal,onTelemetry:gt,userId:yc||void 0});o.useEffect(()=>{u(tl.connectionState)},[tl.connectionState]),o.useEffect(()=>()=>Qa.clearRealtimePullDebounce(),[Qa]),o.useEffect(()=>{ue.browserSchedulingAllowed||(Yn(),_o.current.clearRealtimePullDebounce())},[ue.authorityEpoch,ue.browserSchedulingAllowed,Yn]);const oa=o.useCallback(async F=>ue.serverCommandMode?(await Wt.issueCommand(F.enabled?"EnableSync":"DisableSync"),{success:!0}):Pt()?to(F,{cloudAuthConfigured:r,isAuthenticated:i,ensureCloudWorkspaceReadyForSync:Fa}):{success:!1,error:"Workspace sync ownership is changing. Wait for the coordinator to become ready."},[to,r,i,Fa,ue.serverCommandMode,Pt,Wt]),Dl=o.useCallback(async()=>{await ja({preferCloudOnFirstSync:!1})},[ja]),bi=o.useMemo(()=>wj({currentWorkspaceId:t,workspaceCloudSyncEnabled:ae,workspaceSyncPhase:Oe,workspaceLastPullAt:V,runtime:ps,localServices:Ao,acquireWorkspaceSyncLease:Zn,releaseWorkspaceSyncLease:Ws,forceClearWorkspaceSyncLease:na,clearWorkspaceRetry:Yn,clearWorkspaceIssue:ao,reportWorkspaceWindowContention:Ts,reportSyncEvent:Ko,persistWorkspaceSyncPatch:$n,persistWorkspaceSyncWatermarksSnapshotBestEffort:va,buildWorkspaceSyncSignature:Sa,pullWorkspaceChangesFromCloud:oo,pushWorkspaceChangesToCloud:pa,cloudAuthConfigured:r,runtimeMode:n,isAuthenticated:i,checkAuthSession:ee,isExecutionAuthorized:Pt,coordinatorGeneration:Wt.snapshot?.state?.coordinatorGeneration??null}),[t,ge,ae,Oe,V,ps,Ao,Zn,Ws,na,Yn,ao,Ts,Ko,$n,va,Sa,oo,pa,r,n,i,ee,Pt,Wt.snapshot?.state?.coordinatorGeneration]),To=o.useCallback(async()=>{if(ue.serverCommandMode){const F=Wt.snapshot||await Wt.refresh();return!F||F.credential.status!=="ready"?!1:(await Wt.issueCommand("Retry"),!0)}return Pt()?bi.retryWorkspaceCloudSync():!1},[ue.serverCommandMode,Pt,Wt,bi]),kc=o.useCallback(async()=>{if(ue.serverCommandMode){Wt.issueCommand("Repair").catch(()=>{});return}Pt()&&await bi.resetWorkspaceSyncCursorAndPull()},[ue.serverCommandMode,Pt,Wt,bi]),Si=o.useCallback(()=>{const F=Ev({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,currentWorkspaceId:t,workspaceSyncPhase:Oe,isAuthenticated:i,repairModeActive:Ct.current===!0,repairModeBypass:!1,pushInFlight:dn.current,pullInFlight:xt.current}),O=mr(),zt=Nv({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,currentWorkspaceId:t,workspaceSyncPhase:Oe,isAuthenticated:i,repairModeActive:Ct.current===!0,repairModeBypass:!1,retryPending:O,pushInFlight:dn.current,pullInFlight:xt.current}),Mt=Dv({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,currentWorkspaceId:t,isAuthenticated:i});return{workspaceId:t,enabled:ae,phase:Oe,status:zi,summary:Fs,lastSuccessfulSyncAt:Ui,lastPullAt:V,lastPushAt:D,lastErrorAt:Se,pendingChanges:ve+(Ne?.activeDepth||0),lastErrorMessage:Y,recommendedAction:ar,pushBlockedReason:F.allowed?null:F.reason,pullBlockedReason:zt.allowed?null:zt.reason,retryBlockedReason:Mt.allowed?null:Mt.reason,repairActive:Ct.current===!0,pushInFlight:dn.current===!0,pullInFlight:xt.current===!0,retryPending:O,documentSnapshotCount:Re.length,aiProfileSnapshotCount:kt.length,aiProfileSnapshotRawCount:he,aiProfileSnapshotLastFetchAt:Xe,aiProfileSnapshotLastFetchError:at,aiProfileSnapshotLastSkipReason:Et,assetSnapshotCount:dr.length,documentReviewSessionSnapshotCount:Lr.length,documentReviewSessionSnapshotFingerprint:De,annotatedAttachmentSessionSnapshotCount:Tt.length,annotatedAttachmentSessionSnapshotFingerprint:Nt,taskforceAgentSnapshotCount:Kt.length,taskforceAgentSnapshotFingerprint:ir,lastPushedAiProfileCount:Ra.current.size,lastPushedAiProfileWatermarkCount:Fn.current.size,lastPushedTaskforceAgentCount:jn.current.size,lastPushedTaskforceAgentWatermarkCount:Er.current.size,lastPushedAgentConversationCount:sa.current.size,lastPushedAgentConversationWatermarkCount:Un.current.size,forceFullAiProfilePushQueued:Sr.current===!0,durableOutbox:Ne}},[r,t,n,ae,Oe,i,zi,Fs,Ui,V,D,Se,ve,Ne,Y,ar,Re.length,kt.length,he,Xe,at,Et,dr.length,Lr.length,De,Tt.length,Nt,Kt.length,ir,mr]);o.useEffect(()=>{ua.current=To},[To]);const Zo=o.useCallback(()=>{ma(),Ea()},[ma,Ea]);o.useEffect(()=>{if(!r||n!=="local"||!ae||!s||!i)return;ma(),zs(),Ea(),gs(),wi(),qo();const F=vn=>{const Vn=vn.detail;(String(Vn?.workspaceId||"").trim()||"default")===t&&Zo()},O=vn=>{const Vn=vn.detail;(String(Vn?.workspaceId||"").trim()||"default")===t&&(zs(),Ea())},zt=vn=>{const Vn=vn.detail;(String(Vn?.workspaceId||"").trim()||"default")===t&&String(Vn?.reason||"").trim()!=="sync-apply"&&qo()},Mt=vn=>{const Vn=vn.detail;(String(Vn?.workspaceId||"").trim()||"default")===t&&String(Vn?.reason||"").trim()!=="sync-apply"&&qo()};window.addEventListener(xv,F),window.addEventListener(Rv,O),window.addEventListener(Pv,zt),window.addEventListener(jv,Mt);const Rt=window.setInterval(()=>{ma()},yn),ht=window.setInterval(()=>{zs()},yn),rn=window.setInterval(()=>{Ea()},yn),tr=window.setInterval(()=>{gs()},yn),Pr=window.setInterval(()=>{wi()},yn),Dt=window.setInterval(()=>{qo()},yn);return()=>{window.removeEventListener(xv,F),window.removeEventListener(Rv,O),window.removeEventListener(Pv,zt),window.removeEventListener(jv,Mt),window.clearInterval(Rt),window.clearInterval(ht),window.clearInterval(rn),window.clearInterval(tr),window.clearInterval(Pr),window.clearInterval(Dt)}},[r,n,ae,s,i,t,Zo,ma,zs,Ea,gs,wi,qo,yn]),o.useEffect(()=>{!r||n!=="local"||!ae||!s||!i||vi&&Zo()},[r,n,ae,s,i,vi,Zo]),o.useEffect(()=>{if(!Pt()||!oj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,authSessionResolved:s,workspaceSyncPhase:Oe,workspaceSyncReferenceSnapshotsReady:gn}))return;const F=Sa();if(un(F)||!F||F===Rr.current||da.current===F)return;da.current="";const O=ba();if(Ve(O.changes.length),dn.current||xt.current){Yr.current=F;return}const zt=window.setTimeout(()=>{if(Pt()){if(dn.current||xt.current){Yr.current=Sa();return}pa(F)}},1500);return()=>window.clearTimeout(zt)},[r,n,ae,s,Oe,gn,Sa,un,ba,pc,rt,X,cr,De,Nt,ir,pa,dn,xt,ue.authorityEpoch,Pt]),o.useEffect(()=>{if(!Pt()||!ij({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,authSessionResolved:s,workspaceSyncPhase:Oe,workspaceSyncReferenceSnapshotsReady:gn}))return;const F=window.setInterval(()=>{if(!Pt()||dn.current||xt.current||mr())return;const O=Sa();if(!O||O===Rr.current||da.current===O)return;da.current="";const zt=ba();Ve(zt.changes.length),zt.changes.length!==0&&pa(O)},Xn);return()=>window.clearInterval(F)},[r,n,ae,s,Oe,gn,Sa,ba,pa,mr,Xn,ue.authorityEpoch,Pt]),o.useEffect(()=>{r&&n==="local"&&ae||(Yn(),ke(!1))},[r,n,ae,Yn]),o.useEffect(()=>{if(!Pt())return;const F=cj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,authSessionResolved:s,workspaceSyncPhase:Oe,lastPullAt:V,retryPending:mr()});if(!F.shouldStart)return;F.shouldKickOffImmediately&&fn.current();const O=window.setInterval(()=>{Pt()&&(Jn(t,"pull",fa)||fn.current())},fa);return()=>{window.clearInterval(O)}},[r,n,ae,s,Oe,V,t,mr,Jn,fa,ue.authorityEpoch,Pt]),o.useEffect(()=>{if(!Pt()||!lj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,authSessionResolved:s,isAuthenticated:i,workspaceSyncPhase:Oe}))return;const F=window.setInterval(()=>{Pt()&&(ki.current||(ki.current=!0,fn.current({forceCursorNull:!0}).finally(()=>{ki.current=!1})))},ZP);return()=>window.clearInterval(F)},[r,n,ae,s,i,Oe,ue.authorityEpoch,Pt]),o.useEffect(()=>{n!=="local"||!i||!l||l==="anonymous"||ja({preferCloudOnFirstSync:!0})},[n,i,l,ja]),o.useEffect(()=>{if(n!=="local"||!i||!l||l==="anonymous"||!Tn.current.has(l)||$r.current)return;const F=ms(),O=JSON.stringify(F);if(!an.current){an.current=O;return}if(O===an.current)return;an.current=O,En(l,new Date().toISOString());const zt=window.setTimeout(()=>{ja({preferCloudOnFirstSync:!1})},350);return()=>window.clearTimeout(zt)},[n,i,l,ms,En,ja]),o.useEffect(()=>{Pt()&&dj({cloudAuthConfigured:r,runtimeMode:n,workspaceCloudSyncEnabled:ae,authSessionResolved:s,isAuthenticated:i,workspaceSyncPhase:Oe,alreadyRan:_s.current})&&(_s.current=!0,fetch("/api/taskforce/sync/workspace/repair-startup",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:t})}).then(async F=>{if(!F.ok)return;const O=await F.json().catch(()=>({}));O?.applied>0&&(Ds("startup_repair_applied",{workspaceId:t,applied:O.applied,skipped:O.skipped,failed:O.failed}),ma(),zs(),Ea(),gs())}).catch(()=>{}))},[r,n,ae,s,i,Oe,t,ma,zs,Ea,gs,ue.authorityEpoch,Pt]);const xo=Ln&&Wt.phase==="ready"&&Wt.snapshot?.state.activeWorkspaceId===t?{coordinatorGeneration:Wt.snapshot.state.coordinatorGeneration,localDataVersion:Wt.snapshot.state.localDataVersion}:null,vc=Ln?{phase:Wt.phase,snapshot:Wt.snapshot,errorMessage:Wt.error?.message||null,activeCommandType:Wt.activeCommandType,activePriorityCommandType:Wt.activePriorityCommandType}:null,An=o.useCallback(async F=>{if(n!=="local"||!Ln)return!1;if(Wt.phase!=="ready"||!Wt.snapshot)throw new Va("The local sync coordinator is not ready to switch workspaces.","SYNC_COORDINATOR_UNAVAILABLE",409);return await Wt.switchWorkspace(F),!0},[Wt,Ln,n]),Jo=o.useCallback(async F=>{if(n!=="local"||!Ln)return!1;if(Wt.phase!=="ready"||!Wt.snapshot)throw new Va("The local sync coordinator is not ready to transfer ownership.","SYNC_COORDINATOR_UNAVAILABLE",409);return await Wt.transferOwnership(F),F==="server"&&(await Wt.issueCommand(ae?"EnableSync":"DisableSync"),ae&&Wt.issueCommand("Sync").catch(()=>{})),!0},[Wt,Ln,n,ae]),Hs=o.useCallback(async()=>n!=="local"||!Ln?!1:Wt.clearCredential(),[Wt,Ln,n]);return{userGlobalSyncStatus:oe,setUserGlobalSyncStatus:ie,userGlobalSyncError:me,setUserGlobalSyncError:W,workspaceLastPullAt:V,workspaceLastPushAt:D,workspaceLastErrorAt:Se,workspaceLastErrorMessage:Y,workspaceLastSuccessfulSyncAt:Ui,workspaceCloudSyncEnabled:ae,workspaceSyncPhase:Oe,workspaceSyncSetupIntent:st,workspaceSyncStatus:zi,workspaceSyncSummary:Fs,workspaceSyncRecommendedAction:ar,workspaceSyncBusy:xe,workspaceSyncPendingChanges:ve+(Ne?.activeDepth||0),workspaceTaskRelationships:Ce,localCoordinatorDataVersion:xo,localCoordinatorStatus:vc,switchLocalCoordinatorWorkspace:An,transferLocalCoordinatorOwnership:Jo,clearLocalCoordinatorCredential:Hs,syncInFlightRef:Sn,workspaceRetryAt:rr,isWorkspaceRetryPending:mr,workspacePushInFlightRef:dn,workspacePullInFlightRef:xt,workspaceLastPushedSignatureRef:Rr,workspacePendingSignatureRef:Yr,workspaceLastPushedTaskIdsRef:ln,workspaceDeletedTaskIdsRef:qn,workspaceDeletedTaskWatermarksRef:Kr,workspacePullCursorRef:jr,clearWorkspaceRetry:Yn,persistWorkspaceSyncPatch:$n,loadWorkspaceSyncState:Bs,applyWorkspaceSyncStateSnapshot:hi,syncUserGlobalSettings:ja,buildWorkspaceSyncSignature:Sa,pushWorkspaceChangesToCloud:pa,pullWorkspaceChangesFromCloud:oo,saveWorkspaceCloudSyncSettings:oa,retryUserGlobalSettingsSync:Dl,retryWorkspaceCloudSync:To,resetWorkspaceSyncCursorAndPull:kc,getWorkspaceSyncDiagnostics:Si}}function OE(e,t){return typeof t=="number"&&Number.isFinite(t)&&t>0?t:e==="error"?12e3:2600}function BE(){const[e,t]=o.useState(null),r=o.useRef(null),n=o.useCallback(()=>{r.current!==null&&(window.clearTimeout(r.current),r.current=null),t(null)},[]),s=o.useCallback((i,l="info",c,d)=>{if(!i||(r.current!==null&&(window.clearTimeout(r.current),r.current=null),t({message:i,tone:l,ttlMs:c,actionLabel:d?.label,onAction:d?.onAction,actionPrimary:d?.primary,secondaryActionLabel:d?.secondaryLabel,onSecondaryAction:d?.onSecondaryAction,dismissible:d?.dismissible,ownerKey:d?.ownerKey}),d))return;const m=OE(l,c);r.current=window.setTimeout(()=>{r.current=null,t(null)},m)},[]);return o.useEffect(()=>()=>{r.current!==null&&(window.clearTimeout(r.current),r.current=null)},[]),{uiNotice:e,pushNotice:s,clearNotice:n}}function WE(e){const{resolveCloudAuthUrl:t,currentWorkspaceId:r,normalizedCloudAuthBaseUrl:n,normalizedCloudMcpBaseUrl:s,mergedConfig:i,availableWorkspaces:l,currentTheme:c,configLoaded:d,globalTheme:m,themeUseGlobalDefault:f,keyShortcut:g,jsonBackupEnabled:h,globalJsonBackupEnabled:y,globalWeekStartsOn:k,locale:v,supportedLocales:A,jsonBackupUseGlobalDefault:b,manualComplexityEnabled:w,checklistDropdownEnabled:R,showTaskCardStatusLabel:N,showTaskCardDescription:j,showTaskCardAttachments:E,showTaskCardChecklistProgress:S,showTaskCardLatestActivity:L,tintTaskCardActivityBackground:_,pathSaved:T,settingsSection:H,setupState:q,buildInfo:z,saveSetupMode:M,saveWorkspaceProfile:Z,setCurrentTheme:J,handleSaveTheme:ee,handleSaveGlobalTheme:te,handleUseGlobalThemeDefault:fe,setKeyShortcut:Ie,handleJsonBackupEnabledChange:$e,handleSaveGlobalJsonBackupEnabled:Ye,handleUseGlobalJsonBackupDefault:ye,handleSaveGlobalWeekStartsOn:ge,handleSaveLocale:oe,handleManualComplexityEnabledChange:ie,handleChecklistDropdownEnabledChange:me,handleShowTaskCardStatusLabelChange:W,handleShowTaskCardDescriptionChange:V,handleShowTaskCardAttachmentsChange:B,handleShowTaskCardChecklistProgressChange:D,handleShowTaskCardLatestActivityChange:be,handleTintTaskCardActivityBackgroundChange:Se,handleSaveSettings:K,initiativeTemplates:Y,fetchInitiativeTemplates:G,createInitiativeFromTemplate:ae,setShowFolderBrowser:_e,setBrowserTarget:Oe,fetchFolders:Fe,activeCategories:st,pathValidation:ft,taxonomyDisplayLabels:xe,handleUpdateCategory:ke,handleRemoveCategory:ve,handleSaveCategory:Ve,handleAddPath:Ne,handleRemovePath:de,handleUpdateCategoryIcon:x,handleUpdateCategoryColor:le,activeTypes:Re,handleSaveType:Je,handleRemoveType:X,handleUpdateType:Ze,taxonomies:re,handleUpdateTaxonomies:Ee,priorities:je,handleUpdatePriorities:Pe,analyzeSystemTaxonomyPack:Ce,handleApplySystemTaxonomyPack:Te,handleUpdateTaxonomyDisplayLabels:pe,projectRoot:Me,projectName:et,mcpHostRoot:Ue,serverHostRoot:yt,mcpScriptPath:Le,tenantId:mt,runtimeMode:kt,workspaceSwitchingEnabled:He,deleteWorkspace:rt,setMcpHostRoot:It,isAuthenticated:Xe}=e,wt=o.useCallback(async(Ke,Et)=>{const vt=t(Ke),Bt=new Headers(Et?.headers||void 0);if(Ke.startsWith("/api/taskforce/settings/mcp/")){const er=String(r||"").trim();er&&er!=="default"&&!Bt.has("x-taskforce-workspace-id")&&Bt.set("x-taskforce-workspace-id",er)}const dr={...Et,headers:Bt,credentials:Et?.credentials??"include"};if(typeof window<"u"&&/^https?:\/\//i.test(vt))try{new URL(vt,window.location.origin).origin!==window.location.origin&&dr.mode===void 0&&(dr.mode="cors")}catch{}return fetch(vt,dr)},[r,t]),at=o.useCallback(async()=>{const Ke=new Headers,Et=String(r||"").trim();Et&&Et!=="default"&&Ke.set("x-taskforce-workspace-id",Et);const vt=await fetch("/api/taskforce/mcp/global-cli-health",{method:"POST",headers:Ke,credentials:"include"}),Bt=await vt.json().catch(()=>({}));if(!vt.ok||!Bt?.result)throw new Error(String(Bt?.error||"Unable to validate the global Taskforce CLI."));return Bt.result},[r]),U=o.useCallback(async()=>{const Ke=await fetch("/api/taskforce/update/status",{method:"GET",credentials:"include"}),Et=await Ke.json().catch(()=>({}));if(!Ke.ok||!Et?.result)throw new Error(String(Et?.error||"Unable to determine Taskforce update availability."));return Et.result},[]),he=l.find(Ke=>Ke.id===r);return{fetchCloudAuthApi:wt,checkLocalMcpCliHealth:at,getLocalUpdateStatus:U,currentTheme:c,configLoaded:d,globalTheme:m,themeUseGlobalDefault:f,keyShortcut:g,jsonBackupEnabled:h,globalJsonBackupEnabled:y,globalWeekStartsOn:k,locale:v,supportedLocales:A,jsonBackupUseGlobalDefault:b,manualComplexityEnabled:w,checklistDropdownEnabled:R,showTaskCardStatusLabel:N,showTaskCardDescription:j,showTaskCardAttachments:E,showTaskCardChecklistProgress:S,showTaskCardLatestActivity:L,tintTaskCardActivityBackground:_,pathSaved:T,initialSection:H,setupState:q,buildInfo:z,onSaveSetupMode:M,onSaveWorkspaceProfile:Z,onThemeChange:J,onSaveTheme:ee,onSaveGlobalTheme:te,onUseGlobalThemeDefault:fe,onKeyShortcutChange:Ie,onJsonBackupEnabledChange:$e,onSaveGlobalJsonBackupEnabled:Ye,onUseGlobalJsonBackupDefault:ye,onSaveGlobalWeekStartsOn:ge,onSaveLocale:oe,onManualComplexityEnabledChange:ie,onChecklistDropdownEnabledChange:me,onShowTaskCardStatusLabelChange:W,onShowTaskCardDescriptionChange:V,onShowTaskCardAttachmentsChange:B,onShowTaskCardChecklistProgressChange:D,onShowTaskCardLatestActivityChange:be,onTintTaskCardActivityBackgroundChange:Se,onSaveSettings:K,initiativeTemplates:Y,onRefreshInitiativeTemplates:G,onCreateInitiativeFromTemplate:ae,onShowFolderBrowserChange:_e,onBrowserTargetChange:Oe,onFetchFolders:Fe,categories:st,pathValidation:ft,taxonomyDisplayLabels:xe,onUpdateCategory:ke,onRemoveCategory:ve,onSaveCategory:Ve,onAddPath:Ne,onRemovePath:de,onUpdateCategoryIcon:x,onUpdateCategoryColor:le,types:Re,onSaveType:Je,onRemoveType:X,onUpdateType:Ze,taxonomies:re,onUpdateTaxonomies:Ee,priorities:je,onUpdatePriorities:Pe,onAnalyzeSystemTaxonomyPack:Ce,onApplySystemTaxonomyPack:Te,onUpdateTaxonomyDisplayLabels:pe,projectRoot:Me,projectName:et,mcpHostRoot:Ue,serverHostRoot:yt,mcpScriptPath:Le,tenantId:mt,workspaceId:r,runtimeMode:kt,cloudAuthBaseUrl:n||i.cloudAuthBaseUrl,cloudMcpBaseUrl:s||void 0,workspaceSwitchingEnabled:He,currentWorkspaceRole:he?.role||"member",currentWorkspaceName:String(he?.name||""),onDeleteWorkspace:rt,onMcpHostRootChange:It,isAuthenticated:Xe}}function $E(e){const{keyShortcut:t,themeUseGlobalDefault:r,runtimeMode:n,jsonBackupUseGlobalDefault:s,globalTheme:i,globalJsonBackupEnabled:l,setCurrentTheme:c,setThemeUseGlobalDefault:d,setGlobalTheme:m,setJsonBackupEnabled:f,setJsonBackupUseGlobalDefault:g,setGlobalJsonBackupEnabled:h,setGlobalWeekStartsOn:y,setLocale:k,setManualComplexityEnabled:v,setChecklistDropdownEnabled:A,setShowTaskCardStatusLabel:b,setShowTaskCardDescription:w,setShowTaskCardAttachments:R,setShowTaskCardChecklistProgress:N,setShowTaskCardLatestActivity:j,setTintTaskCardActivityBackground:E}=e,S=o.useCallback(async()=>{try{const oe=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shortcut:t})});if(!oe.ok)throw new Error(`Failed to save global settings (${oe.status})`);return!0}catch{return console.error("[Taskforce] Failed to save shortcut"),!1}},[t]),L=o.useCallback(async oe=>{c(oe),d(!1);try{const ie=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:oe})});if(!ie.ok)throw new Error(`Failed to save config (${ie.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project theme"),!1}},[c,d]),_=o.useCallback(async oe=>{m(oe),r&&c(oe);try{const ie=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:oe})});if(!ie.ok)throw new Error(`Failed to save global settings (${ie.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global theme"),!1}},[m,r,c]),T=o.useCallback(async()=>{try{const oe=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:null})});if(!oe.ok)throw new Error(`Failed to save config (${oe.status})`);return d(!0),c(i),!0}catch{return console.error("[Taskforce] Failed to use global theme default"),!1}},[i,c,d]),H=o.useCallback(async oe=>{if(n==="cloud")return f(!1),g(!1),!1;f(oe),g(!1);try{const ie=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:oe})});if(!ie.ok)throw new Error(`Failed to save config (${ie.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project backup setting"),!1}},[n,f,g]),q=o.useCallback(async oe=>{if(n==="cloud")return h(!1),s&&f(!1),!1;h(oe),s&&f(oe);try{const ie=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:oe})});if(!ie.ok)throw new Error(`Failed to save global settings (${ie.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global backup setting"),!1}},[n,h,s,f]),z=o.useCallback(async()=>{try{const oe=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:null})});if(!oe.ok)throw new Error(`Failed to save config (${oe.status})`);return g(!0),f(l),!0}catch{return console.error("[Taskforce] Failed to use global backup default"),!1}},[l,f,g]),M=o.useCallback(async oe=>{y(oe);try{const ie=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({schedulePreferences:{weekStartsOn:oe}})});if(!ie.ok)throw new Error(`Failed to save global settings (${ie.status})`);return!0}catch{return console.error("[Taskforce] Failed to save regional week start setting"),!1}},[y]),Z=o.useCallback(async oe=>{const ie=xC(oe);return k(ie),!0},[k]),J=o.useCallback(async oe=>{v(oe);try{const ie=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({manualComplexityEnabled:oe})});if(!ie.ok)throw new Error(`Failed to save config (${ie.status})`);return!0}catch{return console.error("[Taskforce] Failed to save manual complexity setting"),!1}},[v]),ee=o.useCallback(async oe=>{A(oe);try{const ie=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({checklistDropdownEnabled:oe})});if(!ie.ok)throw new Error(`Failed to save config (${ie.status})`);return!0}catch{return console.error("[Taskforce] Failed to save checklist dropdown setting"),!1}},[A]),te=o.useCallback(async(oe,ie,me)=>{try{const W=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({[oe]:ie})});if(!W.ok)throw new Error(`Failed to save config (${W.status})`);return!0}catch{return console.error(`[Taskforce] ${me}`),!1}},[]),fe=o.useCallback(async oe=>(b(oe),te("showTaskCardStatusLabel",oe,"Failed to save task card status label setting")),[te,b]),Ie=o.useCallback(async oe=>(w(oe),te("showTaskCardDescription",oe,"Failed to save task card description setting")),[te,w]),$e=o.useCallback(async oe=>(R(oe),te("showTaskCardAttachments",oe,"Failed to save task card attachments setting")),[te,R]),Ye=o.useCallback(async oe=>(N(oe),te("showTaskCardChecklistProgress",oe,"Failed to save task card checklist progress setting")),[te,N]),ye=o.useCallback(async oe=>(j(oe),te("showTaskCardLatestActivity",oe,"Failed to save task card latest activity setting")),[te,j]),ge=o.useCallback(async oe=>(E(oe),te("tintTaskCardActivityBackground",oe,"Failed to save task card activity background setting")),[te,E]);return{handleSaveSettings:S,handleSaveTheme:L,handleSaveGlobalTheme:_,handleUseGlobalThemeDefault:T,handleJsonBackupEnabledChange:H,handleSaveGlobalJsonBackupEnabled:q,handleUseGlobalJsonBackupDefault:z,handleSaveGlobalWeekStartsOn:M,handleSaveLocale:Z,handleManualComplexityEnabledChange:J,handleChecklistDropdownEnabledChange:ee,handleShowTaskCardStatusLabelChange:fe,handleShowTaskCardDescriptionChange:Ie,handleShowTaskCardAttachmentsChange:$e,handleShowTaskCardChecklistProgressChange:Ye,handleShowTaskCardLatestActivityChange:ye,handleTintTaskCardActivityBackgroundChange:ge}}function FE(e){const{activeCategories:t,activeTab:r,activeTypes:n,archivedTasks:s,browserTarget:i,category:l,configLoaded:c,customCategories:d,refreshTaskCollections:m,fetchTasks:f,filterCategories:g,getCategoryPaths:h,normalizePath:y,pathValidation:k,setBrowserTarget:v,setCategory:A,setCustomCategories:b,setCustomTypes:w,setFilterCategories:R,setPathValidation:N,setPriorities:j,setShowFolderBrowser:E,setTaxonomies:S,tasks:L}=e,_=o.useCallback(async(W,V)=>{const B=await W.json().catch(()=>({}));return String(B?.error||V)},[]),T=o.useCallback(()=>[...L,...s],[s,L]),H=o.useCallback(W=>W.priorities.find(V=>V.value===2)?.value||W.priorities[0]?.value||2,[]),q=o.useCallback(async W=>{if(W.length!==0)try{const V=await fetch("/api/taskforce/validate-paths",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({paths:W})});if(V.ok){const B=await V.json();N(D=>({...D,...B.results}))}}catch(V){console.error("[Taskforce] Failed to validate paths:",V)}},[N]);o.useEffect(()=>{if(r!=="settings"||!c)return;const W=[];t.forEach(B=>{h(B).forEach(be=>{W.includes(be)||W.push(be)})});const V=W.filter(B=>!k[B]);V.length>0&&q(V)},[t,r,c,h,k,q]);const z=o.useCallback(async(W,V)=>{if(c){b(B=>(B.length>0?B:t).map(be=>be.value===W.value?W:be)),V&&V!==W.label&&(l===V&&A(W.label),g.includes(V)&&R(B=>B.map(D=>D===V?W.label:D)));try{const be={categories:(d.length>0?d:t).map(Se=>Se.value===W.value?W:Se)};V&&V!==W.label&&(be.reassignFrom=V,be.reassignTo=W.label),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(be)}),V&&await f()}catch(B){console.error("[Taskforce] Failed to update category",B)}}},[t,l,c,d,f,g,A,b,R]),M=o.useCallback(async W=>{if(!c)return;const V=W.trim().toLowerCase().replace(/\s+/g,"-");if(t.some(D=>D.value===V))return;const B={value:V,label:W.trim(),color:"blue-200",icon:"Folder"};b(D=>[...D.length>0?D:t,B]);try{const be=[...d.length>0?d:t,B];await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({categories:be})})}catch(D){console.error("[Taskforce] Failed to create category",D)}},[t,c,d,b]),Z=o.useCallback((W,V)=>{if(!V.trim())return;const B=t.find(K=>K.value===W);if(!B)return;const D=h(B),be=V.trim();if(D.includes(be))return;const Se=[...D,be];z({...B,path:void 0,paths:Se}),q(Se)},[t,h,z,q]),J=o.useCallback((W,V)=>{const B=t.find(D=>D.value===W);B&&z({...B,icon:V})},[t,z]),ee=o.useCallback((W,V)=>{const B=t.find(D=>D.value===W);B&&z({...B,color:V})},[t,z]),te=o.useCallback((W,V)=>{const B=t.find(Se=>Se.value===W);if(!B)return;const be=h(B).filter(Se=>Se!==V);z({...B,path:void 0,paths:be})},[t,h,z]),fe=o.useCallback(W=>{const V=y(W);if(i&&typeof i=="object"&&i.type==="category"){const B=t.find(D=>D.value===i.value);if(B){const D=h(B);if(!D.includes(V)){const be=[...D,V];z({...B,path:void 0,paths:be})}}}E(!1),v(null)},[t,i,h,z,y,v,E]),Ie=o.useCallback(async W=>{if(!c)return;const V=rf,B=t.find(K=>K.value===V),D=B?{...B}:{value:V,label:ay,icon:"Inbox"},be=D.label,Se=t.find(K=>K.value===W);b(K=>{let G=(K.length>0?K:t).filter(ae=>ae.value!==W);return G.some(ae=>ae.value===V)||(G=[D,...G]),G}),Se&&((l===Se.label||l===Se.value)&&A(V),(g.includes(Se.label)||g.includes(Se.value))&&R(K=>{const Y=K.filter(G=>G!==Se.label&&G!==Se.value);return Y.includes(V)?Y:[...Y,V]}));try{let K=(d.length>0?d:t).filter(Y=>Y.value!==W);K.some(Y=>Y.value===V)||(K=[D,...K]),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({categories:K,reassignFrom:Se?.label||W,reassignTo:be})}),await f()}catch(K){console.error("[Taskforce] Failed to remove category",K)}},[t,l,c,d,f,g,A,b,R]),$e=o.useCallback(async W=>{if(!W.trim())return;const V=W.trim().toLowerCase().replace(/\s+/g,"-");if(n.some(D=>D.value===V))return;const B=[...n,{value:V,label:W.trim(),status:"active"}];w(B);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:B})})}catch(D){console.error("Failed to save type",D)}},[n,w]),Ye=o.useCallback(async W=>{const V=n.map(B=>B.value===W?{...B,status:"retired"}:B);w(V);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:V})}),await f()}catch(B){console.error("Failed to save type",B)}},[n,f,w]),ye=o.useCallback(async(W,V)=>{const B=n.find(K=>K.value===W);if(!B)return;const D=typeof V.label=="string"?V.label.trim():B.label;if(!D)return;const be=n.map(K=>K.value===W?{...K,...V,label:D}:K);if(JSON.stringify(be)!==JSON.stringify(n)){w(be);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:be})})}catch(K){console.error("Failed to update type",K)}}},[n,w]),ge=o.useCallback(async W=>{if(c){S(W);try{await fetch("/api/taskforce/taxonomies",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taxonomies:W})})}catch(V){console.error("[Taskforce] Failed to save taxonomies",V)}}},[c,S]),oe=o.useCallback(async W=>{if(c){j(W);try{await fetch("/api/taskforce/priorities",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({priorities:W})})}catch(V){console.error("[Taskforce] Failed to save priorities",V)}}},[c,j]),ie=o.useCallback(W=>{const V=T(),B=new Set(W.categories.map(G=>G.value)),D=new Set(W.types.map(G=>G.value)),be=new Set(W.priorities.map(G=>Number(G.value))),Se=Array.from(new Set(V.map(G=>String(G.category||"").trim()).filter(G=>G.length>0&&!B.has(G)))).sort(),K=Array.from(new Set(V.map(G=>String(G.type||"").trim()).filter(G=>G.length>0&&!D.has(G)))).sort(),Y=Array.from(new Set(V.map(G=>Number(G.priority)).filter(G=>Number.isFinite(G)&&G>0&&!be.has(G)))).sort((G,ae)=>G-ae);return{unmatchedCategoryValues:Se,unmatchedTypeValues:K,incompatiblePriorityValues:Y}},[T]),me=o.useCallback(async W=>{if(!c)return{success:!1,error:"Settings are still loading."};const{pack:V,sections:B,remapExistingValuesToDefault:D,workspaceIdOverride:be}=W,Se=String(be||"").trim(),K=Se.length>0,Y=K?[]:T(),G=_e=>{if(!Se)return _e;const Oe=_e.includes("?")?"&":"?";return`${_e}${Oe}workspaceId=${encodeURIComponent(Se)}`},ae=()=>{const _e={"Content-Type":"application/json"};return Se&&(_e["x-taskforce-workspace-id"]=Se),_e};try{const _e=await fetch(G("/api/taskforce/taxonomy-library/apply"),{method:"POST",headers:ae(),body:JSON.stringify({packId:V.id,sections:B,remapExistingValuesToDefault:D})}),Oe=await _e.json().catch(()=>({}));if(_e.ok&&Oe.taxonomyState)return K||(B.categories&&Oe.taxonomyState.categories&&b(Oe.taxonomyState.categories),B.types&&Oe.taxonomyState.types&&w(Oe.taxonomyState.types),B.priorities&&Oe.taxonomyState.priorities&&j(Oe.taxonomyState.priorities),await m({isSilent:!0})),{success:!0};if(Oe.code!=="WORKSPACE_SYNC_V3_TAXONOMY_ACTIVATION_DISABLED")return{success:!1,error:Oe.error||"Failed to apply taxonomy library pack atomically."};if(B.categories){const Fe=new Set(V.categories.map(xe=>xe.value)),st=D?[...V.categories]:[...V.categories,...t.filter(xe=>!Fe.has(xe.value)).map(xe=>({...xe,disabled:!0}))];K||b(st);const ft=await fetch(G("/api/taskforce/categories"),{method:"POST",headers:ae(),body:JSON.stringify({categories:st})});if(!ft.ok)return{success:!1,error:await _(ft,"Failed to apply category library pack.")}}if(B.types){const Fe=new Set(V.types.map(ke=>ke.value)),st=V.types.find(ke=>ke.value===wo)?.value||V.types[0]?.value||wo;if(D){const ke=Y.filter(ve=>ve.type&&!Fe.has(String(ve.type))).map(ve=>({id:ve.id,type:st}));if(ke.length>0){const ve=await fetch(G("/api/taskforce/bulk-update-fields"),{method:"POST",headers:ae(),body:JSON.stringify({updates:ke})});if(!ve.ok)return{success:!1,error:await _(ve,"Failed to remap task types to the pack default.")}}}const ft=D?[...V.types]:[...V.types,...n.filter(ke=>!Fe.has(ke.value)).map(ke=>({...ke,status:"retired"}))];K||w(ft);const xe=await fetch(G("/api/taskforce/types"),{method:"POST",headers:ae(),body:JSON.stringify({types:ft})});if(!xe.ok)return{success:!1,error:await _(xe,"Failed to apply task type library pack.")}}if(B.priorities){const Fe=new Set(V.priorities.map(ke=>ke.value)),st=Array.from(new Set(Y.map(ke=>Number(ke.priority)).filter(ke=>Number.isFinite(ke)&&ke>0&&!Fe.has(ke)))).sort((ke,ve)=>ke-ve);if(st.length>0&&!D)return{success:!1,error:`This workspace still uses priority levels ${st.join(", ")}. Enable "Remap unmatched existing values to default" to replace them before applying this pack.`};if(st.length>0){const ke=H(V),ve=Y.filter(Ve=>st.includes(Number(Ve.priority))).map(Ve=>({id:Ve.id,priority:ke}));if(ve.length>0){const Ve=await fetch(G("/api/taskforce/bulk-update-fields"),{method:"POST",headers:ae(),body:JSON.stringify({updates:ve})});if(!Ve.ok)return{success:!1,error:await _(Ve,"Failed to remap task priorities to the pack default.")}}}const ft=V.priorities.map(ke=>({...ke,value:Number(ke.value)}));K||j(ft);const xe=await fetch(G("/api/taskforce/priorities"),{method:"POST",headers:ae(),body:JSON.stringify({priorities:ft})});if(!xe.ok)return{success:!1,error:await _(xe,"Failed to apply priority library pack.")}}return K||await m({isSilent:!0}),{success:!0}}catch(_e){return console.error("[Taskforce] Failed to apply system taxonomy pack",_e),{success:!1,error:_e instanceof Error?_e.message:"Failed to apply system taxonomy pack."}}},[t,n,c,T,H,_,m,b,w,j]);return{getCategoryPaths:h,validatePaths:q,handleUpdateCategory:z,handleSaveCategory:M,handleAddPath:Z,handleUpdateCategoryIcon:J,handleUpdateCategoryColor:ee,handleRemovePath:te,handleSelectPath:fe,handleRemoveCategory:Ie,handleSaveType:$e,handleRemoveType:Ye,handleUpdateType:ye,handleUpdateTaxonomies:ge,handleUpdatePriorities:oe,analyzeSystemTaxonomyPack:ie,handleApplySystemTaxonomyPack:me}}function UE({shouldDeferProtectedApiCalls:e,shouldBlockProtectedApiCalls:t}){const[r,n]=o.useState([]),s=e||t,i=o.useCallback(async()=>{if(s)return[];try{const l=await fetch("/api/taskforce/initiative-templates");if(!l.ok)return[];const c=await l.json(),d=Array.isArray(c?.templates)?c.templates:[];return n(d),d}catch{return[]}},[s]);return{initiativeTemplates:r,fetchInitiativeTemplates:i}}function zE(){const[e,t]=o.useState(!1),r=o.useCallback(async()=>{if(!document.fullscreenElement){try{await document.documentElement.requestFullscreen(),t(!0)}catch(n){console.error(`Error attempting to enable full-screen mode: ${n}`)}return}document.exitFullscreen&&(await document.exitFullscreen(),t(!1))},[]);return o.useEffect(()=>{const n=()=>{t(!!document.fullscreenElement)};return document.addEventListener("fullscreenchange",n),()=>document.removeEventListener("fullscreenchange",n)},[]),{zenMode:e,setZenModeState:t,toggleZenMode:r}}function HE({tasks:e,archivedTasks:t,setTasks:r,setArchivedTasks:n,setLoadingTasks:s,getCurrentWorkspaceId:i,workspaceResetKey:l,shouldDeferProtectedApiCalls:c,shouldBlockProtectedApiCalls:d,handleUnauthorized:m,authRequiredForApi:f,setError:g,setLoading:h,pendingTaskMetadataOverlaysRef:y}){const k=o.useRef(new Map),v=o.useRef(!1),A=o.useRef(e),b=o.useRef(t),w=o.useRef(null),R=o.useRef(null),N=o.useRef(null),j=o.useRef(new Map),[E,S]=o.useState([]),[L,_]=o.useState({}),T=o.useCallback(me=>String(me.detailRevision||JSON.stringify([me.updatedAt||me.createdAt||"",me.commentCount||0,me.checklistCount||0,me.completedChecklistCount||0,me.attachmentCount||0,me.relationshipCount||0])),[]),H=o.useCallback(()=>{S(Array.from(j.current.values(),me=>me.detail))},[]);o.useEffect(()=>{A.current=e},[e]),o.useEffect(()=>{b.current=t},[t]);const q=o.useCallback(me=>tp(me),[]),z=o.useCallback(me=>{const W=y?.current.get(me.id);if(!W)return me;const V=Object.entries(W.patch).every(([be,Se])=>{const K=me[be];return K===void 0||Se===void 0?K===Se:hn(K)===hn(Se)}),B=Date.parse(String(me.updatedAt||"")),D=Date.parse(String(W.observedUpdatedAt||""));return V||Number.isFinite(B)&&Number.isFinite(D)&&B>D?(y?.current.delete(me.id),me):{...me,...W.patch}},[y]),M=o.useCallback((me,W)=>W.aborted?me===W.reason?!0:me instanceof DOMException?me.name==="AbortError":String(me?.name||"").toLowerCase()==="aborterror":!1,[]),[Z,J]=o.useState([]),ee=o.useRef(new Map),te=o.useCallback(me=>{!me.length||typeof window>"u"||(J(W=>Array.from(new Set([...W,...me]))),me.forEach(W=>{const V=ee.current.get(W);V&&window.clearTimeout(V);const B=window.setTimeout(()=>{ee.current.delete(W),J(D=>D.filter(be=>be!==W))},2e3);ee.current.set(W,B)}))},[]);o.useEffect(()=>()=>{typeof window>"u"||(ee.current.forEach(me=>window.clearTimeout(me)),ee.current.clear())},[]),o.useEffect(()=>{k.current=new Map,v.current=!1,w.current?.abort("workspace-reset"),w.current=null,R.current?.abort("workspace-reset"),R.current=null;const me=N.current!==null;N.current?.abort("workspace-reset"),N.current=null,me&&h?.(!1),j.current=new Map,S([]),_({}),typeof window<"u"&&(ee.current.forEach(W=>window.clearTimeout(W)),ee.current.clear()),J([])},[h,l]),o.useEffect(()=>()=>{N.current?.abort("unmount")},[]);const fe=o.useCallback((me,W)=>{const V=new Map(me.map(K=>[K.id,K]));let B=!1;const D=new Map(j.current),be={},Se=new Set;for(const[K,Y]of D){const G=V.get(K),ae=!!Y.detail.isArchived===W;if(ae&&Se.add(K),!G&&ae){D.delete(K),B=!0;continue}if(G){const _e=T(G);_e!==Y.summaryRevision&&(be[K]=_e)}}_(K=>{const G={...Object.fromEntries(Object.entries(K).filter(([Oe])=>!Se.has(Oe))),...be},ae=Object.entries(K),_e=Object.entries(G);return ae.length===_e.length&&ae.every(([Oe,Fe])=>G[Oe]===Fe)?K:G}),B&&(j.current=D,H())},[T,H]),Ie=o.useCallback(()=>{const me=N.current!==null;N.current?.abort("navigation"),N.current=null,me&&h?.(!1)},[h]),$e=o.useCallback(async(me=!1,W)=>{if(!(W?.ignoreAuthGuard===!0)&&(c||d))return;s(!me);const B=String(i()||"").trim();w.current?.abort("superseded");const D=new AbortController;w.current=D;try{const be=await fetch("/api/taskforce/tasks",{signal:D.signal});if(be.status===401){m(),r([]),me||s(!1);return}if(be.ok){const K=((await be.json()).tasks||[]).map(st=>z(Qs(st)));if(String(i()||"").trim()!==B)return;fe(K,!1);const G=new Map,ae=[],_e=W?.highlightChangedTaskIds===void 0?null:new Set(W.highlightChangedTaskIds.map(st=>xx(K,st)||st));for(const st of K){const ft=q(st);if(G.set(st.id,ft),!v.current)continue;const xe=k.current.get(st.id);(!xe||xe!==ft)&&(_e===null||_e.has(st.id))&&ae.push(st.id)}k.current=G,v.current?te(ae):v.current=!0;const Oe=A.current,Fe=zb(Oe,K);A.current=Fe,Fe!==Oe&&r(Fe)}}catch(be){if(M(be,D.signal))return;console.error("[Taskforce] Failed to fetch tasks:",be)}finally{w.current===D&&(w.current=null,s(!1))}},[q,i,te,m,r,s,f,c,d,fe,z]),Ye=o.useCallback(async(me=!1,W)=>{if(!(W?.ignoreAuthGuard===!0)&&(c||d))return!1;me||s(!0);const B=String(i()||"").trim();R.current?.abort("superseded");const D=new AbortController;R.current=D;try{const be=await fetch("/api/taskforce/archive",{signal:D.signal});if(be.ok){const Se=await be.json();if(String(i()||"").trim()!==B)return!1;const Y=(Se.archived||[]).map(_e=>({...z(Qs(_e)),isArchived:!0}));fe(Y,!0);const G=b.current,ae=zb(G,Y);return b.current=ae,ae!==G&&n(ae),!0}return!1}catch(be){return M(be,D.signal)||console.error("[Taskforce] Failed to fetch archive:",be),!1}finally{R.current===D&&(R.current=null,me||s(!1))}},[i,M,z,fe,n,s,c,d]),ye=o.useCallback(async(me,W)=>{const V=W?.force===!0;if(!V&&!me.isSummary){const Y=Ub(me);return j.current.set(me.id,{detail:me,summaryRevision:T(Y)}),_(G=>{if(!Object.prototype.hasOwnProperty.call(G,me.id))return G;const ae={...G};return delete ae[me.id],ae}),H(),me}const B=j.current.get(me.id);let D=me,be=T(D);if(!V&&B&&B.summaryRevision===be)return B.detail;const Se=String(i()||"").trim();N.current?.abort("superseded");const K=new AbortController;N.current=K,h?.(!0),g?.("");try{for(let Y=0;Y<2;Y+=1){const G=await fetch(`/api/taskforce/task/${encodeURIComponent(D.id)}`,{signal:K.signal});if(G.status===401)return m(),null;if(G.status===404)return g?.("Task not found. It may have moved or been deleted."),null;if(!G.ok)return g?.("Unable to load task details."),null;const ae=Qs(await G.json()),_e=String(i()||"").trim();if(K.signal.aborted||_e!==Se)return null;const Oe=[...A.current,...b.current].find(ft=>ft.id===D.id);if(!Oe)return g?.("Task not found. It may have moved or been deleted."),null;const Fe=T(Oe);if(Fe!==be){if(Y===0&&Oe){D=Oe,be=Fe;continue}return g?.("Task details changed while loading. Please open the task again."),null}if(D.updatedAt&&ae.updatedAt&&Date.parse(ae.updatedAt)<Date.parse(D.updatedAt))return g?.("Task details changed while loading. Please open the task again."),null;const st={...ae,detailRevision:ae.detailRevision||be};return W?.shouldCommit&&!W.shouldCommit()?null:(j.current.set(st.id,{detail:st,summaryRevision:be}),_(ft=>{if(!Object.prototype.hasOwnProperty.call(ft,st.id))return ft;const xe={...ft};return delete xe[st.id],xe}),H(),st)}return null}catch(Y){return M(Y,K.signal)||(console.error("[Taskforce] Failed to fetch task detail:",Y),g?.("Unable to load task details.")),null}finally{N.current===K&&(N.current=null,h?.(!1))}},[i,T,m,M,H,g,h]),ge=o.useCallback(async me=>{const W=me?.isSilent!==!1,V=me?.ignoreAuthGuard===!0,B=me?.includeActive!==!1,D=me?.includeArchive!==!1;await Promise.all([B?$e(W,{ignoreAuthGuard:V,highlightChangedTaskIds:me?.highlightChangedTaskIds}):Promise.resolve(!1),D?Ye(W,{ignoreAuthGuard:V}):Promise.resolve(!1)])},[Ye,$e]),oe=o.useCallback(async me=>{await ge({isSilent:!0,includeActive:me?.includeActive!==!1,includeArchive:me?.includeArchive!==!1,highlightChangedTaskIds:me?.highlightChangedTaskIds})},[ge]),ie=o.useCallback(me=>{const W=z(Qs(me)),V=[...A.current,...b.current].find(K=>K.id===W.id),B=W.isSummary?W:Ub({...W,detailRevision:void 0,commentCount:W.commentCount??(W.comments?void 0:V?.commentCount),checklistCount:W.checklistCount??(W.checklistItems?void 0:V?.checklistCount),completedChecklistCount:W.completedChecklistCount??(W.checklistItems?void 0:V?.completedChecklistCount),attachmentCount:W.attachmentCount??(W.attachments?void 0:V?.attachmentCount),relationshipCount:W.relationshipCount??V?.relationshipCount??0});W.isSummary||(j.current.set(W.id,{detail:W,summaryRevision:T(B)}),H(),_(K=>{if(!Object.prototype.hasOwnProperty.call(K,W.id))return K;const Y={...K};return delete Y[W.id],Y}));const D=zx(B,A.current,b.current),be=D.tasks!==A.current,Se=D.archivedTasks!==b.current;A.current=D.tasks,b.current=D.archivedTasks,be&&r(D.tasks),Se&&n(D.archivedTasks)},[T,z,H,r,n]);return{tasksRef:A,archivedTasksRef:b,taskDetails:E,staleTaskDetailRevisions:L,recentlyChangedTaskIds:Z,markRecentlyChangedTasks:te,fetchTasks:$e,fetchArchive:Ye,loadTaskDetail:ye,cancelTaskDetailLoad:Ie,refreshTaskCollections:ge,refreshTaskCollectionsFromInvalidation:oe,mergeTaskFromServer:ie,getTaskRevisionKey:q}}function VE(e){const{editingTaskId:t,relationshipTasks:r,initiatives:n=[],workstreams:s=[],workstreamInput:i="",resolveWorkstreamIdInput:l,supplementalTasks:c=[],assignee:d,setAssignee:m,setChecklistItems:f,setComments:g}=e,h=o.useRef(null),y=o.useMemo(()=>{if(c.length===0)return r;const b=new Map;return r.forEach(w=>b.set(w.id,w)),c.forEach(w=>b.set(w.id,w)),Array.from(b.values())},[r,c]),k=o.useMemo(()=>{if(t)return y.find(b=>b.id===t)},[y,t]);o.useEffect(()=>{t&&(f(k?.checklistItems||[]),g(k?.comments||[]))},[t,k?.id,k?.updatedAt,k?.checklistItems,k?.comments,f,g]),o.useEffect(()=>{if(!t||!k){h.current=null;return}const b=k.assignee||"unassigned",w=h.current;if(!w||w.taskId!==t){h.current={taskId:t,assignee:b},d!==b&&m(b);return}w.assignee!==b&&(d===w.assignee&&m(b),h.current={taskId:t,assignee:b})},[d,k?.assignee,k?.id,t,m]);const v=o.useMemo(()=>{if(k?.workstreamId)return s.find(b=>b.id===k.workstreamId);if(!(t||!i.trim()))return l?.(i)||void 0},[k,t,l,i,s]),A=o.useMemo(()=>{if(v?.initiativeId)return n.find(b=>b.id===v.initiativeId)},[v,n]);return{currentTask:k,currentTaskWorkstream:v,currentTaskInitiative:A}}const Fw="WS-",Uw="IN-";function Ho(e){return af(Fw,e)}function VI(e){return sy(Fw,e)}function lf(e){return mp(Fw,e)}function ws(e){return af(Uw,e)}function GE(e){return sy(Uw,e)}function GI(e){return mp(Uw,e)}function Wv(e,t){const r=String(t||"").trim();if(!r)return null;const n=GE(r);return e.find(s=>s.id===r||ws(s)===r||n!==null&&s.referenceNumber===n)||null}function KE(e){const t={};return e.forEach(r=>{const n=r.defaultValue;if(n!=null){if(Array.isArray(n)){n.length>0&&(t[r.id]=n.map(s=>typeof s=="number"?s:String(s)));return}t[r.id]=typeof n=="number"?n:String(n)}}),t}function qE(e,t){return e.filter(r=>{const n=t[r.id],s=Array.isArray(n)?n.length>0:n!=null&&n!=="";return r.status==="retired"&&!s?!1:r.formEnabled!==!1||r.isRequired===!0||s})}function YE(e){const{activeCategories:t,activeTypes:r,activeTab:n,attachments:s,checklistItems:i,comments:l,cancelTaskDetailLoad:c,description:d,editingTaskId:m,flushPendingAutoSave:f,getDescriptionDraft:g,getPreferredCategoryValue:h,getTitleDraft:y,lastUsedCategory:k,loadTaskDetail:v,newCommentText:A,onTaskApplied:b,relationshipTasks:w,workstreams:R,showArchive:N,taxonomies:j,setActiveTab:E,setAssignee:S,setAttachments:L,setAttachmentsDirty:_,setCategory:T,setChecklistItems:H,setComments:q,setComplexity:z,setDescription:M,setDueDate:Z,setEditingTaskId:J,setError:ee,setFormTaxonomies:te,setIsOpen:fe,setNewCommentText:Ie,setPendingNavigation:$e,setWorkstreamInput:Ye,setPriority:ye,setScheduledDate:ge,setShowArchive:oe,setStatus:ie,setTaskReturnTrail:me,setTitle:W,setType:V,setUnsavedModalOpen:B,taskReturnTrail:D,title:be}=e,Se=o.useRef(0),K=o.useCallback(()=>{Se.current+=1,c?.()},[c]),Y=o.useCallback(()=>r.find(de=>String(de.value||"").trim().length>0)?.value||wo,[r]),G=o.useCallback(async de=>{const x=()=>{K(),de()};if(m){await f()&&x();return}if(!((y?.()??be).trim()!==""||(g?.()??d).trim()!==""||i.length>0||A.trim()!==""||l.length>0||s.length>0)){x();return}$e(()=>x),B(!0)},[s,l.length,d,m,f,g,y,i,K,A,$e,B,be]),ae=o.useCallback(()=>{K(),fe(!1)},[K,fe]),_e=o.useCallback(()=>{K(),J(null),W(""),M("");const de=k,x=t.some(le=>le.label===de||le.value===de);if(de&&x){const le=t.find(Re=>Re.label===de||Re.value===de);T(le?.value||de)}else T(h(t));V(Y()),ye(2),z(3),ie("task"),S("unassigned"),ge(""),Z(""),Ye(""),H([]),te(KE(j)),q([]),Ie(""),L([]),_(!1),ee("")},[t,h,Y,K,k,S,L,_,T,H,q,z,M,Z,J,ee,te,Ie,ye,ge,ie,W,V,j]),Oe=o.useCallback(de=>{const x=de.trim();if(!x)return null;const le=oy(x);if(le){const X=w.find(Ze=>Ze.referenceNumber===le);if(X)return X}const Re=w.find(X=>X.id===x);if(Re)return Re;const Je=w.find(X=>Ss(X)===x);return Je||null},[w]),Fe=o.useCallback(de=>{const x=de.trim();if(!x)return null;const le=x.toLowerCase(),Re=VI(x);if(Re){const Ze=R.find(re=>re.referenceNumber===Re);if(Ze)return Ze}const Je=R.find(Ze=>Ze.id===x);if(Je)return Je;const X=R.find(Ze=>Ze.title.trim().toLowerCase()===le);return X||null},[R]),st=o.useCallback((de,x)=>{x?.preserveReturnTrail||me([]),J(de.id),W(de.title),M(de.description||""),T(de.category||h(t)),V(de.type||Y()),ye(typeof de.priority=="number"?de.priority:2),z(typeof de.complexity=="number"?de.complexity:3),ie(de.status||"task"),S(de.assignee||"unassigned"),ge(de.scheduledDate||""),Z(de.dueDate||"");const le=de.workstreamId&&R.find(Re=>Re.id===de.workstreamId)||null;Ye(le?Ho(le)||le.id:""),H(de.checklistItems||[]),q(de.comments||[]),te(de.taxonomies||{}),L(de.attachments||[]),_(!1),E("add"),x?.adoptAsBaseline!==!1&&b?.(de)},[t,h,Y,E,S,L,_,T,H,q,z,M,Z,J,te,ye,ge,ie,me,W,V,b,R]),ft=o.useCallback(async(de,x)=>{const le=Se.current+1;if(Se.current=le,!v)return c?.(),st(de,{preserveReturnTrail:x?.preserveReturnTrail}),de;if(!de.isSummary){c?.();const Je=x?.shouldApply?await v(de,{shouldCommit:x.shouldApply}):await v(de);if(Se.current===le){const X=Je||de;return st(X,{preserveReturnTrail:x?.preserveReturnTrail}),X}return null}const Re=x?.shouldApply?await v(de,{shouldCommit:x.shouldApply}):await v(de);return Re&&Se.current===le?(st(Re,{preserveReturnTrail:x?.preserveReturnTrail}),Re):null},[st,c,v]),xe=o.useCallback((de,x)=>{ft(de,x)},[ft]),ke=o.useCallback((de,x)=>ft(de,x),[ft]),ve=o.useCallback(de=>{const x=w.find(Re=>Re.id===de);if(!x)return;const le=()=>{n==="add"&&m&&m!==x.id&&me(Re=>Re[Re.length-1]===m?Re:[...Re,m]),x.isArchived&&!N&&oe(!0),xe(x,{preserveReturnTrail:!0})};if(n==="add"&&m&&m!==x.id){G(le);return}le()},[n,m,xe,G,w,oe,me,N]),Ve=o.useCallback(()=>{if(n!=="add"||!m||D.length===0)return!1;const de=[...D];for(;de.length>0;){const x=de.pop();if(!x)continue;const le=w.find(Re=>Re.id===x);if(le)return le.isArchived&&!N&&oe(!0),me(de),xe(le,{preserveReturnTrail:!0}),!0}return me([]),!1},[n,m,xe,w,oe,me,N,D]),Ne=o.useCallback(()=>{me([])},[me]);return{handleNavigation:G,handleClose:ae,resetForm:_e,resolveTaskIdInput:Oe,resolveWorkstreamIdInput:Fe,handleEdit:xe,refreshTaskDetail:ke,applyTaskToEditor:st,handleOpenTaskById:ve,returnToPreviousTask:Ve,clearReturnToParentTask:Ne}}function ZE(e){return e.map(t=>({...t}))}function JE(e){return e.map(t=>({...t}))}function XE(e){return e.map(t=>({...t}))}const QE={id:"software-development",label:"Software Development",description:"A software-oriented starter pack with developer-focused work types and a 4-level priority scale.",isDefaultStarter:!0,categories:[{value:"default",label:"General",icon:"Inbox"},{value:"product",label:"Product",icon:"Layers",color:"blue-500"},{value:"ui-ux",label:"UI/UX",icon:"Palette",color:"violet-500"},{value:"backend",label:"Backend",icon:"Server",color:"emerald-500"}],types:[{value:"feature",label:"Feature",icon:"Star",color:"teal-500",status:"active"},{value:"bug",label:"Bug",icon:"Bug",color:"red-500",status:"active"},{value:"chore",label:"Chore",icon:"Zap",color:"amber-500",status:"active"},{value:"refactor",label:"Refactor",icon:"Code",color:"blue-500",status:"active"},{value:"documentation",label:"Docs",icon:"Book",color:"sky-500",status:"active"}],priorities:[{value:1,label:"Low",color:"amber-200",icon:"ArrowDown"},{value:2,label:"Medium",color:"yellow-500",icon:"Minus"},{value:3,label:"High",color:"orange-500",icon:"ArrowUp"},{value:4,label:"Critical",color:"red-500",icon:"AlertTriangle"}]},eN=[{id:"general",label:"General",description:"A neutral starter pack for broad project and AI collaboration workflows.",categories:[{value:rf,label:ay,icon:"Inbox"}],types:[{value:"task",label:"Task",icon:"CheckSquare",color:"blue-500",status:"active"},{value:"deliverable",label:"Deliverable",icon:"Package",color:"teal-500",status:"active"},{value:"issue",label:"Issue",icon:"AlertCircle",color:"red-500",status:"active"},{value:"idea",label:"Idea",icon:"Lightbulb",color:"amber-500",status:"active"},{value:"review",label:"Review",icon:"Search",color:"violet-500",status:"active"}],priorities:[{value:1,label:"Low",color:"teal-500",icon:"ArrowDown"},{value:2,label:"Medium",color:"blue-500",icon:"Minus"},{value:3,label:"High",color:"amber-500",icon:"ArrowUp"}]},QE];function KI(){return eN.map(e=>({...e,categories:ZE(e.categories),types:JE(e.types),priorities:XE(e.priorities)}))}const tN={"red-200":"#eb7a7a","orange-200":"#eba87a","amber-200":"#ebc17a","yellow-200":"#ebd07a","green-200":"#7aeba4","teal-200":"#7aebdf","sky-200":"#7ac8eb","blue-200":"#7aa5eb","indigo-200":"#7a7ceb","violet-200":"#9c7aeb","red-500":"#e42525","orange-500":"#e47325","amber-500":"#e49d25","yellow-500":"#e4b625","green-500":"#25e46b","teal-500":"#25e4cf","sky-500":"#25a9e4","blue-500":"#256ee4","indigo-500":"#2529e4","violet-500":"#5f25e4","red-700":"#951818","orange-700":"#954b18","amber-700":"#956718","yellow-700":"#957718","green-700":"#189546","teal-700":"#189587","sky-700":"#186e95","blue-700":"#184895","indigo-700":"#181b95","violet-700":"#3e1895"},Xre=["red-200","orange-200","amber-200","yellow-200","green-200","teal-200","sky-200","blue-200","indigo-200","violet-200","red-500","orange-500","amber-500","yellow-500","green-500","teal-500","sky-500","blue-500","indigo-500","violet-500","red-700","orange-700","amber-700","yellow-700","green-700","teal-700","sky-700","blue-700","indigo-700","violet-700"];function ta(e){if(e)return tN[e]||e}const Td=[{value:"task",label:"To Do",shortLabel:"To Do",icon:"Square",color:"blue-200"},{value:"on-hold",label:"Blocked",shortLabel:"Blocked",icon:"Pause",color:"amber-500"},{value:"in-progress",label:"Working",shortLabel:"Working",icon:"Play",color:"blue-500"},{value:"review",label:"Review",shortLabel:"Review",icon:"ClipboardCheck",color:"violet-500"},{value:"done",label:"Done",shortLabel:"Done",icon:"SquareCheck",color:"green-500"},{value:"cancelled",label:"Cancelled",shortLabel:"Cancelled",icon:"Ban",color:"var(--status-cancelled)"}],fc=Td.map(({value:e,label:t,icon:r,color:n})=>({value:e,label:t,icon:r,color:n}));function zo(e){const t=String(e||"task").trim().toLowerCase();return t==="completed"?Td.find(r=>r.value==="done")||Td[0]:Td.find(r=>r.value===t)||Td[0]}const qI=["Folder","Code","FileText","Terminal","Database","Cpu","Globe","Layout","Server","Search","Settings","Zap","Shield","Star","Layers","Bug","Box","Book","MessageSquare","Image","Music","Video","Map","Mail","Camera","Heart","Anchor","Rocket","Target","Flag","Bookmark","Briefcase","Puzzle","SquareUserRound","Users","User","Unplug","Clock","Lock","Pencil","TrafficCone","CircleDollarSign","Activity","Wrench","Microscope","Palette","Webhook","FlaskConical","Route","Compass","Landmark","BookOpen","Bot","Cloud","Kanban","Infinity","Monitor","Smartphone","History","Brain","Calendar","Play","Pause","Sparkles","Check","Ban","Circle","CheckCircle","Wind","Github","Square","SquareCheck","CheckSquare","Package","AlertCircle","Lightbulb","ClipboardCheck","ScanSearch","Inbox","HelpCircle","Gauge","FileCode","ArrowDown","Minus","ArrowUp","AlertTriangle","CircleQuestionMark","TriangleAlert"],df=qI.reduce((e,t)=>(e[t]=Xs[t]||Md,e),{}),Qre=qI,Fg=Object.fromEntries(KI().flatMap(e=>e.types).filter(e=>e.icon&&e.color).reduce((e,t)=>(e.some(([r])=>r===t.value)||e.push([t.value,{icon:t.icon,color:t.color}]),e),[])),rN={PDF:"red-500",DOC:"blue-500",DOCX:"blue-500",CSV:"teal-500",JSON:"amber-500",TXT:"violet-200",MD:"violet-200"};function nN(e){const t=String(e||"").trim().toLowerCase();return ta(Fg[t]?.color)||ta("violet-200")||"#9c7aeb"}function ene(e){switch(Number(e)){case 1:return"var(--text-muted)";case 2:return"var(--text-secondary)";case 3:return"var(--priority-high)";case 4:return"var(--priority-critical)";default:return"var(--text-secondary)"}}function aN(e){const t=String(e||"").trim().toUpperCase();return ta(rN[t])||"var(--text-muted)"}const sN=/[\u2010-\u2015\u2212]/g;function zw(e){return String(e??"").trim().replace(sN,"-").replace(/\s+/g," ").toLowerCase()}function my(e){const t=zw(e);if(!t)return null;const r=t.match(/^(l\s*t|t)\s*(?:-\s*)?(\d+)$/i);return r?`${r[1].replace(/\s+/g,"").toLowerCase()}-${r[2]}`:null}function yp(e){const t=zw(e);return{raw:t,tokens:t?t.split(" ").filter(Boolean):[],referenceToken:my(e)}}function Uo(e,t){const r=String(t??"").trim();r&&e.push(r)}function Fu(e,t,r){const n=String(r??"").trim();if(!n)return;const s=t?.find(i=>String(i.value)===n);Uo(e,s?.label)}function oN(e,t={}){const r=[];return Uo(r,e.title),Uo(r,e.description),Uo(r,e.id),Uo(r,Ss(e)),Uo(r,e.category),Uo(r,e.type),Uo(r,e.priority),Uo(r,e.status),Uo(r,e.assignee||"unassigned"),Uo(r,e.canceledReason),Fu(r,t.categories,e.category),Fu(r,t.types,e.type),Fu(r,t.priorities,e.priority),Fu(r,fc,e.status),Fu(r,t.assigneeOptions,e.assignee||"unassigned"),Object.entries(e.taxonomies||{}).forEach(([n,s])=>{const i=t.taxonomies?.find(c=>c.id===n);Uo(r,i?.label),(Array.isArray(s)?s:[s]).forEach(c=>{Uo(r,c),Fu(r,i?.options,c)})}),r}function Ug(e,t,r={}){const n=typeof t=="string"?yp(t):t;if(!n.raw)return!0;const s=oN(e,r),l=s.map(zw).filter(Boolean).join(" ");return l.includes(n.raw)||n.referenceToken&&s.map(my).some(d=>d?.includes(n.referenceToken))?!0:n.tokens.length>0&&n.tokens.every(c=>l.includes(c))}function iN(e,t){const r=e.taxonomies?.[t];return r==null||r===""?!1:Array.isArray(r)?r.some(n=>String(n).trim().length>0):String(r).trim().length>0}function kp(e,t){const r=e.filter(s=>s.status!=="retired"),n=e.filter(s=>s.status==="retired"&&t.some(i=>iN(i,s.id)));return[...r,...n.filter(s=>!r.some(i=>i.id===s.id))]}function YI(e,t=[]){return kp(e,t).filter(r=>r.sortEnabled===!0).map(r=>({value:`taxonomy:${r.id}`,label:r.status==="retired"?`${r.label} (Retired)`:r.label}))}function BS(e,t){const r=e.taxonomies?.[t.id];if(r==null||r==="")return null;const n=Array.isArray(r)?r.map(s=>String(s)):[String(r)];for(let s=0;s<t.options.length;s+=1)if(n.includes(String(t.options[s]?.value)))return s;return null}function gd(e,t){return new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime()}function zg(e,t,r,n,s=[]){let i=0;if(r==="created")return i=gd(e,t),n==="desc"?i:-i;if(r==="updated"){const l=e.updatedAt||e.createdAt,c=t.updatedAt||t.createdAt;return i=new Date(c).getTime()-new Date(l).getTime(),n==="desc"?i:-i}if(r==="priority"){const l=Eg(e.priority),c=Eg(t.priority);return i=l!==c?c-l:gd(e,t),n==="desc"?i:-i}if(r==="complexity"){const l=typeof e.complexity=="number"?e.complexity:3,c=typeof t.complexity=="number"?t.complexity:3;return i=l!==c?c-l:gd(e,t),n==="desc"?i:-i}if(r.startsWith("taxonomy:")){const l=r.slice(9),c=s.find(f=>f.id===l);if(!c)return i=gd(e,t),n==="desc"?i:-i;const d=BS(e,c),m=BS(t,c);return d===null&&m===null?gd(e,t):d===null?1:m===null?-1:d!==m?n==="desc"?m-d:d-m:gd(e,t)}return i=gd(e,t),n==="desc"?i:-i}function cN(e,t,r){const n=e.taxonomies?.[t];return n==null||n===""?!1:Array.isArray(n)?n.some(s=>String(s)===String(r)):String(n)===String(r)}function Hw(e,t){const r=e.options.filter(s=>s.status!=="retired"),n=e.options.filter(s=>s.status==="retired"&&t.some(i=>cN(i,e.id,s.value)));return[...r,...n.filter(s=>!r.some(i=>String(i.value)===String(s.value)))]}function lN({query:e,runtimeMode:t,workspaceId:r,enabled:n,scope:s,debounceMs:i=250,pageSize:l=50,maxMatches:c=500}){const[d,m]=o.useState(()=>new Set),f=o.useRef(0),g=o.useMemo(()=>yp(e).raw,[e]);return o.useEffect(()=>{f.current+=1;const h=f.current;if(!n||t!=="cloud"||!g||!r.trim()){m(v=>v.size===0?v:new Set);return}m(v=>v.size===0?v:new Set);const y=new AbortController,k=window.setTimeout(()=>{(async()=>{const v=new Set;let A=0,b=0;const w=Math.max(1,Math.min(50,Math.trunc(l))),R=Math.max(1,Math.trunc(c));try{for(;b<R;){const N=Math.min(w,R-b),j=new URLSearchParams({query:e.trim(),scope:s,limit:String(N),offset:String(A)}),E=await fetch(`/api/taskforce/tasks/search?${j.toString()}`,{signal:y.signal});if(!E.ok)throw new Error(`Task search failed (${E.status}).`);const S=await E.json(),L=S.matches||[];b+=L.length;for(const T of L){const H=String(T?.id||"").trim();H&&v.add(H)}if(S.pagination?.hasMore!==!0)break;const _=Number(S.pagination?.nextOffset);if(!Number.isInteger(_)||_<=A)break;A=_}!y.signal.aborted&&f.current===h&&m(v)}catch{if(y.signal.aborted||f.current!==h)return;m(new Set)}})()},Math.max(0,i));return()=>{window.clearTimeout(k),y.abort("superseded")}},[i,n,c,g,l,e,t,s,r]),d}function dN({tasks:e,archivedTasks:t,activeCategories:r,activeTypes:n,priorities:s,taxonomies:i,configLoaded:l,referenceDataLoaded:c,assigneeOptionsLoaded:d,assigneeOptions:m,runtimeMode:f="local",workspaceId:g="",cloudTaskSearchEnabled:h=!1,cloudTaskSearchScope:y="active"}){const k=o.useMemo(()=>[...e,...t],[t,e]),v=o.useMemo(()=>LC(m),[m]),A=o.useMemo(()=>kp(i,k).filter(ke=>ke.filterEnabled!==!1).map(ke=>({...ke,options:Hw(ke,k)})),[k,i]),b=o.useMemo(()=>new Map(A.map(ke=>[ke.id,ke])),[A]),w=o.useMemo(()=>v.map(ke=>ke.value),[v]),[R,N]=o.useState(""),j=lN({query:R,runtimeMode:f,workspaceId:g,enabled:h,scope:y}),[E,S]=o.useState([]),[L,_]=o.useState([]),[T,H]=o.useState([]),[q,z]=o.useState(!1),[M,Z]=o.useState(fc.map(ke=>ke.value)),[J,ee]=o.useState(w),[te,fe]=o.useState(!0),[Ie,$e]=o.useState({}),Ye=o.useRef(d),[ye,ge]=o.useState("created"),[oe,ie]=o.useState("desc"),me=o.useCallback(()=>{ie(ke=>ke==="asc"?"desc":"asc")},[]),[W,V]=o.useState("status"),[B,D]=o.useState("show"),[be,Se]=o.useState({}),K=o.useCallback((ke,ve)=>ve.length===0?!0:ve.every(Ve=>ke.includes(Ve)),[]),Y=o.useCallback((ke,ve)=>ke.length===ve.length&&ke.every((Ve,Ne)=>Ve===ve[Ne]),[]);o.useEffect(()=>{if(!(!l||!c)&&d&&!q&&r.length>0&&n.length>0&&s.length>0){S(r.map(ve=>ve.value)),_(s.map(ve=>ve.value)),H(n.map(ve=>ve.value)),ee(w),fe(!0);const ke={};A.forEach(ve=>{ke[ve.id]=ve.options.map(Ve=>Ve.value)}),$e(ke),z(!0)}},[l,c,d,r,n,s,A,q,w]),o.useEffect(()=>{if(!q||!d)return;const ke=new Set(w),ve=J.filter(de=>ke.has(de)),Ve=te?w:ve.length>0||J.length===0?ve:w;(Ve.length!==J.length||Ve.some((de,x)=>de!==J[x]))&&ee(Ve)},[w,J,te,q,d]),o.useEffect(()=>{if(!q||!d)return;const ke=J.filter(Ve=>w.includes(Ve)),ve=w.length>0&&w.every(Ve=>ke.includes(Ve));te&&!ve&&d&&!Ye.current||ve!==te&&fe(ve)},[w,J,te,q,d]),o.useEffect(()=>{Ye.current=d},[d]),o.useEffect(()=>{if(!l||!c||!q||r.length===0)return;const ke=Vx(E,r);(ke.length!==E.length||ke.some((Ve,Ne)=>Ve!==E[Ne]))&&S(ke)},[l,c,r,q,E]),o.useEffect(()=>{if(!l||!c||!q||s.length===0||L.length===0)return;const ke=Hx(L,s),ve=Array.from(new Set(L.map(Ne=>Number(Ne)).filter(Ne=>Number.isFinite(Ne))));(ke.length!==ve.length||ke.some((Ne,de)=>Ne!==ve[de]))&&_(ke)},[l,c,q,s,L]),o.useEffect(()=>{if(!l||!c||!q||n.length===0)return;const ke=new Set(n.map(Ne=>Ne.value)),ve=T.filter(Ne=>ke.has(Ne)),Ve=ve.length>0||T.length===0?ve:n.map(Ne=>Ne.value);Y(Ve,T)||H(Ve)},[n,l,T,q,Y,c]),o.useEffect(()=>{if(!l||!c||!q)return;const ke={};A.forEach(x=>{const le=x.options.map(X=>X.value);if(le.length===0)return;const Re=Array.isArray(Ie[x.id])?Ie[x.id]:[],Je=Re.filter(X=>le.includes(X));ke[x.id]=Je.length>0||Re.length===0?Je:le});const ve=Object.keys(Ie).sort(),Ve=Object.keys(ke).sort(),Ne=ve.length!==Ve.length||ve.some((x,le)=>x!==Ve[le]),de=Ve.some(x=>!Y(Ie[x]||[],ke[x]||[]));(Ne||de)&&$e(ke)},[l,Ie,A,q,Y,c]);const G=o.useCallback(()=>{N(""),S(r.map(ve=>ve.value)),_(s.map(ve=>ve.value)),H(n.map(ve=>ve.value)),Z(fc.map(ve=>ve.value)),ee(w),fe(!0);const ke={};A.forEach(ve=>{ke[ve.id]=ve.options.map(Ve=>Ve.value)}),$e(ke),ge("created"),ie("desc")},[r,s,n,A,w]),ae=o.useCallback(ke=>{ee(ve=>{const Ve=typeof ke=="function"?ke(ve):ke,Ne=Array.from(new Set(Ve.filter(x=>typeof x=="string"&&x.trim().length>0))),de=w.length>0&&w.every(x=>Ne.includes(x));return fe(de),Ne})},[w]),_e=o.useMemo(()=>yp(R),[R]),Oe=o.useMemo(()=>({categories:r,types:n,priorities:s,assigneeOptions:v,taxonomies:i}),[r,n,s,v,i]),Fe=o.useMemo(()=>{const ke=K(E,r.map(de=>de.value)),ve=K(T,n.map(de=>de.value)),Ve=K(Array.from(new Set(L.map(de=>Number(de)).filter(de=>Number.isFinite(de)))),s.map(de=>Number(de.value)).filter(de=>Number.isFinite(de))),Ne=K(M,fc.map(de=>de.value));return e.filter(de=>{const x=Ug(de,_e,Oe)||!!_e.raw&&j.has(de.id),le=!q||ke||E.includes(de.category),Re=!q||Ve||jk(de.priority,L),Je=!q||ve||T.includes(de.type||wo),X=!q||Ne||M.includes(de.status),Ze=!q||te||J.includes(de.assignee||"unassigned"),re=Object.entries(Ie).every(([Ee,je])=>{const Pe=b.get(Ee);if(!Pe)return!0;const Ce=Pe?.options.every(pe=>je.includes(pe.value))??!0;if(Ce)return!0;const Te=de.taxonomies?.[Ee];return Te?Array.isArray(Te)?Te.some(pe=>je.includes(pe)):je.includes(Te):Ce||je.includes("")});return x&&le&&Re&&Je&&X&&Ze&&re}).sort((de,x)=>zg(de,x,ye,oe,i))},[e,_e,Oe,j,E,L,T,M,J,te,Ie,ye,oe,q,A,b,r,n,s,K,i]),st=o.useMemo(()=>{const ke=K(E,r.map(de=>de.value)),ve=K(T,n.map(de=>de.value)),Ve=K(Array.from(new Set(L.map(de=>Number(de)).filter(de=>Number.isFinite(de)))),s.map(de=>Number(de.value)).filter(de=>Number.isFinite(de))),Ne=K(M,fc.map(de=>de.value));return e.filter(de=>{const x=!q||ke||E.includes(de.category),le=!q||Ve||jk(de.priority,L),Re=!q||ve||T.includes(de.type||wo),Je=!q||Ne||M.includes(de.status),X=!q||te||J.includes(de.assignee||"unassigned"),Ze=Object.entries(Ie).every(([re,Ee])=>{const je=b.get(re);if(!je)return!0;const Pe=je?.options.every(Te=>Ee.includes(Te.value))??!0;if(Pe)return!0;const Ce=de.taxonomies?.[re];return Ce?Array.isArray(Ce)?Ce.some(Te=>Ee.includes(Te)):Ee.includes(Ce):Pe||Ee.includes("")});return x&&le&&Re&&Je&&X&&Ze})},[e,E,L,T,M,J,te,Ie,q,A,b,r,n,s,K]),ft=o.useMemo(()=>{const ke=r.every(Ne=>E.includes(Ne.value)),ve=K(T,n.map(Ne=>Ne.value)),Ve=K(Array.from(new Set(L.map(Ne=>Number(Ne)).filter(Ne=>Number.isFinite(Ne)))),s.map(Ne=>Number(Ne.value)).filter(Ne=>Number.isFinite(Ne)));return t.filter(Ne=>{const de=Ug(Ne,_e,Oe)||!!_e.raw&&j.has(Ne.id),x=!q||ke||E.includes(Ne.category),le=!q||Ve||jk(Ne.priority,L),Re=!q||ve||T.includes(Ne.type||wo),Je=!q||te||J.includes(Ne.assignee||"unassigned"),X=Object.entries(Ie).every(([Ze,re])=>{const Ee=b.get(Ze);if(!Ee)return!0;const je=Ee?.options.every(Ce=>re.includes(Ce.value))??!0;if(je)return!0;const Pe=Ne.taxonomies?.[Ze];return Pe?Array.isArray(Pe)?Pe.some(Ce=>re.includes(Ce)):re.includes(Pe):je||re.includes("")});return de&&x&&le&&Re&&Je&&X}).sort((Ne,de)=>zg(Ne,de,ye,oe,i))},[t,_e,Oe,j,E,L,T,J,te,Ie,ye,oe,q,r,n,s,A,b,K,i]),xe=o.useMemo(()=>{const ke={};return Fe.forEach(ve=>{const Ve=r.find(de=>de.value===ve.category),Ne=Ve?Ve.label:ve.category||"General";ke[Ne]||(ke[Ne]=[]),ke[Ne].push(ve)}),ke},[Fe,r]);return{searchQuery:R,setSearchQuery:N,filterCategories:E,setFilterCategories:S,filterPriorities:L,setFilterPriorities:_,filterTypes:T,setFilterTypes:H,filterStatus:M,setFilterStatus:Z,filterAssignees:J,setFilterAssignees:ae,filterAssigneesAllSelected:te,setFilterAssigneesAllSelected:fe,filterTaxonomies:Ie,setFilterTaxonomies:$e,hasInitedFilters:q,setHasInitedFilters:z,sortBy:ye,setSortBy:ge,sortOrder:oe,setSortOrder:ie,toggleSortOrder:me,groupBy:W,setGroupBy:V,emptyColumnMode:B,setEmptyColumnMode:D,collapsedCategories:be,setCollapsedCategories:Se,clearFilters:G,filteredTasks:Fe,searchAgnosticTasks:st,filteredArchive:ft,groupedTasks:xe}}const uN=dN,Vw="taskforce-workspace-sync-v3",fN=3,Xu="operation-identities",oc="task-create-attempts",Qu="workstream-create-attempts";function Hh(e){if(!e)return[];const t=Array.isArray(e.attempts)?[...e.attempts]:[];return e.active&&!t.some(r=>r.operationId===e.active?.operationId)&&t.push(e.active),t}function WS(e,t){delete e.active,e.attempts=t}function cs(e,t){const r=String(e||"").trim();if(!r)throw new Error(`${t} is required.`);return r}function Jc(e,t){return e.error||new Error(t)}function mN(e){e.objectStoreNames.contains(Xu)||e.createObjectStore(Xu,{keyPath:"fingerprint"}),e.objectStoreNames.contains(oc)||e.createObjectStore(oc,{keyPath:"workspaceId"}),e.objectStoreNames.contains(Qu)||e.createObjectStore(Qu,{keyPath:"fingerprint"})}function Gw(e,t){return e?new Promise((r,n)=>{const s=e.open(t,fN);let i=!1;s.onupgradeneeded=()=>mN(s.result),s.onsuccess=()=>{const l=s.result;if(i){l.close();return}i=!0,l.onversionchange=()=>l.close(),r(l)},s.onerror=()=>{i||(i=!0,n(Jc(s,"Failed to open the local operation identity database.")))},s.onblocked=()=>{}}):Promise.reject(new Error("IndexedDB is unavailable."))}class Kw{constructor(t=globalThis.indexedDB,r=Vw){this.indexedDb=t,this.databaseName=r}async getOrCreate(t,r){const n=cs(t,"fingerprint"),s=await this.open();try{return await new Promise((i,l)=>{const c=s.transaction(Xu,"readwrite"),d=c.objectStore(Xu),m=d.get(n);let f="",g=!1;m.onsuccess=()=>{try{const h=m.result;if(h){f=cs(h.operationId,"stored operationId");return}f=cs(r(),"operationId"),g=!0,d.add({fingerprint:n,operationId:f})}catch(h){c.abort(),l(h)}},m.onerror=()=>l(Jc(m,"Failed to read the local operation identity.")),c.oncomplete=()=>i({operationId:f,created:g}),c.onerror=()=>l(c.error||new Error("Failed to persist the local operation identity.")),c.onabort=()=>l(c.error||new Error("Persisting the local operation identity was aborted."))})}finally{s.close()}}async deleteIfMatches(t,r){const n=cs(t,"fingerprint"),s=cs(r,"operationId"),i=await this.open();try{await new Promise((l,c)=>{const d=i.transaction(Xu,"readwrite"),m=d.objectStore(Xu),f=m.get(n);f.onsuccess=()=>{f.result?.operationId===s&&m.delete(n)},f.onerror=()=>c(Jc(f,"Failed to read the local operation identity.")),d.oncomplete=()=>l(),d.onerror=()=>c(d.error||new Error("Failed to delete the local operation identity.")),d.onabort=()=>c(d.error||new Error("Deleting the local operation identity was aborted."))})}finally{i.close()}}open(){return Gw(this.indexedDb,this.databaseName)}}class ZI{constructor(t=globalThis.indexedDB,r=Vw){this.indexedDb=t,this.databaseName=r}async getForParticipant(t,r){const n=cs(t,"workspaceId"),s=cs(r,"participantId"),i=await this.open();try{return await new Promise((l,c)=>{const d=i.transaction(oc,"readonly"),f=d.objectStore(oc).get(n);let g=null;f.onsuccess=()=>{const h=f.result,y=Hh(h).find(k=>k.participantId===s);y&&(g={...y,created:!1,resolved:!1})},f.onerror=()=>c(Jc(f,"Failed to read the local task-create attempt.")),d.oncomplete=()=>l(g),d.onerror=()=>c(d.error||new Error("Failed to claim the local task-create attempt.")),d.onabort=()=>c(d.error||new Error("Claiming the local task-create attempt was aborted."))})}finally{i.close()}}async listPending(t){const r=cs(t,"workspaceId"),n=await this.open();try{return await new Promise((s,i)=>{const l=n.transaction(oc,"readonly"),d=l.objectStore(oc).get(r);let m=[];d.onsuccess=()=>{m=Hh(d.result).map(f=>({...f,created:!1,resolved:!1}))},d.onerror=()=>i(Jc(d,"Failed to list local task-create attempts.")),l.oncomplete=()=>s(m),l.onerror=()=>i(l.error||new Error("Failed to list local task-create attempts.")),l.onabort=()=>i(l.error||new Error("Listing local task-create attempts was aborted."))})}finally{n.close()}}async claim(t,r,n,s){const i=cs(t,"workspaceId"),l=cs(r,"participantId"),c=await this.open();try{return await new Promise((d,m)=>{const f=c.transaction(oc,"readwrite"),g=f.objectStore(oc),h=g.get(i);let y=null,k=!1;h.onsuccess=()=>{try{const v=h.result||{workspaceId:i},A=Hh(v),b=A.find(R=>R.participantId===l);if(b){y={...b,created:!1,resolved:!1};return}const w={workspaceId:i,operationId:cs(s(),"operationId"),task:n,participantId:l};k=!0,A.push(w),WS(v,A),g.put(v),y={...w,created:!0,resolved:!1}}catch(v){f.abort(),m(v)}},h.onerror=()=>m(Jc(h,"Failed to read the local task-create attempt.")),f.oncomplete=()=>{if(!y)return m(new Error("Local task-create attempt was not prepared."));d({...y,created:k})},f.onerror=()=>m(f.error||new Error("Failed to persist the local task-create attempt.")),f.onabort=()=>m(f.error||new Error("Persisting the local task-create attempt was aborted."))})}finally{c.close()}}async markResolved(t,r){const n=cs(r,"operationId");await this.mutateState(t,s=>s.filter(i=>i.operationId!==n))}async abandonIfMatches(t,r){await this.mutateState(t,n=>{const s=cs(r,"operationId");return n.filter(i=>i.operationId!==s)})}async mutateState(t,r){const n=cs(t,"workspaceId"),s=await this.open();try{await new Promise((i,l)=>{const c=s.transaction(oc,"readwrite"),d=c.objectStore(oc),m=d.get(n);m.onsuccess=()=>{const f=m.result||{workspaceId:n},g=r(Hh(f));g.length===0?d.delete(n):(WS(f,g),d.put(f))},m.onerror=()=>l(Jc(m,"Failed to read the local task-create state.")),c.oncomplete=()=>i(),c.onerror=()=>l(c.error||new Error("Failed to update the local task-create state.")),c.onabort=()=>l(c.error||new Error("Updating the local task-create state was aborted."))})}finally{s.close()}}open(){return Gw(this.indexedDb,this.databaseName)}}class pN{constructor(t=globalThis.indexedDB,r=Vw){this.indexedDb=t,this.databaseName=r}async claim(t,r,n){const s=cs(t,"fingerprint"),i=await this.open();try{return await new Promise((l,c)=>{const d=i.transaction(Qu,"readwrite"),m=d.objectStore(Qu),f=m.get(s);let g=null,h=!1;f.onsuccess=()=>{try{const y=f.result;if(y){g=y;return}g={fingerprint:s,operationId:cs(n(),"operationId"),workstream:r},h=!0,m.add(g)}catch(y){d.abort(),c(y)}},f.onerror=()=>c(Jc(f,"Failed to read the workstream-create attempt.")),d.oncomplete=()=>{if(!g)return c(new Error("Workstream-create attempt was not prepared."));l({...g,created:h})},d.onerror=()=>c(d.error||new Error("Failed to persist the workstream-create attempt.")),d.onabort=()=>c(d.error||new Error("Persisting the workstream-create attempt was aborted."))})}finally{i.close()}}async deleteIfMatches(t,r){const n=cs(t,"fingerprint"),s=cs(r,"operationId"),i=await this.open();try{await new Promise((l,c)=>{const d=i.transaction(Qu,"readwrite"),m=d.objectStore(Qu),f=m.get(n);f.onsuccess=()=>{f.result?.operationId===s&&m.delete(n)},f.onerror=()=>c(Jc(f,"Failed to read the workstream-create attempt.")),d.oncomplete=()=>l(),d.onerror=()=>c(d.error||new Error("Failed to delete the workstream-create attempt.")),d.onabort=()=>c(d.error||new Error("Deleting the workstream-create attempt was aborted."))})}finally{i.close()}}open(){return Gw(this.indexedDb,this.databaseName)}}function Xc(e){return hn(e)}async function qw(e,t=globalThis.crypto){if(!t?.subtle)throw new Error("Web Crypto is unavailable.");const r=new TextEncoder().encode(Xc(e)),n=await t.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(n),s=>s.toString(16).padStart(2,"0")).join("")}function Wm(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure task operation identity generation is unavailable.");return`operation-${globalThis.crypto.randomUUID()}`}function hN(){return{operationId:Wm(),taskId:`task-${globalThis.crypto.randomUUID()}`}}async function $v(e,t,r){const n={...t,headers:{...t.headers||{},"x-taskforce-operation-id":r}};try{return await fetch(e,n)}catch{return fetch(e,n)}}async function Hg(e){if(e.ok||![400,404,409,422].includes(e.status))return!1;const t=await e.clone().json().catch(()=>null),r=String(t?.code||"").trim();return new Set(["TASK_CREATE_UNSUPPORTED_INPUT","DURABLE_TASK_HTTP_PATCH_UNSUPPORTED","DURABLE_TASK_PATCH_INVALID","WORKSPACE_SYNC_OPERATION_ID_REQUIRED","TASK_NOT_FOUND","TASK_ARCHIVED_READ_ONLY","TASK_CHECKLIST_INVALID","TASK_ATTACHMENT_LINKS_INVALID","TASK_COMMENT_INVALID","TASK_COMMENT_IDENTITY_CONFLICT","TASK_DETAIL_REVISION_CONFLICT"]).has(r)}function Kk(e){const{id:t,createdAt:r,updatedAt:n,...s}=e;return s}function $S(e){return`taskforce.sync.v3.cloud-task-create-participant-v1:${e}`}function Fv(e){const t=new ZI,r=new Kw,n=new Map,s=c=>{const d=globalThis.sessionStorage?.getItem($S(c));if(d)try{const f=JSON.parse(d);if(typeof f.participantId=="string"&&f.participantId.trim())return{participantId:f.participantId.trim(),draftFingerprint:typeof f.draftFingerprint=="string"?f.draftFingerprint:null}}catch{}const m=n.get(c);return m||{participantId:Wm(),draftFingerprint:null}},i=(c,d)=>{n.set(c,d),globalThis.sessionStorage?.setItem($S(c),JSON.stringify(d))},l=c=>{i(c,{participantId:Wm(),draftFingerprint:null})};return{async prepareCreate(c,d){const m=hN(),f={...d,id:m.taskId},g=await qw({workspaceId:c,task:Kk(d)});let h=s(c);h.draftFingerprint&&h.draftFingerprint!==g?h={participantId:Wm(),draftFingerprint:g}:h={...h,draftFingerprint:g},i(c,h);const y=await t.claim(c,h.participantId,f,()=>m.operationId),k=Kk(y.task);return{operationId:y.operationId,body:y.task,recoveredChangedInput:hn(k)!==hn(Kk(d))}},async confirmCreate(c,d){await t.markResolved(c,d),l(c)},resetCreateDraft(c){l(c)},async prepareUpdate(c,d,m,f){const g=hn({workspaceId:c,url:d,body:m,observedPrecondition:f}),h=await r.getOrCreate(g,Wm);return{fingerprint:g,operationId:h.operationId}},confirmUpdate(c,d){return r.deleteIfMatches(c,d)}}}function gN(e){const{activeCategories:t,activeTab:r,apiEndpoint:n,assignee:s,attachments:i,attachmentsDirty:l,category:c,checklistItems:d,comments:m,complexity:f,description:g,dueDate:h,createTaskDurably:y,durableTaskHttpRootActivationEnabled:k=!1,workspaceId:v,taskHttpMutationClient:A,updateTask:b,editingTaskId:w,editorBaselineDraft:R=null,revisionConflict:N=!1,fetchTasks:j,formTaxonomies:E,getAttachmentsDraft:S,getDescriptionDraft:L,getPreferredCategoryValue:_,getTitleDraft:T,awaitPendingDescriptionImageUpload:H,mergeTaskFromServer:q,onTaskCreated:z,onTaskCreateAccepted:M,workstreamInput:Z,priority:J,pushNotice:ee,queueWorkspaceSyncFromAuthoritativeTaskState:te,relationshipTasks:fe,supplementalTasks:Ie=[],resetForm:$e,resolveWorkstreamIdInput:Ye,scheduledDate:ye,setActiveTab:ge,setAttachmentsDirty:oe,setComments:ie,setError:me,setLastUsedCategory:W,setLoading:V,setNewCommentText:B,status:D,title:be,taxonomies:Se,textDraftOccupied:K,type:Y}=e,G=T||(()=>be),ae=L||(()=>g),_e=S||(()=>i),Oe=o.useRef(G),Fe=o.useRef(ae),st=o.useRef(_e),ft=o.useRef(H);Oe.current=G,Fe.current=ae,st.current=_e,ft.current=H;const xe=o.useCallback(()=>({title:Oe.current(),description:Fe.current()}),[]),[ke,ve]=o.useState(null),[Ve,Ne]=o.useState("idle"),[de,x]=o.useState(null),le=o.useRef(null),Re=o.useRef(null),Je=o.useRef(null),X=o.useRef(null),Ze=o.useRef(!1),re=o.useRef(null),Ee=o.useRef(null),je=o.useRef(!1),Pe=o.useRef(null),Ce=w&&(fe.find(U=>U.id===w)||Ie.find(U=>U.id===w))||null,Te=Ce?.isDeleted?"deleted":Ce?.isArchived?"archived":null,pe=r==="add"&&!w&&((K??(be.trim()!==""||g.trim()!==""))||d.length>0||(m?.length||0)>0||i.length>0);o.useEffect(()=>{je.current&&!pe&&(Ee.current?.resetCreateDraft(v),y?.resetDraft?.()),je.current=pe},[pe,y,v]);const Me=o.useCallback(U=>JSON.stringify({title:U.title.trim(),description:U.description,category:U.category,type:U.type,priority:Number(U.priority),complexity:Number(U.complexity)||3,assignee:U.assignee||"agent",scheduledDate:U.scheduledDate||"",dueDate:U.dueDate||"",workstreamId:U.workstreamId||"",checklistItems:U.checklistItems,taxonomies:U.taxonomies,attachments:U.attachments}),[]),et=o.useCallback((U=xe(),he=st.current())=>Me({title:U.title,description:U.description,category:typeof c=="string"?c:c.label||_(t),type:typeof Y=="string"?Y:Y.label||wo,priority:J,complexity:Number(f)||3,status:D,assignee:s||"agent",scheduledDate:ye,dueDate:h,workstreamId:Z.trim()?Ye(Z)?.id||Z.trim():"",checklistItems:d,taxonomies:E,attachments:he}),[t,s,Me,c,d,f,g,h,E,_,J,xe,Ye,ye,D,be,Y,Z]),Ue=o.useCallback(()=>{le.current!==null&&(window.clearTimeout(le.current),le.current=null)},[]),yt=o.useCallback(()=>!!(w&&de!==null&&et()!==de),[et,w,de]),Le=yt();o.useEffect(()=>{N&&(Ue(),Re.current=null,Ne("idle"))},[Ue,N]);const mt=o.useCallback(U=>{if(Je.current===U.signature&&Re.current===null&&X.current||(Re.current=U,X.current))return X.current;const Ke=(async()=>{let Et=!0;for(;Re.current;){const vt=Re.current;Re.current=null,Je.current=vt.signature,Et=await vt.save(),Et&&x(vt.signature)}return Je.current=null,Et})().finally(()=>{Je.current=null,X.current=null});return X.current=Ke,Ke},[]),kt=o.useCallback(async U=>{const he=U?.quiet??!1,Ke=U?.source??"manual";if(w&&N)return me(""),Ne("idle"),!1;if(!w&&Ke==="manual")try{await ft.current?.()}catch(cr){console.error("Description image upload did not settle before task creation.",cr);const Ot="Wait for the Description image upload to finish, then try again.";return me(Ot),he||ee(Ot,"error"),!1}const Et=U?.textDraft??xe(),vt=Et.title,Bt=Et.description,dr=st.current();if(w||(re.current=null),Te)return me(Te==="deleted"?"Deleted tasks are read-only. Restore first to make changes.":"Archived tasks are read-only. Unarchive first to make changes."),Ne(Ke==="autosave"?"error":"idle"),!1;if(!vt.trim())return me("Title is required"),w&&Ne(Ke==="autosave"?"error":"idle"),!1;const er=Se.filter(cr=>cr.isRequired).filter(cr=>{const Ot=E[cr.id];return Array.isArray(Ot)?Ot.filter(fr=>String(fr).trim().length>0).length===0:typeof Ot!="string"&&typeof Ot!="number"||String(Ot).trim().length===0}).map(cr=>cr.label);if(er.length>0)return me(`Required taxonomy values are missing: ${er.join(", ")}`),w&&Ne(Ke==="autosave"?"error":"idle"),!1;V(!0),me(""),w&&Ne("saving");try{const cr=w?`/api/taskforce/task/${w}`:n.replace("/api/dev/task","/api/taskforce/task").replace("/api/taskforce/task","/api/taskforce/task"),Ot=w?"PATCH":"POST",fr=typeof c=="string"?c:c.label||_(t),Ar=typeof Y=="string"?Y:Y.label||wo,Lr=Z.trim()?Ye(Z):null,Wr=w?fe.find(St=>St.id===w):null,De=!w||!Wr||hn(Wr.checklistItems||[])!==hn(d),nt={title:vt,description:Bt||null,category:fr||_(t),type:Ar,priority:J,complexity:Number(f)||3,status:w?void 0:D,completedAt:w?void 0:D==="done"?new Date().toISOString():null,assignee:s||"agent",scheduledDate:ye||null,dueDate:h||null,workstreamId:Z.trim()?Lr?.id||Z.trim():null,taxonomies:E,...w?{}:{createdAt:new Date().toISOString(),createdBy:"user"}};if(w&&Wr)for(const[St,Kt]of Object.entries(nt))(Kt===void 0||hn(Kt??null)===hn(Wr[St]??null))&&delete nt[St];if(De&&(nt.checklistItems=d),w||(nt.comments=m),(!w||l)&&(nt.attachments=dr),w&&Object.keys(nt).length>0&&(nt.saveSource=Ke,Wr?.detailRevision&&(nt.expectedDetailRevision=Wr.detailRevision)),w&&b){const St=await b(w,nt);return V(!1),Ne(St===!1?"error":"saved"),St===!1?!1:(W(fr),oe(!1),!0)}if(!w&&y){let St;try{St=await y(nt)}catch(Kt){console.error("Durable task create failed before a conclusive result.",Kt);const Ft="Task creation confirmation was interrupted. Retry the same task to confirm it safely.";return me(Ft),he||ee(Ft,"error"),V(!1),!1}if(St){if(St.state==="failed"||St.state==="rejected"||St.state==="ambiguous"||St.state==="disabled"){const Kt=St.state==="disabled"?"Task was not created because durable capture became unavailable. Reload before retrying.":St.state==="failed"?"Task was not created because durable local preparation failed. Retry the task.":St.state==="rejected"?`Task was not created because durable capture rejected it${St.errorCode?` (${St.errorCode})`:""}.`:"Task creation confirmation was interrupted. Retry the same task to confirm it safely.";return me(Kt),he||ee(Kt,"error"),V(!1),!1}if(St.task){const Kt=Qs(St.task);re.current=Kt,q(Kt)}if(St.recoveredChangedInput&&(Ze.current=!0,ee("Recovered the previously interrupted task. Changes made after the interrupted submission were not applied.","info")),St.state==="pending")St.pendingReason!=="queued"&&(Ze.current=!0,ee(St.pendingReason==="auth"?"Task created locally. Sign in to finish cloud sync.":St.pendingReason==="sync-disabled"?"Task created locally. Turn on sync to send it to cloud.":"Task created locally. Cloud sync will retry automatically.","info")),me("");else if(St.state==="blocked"){Ze.current=!0;const Kt=`Task created locally, but cloud sync is blocked${St.errorCode?` (${St.errorCode})`:""}.`;me(Kt),ee(Kt,"error")}else me("");return W(fr),oe(!1),V(!1),!0}}let pt=!1,ut=null,Tt=nt;if(k&&!w){Ee.current||(Ee.current=A||Fv());const St=await Ee.current.prepareCreate(v,nt);ut=St.operationId,Tt=St.body,pt=St.recoveredChangedInput}const Xt={method:Ot,headers:{"Content-Type":"application/json"},body:JSON.stringify(Tt)},Nt=ut?await $v(cr,Xt,ut):await fetch(cr,Xt);if(!Nt.ok){!w&&ut&&await Hg(Nt)&&await Ee.current?.confirmCreate(v,ut);const St=await Nt.json(),Kt=St.error||St.message||`Failed to ${w?"update":"save"} task`;return me(Kt),he||ee(Kt,"error"),V(!1),w&&Ne("error"),!1}const Qt=await Nt.json().catch(()=>null);if(!w&&ut&&(!Qt||typeof Qt!="object"||String(Qt.id||"")!==String(Tt.id||"")))throw new Error("Durable cloud task create returned an invalid authoritative task identity.");if(!w&&ut&&await Ee.current?.confirmCreate(v,ut),pt&&(Ze.current=!0,ee("Recovered the previously interrupted task. Changes made after the interrupted submission were not applied.","info")),Qt&&typeof Qt=="object"){const St=Qs(Qt);q(St),w?te():re.current=St}return W(fr),oe(!1),V(!1),w&&Ne("saved"),!0}catch(cr){return console.error("Failed to save task.",cr),me("Failed to connect to server"),he||ee("Failed to connect to server","error"),V(!1),w&&Ne("error"),!1}},[t,n,s,l,c,d,m,f,h,y,k,v,A,b,w,N,Te,E,_,q,Z,J,ee,te,xe,Ye,oe,me,W,V,ye,D,Se,Y]),He=o.useCallback(async()=>{if(await kt({source:"manual"})&&(!w&&!Ze.current&&ee("Task added successfully","success"),Ze.current=!1,r==="add"&&!w)){const he=re.current;if(he&&M)try{await M(he)}catch(Ke){console.warn("Task create draft upload promotion failed.",Ke),ee("Task created successfully. Temporary image cleanup will retry automatically.","info")}if(he&&z){z(he);return}$e(),ge("tasks"),await j()}},[r,w,j,M,z,ee,$e,kt,ge]);o.useEffect(()=>{if(Ue(),Re.current=null,!w){x(null),Ne("idle");return}x(R?Me(R):et()),Ne("idle")},[Me,Ue,w,R]);const rt=o.useCallback(async()=>{if(Ue(),Te)return!0;if(N)return!1;if(!w||de===null)return!0;const U=xe(),he=et(U);return he===de?!0:!U.title.trim()||h&&ye&&h<ye?!1:await mt({signature:he,save:()=>kt({quiet:!0,source:"autosave",textDraft:U})})&&et()===he},[et,Ue,h,w,Te,mt,de,xe,N,kt,ye]);o.useEffect(()=>{if(!w||Te||N||de===null)return;const U=xe(),he=et(U);if(he===de)return;if(!U.title.trim()){Ne("idle");return}if(h&&ye&&h<ye){Ne("error");return}Ne(vt=>vt==="error"?"error":"idle"),Ue();const Et=(()=>{try{return String(JSON.parse(de).assignee||"")}catch{return""}})()!==String(s||"agent")?0:1400;return le.current=window.setTimeout(async()=>{await mt({signature:he,save:()=>kt({quiet:!0,source:"autosave",textDraft:U})})},Et),()=>{Ue()}},[et,s,Ue,h,w,Te,mt,de,xe,N,kt,ye]);const It=o.useCallback(async U=>{if(U.preventDefault(),h&&ye&&h<ye){ve({dueDate:h,scheduledDate:ye});return}await He()},[h,He,ye]),Xe=o.useCallback(async()=>{ve(null),await He()},[He]),wt=o.useCallback(()=>{ve(null)},[]),at=o.useCallback(async U=>{if(!w||!U.trim())return;const he=U.trim(),Ke=Pe.current,Et=Ke?.taskId===w&&Ke.text===he?Ke:{taskId:w,text:he,operationId:globalThis.crypto?.randomUUID?.()||`comment-operation-${Date.now()}`,commentId:`comment-${globalThis.crypto?.randomUUID?.()||Date.now()}`,timestamp:new Date().toISOString()};Pe.current=Et;try{const vt=await fetch(`/api/taskforce/task/${w}/comment`,{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-operation-id":Et.operationId},body:JSON.stringify({text:he,commentId:Et.commentId,timestamp:Et.timestamp})});if(!vt.ok){const dr=await Hg(vt),cr=(await vt.json().catch(()=>({}))).error||"Failed to add comment.";dr&&(Pe.current=null),me(cr),ee(cr,"error");return}const Bt=await vt.json().catch(()=>null);if(Pe.current=null,B(""),Bt&&typeof Bt=="object"){const dr=Qs(Bt);ie(dr.comments||[]),q(Bt),x(et()),Ne("saved")}else await j(!0);te()}catch(vt){console.error("Failed to add comment",vt),me("Failed to add comment."),ee("Failed to add comment.","error")}},[w,j,et,q,ee,te,ie,me,B]);return{autoSaveState:Ve,hasUnsavedChanges:Le,hasUnsavedChangesNow:yt,hasPendingAutoSave:Ve==="saving",flushAutoSave:rt,scheduleWarningPrompt:ke,saveTask:kt,handleSubmit:It,confirmScheduleWarning:Xe,cancelScheduleWarning:wt,handleAddComment:at}}const yN=(e,t)=>globalThis.fetch(e,t),Vg="taskforce.task-description-image-draft-recovery.v1",FS=[1e3,5e3,15e3,6e4],kN=8,US=Number.MAX_SAFE_INTEGER;function vN(e){const t=Math.max(0,Math.min(FS.length-1,Math.floor(e)-1));return FS[t]}function Ku(e){return`${e.workspaceId}\0${e.createdByUserId}\0${e.draftUploadId}`}function wN(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.workspaceId=="string"&&!!t.workspaceId.trim()&&typeof t.createdByUserId=="string"&&!!t.createdByUserId.trim()&&typeof t.draftUploadId=="string"&&!!t.draftUploadId.trim()&&(t.resolution==="promote"||t.resolution==="discard")&&Number.isFinite(t.attempts)&&Number.isFinite(t.nextAttemptAt)&&Number.isFinite(t.createdAt)}function Uv(e){if(!e)return[];try{const t=JSON.parse(e.getItem(Vg)||"[]");if(!Array.isArray(t))return[];const r=new Map;return t.filter(wN).forEach(n=>{r.set(Ku(n),n)}),[...r.values()]}catch{return[]}}function bN(e,t){if(e)try{if(t.length===0){e.removeItem(Vg);return}e.setItem(Vg,JSON.stringify(t))}catch{}}function qk(e,t){const r=t(Uv(e));return bN(e,r),r}function SN(){try{return globalThis.localStorage||null}catch{return null}}function AN(e,t,r={}){const n=r.fetchImpl||yN,s=r.storage===void 0?SN():r.storage,i=r.now||Date.now,l=o.useRef(null),c=o.useRef(new Map),d=o.useRef(async()=>{}),m=o.useCallback(()=>{l.current!==null&&(clearTimeout(l.current),l.current=null)},[]),f=o.useCallback(()=>{m();const k=Uv(s).filter(A=>A.workspaceId===e&&A.createdByUserId===t&&A.nextAttemptAt<US).sort((A,b)=>A.nextAttemptAt-b.nextAttemptAt)[0];if(!k)return;const v=Math.max(0,k.nextAttemptAt-i());l.current=setTimeout(()=>{l.current=null,d.current(!1)},v)},[m,t,i,s,e]),g=o.useCallback(k=>{const v=Ku(k),A=c.current.get(v);if(A)return A;const b=(async()=>{await Promise.resolve();try{const w=await n(`/api/taskforce/context-upload/draft/${k.resolution}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:k.workspaceId,draftUploadId:k.draftUploadId,uploadPurpose:"task-description-draft"})});if(!w.ok)throw new Error(`Draft upload ${k.resolution} was rejected (${w.status}).`);qk(s,R=>R.filter(N=>Ku(N)!==v))}catch(w){throw qk(s,R=>R.map(N=>{if(Ku(N)!==v)return N;const j=Math.min(Number.MAX_SAFE_INTEGER,N.attempts+1);return{...N,attempts:j,nextAttemptAt:j>=kN?US:i()+vN(j)}})),w}finally{c.current.delete(v),f()}})();return c.current.set(v,b),b},[n,i,f,s]),h=o.useCallback(async(k=!1)=>{const v=i(),A=Uv(s).filter(b=>b.workspaceId===e&&b.createdByUserId===t&&(k||b.nextAttemptAt<=v));await Promise.allSettled(A.map(b=>g(b))),f()},[g,t,i,f,s,e]);return d.current=h,o.useEffect(()=>{h(!0);const k=()=>{h(!0)},v=()=>{document.visibilityState==="visible"&&h(!0)},A=b=>{b.key===Vg&&h(!1)};return window.addEventListener("online",k),window.addEventListener("storage",A),document.addEventListener("visibilitychange",v),()=>{m(),window.removeEventListener("online",k),window.removeEventListener("storage",A),document.removeEventListener("visibilitychange",v)}},[m,h]),{resolveDraft:o.useCallback(async k=>{const v=k.draftUploadId.trim();if(!e||!t||!v)return;const A=i(),b={workspaceId:e,createdByUserId:t,draftUploadId:v,resolution:k.resolution,attempts:0,nextAttemptAt:A,createdAt:A};qk(s,w=>[...w.filter(R=>Ku(R)!==Ku(b)),b]),await g(b)},[g,t,i,s,e])}}function CN(e){const{editingTaskId:t,workstreamInput:r,pushNotice:n,relationshipTasks:s,resolveWorkstreamIdInput:i,setError:l,updateTask:c}=e;return{handleSetWorkstreamForCurrentTask:o.useCallback(async m=>{if(!t)return;const f=s.find(k=>k.id===t);if(!f)return;const g=typeof m=="string"?m.trim():m===null?"":r.trim(),h=g?i(g):null,y=g.length>0?h?.id||g:null;if((f.workstreamId||null)===y){n(y?"Task already belongs to that workstream.":"Task is already standalone.","info");return}try{if(await c(t,{workstreamId:y})===!1)return;l(""),n(y?"Workstream set":"Workstream removed","info")}catch{l("Failed to set workstream."),n("Failed to set workstream.","error")}},[t,r,n,s,i,l,c])}}const Yw=new Set(["title","description","priority","complexity","type","category","createdBy","assignee","scheduledDate","dueDate","scheduledWeekKey","orderInDay","workstreamId","taxonomies"]);function IN(e){const t={};for(const r of Yw)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}class vg extends Error{constructor(t,r,n){super(t),this.code=r,this.statusCode=n,this.name="DurableTaskMetadataMutationError"}}function JI(e){const t=e&&typeof e=="object"&&!Array.isArray(e)?e:null;if(!t)throw new vg("Task metadata patch must be an object.","DURABLE_TASK_PATCH_INVALID",400);const r=Object.keys(t);if(r.length===0)throw new vg("Task metadata patch cannot be empty.","DURABLE_TASK_PATCH_INVALID",400);const n=r.filter(s=>!Yw.has(s));if(n.length>0)throw new vg(`Task metadata patch contains unsupported fields: ${n.sort().join(", ")}.`,"DURABLE_TASK_PATCH_INVALID",400);return{...t}}const Wd="taskforce:tasks-mutated";function _N(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Wd,{detail:e}))}const Vh=Yw,TN=new Set(["status","assignee","canceledReason","completedAt","completed","inProgress","readyForReview","cancelled"]);function xN(e,t){return e===void 0||t===void 0?e===t:hn(e)===hn(t)}function _n(e,t,r,n){return t?e.map(s=>{if(s.id!==r)return s;const i={...s};for(const l of Object.keys(n))Object.prototype.hasOwnProperty.call(t,l)?i[l]=t[l]:delete i[l];return i}):e}function Im(e,t){return{taskId:t,updatedAt:e?.updatedAt??null,detailRevision:e?.detailRevision??null,status:e?.status??null,isArchived:e?.isArchived===!0}}function RN({tasks:e,archivedTasks:t,editingTaskId:r,editingTaskDetailRevision:n=null,setTasks:s,setArchivedTasks:i,setDeletedTasks:l,setError:c,resetForm:d,setActiveTab:m,fetchTasks:f,fetchArchive:g,fetchDeletedTasks:h,mergeTaskFromServer:y,pushNotice:k,cloudAuthConfigured:v,runtimeMode:A,isAuthenticated:b,workspaceCloudSyncEnabled:w,buildWorkspaceSyncSignature:R,pushWorkspaceChangesToCloud:N,workspacePendingSignatureRef:j,workspaceDeletedTaskIdsRef:E,workspaceDeletedTaskWatermarksRef:S,mutateTaskMetadata:L,mutateTaskStatus:_,mutateTaskLifecycle:T,mutateTaskDelete:H,mutateTaskRestore:q,durableTaskMetadataActivationEnabled:z=!1,durableTaskStatusActivationEnabled:M=!1,durableTaskDeleteActivationEnabled:Z=!1,durableTaskHttpRootActivationEnabled:J=!1,workspaceId:ee="default",taskHttpMutationClient:te,onTaskRevisionConflict:fe,onTaskMutationAccepted:Ie,pendingTaskMetadataOverlaysRef:$e}){const Ye=o.useRef(new Map);o.useEffect(()=>{if(typeof window>"u")return;const x=le=>{const Re=le.detail,Je=Re?.authoritativeTask,X=String(Re?.workspaceId||"").trim()||"default";!Je||X!==ee||(Ye.current.set(Je.id,Je),y(Je))};return window.addEventListener(Wd,x),()=>window.removeEventListener(Wd,x)},[y,ee]);const[ye,ge]=o.useState(null),oe=o.useRef(null),ie=o.useRef(null),me=o.useRef(null),W=o.useRef(null),V=o.useCallback(async(x,le,Re,Je,X)=>{const Ze=["checklistItems","attachments","comments"].some(je=>Object.prototype.hasOwnProperty.call(Re,je));if(!J&&!Ze)return fetch(x,le);W.current||(W.current=te||Fv());const re=await W.current.prepareUpdate(ee,x,Re,Je),Ee=await $v(x,le,re.operationId);if(Ee.ok){const je=await Ee.clone().json().catch(()=>null);if(!X(je))throw new Error("Durable cloud task mutation returned an invalid authoritative response.");await W.current.confirmUpdate(re.fingerprint,re.operationId)}else await Hg(Ee)&&await W.current.confirmUpdate(re.fingerprint,re.operationId);return Ee},[J,te,ee]),B=o.useCallback((x,le,Re,Je,X)=>V(x,le,Re,X,Ze=>!!Ze&&typeof Ze=="object"&&String(Ze.id||"")===Je),[V]);o.useEffect(()=>()=>{typeof window>"u"||(ie.current!==null&&(window.clearTimeout(ie.current),ie.current=null),me.current=null)},[]);const D=o.useCallback((x=0)=>{if(!(v&&A==="local"&&b&&w)||typeof window>"u")return;const le=Math.max(0,x),Re=Date.now()+le,Je=me.current;if(ie.current!==null){if(le<=0||Je!==null&&Je>=Re)return;window.clearTimeout(ie.current),ie.current=null}me.current=Re,ie.current=window.setTimeout(()=>{ie.current=null,me.current=null;const X=R();X&&(j.current=X,N(X))},le)},[v,A,b,w,R,j,N]),be=o.useCallback(async(x,le)=>{let Re=await fetch(`/api/taskforce/deleted${x}`,le);return Re.status===404&&(Re=await fetch(`/api/taskforce/trash${x}`,le)),Re},[]),Se=async(x,le=!1,Re={})=>{if(!Re.skipConfirm&&!confirm("Move this task to Trash? You can restore it later."))return!1;const Je=le||t.some(X=>X.id===x);try{let X=null;if(Z){const Ee=await H?.(x);if(!Ee){const je="Task was not deleted because durable capture was unavailable.";return c(je),k(je,"error"),!1}if(Ee.state!=="disabled"){if(Ee.state==="rejected"||Ee.state==="failed"||Ee.state==="ambiguous"){const je=Ee.state==="ambiguous"?"Task delete confirmation was interrupted. Retry the same delete to confirm it safely.":`Task was not deleted because durable capture rejected it${Ee.errorCode?` (${Ee.errorCode})`:""}.`;return c(je),k(je,"error"),!1}if(X=Ee.deleted||null,!X){const je="Task delete was captured, but its Trash record was unavailable.";return c(je),k(je,"error"),!1}}}let Ze=X?{deleted:X}:{};if(!X){const Ee=`/api/taskforce/task/${x}`,je=e.find(Ce=>Ce.id===x)||t.find(Ce=>Ce.id===x),Pe=await V(Ee,{method:"DELETE"},{},Im(je,x),Ce=>!!Ce&&typeof Ce=="object"&&Ce.success===!0&&!!Ce.deleted&&typeof Ce.deleted=="object"&&String(Ce.deleted.taskId||"")===x);if(!Pe.ok){const Te=(await Pe.json().catch(()=>({}))).error||"Failed to delete task.";return c(Te),k(Te,"error"),!1}Ze=await Pe.json().catch(()=>({}))}const re=Ze?.deleted&&typeof Ze.deleted=="object"&&Ze.deleted.taskSnapshot?{...Ze.deleted,taskSnapshot:Qs(Ze.deleted.taskSnapshot)}:null;if(window.location.search.includes(x)){const Ee=new URL(window.location.href);Ee.searchParams.delete("task"),window.history.pushState({},"",Ee.toString())}if(Je?i(Ee=>Ee.filter(je=>je.id!==x)):s(Ee=>Ee.filter(je=>je.id!==x)),re){l(je=>[re,...je.filter(Pe=>Pe.taskId!==x)]);const Ee=String(re.deletedAt||"").trim();Number.isFinite(Date.parse(Ee))&&S.current.set(x,Ee)}else await h(!0),S.current.set(x,new Date().toISOString());if(E.current.add(x),!X&&v&&A==="local"&&b&&w){const Ee=R();j.current=Ee,N(Ee)}return r===x&&(d(),m("tasks")),c(""),k("Task moved to Trash.","info"),!0}catch(X){return console.error("Failed to delete task:",X),c("Failed to delete task."),k("Failed to delete task.","error"),!1}},K=o.useCallback(async(x,le,Re={})=>{try{const Je=`/api/taskforce/deleted/${x}/restore`,X=String(le||"").trim();if(Z){if(!X||!q)throw new Error("Durable local task restore requires the expected task identity and capture client.");const Pe=await q(x,X,Re.restoreDestination||"previous");if(!Pe||Pe.state==="failed"||Pe.state==="ambiguous"||Pe.state==="rejected"||Pe.state==="disabled"){const Te="Failed to capture task restore durably.";return c(Te),Re.silent||k(Te,"error"),null}const Ce=Pe.task;if(!Ce||Ce.id!==X)throw new Error("Durable local task restore did not return the restored task.");return y(Ce),l(Te=>Te.filter(pe=>pe.id!==x&&pe.taskId!==X)),E.current.delete(x),E.current.delete(X),S.current.delete(x),S.current.delete(X),c(""),Re.silent||k(Pe.state==="accepted"?"Task restored from Trash.":"Task restored locally; cloud sync is pending.","info"),Qs(Ce)}if(J&&!X)throw new Error("Durable cloud task restore requires the expected task identity.");const Ze=S.current.get(X)||S.current.get(x)||null,re=J?await V(Je,{method:"POST"},{},{taskId:X,updatedAt:Ze,status:"deleted",isArchived:!1},Pe=>!Pe||typeof Pe!="object"?!1:String(Pe.id||"").trim()===X):await be(`/${x}/restore`,{method:"POST"});if(!re.ok){const Ce=(await re.json().catch(()=>({}))).error||"Failed to restore deleted task.";return c(Ce),Re.silent||k(Ce,"error"),null}const Ee=await re.json().catch(()=>null);Ee?y(Ee):await f(!0);const je=String(Ee?.id||"").trim();return l(Pe=>Pe.filter(Ce=>Ce.id!==x&&Ce.taskId!==X&&Ce.taskId!==je)),E.current.delete(x),S.current.delete(x),je&&(E.current.delete(je),S.current.delete(je)),D(),c(""),Re.silent||k(Ee?.isArchived===!0?"Task restored to Archived.":"Task restored to Active.","info"),Ee?Qs(Ee):null}catch(Je){return console.error("Failed to restore deleted task:",Je),c("Failed to restore deleted task."),Re.silent||k("Failed to restore deleted task.","error"),null}},[J,Z,V,f,y,q,k,D,be,l,c]),Y=o.useCallback(async x=>{try{const le=await be(`/${x}`,{method:"DELETE"});if(!le.ok){const Je=(await le.json().catch(()=>({}))).error||"Failed to permanently delete deleted task.";return c(Je),k(Je,"error"),!1}return l(Re=>Re.filter(Je=>Je.id!==x&&Je.taskId!==x)),D(),c(""),k("Deleted task permanently removed.","info"),!0}catch(le){return console.error("Failed to permanently delete deleted task:",le),c("Failed to permanently delete deleted task."),k("Failed to permanently delete deleted task.","error"),!1}},[k,D,be,l,c]),G=o.useCallback(async()=>{try{const x=await be("/empty",{method:"POST"});if(!x.ok){const X=(await x.json().catch(()=>({}))).error||"Failed to permanently delete deleted tasks.";return c(X),k(X,"error"),null}const le=await x.json().catch(()=>({})),Re=Number(le?.deleted||0);return l([]),D(),c(""),k(Re===1?"Deleted task permanently removed.":`${Re} deleted tasks permanently removed.`,"info"),Re}catch(x){return console.error("Failed to empty deleted tasks:",x),c("Failed to permanently delete deleted tasks."),k("Failed to permanently delete deleted tasks.","error"),null}},[k,D,be,l,c]),ae=o.useCallback((x,le,Re,Je,X)=>{if(x.state==="disabled")return!1;if(x.state==="rejected"||x.state==="failed"){const Ze=Je.find(Ee=>Ee.id===le)||X.find(Ee=>Ee.id===le);s(Ee=>_n(Ee,Ze,le,Re)),i(Ee=>_n(Ee,Ze,le,Re));const re=x.state==="failed"?"Task was not saved because durable local preparation failed. Retry the edit.":x.retryable?"Task was not saved because durable capture is busy. Retry the edit shortly.":`Task was not saved because durable capture rejected it${x.errorCode?` (${x.errorCode})`:""}.`;return c(re),k(re,"error"),!0}if("task"in x&&x.task&&(y(x.task),Ie?.(x.task)),x.state==="accepted")c("");else if(x.state==="pending")c(""),x.pendingReason!=="queued"&&k(x.pendingReason==="auth"?"Task saved locally. Sign in to finish cloud sync.":x.pendingReason==="sync-disabled"?"Task saved locally. Turn on sync to send it to cloud.":"Task saved locally. Cloud sync will retry automatically.","info");else{const Ze=x.state==="blocked"?`Task saved locally, but cloud sync is blocked${x.errorCode?` (${x.errorCode})`:""}.`:"Task save confirmation was interrupted. Retry the same edit to confirm it safely.";c(Ze),k(Ze,"error")}return!0},[y,Ie,k,i,c,s]),_e=o.useCallback(async(x,le,Re={},Je)=>{const X=Je??(x.id===r?n:null),Ze=Object.keys(Re).some(Te=>Vh.has(Te)),re=Object.keys(Re).filter(Te=>!TN.has(Te)&&!Vh.has(Te));if(M&&re.length>0){const Te=`Task status was not saved because the combined update contains unsupported fields: ${re.sort().join(", ")}.`;c(Te),k(Te,"error");return}const Ee=new Date().toISOString(),je={...Re,status:le,completedAt:le==="done"||le==="cancelled"?Re.completedAt||Ee:null,completed:le==="done",inProgress:le==="in-progress",readyForReview:le==="review",cancelled:le==="cancelled"},Pe=e,Ce=t;if(s(Te=>Te.map(pe=>pe.id===x.id?{...pe,...je}:pe)),i(Te=>Te.map(pe=>pe.id===x.id?{...pe,...je}:pe)),_)try{const Te=(Me,et,Ue)=>{const yt=Object.prototype.hasOwnProperty.call(et,"assignee")?{kind:"set",value:et.assignee??null}:{kind:"preserve"},Le=IN(et);return delete Le.assignee,{status:Me,assigneeIntent:yt,canceledReason:Me==="cancelled"?et.canceledReason??null:null,metadataPatch:Le,...Ue?{expectedDetailRevision:Ue}:{}}};let pe=await _(x.id,Te(le,Re,X));if(pe&&(pe.state==="rejected"||pe.state==="failed")&&pe.errorCode==="TASK_DETAIL_REVISION_CONFLICT"){const Me=Pe.find(Ue=>Ue.id===x.id)||Ce.find(Ue=>Ue.id===x.id);s(Ue=>_n(Ue,Me,x.id,je)),i(Ue=>_n(Ue,Me,x.id,je));const et=await fe?.(x.id,null);if(et?.retryDetailRevision){const Ue=Object.fromEntries(Object.entries(Re).map(([Le,mt])=>[Le,et.retryPatch&&Object.prototype.hasOwnProperty.call(et.retryPatch,Le)?et.retryPatch[Le]:mt])),yt=et.retryPatch?.status||le;if(pe=await _(x.id,Te(yt,Ue,et.retryDetailRevision)),pe&&(pe.state==="rejected"||pe.state==="failed")&&pe.errorCode==="TASK_DETAIL_REVISION_CONFLICT"&&(await fe?.(x.id,null))?.handled){c("");return}}else if(et?.handled){c("");return}}if(pe&&ae(pe,x.id,je,Pe,Ce))return;if(!pe&&M){const Me=Pe.find(Ue=>Ue.id===x.id)||Ce.find(Ue=>Ue.id===x.id);s(Ue=>_n(Ue,Me,x.id,je)),i(Ue=>_n(Ue,Me,x.id,je));const et="Task status was not saved because durable capture was unavailable.";c(et),k(et,"error");return}}catch(Te){console.error("Durable task status update failed before a conclusive result.",Te);const pe=Pe.find(et=>et.id===x.id)||Ce.find(et=>et.id===x.id);s(et=>_n(et,pe,x.id,je)),i(et=>_n(et,pe,x.id,je));const Me="Task save confirmation was interrupted. Retry the same edit to confirm it safely.";c(Me),k(Me,"error");return}if(z&&Ze){const Te=Pe.find(Me=>Me.id===x.id)||Ce.find(Me=>Me.id===x.id);s(Me=>_n(Me,Te,x.id,je)),i(Me=>_n(Me,Te,x.id,je));const pe="Task was not saved because durable status capture is required for this combined metadata update.";c(pe),k(pe,"error");return}try{const Te={...Re,status:le,completedAt:je.completedAt,...X?{expectedDetailRevision:X}:{}};let pe=Te,Me,et={};for(let yt=0;Me=await B(`/api/taskforce/task/${x.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(pe)},pe,x.id,Im(x,x.id)),!(Me.ok||(et=await Me.json().catch(()=>({})),et.code!=="TASK_DETAIL_REVISION_CONFLICT"));yt+=1){s(Pe),i(Ce);const Le=typeof et?.details?.currentDetailRevision=="string"?et.details.currentDetailRevision:null,mt=await fe?.(x.id,Le);if(yt===0&&mt?.retryDetailRevision){pe={...Object.fromEntries(Object.entries(Te).map(([He,rt])=>[He,mt.retryPatch&&Object.prototype.hasOwnProperty.call(mt.retryPatch,He)?mt.retryPatch[He]:rt])),expectedDetailRevision:mt.retryDetailRevision};continue}if(mt?.handled){c("");return}break}if(!Me.ok){Object.keys(et).length===0&&(et=await Me.json().catch(()=>({})));const yt=et.error||"Failed to update task status.";c(yt),k(yt,"error"),s(Pe),i(Ce);return}const Ue=await Me.json().catch(()=>null);Ue?(y(Ue),Ie?.(Ue)):await f(!0),D(),c("")}catch(Te){console.error("Failed to update task status.",Te),c("Failed to update task status."),k("Failed to update task status.","error"),s(Pe),i(Ce)}},[t,z,n,r,J,M,f,B,ae,y,_,Ie,fe,k,D,i,c,s,e]),Oe=o.useCallback(async(x,le)=>{const Re=le,Je=Re.saveSource,X=typeof Re.expectedDetailRevision=="string"?Re.expectedDetailRevision:x===r?n:null;if(le=Object.fromEntries(Object.entries(le).filter(([Le])=>Le!=="saveSource"&&Le!=="expectedDetailRevision")),Object.keys(le).length===0)return!0;const Ze=Ye.current.get(x),re=e.find(Le=>Le.id===x)||t.find(Le=>Le.id===x),Ee=Date.parse(String(Ze?.updatedAt||"")),je=Date.parse(String(re?.updatedAt||"")),Pe=Ze&&(!re||Number.isFinite(Ee)&&(!Number.isFinite(je)||Ee>=je))?Ze:re;if(re&&Pe===re&&Ze&&Ye.current.delete(x),Pe&&(le=Object.fromEntries(Object.entries(le).filter(([Le,mt])=>!xN(Pe[Le],mt))),Object.keys(le).length===0))return!0;if(le.status){const Le=e.find(mt=>mt.id===x)||t.find(mt=>mt.id===x);if(Le){await _e(Le,le.status,le,X);return}if(M){const mt="Task status was not saved because the current task could not be resolved safely.";c(mt),k(mt,"error");return}}const Ce=e,Te=t;s(Le=>Le.map(mt=>mt.id===x?{...mt,...le}:mt)),i(Le=>Le.map(mt=>mt.id===x?{...mt,...le}:mt));const pe=Object.fromEntries(Object.entries(le).filter(([Le])=>Vh.has(Le)));let Me=Object.fromEntries(Object.entries(le).filter(([Le])=>!Vh.has(Le)));const et=Object.keys(pe).length>0;let Ue=Object.keys(Me).length>0,yt=!1;if(et&&L){const Le={patch:pe,observedUpdatedAt:Pe?.updatedAt||null};$e?.current.set(x,Le);const mt=()=>{$e?.current.get(x)===Le&&$e.current.delete(x)},kt=()=>!$e||$e.current.get(x)===Le;try{const He={...Je?{saveSource:Je}:{},...X?{expectedDetailRevision:X}:{}};let rt=Object.keys(He).length>0?await L(x,pe,He):await L(x,pe);if(!kt())return!1;if(rt&&rt.state!=="disabled"){if((rt.state==="rejected"||rt.state==="failed")&&rt.errorCode==="TASK_DETAIL_REVISION_CONFLICT"){const It=Ce.find(wt=>wt.id===x)||Te.find(wt=>wt.id===x);s(wt=>_n(wt,It,x,le)),i(wt=>_n(wt,It,x,le));const Xe=await fe?.(x,null);if(!kt())return!1;if(Xe?.retryDetailRevision){const wt=Xe.retryPatch,at=Object.fromEntries(Object.entries(pe).map(([U,he])=>[U,wt&&Object.prototype.hasOwnProperty.call(wt,U)?wt[U]:he]));if(Le.patch=at,rt=await L(x,at,{...Je?{saveSource:Je}:{},expectedDetailRevision:Xe.retryDetailRevision}),!kt())return!1;if(rt&&(rt.state==="rejected"||rt.state==="failed")&&rt.errorCode==="TASK_DETAIL_REVISION_CONFLICT"&&(await fe?.(x,null))?.handled)return c(""),!1}else if(Xe?.handled)return c(""),!1}if(!rt||rt.state==="disabled"){const It=Ce.find(wt=>wt.id===x)||Te.find(wt=>wt.id===x);s(wt=>_n(wt,It,x,le)),i(wt=>_n(wt,It,x,le));const Xe="Task was not saved because durable metadata capture became unavailable during retry.";return c(Xe),k(Xe,"error"),!1}if(rt.state==="rejected"||rt.state==="failed"){mt();const It=Ce.find(wt=>wt.id===x)||Te.find(wt=>wt.id===x);s(wt=>_n(wt,It,x,le)),i(wt=>_n(wt,It,x,le));const Xe=rt.state==="failed"?"Task was not saved because durable local preparation failed. Retry the edit.":rt.retryable?"Task was not saved because durable capture is busy. Retry the edit shortly.":`Task was not saved because durable capture rejected it${rt.errorCode?` (${rt.errorCode})`:""}.`;return c(Xe),k(Xe,"error"),!1}if(yt=!0,"task"in rt&&rt.task?.updatedAt&&$e?.current.get(x)===Le&&(Le.observedUpdatedAt=rt.task.updatedAt),"task"in rt&&rt.task&&(!$e||$e.current.get(x)===Le)&&(y(rt.task),Ie?.(rt.task)),rt.state==="accepted")c("");else if(rt.state==="pending")c(""),rt.pendingReason!=="queued"&&k(rt.pendingReason==="auth"?"Task saved locally. Sign in to finish cloud sync.":rt.pendingReason==="sync-disabled"?"Task saved locally. Turn on sync to send it to cloud.":"Task saved locally. Cloud sync will retry automatically.","info");else{const It=rt.state==="blocked"?`Task saved locally, but cloud sync is blocked${rt.errorCode?` (${rt.errorCode})`:""}.`:"Task save confirmation was interrupted. Retry the same edit to confirm it safely.";c(It),k(It,"error")}if(rt.state==="ambiguous"){if(Ue){const It=Ce.find(Xe=>Xe.id===x)||Te.find(Xe=>Xe.id===x);s(Xe=>_n(Xe,It,x,Me)),i(Xe=>_n(Xe,It,x,Me))}return!1}if(!Ue)return!0}else if(mt(),z){const It=Ce.find(wt=>wt.id===x)||Te.find(wt=>wt.id===x);s(wt=>_n(wt,It,x,le)),i(wt=>_n(wt,It,x,le));const Xe="Task was not saved because durable metadata capture was unavailable.";return c(Xe),k(Xe,"error"),!1}}catch(He){if(!kt())return!1;if(mt(),console.error("Durable task metadata update failed before a conclusive result.",He),Ue){const It=Ce.find(Xe=>Xe.id===x)||Te.find(Xe=>Xe.id===x);s(Xe=>_n(Xe,It,x,Me)),i(Xe=>_n(Xe,It,x,Me))}const rt="Task save confirmation was interrupted. Retry the same edit to confirm it safely.";return c(rt),k(rt,"error"),!1}}else if(et&&z){const Le=Ce.find(kt=>kt.id===x)||Te.find(kt=>kt.id===x);s(kt=>_n(kt,Le,x,le)),i(kt=>_n(kt,Le,x,le));const mt="Task was not saved because durable metadata capture was unavailable.";return c(mt),k(mt,"error"),!1}if(et&&!yt&&(Me={...pe,...Me},Ue=!0),!Ue)return!0;try{const Le={...Me,...Je?{saveSource:Je}:{},...X?{expectedDetailRevision:X}:{}},mt={method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(Le)};let kt=Le;for(let He=0;He<2;He+=1){const rt=He===0?mt:{...mt,body:JSON.stringify(kt)},It=await B(`/api/taskforce/task/${x}`,rt,kt,x,Im(Ce.find(U=>U.id===x)||Te.find(U=>U.id===x),x));if(It.ok){const U=await It.json().catch(()=>null);return y(U),U&&typeof U=="object"&&typeof U.id=="string"&&Ie?.(U),D(le.attachments!==void 0?150:0),c(""),!0}const Xe=await It.json().catch(()=>({})),wt=Ce.find(U=>U.id===x)||Te.find(U=>U.id===x);if(s(U=>_n(U,wt,x,Me)),i(U=>_n(U,wt,x,Me)),Xe.code==="TASK_DETAIL_REVISION_CONFLICT"){const U=typeof Xe?.details?.currentDetailRevision=="string"?Xe.details.currentDetailRevision:null,he=await fe?.(x,U);if(He===0&&he?.retryDetailRevision){const Ke=he.retryPatch;kt={...Object.fromEntries(Object.entries(Le).map(([vt,Bt])=>[vt,Ke&&Object.prototype.hasOwnProperty.call(Ke,vt)?Ke[vt]:Bt])),expectedDetailRevision:he.retryDetailRevision};continue}if(he?.handled)return c(""),!1}const at=Xe.error||`Failed to update task ${x}.`;return c(at),k(at,"error"),!1}return!1}catch(Le){console.error("Failed to update task",Le);const mt=`Failed to update task ${x}.`;c(mt),k(mt,"error");const kt=Ce.find(He=>He.id===x)||Te.find(He=>He.id===x);return s(He=>_n(He,kt,x,Me)),i(He=>_n(He,kt,x,Me)),!1}},[e,t,n,r,k,y,L,Ie,fe,$e,D,_e,z,M,B]),Fe=async x=>{const le=x.status==="done"?"task":"done";await _e(x,le)},st=async x=>{const le=x.status==="cancelled"?"task":"cancelled";await _e(x,le)},ft=async x=>{const le=x.status==="in-progress"?"task":"in-progress";await _e(x,le)},xe=async x=>{const le=x.status==="review"?"task":"review";await _e(x,le)},ke=async x=>{if(T)try{const le=await T(x.id,{mutationKind:"archive",cancellation:x.status==="cancelled",reason:x.status==="cancelled"?x.canceledReason??null:null});if(le&&ae(le,x.id,{},e,t)){const Re=le.state!=="rejected"&&le.state!=="failed"&&le.state!=="ambiguous";return r===x.id&&Re&&(d(),m("tasks")),Re}if(!le&&M)throw new Error("Durable task archive activation returned no result.")}catch(le){console.error("Durable task archive failed before a conclusive result.",le);const Re="Task archive confirmation was interrupted. Retry the same action to confirm it safely.";return c(Re),k(Re,"error"),!1}try{const Re=x.status==="cancelled"?"cancel":"complete",Je=`/api/taskforce/task/${x.id}/${Re}`,X=await V(Je,{method:"POST"},{},Im(x,x.id),Ze=>!!Ze&&typeof Ze=="object"&&String(Ze.id||"")===x.id);if(X.ok){const Ze=await X.json().catch(()=>null),re=[];if(Ze&&typeof Ze=="object"&&re.push(Ze),re.length>0){for(const je of re)y(je);D()}else g();const Ee=new Set(re.map(je=>String(je?.id||"").trim()).filter(je=>je.length>0));return r&&Ee.has(r)&&(d(),m("tasks")),!0}else{const re=(await X.json().catch(()=>({}))).error||"Failed to archive task.";return c(re),k(re,"error"),!1}}catch(le){return console.error("Failed to archive",le),c("Failed to archive task."),k("Failed to archive task.","error"),!1}},ve=async()=>{const x=e.filter(le=>le.status==="done"||le.status==="cancelled");if(x.length!==0&&confirm(`Archive ${x.length} completed/cancelled tasks?`)){if(T){let le=!1,Re=0;for(const Je of x)try{const X=await T(Je.id,{mutationKind:"archive",cancellation:Je.status==="cancelled",reason:Je.status==="cancelled"?Je.canceledReason??null:null});if(!X||X.state==="disabled"){if(!le&&(!M||X?.state==="disabled"))break;const Ze="Bulk archive stopped safely because durable capture became unavailable.";c(Ze),k(Ze,"error");return}if(le=!0,ae(X,Je.id,{},e,t)){if(X.state==="rejected"||X.state==="failed")return;Re+=1}}catch(X){console.error("Durable bulk archive confirmation was interrupted.",X);const Ze="Bulk archive stopped safely. Retry to confirm the remaining tasks.";c(Ze),k(Ze,"error");return}if(le){k(`${Re} tasks archived`,"info"),c("");return}}try{const le=await fetch("/api/taskforce/bulk-archive",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:x.map(Re=>Re.id)})});if(le.ok){const Re=await le.json(),Je=Array.isArray(Re?.results?.archived)?Re.results.archived:[];if(Je.length>0){for(const X of Je)y(X);D()}else s(X=>X.filter(Ze=>!["done","cancelled"].includes(Ze.status))),g();k(`${Re.archived||x.length} tasks archived`,"info"),c("")}else{const Je=(await le.json().catch(()=>({}))).error||"Failed to bulk archive tasks.";c(Je),k(Je,"error")}}catch(le){console.error("Failed to bulk archive",le),c("Failed to bulk archive tasks."),k("Failed to bulk archive tasks.","error")}}},Ve=async x=>{if(T)try{const le=await T(x,{mutationKind:"unarchive"});if(le&&ae(le,x,{},e,t)){le.state!=="rejected"&&le.state!=="failed"&&k("Task restored from archive.","info");return}if(!le&&M)throw new Error("Durable task unarchive activation returned no result.")}catch(le){console.error("Durable task unarchive failed before a conclusive result.",le);const Re="Task restore confirmation was interrupted. Retry the same action to confirm it safely.";c(Re),k(Re,"error");return}try{const le=`/api/taskforce/task/${x}/unarchive`,Re=t.find(X=>X.id===x)||e.find(X=>X.id===x),Je=await V(le,{method:"POST"},{},Im(Re,x),X=>!!X&&typeof X=="object"&&String(X.id||"")===x);if(Je.ok){const X=await Je.json().catch(()=>null);X?(y(X),D()):(i(Ze=>Ze.filter(re=>re.id!==x)),await f(!0),D()),c(""),k("Task restored from archive.","info")}}catch(le){console.error("Failed to unarchive",le),c("Failed to unarchive task."),k("Failed to unarchive task.","error")}},Ne=o.useCallback(async(x,le="previous",Re)=>{const Je=Array.from(new Map(x.map(je=>[je.id,je])).values()),X={requested:Je.length,completed:0,succeeded:[],failed:[]},Ze=()=>Re?.({...X,succeeded:[...X.succeeded],failed:[...X.failed]}),re=(je,Pe,Ce)=>{X.failed.push({deletedRecordId:je.id,taskId:je.taskId,title:je.taskSnapshot.title,message:Pe,...Ce?{code:Ce}:{}}),X.completed+=1,Ze()},Ee=(je,Pe)=>{y(Pe),l(Ce=>Ce.filter(Te=>Te.id!==je.id&&Te.taskId!==Pe.id)),E.current.delete(je.id),E.current.delete(je.taskId),S.current.delete(je.id),S.current.delete(je.taskId),X.succeeded.push(je),X.completed+=1,Ze()};if(Z)for(const je of Je){const Pe=await K(je.id,je.taskId,{silent:!0,restoreDestination:le});Pe?Ee(je,Pe):re(je,"Failed to capture or confirm the durable restore.")}else{for(let je=0;je<Je.length;je+=50){const Pe=Je.slice(je,je+50),Ce=Pe.map(pe=>pe.id),Te=le==="archive"?{ids:Ce,restoreDestination:le}:{ids:Ce};try{let pe,Me=null;J?(W.current||(W.current=te||Fv()),Me=await W.current.prepareUpdate(ee,"/api/taskforce/deleted/restore-batch",Te,le==="archive"?{deletedRecordIds:Ce,restoreDestination:le}:{deletedRecordIds:Ce}),pe=await $v("/api/taskforce/deleted/restore-batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Te)},Me.operationId)):pe=await be("/restore-batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Te)});const et=await pe.json().catch(()=>({}));if(Me&&(pe.ok||await Hg(pe))&&await W.current?.confirmUpdate(Me.fingerprint,Me.operationId),!pe.ok){const Le=String(et.error||"Failed to restore the selected Trash records.");Pe.forEach(mt=>re(mt,Le));continue}const Ue=new Map(Pe.map(Le=>[Le.id,Le])),yt=new Set;for(const Le of et.results||[]){const mt=String(Le.deletedRecordId||"").trim(),kt=Ue.get(mt);if(!kt||!Le.task)continue;const He=Qs(Le.task);He.id===kt.taskId&&(yt.add(mt),Ee(kt,He))}for(const Le of et.errors||[]){const mt=String(Le.id||"").trim(),kt=Ue.get(mt);!kt||yt.has(mt)||(yt.add(mt),re(kt,String(Le.message||"Failed to restore the deleted task."),Le.code?String(Le.code):void 0))}for(const Le of Pe)yt.has(Le.id)||re(Le,"The restore response did not include this deleted record.")}catch(pe){const Me=pe instanceof Error?pe.message:"The restore request was interrupted.";Pe.forEach(et=>re(et,Me))}}D()}if(X.failed.length>0){const je=`${X.succeeded.length} restored; ${X.failed.length} failed and remain selected.`;c(je),k(je,"error")}else X.succeeded.length>0&&(c(""),k(le==="archive"?`${X.succeeded.length} task${X.succeeded.length===1?"":"s"} restored to Archive.`:`${X.succeeded.length} task${X.succeeded.length===1?"":"s"} restored from Trash.`,"info"));return X},[Z,J,K,y,k,D,be,l,c,te,E,S,ee]);return{copiedId:ye,handleDelete:Se,handleUpdateTask:Oe,handleSetStatus:_e,handleToggleComplete:Fe,handleToggleCancel:st,handleToggleInProgress:ft,handleToggleReview:xe,handleArchiveTask:ke,handleBulkArchive:ve,handleUnarchive:Ve,handleRestoreDeletedTask:K,handleRestoreSelectedDeletedTasks:Ne,handlePermanentlyDeleteDeletedTask:Y,handleEmptyDeletedTasks:G,handleCopyId:(x,le)=>{x.stopPropagation(),navigator.clipboard.writeText(le),ge(le),oe.current!==null&&window.clearTimeout(oe.current),oe.current=window.setTimeout(()=>{oe.current=null,ge(null)},2e3)},queueWorkspaceSyncFromAuthoritativeTaskState:D}}const PN=RN;function Gh(e){return e==="/api/taskforce/auth/runtime-config"||e==="/api/taskforce/sync/workspace/apply-local"||e==="/api/taskforce/sync/workspace/repair-startup"}function jN(e){try{return typeof window>"u"?null:typeof e=="string"?new URL(e,window.location.origin):e instanceof URL?e:typeof Request<"u"&&e instanceof Request?new URL(e.url,window.location.origin):null}catch{return null}}function EN({currentWorkspaceIdRef:e,resolveApiUrl:t,runtimeMode:r}){o.useEffect(()=>{if(typeof window>"u"||typeof window.fetch!="function")return;const n=window.fetch.bind(window),s=i=>{if(typeof i=="string")return r!=="cloud"?i:i.startsWith("/api/taskforce")&&!Gh(i)?t(i):i;if(i instanceof URL)return r!=="cloud"?i:i.origin===window.location.origin&&i.pathname.startsWith("/api/taskforce")?Gh(i.pathname)?i:new URL(t(`${i.pathname}${i.search}${i.hash}`)):i;if(typeof Request<"u"&&i instanceof Request){if(r!=="cloud")return i;const l=new URL(i.url,window.location.origin);if(l.origin===window.location.origin&&l.pathname.startsWith("/api/taskforce"))return Gh(l.pathname)?i:t(`${l.pathname}${l.search}${l.hash}`)}return i};return window.fetch=((i,l)=>{const c=s(i),d=jN(c);if(!!!(d&&d.pathname.startsWith("/api/taskforce")&&!Gh(d.pathname)))return n(c,l);const f=String(e.current||"").trim();if(typeof Request<"u"&&c instanceof Request){const h=new Headers(c.headers);l?.headers&&new Headers(l.headers).forEach((v,A)=>h.set(A,v)),f&&f!=="default"&&!h.has("x-taskforce-workspace-id")&&(h.set("x-taskforce-workspace-id",f),h.set("x-taskforce-workspace-authoritative","1"));const y=new Request(c,{...l,headers:h});return n(y)}const g=new Headers(l?.headers);return f&&f!=="default"&&!g.has("x-taskforce-workspace-id")&&(g.set("x-taskforce-workspace-id",f),g.set("x-taskforce-workspace-authoritative","1")),n(c,{...l,headers:g})}),()=>{window.fetch=n}},[e,t,r])}const $m=12e3,NN=3e4,DN=2e4;function Kh(e){return e==="cloud"?NN:$m}function zS(){return typeof performance<"u"?performance.now():Date.now()}function MN({runtimeConfigReady:e,shouldProbeCloudAuth:t,authSessionResolved:r,resolveCloudAuthUrl:n,authOnlyCloudMode:s,authRequiredError:i,runtimeMode:l,workspaceSelectionScope:c,markBootstrapPhase:d,markBootstrapStalled:m,setRuntimeMode:f,setAuthRequiredForApi:g,setIsAuthenticated:h,setAuthUserId:y,setAuthWorkspaceId:k,setAuthUserEmail:v,setAuthUserDisplayName:A,setAuthUserAvatarUrl:b,setUserGlobalSyncStatus:w,setUserGlobalSyncError:R,setHasBetaAccess:N,setAvailableWorkspaces:j,setHydratedWorkspaceRole:E,setAssigneeOptions:S,setAuthBlocked:L,setAuthSessionResolved:_,setError:T,applyResolvedWorkspaceId:H,readPersistedWorkspaceId:q,authSessionRequestRef:z,authSessionEpochRef:M,authSessionLastCheckedAtRef:Z,authSessionLastResultRef:J,isLoopbackHost:ee,setAuthStateReadyRefs:te}){const fe=o.useCallback(async $e=>{const Ye=$e?.force===!0;if(d("auth"),!e)return J.current;if(!t)return f("local"),g(!1),h(!1),y("anonymous"),k(""),Nm(null),v(""),A(""),b(""),w("disconnected"),R(null),N(!0),j([]),E(null),S(jl()),L(!1),_(!0),te(!1,!0,!1),J.current=!1,Z.current=Date.now(),!1;const ye=n("/api/taskforce/auth/session"),ge=Date.now();if(!Ye&&z.current)return z.current;if(!Ye&&r&&ge-Z.current<1500)return J.current;const oe=++M.current;let ie=null;return ie=(async()=>{const me=zS(),W=new AbortController,V=typeof window<"u"?window.setTimeout(()=>W.abort(),DN):null,B=()=>M.current!==oe,D=(be,Se)=>{Cr(be,{durationMs:Math.max(0,Math.round(zS()-me)),force:Ye,sessionUrl:ye,...Se})};try{const be=await fetch(ye,{method:"GET",credentials:"include",mode:"cors",signal:W.signal});if(B())return J.current;if(be.status===429)return _(!0),te(J.current,!0,!1),D("auth_session_rate_limited",{status:be.status}),J.current;if(!be.ok)return B()?J.current:(ee&&Nm(null),_(!0),te(!1,!0,!1),J.current=!1,D("auth_session_request_failed",{status:be.status}),!1);const Se=await be.json();if(B())return J.current;const K=!!Se.authRequiredForApi,Y=!!Se.authenticated,G=Y?Se.betaAccess!==!1:!0,ae=typeof Se.workspaceId=="string"&&Se.workspaceId.trim().length>0?Se.workspaceId.trim():"",_e=typeof Se.userId=="string"&&Se.userId.trim().length>0?Se.userId.trim():"anonymous",Oe=typeof Se.email=="string"&&Se.email.trim().length>0?Se.email.trim().toLowerCase():"",Fe=typeof Se.displayName=="string"?Se.displayName.trim():"",st=typeof Se.avatarUrl=="string"?Se.avatarUrl.trim():"",ft=l==="local",xe=l==="local"||s,ke=s||ft?!1:K;return g(ke),h(Y),y(Y?_e:"anonymous"),k(Y?ae:""),ee&&Nm(Y?_e:null),v(Y?Oe:""),A(Y?Fe:""),b(Y?st:""),Y&&T(ve=>ve===i?"":ve),w(Y?"idle":"disconnected"),R(null),N(G),xe||H(ae||q(c)||"default",{preserveNonDefaultDefault:!0}),L(s||ft?!1:K&&!Y),_(!0),te(Y,!0,ke),J.current=Y,Y&&d("ready"),D("auth_session_resolved",{status:be.status,authenticated:Y,workspaceId:Y?ae:"",userId:Y?_e:"anonymous",authRequiredForApi:ke}),Y}catch(be){return B()||(ee&&Nm(null),_(!0),te(!1,!0,!1),J.current=!1,m("Unable to verify your session."),D("auth_session_exception",{error:be instanceof Error?be.message:String(be)})),J.current}finally{V!==null&&typeof window<"u"&&window.clearTimeout(V),B()||(Z.current=Date.now()),ie&&z.current===ie&&(z.current=null)}})(),z.current=ie,ie},[e,t,r,n,s,i,l,c,d,m,f,g,h,y,k,v,A,b,w,R,N,j,E,S,L,_,T,H,q,z,M,Z,J,ee,te]),Ie=l==="local"&&ee&&t?Tw():"";return o.useEffect(()=>{Ie&&(h(!0),_(!0),y(Ie),te(!0,!0,!1),J.current=!0)},[Ie,_,te,y,h,J]),o.useEffect(()=>{if(l!=="local"||!t||typeof window>"u")return;const $e=()=>{fe()},Ye=()=>{document.visibilityState==="visible"&&$e()};window.addEventListener("focus",$e),window.addEventListener("online",$e),document.addEventListener("visibilitychange",Ye);const ye=window.setInterval($e,3e4);return()=>{window.removeEventListener("focus",$e),window.removeEventListener("online",$e),document.removeEventListener("visibilitychange",Ye),window.clearInterval(ye)}},[l,t,fe]),{checkAuthSession:fe}}function LN(e){const t=e.runtimeMode==="cloud",r=!!(e.shouldGateProtectedApiCalls&&t&&!e.authSessionResolved),n=!!(e.shouldGateProtectedApiCalls&&t&&e.authSessionResolved&&e.authRequiredForApi&&!e.isAuthenticated);return{shouldDeferProtectedApiCalls:r,shouldBlockProtectedApiCalls:n,canCallProtectedApi:!(r||n)}}function ON(e){return!!(!e.isOpen||!e.canCallProtectedApi||e.authBlocked||e.authRequiredForApi&&!e.isAuthenticated)}function BN(e){return!!(e.shouldGateProtectedApiCalls&&!e.authSessionResolved||e.authRequiredForApi&&!e.isAuthenticated)}function Nn(){return typeof performance<"u"?performance.now():Date.now()}function WN(e){const{shouldDeferProtectedApiCalls:t,shouldBlockProtectedApiCalls:r,getWorkspaceRequestState:n,isWorkspaceRequestStale:s,isWorkspaceEpochStale:i,isAbortError:l,isBootstrapTimeoutError:c,fetchWithTimeout:d,handleUnauthorized:m,applyBootstrapConfig:f,loadPersistedUiState:g,fetchBuildInfo:h,markBootstrapPhase:y,markBootstrapStalled:k,fetchInitiativeTemplates:v,setReferenceDataLoaded:A,setCustomCategories:b,setCustomTypes:w,setPriorities:R,setTaxonomies:N,setTaxonomyDisplayLabels:j,setConfigLoaded:E,hasLoadedUiStateRef:S,currentWorkspaceIdRef:L,referenceDataRequestRef:_,referenceDataAbortRef:T,bootstrapConfigAbortRef:H,workspaceListAbortRef:q,assigneeOptionsAbortRef:z,workspaceListHydratedRef:M,setAvailableWorkspaces:Z,runtimeMode:J,applyResolvedWorkspaceId:ee,workspaceSwitchingEnabled:te,authSessionResolved:fe,isAuthenticated:Ie,authUserId:$e,authUserAvatarUrl:Ye,setHydratedWorkspaceRole:ye,setAssigneeOptions:ge,setAssigneeOptionsLoaded:oe,commitCurrentWorkspaceId:ie,currentWorkspaceId:me,workspaceSelectionScope:W,abortWorkspaceScopedRequests:V,setWorkspaceBootstrapPending:B,checkAuthSession:D,lastConfigRefreshKeyRef:be,lastAssigneeOptionsLoadKeyRef:Se,lastWorkspaceSyncStateLoadKeyRef:K,lastTaskSurfaceLoadKeyRef:Y,lastSettingsSurfaceLoadKeyRef:G,isOpen:ae,activeTab:_e,showArchive:Oe,taskScope:Fe,settingsSection:st,workspaceBootstrapPending:ft,fetchTasks:xe,fetchPlanningEntities:ke,refreshTaskCollections:ve,loadWorkspaceSyncState:Ve,switchLocalCoordinatorWorkspace:Ne,hasBootstrappedDataRef:de}=e,x=o.useCallback(async Pe=>{const Ce=Pe?.ignoreAuthGuard===!0,Te=Pe?.force===!0;if(!Ce&&(t||r)){Cr("bootstrap_reference_data_skipped",{reason:r?"auth_blocked":"auth_deferred",runtimeMode:J,workspaceId:String(n().workspaceId||"").trim()||"default",force:Te});return}const pe=n(),Me=String(pe.workspaceId||"").trim()||"default";if(!(J!=="cloud"||!fe||!Ie||Me!==""&&Me!=="default")){Cr("bootstrap_reference_data_skipped",{reason:"workspace_unresolved",runtimeMode:J,workspaceId:Me,force:Te});return}if(!Te&&_.current?.workspaceId===pe.workspaceId){Cr("bootstrap_reference_data_reused",{workspaceId:Me,force:Te}),await _.current.promise;return}A(!1);const Ue=Nn(),yt=new AbortController;T.current=yt;const Le=(async()=>{await Promise.allSettled([(async()=>{let mt="empty-taxonomy-state";const kt=await fetch("/api/taskforce/taxonomy-state",{signal:yt.signal});if(!kt.ok)return;const He=await kt.json().catch(()=>({}));if(SI(He))mt="taxonomy-state";else{mt="fallback-endpoints";const[It,Xe,wt,at]=await Promise.all([fetch("/api/taskforce/categories",{signal:yt.signal}),fetch("/api/taskforce/types",{signal:yt.signal}),fetch("/api/taskforce/priorities",{signal:yt.signal}),fetch("/api/taskforce/taxonomies",{signal:yt.signal})]),[U,he,Ke,Et]=await Promise.all([It.ok?It.json().catch(()=>({})):Promise.resolve({}),Xe.ok?Xe.json().catch(()=>({})):Promise.resolve({}),wt.ok?wt.json().catch(()=>({})):Promise.resolve({}),at.ok?at.json().catch(()=>({})):Promise.resolve({})]);He.categories=U.categories,He.types=he.types,He.priorities=Ke.priorities,He.taxonomies=Et.taxonomies}const rt=SP(He);if(s(pe)){Cr("bootstrap_reference_data_stale_drop",{workspaceId:Me,source:mt});return}rt.categories.length>0&&b(rt.categories),rt.types.length>0&&w(rt.types),rt.priorities.length>0&&R(rt.priorities),N(rt.taxonomies),j(rt.displayLabels||{}),Cr("bootstrap_reference_data_source",{workspaceId:Me,source:mt,categories:rt.categories.length,types:rt.types.length,priorities:rt.priorities.length,taxonomies:rt.taxonomies.length})})(),v()]),!s(pe)&&(A(!0),Cr("bootstrap_reference_data_loaded",{durationMs:Math.max(0,Math.round(Nn()-Ue)),workspaceId:Me,force:Te}))})();_.current={workspaceId:pe.workspaceId,promise:Le};try{await Le}finally{_.current?.promise===Le&&(_.current=null),T.current===yt&&(T.current=null)}},[fe,v,n,Ie,s,T,_,J,b,w,R,A,N,j,r,t]),le=o.useCallback(async Pe=>{if(!(Pe?.ignoreAuthGuard===!0)&&(t||r))return;y("config");const Te=n(),pe=Nn(),Me=new AbortController;H.current=Me;try{const et=await d("/api/taskforce/config",void 0,Kh(J),{signal:Me.signal});if(i(Te))return;if(et.status===401){m(),E(!0);return}let Ue="";if(et.ok){const yt=await et.json();if(i(Te))return;Ue=typeof yt?.workspaceId=="string"&&yt.workspaceId.trim().length>0?yt.workspaceId.trim():"",f(yt)}if(i(Te)){const yt=String(L.current||"default").trim()||"default";if(!Ue||yt!==Ue)return}if(S.current||(S.current=!0,await g(Ue||Te.workspaceId)),i(Te)){const yt=String(L.current||"default").trim()||"default";if(!Ue||yt!==Ue)return}E(!0),y("ready"),Cr("bootstrap_config_loaded",{durationMs:Math.max(0,Math.round(Nn()-pe)),status:et.status,workspaceId:Ue||Te.workspaceId}),h()}catch(et){if(l(et)||i(Te))return;S.current||(S.current=!0,await g(Te.workspaceId)),k(c(et)?"Startup checks timed out.":"Unable to finish startup checks."),E(!0),Cr("bootstrap_config_failed",{durationMs:Math.max(0,Math.round(Nn()-pe)),workspaceId:Te.workspaceId,error:et instanceof Error?et.message:String(et)})}finally{H.current===Me&&(H.current=null)}},[f,H,L,h,d,n,m,S,l,c,i,g,y,k,J,E,r,t]),Re=o.useCallback(async Pe=>{await le(Pe),await x(Pe)},[le,x]),Je=o.useCallback(async()=>{if(!te)return Z([]),M.current=!1,{success:!0,workspaces:[]};const Pe=n(),Ce=Nn(),Te=new AbortController;q.current=Te;try{const pe=await d("/api/taskforce/workspaces",{method:"GET",credentials:"include"},Kh(J),{signal:Te.signal});if(i(Pe))return{success:!1,error:"Workspace changed while loading workspaces."};if(pe.status===401)return Z([]),M.current=!1,{success:!1,error:"Authentication required."};const Me=await pe.json().catch(()=>({}));if(i(Pe))return{success:!1,error:"Workspace changed while loading workspaces."};if(!pe.ok||Me?.success===!1)return Z([]),M.current=!1,{success:!1,error:Me?.error||`Failed to load workspaces (${pe.status})`};const et=Array.isArray(Me?.workspaces)?Me.workspaces.map(Ue=>({id:String(Ue?.id||"").trim(),name:String(Ue?.name||"").trim(),role:String(Ue?.role||"member").trim().toLowerCase(),slug:typeof Ue?.slug=="string"?Ue.slug:null,description:typeof Ue?.description=="string"?Ue.description:null,status:typeof Ue?.status=="string"?Ue.status:"",betaAccess:Ue?.betaAccess===!0})).filter(Ue=>Ue.id&&Ue.name):[];return Z(et),M.current=!0,J!=="local"&&typeof Me?.currentWorkspaceId=="string"&&Me.currentWorkspaceId.trim().length>0&&ee(Me.currentWorkspaceId.trim(),{preserveNonDefaultDefault:!0}),Cr("bootstrap_workspaces_loaded",{durationMs:Math.max(0,Math.round(Nn()-Ce)),workspaceId:Pe.workspaceId,count:et.length,status:pe.status}),{success:!0,workspaces:et}}catch(pe){return c(pe)&&k("Startup checks timed out."),Z([]),M.current=!1,Cr("bootstrap_workspaces_failed",{durationMs:Math.max(0,Math.round(Nn()-Ce)),workspaceId:Pe.workspaceId,error:pe instanceof Error?pe.message:String(pe)}),{success:!1,error:l(pe)?"Workspace list request aborted.":"Failed to load workspaces."}}finally{q.current===Te&&(q.current=null)}},[ee,d,n,l,c,i,k,J,Z,q,M,te]),X=o.useCallback(async()=>{const Pe=n(),Ce=Nn(),Te=new AbortController;z.current=Te,oe(!1);try{const[pe,Me]=await Promise.all([d("/api/taskforce/workspace/assignee-options",{method:"GET",credentials:"include"},Kh(J),{signal:Te.signal}),fe&&Ie?d("/api/taskforce/auth/workspace-members",{method:"GET",credentials:"include"},Kh(J),{signal:Te.signal}).catch(()=>null):Promise.resolve(null)]);if(s(Pe))return{success:!1,error:"Workspace changed while loading assignee options."};if(pe.status===401)return ge(jl()),oe(!0),{success:!1,error:"Authentication required."};const et=await pe.json().catch(()=>({}));if(s(Pe))return{success:!1,error:"Workspace changed while loading assignee options."};if(!pe.ok)return ge(jl()),oe(!0),{success:!1,error:et?.error||`Failed to load assignee options (${pe.status})`};const Ue=String($e||"").trim(),yt=String(Ye||"").trim(),Le=(Xe,wt)=>{const at=typeof Xe?.avatarUrl=="string"&&Xe.avatarUrl.trim().length>0?Xe.avatarUrl.trim():"";if(at)return at;const U=String(Xe?.userId||wt||"").trim();return Ue&&U===Ue&&yt?yt:null},mt=Array.isArray(et?.assignees)?et.assignees:[],kt=mt.map(Xe=>{const wt=String(Xe?.value||"").trim(),at=String(Xe?.kind||"").trim().toLowerCase();return wt?at==="agent"||at==="ai"?{value:wt,label:String(Xe?.label||wt).trim()||wt,icon:String(Xe?.icon||"Bot"),color:String(Xe?.color||"#8b5cf6"),kind:"agent",avatarUrl:typeof Xe?.avatarUrl=="string"&&Xe.avatarUrl.trim().length>0?Xe.avatarUrl.trim():null,avatarRevision:Number.isFinite(Number(Xe?.avatarRevision))?Math.max(0,Math.floor(Number(Xe.avatarRevision))):null,avatarUpdatedAt:typeof Xe?.avatarUpdatedAt=="string"&&Xe.avatarUpdatedAt.trim().length>0?Xe.avatarUpdatedAt.trim():null,username:typeof Xe?.username=="string"&&Xe.username.trim().length>0?Xe.username.trim():null,surfaceType:typeof Xe?.surfaceType=="string"&&Xe.surfaceType.trim().length>0?Xe.surfaceType.trim():null,providerMetadata:Xe?.providerMetadata&&typeof Xe.providerMetadata=="object"&&!Array.isArray(Xe.providerMetadata)?Xe.providerMetadata:null,archivedAt:typeof Xe?.archivedAt=="string"&&Xe.archivedAt.trim().length>0?Xe.archivedAt.trim():null,createdAt:typeof Xe?.createdAt=="string"&&Xe.createdAt.trim().length>0?Xe.createdAt.trim():null,updatedAt:typeof Xe?.updatedAt=="string"&&Xe.updatedAt.trim().length>0?Xe.updatedAt.trim():null}:at==="member"||at==="human"?{value:wt,label:String(Xe?.label||wt).trim()||wt,icon:String(Xe?.icon||"User"),color:String(Xe?.color||"#22c55e"),kind:"member",avatarUrl:Le(Xe,wt)}:null:null}).filter(Boolean),He=mt.map(Xe=>({userId:String(Xe?.userId||"").trim(),email:String(Xe?.email||"").trim().toLowerCase(),displayName:typeof Xe?.displayName=="string"?Xe.displayName:null,avatarUrl:Le(Xe)})).filter(Xe=>Xe.userId);let rt=He;if(Me?.ok){const Xe=await Me.json().catch(()=>({})),wt=Array.isArray(Xe?.users)?Xe.users:[],at=wt.find(Ke=>String(Ke?.userId||"").trim()===Ue),U=String(at?.role||"").trim().toLowerCase();U==="owner"||U==="admin"||U==="member"||U==="read-only"?ye(U):!te&&wt.length===0&&ye(null);const he=wt.map(Ke=>({userId:String(Ke?.userId||"").trim(),email:String(Ke?.email||"").trim().toLowerCase(),displayName:typeof Ke?.displayName=="string"?Ke.displayName:null,avatarUrl:Le(Ke)})).filter(Ke=>Ke.userId);rt=Array.from(new Map([...He,...he].map(Ke=>[Ke.userId,Ke])).values())}else!te&&!He.length&&ye(null);const It=sf([...kt,...RR(rt).filter(Xe=>Xe.kind==="member")]);return s(Pe)?{success:!1,error:"Workspace changed while loading assignee options."}:(ge(It),oe(!0),Cr("bootstrap_assignee_options_loaded",{durationMs:Math.max(0,Math.round(Nn()-Ce)),workspaceId:Pe.workspaceId,count:It.length}),{success:!0})}catch(pe){return s(Pe)||(ge(jl()),oe(!0)),Cr("bootstrap_assignee_options_failed",{durationMs:Math.max(0,Math.round(Nn()-Ce)),workspaceId:Pe.workspaceId,error:pe instanceof Error?pe.message:String(pe)}),{success:!1,error:l(pe)?"Assignee options request aborted.":"Failed to load assignee options."}}finally{z.current===Te&&(z.current=null)}},[z,fe,Ye,$e,d,n,l,Ie,s,J,ge,oe,ye,te]),Ze=o.useCallback(async(Pe,Ce)=>{if(!te)return{success:!1,error:"Workspace switching is unavailable in local mode.",code:"WORKSPACE_SWITCHING_DISABLED"};const Te=String(Pe||"").trim();if(!Te)return{success:!1,error:"workspaceId is required."};const pe=String(L.current||"").trim()||"default",Me=Nn();try{Cr("bootstrap_workspace_switch_started",{fromWorkspaceId:pe,toWorkspaceId:Te,hydrate:Ce?.hydrate!==!1});const et=J==="local"?"/api/taskforce/session/workspace?taskforceCloud=1":"/api/taskforce/session/workspace",Ue=await fetch(et,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:Te})}),yt=await Ue.json().catch(()=>({}));if(!Ue.ok||yt?.success===!1)return{success:!1,error:yt?.error||`Failed to switch workspace (${Ue.status})`,code:yt?.code};try{pe!=="default"&&await Ne(Te)}catch(mt){return pe&&pe!=="default"&&(await fetch(et,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:pe})}).catch(()=>null),await D({force:!0}).catch(()=>!1)),{success:!1,error:mt instanceof Error?mt.message:"The local sync coordinator rejected the workspace switch.",code:String(mt?.code||"SYNC_COORDINATOR_WORKSPACE_SWITCH_FAILED")}}ie(Te,{clearExplicitSelection:!1}),V(),B(!0),y("workspace");const Le=await D({force:!0});return Ce?.hydrate===!1?await Je():(be.current=`${J}:${Te}:${W}`,Se.current=`${J}:${Le?"auth":"guest"}:${Te}`,K.current=Te,ae&&_e==="tasks"&&!(Oe||Fe==="archived"||Fe==="deleted")&&(Y.current=`${Te}:${_e}:active:${Fe}`),ae&&_e==="settings"&&(G.current=`${Te}:${_e}:${st}`),await Promise.all([Re(),Je(),ve({isSilent:!1}),Ve()]),ke({ignoreAuthGuard:!0})),Cr("bootstrap_workspace_switch_completed",{fromWorkspaceId:pe,toWorkspaceId:Te,hydrate:Ce?.hydrate!==!1,durationMs:Math.max(0,Math.round(Nn()-Me))}),{success:!0}}catch(et){return Cr("bootstrap_workspace_switch_failed",{fromWorkspaceId:pe,toWorkspaceId:Te,hydrate:Ce?.hydrate!==!1,durationMs:Math.max(0,Math.round(Nn()-Me)),error:et instanceof Error?et.message:String(et)}),{success:!1,error:"Failed to switch workspace."}}finally{B(!1)}},[V,_e,D,ie,L,Re,ke,Je,ae,Se,be,G,Y,K,Ve,y,ve,J,st,B,Oe,Ne,Fe,W,te]),re=o.useCallback(async Pe=>{y("workspace"),B(!0);try{if(!te){const Le=String(me||"").trim()||"default";return ie(Le),{success:!0,workspaceSetupRequired:!1,workspaceId:Le}}const Ce=String(Pe?.preferredWorkspaceId||"").trim(),Te=Av(W),pe=await Je();if(!pe.success)return{success:!1,workspaceSetupRequired:!1,error:pe.error||"Failed to load workspaces after authentication."};const Me=Array.isArray(pe.workspaces)?pe.workspaces:[];if(Me.length===0)return ie("default"),{success:!0,workspaceSetupRequired:!0};const et=new Set(Me.map(Le=>String(Le.id||"").trim()).filter(Boolean)),Ue=String(L.current||"").trim(),yt=(Ce&&et.has(Ce)?Ce:"")||(Ue&&et.has(Ue)?Ue:"")||(Te&&et.has(Te)?Te:"")||String(Me[0]?.id||"").trim();if(!yt)return ie("default"),{success:!0,workspaceSetupRequired:!0};if(Ue!==yt){const Le=await Ze(yt,{hydrate:!1});if(!Le.success)return{success:!1,workspaceSetupRequired:!1,error:Le.error||"Failed to set workspace after authentication.",code:Le.code}}else ie(yt);return{success:!0,workspaceSetupRequired:!1,workspaceId:yt}}catch{return k("Unable to resolve workspace access."),{success:!1,workspaceSetupRequired:!1,error:"Failed to resolve workspace access."}}finally{B(!1)}},[ie,me,L,Je,y,k,B,Ze,W,te]),Ee=o.useCallback(async()=>{y("auth");const Pe=Nn();Cr("bootstrap_retry_started",{workspaceId:String(L.current||"default").trim()||"default"});const Ce=await D({force:!0});let Te=!1;if(te&&Ce){const pe=await re();if(!pe.success||pe.workspaceSetupRequired){await Re({ignoreAuthGuard:!0}),Cr("bootstrap_retry_completed",{workspaceId:String(L.current||"default").trim()||"default",authenticated:Ce,workspaceSetupRequired:pe.workspaceSetupRequired===!0,success:pe.success,durationMs:Math.max(0,Math.round(Nn()-Pe))});return}}B(!0);try{await Re({ignoreAuthGuard:!0}),Ce&&!Te&&(await Promise.all([xe(!0,{ignoreAuthGuard:!0}),x({ignoreAuthGuard:!0,force:!0})]),ke({ignoreAuthGuard:!0})),Cr("bootstrap_retry_completed",{workspaceId:String(L.current||"default").trim()||"default",authenticated:Ce,workspaceSetupRequired:Te,success:!0,durationMs:Math.max(0,Math.round(Nn()-Pe))})}finally{B(!1)}},[D,L,Re,ke,x,xe,y,re,B,te]),je=o.useCallback(async Pe=>{const Ce=Pe?.reason||"initial-load",Te=Pe?.ignoreAuthGuard===!0,pe=Pe?.tasksSilent!==!1,Me=Nn();if(y("auth"),!await D({force:!0}))return await Re({ignoreAuthGuard:!0}),Cr("cloud_bootstrap_completed",{reason:Ce,durationMs:Math.max(0,Math.round(Nn()-Me)),authenticated:!1,workspaceSetupRequired:!1,success:!1}),{success:!1,authenticated:!1,workspaceSetupRequired:!1,error:"Sign in required.",code:"AUTH_REQUIRED"};if(te){const Ue=await re();if(!Ue.success)return await Re({ignoreAuthGuard:!0}),Cr("cloud_bootstrap_completed",{reason:Ce,durationMs:Math.max(0,Math.round(Nn()-Me)),authenticated:!0,workspaceSetupRequired:!1,success:!1,error:Ue.error||"Workspace resolution failed."}),{success:!1,authenticated:!0,workspaceSetupRequired:!1,error:Ue.error||"Unable to resolve workspace access.",code:Ue.code};if(Ue.workspaceSetupRequired)return await Re({ignoreAuthGuard:!0}),Cr("cloud_bootstrap_completed",{reason:Ce,durationMs:Math.max(0,Math.round(Nn()-Me)),authenticated:!0,workspaceSetupRequired:!0,success:!0}),{success:!0,authenticated:!0,workspaceSetupRequired:!0}}B(!0);try{await le({ignoreAuthGuard:Te});const Ue=String(L.current||"default").trim()||"default",yt=Nn();return xe(pe,{ignoreAuthGuard:Te}).then(()=>{Cr("cloud_bootstrap_tasks_loaded_deferred",{reason:Ce,workspaceId:Ue,durationMs:Math.max(0,Math.round(Nn()-yt))})}).catch(Le=>{Cr("cloud_bootstrap_tasks_deferred_failed",{reason:Ce,workspaceId:Ue,error:Le instanceof Error?Le.message:String(Le)})}),x({ignoreAuthGuard:Te}).then(()=>{Cr("cloud_bootstrap_reference_data_loaded_deferred",{reason:Ce,workspaceId:Ue,durationMs:Math.max(0,Math.round(Nn()-yt))})}).catch(Le=>{Cr("cloud_bootstrap_reference_data_deferred_failed",{reason:Ce,workspaceId:Ue,error:Le instanceof Error?Le.message:String(Le)})}),ke({ignoreAuthGuard:Te}),Cr("cloud_bootstrap_completed",{reason:Ce,durationMs:Math.max(0,Math.round(Nn()-Me)),authenticated:!0,workspaceSetupRequired:!1,success:!0,workspaceId:Ue}),{success:!0,authenticated:!0,workspaceSetupRequired:!1}}finally{B(!1)}},[D,L,le,ke,x,xe,y,re,B,te]);return o.useEffect(()=>{!t&&!r&&!de.current&&(de.current=!0,(async()=>{const Pe=Nn();if(J==="cloud"&&fe&&Ie){const Ce=await je({reason:"initial-load",tasksSilent:!1});if(!Ce.success||Ce.workspaceSetupRequired)return}else await le(),await Promise.all([xe(!1),x()]),ke();Cr("bootstrap_initial_load_completed",{durationMs:Math.max(0,Math.round(Nn()-Pe)),runtimeMode:J,workspaceId:String(L.current||"default").trim()||"default"})})())},[fe,L,le,ke,x,xe,de,Ie,je,J,r,t]),o.useEffect(()=>{if(t||r||ft||W==="bootstrap"||!de.current)return;const Pe=`${J}:${me}:${W}`;be.current!==Pe&&(be.current=Pe,Re())},[me,Re,de,be,J,r,t,ft,W]),o.useEffect(()=>{if(t||r||ft)return;const Pe=me;K.current!==Pe&&(K.current=Pe,Ve())},[me,K,Ve,r,t,ft]),o.useEffect(()=>{if(J!=="cloud"||!fe||!Ie){J!=="cloud"&&Z([]),M.current=!1;return}ft||!de.current||M.current||Je()},[fe,Je,de,Ie,J,Z,ft,M]),{fetchReferenceData:x,fetchBootstrapConfig:le,fetchConfig:Re,fetchWorkspaces:Je,fetchAssigneeOptions:X,switchWorkspace:Ze,resolveWorkspaceAfterAuth:re,retryBootstrapChecks:Ee,runCloudBootstrap:je}}function $N(e){const{runtimeMode:t,workspaceUiStateScope:r,currentWorkspaceId:n,currentWorkspaceIdRef:s,referenceDataLoaded:i,activeCategories:l,activeTypes:c,priorities:d,taxonomies:m,activeWorkspaceModule:f,setActiveWorkspaceModuleState:g,groupBy:h,setGroupBy:y,emptyColumnMode:k,setEmptyColumnMode:v,taskScope:A,setTaskScope:b,openTaskId:w,setPendingOpenTaskId:R,compressedCards:N,setCompressedCards:j,zenMode:E,setZenModeState:S,searchQuery:L,setSearchQuery:_,collapsedCategories:T,setCollapsedCategories:H,filterCategories:q,setFilterCategories:z,filterPriorities:M,setFilterPriorities:Z,filterTypes:J,setFilterTypes:ee,filterStatus:te,setFilterStatus:fe,filterAssignees:Ie,setFilterAssignees:$e,filterAssigneesAllSelected:Ye,setFilterAssigneesAllSelected:ye,filterTaxonomies:ge,setFilterTaxonomies:oe,sortBy:ie,setSortBy:me,sortOrder:W,setSortOrder:V,hasInitedFilters:B,setHasInitedFilters:D,lastUsedCategory:be,setLastUsedCategory:Se,taskforceAgentId:K,setTaskforceAgentId:Y,taskforceAgentConversationId:G,setTaskforceAgentConversationId:ae,taskforceAgentConversationByAgentId:_e,setTaskforceAgentConversationByAgentId:Oe}=e,Fe=o.useRef(!1),st=o.useRef(""),ft=o.useRef(!1),xe=o.useRef(!1),ke=o.useRef(null),[ve,Ve]=o.useState(!1),Ne=o.useMemo(()=>i?LR({categories:l,types:c,priorities:d,taxonomies:m}):null,[l,c,d,i,m]),de=o.useCallback(X=>{ve||(xe.current=!0),g(X)},[g,ve]),x=o.useCallback((X,Ze)=>{if(!X){ke.current=null,Y(""),ae(""),Oe({}),R(null);return}const re=Array.isArray(X.filterCategories)||Array.isArray(X.filterPriorities)||Array.isArray(X.filterTypes)||X.filterTaxonomies&&typeof X.filterTaxonomies=="object";re||(ke.current=null);const Ee=Array.isArray(X.filterCategories)||Array.isArray(X.filterPriorities)||Array.isArray(X.filterTypes)||Array.isArray(X.filterStatus)||Array.isArray(X.filterAssignees)||typeof X.filterAssigneesAllSelected=="boolean"||X.filterTaxonomies&&typeof X.filterTaxonomies=="object",je=i,Pe=!!(X.filterTaxonomySignature&&Ne);re&&!je&&(ke.current={state:X,skipActiveWorkspaceModule:Ze?.skipActiveWorkspaceModule});const Ce=re&&je&&(!Pe||OR(X.filterTaxonomySignature,Ne)),Te=re&&Pe&&!Ce,pe=!re||Ce||Te;if(Ze?.skipActiveWorkspaceModule||(X.activeWorkspaceModule?g(X.activeWorkspaceModule):X.groupBy==="docs"&&g("docs")),X.groupBy&&X.groupBy!=="docs"&&y(X.groupBy),X.emptyColumnMode&&v(X.emptyColumnMode),X.taskScope&&b(X.taskScope),(typeof X.openTaskId=="string"||X.openTaskId===null)&&R(X.openTaskId),typeof X.compressedCards=="boolean"&&j(X.compressedCards),typeof X.zenMode=="boolean"&&S(X.zenMode),typeof X.searchQuery=="string"&&_(X.searchQuery),X.collapsedCategories&&typeof X.collapsedCategories=="object"&&H(X.collapsedCategories),Ce?(z(Array.isArray(X.filterCategories)?X.filterCategories:l.map(Me=>Me.value)),Z(Array.isArray(X.filterPriorities)?X.filterPriorities:d.map(Me=>Me.value)),ee(Array.isArray(X.filterTypes)?X.filterTypes:c.map(Me=>Me.value)),X.filterTaxonomies&&typeof X.filterTaxonomies=="object"&&oe(X.filterTaxonomies)):Te&&(z(l.map(Me=>Me.value)),Z(d.map(Me=>Me.value)),ee(c.map(Me=>Me.value)),oe({})),Array.isArray(X.filterStatus)&&fe(X.filterStatus),Array.isArray(X.filterAssignees)){const Me=X.filterAssigneesAllSelected===!0&&!X.filterAssignees.includes("unassigned")?["unassigned",...X.filterAssignees]:X.filterAssignees;$e(Me)}typeof X.filterAssigneesAllSelected=="boolean"&&ye(X.filterAssigneesAllSelected),(X.sortBy==="created"||X.sortBy==="priority"||X.sortBy==="updated"||X.sortBy==="complexity")&&me(X.sortBy),(X.sortOrder==="asc"||X.sortOrder==="desc")&&V(X.sortOrder),Te?D(!0):typeof X.hasInitedFilters=="boolean"&&pe?D(X.hasInitedFilters):Ee&&pe&&D(!0),typeof X.lastCategory=="string"&&Se(X.lastCategory),Y(typeof X.taskforceAgentId=="string"?X.taskforceAgentId.trim():""),ae(typeof X.taskforceAgentConversationId=="string"?X.taskforceAgentConversationId.trim():""),Oe(X.taskforceAgentConversationByAgentId||{})},[l,c,Ne,d,i,g,H,j,v,$e,ye,z,Z,fe,oe,ee,y,D,Se,_,me,V,b,R,Oe,ae,Y,S]);o.useEffect(()=>{if(!i||!ke.current)return;const X=ke.current;ke.current=null,x(X.state,{skipActiveWorkspaceModule:X.skipActiveWorkspaceModule})},[x,i]);const le=o.useRef(x);o.useEffect(()=>{le.current=x},[x]);const Re=o.useCallback(async X=>{const Ze=String(X||s.current||n||"default").trim()||"default",re=`${t}:${r}:${Ze}`;try{const Ee=await fetch(`/api/taskforce/ui-state?key=app&workspaceId=${encodeURIComponent(Ze)}`,{method:"GET",credentials:"include"}),je=Ee.ok?await Ee.json().catch(()=>({})):{},Pe=BC(je?.state),Ce=Qb(r),Te=Pe||Ce?{...Ce||{},...Pe||{},version:bv}:null;if(s.current!==Ze)return;le.current(Te,{skipActiveWorkspaceModule:xe.current}),st.current=re}catch{const Ee=Qb(r);s.current===Ze&&(le.current(Ee,{skipActiveWorkspaceModule:xe.current}),st.current=re)}finally{if(s.current!==Ze)return;xe.current=!1,ft.current=!0,Ve(!0)}},[n,s,t,r]);o.useEffect(()=>{const X=`${t}:${r}:${n}`;Fe.current&&st.current!==X&&(Ve(!1),Re(n))},[n,Re,t,r]),o.useEffect(()=>{if(!ve)return;if(ft.current){ft.current=!1;return}const X={version:bv,groupBy:h,activeWorkspaceModule:f,emptyColumnMode:k,taskScope:A,openTaskId:w||null,compressedCards:N,zenMode:E,searchQuery:L,collapsedCategories:T,filterCategories:q,filterPriorities:M,filterTypes:J,filterStatus:te,filterAssignees:Ie,filterAssigneesAllSelected:Ye,filterTaxonomies:ge,...Ne?{filterTaxonomySignature:Ne}:{},sortBy:ie,sortOrder:W,hasInitedFilters:B,lastCategory:be||"",taskforceAgentId:K,taskforceAgentConversationId:G,taskforceAgentConversationByAgentId:_e};FR(X,r);const Ze=window.setTimeout(async()=>{try{await Hm({stateKey:"app",workspaceId:s.current,patch:X})}catch{}},250);return()=>window.clearTimeout(Ze)},[f,T,N,Ne,s,k,Ie,Ye,q,M,te,ge,J,h,B,be,w,L,ie,W,A,_e,G,K,ve,r,E]);const Je=o.useCallback(X=>{st.current="",ke.current=null,xe.current=!1,ft.current=!1,X?.clearLoaded&&(Fe.current=!1),Ve(!1)},[]);return{hasLoadedUiStateRef:Fe,loadPersistedUiState:Re,resetPersistedUiStateLoad:Je,setActiveWorkspaceModule:de,uiStateReady:ve}}const FN="taskforce:workspace-resources-invalidated";function XI(e){typeof window>"u"||window.dispatchEvent(new CustomEvent(FN,{detail:e}))}function UN({workspaceId:e,isOpen:t,authBlocked:r,authRequiredForApi:n,isAuthenticated:s,canCallProtectedApi:i,shouldGateProtectedApiCalls:l,authSessionResolvedRef:c,authRequiredForApiRef:d,isAuthenticatedRef:m,dataVersionRef:f,refreshTaskCollectionsForDataVersion:g,coordinatorDataVersion:h=null}){const y=o.useRef(g);y.current=g;const k=o.useRef({scopeKey:null,workspaceId:"",scopeEpoch:0,renderedVersion:null,pendingVersion:null,sourceVersions:new Map,inFlight:null}),v=o.useRef(!0);o.useEffect(()=>(v.current=!0,()=>{v.current=!1}),[]);const A=!!(h&&Number.isSafeInteger(h.coordinatorGeneration)&&h.coordinatorGeneration>0&&Number.isSafeInteger(h.localDataVersion)&&h.localDataVersion>=0),b=()=>{const R=k.current;if(!v.current||R.inFlight||R.pendingVersion===null||typeof document>"u"||document.visibilityState!=="visible")return;const N=R.pendingVersion;if(R.renderedVersion!==null&&N<=R.renderedVersion)return;const j=R.scopeKey,E=R.scopeEpoch;let S=!1,L=!1;const _=y.current().then(()=>{if(!v.current||k.current.scopeKey!==j||k.current.scopeEpoch!==E){L=!0;return}S=!0,k.current.renderedVersion=N,f.current=N,XI({workspaceId:k.current.workspaceId,source:"data-version",dataVersion:N})}).catch(()=>{}).finally(()=>{k.current.inFlight===_&&(k.current.inFlight=null),(S||L)&&b()});R.inFlight=_},w=(R,N,j)=>{if(!Number.isSafeInteger(N)||N<0)return;const E=k.current,S=e;E.scopeKey!==S&&(E.scopeKey=S,E.workspaceId=e,E.scopeEpoch+=1,E.renderedVersion=null,E.pendingVersion=null,E.sourceVersions=new Map,f.current=null);const L=E.sourceVersions.get(R);if(L!==void 0&&(j.monotonic?N<=L:N===L)){b();return}if(E.sourceVersions.set(R,N),j.establishBaseline&&L===void 0){E.renderedVersion===null&&E.pendingVersion===null&&!E.inFlight&&(E.renderedVersion=N,E.pendingVersion=N,f.current=N);return}const _=Math.max(E.renderedVersion??0,E.pendingVersion??0);E.pendingVersion=_===0?N:Math.max(_+1,N),b()};o.useEffect(()=>{!A||!h||w(`${e}:coordinator:${h.coordinatorGeneration}`,h.localDataVersion,{monotonic:!0,establishBaseline:!1})},[h,A,e]),o.useEffect(()=>{if(typeof window>"u"||typeof document>"u"||ON({isOpen:t,authBlocked:r,authRequiredForApi:n,isAuthenticated:s,canCallProtectedApi:i}))return;let R=!1;const N=async()=>{if(!(R||document.visibilityState!=="visible")&&!BN({shouldGateProtectedApiCalls:l,authSessionResolved:c.current,authRequiredForApi:d.current,isAuthenticated:m.current}))try{const _=await fetch("/api/taskforce/data-version");if(!_.ok)return;const T=await _.json(),H=Number(T?.dataVersion);if(R)return;w(`${e}:legacy`,H,{monotonic:!1,establishBaseline:!0})}catch{}},j=()=>{document.visibilityState==="visible"&&N()},E=()=>{N()},S=()=>{N()},L=window.setInterval(()=>{N()},3e3);return document.addEventListener("visibilitychange",j),window.addEventListener("focus",E),window.addEventListener("online",S),N(),()=>{R=!0,window.clearInterval(L),document.removeEventListener("visibilitychange",j),window.removeEventListener("focus",E),window.removeEventListener("online",S)}},[t,e,r,n,s,i,l,c,d,m,f])}const zN="/api/taskforce/sync/v3/local/operations",HN="/api/taskforce/sync/v3/local/dispatch";function wg(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}async function HS(e,t,r){const n=await e(t,{method:"POST",credentials:"include",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(r)});let s;try{s=JSON.parse(await n.text())}catch{s=null}return{response:n,body:wg(s)}}function Ga(e,t){const r=String(e||"").trim();if(!r||r.length>200)throw new Error(`${t} is invalid.`);return r}function VN(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure operation ID generation is unavailable.");return globalThis.crypto.randomUUID()}function GN(e){return e===400||e===401||e===403||e===404||e===405||e===409||e===413||e===422||e===429}function mf(e={}){const t=e.identityStore||new Kw,r=e.fetchImpl||fetch,n=e.createOperationId||VN,s=e.fingerprint||qw;return{async execute(i){const l=Ga(i.workspaceId,"workspaceId");let c,d,m,f;try{i.preparedIdentity?(c=i.preparedIdentity.key,d={operationId:i.preparedIdentity.operationId,created:i.preparedIdentity.created},m=i.preparedIdentity.abandonIfMatches,f=i.preparedIdentity.markCaptureConfirmed):(c=await s(i.fingerprintValue),d=await t.getOrCreate(c,n),m=(S,L)=>t.deleteIfMatches(S,L),f=m)}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}const g=Ga(d.operationId,"operationId"),h=i.buildOperation(g),y=Ga(h.entityId,"entityId");let k;try{k=await HS(r,zN,{contractVersion:3,workspaceId:l,operationId:g,operation:h})}catch{return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:g}}if(k.response.status===404&&k.body?.success===!1&&typeof k.body.code=="string"&&i.disabledCodes.has(k.body.code))return d.created?(await m(c,g),{state:"disabled",fallbackEligible:!0,operationId:g}):{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:g,errorCode:k.body.code};const v=wg(k.body?.task),A=wg(k.body?.deleted),b=typeof k.body?.clientId=="string"?k.body.clientId.trim():"";if(!k.response.ok||k.body?.success!==!0||k.body.contractVersion!==3||k.body.state!=="pending"||k.body.workspaceId!==l||k.body.operationId!==g||!b||(h.mutationKind==="delete"?!A||A.taskId!==y:!v||v.id!==y)){if(!k.response.ok&&GN(k.response.status)){try{await m(c,g)}catch{}return{state:"rejected",phase:"capture",fallbackEligible:!1,operationId:g,retryable:k.response.status===429,errorCode:typeof k.body?.code=="string"?k.body.code:void 0}}return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:g,errorCode:typeof k.body?.code=="string"?k.body.code:void 0}}try{await f(c,g)}catch{return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:g,errorCode:"LOCAL_OPERATION_IDENTITY_CLEANUP_FAILED"}}const w=h.mutationKind==="delete"?{deleted:A}:{task:v};if(!i.isAuthenticated)return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"auth"};if(i.dispatchEnabled===!1)return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"sync-disabled"};let R;try{R=await HS(r,HN,{workspaceId:l,limit:1})}catch{return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"retry"}}if(!R.response.ok)return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:R.response.status===401?"auth":"retry",errorCode:typeof R.body?.code=="string"?R.body.code:void 0};if(R.body?.success!==!0||!Array.isArray(R.body.outcomes))return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"retry"};const N=R.body.outcomes.map(wg).find(S=>S?.clientId===b&&S?.operationId===g);if(!N)return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"queued"};const j=N.disposition;if(j!=="accepted"&&j!=="retry"&&j!=="blocked"&&j!=="lease-lost")return{state:"pending",fallbackEligible:!1,operationId:g,...w,pendingReason:"retry"};const E=typeof N.errorCode=="string"?N.errorCode:void 0;return j==="accepted"?{state:"accepted",fallbackEligible:!1,operationId:g,...w,dispatchDisposition:j}:{state:j==="blocked"?"blocked":"pending",fallbackEligible:!1,operationId:g,...w,dispatchDisposition:j,pendingReason:j==="retry"||j==="lease-lost"?E==="WORKSPACE_SYNC_TRANSPORT_401"?"auth":"retry":void 0,errorCode:E}}}}const KN=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED"]);function qN(e={}){const t=mf(e);return{async update(r){const n=Ga(r.workspaceId,"workspaceId"),s=Ga(r.entityId,"entityId"),i=JI(r.patch),l={domain:"task",entityId:s,mutationKind:"metadata-update",payload:{patch:i,...r.saveSource?{saveSource:r.saveSource}:{},...r.expectedDetailRevision?{expectedDetailRevision:r.expectedDetailRevision}:{}}};return t.execute({workspaceId:n,fingerprintValue:{contractVersion:3,workspaceId:n,operation:l},buildOperation:()=>l,disabledCodes:KN,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}const YN=new Set(["title","description","priority","complexity","type","category","assignee","scheduledDate","dueDate","scheduledWeekKey","orderInDay","workstreamId","taxonomies"]);function ZN(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const t=Object.keys(e);return t.length>0&&t.every(r=>YN.has(r))}function JN(e){const t=o.useRef(null);return o.useCallback(async(r,n,s)=>{if(!e.enabled||!ZN(n))return null;const i=String(e.workspaceId||"").trim(),l=String(r||"").trim();return!i||i.toLowerCase()==="default"||!l?null:(t.current||(t.current=e.client||qN()),t.current.update({workspaceId:i,entityId:l,patch:n,...s?.saveSource?{saveSource:s.saveSource}:{},...s?.expectedDetailRevision?{expectedDetailRevision:s.expectedDetailRevision}:{},isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const XN=new Set(["title","description","priority","complexity","type","category","assignee","status","scheduledDate","dueDate","orderInDay","workstreamId","taxonomies"]),QN=new Set(["task","on-hold","in-progress","review","done","cancelled"]);class qh extends Error{constructor(t,r,n){super(t),this.code=r,this.statusCode=n,this.name="DurableTaskCreateMutationError"}}function eD(e){if(!e||typeof e!="object"||Array.isArray(e))throw new qh("Task create input must be an object.","TASK_CREATE_INVALID",400);const t=e;for(const n of Object.keys(t))if(!XN.has(n))throw new qh(`Task create field is not supported by this contract: ${n}`,"TASK_CREATE_INVALID",400);const r=typeof t.title=="string"?t.title.trim():"";if(!r)throw new qh("Task title is required.","TASK_CREATE_INVALID",400);if(t.status!==void 0&&!QN.has(t.status))throw new qh(`Task create status is not supported by this contract: ${String(t.status)}`,"TASK_CREATE_INVALID",400);return{...t,title:r}}const tD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_CREATE_CAPTURE_DISABLED"]),rD="/api/taskforce/sync/v3/local/operations";function qu(e){return JSON.parse(Xc(eD(e)))}function Yh(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Local task create input must be an object.");const r=e,{attachments:n=[],checklistItems:s=[],comments:i=[],...l}=r;if(!Array.isArray(n)||!Array.isArray(s)||!Array.isArray(i))throw new Error("Local task create carriers must be arrays.");const c=qu(l);if(Xc(c)!==Xc(t))throw new Error("Local task create root does not match its durable task.");return JSON.parse(Xc({...c,attachments:n,checklistItems:s,comments:i}))}function VS(e={}){const t=mf(e),r=e.attemptStore||new ZI,n=e.fetchImpl||globalThis.fetch,s=async(l,c)=>{let d,m;try{d=await n(`${rD}?workspaceId=${encodeURIComponent(l)}&operationId=${encodeURIComponent(c)}`,{method:"GET",headers:{Accept:"application/json"}}),m=await d.json()}catch{return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:c}}if(d.status===404&&m?.success===!1&&m?.code==="WORKSPACE_SYNC_LOCAL_OPERATION_NOT_FOUND")return null;const f=m?.operation,g=f?.payload?.task,h=f?.payload?.localCarriers;if(!d.ok||m?.success!==!0||m?.contractVersion!==3||m?.workspaceId!==l||m?.operationId!==c||f?.domain!=="task"||f?.entityId!==`task-${c}`||f?.mutationKind!=="create")return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:c,errorCode:typeof m?.code=="string"?m.code:void 0};try{const y=qu(g);return{workspaceId:l,operationId:c,task:Yh({...y,...h&&typeof h=="object"?h:{}},y)}}catch{return{state:"ambiguous",phase:"capture",fallbackEligible:!1,operationId:c,errorCode:"WORKSPACE_SYNC_LOCAL_REPLAY_INVALID"}}},i=async(l,c,d,m)=>{const f=await t.execute({workspaceId:l.workspaceId,preparedIdentity:{key:l.workspaceId,operationId:l.operationId,created:!1,abandonIfMatches:(g,h)=>r.abandonIfMatches(g,h),markCaptureConfirmed:(g,h)=>r.markResolved(g,h)},buildOperation:()=>{const{attachments:g,checklistItems:h,comments:y,...k}=l.task;return{domain:"task",entityId:`task-${l.operationId}`,mutationKind:"create",payload:{task:qu(k),localCarriers:{attachments:g,checklistItems:h,comments:y}}}},disabledCodes:tD,isAuthenticated:c,dispatchEnabled:d});return m&&(f.state==="accepted"||f.state==="pending"||f.state==="blocked")?{...f,recoveredChangedInput:!0}:f};return{async recoverPending(l){const c=Ga(l.workspaceId,"workspaceId");let d;try{d=await r.listPending(c)}catch{return[]}const m=[];for(const f of d)m.push(await i(f,l.isAuthenticated,l.dispatchEnabled,!1));return m},async create(l){const c=Ga(l.workspaceId,"workspaceId"),d=qu(l.task),m=Yh(l.localTask||{...d,attachments:[],checklistItems:[],comments:[]},d),f=Ga(l.participantId,"participantId"),g=await s(c,f);if(g&&"state"in g)return g;if(g){const k=Xc(g.task)!==Xc(m);return i({...g},l.isAuthenticated,l.dispatchEnabled,k)}let h;try{h=await r.claim(c,f,m,()=>f)}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}try{const{attachments:k,checklistItems:v,comments:A,...b}=h.task;h={...h,task:Yh({...b,attachments:k,checklistItems:v,comments:A},qu(b))}}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}const y=!h.created&&Xc(h.task)!==Xc(m);return i(h,l.isAuthenticated,l.dispatchEnabled,y)},async resumePending(l){const c=Ga(l.workspaceId,"workspaceId"),d=Ga(l.participantId,"participantId"),m=await s(c,d);if(m&&"state"in m)return m;if(m)return i({...m},l.isAuthenticated,l.dispatchEnabled,!0);let f;try{f=await r.getForParticipant(c,d)}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}if(!f)return null;try{const{attachments:g,checklistItems:h,comments:y,...k}=f.task;f={...f,task:Yh({...k,attachments:g,checklistItems:h,comments:y},qu(k))}}catch{return{state:"failed",phase:"prepare",fallbackEligible:!1,errorCode:"LOCAL_OPERATION_PREPARATION_FAILED"}}return i(f,l.isAuthenticated,l.dispatchEnabled,!0)}}}const QI=["title","description","priority","complexity","type","category","assignee","scheduledDate","dueDate","orderInDay","workstreamId","taxonomies"],nD=new Set([...QI,"status","completedAt","workstreamId","checklistItems","comments","attachments","createdAt","createdBy"]);function aD(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e;if(Object.keys(t).some(s=>!nD.has(s))||t.status!=="task"||t.completedAt!==null||!Array.isArray(t.checklistItems)||!Array.isArray(t.comments)||!Array.isArray(t.attachments)||t.createdBy!=="user")return null;const r=String(t.createdAt||"").trim();if(!Number.isFinite(Date.parse(r))||new Date(r).toISOString()!==r)return null;const n={};for(const s of QI)Object.prototype.hasOwnProperty.call(t,s)&&(n[s]=t[s]);return{task:n,localTask:{...n,checklistItems:t.checklistItems,comments:t.comments,attachments:t.attachments}}}function zv(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure task-create participant ID generation is unavailable.");return globalThis.crypto.randomUUID()}function e_(e){return`taskforce.sync.v3.task-create-participant-v2:${e}`}function Hv(e,t){globalThis.sessionStorage?.setItem(e_(e),JSON.stringify(t))}function sD(e){const t=e_(e),r=globalThis.sessionStorage?.getItem(t)?.trim();if(r)try{const s=JSON.parse(r);if(typeof s.participantId=="string"&&s.participantId.trim())return{participantId:s.participantId.trim(),draftFingerprint:typeof s.draftFingerprint=="string"?s.draftFingerprint:null}}catch{}const n={participantId:zv(),draftFingerprint:null};return Hv(e,n),n}async function oD(e){let t=sD(e);return{get participantId(){return t.participantId},prepareForDraft(r){return t.draftFingerprint&&t.draftFingerprint!==r?t={participantId:zv(),draftFingerprint:r}:t={...t,draftFingerprint:r},Hv(e,t),t.participantId},rotate(){return t={participantId:zv(),draftFingerprint:null},Hv(e,t),t.participantId},close(){}}}async function iD(e){const{createdAt:t,updatedAt:r,...n}=e;return qw(n)}function cD(e){const t=o.useRef(null),r=o.useRef(null),n=o.useCallback(i=>(r.current?.workspaceId!==i&&(r.current?.promise.then(l=>l.close()),r.current={workspaceId:i,promise:oD(i)}),r.current.promise),[]);o.useEffect(()=>{if(!e.localRuntime)return;const i=String(e.workspaceId||"").trim();return i&&i.toLowerCase()!=="default"&&(n(i),e.enabled&&(t.current||(t.current=e.client||VS()),typeof t.current.recoverPending=="function"&&t.current.recoverPending({workspaceId:i,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))),()=>{const l=r.current;r.current=null,l?.promise.then(c=>c.close())}},[n,e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.localRuntime,e.workspaceId]);const s=o.useCallback(async i=>{if(!e.localRuntime)return null;const l=String(e.workspaceId||"").trim();if(!l||l.toLowerCase()==="default")return null;t.current||(t.current=e.client||VS());const c=await n(l),d=aD(i),m=e.enabled&&d?c.prepareForDraft(await iD(d.localTask)):c.participantId;let f;if(!e.enabled||!d){if(f=await t.current.resumePending({workspaceId:l,participantId:m,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}),!f&&!e.enabled)return null;if(!f&&e.enabled&&!d)return{state:"rejected",phase:"capture",fallbackEligible:!1,operationId:m,retryable:!1,errorCode:"TASK_CREATE_UNSUPPORTED_INPUT"}}else f=await t.current.create({workspaceId:l,participantId:m,task:d.task,localTask:d.localTask,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled});return f?((f.state==="accepted"||f.state==="pending"||f.state==="blocked")&&c.rotate(),f):null},[n,e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.localRuntime,e.workspaceId]);return s.resetDraft=()=>{const i=String(e.workspaceId||"").trim();!i||i.toLowerCase()==="default"||n(i).then(l=>l.rotate())},s}const GS=["task","on-hold","in-progress","review","done","cancelled"];class lD extends Error{constructor(t,r,n){super(t),this.code=r,this.statusCode=n,this.name="DurableTaskStatusMutationError"}}const KS=2e3;function Ms(e){throw new lD(e,"TASK_STATUS_INVALID_PAYLOAD",400)}function dD(e){return typeof e!="string"||!GS.includes(e)?Ms(`Task status must be one of: ${GS.join(", ")}.`):e}function uD(e,t){if(e!==null&&typeof e!="string")return Ms("Task cancellation reason must be a string or null.");const r=typeof e=="string"?e.trim():null;return r!==null&&(r.length===0||r.length>KS)?Ms(`Task cancellation reason must contain 1-${KS} characters.`):t!=="cancelled"&&r!==null?Ms("Task cancellation reason must be null unless status is cancelled."):r}function fD(e){if(e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===0)return{};let t;try{t=JI(e)}catch(r){if(r instanceof vg)return Ms(r.message);throw r}return Object.prototype.hasOwnProperty.call(t,"assignee")?Ms("Task status metadataPatch cannot contain assignee; use assigneeIntent."):t}function mD(e,t){if(!e||typeof e!="object"||Array.isArray(e))return Ms("Task status assigneeIntent must be an object.");const r=e;return r.kind==="preserve"?Object.keys(r).length!==1?Ms("Preserve assignee intent must contain exactly kind."):{kind:"preserve"}:r.kind==="set"?Object.keys(r).sort().join(",")!=="kind,value"?Ms("Set assignee intent must contain exactly kind and value."):r.value!==null&&typeof r.value!="string"?Ms("Set assignee intent value must be a string or null."):{kind:"set",value:(typeof r.value=="string"?r.value.trim():"")||null}:r.kind==="claim-if-unassigned"?Object.keys(r).sort().join(",")!=="kind,value"?Ms("Claim-if-unassigned intent must contain exactly kind and value."):t!=="in-progress"?Ms("Claim-if-unassigned is valid only when status is in-progress."):typeof r.value!="string"||!r.value.trim()?Ms("Claim-if-unassigned value must be a nonblank string."):{kind:"claim-if-unassigned",value:r.value.trim()}:Ms("Task status assigneeIntent kind is invalid.")}function pD(e){if(!e||typeof e!="object"||Array.isArray(e))return Ms("Task status payload must be an object.");const t=e;if(Object.keys(t).sort().join(",")!=="assigneeIntent,canceledReason,metadataPatch,status")return Ms("Task status payload must contain exactly status, assigneeIntent, canceledReason, and metadataPatch.");const r=dD(t.status);return{status:r,assigneeIntent:mD(t.assigneeIntent,r),canceledReason:uD(t.canceledReason,r),metadataPatch:fD(t.metadataPatch)}}const hD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_STATUS_CAPTURE_DISABLED"]);function gD(e={}){const t=mf(e);return{async setStatus(r){const n=Ga(r.workspaceId,"workspaceId"),s=Ga(r.entityId,"entityId"),i=pD({status:r.status,assigneeIntent:r.assigneeIntent,canceledReason:r.canceledReason,metadataPatch:r.metadataPatch??{}}),l={domain:"task",entityId:s,mutationKind:"set-status",payload:{...i,...r.expectedDetailRevision?{expectedDetailRevision:r.expectedDetailRevision}:{}}};return t.execute({workspaceId:n,fingerprintValue:{contractVersion:3,workspaceId:n,operation:l},buildOperation:()=>l,disabledCodes:hD,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}function yD(e){const t=o.useRef(null);return o.useCallback(async(r,n)=>{if(!e.enabled)return null;const s=String(e.workspaceId||"").trim(),i=String(r||"").trim();return!s||s.toLowerCase()==="default"||!i?null:(t.current||(t.current=e.client||gD()),t.current.setStatus({workspaceId:s,entityId:i,...n,metadataPatch:n.metadataPatch,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}class Uu extends Error{constructor(t,r,n){super(t),this.code=r,this.statusCode=n,this.name="DurableTaskLifecycleMutationError"}}const qS=2e3;function YS(e,t){if(!t||typeof t!="object"||Array.isArray(t))throw new Uu("Task lifecycle payload must be an object.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);const r=t,n=Object.keys(r).sort();if(e==="unarchive"){if(n.length!==0)throw new Uu("Unarchive payload must be empty.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);return{cancellation:!1,reason:null}}if(n.length!==2||n[0]!=="cancellation"||n[1]!=="reason"||typeof r.cancellation!="boolean")throw new Uu("Archive payload must contain exactly cancellation and reason.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);if(r.reason!==null&&typeof r.reason!="string")throw new Uu("Archive reason must be a string or null.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);const s=typeof r.reason=="string"?r.reason.trim():null;if(s!==null&&(s.length===0||s.length>qS))throw new Uu(`Archive reason must contain 1-${qS} characters.`,"TASK_LIFECYCLE_INVALID_PAYLOAD",400);if(!r.cancellation&&s!==null)throw new Uu("Archive reason must be null when cancellation is false.","TASK_LIFECYCLE_INVALID_PAYLOAD",400);return{cancellation:r.cancellation,reason:s}}class Zh extends Error{constructor(t,r,n){super(t),this.code=r,this.statusCode=n,this.name="DurableTaskWorkflowMutationError"}}function ZS(e,t){if(!t||typeof t!="object"||Array.isArray(t))throw new Zh("Task workflow payload must be an object.","TASK_WORKFLOW_INVALID_PAYLOAD",400);const r=t,n=Object.keys(r).sort();if(e==="complete"){if(n.length!==0)throw new Zh("Complete payload must be empty.","TASK_WORKFLOW_INVALID_PAYLOAD",400);return{assignee:null}}if(n.length!==1||n[0]!=="assignee"||r.assignee!==null&&typeof r.assignee!="string")throw new Zh("Reopen payload must contain exactly assignee as a string or null.","TASK_WORKFLOW_INVALID_PAYLOAD",400);const s=typeof r.assignee=="string"?r.assignee.trim():null;if(typeof r.assignee=="string"&&!s)throw new Zh("Reopen assignee cannot be blank.","TASK_WORKFLOW_INVALID_PAYLOAD",400);return{assignee:s}}const kD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_LIFECYCLE_CAPTURE_DISABLED"]);function vD(e){return e.mutationKind==="archive"?YS("archive",{cancellation:e.cancellation,reason:e.reason}):e.mutationKind==="unarchive"?(YS("unarchive",{}),{}):e.mutationKind==="complete"?(ZS("complete",{}),{}):ZS("reopen",{assignee:e.assignee})}function wD(e={}){const t=mf(e),r=async n=>{const s=Ga(n.workspaceId,"workspaceId"),i=Ga(n.entityId,"entityId"),l=vD(n),c=n.mutationKind,d={domain:"task",entityId:i,mutationKind:c,payload:l};return t.execute({workspaceId:s,fingerprintValue:{contractVersion:3,workspaceId:s,operation:d},buildOperation:()=>d,disabledCodes:kD,isAuthenticated:n.isAuthenticated,dispatchEnabled:n.dispatchEnabled})};return{mutate:r,archive(n){return r({...n,mutationKind:"archive"})},unarchive(n){return r({...n,mutationKind:"unarchive"})},complete(n){return r({...n,mutationKind:"complete"})},reopen(n){return r({...n,mutationKind:"reopen"})}}}function bD(e){const t=o.useRef(null);return o.useCallback(async(r,n)=>{if(!e.enabled)return null;const s=String(e.workspaceId||"").trim(),i=String(r||"").trim();return!s||s.toLowerCase()==="default"||!i?null:(t.current||(t.current=e.client||wD()),t.current.mutate({workspaceId:s,entityId:i,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled,...n}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const SD=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_DELETE_CAPTURE_DISABLED"]);function AD(e={}){const t=mf(e);return{delete(r){const n=Ga(r.workspaceId,"workspaceId"),i={domain:"task",entityId:Ga(r.entityId,"entityId"),mutationKind:"delete",payload:{}};return t.execute({workspaceId:n,fingerprintValue:{contractVersion:3,workspaceId:n,operation:i},buildOperation:()=>i,disabledCodes:SD,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}function CD(e){const t=o.useRef(null);return o.useCallback(async r=>{if(!e.enabled)return null;const n=String(e.workspaceId||"").trim(),s=String(r||"").trim();return!n||n.toLowerCase()==="default"||!s?null:(t.current||(t.current=e.client||AD()),t.current.delete({workspaceId:n,entityId:s,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const ID=new Set(["WORKSPACE_SYNC_LOCAL_CAPTURE_DISABLED","WORKSPACE_SYNC_LOCAL_DELETE_CAPTURE_DISABLED"]);function _D(e={}){const t=mf(e);return{restore(r){const n=Ga(r.workspaceId,"workspaceId"),s=Ga(r.entityId,"entityId"),i=Ga(r.deletedRecordId,"deletedRecordId"),l=r.restoreDestination||"previous",c={domain:"task",entityId:s,mutationKind:"restore",payload:l==="archive"?{deletedRecordId:i,restoreDestination:l}:{deletedRecordId:i}};return t.execute({workspaceId:n,fingerprintValue:{contractVersion:3,workspaceId:n,operation:c},buildOperation:()=>c,disabledCodes:ID,isAuthenticated:r.isAuthenticated,dispatchEnabled:r.dispatchEnabled})}}}function TD(e){const t=o.useRef(null);return o.useCallback(async(r,n,s="previous")=>{if(!e.enabled)return null;const i=String(e.workspaceId||"").trim(),l=String(n||"").trim(),c=String(r||"").trim();return!i||i.toLowerCase()==="default"||!l||!c?null:(t.current||(t.current=e.client||_D()),t.current.restore({workspaceId:i,entityId:l,deletedRecordId:c,restoreDestination:s,isAuthenticated:e.isAuthenticated,dispatchEnabled:e.dispatchEnabled}))},[e.client,e.dispatchEnabled,e.enabled,e.isAuthenticated,e.workspaceId])}const t_=["active","archive","deleted","planning"];function r_(e){const t=new Set(e||[]);return t_.filter(r=>t.has(r))}function xD(e){return Array.from(new Set((e||[]).map(t=>String(t||"").trim()).filter(Boolean)))}function Nd(e,t){return{collections:r_(e),taskIds:xD(t?.taskIds),ambiguous:t?.ambiguous===!0}}function n_(e,t){return e?Nd([...e.collections,...t.collections],{taskIds:[...e.taskIds||[],...t.taskIds||[]],ambiguous:e.ambiguous||t.ambiguous}):Nd(t.collections,{taskIds:t.taskIds,ambiguous:t.ambiguous})}function RD(e){return e.ambiguous?[]:[...e.taskIds||[]]}function PD(e,t){if(e==="taskforce:update"||e==="taskforce:replay-gap"||e==="taskforce:replay-reset"||!t?.length)return Nd(t_,{ambiguous:!0});let r=null;for(const n of t){const s=String(n.entityType||"").trim(),i=r_(n.affectedCollections);let l;i.length>0?l=i:s==="task"?l=String(n.changeType||"").trim()==="delete"?["active","archive","deleted"]:["active","archive","deleted","planning"]:s==="taxonomy"?l=["active","archive","planning"]:s==="initiative"||s==="workstream"?l=["planning"]:l=[],r=n_(r,Nd(l,{taskIds:n.entityIds}))}return r||Nd([])}class jD{values=new Map;async getOrCreate(t,r){const n=this.values.get(t);if(n)return{operationId:n,created:!1};const s=r();return this.values.set(t,s),{operationId:s,created:!0}}async deleteIfMatches(t,r){this.values.get(t)===r&&this.values.delete(t)}}class ED{values=new Map;async claim(t,r,n){const s=this.values.get(t);if(s)return{...s,created:!1};const i={fingerprint:t,operationId:n(),workstream:r};return this.values.set(t,i),{...i,created:!0}}async deleteIfMatches(t,r){this.values.get(t)?.operationId===r&&this.values.delete(t)}}const ND=new Set(["WORKSTREAM_MUTATION_INVALID","WORKSTREAM_MUTATION_IDENTITY_REQUIRED","WORKSTREAM_NOT_FOUND","WORKSTREAM_ID_CONFLICT","WORKSTREAM_STATE_CONFLICT","WORKSTREAM_INITIATIVE_INVALID","WORKSTREAM_OWNER_INVALID","WORKSTREAM_COMMENT_AUTHOR_INVALID","WORKSTREAM_ATTACHMENT_INVALID","WORKSTREAM_HAS_ACTIVE_TASKS","WORKSTREAM_TASK_ORDER_INVALID","WORKSTREAM_TASK_ORDER_MEMBERSHIP_MISMATCH","WORKSTREAM_TASK_ORDER_IDENTITY_CONFLICT","ENTITY_EVENT_IDENTITY_COLLISION","WORKSPACE_SYNC_REVISION_CONFLICT","WORKSPACE_SYNC_IDEMPOTENCY_CONFLICT"]);function DD(e,t){return e.find(n=>n.id===t.id)?null:t}function JS(){if(!globalThis.crypto?.randomUUID)throw new Error("Secure workstream operation identity generation is unavailable.");return`operation-${globalThis.crypto.randomUUID()}`}async function _m(e){if(e.ok||e.status<400||e.status>=500)return!1;const t=await e.clone().json().catch(()=>null);return ND.has(String(t?.code||"").trim())}function MD(e){const t=globalThis.indexedDB?new Kw:new jD,r=globalThis.indexedDB?new pN:new ED;return{async prepareCreate(n,s){if(!globalThis.crypto?.randomUUID)throw new Error("Secure workstream identity generation is unavailable.");const i=hn({workspaceId:n,candidate:s}),l=await r.claim(i,{...s,id:s.id||`workstream-${globalThis.crypto.randomUUID()}`,createdAt:s.createdAt||new Date().toISOString()},JS);return{fingerprint:i,operationId:l.operationId,body:l.workstream}},confirmCreate(n,s){return r.deleteIfMatches(n,s)},abandonCreate(n,s){return r.deleteIfMatches(n,s)},async prepareMutation(n,s,i,l=null){const c=hn({workspaceId:n,url:s,body:i,observedState:l}),d=await t.getOrCreate(c,JS);return{fingerprint:c,operationId:d.operationId}},confirmMutation(n,s){return t.deleteIfMatches(n,s)},abandonMutation(n,s){return t.deleteIfMatches(n,s)}}}async function Tm(e,t,r){const n={...t,headers:{...t.headers||{},"x-taskforce-operation-id":r}},s=()=>fetch(e,n);let i;try{i=await s()}catch{i=await s()}if(i.status!==409)return i;const l=await i.clone().json().catch(()=>({}));if(l?.code!=="WORKSPACE_SYNC_OPERATION_IN_PROGRESS")return i;const c=Date.parse(String(l?.retryAt||"")),d=Number.isFinite(c)?Math.max(0,c-Date.now()):Number.NaN;return!Number.isFinite(d)||d>2e3?i:(await new Promise(m=>setTimeout(m,d)),s())}const LD={};function OD(e,t,r,n){const s=new Map;for(const i of t)s.set(i.id,i);for(const i of e)s.set(i.id,i);if(n&&s.has(n)){const i=r.find(l=>l.id===n);i&&s.set(n,i)}return Array.from(s.values())}function si(e,t){const r=e.findIndex(n=>n.id===t.id);return r===-1?[...e,t]:e.map((n,s)=>s===r?t:n)}function Yk(){return{status:"loading",error:null,isRefreshing:!1,collections:{initiatives:"loading",workstreams:"loading"}}}const Zc=Cw(LD),Zk=(()=>{const e=Zc.baseUrl,t=Zc.cloudAuthBaseUrl;if(t)return t;const r=Zc.apiBaseUrl;return r||e||"https://app.taskforcehq.ai"})(),Jh=2e4,BD=new Set(["external-abort","superseded","workspace-reset","workspace-transition"]);function bg(e){return typeof DOMException<"u"&&e instanceof DOMException?e.name==="AbortError":String(e?.name||"").toLowerCase()==="aborterror"}function Vv(e){return typeof e=="string"&&BD.has(e)}function Jk(e,t){return t.aborted?e===t.reason||Vv(e)||Vv(t.reason)?!0:bg(e):!1}function XS(e){const t=new Error(`Startup checks timed out after ${e}ms.`);return t.name="BootstrapTimeoutError",t}function QS(e){const t=e&&typeof e=="object"?e:{},r=Array.isArray(t.initiatives)?t.initiatives.filter(i=>!!(i&&typeof i=="object"&&typeof i.id=="string")):[],n=Array.isArray(t.workstreams)?t.workstreams.filter(i=>!!(i&&typeof i=="object"&&typeof i.id=="string")):[],s=Array.isArray(t.workstreamTaskSummaries)?t.workstreamTaskSummaries.flatMap(i=>{if(!i||typeof i!="object")return[];const l=String(i.workstreamId||"").trim();if(!l)return[];const c=Array.isArray(i.tasks)?i.tasks:[],d=Math.max(0,Number(i.taskCount)||0),m=Math.max(0,Number(i.completedTaskCount)||0);return[{workstreamId:l,taskCount:d,completedTaskCount:m,tasks:c.filter(f=>!!(f&&typeof f=="object"&&typeof f.id=="string")).map(f=>({id:String(f.id||"").trim(),referenceNumber:typeof f.referenceNumber=="number"?f.referenceNumber:null,localReferenceNumber:typeof f.localReferenceNumber=="number"?f.localReferenceNumber:null,referenceLabel:typeof f.referenceLabel=="string"&&f.referenceLabel.trim()||void 0,title:String(f.title||"").trim()||"Untitled Task",status:typeof f.status=="string"?f.status:null,assignee:typeof f.assignee=="string"?f.assignee:null,attachmentCount:Math.max(0,Number(f.attachmentCount)||0),isArchived:!!f.isArchived}))}]}):[];return{initiatives:r,workstreams:n,workstreamTaskSummaries:s}}function WD({config:e={},initialTaskId:t,initialActivityEntryId:r,requestedWorkspaceId:n,onTaskCountChange:s,onClose:i}){const l={...yx,...e},{categories:c,types:d,apiEndpoint:m,apiBaseUrl:f,cloudAuthBaseUrl:g,cloudMcpBaseUrl:h,wsBaseUrl:y,shortcut:k}=l,v=typeof window<"u"?String(window.location.hostname||"").trim().toLowerCase():"",A=v==="localhost"||v==="127.0.0.1"||v==="::1",b=typeof window<"u"&&!A,[w,R]=o.useState({cloudEnvironment:"",cloudBaseUrl:"",cloudMcpBaseUrl:"",baseUrl:"",apiBaseUrl:"",cloudAuthBaseUrl:"",wsBaseUrl:"",cloudAuthViaLocalProxy:!1,authSource:"",workspaceMode:"",workspaceSwitchingEnabled:null,appGates:void 0,syncV3TaskMetadataActivation:!1,syncV3TaskCreateActivation:!1,syncV3TaskStatusActivation:!1,syncV3TaskDeleteActivation:!1,syncV3TaskCloudHttpRootActivation:!1,syncV3LocalOutboxDispatch:!1,localCoordinatorBrowserAuthorityGate:!1,syncV3InitiativeFeedActivation:void 0,syncV3CombinedFeedRouteAvailable:void 0,syncV3CombinedFeedActivation:void 0,syncV3CombinedFeedCoverage:void 0}),[N,j]=o.useState(!1),E=o.useCallback(C=>typeof C=="string"?C.trim().replace(/\/+$/,""):"",[]);o.useEffect(()=>{if(typeof window>"u"){j(!0);return}let C=!1;return(async()=>{try{const se=await fetch("/api/taskforce/auth/runtime-config",{method:"GET",credentials:"include",cache:"no-store"});if(!se.ok)return;const ce=await se.json().catch(()=>({})),Q=ce?.config&&typeof ce.config=="object"?ce.config:{};if(C)return;const qe=String(Q.runtimeMode||"").trim().toLowerCase()==="cloud"?"cloud":"local",tt=String(Q.workspaceMode||"").trim(),Gt=tt==="single-local"||tt==="multi-cloud"?tt:qe==="cloud"?"multi-cloud":"single-local";be(qe);const pr=El(Q.syncV3?.combinedFeed?.coverage||{});R({cloudEnvironment:typeof Q.cloudEnvironment=="string"?String(Q.cloudEnvironment).trim().toLowerCase():"",cloudBaseUrl:E(Q.cloudBaseUrl),cloudMcpBaseUrl:E(Q.cloudMcpBaseUrl),baseUrl:E(Q.baseUrl),apiBaseUrl:E(Q.apiBaseUrl),cloudAuthBaseUrl:E(Q.cloudAuthBaseUrl),wsBaseUrl:E(Q.wsBaseUrl),cloudAuthViaLocalProxy:!!Q.cloudAuthViaLocalProxy,authSource:"cloud",workspaceMode:Gt,workspaceSwitchingEnabled:typeof Q.workspaceSwitchingEnabled=="boolean"?!!Q.workspaceSwitchingEnabled:Gt==="multi-cloud",appGates:EC(Q.appGates)?Q.appGates:void 0,syncV3TaskMetadataActivation:Q.syncV3?.taskMetadataActivation===!0,syncV3TaskCreateActivation:Q.syncV3?.taskCreateActivation===!0,syncV3TaskStatusActivation:Q.syncV3?.taskStatusActivation===!0,syncV3TaskDeleteActivation:Q.syncV3?.taskDeleteActivation===!0,syncV3TaskCloudHttpRootActivation:Q.syncV3?.taskCloudHttpRootActivation===!0,syncV3LocalOutboxDispatch:Q.syncV3?.localOutboxDispatch===!0,localCoordinatorBrowserAuthorityGate:Q.syncV3?.localCoordinatorBrowserAuthorityGate===!0,syncV3InitiativeFeedActivation:typeof Q.syncV3?.initiativeFeedActivation=="boolean"?Q.syncV3.initiativeFeedActivation:void 0,syncV3CombinedFeedRouteAvailable:typeof Q.syncV3?.combinedFeed?.routeAvailable=="boolean"?Q.syncV3.combinedFeed.routeAvailable:void 0,syncV3CombinedFeedActivation:typeof Q.syncV3?.combinedFeed?.activationReady=="boolean"?Q.syncV3.combinedFeed.activationReady:void 0,syncV3CombinedFeedCoverage:pr?.coverage})}catch{}finally{C||j(!0)}})(),()=>{C=!0}},[E]);const S=typeof window>"u"?"":A?Zk:"",L=E(Zc.baseUrl),_=E(Zc.apiBaseUrl),T=E(Zc.cloudBaseUrl),H=E(Zc.cloudMcpBaseUrl),q=E(Zc.cloudAuthBaseUrl),z=E(Zc.wsBaseUrl),M=E(f),Z=E(g),J=E(h),ee=w.apiBaseUrl||w.baseUrl,fe=M||ee||(A?"":_||L)||"",Ie=Z||q||L,$e=w.cloudAuthBaseUrl||w.baseUrl,ye=((A?$e||Ie:Ie||$e)||fe||S).trim().replace(/\/+$/,""),ge=E(iR(w.cloudMcpBaseUrl||w.cloudAuthBaseUrl||w.cloudBaseUrl||J||Z||H||q||T||ye)),oe=(w.cloudMcpBaseUrl||J||ge||w.cloudBaseUrl||H||T||ye||S).trim().replace(/\/+$/,""),ie=!b&&!!ye&&!fe,me=b||N&&!!(ye||fe),W=me&&!ie,V=!!(ye||fe||b),B=b?"cloud":"local",[D,be]=o.useState(()=>B),Se=B==="local"&&A&&V?Tw():"",K=Se.length>0,Y=o.useCallback(C=>!C||/^https?:\/\//i.test(C)||!fe||!C.startsWith("/")?C:`${fe}${C}`,[fe]),G=o.useCallback(C=>{if(!C||/^https?:\/\//i.test(C)||!C.startsWith("/"))return C;const se=C.startsWith("/api/taskforce/auth/")||C.startsWith("/api/taskforce/account/")||C.startsWith("/api/taskforce/billing/")||/^\/api\/taskforce\/model-connections(?:[/?]|$)/i.test(C)||/^\/api\/taskforce\/agents\/model-catalog(?:\?|$)/i.test(C)||/^\/api\/taskforce\/agents\/[^/]+\/connection-binding(?:\?|$)/i.test(C)||C.startsWith("/api/taskforce/sync/")||C.startsWith("/api/taskforce/settings/mcp/");if(!b&&se&&(D==="cloud"||!N||w.cloudAuthViaLocalProxy||w.workspaceMode==="multi-cloud"))return C;const ce=ye||fe;if(ce){const Q=`${ce}${C}`;if(typeof window<"u"&&!b&&se)try{if(new URL(Q,window.location.origin).origin===window.location.origin)return`${Zk}${C}`}catch{return`${Zk}${C}`}return Q}return C},[N,w.cloudAuthViaLocalProxy,w.workspaceMode,ye,fe,b,D]),ae=o.useCallback(C=>{const se=String(C||"").trim()||"/taskforce-ws",ce=se.startsWith("/")?se:`/${se}`,Q=String(y||w.wsBaseUrl||z||fe||"").trim().replace(/\/+$/,""),Be=typeof window<"u"?window.location.origin:"",qe=Q||Be;if(!qe)return"";try{const tt=new URL(ce,qe);return tt.protocol==="https:"&&(tt.protocol="wss:"),tt.protocol==="http:"&&(tt.protocol="ws:"),tt.toString()}catch{return""}},[y,w.wsBaseUrl,z,fe]),[_e,Oe]=o.useState("tasks"),[Fe,st]=o.useState(!1),[ft,xe]=o.useState(!1),[ke,ve]=o.useState("open"),[Ve,Ne]=o.useState(!1),[de,x]=o.useState(Zu(l.theme)||xg),[le,Re]=o.useState(Zu(l.theme)||xg),[Je,X]=o.useState(!0),[Ze]=o.useState(".taskforce"),re=!1,[Ee,je]=o.useState(!1),[Pe,Ce]=o.useState([]),[Te,pe]=o.useState([]),[Me,et]=o.useState(""),[Ue,yt]=o.useState(null),[Le,mt]=o.useState(null),[kt,He]=o.useState(""),[rt,It]=o.useState(""),Xe=o.useMemo(()=>eR({projectRoot:kt,runtimeMode:B}),[kt,B]),[wt,at]=o.useState(""),[U,he]=o.useState(""),Ke=aR(D),Et=w.workspaceMode==="single-local"||w.workspaceMode==="multi-cloud"?w.workspaceMode:Ke.workspaceMode,vt=typeof w.workspaceSwitchingEnabled=="boolean"?w.workspaceSwitchingEnabled:Ke.workspaceSwitchingEnabled,[Bt,dr]=o.useState(!1),[er,cr]=o.useState(!1),[Ot,fr]=o.useState(K),[Ar,Lr]=o.useState(K?Se:"anonymous"),[Wr,De]=o.useState(""),[nt,pt]=o.useState(""),[ut,Tt]=o.useState(""),[Xt,Nt]=o.useState([]),[Qt,St]=o.useState(""),[Kt,Ft]=o.useState(!0),[ir,sr]=o.useState(null),[ot,or]=o.useState(()=>{if(B==="local")return"default";const C=Av(Xe);return C&&C.toLowerCase()!=="default"?C:"default"}),Nr=o.useMemo(()=>tR({projectRoot:kt,runtimeMode:D,workspaceId:ot}),[kt,D,ot]),[ur,ra]=o.useState([]),[wr,lr]=o.useState(()=>jl()),[u,bt]=o.useState(!1),[gt,Xr]=o.useState(K),[Ir,Vt]=o.useState("idle"),[Ur,$r]=o.useState(null),[Tn,an]=o.useState(null),Qr=o.useRef(null),Ge=o.useRef(0),Gr=o.useRef(0),yr=o.useRef(K),Yt=o.useRef(ot),Zt=o.useRef(null),Sn=o.useRef(0),$t=o.useRef((typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`).replace(/[^A-Za-z0-9_-]+/g,"").slice(0,12)||"session"),[Ut,Fr]=o.useState(0),Wn=o.useRef(null),da=o.useRef(null),ua=o.useRef(null),en=o.useRef(null),sn=o.useRef(null),on=o.useRef(null),xn=o.useRef(null),cn=o.useCallback((C,se)=>{const ce=String(C||"").trim();if(!ce)return;const Q=String(Yt.current||"").trim();!se?.skipTransitionReset&&Q&&Q!==ce&&(Sn.current+=1,Fr(Sn.current)),Yt.current=ce,se?.clearExplicitSelection!==!1&&(Zt.current=null),or(ce)},[]);o.useEffect(()=>{Yt.current=ot},[ot]);const xr=o.useCallback(C=>{const se=String(C||"").trim();se&&or(()=>{const ce=String(Zt.current||"").trim();let Q=se;return ce&&ce!==se&&(Q=ce),Yt.current=Q,Q})},[]),Dr=o.useCallback(()=>({workspaceId:String(Yt.current||"default").trim()||"default",epoch:Sn.current}),[]),kn=o.useCallback(()=>Yt.current,[]),tn=o.useCallback(C=>(String(Yt.current||"default").trim()||"default")!==C.workspaceId||Sn.current!==C.epoch,[]),ga=o.useCallback(C=>Sn.current!==C.epoch,[]),Mn=o.useCallback(C=>bg(C)||Vv(C),[]),mn=o.useCallback(()=>{[Wn,da,ua,en,sn,on].forEach(C=>{C.current?.abort("workspace-transition"),C.current=null}),xn.current!==null&&typeof window<"u"&&(window.clearTimeout(xn.current),xn.current=null),du.current=null},[]),Rn=o.useMemo(()=>LN({shouldGateProtectedApiCalls:W,runtimeMode:D,authSessionResolved:gt,authRequiredForApi:Bt,isAuthenticated:Ot}),[W,D,gt,Bt,Ot]),gn=Rn.shouldDeferProtectedApiCalls,lt=Rn.shouldBlockProtectedApiCalls,[Ln,Wt]=o.useState(null),[ue,it]=o.useState(null),[_t,Pt]=o.useState(!1),[rr,mr]=o.useState("unknown"),[dn,xt]=o.useState(null),[Rr,Yr]=o.useState(l.shortcut||"Alt+T"),[ln,qn]=o.useState(l.priorities||[]),[Kr,jr]=o.useState(""),[Yn,Ia]=o.useState(!1),[$n,Cs]=o.useState(!1),[ya,Bs]=o.useState(!0),[eo,to]=o.useState(()=>Jx()),Zn=o.useMemo(()=>Zx(),[]),[Ws,na]=o.useState(()=>{try{return(Intl.DateTimeFormat().resolvedOptions().locale||"").toLowerCase().startsWith("en-us")?"sunday":"monday"}catch{return"monday"}}),[pi,Jn]=o.useState(!1),[hi,_a]=o.useState(!0),[aa,Ta]=o.useState(!1),[Ka,ls]=o.useState(!0),[ds,La]=o.useState(!0),[qa,xa]=o.useState(!0),[Ra,Fn]=o.useState(!0),[us,dt]=o.useState(!1),[vr,Zr]=o.useState(""),[Cn,Pn]=o.useState(null);EN({currentWorkspaceIdRef:Yt,resolveApiUrl:Y,runtimeMode:D});const{initiativeTemplates:ro,fetchInitiativeTemplates:Is}=UE({shouldDeferProtectedApiCalls:gn,shouldBlockProtectedApiCalls:lt}),{zenMode:$s,setZenModeState:Pa,toggleZenMode:ka}=zE(),[jn,Er]=o.useState(!1),[Oa,Ya]=o.useState(null),{uiNotice:sa,pushNotice:Un,clearNotice:zn}=BE(),Za=o.useRef(sa);Za.current=sa;const[So,gi]=o.useState([]),_s=o.useRef(null),[yi,we]=o.useState(0),Ct=o.useCallback(C=>!C||!kt?C:C.startsWith(kt)?C.slice(kt.length).replace(/^[/\\]+/,""):C,[kt]),[qt,nr]=o.useState([]),[br,yn]=o.useState([]),[fa,Xn]=o.useState([]),[pn,fs]=o.useState([]),[Ui,no]=o.useState([]),[zi,Fs]=o.useState(Yk),[ar,Hn]=o.useState([]),[En,ms]=o.useState(null),[In,ja]=o.useState(null),[ao,Ts]=o.useState(()=>new Set),Ba=o.useRef(null),Wa=o.useRef(null),[va,$a]=o.useState(!1),[Sr,ki]=o.useState(null),ps=o.useRef(null),[Ao,Us]=o.useState(null),[Ja,wa]=o.useState(null),Fa=o.useRef(null),so=o.useRef(()=>null),Ua=o.useRef(null),[Xa,ba]=o.useState(null),Ko=o.useCallback(C=>{String(t||"").trim()||ba(C)},[t]),[Sa,pc]=o.useState(!1),[hs,vi]=o.useState([]),[un,Hi]=o.useState(!1),[ma,zs]=o.useState({}),Ea=o.useRef({authSessionResolved:!1,configLoaded:!1,workspaceBootstrapPending:!1});o.useEffect(()=>{Ea.current={authSessionResolved:gt,configLoaded:un,workspaceBootstrapPending:u}},[gt,un,u]);const hc=o.useCallback(C=>{Vt(C),C!=="ready"&&($r(null),an(Date.now()))},[]),gs=o.useCallback(C=>{const se=Ea.current;se.authSessionResolved&&se.configLoaded&&!se.workspaceBootstrapPending||(Vt("stalled"),$r(C),an(ce=>ce??Date.now()))},[]),wi=o.useCallback(async(C,se,ce=$m,Q)=>{const Be=new AbortController,qe=Q?.signal,tt=Number(ce)>0?Number(ce):$m,Gt=Dr(),pr=C.startsWith("/api/taskforce/")?Ok(se,Zb({workspaceId:Gt.workspaceId,epoch:Gt.epoch,seed:$t.current})):se,Tr=typeof window<"u"?window.setTimeout(()=>Be.abort("bootstrap-timeout"),tt):null,Or=()=>{Be.abort(qe?.reason||"external-abort")};qe&&(qe.aborted?Or():qe.addEventListener("abort",Or,{once:!0}));try{return await fetch(C,{...pr||{},signal:Be.signal})}catch(Br){throw qe?.aborted&&Jk(Br,qe)?qe.reason||Br:bg(Br)||Br==="bootstrap-timeout"?XS(tt):Br}finally{qe&&qe.removeEventListener("abort",Or),Tr!==null&&typeof window<"u"&&window.clearTimeout(Tr)}},[Dr]),qo=o.useMemo(()=>{const C=!gt,se=Ir==="stalled",ce=gt&&(!un||u||se);let Q="Checking account, workspace access, and setup status...";return Ir==="auth"?Q="Verifying session...":Ir==="workspace"?Q="Resolving workspace access...":Ir==="config"&&(Q="Loading configuration..."),{phase:Ir,auth:{resolved:gt,pending:C},config:{loaded:un},workspace:{pending:u},pending:C||ce,authPending:C,appPending:ce,ready:gt&&un&&!u&&Ir==="ready",stalled:se,subtitle:Q,error:Ur,startedAt:Tn}},[gt,Ur,Ir,Tn,un,u]),Co=o.useCallback(C=>String(C?.name||"")==="BootstrapTimeoutError",[]),[Io,gc]=o.useState([]),[Yo,ys]=o.useState({}),[pa,oo]=o.useState(l.taxonomies||[]),fn=o.useMemo(()=>(hs.length>0?hs:c||[]).map(se=>typeof se=="string"?{value:se.toLowerCase().replace(/\s+/g,"-"),label:se}:se).sort((se,ce)=>se.label.localeCompare(ce.label)),[hs,c]),_o=o.useMemo(()=>({categories:fn,types:Io,priorities:ln,taxonomies:pa,displayLabels:Yo}),[fn,Io,ln,pa,Yo]);o.useMemo(()=>fn.filter(C=>!C.disabled),[fn]);const Qa=o.useCallback(C=>C.find(ce=>ce.value==="default"||ce.value==="general"||ce.label==="General"||ce.value==="Taskforce"||ce.label==="Taskforce")?.value||C[0]?.value||"default",[]),Qn=Io.length>0?Io:d,[yc,Nl]=o.useState(!1),[tl,oa]=o.useState(""),Dl=o.useCallback(()=>oa(""),[]),bi="Authentication required. Sign in to continue.",[To,kc]=o.useState(!1),[Si,Zo]=o.useState(!1),xo=o.useCallback(()=>{cr(D==="cloud"),fr(!1),pt(""),Tt(""),St(""),oa(bi)},[bi,D]),vc=o.useRef(new Map),{taskDetails:An,staleTaskDetailRevisions:Jo,recentlyChangedTaskIds:Hs,fetchTasks:F,fetchArchive:O,loadTaskDetail:zt,cancelTaskDetailLoad:Mt,refreshTaskCollections:Rt,refreshTaskCollectionsFromInvalidation:ht,mergeTaskFromServer:rn}=HE({tasks:qt,archivedTasks:br,setTasks:nr,setArchivedTasks:yn,setLoadingTasks:$a,getCurrentWorkspaceId:kn,workspaceResetKey:`${ot}:${Ut}`,shouldDeferProtectedApiCalls:gn,shouldBlockProtectedApiCalls:lt,handleUnauthorized:xo,authRequiredForApi:Bt,setError:oa,setLoading:Nl,pendingTaskMetadataOverlaysRef:vc});o.useEffect(()=>{Ut!==0&&(du.current=null,lo.current="",Vs.current="",ri.current="",Ni.current="",dl.current="",kc(!1),lr(jl()),Zo(!1),Hn([]),ms(null),ja(null),Ts(new Set),Ba.current=null,Wa.current=null,nr([]),yn([]),vc.current.clear(),Xn([]),fs([]),no([]),Fs(Yk()),ba(null),$a(!1))},[yn,$a,nr,Ut]);const tr=o.useCallback(async(C=!1,se)=>{if(!(se?.ignoreAuthGuard===!0)&&(gn||lt))return!1;C||$a(!0);const Q=Dr();sn.current?.abort("superseded");const Be=new AbortController;sn.current=Be;try{let qe=await fetch("/api/taskforce/deleted",{signal:Be.signal});if(qe.status===404&&(qe=await fetch("/api/taskforce/trash",{signal:Be.signal})),qe.status===401)return xo(),Hn([]),!1;if(qe.status===404)return tn(Q)?!1:(Hn([]),ja(Q.workspaceId),!0);if(qe.ok){const tt=await qe.json();if(tn(Q))return!1;const Gt=Array.isArray(tt?.deleted)?tt.deleted.map(pr=>{const Tr=pr?.taskSnapshot&&typeof pr.taskSnapshot=="object"?Qs(pr.taskSnapshot):null;return Tr?{...pr,taskSnapshot:Tr}:null}).filter(pr=>!!pr):[];return Hn(Gt),ja(Q.workspaceId),!0}return!1}catch(qe){return Jk(qe,Be.signal)||Mn(qe)||console.error("[Taskforce] Failed to fetch deleted tasks:",qe),!1}finally{sn.current===Be&&(sn.current=null),C||$a(!1)}},[Dr,xo,Mn,tn,gn,lt]),Pr=o.useCallback(async C=>{if(!(C?.ignoreAuthGuard===!0)&&(gn||lt))return;const ce=Dr();on.current?.abort("superseded"),xn.current!==null&&typeof window<"u"&&(window.clearTimeout(xn.current),xn.current=null);const Q=new AbortController;on.current=Q,Fs(Be=>({...Be,isRefreshing:!0}));try{const Be=Zb({workspaceId:ce.workspaceId,epoch:ce.epoch,seed:$t.current}),qe=async Br=>{if(typeof window>"u")return fetch(Br,Ok({signal:Q.signal},Be));const Gn=new AbortController,Ns=window.setTimeout(()=>Gn.abort("planning-timeout"),Jh),ho=()=>Gn.abort(Q.signal.reason||"external-abort");Q.signal.aborted?ho():Q.signal.addEventListener("abort",ho,{once:!0});try{return await fetch(Br,Ok({signal:Gn.signal},Be))}catch(Ys){if(Q.signal.aborted)throw Q.signal.reason||Ys;if(bg(Ys)||Ys==="planning-timeout")return null;throw Ys}finally{window.clearTimeout(Ns),Q.signal.removeEventListener("abort",ho)}};let tt=null,Gt={initiatives:"ready",workstreams:"ready"};const pr=await qe("/api/taskforce/planning/bootstrap");if(pr?.status===401){xo(),Xn([]),fs([]),no([]),Fs({status:"error",error:"Sign in again to load Planning.",isRefreshing:!1,collections:{initiatives:"error",workstreams:"error"}});return}if(pr===null)throw XS(Jh);if(pr.ok){const Br=await pr.json().catch(()=>null);if(!Br||!Array.isArray(Br.initiatives)||!Array.isArray(Br.workstreams))throw new Error("Planning returned an incomplete response.");tt=QS(Br)}else{const[Br,Gn]=await Promise.all([qe("/api/taskforce/initiatives"),qe("/api/taskforce/workstreams")]);if(!Br||!Gn)throw new Error("Planning endpoints timed out during startup.");if(Br.status===401||Gn.status===401){xo(),Xn([]),fs([]),no([]),Fs({status:"error",error:"Sign in again to load Planning.",isRefreshing:!1,collections:{initiatives:"error",workstreams:"error"}});return}const Ns=async(pm,Ch)=>{if(!pm.ok)return{items:[],status:"error"};const Hc=await pm.json().catch(()=>null),bl=Array.isArray(Hc)?Hc:Hc&&typeof Hc=="object"&&Array.isArray(Hc[Ch])?Hc[Ch]:null;return bl?{items:bl,status:"ready"}:{items:[],status:"error"}},[ho,Ys]=await Promise.all([Ns(Br,"initiatives"),Ns(Gn,"workstreams")]);if(Gt={initiatives:ho.status,workstreams:Ys.status},Gt.initiatives==="error"&&Gt.workstreams==="error")throw new Error("Planning could not be loaded.");tt=QS({initiatives:ho.items,workstreams:Ys.items,workstreamTaskSummaries:[]})}if(tn(ce))return;Xn(tt.initiatives),fs(tt.workstreams),no(tt.workstreamTaskSummaries);const Tr=Gt.initiatives==="error"||Gt.workstreams==="error",Or=tt.initiatives.length===0&&tt.workstreams.length===0;Fs({status:Tr?"partial":Or?"empty":"ready",error:Tr?"Some planning data could not be loaded.":null,isRefreshing:!1,collections:Gt})}catch(Be){if(Jk(Be,Q.signal)||Mn(Be))return;if(Co(Be)?(Cr("planning_bootstrap_timeout",{workspaceId:ce.workspaceId,epoch:ce.epoch,timeoutMs:Jh}),console.warn("[Taskforce] Planning bootstrap timed out during startup; retrying in background.")):console.error("[Taskforce] Failed to fetch planning entities:",Be),!tn(ce)){const tt=fa.length>0||pn.length>0;Fs(Gt=>({status:tt?"partial":"error",error:Be instanceof Error&&Be.message?Be.message:"Planning could not be loaded.",isRefreshing:!1,collections:tt?Gt.collections:{initiatives:"error",workstreams:"error"}}))}typeof window<"u"&&!tn(ce)&&fa.length===0&&pn.length===0&&(xn.current=window.setTimeout(()=>{xn.current=null,Pr(C)},3e3))}finally{on.current===Q&&(on.current=null)}},[$m,Jh,fa.length,Dr,xo,Mn,tn,gn,lt,pn.length]),Dt=o.useCallback(async(C,se)=>{const ce=String(se||"").trim();if(!ce)throw new Error(`Cannot load ${C} details without an id.`);const Q=Dr(),Be=await fetch(`/api/taskforce/${C}/${encodeURIComponent(ce)}`),qe=await Be.json().catch(()=>({}));if(!Be.ok)throw new Error(qe?.error||`Failed to load ${C} details (${Be.status})`);const tt=qe;return tn(Q)||(C==="initiative"?Xn(Gt=>si(Gt,tt)):fs(Gt=>si(Gt,tt))),tt},[Dr,tn]),vn=o.useCallback(async(C=!1,se)=>{await F(C,se)},[F]),Vn=o.useCallback(async(C=!1,se)=>{const ce=String(Yt.current||"default").trim()||"default",Q=await O(C,se),Be=String(Yt.current||"default").trim()||"default";return Q&&Be===ce&&ms(ce),Q},[O]),ia=o.useCallback((C=!0,se)=>{const ce=String(Yt.current||"default").trim()||"default";if(En===ce)return Promise.resolve(!0);const Q=Ba.current;if(Q?.workspaceId===ce)return Q.promise;const Be=Vn(C,se).finally(()=>{Ba.current?.promise===Be&&(Ba.current=null)});return Ba.current={workspaceId:ce,promise:Be},Be},[En,Vn]),Ai=o.useCallback((C=!0,se)=>{const ce=String(Yt.current||"default").trim()||"default";if(In===ce)return Promise.resolve(!0);const Q=Wa.current;if(Q?.workspaceId===ce)return Q.promise;const Be=tr(C,se).finally(()=>{Wa.current?.promise===Be&&(Wa.current=null)});return Wa.current={workspaceId:ce,promise:Be},Be},[In,tr]),wc=o.useCallback(()=>{const C=String(Yt.current||"default").trim()||"default";return En!==C?Promise.resolve(!1):Vn(!0)},[En,Vn]),Ml=o.useCallback((C=!0)=>{const se=String(Yt.current||"default").trim()||"default";return In!==se?Promise.resolve(!1):tr(C)},[In,tr]),Ci=o.useCallback(async C=>{const se=C?.isSilent!==!1,ce=C?.ignoreAuthGuard===!0,Q=String(Yt.current||"default").trim()||"default",Be=En===Q,qe=In===Q;await Promise.all([Rt({isSilent:se,ignoreAuthGuard:ce,includeArchive:Be,highlightChangedTaskIds:C?.highlightChangedTaskIds}),qe?tr(se,{ignoreAuthGuard:ce}):Promise.resolve(!1),Pr({ignoreAuthGuard:ce})])},[En,In,tr,Pr,Rt]),Ll=o.useRef(!1),Ro=o.useRef(null),Xo=o.useRef(En),Qo=o.useRef(In),bc=o.useRef(ht),rl=o.useRef(tr),Sc=o.useRef(Pr);Xo.current=En,Qo.current=In,bc.current=ht,rl.current=tr,Sc.current=Pr;const Po=o.useCallback(async C=>{const se=String(Yt.current||"default").trim()||"default",ce=Ro.current;if(Ro.current={workspaceId:se,scope:ce?.workspaceId===se?n_(ce.scope,C):C},!Ll.current){Ll.current=!0;try{for(;Ro.current;){const Q=Ro.current;Ro.current=null;const Be=String(Yt.current||"default").trim()||"default";if(Q.workspaceId!==Be)continue;const qe=new Set(Q.scope.collections),tt=qe.has("active"),Gt=qe.has("archive")&&Xo.current===Be,pr=qe.has("deleted")&&Qo.current===Be,Tr=RD(Q.scope);await Promise.all([tt||Gt?bc.current({includeActive:tt,includeArchive:Gt,highlightChangedTaskIds:Tr}):Promise.resolve(),pr?rl.current(!0):Promise.resolve(!1),qe.has("planning")?Sc.current():Promise.resolve()])}}finally{Ll.current=!1}}},[]),wp=o.useRef(()=>{}),Ii=o.useRef(()=>{}),Ol=o.useRef(async()=>!1),qr=o.useCallback(C=>Ol.current(C),[]),{userGlobalSyncStatus:On,setUserGlobalSyncStatus:es,userGlobalSyncError:bp,setUserGlobalSyncError:hf,workspaceLastPullAt:Sp,workspaceLastPushAt:Ud,workspaceLastErrorAt:gf,workspaceLastErrorMessage:Ap,workspaceLastSuccessfulSyncAt:yf,workspaceCloudSyncEnabled:jo,workspaceSyncPhase:kf,workspaceSyncSetupIntent:Cp,workspaceSyncStatus:vf,workspaceSyncSummary:Ip,workspaceSyncRecommendedAction:wf,workspaceSyncBusy:_p,workspaceSyncPendingChanges:bf,workspaceTaskRelationships:Tp,localCoordinatorDataVersion:Sf,localCoordinatorStatus:xp,switchLocalCoordinatorWorkspace:Af,transferLocalCoordinatorOwnership:Rp,clearLocalCoordinatorCredential:zd,workspacePendingSignatureRef:Pp,workspaceDeletedTaskIdsRef:ky,workspaceDeletedTaskWatermarksRef:Hd,loadWorkspaceSyncState:vy,applyWorkspaceSyncStateSnapshot:Vd,syncUserGlobalSettings:Gd,buildWorkspaceSyncSignature:Vi,pushWorkspaceChangesToCloud:Cf,saveWorkspaceCloudSyncSettings:nl,retryUserGlobalSettingsSync:If,retryWorkspaceCloudSync:Kd,resetWorkspaceSyncCursorAndPull:_f,getWorkspaceSyncDiagnostics:Bl}=LE({currentWorkspaceId:ot,cloudAuthConfigured:V,runtimeMode:D,authSessionResolved:gt,isAuthenticated:Ot,authUserId:Ar,projectName:rt,resolveCloudAuthUrl:G,resolveWebSocketUrl:ae,realtimeSyncEnabled:_t,localOutboxDispatchEnabled:w.syncV3LocalOutboxDispatch,localCoordinatorBrowserAuthorityGateEnabled:w.localCoordinatorBrowserAuthorityGate,initiativeFeedActivationEnabled:w.syncV3InitiativeFeedActivation,combinedFeedActivationEnabled:w.syncV3CombinedFeedActivation,combinedFeedCoverage:w.syncV3CombinedFeedCoverage,tasks:qt,archivedTasks:br,deletedTasks:ar,initiatives:fa,workstreams:pn,taxonomies:pa,taxonomyState:To?_o:void 0,setupState:Ln,globalTheme:le,locale:eo,globalWeekStartsOn:Ws,themeUseGlobalDefault:Je,setTasks:nr,setArchivedTasks:yn,setAuthBlocked:cr,setIsAuthenticated:fr,checkAuthSession:qr,setGlobalTheme:Re,setCurrentTheme:x,setSetupState:Wt,setLocale:to,setGlobalWeekStartsOn:na,fetchPlanningEntities:Pr}),al=o.useCallback((C=Qn)=>C.find(se=>String(se.value||"").trim().length>0)?.value||wo,[Qn]),[xs,sl]=o.useState(()=>Qa(fn)),[ts,Eo]=o.useState(()=>al(Qn)),[No,qd]=o.useState(2),[ol,Yd]=o.useState(3),[ei,ti]=o.useState("task"),[Ac,Zd]=o.useState("unassigned"),[Rs,Jd]=o.useState(""),[Do,Xd]=o.useState(""),[Mo,Qd]=o.useState(""),[_i,Ti]=o.useState(""),[Ps,Gi]=o.useState(""),_r=o.useRef(_i),Wl=o.useRef(Ps),io=o.useRef(!1),[$l,Cc]=o.useState(!1),co=o.useCallback(()=>{const C=_r.current.trim()!==""||Wl.current.trim()!=="";C!==io.current&&(io.current=C,Cc(C))},[]),wy=o.useCallback(C=>{_r.current=C,co()},[co]),Tf=o.useCallback(C=>{Wl.current=C,co()},[co]),eu=o.useCallback(()=>_r.current,[]),Fl=o.useCallback(()=>Wl.current,[]);o.useEffect(()=>{_r.current=_i,co()},[co,_i]),o.useEffect(()=>{Wl.current=Ps,co()},[Ps,co]);const[Ul,tu]=o.useState([]),[xi,Ic]=o.useState([]),[zl,ru]=o.useState(""),[Hl,Lo]=o.useState({}),by=o.useRef(null),[nu,au]=o.useState(""),[_c,Vl]=o.useState(""),[Sy,xf]=o.useState(""),[Gl,ks]=o.useState({});o.useEffect(()=>{if(Sr)return;const C=String(ts||"").trim();Qn.some(ce=>String(ce.value||"").trim()===C)||Eo(al(Qn))},[Qn,Sr,al,ts]);const{searchQuery:Ri,setSearchQuery:jp,filterCategories:Rf,setFilterCategories:Oo,filterPriorities:Ki,setFilterPriorities:su,filterTypes:Kl,setFilterTypes:Pf,filterStatus:jf,setFilterStatus:Ef,filterAssignees:Tc,setFilterAssignees:xc,filterAssigneesAllSelected:Nf,setFilterAssigneesAllSelected:Ep,filterTaxonomies:Df,setFilterTaxonomies:Rc,hasInitedFilters:Pc,setHasInitedFilters:Mf,sortBy:Jt,setSortBy:Lf,sortOrder:ou,setSortOrder:Of,toggleSortOrder:iu,groupBy:Bf,setGroupBy:cu,emptyColumnMode:Wf,setEmptyColumnMode:Np,collapsedCategories:Dp,setCollapsedCategories:Mp,clearFilters:Ay,filteredTasks:Cy,searchAgnosticTasks:Iy,filteredArchive:Bo,groupedTasks:$f}=uN({tasks:qt,archivedTasks:br,activeCategories:fn,activeTypes:Qn,priorities:ln,taxonomies:pa,configLoaded:un,referenceDataLoaded:To,assigneeOptionsLoaded:Si,assigneeOptions:wr,runtimeMode:D,workspaceId:ot,cloudTaskSearchEnabled:D==="cloud"&&Ot&&ke!=="deleted"&&!gn&&!lt,cloudTaskSearchScope:ke==="archived"?"archive":"active"});wp.current=es,Ii.current=hf;const{checkAuthSession:Lp}=MN({runtimeConfigReady:N,shouldProbeCloudAuth:me,authSessionResolved:gt,resolveCloudAuthUrl:G,authOnlyCloudMode:ie,authRequiredError:bi,runtimeMode:D,workspaceSelectionScope:Xe,markBootstrapPhase:hc,markBootstrapStalled:gs,setRuntimeMode:be,setAuthRequiredForApi:dr,setIsAuthenticated:fr,setAuthUserId:Lr,setAuthWorkspaceId:De,setAuthUserEmail:pt,setAuthUserDisplayName:Tt,setAuthUserAvatarUrl:St,setUserGlobalSyncStatus:C=>wp.current(C),setUserGlobalSyncError:C=>Ii.current(C),setHasBetaAccess:Ft,setAvailableWorkspaces:ra,setHydratedWorkspaceRole:sr,setAssigneeOptions:lr,setAuthBlocked:cr,setAuthSessionResolved:Xr,setError:oa,applyResolvedWorkspaceId:xr,readPersistedWorkspaceId:Av,authSessionRequestRef:Qr,authSessionEpochRef:Ge,authSessionLastCheckedAtRef:Gr,authSessionLastResultRef:yr,isLoopbackHost:A,setAuthStateReadyRefs:(C,se,ce)=>{lu.current=se,Vf.current=ce,ll.current=C}});Ol.current=Lp;const[Pi,_y]=o.useState("tasks"),[Ty,xy]=o.useState(!1),[Ry,Py]=o.useState(!1),Ff=o.useRef([]),[jc,jy]=o.useState([]),Op=o.useCallback(C=>{const se=typeof C=="function"?C(Ff.current):C;Ff.current=se,jy(se)},[]),ql=o.useCallback(()=>[...Ff.current],[]),ji=o.useRef(null),[Bp,il]=o.useState(!1),Ec=o.useCallback(()=>`task-description-${globalThis.crypto?.randomUUID?.()||`${Date.now()}-${Math.random().toString(16).slice(2)}`}`,[]),Nc=o.useRef(Ec()),[Wp,Yl]=o.useState(Nc.current),cl=o.useCallback(()=>{const C=Ec();Nc.current=C,Yl(C)},[Ec]),Uf=o.useCallback(C=>{ji.current=C,il(!0),C.then(()=>{ji.current===C&&(ji.current=null,il(!1))},()=>{ji.current===C&&(ji.current=null,il(!1))})},[]),qi=o.useCallback(async()=>{const C=ji.current;C&&await C},[]),[$p,Ei]=o.useState(!1),zf=o.useRef(null),Yi=o.useRef(null),Hf=o.useRef(!1),lu=o.useRef(gt),Vf=o.useRef(Bt),ll=o.useRef(Ot),lo=o.useRef(""),Vs=o.useRef(""),ri=o.useRef(""),Ni=o.useRef(""),dl=o.useRef(""),du=o.useRef(null),Zl=o.useRef(!1),Jl=o.useRef(!1),{handleSaveSettings:Gf,handleSaveTheme:Fp,handleSaveGlobalTheme:Kf,handleUseGlobalThemeDefault:Ey,handleJsonBackupEnabledChange:qf,handleSaveGlobalJsonBackupEnabled:Ny,handleUseGlobalJsonBackupDefault:Up,handleSaveGlobalWeekStartsOn:Dy,handleSaveLocale:Xl,handleManualComplexityEnabledChange:uu,handleChecklistDropdownEnabledChange:fu,handleShowTaskCardStatusLabelChange:zp,handleShowTaskCardDescriptionChange:mu,handleShowTaskCardAttachmentsChange:My,handleShowTaskCardChecklistProgressChange:Yf,handleShowTaskCardLatestActivityChange:Ly,handleTintTaskCardActivityBackgroundChange:Ql}=$E({keyShortcut:Rr,themeUseGlobalDefault:Je,runtimeMode:D,jsonBackupUseGlobalDefault:ya,globalTheme:le,globalJsonBackupEnabled:$n,setCurrentTheme:x,setThemeUseGlobalDefault:X,setGlobalTheme:Re,setJsonBackupEnabled:Ia,setJsonBackupUseGlobalDefault:Bs,setGlobalJsonBackupEnabled:Cs,setGlobalWeekStartsOn:na,setLocale:to,setManualComplexityEnabled:Jn,setChecklistDropdownEnabled:_a,setShowTaskCardStatusLabel:Ta,setShowTaskCardDescription:ls,setShowTaskCardAttachments:La,setShowTaskCardChecklistProgress:xa,setShowTaskCardLatestActivity:Fn,setTintTaskCardActivityBackground:dt});o.useEffect(()=>{D==="cloud"&&Xe!==Bd&&$R(ot,Xe)},[D,ot,Xe]),o.useEffect(()=>{lu.current=gt,Vf.current=Bt,ll.current=Ot},[gt,Bt,Ot]);const{hasLoadedUiStateRef:Oy,loadPersistedUiState:uo,resetPersistedUiStateLoad:Zf,setActiveWorkspaceModule:Hp,uiStateReady:Dc}=$N({runtimeMode:D,workspaceUiStateScope:Nr,currentWorkspaceId:ot,currentWorkspaceIdRef:Yt,referenceDataLoaded:To,activeCategories:fn,activeTypes:Qn,priorities:ln,taxonomies:pa,activeWorkspaceModule:Pi,setActiveWorkspaceModuleState:_y,groupBy:Bf,setGroupBy:cu,emptyColumnMode:Wf,setEmptyColumnMode:Np,taskScope:ke,setTaskScope:ve,openTaskId:Sr,setPendingOpenTaskId:Ko,compressedCards:Ve,setCompressedCards:Ne,zenMode:$s,setZenModeState:Pa,searchQuery:Ri,setSearchQuery:jp,collapsedCategories:Dp,setCollapsedCategories:Mp,filterCategories:Rf,setFilterCategories:Oo,filterPriorities:Ki,setFilterPriorities:su,filterTypes:Kl,setFilterTypes:Pf,filterStatus:jf,setFilterStatus:Ef,filterAssignees:Tc,setFilterAssignees:xc,filterAssigneesAllSelected:Nf,setFilterAssigneesAllSelected:Ep,filterTaxonomies:Df,setFilterTaxonomies:Rc,sortBy:Jt,setSortBy:Lf,sortOrder:ou,setSortOrder:Of,hasInitedFilters:Pc,setHasInitedFilters:Mf,lastUsedCategory:nu,setLastUsedCategory:au,taskforceAgentId:_c,setTaskforceAgentId:Vl,taskforceAgentConversationId:Sy,setTaskforceAgentConversationId:xf,taskforceAgentConversationByAgentId:Gl,setTaskforceAgentConversationByAgentId:ks}),By=o.useCallback(C=>{const se=C.runtimeMode==="cloud"?"cloud":"local",ce=!!C.authRequiredForApi,Q=typeof C.userId=="string"&&C.userId.trim().length>0?C.userId.trim():"anonymous",Be=se==="cloud"&&Q!=="anonymous",qe=Be||ll.current,tt=lu.current;if(be(se),dr(ce),Be&&(fr(!0),Lr(Q),cr(!1),tt||Xr(!0)),typeof C.workspaceId=="string"&&C.workspaceId.trim().length>0){const Ns=C.workspaceId.trim();if(se==="local"){const ho=String(Yt.current||"").trim()||"default";cn(Ns,{skipTransitionReset:!un&&ho==="default"})}else xr(Ns)}cr(se==="cloud"&&ce?!qe:!1),C.setupState&&typeof C.setupState=="object"?Wt(C.setupState):Wt(null),C.runtimeCapabilities&&typeof C.runtimeCapabilities=="object"?it(C.runtimeCapabilities):it(null),Pt(!!C.realtimeSyncEnabled);const Gt=String(C.realtimeSyncFlagSource||"").trim().toLowerCase();mr(Gt==="env"||Gt==="settings"||Gt==="default"?Gt:"unknown"),typeof C.shortcut=="string"&&C.shortcut.trim().length>0&&Yr(C.shortcut);const pr=Zu(C.theme);pr&&x(pr);const Tr=Zu(C.globalTheme);Tr&&Re(Tr),typeof C.themeUseGlobalDefault=="boolean"&&X(C.themeUseGlobalDefault);const Or=C.runtimeMode==="cloud"?"cloud":"local";typeof C.projectRoot=="string"?He(C.projectRoot):Or==="cloud"&&He(""),typeof C.tenantId=="string"?he(C.tenantId.trim()):Or==="cloud"&&he("");const Br=Or==="cloud"?String(C.projectName||"").trim():C.projectName||C.paths?.projectName||"";(String(Br||"").trim().length>0||Or==="cloud")&&It(Br),typeof C.mcpScript=="string"?at(C.mcpScript):Or==="cloud"&&at(""),typeof C.hostRoot=="string"?Zr(C.hostRoot):Or==="cloud"&&Zr(""),typeof C.jsonBackupEnabled=="boolean"&&Ia(C.jsonBackupEnabled),typeof C.globalJsonBackupEnabled=="boolean"&&Cs(C.globalJsonBackupEnabled),typeof C.jsonBackupUseGlobalDefault=="boolean"&&Bs(C.jsonBackupUseGlobalDefault);const Gn=C?.schedulePreferences?.weekStartsOn;(Gn==="sunday"||Gn==="monday")&&na(Gn),typeof C.manualComplexityEnabled=="boolean"&&Jn(C.manualComplexityEnabled),typeof C.checklistDropdownEnabled=="boolean"?_a(C.checklistDropdownEnabled):_a(!0),typeof C.showTaskCardStatusLabel=="boolean"?Ta(C.showTaskCardStatusLabel):Ta(!1),typeof C.showTaskCardDescription=="boolean"?ls(C.showTaskCardDescription):ls(!0),typeof C.showTaskCardAttachments=="boolean"?La(C.showTaskCardAttachments):La(!0),typeof C.showTaskCardChecklistProgress=="boolean"?xa(C.showTaskCardChecklistProgress):xa(!0),typeof C.showTaskCardLatestActivity=="boolean"?Fn(C.showTaskCardLatestActivity):Fn(!0),typeof C.tintTaskCardActivityBackground=="boolean"?dt(C.tintTaskCardActivityBackground):dt(!1)},[xr,cn,un,Yt]),Wy=o.useCallback(async()=>{const C=typeof performance<"u"?performance.now():Date.now();try{const se=await wi("/api/taskforce/version",void 0,$m);if(!se.ok)return;const ce=await se.json().catch(()=>({}));ce?.build&&typeof ce.build=="object"&&xt({version:String(ce.build.version||""),gitSha:ce.build.gitSha?String(ce.build.gitSha):null,buildTime:ce.build.buildTime?String(ce.build.buildTime):null,deployId:ce.build.deployId?String(ce.build.deployId):null}),Cr("build_info_loaded",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-C)})}catch(se){Co(se)&&Cr("build_info_timeout",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-C)})}},[wi,Co]),{fetchReferenceData:Jf,fetchConfig:js,fetchWorkspaces:ul,fetchAssigneeOptions:fl,switchWorkspace:Wo,resolveWorkspaceAfterAuth:pu,retryBootstrapChecks:$y,runCloudBootstrap:hu}=WN({shouldDeferProtectedApiCalls:gn,shouldBlockProtectedApiCalls:lt,getWorkspaceRequestState:Dr,isWorkspaceRequestStale:tn,isWorkspaceEpochStale:ga,isAbortError:Mn,isBootstrapTimeoutError:Co,fetchWithTimeout:wi,handleUnauthorized:xo,applyBootstrapConfig:By,loadPersistedUiState:uo,fetchBuildInfo:Wy,markBootstrapPhase:hc,markBootstrapStalled:gs,fetchInitiativeTemplates:Is,setReferenceDataLoaded:kc,setCustomCategories:vi,setCustomTypes:gc,setPriorities:qn,setTaxonomies:oo,setTaxonomyDisplayLabels:ys,setConfigLoaded:Hi,hasLoadedUiStateRef:Oy,currentWorkspaceIdRef:Yt,referenceDataRequestRef:du,referenceDataAbortRef:da,bootstrapConfigAbortRef:Wn,workspaceListAbortRef:ua,assigneeOptionsAbortRef:en,workspaceListHydratedRef:Zl,setAvailableWorkspaces:ra,runtimeMode:D,applyResolvedWorkspaceId:xr,workspaceSwitchingEnabled:vt,authSessionResolved:gt,isAuthenticated:Ot,authUserId:Ar,authUserAvatarUrl:Qt,setHydratedWorkspaceRole:sr,setAssigneeOptions:lr,setAssigneeOptionsLoaded:Zo,commitCurrentWorkspaceId:(C,se)=>{Zt.current=C,cn(C,se),se?.clearExplicitSelection!==!1&&(Zt.current=null)},currentWorkspaceId:ot,workspaceSelectionScope:Xe,abortWorkspaceScopedRequests:mn,setWorkspaceBootstrapPending:bt,checkAuthSession:qr,lastConfigRefreshKeyRef:Vs,lastAssigneeOptionsLoadKeyRef:lo,lastWorkspaceSyncStateLoadKeyRef:ri,lastTaskSurfaceLoadKeyRef:Ni,lastSettingsSurfaceLoadKeyRef:dl,isOpen:Fe,activeTab:_e,showArchive:ft,taskScope:ke,settingsSection:Le,workspaceBootstrapPending:u,fetchTasks:vn,fetchPlanningEntities:Pr,refreshTaskCollections:Ci,loadWorkspaceSyncState:vy,switchLocalCoordinatorWorkspace:Af,hasBootstrappedDataRef:Jl}),ml=o.useCallback(async()=>{await qr(),await js()},[qr,js]);o.useEffect(()=>{if(!un||u)return;const C=`${D}:${Ot?"auth":"guest"}:${ot}:${Qt||"no-avatar"}`;Si&&lo.current===C||(lo.current=C,fl())},[Si,Qt,un,ot,fl,Ot,D,u]),o.useEffect(()=>{if(!gt||!Ot)return;const C=String(Ar||"").trim();if(!C||C==="anonymous")return;const se=String(Qt||"").trim()||null;lr(ce=>{let Q=!1;const Be=ce.map(qe=>qe.kind!=="member"||String(qe.value||"").trim()!==C||(typeof qe.avatarUrl=="string"&&qe.avatarUrl.trim().length>0?qe.avatarUrl.trim():null)===se?qe:(Q=!0,{...qe,avatarUrl:se}));return Q?Be:ce})},[gt,Qt,Ar,Ot]);const Fy=o.useMemo(()=>vt?ur.find(se=>se.id===ot)?.role??null:ir,[ur,ot,ir,vt]);o.useEffect(()=>{Ot||sr(null)},[Ot]);const Xf=o.useCallback(async()=>{$r(null);const C=await hu({reason:"post-plans",ignoreAuthGuard:!0,tasksSilent:!0});return C.authenticated?C.success?C.workspaceSetupRequired?{success:!0,destination:"setup"}:{success:!0,destination:"app"}:{success:!1,destination:"app",error:C.error||"Unable to resolve workspace after plan selection.",code:C.code}:{success:!1,destination:"login",error:C.error||"Sign in required.",code:C.code||"AUTH_REQUIRED"}},[hu]),Gs=o.useCallback(async C=>{const se=C?.reason||"retry",ce=typeof C?.preferredWorkspaceId=="string"?C.preferredWorkspaceId.trim():"",Q=C?.allowCommercialGate===!0;if(ce&&vt){if(!await qr({force:!0}))return await js({ignoreAuthGuard:!0}),{success:!1,error:"Sign in required.",code:"AUTH_REQUIRED"};const tt=await pu({preferredWorkspaceId:ce});if(!tt.success)return await js({ignoreAuthGuard:!0}),{success:!1,error:tt.error||"Unable to resolve workspace access.",code:tt.code};if(tt.workspaceSetupRequired)return await js({ignoreAuthGuard:!0}),{success:!0,workspaceSetupRequired:!0}}const Be=await hu({reason:se,ignoreAuthGuard:!0,tasksSilent:!0});return Be.authenticated?Be.success?Be.workspaceSetupRequired?Q?{success:!0,workspaceSetupRequired:!1}:{success:!0,workspaceSetupRequired:!0}:(Q||Gd({preferCloudOnFirstSync:!0}),{success:!0,workspaceSetupRequired:!1}):{success:!1,error:Be.error||"Unable to resolve workspace access.",code:Be.code}:{success:!1,error:Be.error||"Sign in required.",code:Be.code||"AUTH_REQUIRED"}},[qr,js,pu,hu,Gd,vt]),Uy=o.useCallback(async(C,se)=>{if(!vt)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const ce=String(C||"").trim();if(!ce)return{success:!1,error:"Workspace name is required."};try{const Q=await fetch("/api/taskforce/workspaces",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({name:ce,description:typeof se=="string"?se:void 0})}),Be=await Q.json().catch(()=>({}));if(!Q.ok||Be?.success===!1)return{success:!1,error:Be?.error||`Failed to create workspace (${Q.status})`,code:Be?.code};const qe=Be?.workspace;if(await ul(),qe?.id){const tt=await Wo(qe.id);if(!tt.success)return{success:!1,error:tt.error||"Workspace created but failed to activate.",code:tt.code}}return{success:!0,workspace:qe}}catch{return{success:!1,error:"Failed to create workspace."}}},[ul,Wo,vt]),Vp=o.useCallback(async C=>{if(!vt)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const se=String(C||"").trim();if(!se)return{success:!1,error:"workspaceId is required.",code:"WORKSPACE_ID_REQUIRED"};try{const ce=await fetch(`/api/taskforce/workspaces/${encodeURIComponent(se)}`,{method:"DELETE",credentials:"include"}),Q=await ce.json().catch(()=>({}));if(!ce.ok||Q?.success===!1)return{success:!1,error:Q?.error||`Failed to delete workspace (${ce.status})`,code:Q?.code};await qr({force:!0}),await Promise.all([js(),ul()]);const Be=typeof Q?.nextWorkspaceId=="string"?Q.nextWorkspaceId.trim():"";return Be&&cn(Be),{success:!0,nextWorkspaceId:Be||void 0,workspaceSetupRequired:Q?.workspaceSetupRequired===!0,cleanupWarnings:Array.isArray(Q?.cleanupWarnings)?Q.cleanupWarnings.map(qe=>String(qe||"")):[]}}catch{return{success:!1,error:"Failed to delete workspace."}}},[qr,cn,js,ul,vt]),Gp=o.useCallback(async C=>{const se=C==="operations"?"operations":"core";try{const ce=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:se}})}),Q=await ce.json().catch(()=>({}));return!ce.ok||Q?.success===!1?!1:(await ml(),!0)}catch{return!1}},[ml]),Kp=o.useCallback(async C=>{const se=String(C?.name||"").trim(),ce=typeof C?.workspaceId=="string"?C.workspaceId.trim():"";if(!se)return{success:!1,error:"Workspace name is required.",code:"WORKSPACE_NAME_REQUIRED"};try{const Q=await fetch("/api/taskforce/workspace-profile",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-runtime-mode":D},credentials:"include",body:JSON.stringify({workspaceId:ce&&ce!=="default"?ce:void 0,name:se,description:typeof C.description=="string"?C.description:void 0,allowCreate:!0})}),Be=await Q.json().catch(()=>({}));if(!Q.ok||Be?.success===!1)return{success:!1,error:Be?.error||`Failed to save workspace (${Q.status})`,code:Be?.code};const qe=String(Be?.workspace?.id||"").trim();if(qe&&(cn(qe),await new Promise(tt=>window.setTimeout(tt,0)),D==="cloud"&&Ot&&qe!==ot)){const tt=await Wo(qe);if(!tt.success)return{success:!1,error:tt.error||"Workspace saved but failed to activate session workspace.",code:"WORKSPACE_SWITCH_FAILED"}}return await ml(),{success:!0,workspaceId:qe||void 0}}catch{return{success:!1,error:"Failed to save workspace profile."}}},[cn,ml,D,Ot,ot,Wo]),zy=o.useCallback(async(C,se)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ce=C.trim().toLowerCase(),Q=se;if(!ce||!Q)return{success:!1,error:"Email and password are required."};try{const Be=await fetch(G("/api/taskforce/auth/login"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(IR({email:ce,password:Q,activeWorkspaceId:Yt.current}))}),qe=await Be.json().catch(()=>({}));if(!Be.ok||!qe?.success)return{success:!1,error:qe?.error||"Sign in failed.",code:qe?.code};oa("");const tt=await Gs();return tt.success?(ES(),{success:!0,workspaceSetupRequired:tt.workspaceSetupRequired===!0}):{success:!1,error:tt.error||"Unable to resolve workspace after sign in.",code:tt.code}}catch{return{success:!1,error:"Sign in failed."}}},[G,V,Yt,Gs]),Hy=o.useCallback((C,se,ce)=>{let Q="/";try{const qe=new URL(String(se||"/"),"https://taskforce.local");qe.origin==="https://taskforce.local"&&String(se||"/").startsWith("/")&&!String(se||"/").startsWith("//")&&(Q=`${qe.pathname}${qe.search}${qe.hash}`)}catch{Q="/"}let Be=`/api/taskforce/auth/oauth/${encodeURIComponent(C)}/start?return_to=${encodeURIComponent(Q)}`;ce&&(Be+=`&invite_token=${encodeURIComponent(ce)}`),window.location.href=G(Be)},[G]),Vy=o.useCallback(async(C,se,ce)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const Q=C.trim().toLowerCase(),Be=se;if(!Q||!Be)return{success:!1,error:"Email and password are required."};try{const qe=await fetch(G("/api/taskforce/auth/register"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:Q,password:Be,...typeof ce?.displayName=="string"&&ce.displayName.trim()?{displayName:ce.displayName.trim()}:{},...typeof ce?.planId=="string"&&ce.planId.trim()?{planId:ce.planId.trim()}:{},...typeof ce?.planVersionId=="string"&&ce.planVersionId.trim()?{planVersionId:ce.planVersionId.trim()}:{},...typeof ce?.interval=="string"&&ce.interval.trim()?{interval:ce.interval.trim()}:{}})}),tt=await qe.json().catch(()=>({}));if(!qe.ok||!tt?.success)return{success:!1,error:tt?.error||"Create account failed.",code:tt?.code,verificationRequired:!!tt?.verificationRequired,verificationToken:typeof tt?.verificationToken=="string"?tt.verificationToken:void 0,emailSent:tt?.emailSent!==!1,emailError:typeof tt?.emailError=="string"?tt.emailError:void 0};const Gt=tt?.planSelectionRequired===!0,pr=tt?.checkoutPending===!0,Tr=typeof tt?.commercialState=="string"?tt.commercialState:null,Or=!!tt?.verificationRequired;if(!Or){if(oa(""),!!(Gt||pr||Tr==="pending_plan_selection"||Tr==="checkout_pending"))return await qr({force:!0})?{success:!0,workspaceSetupRequired:!1,planSelectionRequired:Gt,checkoutPending:pr,commercialState:Tr,verificationRequired:Or,verificationToken:typeof tt?.verificationToken=="string"?tt.verificationToken:void 0,emailSent:tt?.emailSent!==!1,emailError:typeof tt?.emailError=="string"?tt.emailError:void 0}:{success:!1,error:"Unable to resolve workspace after registration.",code:"AUTH_REQUIRED"};const Gn=await Gs({allowCommercialGate:!1});return Gn.success?{success:!0,workspaceSetupRequired:Gn.workspaceSetupRequired===!0,planSelectionRequired:Gt,checkoutPending:pr,commercialState:Tr,verificationRequired:Or,verificationToken:typeof tt?.verificationToken=="string"?tt.verificationToken:void 0,emailSent:tt?.emailSent!==!1,emailError:typeof tt?.emailError=="string"?tt.emailError:void 0}:{success:!1,error:Gn.error||"Unable to resolve workspace after registration.",code:Gn.code}}return{success:!0,workspaceSetupRequired:!!tt?.workspaceSetupRequired,planSelectionRequired:Gt,checkoutPending:pr,commercialState:Tr,verificationRequired:Or,verificationToken:typeof tt?.verificationToken=="string"?tt.verificationToken:void 0,emailSent:tt?.emailSent!==!1,emailError:typeof tt?.emailError=="string"?tt.emailError:void 0}}catch{return{success:!1,error:"Create account failed."}}},[qr,G,V,Gs]),Gy=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const se=String(C.displayName||"").trim(),ce=typeof C.avatarDraftId=="string"?C.avatarDraftId.trim():"",Q=C.clearAvatar===!0;if(!se)return{success:!1,error:"Display name is required."};try{const Be=await fetch(G("/api/taskforce/auth/profile"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({displayName:se,...ce?{avatarDraftId:ce}:{},...Q?{clearAvatar:!0}:{}})}),qe=await Be.json().catch(()=>({}));if(!Be.ok||!qe?.success)return{success:!1,error:qe?.error||"Failed to update profile.",code:qe?.code};const tt={userId:typeof qe?.profile?.userId=="string"?qe.profile.userId:Ar,email:typeof qe?.profile?.email=="string"?qe.profile.email:nt,displayName:typeof qe?.profile?.displayName=="string"?qe.profile.displayName:null,avatarUrl:typeof qe?.profile?.avatarUrl=="string"?qe.profile.avatarUrl:null};return Tt(tt.displayName||""),St(tt.avatarUrl||""),{success:!0,profile:tt}}catch{return{success:!1,error:"Failed to update profile."}}},[G,V,nt,Ar]),Ky=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const se=C.trim().toLowerCase();if(!se)return{success:!1,error:"Email is required."};try{const ce=await fetch(G("/api/taskforce/auth/verify-email/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:se})}),Q=await ce.json().catch(()=>({}));return!ce.ok||!Q?.success?{success:!1,error:Q?.error||"Failed to request verification email.",code:Q?.code}:{success:!0,verificationToken:Q?.verificationToken??null,emailSent:Q?.emailSent!==!1,deliveryAttempted:Q?.deliveryAttempted===!0||typeof Q?.verificationToken=="string"&&Q.verificationToken.trim().length>0,emailError:typeof Q?.emailError=="string"?Q.emailError:void 0}}catch{return{success:!1,error:"Failed to request verification email."}}},[G,V]),Na=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const se=C.trim();if(!se)return{success:!1,error:"Token is required."};try{const ce=await fetch(G("/api/taskforce/auth/verify-email/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:se})}),Q=await ce.json().catch(()=>({}));return!ce.ok||!Q?.success?{success:!1,error:Q?.error||"Verification failed.",code:Q?.code}:{success:!0}}catch{return{success:!1,error:"Verification failed."}}},[G,V]),Qf=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const se=C.trim().toLowerCase();if(!se)return{success:!1,error:"Email is required."};try{const ce=await fetch(G("/api/taskforce/auth/password-reset/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:se})}),Q=await ce.json().catch(()=>({}));return!ce.ok||!Q?.success?{success:!1,error:Q?.error||"Failed to request password reset.",code:Q?.code}:{success:!0,resetToken:Q?.resetToken??null,emailSent:Q?.emailSent!==!1,deliveryAttempted:Q?.deliveryAttempted===!0||typeof Q?.resetToken=="string"&&Q.resetToken.trim().length>0,emailError:typeof Q?.emailError=="string"?Q.emailError:void 0}}catch{return{success:!1,error:"Failed to request password reset."}}},[G,V]),qp=o.useCallback(async(C,se)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ce=C.trim(),Q=se;if(!ce||!Q)return{success:!1,error:"Token and password are required."};try{const Be=await fetch(G("/api/taskforce/auth/password-reset/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:ce,password:Q})}),qe=await Be.json().catch(()=>({}));return!Be.ok||!qe?.success?{success:!1,error:qe?.error||"Failed to reset password.",code:qe?.code}:{success:!0}}catch{return{success:!1,error:"Failed to reset password."}}},[G,V]),Yp=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const se=C.trim();if(!se)return{success:!1,error:"Token is required."};try{const ce=await fetch(G("/api/taskforce/auth/invite/inspect"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:se})}),Q=await ce.json().catch(()=>({}));return!ce.ok||!Q?.success?{success:!1,error:Q?.error||"Invite inspection failed.",code:Q?.code,state:Q?.state}:{success:!0,state:Q?.state,email:typeof Q?.email=="string"?Q.email:void 0,workspaceId:typeof Q?.workspaceId=="string"?Q.workspaceId:void 0,inviteeKind:Q?.inviteeKind==="existing_user"?"existing_user":"new_user",passwordRequired:Q?.passwordRequired===!0,inviteeState:Q?.inviteeState==="existing_account"?"existing_account":"pending_setup",availableMethods:Array.isArray(Q?.availableMethods)?Q.availableMethods:[]}}catch{return{success:!1,error:"Invite inspection failed."}}},[G,V]),Zp=o.useCallback(async(C,se)=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const ce=C.trim(),Q=se;if(!ce||!Q)return{success:!1,error:"Token and password are required."};try{const Be=await fetch(G("/api/taskforce/auth/invite/accept"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:ce,password:Q})}),qe=await Be.json().catch(()=>({}));if(!Be.ok||!qe?.success)return{success:!1,error:qe?.error||"Invite acceptance failed.",code:qe?.code};oa("");const tt=typeof qe?.workspaceId=="string"?qe.workspaceId:null;if(tt&&vt){const pr=await Wo(tt,{hydrate:!1});if(!pr.success)return{success:!1,error:pr.error||"Unable to resolve workspace after invite acceptance.",code:pr.code}}const Gt=await Gs({preferredWorkspaceId:tt});return Gt.success?(tt&&Yt.current!==tt&&cn(tt,{clearExplicitSelection:!1}),{success:!0,workspaceSetupRequired:Gt.workspaceSetupRequired===!0}):{success:!1,error:Gt.error||"Unable to resolve workspace after invite acceptance.",code:Gt.code}}catch{return{success:!1,error:"Invite acceptance failed."}}},[cn,G,V,Yt,Gs,Wo,vt]),em=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth endpoint is not configured."};const se=C.trim();if(!se)return{success:!1,error:"Token is required."};try{const ce=await fetch(G("/api/taskforce/auth/invite/join"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:se})}),Q=await ce.json().catch(()=>({}));if(!ce.ok||!Q?.success)return{success:!1,error:Q?.error||"Invite join failed.",code:Q?.code};oa("");const Be=typeof Q?.workspaceId=="string"?Q.workspaceId:null;if(Be&&vt){const tt=await Wo(Be,{hydrate:!1});if(!tt.success)return{success:!1,error:tt.error||"Unable to resolve workspace after invite join.",code:tt.code}}const qe=await Gs({preferredWorkspaceId:Be});return qe.success?(Be&&Yt.current!==Be&&cn(Be,{clearExplicitSelection:!1}),{success:!0,workspaceSetupRequired:qe.workspaceSetupRequired===!0}):{success:!1,error:qe.error||"Unable to resolve workspace after invite join.",code:qe.code}}catch{return{success:!1,error:"Invite join failed."}}},[cn,G,V,Yt,Gs,Wo,vt]),Jp=o.useCallback(async()=>{if(!V)return{success:!1,error:"Cloud auth not configured."};try{const C=await fetch(G("/api/taskforce/auth/login-methods"),{credentials:"include"}),se=await C.json().catch(()=>({}));return!C.ok||!se?.success?{success:!1,error:se?.error||"Failed to fetch login methods."}:{success:!0,methods:Array.isArray(se?.methods)?se.methods:[]}}catch{return{success:!1,error:"Failed to fetch login methods."}}},[G,V]),gu=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth not configured."};try{const se=await fetch(G(`/api/taskforce/auth/login-methods/${encodeURIComponent(C)}`),{method:"DELETE",credentials:"include"}),ce=await se.json().catch(()=>({}));return!se.ok||!ce?.success?{success:!1,error:ce?.error||"Unlink failed.",code:ce?.code}:{success:!0}}catch{return{success:!1,error:"Unlink failed."}}},[G,V]),qy=o.useCallback(async C=>{if(!V)return{success:!1,error:"Cloud auth not configured."};try{const se=await fetch(G("/api/taskforce/auth/login-methods/password"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({password:C})}),ce=await se.json().catch(()=>({}));return!se.ok||!ce?.success?{success:!1,error:ce?.error||"Failed to add password.",code:ce?.code}:{success:!0}}catch{return{success:!1,error:"Failed to add password."}}},[G,V]),Zi=o.useCallback(async(C,se)=>{if(!V)return{success:!1,error:"Cloud auth not configured."};try{const ce=await fetch(G("/api/taskforce/auth/password/change"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({currentPassword:C,newPassword:se})}),Q=await ce.json().catch(()=>({}));return!ce.ok||!Q?.success?{success:!1,error:Q?.error||"Failed to change password.",code:Q?.code}:(await qr({force:!0}),ES(),{success:!0})}catch{return{success:!1,error:"Failed to change password."}}},[G,V,qr]),yu=o.useCallback((C,se)=>{const ce=se&&/^\/[A-Za-z0-9_\-./?=&%]*$/.test(se)?se:"/",Q=`/api/taskforce/auth/oauth/${encodeURIComponent(C)}/start?flow=link&return_to=${encodeURIComponent(ce)}`;window.location.href=G(Q)},[G]),ed=o.useCallback(()=>{mn(),du.current=null,lo.current="",Vs.current="",ri.current="",Ni.current="",dl.current="",Zf({clearLoaded:!0}),kc(!1),lr(jl()),Zo(!1),Hn([]),nr([]),yn([]),Xn([]),fs([]),no([]),Fs(Yk()),$a(!1)},[mn,Zf,yn,nr]),Yy=o.useCallback(async()=>{try{await zd().catch(()=>!1),V&&await fetch(G("/api/taskforce/auth/logout"),{method:"POST",credentials:"include"})}catch{}finally{if(mn(),Ge.current+=1,Qr.current=null,yr.current=!1,Gr.current=Date.now(),fr(!1),Xr(!0),Lr("anonymous"),De(""),Nm(null),pt(""),Tt(""),St(""),es("disconnected"),hf(null),Ft(!0),It(""),Hi(!1),kc(!1),Wt(null),Vt("idle"),$r(null),Zf({clearLoaded:!0}),D!=="local"&&Xb(Xe),cr(D==="cloud"&&Bt),cn("default"),ra([]),Zl.current=!1,sr(null),D==="local"){await Promise.allSettled([js({ignoreAuthGuard:!0}),vn(!0,{ignoreAuthGuard:!0}),Pr({ignoreAuthGuard:!0}),Jf({ignoreAuthGuard:!0,force:!0})]);return}Jl.current=!1,ed()}},[mn,Bt,zd,Xb,cn,G,V,Xe,D,js,Pr,Jf,vn,ed]),pl=o.useRef(null),rs=o.useCallback(async(C,se,ce)=>{if(!globalThis.crypto?.randomUUID)throw new Error("Secure initiative operation identity generation is unavailable.");const Q=ce||`operation-${globalThis.crypto.randomUUID()}`,Be={...se,headers:{...se.headers||{},"x-taskforce-operation-id":Q}};try{return await fetch(C,Be)}catch{return fetch(C,Be)}},[]),ha=o.useMemo(()=>MD(),[]),ku=o.useCallback(async C=>{try{const se=JSON.stringify(C);if(pl.current?.requestBody!==se){if(!globalThis.crypto?.randomUUID)throw new Error("Secure initiative operation identity generation is unavailable.");pl.current={requestBody:se,operationId:`operation-${globalThis.crypto.randomUUID()}`}}const ce=await rs("/api/taskforce/initiative-templates/create",{method:"POST",headers:{"Content-Type":"application/json"},body:se},pl.current.operationId),Q=await ce.json().catch(()=>({}));return!ce.ok||!Q?.success?{success:!1,error:Q?.error||`Create failed (${ce.status})`}:(pl.current=null,await vn(!0),{success:!0,result:Q?.results})}catch(se){return{success:!1,error:se.message}}},[vn,rs]),Xp=o.useCallback(async C=>{if(!globalThis.crypto?.randomUUID)throw new Error("Secure initiative identity generation is unavailable.");const se={...C||{},id:C?.id||`initiative-${globalThis.crypto.randomUUID()}`,createdAt:C?.createdAt||new Date().toISOString()},ce=await rs("/api/taskforce/initiative",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(se)}),Q=await ce.json().catch(()=>({}));if(!ce.ok)throw new Error(Q?.error||`Failed to create initiative (${ce.status})`);return await Pr(),Xn(Be=>si(Be,Q)),Q},[Pr,rs]),tm=o.useCallback(async(C,se)=>{const ce=await rs(`/api/taskforce/initiative/${encodeURIComponent(C)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(se||{})}),Q=await ce.json().catch(()=>({}));if(!ce.ok)throw new Error(Q?.error||`Failed to update initiative (${ce.status})`);return await Pr(),Xn(Be=>si(Be,Q)),Q},[Pr,rs]),hl=o.useCallback(async(C,se,ce)=>{const Q=await rs(`/api/taskforce/${C}/${encodeURIComponent(se)}/identity`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(ce)}),Be=await Q.json().catch(()=>({}));if(!Q.ok)throw new Error(Be?.error||`Failed to update ${C} identity (${Q.status})`);return C==="initiative"?Xn(qe=>si(qe,Be)):fs(qe=>si(qe,Be)),Pr(),Be},[Pr,rs]),ns=o.useCallback(()=>{Pr()},[Pr]),gl=o.useCallback(async C=>{const se=await rs(`/api/taskforce/initiative/${encodeURIComponent(C)}/archive`,{method:"POST"}),ce=await se.json().catch(()=>({}));if(!se.ok)throw new Error(ce?.error||`Failed to archive initiative (${se.status})`);return Xn(Q=>si(Q,ce)),ns(),ce},[ns,rs]),Qp=o.useCallback(async C=>{const se=await rs(`/api/taskforce/initiative/${encodeURIComponent(C)}/unarchive`,{method:"POST"}),ce=await se.json().catch(()=>({}));if(!se.ok)throw new Error(ce?.error||`Failed to unarchive initiative (${se.status})`);return Xn(Q=>si(Q,ce)),ns(),ce},[ns,rs]),eh=o.useCallback(async C=>{const se=await ha.prepareCreate(Yt.current||"default",C||{}),ce=await Tm("/api/taskforce/workstream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(se.body)},se.operationId),Q=!ce.ok&&await _m(ce),Be=await ce.json().catch(()=>({}));if(!ce.ok){Q&&await ha.abandonCreate(se.fingerprint,se.operationId);const qe=Be?.retryAt?` Retry after ${Be.retryAt}.`:"";throw new Error(`${Be?.error||`Failed to create workstream (${ce.status})`}${qe}`)}if(Be?.id!==se.body.id)throw new Error("Created workstream identity did not match the retained request identity.");return await ha.confirmCreate(se.fingerprint,se.operationId),await Pr(),fs(qe=>{const tt=DD(qe,Be);return tt?si(qe,tt):qe}),Be},[Yt,Pr,ha]),Zy=o.useCallback(async(C,se)=>{const ce=`/api/taskforce/workstream/${encodeURIComponent(C)}`,Q=se||{},Be=pn.find(Or=>Or.id===C),qe=Be?{updatedAt:Be.updatedAt||null,initiativeId:Be.initiativeId||null,ownerId:Be.ownerId||null,isArchived:!!Be.isArchived}:null,tt=await ha.prepareMutation(Yt.current||"default",ce,Q,qe),Gt=await Tm(ce,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(Q)},tt.operationId),pr=!Gt.ok&&await _m(Gt),Tr=await Gt.json().catch(()=>({}));if(!Gt.ok){pr&&await ha.abandonMutation(tt.fingerprint,tt.operationId);const Or=Tr?.retryAt?` Retry after ${Tr.retryAt}.`:"";throw new Error(`${Tr?.error||`Failed to update workstream (${Gt.status})`}${Or}`)}if(Tr?.id!==C)throw new Error("Updated workstream identity did not match the requested workstream.");return await ha.confirmMutation(tt.fingerprint,tt.operationId),await Pr(),fs(Or=>si(Or,Tr)),Tr},[Yt,Pr,ha,pn]),rm=o.useCallback(async(C,se)=>{const ce=`/api/taskforce/workstream/${encodeURIComponent(C)}/task-order`,Q={taskIds:se},Be=pn.find(Or=>Or.id===C),qe=await ha.prepareMutation(Yt.current||"default",ce,Q,{updatedAt:Be?.updatedAt||null,workstreamId:C}),tt=await Tm(ce,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Q)},qe.operationId),Gt=!tt.ok&&await _m(tt),pr=await tt.json().catch(()=>({}));if(!tt.ok){Gt&&await ha.abandonMutation(qe.fingerprint,qe.operationId);const Or=pr?.retryAt?` Retry after ${pr.retryAt}.`:"";throw new Error(`${pr?.error||`Failed to reorder workstream tasks (${tt.status})`}${Or}`)}if(pr?.workstreamId!==C||!Array.isArray(pr?.taskIds))throw new Error("Reordered workstream task response did not match the request.");await ha.confirmMutation(qe.fingerprint,qe.operationId);const Tr=new Map(pr.taskIds.map((Or,Br)=>[Or,(Br+1)*1024]));nr(Or=>Or.map(Br=>Tr.has(Br.id)?{...Br,workstreamOrder:Tr.get(Br.id)}:Br)),await Pr()},[Yt,Pr,ha,pn]),th=o.useCallback(async C=>{const se=`/api/taskforce/workstream/${encodeURIComponent(C)}/archive`,ce=pn.find(Gt=>Gt.id===C),Q=await ha.prepareMutation(Yt.current||"default",se,{},ce?{updatedAt:ce.updatedAt||null,isArchived:!!ce.isArchived}:null),Be=await Tm(se,{method:"POST"},Q.operationId),qe=!Be.ok&&await _m(Be),tt=await Be.json().catch(()=>({}));if(!Be.ok){qe&&await ha.abandonMutation(Q.fingerprint,Q.operationId);const Gt=tt?.retryAt?` Retry after ${tt.retryAt}.`:"";throw new Error(`${tt?.error||`Failed to archive workstream (${Be.status})`}${Gt}`)}if(tt?.id!==C)throw new Error("Archived workstream identity did not match the requested workstream.");return await ha.confirmMutation(Q.fingerprint,Q.operationId),await Pr(),fs(Gt=>si(Gt,tt)),tt},[Yt,Pr,ha,pn]),$o=o.useCallback(async C=>{const se=`/api/taskforce/workstream/${encodeURIComponent(C)}/unarchive`,ce=pn.find(Gt=>Gt.id===C),Q=await ha.prepareMutation(Yt.current||"default",se,{},ce?{updatedAt:ce.updatedAt||null,isArchived:!!ce.isArchived}:null),Be=await Tm(se,{method:"POST"},Q.operationId),qe=!Be.ok&&await _m(Be),tt=await Be.json().catch(()=>({}));if(!Be.ok){qe&&await ha.abandonMutation(Q.fingerprint,Q.operationId);const Gt=tt?.retryAt?` Retry after ${tt.retryAt}.`:"";throw new Error(`${tt?.error||`Failed to unarchive workstream (${Be.status})`}${Gt}`)}if(tt?.id!==C)throw new Error("Unarchived workstream identity did not match the requested workstream.");return await ha.confirmMutation(Q.fingerprint,Q.operationId),await Pr(),fs(Gt=>si(Gt,tt)),tt},[Yt,Pr,ha,pn]),nm=o.useRef(!1);o.useEffect(()=>{st(!0),!nm.current&&(nm.current=!0,qr())},[qr]),o.useEffect(()=>{N&&qr()},[N,qr]),o.useEffect(()=>{if(!V)return;let C=!1;const se=new AbortController,ce=typeof window<"u"?window.setTimeout(()=>se.abort(),5e3):null;return fetch(G("/api/taskforce/auth/providers"),{credentials:"include",signal:se.signal}).then(Q=>Q.ok?Q.json():null).then(Q=>{!C&&Array.isArray(Q?.providers)&&Nt(Q.providers)}).catch(()=>{}).finally(()=>{ce!==null&&typeof window<"u"&&window.clearTimeout(ce)}),()=>{C=!0,se.abort()}},[V,G]),o.useEffect(()=>{if(D!=="local"||!me||typeof window>"u")return;const C=()=>{qr()},se=()=>{document.visibilityState==="visible"&&C()};window.addEventListener("focus",C),window.addEventListener("online",C),document.addEventListener("visibilitychange",se);const ce=window.setInterval(C,3e4);return()=>{window.removeEventListener("focus",C),window.removeEventListener("online",C),document.removeEventListener("visibilitychange",se),window.clearInterval(ce)}},[D,me,qr]),o.useEffect(()=>{s&&s(qt.length)},[qt.length,s]);const wn=o.useMemo(()=>{const C=String(t||"").trim();return C?[String(n||"").trim(),C,String(r||"").trim()].join(":"):""},[r,t,n]),Mc=o.useRef(wn);Mc.current=wn;const td=o.useRef(null),Es=o.useRef(null),Lc=o.useRef(null),ni=o.useRef(null),rd=o.useRef(null),Ji=o.useRef(new Set),vu=o.useRef(new Set),Oc=o.useRef(new Map),fo=o.useRef(null),Di=o.useRef(null),[rh,yl]=o.useState(0);o.useEffect(()=>{const C=ni.current;C&&Za.current?.ownerKey===C&&zn(),ni.current=null,td.current=null,Es.current=null,Lc.current=null,rd.current=null,Ji.current.clear(),vu.current.clear(),Oc.current.clear(),fo.current!==null&&typeof window<"u"&&(window.clearTimeout(fo.current),fo.current=null),Di.current!==null&&typeof window<"u"&&(window.clearTimeout(Di.current),Di.current=null),yl(se=>se+1)},[zn,wn]),o.useEffect(()=>()=>{fo.current!==null&&typeof window<"u"&&(window.clearTimeout(fo.current),fo.current=null),Di.current!==null&&typeof window<"u"&&(window.clearTimeout(Di.current),Di.current=null)},[]);const nh=o.useRef(!1);o.useEffect(()=>{if(!un)return;if(!nh.current&&fn.length>0){nh.current=!0;const se=nu,ce=fn.some(Q=>Q.label===se||Q.value===se);if(se&&ce){const Q=fn.find(Be=>Be.label===se||Be.value===se);sl(Q?.value||se)}else sl(Qa(fn));return}const C=fn.some(se=>se.value===xs);fn.length>0&&!C&&sl(Qa(fn))},[un,fn,xs,Qa,nu]),o.useEffect(()=>{if(!un||!To||fn.length===0)return;const C=Q=>!fn.some(Be=>Be.value===Q.category),se=qt.some(C),ce=br.some(C);if(se||ce){const Q=Qa(fn);se&&nr(Be=>Be.map(qe=>C(qe)?{...qe,category:Q}:qe)),ce&&yn(Be=>Be.map(qe=>C(qe)?{...qe,category:Q}:qe))}},[un,To,fn,qt,br,Qa]),o.useEffect(()=>{},[Ci]);const Jy=o.useCallback(async()=>{await Po(Nd(["active","archive","deleted","planning"],{ambiguous:!0}))},[Po]);o.useEffect(()=>{if(typeof window>"u")return;const C=se=>{const ce=se.detail;(String(ce?.workspaceId||"").trim()||"default")===ot&&(ce?.authoritativeTask||Po(Nd(ce?.affectedCollections?.length?ce.affectedCollections:["active","archive"],{taskIds:ce?.taskId?[ce.taskId]:[]})))};return window.addEventListener(Wd,C),()=>{window.removeEventListener(Wd,C)}},[ot,Po]);const nd=String(ot||"").trim(),am=String(Ar||"").trim(),wu=ae("/taskforce-ws"),Xy=!!(V&&D==="cloud"&>&&Ot&&am&&am!=="anonymous"&&nd&&!Sw(nd)&&wu);o.useEffect(()=>()=>{Yi.current!==null&&typeof window<"u"&&(window.clearTimeout(Yi.current),Yi.current=null)},[ot]);const Qy=o.useCallback(C=>{if(D!=="cloud")return;XI({workspaceId:nd,source:"realtime"});const se=PD(C.type,C.invalidations);se.collections.length!==0&&(Po(se),!(!se.ambiguous||typeof window>"u")&&(Yi.current!==null&&window.clearTimeout(Yi.current),Yi.current=window.setTimeout(()=>{Yi.current=null,Po(se)},250)))},[nd,D,Po]);AI({enabled:Xy,workspaceId:nd,websocketUrl:wu,onSignal:Qy,userId:am||void 0}),UN({workspaceId:ot,isOpen:Fe,authBlocked:er,authRequiredForApi:Bt,isAuthenticated:Ot,canCallProtectedApi:Rn.canCallProtectedApi,shouldGateProtectedApiCalls:W,authSessionResolvedRef:lu,authRequiredForApiRef:Vf,isAuthenticatedRef:ll,dataVersionRef:zf,refreshTaskCollectionsForDataVersion:Jy,coordinatorDataVersion:Sf});const Xi=o.useMemo(()=>OD(qt,br,An,Sr),[qt,br,An,Sr]),Mi=o.useMemo(()=>ar.map(C=>({...C.taskSnapshot,isDeleted:!0,deletedRecordId:C.id})),[ar]);o.useEffect(()=>{if(!(gn||lt)&&Fe&&!u){if(_e==="tasks"){const C=`${ot}:${_e}:${ft?"archive":"active"}:${ke}`,se=ft||ke==="archived",ce=ke==="deleted";if(!Hf.current){Hf.current=!0,Ni.current=C,se&&ia(!1),ce&&Ai(!1);return}if(Ni.current===C)return;Ni.current=C,!se&&!ce&&vn(),Pr(),se&&ia(!1),ce&&Ai(!1);return}if(_e==="settings"){const C=`${ot}:${_e}:${Le}`;if(dl.current===C)return;dl.current=C,js()}}},[ot,Fe,_e,Le,ft,ke,vn,Pr,ia,Ai,js,gn,lt,u]);const ad=o.useCallback(async(C="")=>{try{const se=await fetch(`/api/taskforce/folders?path=${encodeURIComponent(C)}`);if(se.ok){const ce=await se.json();Ce(ce.folders||[]),pe(ce.files||[]),et(C)}}catch(se){console.error("[Taskforce] Failed to fetch folders:",se)}},[]),kl=o.useCallback(C=>{const se=[];if(C.path&&se.push(C.path),C.paths&&C.paths.length>0)for(const ce of C.paths)se.includes(ce)||se.push(ce);return se},[]),{validatePaths:bu,handleUpdateCategory:Ks,handleSaveCategory:Qi,handleAddPath:vl,handleUpdateCategoryIcon:ah,handleUpdateCategoryColor:sh,handleRemovePath:oh,handleSelectPath:ih,handleRemoveCategory:ek,handleSaveType:sd,handleRemoveType:sm,handleUpdateType:ch,handleUpdateTaxonomies:Su,handleUpdatePriorities:Au,analyzeSystemTaxonomyPack:tk,handleApplySystemTaxonomyPack:ec}=FE({activeCategories:fn,activeTab:_e,activeTypes:Qn,archivedTasks:br,browserTarget:Ue,category:xs,configLoaded:un,customCategories:hs,refreshTaskCollections:Ci,fetchTasks:vn,filterCategories:Rf,getCategoryPaths:kl,normalizePath:Ct,pathValidation:ma,setBrowserTarget:yt,setCategory:sl,setCustomCategories:vi,setCustomTypes:gc,setFilterCategories:Oo,setPathValidation:zs,setPriorities:qn,setShowFolderBrowser:je,setTaxonomies:oo,tasks:qt}),lh=o.useCallback(async C=>{const se=Yo,ce={...se,...C};ys(ce);try{const Q=await fetch("/api/taskforce/taxonomy-display-labels",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({displayLabels:C})});if(!Q.ok)throw new Error(`Failed to save taxonomy display labels (${Q.status})`);const Be=await Q.json().catch(()=>({}));Be?.displayLabels&&typeof Be.displayLabels=="object"&&ys({...ce,...Be.displayLabels})}catch(Q){console.error("[Taskforce] Failed to update taxonomy display labels",Q),ys(se)}},[Yo]),od=o.useCallback(C=>{_e==="tasks"&&_s.current&&we(_s.current.scrollTop),Oe(C)},[_e]),dh=o.useRef(async()=>!0),Cu=o.useCallback(C=>{const se={taskId:C.id,task:C,draft:Mk(C)};ps.current=se,Us(se),Fa.current=null,wa(null)},[]),{handleNavigation:tc,handleClose:rk,resetForm:om,resolveWorkstreamIdInput:id,handleEdit:Bc,applyTaskToEditor:Iu,handleOpenTaskById:qs,returnToPreviousTask:uh,clearReturnToParentTask:cd}=YE({activeCategories:fn,activeTypes:Qn,activeTab:_e,attachments:jc,checklistItems:Ul,comments:xi,cancelTaskDetailLoad:Mt,description:Ps,editingTaskId:Sr,flushPendingAutoSave:()=>dh.current(),getDescriptionDraft:Fl,getPreferredCategoryValue:Qa,getTitleDraft:eu,lastUsedCategory:nu,loadTaskDetail:zt,newCommentText:zl,onTaskApplied:Cu,relationshipTasks:Xi,workstreams:pn,showArchive:ft,taxonomies:pa,setActiveTab:od,setAssignee:Zd,setAttachments:Op,setAttachmentsDirty:Ei,setCategory:sl,setChecklistItems:tu,setComments:Ic,setComplexity:Yd,setDescription:Gi,setDueDate:Xd,setEditingTaskId:ki,setError:oa,setFormTaxonomies:Lo,setIsOpen:st,setNewCommentText:ru,setPendingNavigation:Ya,setWorkstreamInput:Qd,setPriority:qd,setScheduledDate:Jd,setShowArchive:xe,setStatus:ti,setTaskReturnTrail:gi,setTitle:Ti,setType:Eo,setUnsavedModalOpen:Er,taskReturnTrail:So,title:_i}),mo=o.useCallback(()=>{const C=Mo.trim()?id(Mo):null;return{title:eu(),description:Fl(),category:typeof xs=="string"?xs:String(xs.label||""),type:typeof ts=="string"?ts:String(ts.label||""),priority:No,complexity:Number(ol)||3,status:ei,assignee:Ac,scheduledDate:Rs,dueDate:Do,workstreamId:C?.id||Mo.trim(),taxonomies:{...Hl},checklistItems:[...Ul],attachments:ql()}},[Ac,xs,Ul,ol,Do,Hl,ql,Fl,eu,No,id,Rs,ei,ts,Mo]);o.useEffect(()=>{const C=String(Xa||"").trim();if(!Dc||!C)return;if(Sr===C){ba(null);return}if(va||u)return;const se=tt=>tt.id===C||tt.id.endsWith(C);if(Xi.find(se)){qs(C),ba(null);return}const Q=String(Yt.current||"default").trim()||"default",Be=`${Q}:${C}`;if(En!==Q&&!ao.has(Be)){ia(!0).finally(()=>{(String(Yt.current||"default").trim()||"default")===Q&&Ts(Gt=>Gt.has(Be)?Gt:new Set(Gt).add(Be))});return}const qe=Mi.find(se);if(qe){Bc(qe),ba(null);return}if(In!==Q){Ai(!0);return}ba(null)},[En,ao,In,Mi,Sr,ia,Ai,Bc,qs,va,Xa,Xi,Dc,u]),o.useEffect(()=>{const C=String(t||"").trim();if(!C||!wn||td.current===wn||!N||!un||!Dc||va||u)return;const se=String(n||"").trim(),ce=String(Yt.current||"default").trim()||"default",Q=()=>{const pr=ni.current;pr&&Za.current?.ownerKey===pr&&zn(),ni.current=null};if(se&&se!==ce){if(Es.current===wn)return;if(D!=="cloud"||!vt){Es.current!==wn&&(Es.current=wn,Un("This task is unavailable or you do not have access to it.","info",12e3));return}if(!gt||!Ot||er||Lc.current===wn||Di.current!==null)return;const pr=wn,Tr=`${pr}:workspace`;Lc.current=pr,Wo(se).then(Or=>{if(Mc.current===pr&&!Or.success){const Br=(Oc.current.get(Tr)||0)+1;if(Oc.current.set(Tr,Br),Br<2&&typeof window<"u"){Di.current=window.setTimeout(()=>{Di.current=null,Mc.current===pr&&yl(Ns=>Ns+1)},500);return}Es.current=pr;const Gn=`deep-link-workspace:${pr}`;ni.current=Gn,Un("This task is unavailable or you do not have access to it.","info",12e3,{label:"Retry",onAction:()=>{Mc.current===pr&&(ni.current=null,Es.current=null,Oc.current.delete(Tr),zn(),yl(Ns=>Ns+1))},ownerKey:Gn})}}).finally(()=>{Lc.current===pr&&(Lc.current=null)});return}const Be=pr=>{const Tr=pr.find(Br=>Br.id===C);if(Tr||se)return Tr;const Or=pr.filter(Br=>Br.id.endsWith(C));return Or.length===1?Or[0]:void 0},qe=Be(Xi);if(qe){Q(),td.current=wn,Es.current=null,Sr!==qe.id&&(qe.isArchived&&xe(!0),Bc(qe));return}const tt=(pr,Tr,Or)=>{const Br=`${wn}:${pr}`;if(rd.current===Br||fo.current!==null)return;rd.current=Br;const Gn=wn;Tr().then(Ns=>{if(Mc.current!==Gn)return;if(Ns){yl(Ys=>Ys+1);return}const ho=(Oc.current.get(Br)||0)+1;if(Oc.current.set(Br,ho),ho>=2){Or.add(Gn),yl(Ys=>Ys+1);return}typeof window<"u"&&(fo.current=window.setTimeout(()=>{fo.current=null,Mc.current===Gn&&yl(Ys=>Ys+1)},500))}).finally(()=>{rd.current===Br&&(rd.current=null)})};if(En!==ce&&!Ji.current.has(wn)){tt("archive",()=>ia(!0),Ji.current);return}const Gt=Be(Mi);if(Gt){Q(),td.current=wn,Es.current=null,Bc(Gt);return}if(In!==ce&&!vu.current.has(wn)){tt("deleted",()=>Ai(!0),vu.current);return}Es.current!==wn&&(Es.current=wn,Un("This task is unavailable or you do not have access to it.","info",12e3))},[En,er,gt,zn,un,Yt,rh,wn,In,Mi,Sr,ia,Ai,Bc,t,Ot,va,Un,Xi,n,N,D,xe,Wo,Dc,u,vt]);const nk=JN({enabled:w.syncV3TaskMetadataActivation&&D==="local",workspaceId:ot,isAuthenticated:Ot,dispatchEnabled:jo}),im=cD({localRuntime:D==="local",enabled:w.syncV3TaskCreateActivation&&D==="local",workspaceId:ot,isAuthenticated:Ot,dispatchEnabled:jo}),fh=w.syncV3TaskStatusActivation&&D==="local",mh=yD({enabled:fh,workspaceId:ot,isAuthenticated:Ot,dispatchEnabled:jo}),ak=bD({enabled:D==="local",workspaceId:ot,isAuthenticated:Ot,dispatchEnabled:jo}),Wc=w.syncV3TaskDeleteActivation&&D==="local",$c=CD({enabled:Wc,workspaceId:ot,isAuthenticated:Ot,dispatchEnabled:jo}),_u=TD({enabled:Wc,workspaceId:ot,isAuthenticated:Ot,dispatchEnabled:jo}),cm=o.useCallback(async(C,se)=>{if(C!==Sr)return{handled:!1};const ce=[...qt,...br].find(qe=>qe.id===C);if(!ce)return{handled:!1};const Q=await zt(ce,{force:!0,shouldCommit:()=>ps.current?.taskId===C});if(!Q||ps.current?.taskId!==C)return{handled:!1};const Be=so.current(Q,"save");return{handled:!0,retryDetailRevision:Be?.conflicts.length===0?Q.detailRevision:void 0,retryPatch:Be?.conflicts.length===0?Lk(Q,Be.merged):void 0}},[br,Sr,zt,qt]),ld=o.useCallback(C=>{if(C.id===Sr){if(Fa.current?.taskId===C.id){so.current(C,"refresh");return}Cu(C)}},[Cu,Sr]),{copiedId:Tu,handleDelete:lm,handleUpdateTask:wl,handleSetStatus:xu,handleToggleComplete:dm,handleToggleCancel:Fc,handleToggleInProgress:um,handleToggleReview:Uc,handleArchiveTask:fm,handleBulkArchive:Ru,handleUnarchive:ph,handleRestoreDeletedTask:zc,handleRestoreSelectedDeletedTasks:hh,handlePermanentlyDeleteDeletedTask:gh,handleEmptyDeletedTasks:yh,handleCopyId:sk,queueWorkspaceSyncFromAuthoritativeTaskState:ok}=PN({tasks:qt,archivedTasks:br,editingTaskId:Sr,editingTaskDetailRevision:Ao?.taskId===Sr&&Ao.task.detailRevision||null,setTasks:nr,setArchivedTasks:yn,setDeletedTasks:Hn,setError:oa,resetForm:om,setActiveTab:od,fetchTasks:vn,fetchArchive:wc,fetchDeletedTasks:Ml,mergeTaskFromServer:rn,pushNotice:Un,cloudAuthConfigured:V,runtimeMode:D,isAuthenticated:Ot,workspaceCloudSyncEnabled:jo,buildWorkspaceSyncSignature:Vi,pushWorkspaceChangesToCloud:Cf,workspacePendingSignatureRef:Pp,workspaceDeletedTaskIdsRef:ky,workspaceDeletedTaskWatermarksRef:Hd,mutateTaskMetadata:nk,mutateTaskStatus:mh,mutateTaskLifecycle:ak,mutateTaskDelete:$c,mutateTaskRestore:_u,durableTaskMetadataActivationEnabled:w.syncV3TaskMetadataActivation&&D==="local",durableTaskStatusActivationEnabled:fh,durableTaskDeleteActivationEnabled:Wc,durableTaskHttpRootActivationEnabled:w.syncV3TaskCloudHttpRootActivation,workspaceId:ot,onTaskRevisionConflict:cm,onTaskMutationAccepted:ld,pendingTaskMetadataOverlaysRef:vc}),{resolveDraft:Pu}=AN(ot,Ar),ik=o.useCallback(async()=>{const C=Nc.current;cl(),await Pu({draftUploadId:C,resolution:"promote"})},[Pu,cl]),{autoSaveState:Li,flushAutoSave:kh,scheduleWarningPrompt:vh,handleSubmit:ai,confirmScheduleWarning:dd,cancelScheduleWarning:ck,handleAddComment:Da}=gN({activeCategories:fn,activeTab:_e,apiEndpoint:m,assignee:Ac,attachments:jc,attachmentsDirty:$p,category:xs,checklistItems:Ul,comments:xi,complexity:ol,description:Ps,dueDate:Do,createTaskDurably:im,durableTaskHttpRootActivationEnabled:w.syncV3TaskCloudHttpRootActivation,workspaceId:ot,updateTask:wl,editingTaskId:Sr,editorBaselineDraft:Ao?.taskId===Sr?Ao.draft:null,revisionConflict:Ja?.taskId===Sr,fetchTasks:vn,formTaxonomies:Hl,getAttachmentsDraft:ql,getDescriptionDraft:Fl,getPreferredCategoryValue:Qa,getTitleDraft:eu,awaitPendingDescriptionImageUpload:qi,onTaskCreateAccepted:ik,mergeTaskFromServer:rn,onTaskCreated:Bc,workstreamInput:Mo,priority:No,pushNotice:Un,queueWorkspaceSyncFromAuthoritativeTaskState:ok,relationshipTasks:Xi,supplementalTasks:Mi,resetForm:om,resolveWorkstreamIdInput:id,scheduledDate:Rs,setActiveTab:od,setAttachmentsDirty:Ei,setComments:Ic,setError:oa,setLastUsedCategory:au,setLoading:Nl,setNewCommentText:ru,status:ei,title:_i,taxonomies:pa,textDraftOccupied:$l,type:ts}),po=o.useCallback((C,se)=>{if(!Sr||C.id!==Sr)return null;const ce=ps.current?.taskId===Sr?ps.current:{draft:Mk(C)},Q=mo(),Be=Mk(C),qe=mR(ce.draft,Q,Be),tt=Fa.current?.taskId===Sr?Fa.current.reconciliation.conflicts:[],Gt={...qe,conflicts:yR(tt,qe.conflicts,Q,Be)},pr=Lk(C,Gt.merged),Tr={taskId:Sr,task:C,draft:Be};if(ps.current=Tr,Us(Tr),Iu(pr,{preserveReturnTrail:!0,adoptAsBaseline:!1}),Ei(JSON.stringify(Gt.merged.attachments)!==JSON.stringify(Be.attachments)),oa(""),Gt.conflicts.length>0){const Or={taskId:Sr,detailRevision:C.detailRevision||"unknown",source:se,reconciliation:Gt,remoteTask:C,remoteDraft:Be};Fa.current=Or,wa(Or)}else Fa.current=null,wa(null),Gt.remoteChangedFields.length>0&&Un("Task updated","info",2200);return Gt},[Iu,Sr,Un,mo,Ei,oa]);so.current=po;const ud=o.useCallback(C=>{const se=Ja;if(!se||se.taskId!==Sr)return;const ce=pR(se.reconciliation,se.remoteDraft,C,mo()),Q=Lk(se.remoteTask,ce);Iu(Q,{preserveReturnTrail:!0,adoptAsBaseline:!1}),Ei(JSON.stringify(ce.attachments)!==JSON.stringify(se.remoteDraft.attachments)),Fa.current=null,wa(null),oa(""),zn();const Be=se.reconciliation.conflicts.some(qe=>qe.field==="status");C==="local"&&Be&&ce.status!==se.remoteDraft.status&&xu(se.remoteTask,ce.status)},[Iu,zn,Sr,Ja,xu,mo,Ei,oa]);o.useEffect(()=>{const C=Ja;if(!C||C.taskId!==Sr)return;const se=kR(C.reconciliation.conflicts),ce=se.length>0?se.join(", "):"task fields";Un(`${ce.charAt(0).toUpperCase()}${ce.slice(1)} also changed elsewhere.`,"info",void 0,{label:"Use latest",primary:!0,onAction:()=>ud("latest"),secondaryLabel:"Keep mine",onSecondaryAction:()=>ud("local"),dismissible:!1,ownerKey:`task-editor-conflict:${C.taskId}:${C.detailRevision}`})},[Sr,Ja,Un,ud]),o.useEffect(()=>{if(!Sr){Ua.current=null,wa(null),Fa.current=null,ps.current=null,Us(null);return}const C=Jo[Sr];if(!C){Ua.current=null;return}const se=[...qt,...br].find(Q=>Q.id===Sr);if(!se)return;const ce=`${Sr}:${C}`;Ua.current!==ce&&(Ua.current=ce,zt(se,{shouldCommit:()=>ps.current?.taskId===Sr}).then(Q=>{if(ps.current?.taskId===Sr){if(!Q){oa("The latest task update could not be loaded. Your local draft has been preserved.");return}po(Q,"refresh")}}).finally(()=>{Ua.current===ce&&(Ua.current=null)}))},[br,Sr,zt,po,oa,Jo,qt]);const lk=o.useCallback(async()=>{const C=Nc.current;cl();try{await qi()}catch(se){console.warn("[Taskforce] Description image upload failed while the draft was being discarded.",se)}try{await Pu({draftUploadId:C,resolution:"discard"})}catch(se){console.warn("[Taskforce] Failed to clean discarded Description image uploads.",se)}},[qi,Pu,cl]);o.useEffect(()=>{dh.current=kh},[kh]);const{handleSetWorkstreamForCurrentTask:dk}=CN({editingTaskId:Sr,workstreamInput:Mo,pushNotice:Un,relationshipTasks:Xi,resolveWorkstreamIdInput:id,setError:oa,updateTask:wl}),{currentTask:uk,currentTaskWorkstream:wh,currentTaskInitiative:bh}=VE({editingTaskId:Sr,relationshipTasks:Xi,initiatives:fa,workstreams:pn,workstreamInput:Mo,resolveWorkstreamIdInput:id,supplementalTasks:Mi,assignee:Ac,setAssignee:Zd,setChecklistItems:tu,setComments:Ic}),Sh=WE({resolveCloudAuthUrl:G,currentWorkspaceId:ot,normalizedCloudAuthBaseUrl:ye,normalizedCloudMcpBaseUrl:oe,mergedConfig:l,availableWorkspaces:ur,currentTheme:de,configLoaded:un,globalTheme:le,themeUseGlobalDefault:Je,keyShortcut:Rr,jsonBackupEnabled:Yn,globalJsonBackupEnabled:$n,globalWeekStartsOn:Ws,locale:eo,supportedLocales:Zn,jsonBackupUseGlobalDefault:ya,manualComplexityEnabled:pi,checklistDropdownEnabled:hi,showTaskCardStatusLabel:aa,showTaskCardDescription:Ka,showTaskCardAttachments:ds,showTaskCardChecklistProgress:qa,showTaskCardLatestActivity:Ra,tintTaskCardActivityBackground:us,pathSaved:re,settingsSection:Le,setupState:Ln,buildInfo:dn,saveSetupMode:Gp,saveWorkspaceProfile:Kp,setCurrentTheme:x,handleSaveTheme:Fp,handleSaveGlobalTheme:Kf,handleUseGlobalThemeDefault:Ey,setKeyShortcut:Yr,handleJsonBackupEnabledChange:qf,handleSaveGlobalJsonBackupEnabled:Ny,handleUseGlobalJsonBackupDefault:Up,handleSaveGlobalWeekStartsOn:Dy,handleSaveLocale:Xl,handleManualComplexityEnabledChange:uu,handleChecklistDropdownEnabledChange:fu,handleShowTaskCardStatusLabelChange:zp,handleShowTaskCardDescriptionChange:mu,handleShowTaskCardAttachmentsChange:My,handleShowTaskCardChecklistProgressChange:Yf,handleShowTaskCardLatestActivityChange:Ly,handleTintTaskCardActivityBackgroundChange:Ql,handleSaveSettings:Gf,initiativeTemplates:ro,fetchInitiativeTemplates:Is,createInitiativeFromTemplate:ku,setShowFolderBrowser:je,setBrowserTarget:yt,fetchFolders:ad,activeCategories:fn,pathValidation:ma,taxonomyDisplayLabels:Yo,handleUpdateCategory:Ks,handleRemoveCategory:ek,handleSaveCategory:Qi,handleAddPath:vl,handleRemovePath:oh,handleUpdateCategoryIcon:ah,handleUpdateCategoryColor:sh,activeTypes:Qn,handleSaveType:sd,handleRemoveType:sm,handleUpdateType:ch,taxonomies:pa,handleUpdateTaxonomies:Su,priorities:ln,handleUpdatePriorities:Au,analyzeSystemTaxonomyPack:tk,handleApplySystemTaxonomyPack:ec,handleUpdateTaxonomyDisplayLabels:lh,projectRoot:kt,projectName:rt,mcpHostRoot:Kr,serverHostRoot:vr,mcpScriptPath:wt,tenantId:U,runtimeMode:D,workspaceSwitchingEnabled:vt,deleteWorkspace:Vp,setMcpHostRoot:jr,isAuthenticated:Ot});o.useEffect(()=>{typeof window<"u"&&(window.__TASKFORCE_DEBUG__={tasks:qt,archivedTasks:br,runtimeMode:D,currentWorkspaceId:ot,isAuthenticated:Ot,workspaceCloudSyncEnabled:jo,realtimeSyncEnabled:_t,fetchTasks:vn,fetchArchive:Vn,retryWorkspaceCloudSync:Kd,resetWorkspaceSyncCursorAndPull:_f,getSyncDiagnostics:Bl,__dispatch:{handleUpdateTask:wl,handleToggleComplete:dm,handleArchiveTask:fm,handleToggleCancel:Fc,handleToggleInProgress:um,handleToggleReview:Uc,handleSubmit:ai,handleDelete:lm}})},[qt,br,D,ot,Ot,jo,_t,vn,Vn,Kd,_f,Bl,wl,dm,fm,Fc,um,Uc,ai,lm]);const Ah=sa&&sa.tone!=="error"?{message:sa.message,type:"info"}:null,mm=String(y||w.wsBaseUrl||fe||"").trim().replace(/\/+$/,"");return{config:{...l,cloudEnvironment:w.cloudEnvironment||l.cloudEnvironment||"",appGates:w.appGates||l.appGates,apiBaseUrl:fe||l.apiBaseUrl,cloudAuthBaseUrl:ye||l.cloudAuthBaseUrl,wsBaseUrl:mm||l.wsBaseUrl},isOpen:Fe,setIsOpen:st,activeTab:_e,setActiveTab:od,currentTheme:de,setCurrentTheme:x,configLoaded:un,storagePath:Ze,saveSettings:Gf,pathSaved:re,keyShortcut:Rr,setKeyShortcut:Yr,globalWeekStartsOn:Ws,locale:eo,supportedLocales:Zn,saveLocale:Xl,jsonBackupEnabled:Yn,setJsonBackupEnabled:Ia,manualComplexityEnabled:pi,checklistDropdownEnabled:hi,showTaskCardStatusLabel:aa,showTaskCardDescription:Ka,showTaskCardAttachments:ds,showTaskCardChecklistProgress:qa,showTaskCardLatestActivity:Ra,tintTaskCardActivityBackground:us,setManualComplexityEnabled:Jn,mcpHostRoot:Kr,setMcpHostRoot:jr,settingsSection:Le,setSettingsSection:mt,runtimeMode:D,workspaceMode:Et,workspaceSwitchingEnabled:vt,cloudAuthConfigured:V,authRequiredForApi:Bt,authBlocked:er,isAuthenticated:Ot,authUserId:Ar,authUserEmail:nt,authUserDisplayName:ut,authUserAvatarUrl:Qt,authWorkspaceId:Wr,userGlobalSyncStatus:On,workspaceLastPullAt:Sp,workspaceLastPushAt:Ud,workspaceLastErrorAt:gf,userGlobalSyncError:bp,workspaceLastErrorMessage:Ap,workspaceLastSuccessfulSyncAt:yf,workspaceSyncPhase:kf,workspaceSyncSetupIntent:Cp,workspaceSyncStatus:vf,workspaceSyncSummary:Ip,workspaceSyncRecommendedAction:wf,workspaceSyncBusy:_p,workspaceSyncPendingChanges:bf,localCoordinatorStatus:xp,transferLocalCoordinatorOwnership:Rp,retryUserGlobalSettingsSync:If,retryWorkspaceCloudSync:Kd,resetWorkspaceSyncCursorAndPull:_f,getWorkspaceSyncDiagnostics:Bl,hasBetaAccess:Kt,realtimeSyncEnabled:_t,realtimeSyncFlagSource:rr,currentWorkspaceId:ot,currentWorkspaceRole:Fy,availableWorkspaces:ur,assigneeOptions:wr,workspaceCloudSyncEnabled:jo,saveWorkspaceCloudSyncSettings:nl,applyWorkspaceSyncStateSnapshot:Vd,bootstrapState:qo,authSessionResolved:gt,workspaceBootstrapPending:u,bootstrapPhase:Ir,bootstrapError:Ur,bootstrapStartedAt:Tn,setupState:Ln,runtimeCapabilities:ue,refreshSetupContext:ml,retryBootstrapChecks:$y,continueAfterCommercialOnboarding:Xf,saveWorkspaceProfile:Kp,fetchWorkspaces:ul,createWorkspace:Uy,deleteWorkspace:Vp,switchWorkspace:Wo,loginWithCredentials:zy,beginOAuthLogin:Hy,availableAuthProviders:Xt,fetchLoginMethods:Jp,unlinkLoginMethod:gu,addPasswordToAccount:qy,changePassword:Zi,beginOAuthLink:yu,registerWithCredentials:Vy,updateCurrentUserProfile:Gy,requestEmailVerification:Ky,confirmEmailVerification:Na,requestPasswordReset:Qf,confirmPasswordReset:qp,inspectInviteAcceptance:Yp,acceptInviteWithToken:Zp,joinInviteWithToken:em,logout:Yy,showFolderBrowser:Ee,setShowFolderBrowser:je,folders:Pe,files:Te,currentBrowsePath:Me,fetchFolders:ad,browserTarget:Ue,setBrowserTarget:yt,groupBy:Bf,setGroupBy:cu,activeWorkspaceModule:Pi,setActiveWorkspaceModule:Hp,emptyColumnMode:Wf,setEmptyColumnMode:Np,zenMode:$s,setZenMode:ka,handleSelectPath:ih,handleAddPath:vl,handleRemovePath:oh,tasks:qt,loadingTasks:va,archivedTasks:br,archiveHydratedWorkspaceId:En,initiatives:fa,workstreams:pn,planningBootstrapTaskSummaries:Ui,planningLoadState:zi,workspaceTaskRelationships:Tp,deletedTasks:ar,activeCategories:fn,activeTypes:Qn,priorities:ln,taxonomyDisplayLabels:Yo,taxonomies:pa,searchQuery:Ri,setSearchQuery:jp,filterCategories:Rf,setFilterCategories:Oo,filterTypes:Kl,setFilterTypes:Pf,filterPriorities:Ki,setFilterPriorities:su,filterStatus:jf,setFilterStatus:Ef,filterAssignees:Tc,setFilterAssignees:xc,filterTaxonomies:Df,setFilterTaxonomies:Rc,hasInitedFilters:Pc,sortBy:Jt,setSortBy:Lf,sortOrder:ou,setSortOrder:Of,toggleSortOrder:iu,showArchive:ft,setShowArchive:xe,taskScope:ke,setTaskScope:ve,compressedCards:Ve,setCompressedCards:Ne,clearFilters:Ay,filteredTasks:Cy,searchAgnosticTasks:Iy,filteredArchive:Bo,groupedTasks:$f,collapsedCategories:Dp,setCollapsedCategories:Mp,fetchTasks:vn,fetchArchive:Vn,ensureArchiveHydrated:ia,fetchDeletedTasks:tr,fetchPlanningEntities:Pr,fetchPlanningEntityDetail:Dt,fetchAssigneeOptions:fl,createInitiative:Xp,updateInitiative:tm,updatePlanningIdentity:hl,archiveInitiative:gl,unarchiveInitiative:Qp,createWorkstream:eh,updateWorkstream:Zy,archiveWorkstream:th,unarchiveWorkstream:$o,reorderWorkstreamTasks:rm,handleEdit:Bc,handleDelete:lm,handleCopyId:sk,handleToggleComplete:dm,handleToggleCancel:Fc,handleToggleInProgress:um,handleToggleReview:Uc,handleArchiveTask:fm,handleBulkArchive:Ru,handleUnarchive:ph,handleRestoreDeletedTask:zc,handleRestoreSelectedDeletedTasks:hh,handlePermanentlyDeleteDeletedTask:gh,handleEmptyDeletedTasks:yh,handleUpdateTask:wl,handleSetStatus:xu,editingTaskId:Sr,loading:yc,error:tl,clearTaskError:Dl,title:_i,setTitle:Ti,setTitleDraft:wy,description:Ps,setDescription:Gi,setDescriptionDraft:Tf,checklistItems:Ul,setChecklistItems:tu,category:xs,setCategory:sl,type:ts,setType:Eo,priority:No,setPriority:qd,complexity:ol,setComplexity:Yd,status:ei,setStatus:ti,assignee:Ac,setAssignee:Zd,scheduledDate:Rs,setScheduledDate:Jd,dueDate:Do,setDueDate:Xd,workstreamInput:Mo,setWorkstreamInput:Qd,formTaxonomies:Hl,setFormTaxonomies:Lo,comments:xi,newCommentText:zl,setNewCommentText:ru,attachments:jc,setAttachments:Op,attachmentsDirty:$p,setAttachmentsDirty:Ei,descriptionImageUploadPending:Bp,descriptionImageDraftId:Wp,registerDescriptionImageUpload:Uf,descriptionFocused:Ty,setDescriptionFocused:xy,showMarkdownHelp:Sa,setShowMarkdownHelp:pc,isCapturingScreenshot:Ry,setIsCapturingScreenshot:Py,handleSubmit:ai,resetForm:om,discardDescriptionImageDraft:lk,handleAddComment:Da,handleSetWorkstreamForCurrentTask:dk,handleOpenTaskById:qs,returnToPreviousTask:uh,autoSaveState:Li,unsavedModalOpen:jn,setUnsavedModalOpen:Er,pendingNavigation:Oa,handleNavigation:tc,handleClose:rk,uiNotice:sa,pushNotice:Un,clearNotice:zn,successBanner:Ah,taskReturnTrail:So,clearReturnToParentTask:cd,copiedId:Tu,recentlyChangedTaskIds:Hs,scheduleWarningPrompt:vh,confirmScheduleWarning:dd,cancelScheduleWarning:ck,tasksScrollRef:_s,setTasksScrollPos:we,taskforceAgentId:_c,setTaskforceAgentId:Vl,taskforceAgentConversationId:Sy,setTaskforceAgentConversationId:xf,taskforceAgentConversationByAgentId:Gl,setTaskforceAgentConversationByAgentId:ks,uiStateReady:Dc,handleUpdateCategory:Ks,handleRemoveCategory:ek,handleSaveCategory:Qi,handleUpdateCategoryIcon:ah,handleUpdateCategoryColor:sh,handleSaveType:sd,handleRemoveType:sm,handleUpdateType:ch,handleUpdateTaxonomies:Su,handleUpdatePriorities:Au,handleUpdateTaxonomyDisplayLabels:lh,pathValidation:ma,validatePaths:bu,getCategoryPaths:kl,customCategories:hs,setCustomCategories:vi,projectRoot:kt,projectName:rt,mcpScriptPath:wt,serverHostRoot:vr,commentsEndRef:by,currentTask:uk,currentTaskWorkstream:wh,currentTaskInitiative:bh,initiativeTemplates:ro,fetchInitiativeTemplates:Is,createInitiativeFromTemplate:ku,settingsModel:Sh}}const $D="modulepreload",FD=function(e){return"/taskforce/"+e},eA={},Go=function(t,r,n){let s=Promise.resolve();if(r&&r.length>0){let d=function(m){return Promise.all(m.map(f=>Promise.resolve(f).then(g=>({status:"fulfilled",value:g}),g=>({status:"rejected",reason:g}))))};document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),c=l?.nonce||l?.getAttribute("nonce");s=d(r.map(m=>{if(m=FD(m),m in eA)return;eA[m]=!0;const f=m.endsWith(".css"),g=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${m}"]${g}`))return;const h=document.createElement("link");if(h.rel=f?"stylesheet":$D,f||(h.as="script"),h.crossOrigin="",h.href=m,c&&h.setAttribute("nonce",c),document.head.appendChild(h),f)return new Promise((y,k)=>{h.addEventListener("load",y),h.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${m}`)))})}))}function i(l){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=l,window.dispatchEvent(c),!c.defaultPrevented)throw l}return s.then(l=>{for(const c of l||[])c.status==="rejected"&&i(c.reason);return t().catch(i)})},UD="_filterGlow_1ijmf_8",zD="_floatingButton_1ijmf_18",HD="_badge_1ijmf_49",VD="_configBadge_1ijmf_66",GD="_configBadgeActive_1ijmf_76",KD="_configBadgeRevoked_1ijmf_82",qD="_configBadgeExpired_1ijmf_88",YD="_coreModal_1ijmf_97",ZD="_header_1ijmf_103",JD="_headerTitle_1ijmf_118",XD="_brandIcon_1ijmf_136",QD="_brandHomeButton_1ijmf_142",eM="_brandHomeStatic_1ijmf_143",tM="_brandCloudSuffix_1ijmf_169",rM="_projectSlash_1ijmf_174",nM="_projectNameGroup_1ijmf_180",aM="_projectNameGroupHidden_1ijmf_188",sM="_projectName_1ijmf_180",oM="_projectNameCopied_1ijmf_232",iM="_projectNameCopyFeedback_1ijmf_236",cM="_taskCountBadge_1ijmf_248",lM="_taskCountBadgeIcon_1ijmf_265",dM="_taskCountBadgeButton_1ijmf_269",uM="_taskCountBadgeActive_1ijmf_287",fM="_taskCountBadgeAlert_1ijmf_293",mM="_headerActions_1ijmf_299",pM="_sortDirectionBtn_1ijmf_306",hM="_sortDirectionBtnWidget_1ijmf_313",gM="_form_1ijmf_321",yM="_topRow_1ijmf_333",kM="_field_1ijmf_339",vM="_labelRow_1ijmf_345",wM="_label_1ijmf_345",bM="_manageLink_1ijmf_359",SM="_input_1ijmf_378",AM="_select_1ijmf_379",CM="_textarea_1ijmf_380",IM="_taskIdInlineLink_1ijmf_414",_M="_readOnly_1ijmf_433",TM="_selectWithConfig_1ijmf_441",xM="_configBtn_1ijmf_451",RM="_configBtnActive_1ijmf_481",PM="_hasPath_1ijmf_489",jM="_pathIndicator_1ijmf_494",EM="_formActions_1ijmf_500",NM="_hasCancel_1ijmf_507",DM="_submitBtn_1ijmf_511",MM="_cancelBtn_1ijmf_527",LM="_successMessage_1ijmf_559",OM="_errorMessage_1ijmf_565",BM="_successIcon_1ijmf_577",WM="_spinner_1ijmf_597",$M="_spin_1ijmf_597",FM="_boardRefreshIndicator_1ijmf_601",UM="_destructiveBtn_1ijmf_631",zM="_warningBtn_1ijmf_654",HM="_viewTab_1ijmf_677",VM="_loading_1ijmf_688",GM="_emptyState_1ijmf_694",KM="_taskList_1ijmf_704",qM="_referenceBadge_1ijmf_710",YM="_referenceBadgeLabel_1ijmf_731",ZM="_referenceBadgeStatic_1ijmf_740",JM="_provisionalReferenceBadge_1ijmf_754",XM="_copiedReference_1ijmf_776",QM="_highlight_1ijmf_788",e2="_modal_1ijmf_800",t2="_priorityEmoji_1ijmf_808",r2="_metaItem_1ijmf_812",n2="_taskFormDateInput_1ijmf_826",a2="_metaBadge_1ijmf_836",s2="_complexityPill_1ijmf_851",o2="_complexityDots_1ijmf_855",i2="_dot_1ijmf_861",c2="_dotFilled_1ijmf_869",l2="_typePill_1ijmf_875",d2="_type_bug_1ijmf_879",u2="_type_feature_1ijmf_883",f2="_type_chore_1ijmf_887",m2="_type_refactor_1ijmf_891",p2="_type_documentation_1ijmf_895",h2="_type_research_1ijmf_899",g2="_type_security_1ijmf_907",y2="_statusActionsGroup_1ijmf_911",k2="_statusActionsGroupCompact_1ijmf_917",v2="_statusSelectWrap_1ijmf_921",w2="_statusTaxonomyDropdownWrap_1ijmf_927",b2="_statusTaxonomyDropdown_1ijmf_927",S2="_statusTaxonomyDropdownCompact_1ijmf_935",A2="_statusTaxonomyDropdownIconOnly_1ijmf_939",C2="_taxonomyDropdownButton_1ijmf_944",I2="_taxonomyDropdownButtonContent_1ijmf_961",_2="_statusTaxonomyDropdownIconOnlyPanel_1ijmf_965",T2="_actionBtn_1ijmf_971",x2="_restoreTaskBtn_1ijmf_995",R2="_startWorkBtn_1ijmf_1004",P2="_workingBtn_1ijmf_1013",j2="_pulse_1ijmf_1",E2="_reviewBtn_1ijmf_1019",N2="_reviewActiveBtn_1ijmf_1029",D2="_reviewPill_1ijmf_1035",M2="_bulkArchiveBtn_1ijmf_1042",L2="_bulkDeleteBtn_1ijmf_1064",O2="_deleteBtn_1ijmf_1093",B2="_completeBtn_1ijmf_1105",W2="_completeActiveBtn_1ijmf_1115",$2="_deleteActiveBtn_1ijmf_1121",F2="_disabledBtn_1ijmf_1127",U2="_archiveList_1ijmf_1134",z2="_archiveHeader_1ijmf_1142",H2="_settingsTab_1ijmf_1153",V2="_settingsTabMcpOnly_1ijmf_1162",G2="_settingsTabs_1ijmf_1171",K2="_settingsLayout_1ijmf_1204",q2="_settingsLayoutMcpOnly_1ijmf_1211",Y2="_settingsSidebar_1ijmf_1217",Z2="_settingsSidebarHeader_1ijmf_1227",J2="_settingsSidebarNav_1ijmf_1236",X2="_settingsSidebarBtn_1ijmf_1245",Q2="_settingsSidebarBtnActive_1ijmf_1269",eL="_settingsSidebarGroup_1ijmf_1276",tL="_settingsSidebarGroupBtn_1ijmf_1282",rL="_settingsSidebarGroupLabel_1ijmf_1286",nL="_settingsSidebarGroupChevron_1ijmf_1290",aL="_settingsSidebarSubnav_1ijmf_1296",sL="_settingsSidebarSubBtn_1ijmf_1303",oL="_appScrollbar_1ijmf_1326",iL="_settingsTabBtn_1ijmf_1330",cL="_settingsTabBtnActive_1ijmf_1355",lL="_settingsContent_1ijmf_1384",dL="_mcpRegistrationHint_1ijmf_1408",uL="_mcpRegistrationPrompt_1ijmf_1419",fL="_mcpCodexTrustNote_1ijmf_1438",mL="_mcpCodexTrustHeader_1ijmf_1449",pL="_mcpCodexTrustTitle_1ijmf_1456",hL="_mcpCodexTrustCode_1ijmf_1462",gL="_mcpAuthRequiredCard_1ijmf_1477",yL="_mcpAuthRequiredIcon_1ijmf_1489",kL="_mcpAuthRequiredBody_1ijmf_1502",vL="_mcpAuthRequiredActions_1ijmf_1509",wL="_settingsToast_1ijmf_1553",bL="_settingsToastSuccess_1ijmf_1570",SL="_settingsToastError_1ijmf_1576",AL="_inputWithPrefix_1ijmf_1582",CL="_pathHint_1ijmf_1589",IL="_settingGroup_1ijmf_1602",_L="_taskCardSettingsLayout_1ijmf_1608",TL="_taskCardDependentSetting_1ijmf_1616",xL="_taskCardSettingWithHelp_1ijmf_1620",RL="_taskCardSettingHelp_1ijmf_1626",PL="_taskCardSettingsPreview_1ijmf_1633",jL="_taskCardSettingsPreviewFrame_1ijmf_1640",EL="_workspaceIdentity_1ijmf_1657",NL="_workspaceIdentityValueRow_1ijmf_1666",DL="_workspaceIdentityValue_1ijmf_1666",ML="_workspaceProfileForm_1ijmf_1682",LL="_workspaceProfileTextareaLabel_1ijmf_1689",OL="_workspaceProfileActions_1ijmf_1694",BL="_settingTitle_1ijmf_1718",WL="_settingTitleRow_1ijmf_1727",$L="_settingTitleActionBtn_1ijmf_1734",FL="_themeOptions_1ijmf_1754",UL="_buttonGrid_1ijmf_1759",zL="_themeBtn_1ijmf_1771",HL="_activeTheme_1ijmf_1795",VL="_pathInputGroup_1ijmf_1803",GL="_saveSettingsBtn_1ijmf_1812",KL="_shortcutInputWrapper_1ijmf_1833",qL="_inputIcon_1ijmf_1838",YL="_settingHelper_1ijmf_1847",ZL="_browseBtn_1ijmf_1854",JL="_inlineCategoryManager_1ijmf_1873",XL="_categoryManager_1ijmf_1884",QL="_categoryList_1ijmf_1890",eO="_categoryChip_1ijmf_1902",tO="_categoryChipLabel_1ijmf_1915",rO="_chipActionBtn_1ijmf_1923",nO="_removeCategoryBtn_1ijmf_1943",aO="_addCategoryForm_1ijmf_1963",sO="_addCategoryBtn_1ijmf_1968",oO="_filesList_1ijmf_1993",iO="_helpLink_1ijmf_2020",cO="_taskChildrenSummaryBadges_1ijmf_2039",lO="_taskChildrenProgressBar_1ijmf_2047",dO="_taskChildrenProgressBarSegmentDone_1ijmf_2058",uO="_taskChildrenProgressBarSegmentReview_1ijmf_2064",fO="_taskChildrenProgressBarSegmentInProgress_1ijmf_2070",mO="_taskChildrenProgressBarSegmentBlocked_1ijmf_2076",pO="_taskChildrenProgressText_1ijmf_2082",hO="_taskChildUnlinkBtn_1ijmf_2091",gO="_aboutText_1ijmf_2109",yO="_versionInfo_1ijmf_2116",kO="_filterBar_1ijmf_2124",vO="_kanbanHintText_1ijmf_2138",wO="_searchContainer_1ijmf_2144",bO="_searchIcon_1ijmf_2151",SO="_searchInput_1ijmf_2159",AO="_searchActive_1ijmf_2185",CO="_searchCount_1ijmf_2190",IO="_clearSearchBtn_1ijmf_2206",_O="_filterRow_1ijmf_2228",TO="_sortLabel_1ijmf_2234",xO="_archiveToggle_1ijmf_2242",RO="_filterContainer_1ijmf_2279",PO="_filterButton_1ijmf_2284",jO="_filterActive_1ijmf_2309",EO="_filterDropdown_1ijmf_2315",NO="_filterSearch_1ijmf_2330",DO="_filterSearchIcon_1ijmf_2338",MO="_filterSearchInput_1ijmf_2347",LO="_filterEmpty_1ijmf_2359",OO="_filterOption_1ijmf_2366",BO="_filterDivider_1ijmf_2396",WO="_filterSelect_1ijmf_2402",$O="_filterToggleBtn_1ijmf_2443",FO="_inProgressToggle_1ijmf_2465",UO="_activeInProgress_1ijmf_2483",zO="_activeFilter_1ijmf_2492",HO="_resetFiltersBtn_1ijmf_2502",VO="_categoryChip_disabled_1ijmf_2535",GO="_categoryVisibilityToggle_1ijmf_2545",KO="_editCategoryInput_1ijmf_2558",qO="_categoryChipActionBtn_1ijmf_2569",YO="_categoryChipActionBtn_active_1ijmf_2587",ZO="_categoryGroup_1ijmf_2592",JO="_categoryHeader_1ijmf_2600",XO="_categoryTitle_1ijmf_2614",QO="_categoryCount_1ijmf_2624",eB="_categoryItems_1ijmf_2630",tB="_selectPriority_low_1ijmf_2647",rB="_selectPriority_medium_1ijmf_2652",nB="_selectPriority_high_1ijmf_2657",aB="_selectPriority_critical_1ijmf_2662",sB="_levelSelect_1ijmf_2671",oB="_levelOption_1ijmf_2684",iB="_levelOptionFilled_1ijmf_2701",cB="_levelOption_priority_low_1ijmf_2708",lB="_levelOption_priority_medium_1ijmf_2713",dB="_levelOption_priority_high_1ijmf_2718",uB="_levelOption_priority_critical_1ijmf_2723",fB="_levelOption_complexity_tiny_1ijmf_2730",mB="_levelOption_complexity_low_1ijmf_2735",pB="_levelOption_complexity_medium_1ijmf_2740",hB="_levelOption_complexity_high_1ijmf_2745",gB="_levelOption_complexity_epic_1ijmf_2750",yB="_levelOptionActive_1ijmf_2757",kB="_levelOptionSelected_1ijmf_2762",vB="_levelLabel_1ijmf_2770",wB="_levelLabelFadeIn_1ijmf_1",bB="_closeConfigBtn_1ijmf_2795",SB="_configItem_1ijmf_2817",AB="_settingsLabel_1ijmf_2823",CB="_settingsHint_1ijmf_2832",IB="_pathList_1ijmf_2839",_B="_pathChip_1ijmf_2846",TB="_pathValid_1ijmf_2859",xB="_pathInvalid_1ijmf_2864",RB="_pathValidIcon_1ijmf_2869",PB="_pathInvalidIcon_1ijmf_2874",jB="_pathText_1ijmf_2879",EB="_removePathBtn_1ijmf_2886",NB="_pathCount_1ijmf_2908",DB="_specialistSection_1ijmf_2919",MB="_toggleHeading_1ijmf_2927",LB="_dropdownList_1ijmf_2967",OB="_specialistBadge_1ijmf_2976",BB="_iconGrid_1ijmf_3006",WB="_iconPickerBtn_1ijmf_3017",$B="_iconPickerBtnActive_1ijmf_3036",FB="_categorySubConfig_1ijmf_3043",UB="_colorPickerRow_1ijmf_3051",zB="_colorPickerGrid_1ijmf_3057",HB="_colorSwatch_1ijmf_3064",VB="_colorSwatchActive_1ijmf_3083",GB="_categoryChipIcon_1ijmf_3089",KB="_fieldIconWrapper_1ijmf_3094",qB="_fieldIcon_1ijmf_3094",YB="_field_dynamic_1ijmf_3116",ZB="_fieldIcon_dynamic_1ijmf_3122",JB="_categoryTitleIcon_1ijmf_3126",XB="_editActionsGroup_1ijmf_3131",QB="_stickyActionHeader_1ijmf_3138",eW="_taskNoticeAnchor_1ijmf_3155",tW="_taskHierarchyHeader_1ijmf_3161",rW="_taskHierarchyBadgeRow_1ijmf_3168",nW="_taskHierarchyDivider_1ijmf_3176",aW="_taskHierarchySegment_1ijmf_3182",sW="_taskHierarchyMeta_1ijmf_3189",oW="_taskHierarchyActionBtn_1ijmf_3202",iW="_taskWorkstreamPicker_1ijmf_3208",cW="_taskWorkstreamPickerIcon_1ijmf_3263",lW="_taskWorkstreamPickerPanel_1ijmf_3269",dW="_taskWorkstreamPickerOption_1ijmf_3273",uW="_taskSaveStatus_1ijmf_3295",fW="_taskSaveStatusCenter_1ijmf_3306",mW="_taskSaveStatusError_1ijmf_3314",pW="_primaryUpdateBtn_1ijmf_3318",hW="_secondaryHeaderBtn_1ijmf_3346",gW="_secondaryHeaderBtnDestructive_1ijmf_3367",yW="_attachmentCaptureContainer_1ijmf_3379",kW="_capturePrompt_1ijmf_3387",vW="_previewContainer_1ijmf_3401",wW="_previewHeader_1ijmf_3407",bW="_attachmentCapturePreview_1ijmf_3417",SW="_actions_1ijmf_3424",AW="_primaryButton_1ijmf_3430",CW="_secondaryButton_1ijmf_3445",IW="_iconButton_1ijmf_3460",_W="_attachmentGrid_1ijmf_3482",TW="_attachmentCard_1ijmf_3488",xW="_attachmentPreviewContainer_1ijmf_3502",RW="_attachmentPreviewButton_1ijmf_3519",PW="_contextFileLink_1ijmf_3537",jW="_attachmentActions_1ijmf_3563",EW="_attachmentActionBtn_1ijmf_3578",NW="_attachmentActionBtnActive_1ijmf_3600",DW="_attachmentCaptionInput_1ijmf_3606",MW="_documentAttachmentCaptionInput_1ijmf_3607",LW="_hiddenInput_1ijmf_3627",OW="_contextMenuControl_1ijmf_3631",BW="_contextMenu_1ijmf_3631",WW="_contextAddMenu_1ijmf_3677",$W="_contextActionsMenu_1ijmf_3682",FW="_attachmentImageActionsMenu_1ijmf_3686",UW="_contextDestructiveMenuItem_1ijmf_3695",zW="_contextContent_1ijmf_3699",HW="_contextContentDropActive_1ijmf_3709",VW="_contextDropOverlay_1ijmf_3713",GW="_contextLinkComposer_1ijmf_3730",KW="_contextEmptyState_1ijmf_3737",qW="_contextGroupLabel_1ijmf_3747",YW="_contextNotice_1ijmf_3756",ZW="_contextCaptionEditor_1ijmf_3761",JW="_attachmentCaptionLabel_1ijmf_3769",XW="_documentAttachmentList_1ijmf_3795",QW="_documentAttachmentItem_1ijmf_3801",e$="_documentAttachmentRow_1ijmf_3807",t$="_documentAttachmentLink_1ijmf_3816",r$="_documentAttachmentMain_1ijmf_3830",n$="_documentAttachmentReference_1ijmf_3838",a$="_documentAttachmentName_1ijmf_3843",s$="_brokenImage_1ijmf_3852",o$="_brokenImagePlaceholder_1ijmf_3860",i$="_regionOverlay_1ijmf_3874",c$="_selectionBox_1ijmf_3885",l$="_exportRow_1ijmf_3893",d$="_exportItem_1ijmf_3898",u$="_taxonomyDrillDown_1ijmf_3907",f$="_drillDownList_1ijmf_3917",m$="_drillDownSection_1ijmf_3925",p$="_drillDownSectionHeader_1ijmf_3931",h$="_drillDownSectionTitle_1ijmf_3938",g$="_drillDownItem_1ijmf_3947",y$="_drillDownItemDimmed_1ijmf_3969",k$="_drillDownItemActive_1ijmf_3977",v$="_drillDownItemInfo_1ijmf_3982",w$="_drillDownItemText_1ijmf_3988",b$="_drillDownItemLabel_1ijmf_3993",S$="_drillDownItemSubtext_1ijmf_3998",A$="_addTaxonomyBtnSmall_1ijmf_4003",C$="_taxonomyDetailView_1ijmf_4025",I$="_slideIn_1ijmf_1",_$="_detailHeader_1ijmf_4045",T$="_detailTitle_1ijmf_4054",x$="_detailContent_1ijmf_4061",R$="_createOverlay_1ijmf_4068",P$="_createDialog_1ijmf_4080",j$="_zoomIn_1ijmf_1",E$="_dialogActions_1ijmf_4108",N$="_settingsGroup_1ijmf_4126",D$="_settingsItem_1ijmf_4132",M$="_mcpHealthCompactAlert_1ijmf_4138",L$="_mcpHealthUpdateRow_1ijmf_4139",O$="_mcpHealthBlockingAlert_1ijmf_4140",B$="_mcpHealthUpdateIcon_1ijmf_4168",W$="_mcpHealthCompactBody_1ijmf_4174",$$="_mcpHealthCompactActions_1ijmf_4191",F$="_mcpHealthStableAction_1ijmf_4197",U$="_mcpUpdateDialog_1ijmf_4202",z$="_mcpUpdateDialogIntro_1ijmf_4211",H$="_mcpUpdateRestartGuidance_1ijmf_4212",V$="_mcpUpdateVersionGrid_1ijmf_4219",G$="_mcpUpdateDiagnostics_1ijmf_4235",K$="_mcpUpdateLoading_1ijmf_4251",q$="_mcpUpdateNotice_1ijmf_4252",Y$="_mcpUpdateCommands_1ijmf_4267",Z$="_mcpUpdateSectionLabel_1ijmf_4273",J$="_mcpHealthCommandRow_1ijmf_4279",X$="_mcpHealthCommand_1ijmf_4279",Q$="_mcpUpdateDialogActions_1ijmf_4322",e3="_mcpHealthCopyError_1ijmf_4328",t3="_settingLabelGroup_1ijmf_4362",r3="_settingLabel_1ijmf_4362",n3="_settingDescription_1ijmf_4374",a3="_settingInput_1ijmf_4381",s3="_codeBlockWrapper_1ijmf_4404",o3="_codeHeader_1ijmf_4413",i3="_codeHeaderActions_1ijmf_4424",c3="_codeLabel_1ijmf_4431",l3="_codeHeaderDescription_1ijmf_4439",d3="_mcpTokenCardBody_1ijmf_4447",u3="_mcpTokenFormGrid_1ijmf_4455",f3="_mcpTokenOutputWrap_1ijmf_4462",m3="_mcpTokenValueField_1ijmf_4469",p3="_mcpTokenValueText_1ijmf_4479",h3="_mcpTokenValueInput_1ijmf_4492",g3="_mcpTokenActionRow_1ijmf_4497",y3="_settingsCodeBlock_1ijmf_4505",k3="_copyBtn_1ijmf_4523",v3="_copyBtnActive_1ijmf_4544",w3="_copyBtnNeutralActive_1ijmf_4550",b3="_headerDivider_1ijmf_4568",S3="_groupByContainer_1ijmf_4574",A3="_groupByLabel_1ijmf_4582",C3="_groupBySelect_1ijmf_4587",I3="_viewSwitcher_1ijmf_4609",_3="_selectWithIcon_1ijmf_4617",T3="_marginBottom16_1ijmf_4621",x3="_headerDraggable_1ijmf_4626",R3="_headerDragging_1ijmf_4630",P3="_filterSelectSort_1ijmf_4638",j3="_archiveRow_1ijmf_4642",E3="_taskScopeToggle_1ijmf_4648",N3="_taskScopeTabs_1ijmf_4661",D3="_taskScopeTab_1ijmf_4661",M3="_taskScopeTabActive_1ijmf_4706",L3="_taskToolbarAction_1ijmf_4714",O3="_overlayHighZ_1ijmf_4730",B3="_savedText_1ijmf_4740",W3="_shortcutInput_1ijmf_1833",$3="_saveSettingsBtnWrapper_1ijmf_4748",F3="_marginBottom12_1ijmf_4752",U3="_exportRowGrid_1ijmf_4756",z3="_settingSubtitleCustom_1ijmf_4761",H3="_capitalize_1ijmf_4767",V3="_marginTop12_1ijmf_4771",G3="_marginTop16_1ijmf_4775",K3="_labelGroupFlex_1ijmf_4779",q3="_codeBlockWrapperCustom_1ijmf_4785",Y3="_kanbanWrapper_1ijmf_4791",Z3="_kanbanContainer_1ijmf_4799",J3="_kanbanTopScroll_1ijmf_4821",X3="_kanbanTopScrollSpacer_1ijmf_4830",Q3="_kanbanColumn_1ijmf_4834",eF="_kanbanColumnSticky_1ijmf_4850",tF="_kanbanColumnCollapsed_1ijmf_4856",rF="_kanbanColumnPast_1ijmf_4861",nF="_kanbanColumnSelectedDay_1ijmf_4866",aF="_kanbanHeader_1ijmf_4873",sF="_kanbanCount_1ijmf_4883",oF="_kanbanHeaderDraggable_1ijmf_4903",iF="_kanbanHeaderPanning_1ijmf_4907",cF="_kanbanQuickAdd_1ijmf_4911",lF="_kanbanColorDot_1ijmf_4932",dF="_kanbanDroppable_1ijmf_4944",uF="_kanbanDroppableScroll_1ijmf_4953",fF="_kanbanDroppableScrollVirtualized_1ijmf_4963",mF="_kanbanVirtualCanvas_1ijmf_4969",pF="_kanbanVirtualRow_1ijmf_4974",hF="_kanbanEmpty_1ijmf_4980",gF="_kanbanCard_1ijmf_4990",yF="_kanbanCardWrapper_1ijmf_5000",kF="_taxonomyDropdownActive_1ijmf_5008",vF="_kanbanCardWrapperRaised_1ijmf_5012",wF="_kanbanCardTitle_1ijmf_5016",bF="_kanbanBadges_1ijmf_5020",SF="_kanbanBadge_1ijmf_5020",AF="_headerFlex_1ijmf_5036",CF="_marginBottom8_1ijmf_5043",IF="_marginBottom20_1ijmf_5047",_F="_configPanel_1ijmf_5051",TF="_configPanelLarge_1ijmf_5060",xF="_subLabelBlock_1ijmf_5064",RF="_subLabelBlock12_1ijmf_5071",PF="_flexBetween_1ijmf_5075",jF="_flexBetweenCenter_1ijmf_5082",EF="_deleteBtnSmall_1ijmf_5087",NF="_deleteBtnMedium_1ijmf_5093",DF="_trashIcon_1ijmf_5100",MF="_gridConfig_1ijmf_5104",LF="_flexColGap4_1ijmf_5111",OF="_flexColGap4Center_1ijmf_5117",BF="_flex1_1ijmf_5124",WF="_flexCol_1ijmf_5111",$F="_flexGrow1_1ijmf_5134",FF="_inputLabel_1ijmf_5138",UF="_inputLabelBlock_1ijmf_5142",zF="_checkboxInput_1ijmf_5148",HF="_configDividerMargin_1ijmf_5154",VF="_configDividerMargin24_1ijmf_5159",GF="_pathListMargin_1ijmf_5164",KF="_cancelBtnRed_1ijmf_5168",qF="_code_1ijmf_4404",YF="_workflowList_1ijmf_5195",ZF="_workflowActions_1ijmf_5203",JF="_textBtn_1ijmf_5212",XF="_workflowGrid_1ijmf_5226",QF="_checkboxLabel_1ijmf_5234",e4="_checkboxSmall_1ijmf_5248",t4="_docWorkspace_1ijmf_5267",r4="_docIndexPanel_1ijmf_5278",n4="_docWorkspaceTrayMode_1ijmf_5290",a4="_docViewerPanel_1ijmf_5290",s4="_docWorkspaceTrayOpen_1ijmf_5295",o4="_docTrayPanel_1ijmf_5299",i4="_docTrayPanelOpen_1ijmf_5323",c4="_docSpinning_1ijmf_5331",l4="_docSpin_1ijmf_5331",d4="_docViewerEmpty_1ijmf_5350",u4="_agentsModuleRoot_1ijmf_5365",f4="_agentsModuleWithTray_1ijmf_5377",m4="_agentsModuleTrayOpen_1ijmf_5381",p4="_agentTrayPanel_1ijmf_5385",h4="_agentTrayPanelOpen_1ijmf_5408",g4="_agentTrayHeader_1ijmf_5416",y4="_agentTrayTitle_1ijmf_5431",k4="_agentTrayContent_1ijmf_5443",v4="_agentTrayContentInner_1ijmf_5451",w4="_agentsModuleContent_1ijmf_5455",b4="_taskforceAgentsModuleRoot_1ijmf_5463",S4="_taskforceAgentsModuleMain_1ijmf_5474",A4="_taskforceAgentsModuleTrayOpen_1ijmf_5482",C4="_taskforceAgentRosterHeader_1ijmf_5486",I4="_taskforceAgentRosterTitle_1ijmf_5499",_4="_taskforceAgentRosterContent_1ijmf_5511",T4="_taskforceAgentLibraryPortal_1ijmf_5519",x4="_taskforceAgentBuilderNavigation_1ijmf_5525",R4="_taskforceAgentBuilderTabs_1ijmf_5548",P4="_taskforceAgentBuilderCreateBtn_1ijmf_5565",j4="_taskforceAgentBuilderTab_1ijmf_5548",E4="_taskforceAgentBuilderTabActive_1ijmf_5606",N4="_taskforceAgentBuilderPanel_1ijmf_5624",D4="_taskforceModelConnectionsRoot_1ijmf_5632",M4="_taskforceModelConnectionsRootExternalLibrary_1ijmf_5639",L4="_taskforceModelConnectionsWorkspace_1ijmf_5643",O4="_taskforceModelConnectionsHeader_1ijmf_5653",B4="_taskforceModelConnectionCardHeader_1ijmf_5654",W4="_taskforceModelConnectionActions_1ijmf_5655",$4="_taskforceModelConnectionCodeRow_1ijmf_5656",F4="_taskforceAgentConnectionControlHeader_1ijmf_5657",U4="_taskforceAgentConnectionBindingRow_1ijmf_5658",z4="_taskforceAgentConnectionCallout_1ijmf_5659",H4="_taskforceModelConnectionNameRow_1ijmf_5679",V4="_taskforceModelConnectionNameEditor_1ijmf_5680",G4="_taskforceModelConnectionIdentity_1ijmf_5687",K4="_taskforceModelConnectionIdentityText_1ijmf_5693",q4="_taskforceModelConnectionLogo_1ijmf_5699",Y4="_taskforceModelConnectionCard_1ijmf_5654",Z4="_taskforceAgentConnectionControl_1ijmf_5657",J4="_taskforceModelConnectionLogin_1ijmf_5739",X4="_taskforceModelConnectionsEmpty_1ijmf_5754",Q4="_taskforceModelConnectionMeta_1ijmf_5760",e5="_taskforceModelConnectionsLoading_1ijmf_5788",t5="_taskforceAgentTestError_1ijmf_5851",r5="_taskforceAgentTestNotice_1ijmf_5852",n5="_taskforceAgentBuilderEmpty_1ijmf_5872",a5="_taskforceAgentBuilderEmptyIcon_1ijmf_5881",s5="_taskforceAgentTestGrid_1ijmf_5893",o5="_taskforceAgentContextBanner_1ijmf_5900",i5="_taskforceAgentContextActions_1ijmf_5919",c5="_taskforceAssistantWorkspace_1ijmf_5943",l5="_taskforceAssistantWorkspaceContent_1ijmf_5953",d5="_taskforceAssistantWorkspaceOpen_1ijmf_5962",u5="_taskforceAssistantWorkspaceCollapsed_1ijmf_5966",f5="_taskforceModalWithAssistantPanel_1ijmf_5970",m5="_taskforceModalWithAssistantPanelCollapsed_1ijmf_5975",p5="_taskforceTaskModalOverlay_1ijmf_5979",h5="_taskforceAgentDrawerOverlay_1ijmf_6000",g5="_taskforceAgentDrawerOverlayCollapsed_1ijmf_6010",y5="_taskforceAgentDrawerPanel_1ijmf_6014",k5="_taskforceAgentDrawerHeader_1ijmf_6026",v5="_taskforceAgentDrawerAgentHeader_1ijmf_6036",w5="_taskforceAgentDrawerHeaderFallback_1ijmf_6037",b5="_taskforceAgentDrawerAgentAvatar_1ijmf_6045",S5="_taskforceAgentDrawerFallbackAvatar_1ijmf_6046",A5="_taskforceAgentDrawerAgentAvatarButton_1ijmf_6068",C5="_taskforceAgentDrawerAgentPicker_1ijmf_6092",I5="_taskforceAgentDrawerHeaderActions_1ijmf_6112",_5="_taskforceAgentDrawerLoading_1ijmf_6118",T5="_taskforceAgentDrawerSurface_1ijmf_6126",x5="_taskforceAgentDrawerControls_1ijmf_6136",R5="_taskforceAgentProfileTray_1ijmf_6143",P5="_taskforceAgentProfileTrayIn_1ijmf_1",j5="_taskforceAgentProfileTrayHeader_1ijmf_6155",E5="_taskforceAgentProfileTrayIdentity_1ijmf_6163",N5="_taskforceAgentProfileTrayDetails_1ijmf_6171",D5="_taskforceAgentDrawerChatControls_1ijmf_6237",M5="_taskforceAgentConversationRename_1ijmf_6245",L5="_taskforceAgentConversationRenameError_1ijmf_6257",O5="_taskforceAgentDrawerConversationList_1ijmf_6264",B5="_taskforceAgentDrawerPrompt_1ijmf_6270",W5="_taskforceAgentDrawerPromptStatus_1ijmf_6290",$5="_taskforceAgentDrawerMetrics_1ijmf_6298",F5="_taskforceAgentOutputStack_1ijmf_6323",U5="_taskforceAgentHeaderTestPanel_1ijmf_6330",z5="_taskforceAgentTestComposer_1ijmf_6341",H5="_taskforceAgentTestSendButton_1ijmf_6353",V5="_taskforceAgentTestPending_1ijmf_6361",G5="_taskforceAgentRetryButton_1ijmf_6390",K5="_taskforceAgentTestRestriction_1ijmf_6399",q5="_taskforceAgentTestResult_1ijmf_6406",Y5="_taskforceAgentTestResultHeader_1ijmf_6416",Z5="_taskforceAgentTestResponse_1ijmf_6434",J5="_taskforceAgentReadonlyField_1ijmf_6450",X5="_taskforceAgentAvatarPanel_1ijmf_6463",Q5="_taskforceAgentAvatarEditControl_1ijmf_6475",eU="_taskforceAgentAvatarPreview_1ijmf_6481",tU="_taskforceAgentListAvatar_1ijmf_6482",rU="_taskforceAgentAvatarSyncing_1ijmf_6507",nU="_taskforceAgentAvatarSyncIcon_1ijmf_6511",aU="_taskforceAgentAvatarCopy_1ijmf_6524",sU="_taskforceAgentAvatarRole_1ijmf_6542",oU="_taskforceAgentToolbar_1ijmf_6562",iU="_taskforceAgentConversationSelect_1ijmf_6572",cU="_taskforceAgentList_1ijmf_6482",lU="_taskforceAgentListEmpty_1ijmf_6589",dU="_taskforceAgentSignatureColorField_1ijmf_6596",uU="_aiProfileColorPicker_1ijmf_6604",fU="_taskforceAgentBehaviorGrid_1ijmf_6609",mU="_taskforceAgentBehaviorWide_1ijmf_6615",pU="_taskforceAgentFieldHelper_1ijmf_6619",hU="_taskforceAgentPresentationGroup_1ijmf_6626",gU="_taskforceAgentLogList_1ijmf_6641",yU="_taskforceAgentLogEntry_1ijmf_6647",kU="_taskforceAgentToolDetails_1ijmf_6658",vU="_taskforceAgentToolActivity_1ijmf_6672",wU="_taskforceAgentToolActivityList_1ijmf_6700",bU="_taskforceAgentToolCall_1ijmf_6707",SU="_taskforceAgentToolCallFailed_1ijmf_6723",AU="_taskforceAgentToolCallName_1ijmf_6727",CU="_taskforceAgentToolCallStatus_1ijmf_6737",IU="_taskforceAgentToolDetailsGrid_1ijmf_6743",_U="_taskforceAgentToolCopyButton_1ijmf_6754",TU="_taskforceAgentLogSuccess_1ijmf_6806",xU="_taskforceAgentLogError_1ijmf_6810",RU="_taskforceAgentLogTime_1ijmf_6814",PU="_taskforceAgentConversationList_1ijmf_6820",jU="_taskforceAgentConversationBody_1ijmf_6839",EU="_taskforceAgentConversationMessage_1ijmf_6840",NU="_taskforceAgentConversationEmpty_1ijmf_6845",DU="_taskforceAgentConversationMessageUser_1ijmf_6886",MU="_taskforceAgentConversationMessageAssistant_1ijmf_6898",LU="_taskforceAgentMetaGrid_1ijmf_6913",OU="_marginTop24_1ijmf_6941",BU="_settingSubTitle_1ijmf_6945",WU="_dangerBtn_1ijmf_6954",$U="_aiProfilesExplorer_1ijmf_6970",FU="_aiProfilesRosterPanel_1ijmf_6979",UU="_aiProfilesRosterSummary_1ijmf_6990",zU="_aiProfileSeatSummary_1ijmf_6999",HU="_aiProfilesRosterState_1ijmf_7003",VU="_aiProfilesListPane_1ijmf_7015",GU="_aiProfilesList_1ijmf_7015",KU="_aiProfilesDetailViewport_1ijmf_7035",qU="_aiProfilesSection_1ijmf_7042",YU="_aiProfilesSectionHeader_1ijmf_7048",ZU="_aiProfileGroup_1ijmf_7056",JU="_aiProfileGroupSelected_1ijmf_7079",XU="_aiProfileGroupDuplicate_1ijmf_7086",QU="_aiProfileGroupHeader_1ijmf_7091",e6="_aiProfileGroupAvatar_1ijmf_7099",t6="_aiProfileGroupAvatarLogo_1ijmf_7121",r6="_aiProfileGroupIdentity_1ijmf_7133",n6="_aiProfileName_1ijmf_7142",a6="_aiProfileHandle_1ijmf_7150",s6="_aiProfileRole_1ijmf_7151",o6="_aiProfileSeatScopeIcon_1ijmf_7171",i6="_aiProfileGroupSignatureSwatch_1ijmf_7182",c6="_aiProfileSeatScopeIconDetail_1ijmf_7188",l6="_aiProfileSeatScopeIconCloud_1ijmf_7193",d6="_aiProfileSeatScopeIconLocal_1ijmf_7197",u6="_aiProfileDuplicateBadge_1ijmf_7201",f6="_aiProfileMergeSection_1ijmf_7213",m6="_aiProfileMergeRow_1ijmf_7220",p6="_aiProfileIdChip_1ijmf_7227",h6="_aiProfileKeepBadge_1ijmf_7239",g6="_aiProfileMergeActions_1ijmf_7253",y6="_aiProfileDetailPane_1ijmf_7260",k6="_aiProfileDetailCard_1ijmf_7266",v6="_aiProfileDetailHero_1ijmf_7279",w6="_aiProfileDetailIcon_1ijmf_7285",b6="_aiProfileDetailAvatar_1ijmf_7299",S6="_aiProfileDetailAvatarLogo_1ijmf_7303",A6="_aiProfileDetailHeading_1ijmf_7321",C6="_aiProfileDetailTitleRow_1ijmf_7326",I6="_aiProfileDetailTitle_1ijmf_7326",_6="_aiProfileDetailMetaRow_1ijmf_7341",T6="_aiProfileDetailHandle_1ijmf_7349",x6="_aiProfileDetailRole_1ijmf_7354",R6="_aiProfileDetailLinkedCount_1ijmf_7361",P6="_aiProfileDetailDescription_1ijmf_7366",j6="_aiProfileSignatureColor_1ijmf_7373",E6="_aiProfileSignatureSwatch_1ijmf_7383",N6="_aiProfileSignatureColorButton_1ijmf_7401",D6="_aiProfileColorOption_1ijmf_7428",M6="_aiProfileDetailDataList_1ijmf_7442",L6="_aiProfileDetailDataGroup_1ijmf_7451",O6="_aiProfileDetailDateGroup_1ijmf_7458",B6="_aiProfileDetailDataRow_1ijmf_7463",W6="_aiProfileDetailDataLabel_1ijmf_7472",$6="_aiProfileDetailDataValue_1ijmf_7479",F6="_aiProfileStatusSelect_1ijmf_7485",U6="_aiProfileInstanceSection_1ijmf_7527",z6="_aiProfileInstanceSectionHeader_1ijmf_7533",H6="_aiProfileInstanceList_1ijmf_7543",V6="_aiProfileInstanceCard_1ijmf_7549",G6="_aiProfileIdFooter_1ijmf_7562",K6="_aiProfileIdFooterValue_1ijmf_7572",q6="_aiProfileDangerTextButton_1ijmf_7582",Y6="_aiProfileInstanceTopRow_1ijmf_7614",Z6="_aiProfileInstanceName_1ijmf_7621",J6="_aiProfileInstanceMeta_1ijmf_7628",X6="_aiProfileInlineError_1ijmf_7636",P={filterGlow:UD,floatingButton:zD,badge:HD,configBadge:VD,configBadgeActive:GD,configBadgeRevoked:KD,configBadgeExpired:qD,coreModal:YD,header:ZD,headerTitle:JD,brandIcon:XD,brandHomeButton:QD,brandHomeStatic:eM,brandCloudSuffix:tM,projectSlash:rM,projectNameGroup:nM,projectNameGroupHidden:aM,projectName:sM,projectNameCopied:oM,projectNameCopyFeedback:iM,taskCountBadge:cM,taskCountBadgeIcon:lM,taskCountBadgeButton:dM,taskCountBadgeActive:uM,taskCountBadgeAlert:fM,headerActions:mM,sortDirectionBtn:pM,sortDirectionBtnWidget:hM,form:gM,topRow:yM,field:kM,labelRow:vM,label:wM,manageLink:bM,input:SM,select:AM,textarea:CM,taskIdInlineLink:IM,readOnly:_M,selectWithConfig:TM,configBtn:xM,configBtnActive:RM,hasPath:PM,pathIndicator:jM,formActions:EM,hasCancel:NM,submitBtn:DM,cancelBtn:MM,successMessage:LM,errorMessage:OM,successIcon:BM,spinner:WM,spin:$M,boardRefreshIndicator:FM,destructiveBtn:UM,warningBtn:zM,viewTab:HM,loading:VM,emptyState:GM,taskList:KM,referenceBadge:qM,referenceBadgeLabel:YM,referenceBadgeStatic:ZM,provisionalReferenceBadge:JM,copiedReference:XM,highlight:QM,modal:e2,priorityEmoji:t2,metaItem:r2,taskFormDateInput:n2,metaBadge:a2,complexityPill:s2,complexityDots:o2,dot:i2,dotFilled:c2,typePill:l2,type_bug:d2,type_feature:u2,type_chore:f2,type_refactor:m2,type_documentation:p2,type_research:h2,"type_ui-ux":"_type_ui-ux_1ijmf_903",type_security:g2,statusActionsGroup:y2,statusActionsGroupCompact:k2,statusSelectWrap:v2,statusTaxonomyDropdownWrap:w2,statusTaxonomyDropdown:b2,statusTaxonomyDropdownCompact:S2,statusTaxonomyDropdownIconOnly:A2,taxonomyDropdownButton:C2,taxonomyDropdownButtonContent:I2,statusTaxonomyDropdownIconOnlyPanel:_2,actionBtn:T2,restoreTaskBtn:x2,startWorkBtn:R2,workingBtn:P2,pulse:j2,reviewBtn:E2,reviewActiveBtn:N2,reviewPill:D2,bulkArchiveBtn:M2,bulkDeleteBtn:L2,deleteBtn:O2,completeBtn:B2,completeActiveBtn:W2,deleteActiveBtn:$2,disabledBtn:F2,archiveList:U2,archiveHeader:z2,settingsTab:H2,settingsTabMcpOnly:V2,settingsTabs:G2,settingsLayout:K2,settingsLayoutMcpOnly:q2,settingsSidebar:Y2,settingsSidebarHeader:Z2,settingsSidebarNav:J2,settingsSidebarBtn:X2,settingsSidebarBtnActive:Q2,settingsSidebarGroup:eL,settingsSidebarGroupBtn:tL,settingsSidebarGroupLabel:rL,settingsSidebarGroupChevron:nL,settingsSidebarSubnav:aL,settingsSidebarSubBtn:sL,appScrollbar:oL,settingsTabBtn:iL,settingsTabBtnActive:cL,settingsContent:lL,mcpRegistrationHint:dL,mcpRegistrationPrompt:uL,mcpCodexTrustNote:fL,mcpCodexTrustHeader:mL,mcpCodexTrustTitle:pL,mcpCodexTrustCode:hL,mcpAuthRequiredCard:gL,mcpAuthRequiredIcon:yL,mcpAuthRequiredBody:kL,mcpAuthRequiredActions:vL,settingsToast:wL,settingsToastSuccess:bL,settingsToastError:SL,inputWithPrefix:AL,pathHint:CL,settingGroup:IL,taskCardSettingsLayout:_L,taskCardDependentSetting:TL,taskCardSettingWithHelp:xL,taskCardSettingHelp:RL,taskCardSettingsPreview:PL,taskCardSettingsPreviewFrame:jL,workspaceIdentity:EL,workspaceIdentityValueRow:NL,workspaceIdentityValue:DL,workspaceProfileForm:ML,workspaceProfileTextareaLabel:LL,workspaceProfileActions:OL,settingTitle:BL,settingTitleRow:WL,settingTitleActionBtn:$L,themeOptions:FL,buttonGrid:UL,themeBtn:zL,activeTheme:HL,pathInputGroup:VL,saveSettingsBtn:GL,shortcutInputWrapper:KL,inputIcon:qL,settingHelper:YL,browseBtn:ZL,inlineCategoryManager:JL,categoryManager:XL,categoryList:QL,categoryChip:eO,categoryChipLabel:tO,chipActionBtn:rO,removeCategoryBtn:nO,addCategoryForm:aO,addCategoryBtn:sO,filesList:oO,helpLink:iO,taskChildrenSummaryBadges:cO,taskChildrenProgressBar:lO,taskChildrenProgressBarSegmentDone:dO,taskChildrenProgressBarSegmentReview:uO,taskChildrenProgressBarSegmentInProgress:fO,taskChildrenProgressBarSegmentBlocked:mO,taskChildrenProgressText:pO,taskChildUnlinkBtn:hO,aboutText:gO,versionInfo:yO,filterBar:kO,kanbanHintText:vO,searchContainer:wO,searchIcon:bO,searchInput:SO,searchActive:AO,searchCount:CO,clearSearchBtn:IO,filterRow:_O,sortLabel:TO,archiveToggle:xO,filterContainer:RO,filterButton:PO,filterActive:jO,filterDropdown:EO,filterSearch:NO,filterSearchIcon:DO,filterSearchInput:MO,filterEmpty:LO,filterOption:OO,filterDivider:BO,filterSelect:WO,filterToggleBtn:$O,inProgressToggle:FO,activeInProgress:UO,activeFilter:zO,resetFiltersBtn:HO,categoryChip_disabled:VO,categoryVisibilityToggle:GO,editCategoryInput:KO,categoryChipActionBtn:qO,categoryChipActionBtn_active:YO,categoryGroup:ZO,categoryHeader:JO,categoryTitle:XO,categoryCount:QO,categoryItems:eB,selectPriority_low:tB,selectPriority_medium:rB,selectPriority_high:nB,selectPriority_critical:aB,"critical-glow":"_critical-glow_1ijmf_1",levelSelect:sB,levelOption:oB,levelOptionFilled:iB,levelOption_priority_low:cB,levelOption_priority_medium:lB,levelOption_priority_high:dB,levelOption_priority_critical:uB,levelOption_complexity_tiny:fB,levelOption_complexity_low:mB,levelOption_complexity_medium:pB,levelOption_complexity_high:hB,levelOption_complexity_epic:gB,levelOptionActive:yB,levelOptionSelected:kB,levelLabel:vB,levelLabelFadeIn:wB,closeConfigBtn:bB,configItem:SB,settingsLabel:AB,settingsHint:CB,pathList:IB,pathChip:_B,pathValid:TB,pathInvalid:xB,pathValidIcon:RB,pathInvalidIcon:PB,pathText:jB,removePathBtn:EB,pathCount:NB,specialistSection:DB,toggleHeading:MB,dropdownList:LB,specialistBadge:OB,iconGrid:BB,iconPickerBtn:WB,iconPickerBtnActive:$B,categorySubConfig:FB,colorPickerRow:UB,colorPickerGrid:zB,colorSwatch:HB,colorSwatchActive:VB,categoryChipIcon:GB,fieldIconWrapper:KB,fieldIcon:qB,field_dynamic:YB,fieldIcon_dynamic:ZB,categoryTitleIcon:JB,editActionsGroup:XB,stickyActionHeader:QB,taskNoticeAnchor:eW,taskHierarchyHeader:tW,taskHierarchyBadgeRow:rW,taskHierarchyDivider:nW,taskHierarchySegment:aW,taskHierarchyMeta:sW,taskHierarchyActionBtn:oW,taskWorkstreamPicker:iW,taskWorkstreamPickerIcon:cW,taskWorkstreamPickerPanel:lW,taskWorkstreamPickerOption:dW,taskSaveStatus:uW,taskSaveStatusCenter:fW,taskSaveStatusError:mW,primaryUpdateBtn:pW,secondaryHeaderBtn:hW,secondaryHeaderBtnDestructive:gW,attachmentCaptureContainer:yW,capturePrompt:kW,previewContainer:vW,previewHeader:wW,attachmentCapturePreview:bW,actions:SW,primaryButton:AW,secondaryButton:CW,iconButton:IW,attachmentGrid:_W,attachmentCard:TW,attachmentPreviewContainer:xW,attachmentPreviewButton:RW,contextFileLink:PW,attachmentActions:jW,attachmentActionBtn:EW,attachmentActionBtnActive:NW,attachmentCaptionInput:DW,documentAttachmentCaptionInput:MW,hiddenInput:LW,contextMenuControl:OW,contextMenu:BW,contextAddMenu:WW,contextActionsMenu:$W,attachmentImageActionsMenu:FW,contextDestructiveMenuItem:UW,contextContent:zW,contextContentDropActive:HW,contextDropOverlay:VW,contextLinkComposer:GW,contextEmptyState:KW,contextGroupLabel:qW,contextNotice:YW,contextCaptionEditor:ZW,attachmentCaptionLabel:JW,documentAttachmentList:XW,documentAttachmentItem:QW,documentAttachmentRow:e$,documentAttachmentLink:t$,documentAttachmentMain:r$,documentAttachmentReference:n$,documentAttachmentName:a$,brokenImage:s$,brokenImagePlaceholder:o$,regionOverlay:i$,selectionBox:c$,exportRow:l$,exportItem:d$,taxonomyDrillDown:u$,drillDownList:f$,drillDownSection:m$,drillDownSectionHeader:p$,drillDownSectionTitle:h$,drillDownItem:g$,drillDownItemDimmed:y$,drillDownItemActive:k$,drillDownItemInfo:v$,drillDownItemText:w$,drillDownItemLabel:b$,drillDownItemSubtext:S$,addTaxonomyBtnSmall:A$,taxonomyDetailView:C$,slideIn:I$,detailHeader:_$,detailTitle:T$,detailContent:x$,createOverlay:R$,createDialog:P$,zoomIn:j$,dialogActions:E$,settingsGroup:N$,settingsItem:D$,mcpHealthCompactAlert:M$,mcpHealthUpdateRow:L$,mcpHealthBlockingAlert:O$,mcpHealthUpdateIcon:B$,mcpHealthCompactBody:W$,mcpHealthCompactActions:$$,mcpHealthStableAction:F$,mcpUpdateDialog:U$,mcpUpdateDialogIntro:z$,mcpUpdateRestartGuidance:H$,mcpUpdateVersionGrid:V$,mcpUpdateDiagnostics:G$,mcpUpdateLoading:K$,mcpUpdateNotice:q$,mcpUpdateCommands:Y$,mcpUpdateSectionLabel:Z$,mcpHealthCommandRow:J$,mcpHealthCommand:X$,mcpUpdateDialogActions:Q$,mcpHealthCopyError:e3,settingLabelGroup:t3,settingLabel:r3,settingDescription:n3,settingInput:a3,codeBlockWrapper:s3,codeHeader:o3,codeHeaderActions:i3,codeLabel:c3,codeHeaderDescription:l3,mcpTokenCardBody:d3,mcpTokenFormGrid:u3,mcpTokenOutputWrap:f3,mcpTokenValueField:m3,mcpTokenValueText:p3,mcpTokenValueInput:h3,mcpTokenActionRow:g3,settingsCodeBlock:y3,copyBtn:k3,copyBtnActive:v3,copyBtnNeutralActive:w3,headerDivider:b3,groupByContainer:S3,groupByLabel:A3,groupBySelect:C3,viewSwitcher:I3,selectWithIcon:_3,marginBottom16:T3,headerDraggable:x3,headerDragging:R3,filterSelectSort:P3,archiveRow:j3,taskScopeToggle:E3,taskScopeTabs:N3,taskScopeTab:D3,taskScopeTabActive:M3,taskToolbarAction:L3,overlayHighZ:O3,savedText:B3,shortcutInput:W3,saveSettingsBtnWrapper:$3,marginBottom12:F3,exportRowGrid:U3,settingSubtitleCustom:z3,capitalize:H3,marginTop12:V3,marginTop16:G3,labelGroupFlex:K3,codeBlockWrapperCustom:q3,kanbanWrapper:Y3,kanbanContainer:Z3,kanbanTopScroll:J3,kanbanTopScrollSpacer:X3,kanbanColumn:Q3,kanbanColumnSticky:eF,kanbanColumnCollapsed:tF,kanbanColumnPast:rF,kanbanColumnSelectedDay:nF,kanbanHeader:aF,kanbanCount:sF,kanbanHeaderDraggable:oF,kanbanHeaderPanning:iF,kanbanQuickAdd:cF,kanbanColorDot:lF,kanbanDroppable:dF,kanbanDroppableScroll:uF,kanbanDroppableScrollVirtualized:fF,kanbanVirtualCanvas:mF,kanbanVirtualRow:pF,kanbanEmpty:hF,kanbanCard:gF,kanbanCardWrapper:yF,taxonomyDropdownActive:kF,kanbanCardWrapperRaised:vF,kanbanCardTitle:wF,kanbanBadges:bF,kanbanBadge:SF,headerFlex:AF,marginBottom8:CF,marginBottom20:IF,configPanel:_F,configPanelLarge:TF,subLabelBlock:xF,subLabelBlock12:RF,flexBetween:PF,flexBetweenCenter:jF,deleteBtnSmall:EF,deleteBtnMedium:NF,trashIcon:DF,gridConfig:MF,flexColGap4:LF,flexColGap4Center:OF,flex1:BF,flexCol:WF,flexGrow1:$F,inputLabel:FF,inputLabelBlock:UF,checkboxInput:zF,configDividerMargin:HF,configDividerMargin24:VF,pathListMargin:GF,cancelBtnRed:KF,code:qF,workflowList:YF,workflowActions:ZF,textBtn:JF,workflowGrid:XF,checkboxLabel:QF,checkboxSmall:e4,docWorkspace:t4,docIndexPanel:r4,docWorkspaceTrayMode:n4,docViewerPanel:a4,docWorkspaceTrayOpen:s4,docTrayPanel:o4,docTrayPanelOpen:i4,docSpinning:c4,docSpin:l4,docViewerEmpty:d4,agentsModuleRoot:u4,agentsModuleWithTray:f4,agentsModuleTrayOpen:m4,agentTrayPanel:p4,agentTrayPanelOpen:h4,agentTrayHeader:g4,agentTrayTitle:y4,agentTrayContent:k4,agentTrayContentInner:v4,agentsModuleContent:w4,taskforceAgentsModuleRoot:b4,taskforceAgentsModuleMain:S4,taskforceAgentsModuleTrayOpen:A4,taskforceAgentRosterHeader:C4,taskforceAgentRosterTitle:I4,taskforceAgentRosterContent:_4,taskforceAgentLibraryPortal:T4,taskforceAgentBuilderNavigation:x4,taskforceAgentBuilderTabs:R4,taskforceAgentBuilderCreateBtn:P4,taskforceAgentBuilderTab:j4,taskforceAgentBuilderTabActive:E4,taskforceAgentBuilderPanel:N4,taskforceModelConnectionsRoot:D4,taskforceModelConnectionsRootExternalLibrary:M4,taskforceModelConnectionsWorkspace:L4,taskforceModelConnectionsHeader:O4,taskforceModelConnectionCardHeader:B4,taskforceModelConnectionActions:W4,taskforceModelConnectionCodeRow:$4,taskforceAgentConnectionControlHeader:F4,taskforceAgentConnectionBindingRow:U4,taskforceAgentConnectionCallout:z4,taskforceModelConnectionNameRow:H4,taskforceModelConnectionNameEditor:V4,taskforceModelConnectionIdentity:G4,taskforceModelConnectionIdentityText:K4,taskforceModelConnectionLogo:q4,taskforceModelConnectionCard:Y4,taskforceAgentConnectionControl:Z4,taskforceModelConnectionLogin:J4,taskforceModelConnectionsEmpty:X4,taskforceModelConnectionMeta:Q4,taskforceModelConnectionsLoading:e5,taskforceAgentTestError:t5,taskforceAgentTestNotice:r5,taskforceAgentBuilderEmpty:n5,taskforceAgentBuilderEmptyIcon:a5,taskforceAgentTestGrid:s5,taskforceAgentContextBanner:o5,taskforceAgentContextActions:i5,taskforceAssistantWorkspace:c5,taskforceAssistantWorkspaceContent:l5,taskforceAssistantWorkspaceOpen:d5,taskforceAssistantWorkspaceCollapsed:u5,taskforceModalWithAssistantPanel:f5,taskforceModalWithAssistantPanelCollapsed:m5,taskforceTaskModalOverlay:p5,taskforceAgentDrawerOverlay:h5,taskforceAgentDrawerOverlayCollapsed:g5,taskforceAgentDrawerPanel:y5,taskforceAgentDrawerHeader:k5,taskforceAgentDrawerAgentHeader:v5,taskforceAgentDrawerHeaderFallback:w5,taskforceAgentDrawerAgentAvatar:b5,taskforceAgentDrawerFallbackAvatar:S5,taskforceAgentDrawerAgentAvatarButton:A5,taskforceAgentDrawerAgentPicker:C5,taskforceAgentDrawerHeaderActions:I5,taskforceAgentDrawerLoading:_5,taskforceAgentDrawerSurface:T5,taskforceAgentDrawerControls:x5,taskforceAgentProfileTray:R5,taskforceAgentProfileTrayIn:P5,taskforceAgentProfileTrayHeader:j5,taskforceAgentProfileTrayIdentity:E5,taskforceAgentProfileTrayDetails:N5,taskforceAgentDrawerChatControls:D5,taskforceAgentConversationRename:M5,taskforceAgentConversationRenameError:L5,taskforceAgentDrawerConversationList:O5,taskforceAgentDrawerPrompt:B5,taskforceAgentDrawerPromptStatus:W5,taskforceAgentDrawerMetrics:$5,taskforceAgentOutputStack:F5,taskforceAgentHeaderTestPanel:U5,taskforceAgentTestComposer:z5,taskforceAgentTestSendButton:H5,taskforceAgentTestPending:V5,taskforceAgentRetryButton:G5,taskforceAgentTestRestriction:K5,taskforceAgentTestResult:q5,taskforceAgentTestResultHeader:Y5,taskforceAgentTestResponse:Z5,taskforceAgentReadonlyField:J5,taskforceAgentAvatarPanel:X5,taskforceAgentAvatarEditControl:Q5,taskforceAgentAvatarPreview:eU,taskforceAgentListAvatar:tU,taskforceAgentAvatarSyncing:rU,taskforceAgentAvatarSyncIcon:nU,taskforceAgentAvatarCopy:aU,taskforceAgentAvatarRole:sU,taskforceAgentToolbar:oU,taskforceAgentConversationSelect:iU,taskforceAgentList:cU,taskforceAgentListEmpty:lU,taskforceAgentSignatureColorField:dU,aiProfileColorPicker:uU,taskforceAgentBehaviorGrid:fU,taskforceAgentBehaviorWide:mU,taskforceAgentFieldHelper:pU,taskforceAgentPresentationGroup:hU,taskforceAgentLogList:gU,taskforceAgentLogEntry:yU,taskforceAgentToolDetails:kU,taskforceAgentToolActivity:vU,taskforceAgentToolActivityList:wU,taskforceAgentToolCall:bU,taskforceAgentToolCallFailed:SU,taskforceAgentToolCallName:AU,taskforceAgentToolCallStatus:CU,taskforceAgentToolDetailsGrid:IU,taskforceAgentToolCopyButton:_U,taskforceAgentLogSuccess:TU,taskforceAgentLogError:xU,taskforceAgentLogTime:RU,taskforceAgentConversationList:PU,taskforceAgentConversationBody:jU,taskforceAgentConversationMessage:EU,taskforceAgentConversationEmpty:NU,taskforceAgentConversationMessageUser:DU,taskforceAgentConversationMessageAssistant:MU,taskforceAgentMetaGrid:LU,marginTop24:OU,settingSubTitle:BU,dangerBtn:WU,aiProfilesExplorer:$U,aiProfilesRosterPanel:FU,aiProfilesRosterSummary:UU,aiProfileSeatSummary:zU,aiProfilesRosterState:HU,aiProfilesListPane:VU,aiProfilesList:GU,aiProfilesDetailViewport:KU,aiProfilesSection:qU,aiProfilesSectionHeader:YU,aiProfileGroup:ZU,aiProfileGroupSelected:JU,aiProfileGroupDuplicate:XU,aiProfileGroupHeader:QU,aiProfileGroupAvatar:e6,aiProfileGroupAvatarLogo:t6,aiProfileGroupIdentity:r6,aiProfileName:n6,aiProfileHandle:a6,aiProfileRole:s6,aiProfileSeatScopeIcon:o6,aiProfileGroupSignatureSwatch:i6,aiProfileSeatScopeIconDetail:c6,aiProfileSeatScopeIconCloud:l6,aiProfileSeatScopeIconLocal:d6,aiProfileDuplicateBadge:u6,aiProfileMergeSection:f6,aiProfileMergeRow:m6,aiProfileIdChip:p6,aiProfileKeepBadge:h6,aiProfileMergeActions:g6,aiProfileDetailPane:y6,aiProfileDetailCard:k6,aiProfileDetailHero:v6,aiProfileDetailIcon:w6,aiProfileDetailAvatar:b6,aiProfileDetailAvatarLogo:S6,aiProfileDetailHeading:A6,aiProfileDetailTitleRow:C6,aiProfileDetailTitle:I6,aiProfileDetailMetaRow:_6,aiProfileDetailHandle:T6,aiProfileDetailRole:x6,aiProfileDetailLinkedCount:R6,aiProfileDetailDescription:P6,aiProfileSignatureColor:j6,aiProfileSignatureSwatch:E6,aiProfileSignatureColorButton:N6,aiProfileColorOption:D6,aiProfileDetailDataList:M6,aiProfileDetailDataGroup:L6,aiProfileDetailDateGroup:O6,aiProfileDetailDataRow:B6,aiProfileDetailDataLabel:W6,aiProfileDetailDataValue:$6,aiProfileStatusSelect:F6,aiProfileInstanceSection:U6,aiProfileInstanceSectionHeader:z6,aiProfileInstanceList:H6,aiProfileInstanceCard:V6,aiProfileIdFooter:G6,aiProfileIdFooterValue:K6,aiProfileDangerTextButton:q6,aiProfileInstanceTopRow:Y6,aiProfileInstanceName:Z6,aiProfileInstanceMeta:J6,aiProfileInlineError:X6},Q6="_standaloneWrapper_128c3_1",ez="_standalonePage_128c3_11",tz="_standaloneHeader_128c3_21",rz="_standaloneTitle_128c3_27",nz="_standaloneContent_128c3_31",az="_workspaceToolRail_128c3_37",sz="_workspaceToolRailLeft_128c3_48",oz="_workspaceToolRailRight_128c3_57",iz="_workspaceToolRailMain_128c3_64",cz="_workspaceToolRailBottom_128c3_72",lz="_workspaceToolRailDivider_128c3_82",dz="_workspaceToolButton_128c3_89",uz="_headerTitleWidget_128c3_124",Jr={standaloneWrapper:Q6,standalonePage:ez,standaloneHeader:tz,standaloneTitle:rz,standaloneContent:nz,workspaceToolRail:az,workspaceToolRailLeft:sz,workspaceToolRailRight:oz,workspaceToolRailMain:iz,workspaceToolRailBottom:cz,workspaceToolRailDivider:lz,workspaceToolButton:dz,headerTitleWidget:uz},fz="_overlay_11v7l_1",mz="_browser_11v7l_16",pz="_header_11v7l_27",hz="_pathInfo_11v7l_36",gz="_actions_11v7l_52",yz="_list_11v7l_57",kz="_item_11v7l_63",vz="_itemCurrent_11v7l_80",wz="_itemFile_11v7l_86",bz="_empty_11v7l_90",Dn={overlay:fz,browser:mz,header:pz,pathInfo:hz,actions:gz,list:yz,item:kz,itemCurrent:vz,itemFile:wz,empty:bz},Sz="_overlay_1hk7m_2",Az="_overlayHighZ_1hk7m_15",Cz="_modal_1hk7m_20",Iz="_draggableModal_1hk7m_46",_z="_draggableHeader_1hk7m_53",Tz="_headerActions_1hk7m_61",xz="_modalContent_1hk7m_69",Rz="_form_1hk7m_80",Pz="_formActions_1hk7m_91",jz="_modalFooter_1hk7m_98",Ez="_modalSizeSm_1hk7m_104",Nz="_modalSizeMd_1hk7m_108",Dz="_modalSizeMdWide_1hk7m_112",Mz="_modalSizeLg_1hk7m_116",Lz="_modalSizeXl_1hk7m_120",Oz="_modalSizeFull_1hk7m_124",Bz="_settingsViewModal_1hk7m_129",Wz="_unsavedOverlay_1hk7m_148",$z="_unsavedModal_1hk7m_153",Fz="_unsavedHeader_1hk7m_159",Uz="_unsavedTitle_1hk7m_164",zz="_unsavedContent_1hk7m_168",Hz="_unsavedText_1hk7m_172",Vz="_unsavedActions_1hk7m_177",gr={overlay:Sz,overlayHighZ:Az,modal:Cz,draggableModal:Iz,draggableHeader:_z,headerActions:Tz,modalContent:xz,form:Rz,formActions:Pz,modalFooter:jz,modalSizeSm:Ez,modalSizeMd:Nz,modalSizeMdWide:Dz,modalSizeLg:Mz,modalSizeXl:Lz,modalSizeFull:Oz,settingsViewModal:Bz,unsavedOverlay:Wz,unsavedModal:$z,unsavedHeader:Fz,unsavedTitle:Uz,unsavedContent:zz,unsavedText:Hz,unsavedActions:Vz},Gz=90;function a_(e){const t=Date.parse(String(e||"").trim());return Number.isFinite(t)?new Date(t+Gz*24*60*60*1e3).toISOString():null}function s_(e,t){const r=o.useRef(t);o.useLayoutEffect(()=>{r.current=t},[t]);const n=o.useMemo(()=>Rx(e),[e]),s=o.useMemo(()=>n,[n.revision]);return o.useMemo(()=>({resolve:s.resolve,activate:i=>r.current(i)}),[s])}function o_(e,t,r){const[n,s]=o.useState(()=>new Set),i=o.useMemo(()=>new Map(e.map(h=>[h.taskId,h])),[e]),l=o.useMemo(()=>t.map(h=>i.get(h)).filter(h=>!!h),[t,i]),c=o.useMemo(()=>new Set(l.map(h=>h.id)),[l]);o.useEffect(()=>{s(h=>{const y=r?new Set(Array.from(h).filter(k=>c.has(k))):new Set;return y.size===h.size&&Array.from(y).every(k=>h.has(k))?h:y})},[r,c]);const d=o.useMemo(()=>l.filter(h=>n.has(h.id)),[l,n]),m=o.useCallback((h,y)=>{s(k=>{const v=new Set(k);return y?v.add(h):v.delete(h),v})},[]),f=o.useCallback(()=>{s(new Set(l.map(h=>h.id)))},[l]),g=o.useCallback(()=>s(new Set),[]);return{selectedIds:n,selectedRecords:d,matchingRecords:l,selectedCount:d.length,allMatchingSelected:l.length>0&&d.length===l.length,someMatchingSelected:d.length>0&&d.length<l.length,toggle:m,selectAllMatching:f,clear:g}}const Gv="taskforce:preview-context-attachment";function ip(e,t){const r=new CustomEvent(Gv,{detail:{attachment:e,...t},cancelable:!0});return!window.dispatchEvent(r)}async function i_(e,t){const r=t.fetcher||fetch,n=new URLSearchParams({workspaceId:t.workspaceId});if(e.kind==="image"){const c=await r(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(e.token)}?${n.toString()}`,{credentials:"include",headers:t.headers});if(!c.ok)throw new Error("Image not found");const m=(await c.json()).target;if(!m?.assetId||!m.path)throw new Error("Image target is unavailable");return{path:m.path,assetId:m.assetId,displayName:m.displayName,referenceNumber:e.referenceNumber,referenceLabel:m.imageReferenceLabel||e.token,linkRole:"image"}}const s=await r(`/api/taskforce/documents?${n.toString()}`,{credentials:"include",headers:t.headers});if(!s.ok)throw new Error("Document list unavailable");const l=(await s.json()).documents?.find(c=>c.referenceNumber===e.referenceNumber||String(c.referenceLabel||"").toUpperCase()===e.token);if(!l?.apiUrl)throw new Error("Document not found");return{path:l.apiUrl,fsPath:l.fsPath,assetId:l.assetId,displayName:l.title,originalFilename:l.originalFilename||void 0,referenceNumber:e.referenceNumber,referenceLabel:l.referenceLabel||e.token,linkRole:"reference"}}const Wi={workspaceId:"workspaceId",task:"task",activity:"activity",comment:"comment",initiative:"initiative",workstream:"workstream",image:"image",document:"document"};function Kz(e){const t=String(e||"").trim();if(!t)return null;try{const r=new URL(t);return r.protocol!=="http:"&&r.protocol!=="https:"?null:r.origin}catch{return null}}function qz(e){const t=Kz(e.applicationBaseUrl),r=String(e.workspaceId).trim(),n=String(e.id||"").trim();if(!t||!r||!n)return null;const s=new URL("/",t);s.searchParams.set(Wi.workspaceId,r),s.searchParams.set(Wi[e.target],n);const i=String(e.activityId||"").trim();return e.target==="task"&&i&&s.searchParams.set(Wi.activity,i),s.toString()}function Yz(e){const t=e.charAt(0).toUpperCase()+e.slice(1).toLowerCase(),r={Category:"Categories",Priority:"Priorities",Status:"Statuses"};return r[t]?r[t]:`${e}s`}function Sd({label:e,options:t,selected:r,onChange:n,variant:s="label",containerStyle:i,renderOptionContent:l,searchable:c=!1,searchPlaceholder:d="Search options...",noResultsText:m="No matching options."}){const[f,g]=o.useState(!1),[h,y]=o.useState(""),k=o.useRef(null),v=o.useRef(null),A=o.useRef(null),b=c&&h.trim()?t.filter(T=>T.label.toLocaleLowerCase().includes(h.trim().toLocaleLowerCase())):t;o.useEffect(()=>{const T=H=>{k.current&&!k.current.contains(H.target)&&g(!1)};return document.addEventListener("mousedown",T),()=>document.removeEventListener("mousedown",T)},[]),o.useEffect(()=>{f&&c&&A.current?.focus()},[f,c]);const w=T=>{r.includes(T)?n(r.filter(H=>H!==T)):n([...r,T])},R=t.length>0&&t.every(T=>{const H=s==="label"?T.label:T.value;return r.includes(H)}),N=!t.some(T=>{const H=s==="label"?T.label:T.value;return r.includes(H)}),j=()=>{n(R?[]:t.map(T=>s==="label"?T.label:T.value))},E=t.filter(T=>{const H=s==="label"?T.label:T.value;return r.includes(H)}).length,S=Yz(e),L=R?`All ${S}`:N?`No ${S}`:E===1?`1 ${e}`:`${E} ${S}`,_=()=>{y(""),g(T=>!T)};return a.jsxs("div",{className:P.filterContainer,ref:k,style:i,children:[a.jsxs("button",{ref:v,type:"button",className:`${P.filterButton} ${R?"":P.filterActive}`,onClick:_,title:`Filter by ${e}`,"aria-expanded":f,children:[a.jsx("span",{children:L}),a.jsx(Fd,{size:14,style:{transform:f?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),f&&a.jsxs("div",{className:`${P.filterDropdown} ${P.appScrollbar} tf-scrollbar`,onKeyDown:T=>{T.key==="Escape"&&(T.preventDefault(),g(!1),v.current?.focus())},children:[c?a.jsxs("div",{className:P.filterSearch,children:[a.jsx(ry,{size:14,className:P.filterSearchIcon,"aria-hidden":"true"}),a.jsx("input",{ref:A,type:"search",role:"searchbox",className:`tf-field-shell ${P.filterSearchInput}`,value:h,placeholder:d,"aria-label":d,onChange:T=>y(T.target.value)})]}):null,a.jsxs("label",{className:P.filterOption,children:[a.jsx("input",{type:"checkbox",checked:R,onChange:j}),a.jsx("span",{style:{fontWeight:600},children:"Toggle All"})]}),a.jsx("div",{className:P.filterDivider}),b.map(T=>{const H=s==="label"?T.label:T.value,q=r.includes(H);return a.jsxs("label",{className:P.filterOption,children:[a.jsx("input",{type:"checkbox",checked:q,onChange:()=>w(H)}),l?l(T):a.jsx("span",{children:T.label})]},T.value)}),b.length===0?a.jsx("div",{className:P.filterEmpty,role:"status",children:m}):null]})]})}const Zz="_taskItem_17iu4_1",Jz="_compressed_17iu4_25",Xz="_taskHeader_17iu4_30",Qz="_taskReferenceCluster_17iu4_34",e7="_taskMeta_17iu4_38",t7="_taskTitle_17iu4_43",r7="_taskCover_17iu4_59",n7="_taskItemRecentlyChanged_17iu4_103",a7="_assigneeAvatarShared_17iu4_143",s7="_assigneePicker_17iu4_156",o7="_inProgress_17iu4_216",i7="_onHold_17iu4_217",c7="_readyForReview_17iu4_218",l7="_completed_17iu4_219",d7="_cancelled_17iu4_232",u7="_readOnly_17iu4_243",f7="_archived_17iu4_252",m7="_taskContent_17iu4_262",p7="_kanbanCardOverlay_17iu4_271",h7="_deletedExpiry_17iu4_292",g7="_taskReferenceDivider_17iu4_315",y7="_taskReferenceSegment_17iu4_322",k7="_taskActions_17iu4_329",v7="_taskMetaCompact_17iu4_352",w7="_taskMetaRow_17iu4_359",b7="_taskMetaBadgeGroup_17iu4_369",S7="_taskMetaIdentityGroup_17iu4_382",A7="_taskDescription_17iu4_390",C7="_taskLatestComment_17iu4_399",I7="_taskLatestCommentTinted_17iu4_414",_7="_taskLatestCommentHeader_17iu4_418",T7="_taskLatestActivityHeading_17iu4_435",x7="_taskLatestActivityActor_17iu4_443",R7="_taskCommentCount_17iu4_454",P7="_taskLatestCommentText_17iu4_464",j7="_taskMetaCategory_17iu4_474",E7="_taskMetaType_17iu4_480",N7="_taskMetaPriority_17iu4_486",D7="_taskComplexityLabel_17iu4_490",M7="_taskCancellationReason_17iu4_495",L7="_archiveBadge_17iu4_648",O7="_attachmentThumbnails_17iu4_653",B7="_attachmentImageRow_17iu4_660",W7="_attachmentDocumentList_17iu4_667",$7="_attachmentThumbnail_17iu4_653",F7="_contextDocThumb_17iu4_702",U7="_contextDocMain_17iu4_728",z7="_contextDocName_17iu4_735",H7="_taskSpecialists_17iu4_745",V7="_taxonomiesList_17iu4_754",G7="_selected_17iu4_815",K7="_selectionControl_17iu4_820",kr={taskItem:Zz,compressed:Jz,taskHeader:Xz,taskReferenceCluster:Qz,taskMeta:e7,taskTitle:t7,taskCover:r7,taskItemRecentlyChanged:n7,assigneeAvatarShared:a7,assigneePicker:s7,inProgress:o7,onHold:i7,readyForReview:c7,completed:l7,cancelled:d7,readOnly:u7,archived:f7,taskContent:m7,kanbanCardOverlay:p7,deletedExpiry:h7,taskReferenceDivider:g7,taskReferenceSegment:y7,taskActions:k7,taskMetaCompact:v7,taskMetaRow:w7,taskMetaBadgeGroup:b7,taskMetaIdentityGroup:S7,taskDescription:A7,taskLatestComment:C7,taskLatestCommentTinted:I7,taskLatestCommentHeader:_7,taskLatestActivityHeading:T7,taskLatestActivityActor:x7,taskCommentCount:R7,taskLatestCommentText:P7,taskMetaCategory:j7,taskMetaType:E7,taskMetaPriority:N7,taskComplexityLabel:D7,taskCancellationReason:M7,archiveBadge:L7,attachmentThumbnails:O7,attachmentImageRow:B7,attachmentDocumentList:W7,attachmentThumbnail:$7,contextDocThumb:F7,contextDocMain:U7,contextDocName:z7,taskSpecialists:H7,taxonomiesList:V7,selected:G7,selectionControl:K7};function q7(e){return function(t){return tx(t,e)}}const Y7="I-",Z7=new RegExp("(?<![\\w-])(I-\\d+)(?![\\w-])","gi");function cp(e){return mp(Y7,e)}const J7="_prose_1rd59_1",X7="_taskReference_1rd59_56",Q7="_tableScroll_1rd59_72",e8="_blockScroll_1rd59_99",t8="_compactCodePreview_1rd59_115",r8="_taskList_1rd59_194",n8="_taskListItem_1rd59_198",a8="_taskCheckbox_1rd59_202",s8="_compact_1rd59_115",o8="_compactHeading_1rd59_231",i8="_codeLanguage_1rd59_262",c8="_contentIndicator_1rd59_271",l8="_detail_1rd59_277",d8="_conversation_1rd59_300",u8="_conversationHeading_1rd59_313",f8="_document_1rd59_321",os={prose:J7,taskReference:X7,tableScroll:Q7,blockScroll:e8,compactCodePreview:t8,taskList:r8,taskListItem:n8,taskCheckbox:a8,compact:s8,compactHeading:o8,codeLanguage:i8,contentIndicator:c8,detail:l8,conversation:d8,conversationHeading:u8,document:f8};function m8(e){const t=e.trim();if(!t)return"";if(/^(?:#|\/|\.\/|\.\.\/)/.test(t))return t;const r=t.match(/^([a-z][a-z0-9+.-]*):/i)?.[1]?.toLowerCase();return r?r==="http"||r==="https"||r==="mailto"?t:"":t}function tA(e){return/^(?:https?:)?\/\//i.test(String(e||""))}function p8(e){return String(e||"").match(/(?:^|\s)language-([\w-]+)/)?.[1]||""}const h8=({children:e,variant:t,className:r,taskReferences:n,imageReferences:s,documentOverrides:i})=>{if(!e)return null;if(i&&t!=="document")throw new Error("documentOverrides are only supported by the document Markdown variant.");const l=g=>{if(typeof g=="string"){const k=(A,b,w,R)=>{const N=Array.from(A.matchAll(b));if(!N.length)return[A];const j=[];let E=0;return N.forEach((S,L)=>{const _=S[1],T=S.index??-1;if(T<E)return;T>E&&j.push(A.slice(E,T));const H=w(_);j.push(H?R(H,_,`${_}-${T}-${L}`):_),E=T+_.length}),E<A.length&&j.push(A.slice(E)),j};let v=[g];if(n&&(v=v.flatMap(A=>typeof A=="string"?k(A,Tx,n.resolve,(b,w,R)=>a.jsx("button",{type:"button",className:os.taskReference,onClick:N=>{N.preventDefault(),N.stopPropagation(),n.activate(b)},children:w},`task-${R}`)):[A])),s&&(v=v.flatMap(A=>typeof A=="string"?k(A,Z7,s.resolve,(b,w,R)=>a.jsx("button",{type:"button",className:os.taskReference,onClick:N=>{N.preventDefault(),N.stopPropagation(),s.activate(b)},children:w},`image-${R}`)):[A])),n?.entityReferences){const A=n.entityReferences;v=v.flatMap(b=>typeof b=="string"?k(b,Ax,A.resolve,(w,R,N)=>a.jsx("button",{type:"button",className:os.taskReference,title:`Open ${w.kind} ${w.token}`,onClick:j=>{j.preventDefault(),j.stopPropagation(),A.activate(w)},children:R},`entity-${N}`)):[b])}return v.length===1?v[0]:v}if(Array.isArray(g))return g.map(l);if(!ne.isValidElement(g))return g;const h=g.props,y=typeof g.type=="string"?g.type:h.node?.tagName||"";return y==="a"||y==="button"||y==="code"||y==="pre"||y==="p"||h.children===void 0?g:ne.cloneElement(g,void 0,ne.Children.map(h.children,l))},c=(g,h)=>{const y=l(h);return t==="compact"?a.jsx("div",{className:os.compactHeading,children:y}):t==="conversation"?a.jsx("h3",{className:os.conversationHeading,children:y}):ne.createElement(`h${g}`,void 0,y)},d={h1:({children:g})=>c(1,g),h2:({children:g})=>c(2,g),h3:({children:g})=>c(3,g),h4:({children:g})=>c(4,g),h5:({children:g})=>c(5,g),h6:({children:g})=>c(6,g),p:({children:g})=>a.jsx("p",{children:l(g)}),ul:({children:g,className:h,node:y,...k})=>a.jsx("ul",{...k,className:`${h||""} ${String(h||"").includes("contains-task-list")?os.taskList:""}`.trim(),children:g}),ol:({children:g,className:h,node:y,...k})=>a.jsx("ol",{...k,className:`${h||""} ${String(h||"").includes("contains-task-list")?os.taskList:""}`.trim(),children:g}),li:({children:g,className:h,node:y,...k})=>{const v=String(h||"").includes("task-list-item");return a.jsx("li",{...k,className:`${h||""} ${v?os.taskListItem:""}`.trim(),children:l(g)})},input:({type:g,checked:h,node:y,...k})=>g!=="checkbox"?a.jsx("input",{type:g,checked:h,readOnly:!0,...k}):a.jsx("input",{...k,type:"checkbox",checked:!!h,readOnly:!0,className:os.taskCheckbox}),a:({href:g,children:h,node:y,...k})=>{if(!g)return a.jsx("span",{children:h});const v=tA(g);return a.jsx("a",{...k,href:g,...v?{target:"_blank",rel:"noopener noreferrer"}:{},onClick:A=>A.stopPropagation(),children:h})},strong:({children:g})=>a.jsx("strong",{children:g}),em:({children:g})=>a.jsx("em",{children:g}),code:({children:g,className:h,node:y,...k})=>a.jsx("code",{className:h,...k,children:g}),pre:({children:g})=>{const h=ne.Children.toArray(g).find(ne.isValidElement),y=p8(h?.props.className);return t==="compact"?a.jsxs("div",{className:os.compactCodePreview,children:[y?a.jsx("span",{className:os.codeLanguage,children:y}):null,a.jsx("pre",{children:g})]}):a.jsx("div",{className:os.blockScroll,children:a.jsx("pre",{children:g})})},blockquote:({children:g})=>a.jsx("blockquote",{children:g}),table:({children:g,node:h,...y})=>t==="compact"?a.jsx("span",{className:os.contentIndicator,children:"[Table]"}):a.jsx("div",{className:os.tableScroll,role:"region","aria-label":"Scrollable table",tabIndex:0,children:a.jsx("table",{...y,children:g})}),img:({src:g,alt:h})=>{const y=String(h||"").trim();if(t==="compact"||t==="conversation"){if(!y)return null;const k=`[Image: ${y}]`;if(!g)return a.jsx("span",{className:os.contentIndicator,children:k});const v=tA(g);return a.jsx("a",{href:g,className:os.contentIndicator,...v?{target:"_blank",rel:"noopener noreferrer"}:{},onClick:A=>A.stopPropagation(),children:k})}return a.jsx("img",{src:g,alt:y})},hr:()=>t==="compact"?null:a.jsx("hr",{})},m=t==="document"&&i?{...d,...i}:d,f=t==="document"?[Lb]:[Lb,nx];return a.jsx("div",{className:`${os.prose} ${os[t]} ${r||""}`.trim(),"data-markdown-surface":t,children:a.jsx(rx,{skipHtml:!0,remarkPlugins:f,rehypePlugins:[q7],urlTransform:m8,components:m,children:e})})},py=ne.memo(h8);function Zw({label:e,title:t,ariaLabel:r,copied:n=!1,disabled:s=!1,className:i="",onClick:l,children:c}){return a.jsx("button",{type:"button",className:`${P.referenceBadge} ${n?P.copiedReference:""} ${i}`.trim(),onClick:l,disabled:s,title:t,"aria-label":r,children:a.jsx("span",{className:P.referenceBadgeLabel,children:c??e})})}function nf({copied:e,disabled:t=!1,label:r,onClick:n,title:s="Copy task reference",ariaLabel:i,className:l="",provisional:c=!1}){return a.jsx(Zw,{copied:e,disabled:t,label:"",onClick:n,title:s,ariaLabel:i,className:`${c?P.provisionalReferenceBadge:""} ${l}`.trim(),children:r})}const g8=(e,t=10)=>{const r=Fg[e?.toLowerCase()]||{icon:"FileCode"},n=Xs[r.icon]||a0;return a.jsx(n,{size:t})},Xh=(e,t)=>{if(!e)return null;const r=t.trim();if(!r)return e;const s=my(r)?.match(/^(lt|t)-(\d+)$/),i=s?`${s[1]==="lt"?"l\\s*t":"t"}\\s*(?:-|\\s)?\\s*${s[2]}`:r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),l=new RegExp(`^${i}$`,"i"),c=e.split(new RegExp(`(${i})`,"gi"));return a.jsx(a.Fragment,{children:c.map((d,m)=>l.test(d)?a.jsx("mark",{className:P.highlight,children:d},m):d)})};function lp(e){return e.trim().replace(/\\/g,"/")}function c_(e){return e.split("?")[0].split("#")[0]}function hy(e){return typeof e=="string"?e:String(e.path||"").trim()}function l_(e){const r=c_(lp(e)).match(/\/api\/taskforce\/documents\/([^/]+)\/content$/i);if(!r?.[1])return null;try{return decodeURIComponent(r[1]).trim()||null}catch{return r[1].trim()||null}}function d_(e){if(!e.includes("/api/taskforce/context-link?path="))return null;try{const r=new URL(e,window.location.origin).searchParams.get("path");return r?lp(r):null}catch{return null}}function y8(e,t){const r=(t||(typeof e=="string"?"":e.fsPath||"")).trim();if(r)return lp(r);const n=hy(e),s=d_(n);return s?lp(s):null}function k8(e,t){const r=String(typeof e=="string"?"":e.assetId||"").trim();if(r)return r;const n=hy(e);return l_(n)}function u_(e,t){const r=hy(e);return l_(r)?!0:[(t||(typeof e=="string"?"":e.fsPath||"")).trim(),typeof e=="string"?"":String(e.originalFilename||"").trim(),typeof e=="string"?"":String(e.displayName||"").trim(),typeof e=="string"?"":String(e.caption||"").trim(),d_(r)||"",r].some(s=>{if(!s)return!1;const i=c_(lp(s)).toLowerCase();return i.endsWith(".md")||i.endsWith(".markdown")})}function f_(e,t){const r=hy(e),n=y8(e,t),s=k8(e);if(!n&&!s||!u_(e,n||void 0))return!1;const i=new CustomEvent("taskforce:open-markdown-document",{detail:{path:r,...n?{fsPath:n}:{},...s?{assetId:s}:{},...typeof e!="string"&&e.taskId?{taskId:e.taskId}:{}},cancelable:!0});return!window.dispatchEvent(i)}function m_(e,t){return e?JSON.stringify([String(e.taskId||"").trim(),String(e.assetId||"").trim(),String(t||"").trim()]):""}function v8(e){const t=m_(e.currentTarget,e.currentSessionId);return!t||t===e.lastHydratedIdentity}function w8(e){return e.trim().replace(/\\/g,"/")}function p_(e){return typeof e=="string"?e:String(e.path||"").trim()}function b8(e){return/\.(png|jpe?g|webp|gif)(\?|#|$)/i.test(e)}function S8(e){return typeof e=="string"?w8(e).split("/").pop()||"Image attachment":String(e.caption||e.displayName||e.originalFilename||e.fsPath||e.path.split("/").pop()||"Image attachment").trim()}function h_(e,t){if(typeof e=="string")return!1;const r=String(e.assetId||"").trim(),n=p_(e);return!!(r&&n&&b8(n))}function Kv(e,t){if(!h_(e))return!1;const r=e,n=String(t?.taskId||r.taskId||"").trim(),s=String(t?.taskReferenceLabel||"").trim(),i=String(r.assetId||"").trim(),l=cp(r),c=String(t?.sessionId||"").trim(),d=p_(e),m=new CustomEvent("taskforce:open-annotated-attachment",{detail:{...n?{taskId:n}:{},...s?{taskReferenceLabel:s}:{},assetId:i,...l?{imageReferenceLabel:l}:{},...c?{sessionId:c}:{},path:d,displayName:S8(e)},cancelable:!0});return!window.dispatchEvent(m)}function rA(e,t){if(!e)return null;const r=String(e.taskId||"").trim(),n=String(e.assetId||"").trim(),s=String(e.path||"").trim(),i=String(e.displayName||"").trim()||"Image attachment";if(!n||!s)return null;const l=String(e.taskReferenceLabel||"").trim(),c=r?t.find(m=>m.id===r):void 0,d=r?l||Ss(c)||r:void 0;return{...r?{taskId:r}:{},...d?{taskReferenceLabel:d}:{},assetId:n,imageReferenceLabel:String(e.imageReferenceLabel||"").trim()||void 0,sessionId:String(e.sessionId||"").trim()||void 0,path:s,displayName:i}}function Gg(e){const t=String(e||"").trim().replace(/\\/g,"/");if(!t)return"";const r=t.split("/").filter(Boolean);return r[r.length-1]||""}function Jw(e){const t=String(e||"").trim(),r=t.lastIndexOf(".");return r<=0?{stem:t,ext:""}:{stem:t.slice(0,r),ext:t.slice(r)}}function g_(e,t){const r=String(e||"").trim(),n=String(t||"").trim();return r?n&&r.startsWith(`${n}-`)?r.slice(n.length+1):r.replace(/^asset-[a-z0-9-]+-/i,""):""}function A8(e){return String(e||"").replace(/-\d{13,}$/g,"").replace(/[_-]+/g," ").replace(/\s+/g," ").trim()}function nA(e,t){const{stem:r,ext:n}=Jw(Gg(e)),s=g_(r,t),i=A8(s||r);return i?`${i}${n}`:Gg(e)||"Untitled document"}function Xk(e,t){const r=String(e||"").trim();if(!r)return!0;const n=Gg(r),{stem:s}=Jw(n),i=String(t||"").trim();if(i&&s.toLowerCase()===i.toLowerCase())return!0;const l=g_(s,t);return l?l!==s:!0}function C8(e){const t=String(e.title||"").trim();if(t&&!Xk(t,e.assetId))return t;const r=String(e.logicalName||"").trim();if(r&&!Xk(r,e.assetId))return r;const n=String(e.displayName||"").trim();if(n&&!Xk(n,e.assetId))return n;const s=String(e.originalFilename||"").trim();if(s)return nA(s,e.assetId);const i=String(e.fsPath||"").trim();return i?nA(i,e.assetId):"Untitled document"}function I8(e){return C8(e)}function _8(e){const t=I8(e),r=String(e.originalFilename||e.fsPath||"").trim(),n=Jw(Gg(r)).ext;return n?t.toLowerCase().endsWith(n.toLowerCase())?t:`${t}${n}`:t}const T8="_taxonomyDropdown_1qrdm_1",x8="_taxonomyDropdownActive_1qrdm_6",R8="_taxonomyDropdownButton_1qrdm_11",P8="_taxonomyDropdownOpen_1qrdm_50",j8="_taxonomyDropdownButtonContent_1qrdm_56",E8="_taxonomyDropdownIcon_1qrdm_64",N8="_taxonomyDropdownLabel_1qrdm_72",D8="_taxonomyDropdownChevron_1qrdm_81",M8="_taxonomyDropdownChevronOpen_1qrdm_87",L8="_taxonomyDropdownPanel_1qrdm_91",O8="_taxonomyDropdownOptions_1qrdm_111",B8="_taxonomyDropdownSearch_1qrdm_117",W8="_taxonomyDropdownSearchIcon_1qrdm_125",$8="_taxonomyDropdownSearchInput_1qrdm_134",F8="_taxonomyDropdownEmpty_1qrdm_148",U8="_taxonomyDropdownActions_1qrdm_155",z8="_taxonomyDropdownAction_1qrdm_155",H8="_taxonomyDropdownPanelPortal_1qrdm_195",V8="_taxonomyDropdownOption_1qrdm_111",G8="_taxonomyDropdownOptionHighlighted_1qrdm_245",K8="_taxonomyDropdownOptionSelected_1qrdm_251",ca={taxonomyDropdown:T8,taxonomyDropdownActive:x8,taxonomyDropdownButton:R8,taxonomyDropdownOpen:P8,taxonomyDropdownButtonContent:j8,taxonomyDropdownIcon:E8,taxonomyDropdownLabel:N8,taxonomyDropdownChevron:D8,taxonomyDropdownChevronOpen:M8,taxonomyDropdownPanel:L8,taxonomyDropdownOptions:O8,taxonomyDropdownSearch:B8,taxonomyDropdownSearchIcon:W8,taxonomyDropdownSearchInput:$8,taxonomyDropdownEmpty:F8,taxonomyDropdownActions:U8,taxonomyDropdownAction:z8,taxonomyDropdownPanelPortal:H8,taxonomyDropdownOption:V8,taxonomyDropdownOptionHighlighted:G8,taxonomyDropdownOptionSelected:K8};function Qk(e,t){const r=e||"var(--brand-primary)";return/^#[0-9a-f]{6}$/i.test(r)?`${r}${Math.round(t*255).toString(16).padStart(2,"0")}`:`color-mix(in srgb, ${r} ${Math.round(t*100)}%, transparent)`}function ui({value:e,options:t,onChange:r,placeholder:n="Select...",required:s=!1,disabled:i=!1,className:l="",ariaLabelledBy:c,ariaLabel:d,title:m,hideSelectedLabel:f=!1,hideChevron:g=!1,panelClassName:h="",portalPanel:y=!1,panelMinWidth:k,panelAlign:v="end",renderOptionContent:A,triggerContent:b,optionLabelColor:w,searchable:R=!1,searchPlaceholder:N="Search options...",noResultsText:j="No matching options.",panelActions:E=[]}){const[S,L]=o.useState(!1),[_,T]=o.useState(-1),[H,q]=o.useState({}),[z,M]=o.useState(),[Z,J]=o.useState(""),ee=o.useRef(null),te=o.useRef(null),fe=o.useRef(null),Ie=o.useRef(null),$e=o.useRef([]),Ye=o.useRef([]),ye=o.useRef(null),ge=`taxonomy-listbox-${ne.useId().replace(/:/g,"")}`,oe=t.find(Y=>String(Y.value)===String(e)),ie=ne.useMemo(()=>{const Y=Z.trim().toLocaleLowerCase();return!R||!Y?t:t.filter(G=>G.label.toLocaleLowerCase().includes(Y))},[t,Z,R]);o.useEffect(()=>{if(!S)return;const Y=G=>{const ae=G.target,_e=!!ee.current?.contains(ae),Oe=!!fe.current?.contains(ae);!_e&&!Oe&&(L(!1),T(-1))};return document.addEventListener("mousedown",Y),()=>document.removeEventListener("mousedown",Y)},[S]),o.useEffect(()=>{if(!S)T(-1);else{const Y=ie.findIndex(G=>String(G.value)===String(e));T(Y>=0?Y:ie.length>0?0:-1)}},[S,e,ie]),o.useEffect(()=>{S&&R&&ye.current?.focus()},[S,R]),o.useEffect(()=>{!S||_<0||$e.current[_]?.scrollIntoView?.({block:"nearest"})},[_,S]),o.useEffect(()=>{if(!S||!y)return;const Y=_e=>{const Oe=te.current;if(!Oe)return;const Fe=Oe.getBoundingClientRect(),st=8,ft=window.innerWidth,xe=window.innerHeight,ke=Math.max(0,ft-st*2);(_e||Ie.current===null)&&(Ie.current=Math.min(Math.max(k||0,Fe.width),ke));const ve=Math.min(Ie.current,ke),Ve=v==="start"?Fe.left:Fe.right-ve,Ne=Math.min(Math.max(st,Ve),Math.max(st,ft-ve-st)),de=Math.max(0,xe-Fe.bottom-st),x=Math.max(0,Fe.top-st),le=Math.min(fe.current?.scrollHeight||280,280),Re=de>=le||de>=x,Je=Re?de:x;q({position:"fixed",top:Re?Fe.bottom:void 0,bottom:Re?void 0:xe-Fe.top,left:Ne,width:ve,minWidth:ve,maxWidth:ke,maxHeight:Math.min(le,Je),zIndex:2e3})},G=_e=>{const Oe=_e.target;Oe instanceof Node&&fe.current?.contains(Oe)||Y(!1)},ae=()=>Y(!0);return Ie.current=null,Y(!0),window.addEventListener("resize",ae),window.addEventListener("scroll",G,!0),()=>{window.removeEventListener("resize",ae),window.removeEventListener("scroll",G,!0),Ie.current=null}},[S,v,y,k]);const me=()=>{if(R&&J(""),y){const Y=ee.current?.closest("[data-theme]");M(Y?.dataset.theme)}L(!0)},W=()=>{if(!i){if(S){L(!1);return}me()}},V=Y=>{r(Y.value),J(""),L(!1),te.current?.focus()},B=Y=>{Y.disabled||(Y.onSelect(),J(""),L(!1),te.current?.focus())},D=Y=>{if(i)return;const G=Y.currentTarget===ye.current;switch(Y.key){case"Enter":if(Y.preventDefault(),!S)me();else if(_>=0){const ae=ie[_];ae&&V(ae)}break;case" ":if(G)return;if(Y.preventDefault(),!S)me();else if(_>=0){const ae=ie[_];ae&&V(ae)}break;case"Escape":Y.preventDefault(),L(!1),te.current?.focus();break;case"ArrowDown":Y.preventDefault(),S?ie.length===0?T(-1):T(ae=>ae<ie.length-1?ae+1:0):me();break;case"ArrowUp":Y.preventDefault(),S?ie.length===0?T(-1):T(ae=>ae>0?ae-1:ie.length-1):me();break;case"Home":if(G)return;Y.preventDefault(),S&&T(ie.length>0?0:-1);break;case"End":if(G)return;Y.preventDefault(),S&&T(ie.length>0?ie.length-1:-1);break;case"Tab":if(S&&!Y.shiftKey&&E.length>0){Y.preventDefault(),Ye.current[0]?.focus();break}L(!1);break}},be=(Y,G)=>{const ae=Y.icon&&Xs[Y.icon]?Xs[Y.icon]:Md,_e=Y.color?ta(Y.color):"var(--text-secondary)",Oe=G?.hideLabel===!0;return a.jsxs(a.Fragment,{children:[a.jsx("span",{className:`taxonomyDropdownIcon ${ca.taxonomyDropdownIcon}`,style:{color:_e},children:a.jsx(ae,{size:16})}),!Oe&&a.jsx("span",{className:`taxonomyDropdownLabel ${ca.taxonomyDropdownLabel}`,style:G?.labelColor?{color:G.labelColor}:void 0,children:Y.label})]})},Se=(Y,G)=>!G?.hideLabel&&A?A(Y):be(Y,G),K=S?a.jsxs("div",{ref:fe,id:`${ge}-panel`,className:`taxonomyDropdownPanel ${ca.taxonomyDropdownPanel} ${y?ca.taxonomyDropdownPanelPortal:""} ${h}`,"data-theme":y?z:void 0,style:y?H:void 0,children:[R?a.jsxs("div",{className:ca.taxonomyDropdownSearch,children:[a.jsx(ry,{size:15,className:ca.taxonomyDropdownSearchIcon,"aria-hidden":"true"}),a.jsx("input",{ref:ye,type:"search",role:"searchbox",className:`tf-field-shell ${ca.taxonomyDropdownSearchInput}`,value:Z,placeholder:N,"aria-label":N,"aria-controls":ge,"aria-activedescendant":_>=0?`${ge}-option-${_}`:void 0,onChange:Y=>J(Y.target.value),onKeyDown:D})]}):null,a.jsx("div",{id:ge,className:`tf-scrollbar tf-scrollbar--compact ${ca.taxonomyDropdownOptions}`,role:"listbox","aria-labelledby":c,"aria-label":d,children:ie.map((Y,G)=>{const ae=String(Y.value)===String(e),_e=G===_;return a.jsx("div",{ref:Oe=>{$e.current[G]=Oe},id:`${ge}-option-${G}`,className:`taxonomyDropdownOption ${ca.taxonomyDropdownOption} ${ae?`taxonomyDropdownOptionSelected ${ca.taxonomyDropdownOptionSelected}`:""} ${_e?`taxonomyDropdownOptionHighlighted ${ca.taxonomyDropdownOptionHighlighted}`:""}`,role:"option","aria-selected":ae,onClick:()=>V(Y),onMouseEnter:()=>T(G),style:(()=>{const Oe=Y.color,st=ta(Oe)||"var(--brand-primary)";return{"--option-color":st,"--option-border":Qk(st,.18),"--option-bg":Qk(st,.06)}})(),children:Se(Y,{labelColor:w})},String(Y.value))})}),ie.length===0?a.jsx("div",{className:ca.taxonomyDropdownEmpty,role:"status",children:j}):null,E.length>0?a.jsx("div",{className:ca.taxonomyDropdownActions,role:"group","aria-label":"Actions",children:E.map((Y,G)=>{const ae=Y.icon&&Xs[Y.icon]?Xs[Y.icon]:null;return a.jsxs("button",{ref:_e=>{Ye.current[G]=_e},type:"button",className:ca.taxonomyDropdownAction,disabled:Y.disabled,onClick:()=>B(Y),onKeyDown:_e=>{_e.key==="Escape"?(_e.preventDefault(),L(!1),te.current?.focus()):_e.key==="Tab"&&!_e.shiftKey&&L(!1)},children:[ae?a.jsx(ae,{size:16,"aria-hidden":"true"}):null,a.jsx("span",{children:Y.label})]},Y.id)})}):null]}):null;return a.jsxs("div",{ref:ee,className:`taxonomyDropdown ${ca.taxonomyDropdown} ${S?`taxonomyDropdownActive ${ca.taxonomyDropdownActive}`:""} ${l}`,children:[a.jsxs("button",{ref:te,type:"button",className:`taxonomyDropdownButton ${ca.taxonomyDropdownButton} ${S?`taxonomyDropdownOpen ${ca.taxonomyDropdownOpen}`:""}`,onClick:W,onKeyDown:D,disabled:i,role:"combobox","aria-haspopup":"listbox","aria-expanded":S,"aria-controls":ge,"aria-activedescendant":S&&_>=0?`${ge}-option-${_}`:void 0,"aria-labelledby":c,"aria-label":d,title:m,style:(()=>{if(!oe)return{};const Y=oe.color,G=ta(Y);return{"--field-bg":Qk(G,.06)}})(),children:[a.jsx("span",{className:`taxonomyDropdownButtonContent ${ca.taxonomyDropdownButtonContent}`,children:b??(oe?Se(oe,{hideLabel:f}):a.jsxs(a.Fragment,{children:[a.jsx("span",{className:`taxonomyDropdownIcon ${ca.taxonomyDropdownIcon}`,children:a.jsx(Md,{size:16})}),a.jsx("span",{className:`taxonomyDropdownLabel ${ca.taxonomyDropdownLabel}`,children:n})]}))}),!g&&a.jsx(Fd,{size:16,className:`taxonomyDropdownChevron ${ca.taxonomyDropdownChevron} ${S?`taxonomyDropdownChevronOpen ${ca.taxonomyDropdownChevronOpen}`:""}`})]}),y?K?uc.createPortal(K,document.body):null:K]})}function Kg({task:e,status:t,disabled:r=!1,actionDisabled:n,statusDisabled:s,compressed:i=!1,shortLabels:l=!1,showLabel:c=!0,onSetStatus:d,onStatusChange:m,onArchiveTask:f,onUnarchiveTask:g,archiveActionMode:h="auto"}){const y=e?.status||t||"task",v=h==="auto"?!!e&&(y==="done"||y==="cancelled")?"archive":"none":h,A=n??r,b=s??r,w=Td.map(E=>({...E,label:(i||l)&&E.shortLabel||E.label})),R=ta(Td.find(E=>E.value===y)?.color)||"var(--text-secondary)",N={"--field-border":R,"--field-text":R,"--field-hover-border":R,"--field-focus-border":R,"--field-focus-ring":`color-mix(in srgb, ${R} 18%, transparent)`},j=v==="archive"&&e?[{id:"archive-task",label:"Archive task",icon:"Archive",disabled:A||!f,onSelect:()=>f?.(e)}]:[];return a.jsxs("div",{className:`${P.statusActionsGroup} ${i?P.statusActionsGroupCompact:""}`,children:[v==="unarchive"&&a.jsx("button",{type:"button",className:`${P.actionBtn} ${P.restoreTaskBtn}`,onClick:()=>e&&!A&&g?.(e),disabled:A,title:"Unarchive task","aria-label":"Unarchive task",children:a.jsx($i,{size:i?12:16})}),a.jsx("div",{className:`${P.statusSelectWrap} ${P.statusTaxonomyDropdownWrap}`,style:N,children:a.jsx(ui,{value:y,options:w,disabled:b||!e&&!m,ariaLabel:"Status",optionLabelColor:"var(--text-primary)",hideSelectedLabel:!c,hideChevron:!c,className:`${P.statusTaxonomyDropdown} ${i?P.statusTaxonomyDropdownCompact:""} ${c?"":P.statusTaxonomyDropdownIconOnly}`,panelClassName:c?"":P.statusTaxonomyDropdownIconOnlyPanel,portalPanel:!c,panelMinWidth:c?void 0:144,panelActions:j,onChange:E=>{const S=E;if(e){d?.(e,S);return}m?.(S)}})})]})}const Xw={general:{id:"general",label:"General",generatedOption:!0},antigravity:{id:"antigravity",label:"Antigravity",logoKey:"antigravity",surfaceHint:"coding_tool",generatedOption:!0,signatureColor:"#e49d25"},"claude-code":{id:"claude-code",label:"Claude Code CLI",logoKey:"claude-code",surfaceHint:"cli",generatedOption:!0,signatureColor:"#d97757"},"claude-chat":{id:"claude-chat",label:"Claude Chat",logoKey:"claude-chat",surfaceHint:"chat_app",signatureColor:"#d97757"},cline:{id:"cline",label:"Cline",logoKey:"cline",surfaceHint:"ide",generatedOption:!0,signatureColor:"#25a9e4"},codex:{id:"codex",label:"Codex",logoKey:"codex",surfaceHint:"cli",generatedOption:!0,signatureColor:"#6366f1"},cursor:{id:"cursor",label:"Cursor",logoKey:"cursor",surfaceHint:"ide",generatedOption:!0,signatureColor:"#186e95"},"gemini-cli":{id:"gemini-cli",label:"Gemini CLI",logoKey:"gemini-cli",surfaceHint:"cli",generatedOption:!0,signatureColor:"#4285f4"},grok:{id:"grok",label:"Grok CLI",logoKey:"grok",surfaceHint:"cli",generatedOption:!0,signatureColor:"#181b95"},"grok-chat":{id:"grok-chat",label:"Grok",logoKey:"grok-chat",surfaceHint:"chat_app",signatureColor:"#181b95"},"gemini-chat":{id:"gemini-chat",label:"Gemini Spark",logoKey:"gemini-chat",surfaceHint:"chat_app",signatureColor:"#4285f4"},"mistral-chat":{id:"mistral-chat",label:"Mistral Vibe",logoKey:"mistral-chat",surfaceHint:"chat_app",signatureColor:"#fa520f"},"perplexity-chat":{id:"perplexity-chat",label:"Perplexity",logoKey:"perplexity-chat",surfaceHint:"chat_app",signatureColor:"#1fb8cd"},kiro:{id:"kiro",label:"Kiro",logoKey:"kiro",surfaceHint:"ide",generatedOption:!0,signatureColor:"#7c3aed"},openclaw:{id:"openclaw",label:"OpenClaw",surfaceHint:"agent",generatedOption:!0},vscode:{id:"vscode",label:"VS Code / Copilot",logoKey:"vscode",surfaceHint:"ide",generatedOption:!0,signatureColor:"#256ee4"},windsurf:{id:"windsurf",label:"Windsurf",logoKey:"windsurf",surfaceHint:"ide",generatedOption:!0,signatureColor:"#189587"},"chatgpt-desktop":{id:"chatgpt-desktop",label:"ChatGPT Desktop",logoKey:"chatgpt",surfaceHint:"chat_app",signatureColor:"#10a37f"}};function q8(e){const t=String(e||"").trim().toLowerCase();return t==="claude-desktop"?"claude-chat":Object.prototype.hasOwnProperty.call(Xw,t)?t:null}function y_(e){const t=q8(e);return t?Xw[t]:null}function tne(){return Object.values(Xw).filter(e=>e.generatedOption).map(({id:e,label:t})=>({id:e,label:t}))}function Y8(e){const t=e?.providerMetadata?.taskforce;return!t||typeof t!="object"||Array.isArray(t)?"":String(t.taskforceAgentId||"").trim()}function k_(e){return!!Y8(e)}function rne(e){if(!e||e.archivedAt||e.mergedIntoProfileId||k_(e)||e.surfaceType!=="agent")return!1;const t=e.providerMetadata?.connection,r=t&&typeof t=="object"&&!Array.isArray(t)?t.clientId:null,n=y_(r);return!(n?.logoKey||n?.surfaceHint&&n.surfaceHint!=="agent")}const Z8="/taskforce/assets/antigravity-DRKQga2U.png",J8="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20viewBox='0%200%202406%202406'%3e%3cpath%20d='M1%20578.4C1%20259.5%20259.5%201%20578.4%201h1249.1c319%200%20577.5%20258.5%20577.5%20577.4V2406H578.4C259.5%202406%201%202147.5%201%201828.6V578.4z'%20fill='%2374aa9c'/%3e%3cpath%20id='a'%20d='M1107.3%20299.1c-197.999%200-373.9%20127.3-435.2%20315.3L650%20743.5v427.9c0%2021.4%2011%2040.4%2029.4%2051.4l344.5%20198.515V833.3h.1v-27.9L1372.7%20604c33.715-19.52%2070.44-32.857%20108.47-39.828L1447.6%20450.3C1361%20353.5%201237.1%20298.5%201107.3%20299.1zm0%20117.5-.6.6c79.699%200%20156.3%2027.5%20217.6%2078.4-2.5%201.2-7.4%204.3-11%206.1L952.8%20709.3c-18.4%2010.4-29.4%2030-29.4%2051.4V1248l-155.1-89.4V755.8c-.1-187.099%20151.601-338.9%20339-339.2z'%20fill='%23fff'/%3e%3cuse%20xlink:href='%23a'%20transform='rotate(60%201203%201203)'/%3e%3cuse%20xlink:href='%23a'%20transform='rotate(120%201203%201203)'/%3e%3cuse%20xlink:href='%23a'%20transform='rotate(180%201203%201203)'/%3e%3cuse%20xlink:href='%23a'%20transform='rotate(240%201203%201203)'/%3e%3cuse%20xlink:href='%23a'%20transform='rotate(300%201203%201203)'/%3e%3c/svg%3e",X8="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eClaude%3c/title%3e%3cpath%20d='M4.709%2015.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0%2011.784l.055-.352.48-.321.686.06%201.52.103%202.278.158%201.652.097%202.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686%201.908%201.476%202.491%201.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97%202.97%200%2001-.104-.729L6.283.134%206.696%200l.996.134.42.364.62%201.414%201.002%202.229%201.555%203.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286%201.851-.559%202.903-.364%201.942h.212l.243-.242.985-1.306%201.652-2.064.73-.82.85-.904.547-.431h1.033l.76%201.129-.34%201.166-1.064%201.347-.881%201.142-1.264%201.7-.79%201.36.073.11.188-.02%202.856-.606%201.543-.28%201.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061%201.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093%201.068%202.006%201.81%202.509%202.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649%202.345%203.521.122%201.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674%207.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434%201.967-2.18%202.945-1.726%201.845-.414.164-.717-.37.067-.662.401-.589%202.388-3.036%201.44-1.882.93-1.086-.006-.158h-.055L4.132%2018.56l-1.13.146-.487-.456.061-.746.231-.243%201.908-1.312-.006.006z'%20fill='%23D97757'%20fill-rule='nonzero'%3e%3c/path%3e%3c/svg%3e",Q8="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiByb2xlPSJpbWciIGFyaWEtbGFiZWxsZWRieT0idGl0bGUiPgogIDx0aXRsZSBpZD0idGl0bGUiPkNsYXVkZSBDb2RlIENsYXcnZCBtYXNjb3Q8L3RpdGxlPgogIDxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiBmaWxsPSIjZDk3NzU3Ii8+CiAgPGcKICAgIGZpbGw9IiNmN2YzZWUiCiAgICBmb250LWZhbWlseT0iTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBtb25vc3BhY2UiCiAgICBmb250LXNpemU9IjM1IgogICAgZm9udC13ZWlnaHQ9IjcwMCIKICAgIHRleHQtYW5jaG9yPSJtaWRkbGUiCiAgPgogICAgPHRleHQgeD0iMTI4IiB5PSIxMDIiPiYjeDI1OTA7JiN4MjU5QjsmI3gyNTg4OyYjeDI1ODg7JiN4MjU4ODsmI3gyNTlDOyYjeDI1OEM7PC90ZXh0PgogICAgPHRleHQgeD0iMTI4IiB5PSIxMzciPiYjeDI1OUQ7JiN4MjU5QzsmI3gyNTg4OyYjeDI1ODg7JiN4MjU4ODsmI3gyNTg4OyYjeDI1ODg7JiN4MjU5QjsmI3gyNTk4OzwvdGV4dD4KICAgIDx0ZXh0IHg9IjEyOCIgeT0iMTcyIiB4bWw6c3BhY2U9InByZXNlcnZlIj4gICYjeDI1OTg7JiN4MjU5ODsgJiN4MjU5RDsmI3gyNTlEOyAgPC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==",e9="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='92px'%20height='96px'%20viewBox='0%200%2092%2096'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3eGroup%20Copy%202%3c/title%3e%3cg%20id='Page-1'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='icon-copy'%20transform='translate(-34,%20-40)'%20fill='%2324292F'%3e%3cg%20id='Group-Copy-2'%20transform='translate(34,%2040.5)'%3e%3cg%20id='Group-3-Copy-4'%20transform='translate(0,%200)'%3e%3cpath%20d='M65.4492701,16.3%20C76.3374701,16.3%2085.1635558,25.16479%2085.1635558,36.1%20L85.1635558,42.7%20L90.9027661,54.1647464%20C91.4694141,55.2966923%2091.4668177,56.6300535%2090.8957658,57.7597839%20L85.1635558,69.1%20L85.1635558,75.7%20C85.1635558,86.63554%2076.3374701,95.5%2065.4492701,95.5%20L26.0206986,95.5%20C15.1328272,95.5%206.30641291,86.63554%206.30641291,75.7%20L6.30641291,69.1%20L0.448507752,57.7954874%20C-0.14693501,56.6464093%20-0.149634367,55.2802504%200.441262896,54.1288283%20L6.30641291,42.7%20L6.30641291,36.1%20C6.30641291,25.16479%2015.1328272,16.3%2026.0206986,16.3%20L65.4492701,16.3%20Z%20M62.9301895,22%20L29.189529,22%20C19.8723267,22%2012.3191987,29.5552188%2012.3191987,38.875%20L12.3191987,44.5%20L7.44288578,53.9634655%20C6.84794449,55.1180686%206.85066096,56.4896598%207.45017099,57.6418974%20L12.3191987,67%20L12.3191987,72.625%20C12.3191987,81.9450625%2019.8723267,89.5%2029.189529,89.5%20L62.9301895,89.5%20C72.2476729,89.5%2079.8005198,81.9450625%2079.8005198,72.625%20L79.8005198,67%20L84.5682187,57.6061395%20C85.1432011,56.473244%2085.1458141,55.1345713%2084.5752587,53.9994398%20L79.8005198,44.5%20L79.8005198,38.875%20C79.8005198,29.5552188%2072.2476729,22%2062.9301895,22%20Z'%20id='Combined-Shape'%20fill-rule='nonzero'%3e%3c/path%3e%3ccircle%20id='Oval'%20cx='45.7349843'%20cy='11'%20r='11'%3e%3c/circle%3e%3c/g%3e%3crect%20id='Rectangle-Copy'%20stroke='%2324292F'%20stroke-width='8'%20x='31'%20y='44.5'%20width='5'%20height='22'%20rx='2.5'%3e%3c/rect%3e%3crect%20id='Rectangle-Copy-2'%20stroke='%2324292F'%20stroke-width='8'%20x='55'%20y='44.5'%20width='5'%20height='22'%20rx='2.5'%3e%3c/rect%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",t9="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eCodex%3c/title%3e%3cpath%20d='M19.503%200H4.496A4.496%204.496%200%20000%204.496v15.007A4.496%204.496%200%20004.496%2024h15.007A4.496%204.496%200%200024%2019.503V4.496A4.496%204.496%200%200019.503%200z'%20fill='%23fff'%3e%3c/path%3e%3cpath%20d='M9.064%203.344a4.578%204.578%200%20012.285-.312c1%20.115%201.891.54%202.673%201.275.01.01.024.017.037.021a.09.09%200%2000.043%200%204.55%204.55%200%20013.046.275l.047.022.116.057a4.581%204.581%200%20012.188%202.399c.209.51.313%201.041.315%201.595a4.24%204.24%200%2001-.134%201.223.123.123%200%2000.03.115c.594.607.988%201.33%201.183%202.17.289%201.425-.007%202.71-.887%203.854l-.136.166a4.548%204.548%200%2001-2.201%201.388.123.123%200%2000-.081.076c-.191.551-.383%201.023-.74%201.494-.9%201.187-2.222%201.846-3.711%201.838-1.187-.006-2.239-.44-3.157-1.302a.107.107%200%2000-.105-.024c-.388.125-.78.143-1.204.138a4.441%204.441%200%2001-1.945-.466%204.544%204.544%200%2001-1.61-1.335c-.152-.202-.303-.392-.414-.617a5.81%205.81%200%2001-.37-.961%204.582%204.582%200%2001-.014-2.298.124.124%200%2000.006-.056.085.085%200%2000-.027-.048%204.467%204.467%200%2001-1.034-1.651%203.896%203.896%200%2001-.251-1.192%205.189%205.189%200%2001.141-1.6c.337-1.112.982-1.985%201.933-2.618.212-.141.413-.251.601-.33.215-.089.43-.164.646-.227a.098.098%200%2000.065-.066%204.51%204.51%200%2001.829-1.615%204.535%204.535%200%20011.837-1.388zm3.482%2010.565a.637.637%200%20000%201.272h3.636a.637.637%200%20100-1.272h-3.636zM8.462%209.23a.637.637%200%2000-1.106.631l1.272%202.224-1.266%202.136a.636.636%200%20101.095.649l1.454-2.455a.636.636%200%2000.005-.64L8.462%209.23z'%20fill='url(%23lobe-icons-codex-_R_0_)'%3e%3c/path%3e%3cdefs%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-codex-_R_0_'%20x1='12'%20x2='12'%20y1='3'%20y2='21'%3e%3cstop%20stop-color='%23B1A7FF'%3e%3c/stop%3e%3cstop%20offset='.5'%20stop-color='%237A9DFF'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%233941FF'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e",r9="/taskforce/assets/cursor-BM_3k4Y4.svg",n9="/taskforce/assets/gemini-cli-icon-dBAVjCcn.png",a9="data:image/svg+xml,%3csvg%20width='28'%20height='28'%20viewBox='0%200%2028%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M14%2028C14%2026.0633%2013.6267%2024.2433%2012.88%2022.54C12.1567%2020.8367%2011.165%2019.355%209.905%2018.095C8.645%2016.835%207.16333%2015.8433%205.46%2015.12C3.75667%2014.3733%201.93667%2014%200%2014C1.93667%2014%203.75667%2013.6383%205.46%2012.915C7.16333%2012.1683%208.645%2011.165%209.905%209.905C11.165%208.645%2012.1567%207.16333%2012.88%205.46C13.6267%203.75667%2014%201.93667%2014%200C14%201.93667%2014.3617%203.75667%2015.085%205.46C15.8317%207.16333%2016.835%208.645%2018.095%209.905C19.355%2011.165%2020.8367%2012.1683%2022.54%2012.915C24.2433%2013.6383%2026.0633%2014%2028%2014C26.0633%2014%2024.2433%2014.3733%2022.54%2015.12C20.8367%2015.8433%2019.355%2016.835%2018.095%2018.095C16.835%2019.355%2015.8317%2020.8367%2015.085%2022.54C14.3617%2024.2433%2014%2026.0633%2014%2028Z'%20fill='url(%23gemini-gradient)'/%3e%3cdefs%3e%3cradialGradient%20id='gemini-gradient'%20cx='0'%20cy='0'%20r='1'%20gradientUnits='userSpaceOnUse'%20gradientTransform='translate(2.77876%2011.3795)%20rotate(18.6832)%20scale(29.8025%20238.737)'%3e%3cstop%20offset='0.0671246'%20stop-color='%239168C0'/%3e%3cstop%20offset='0.342551'%20stop-color='%235684D1'/%3e%3cstop%20offset='0.672076'%20stop-color='%231BA1E3'/%3e%3c/radialGradient%3e%3c/defs%3e%3c/svg%3e",aA="/taskforce/assets/grok-BuodbWaG.svg",s9="data:image/svg+xml,%3csvg%20width='1200'%20height='1200'%20viewBox='0%200%201200%201200'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='1200'%20height='1200'%20rx='260'%20fill='%239046FF'/%3e%3cmask%20id='mask0_1106_4856'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='272'%20y='202'%20width='655'%20height='796'%3e%3cpath%20d='M926.578%20202.793H272.637V997.857H926.578V202.793Z'%20fill='white'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_1106_4856)'%3e%3cpath%20d='M398.554%20818.914C316.315%201001.03%20491.477%201046.74%20620.672%20940.156C658.687%201059.66%20801.052%20970.473%20852.234%20877.795C964.787%20673.567%20919.318%20465.357%20907.64%20422.374C827.637%20129.443%20427.623%20128.946%20358.8%20423.865C342.651%20475.544%20342.402%20534.18%20333.458%20595.051C328.986%20625.86%20325.507%20645.488%20313.83%20677.785C306.873%20696.424%20297.68%20712.819%20282.773%20740.645C259.915%20783.881%20269.604%20867.113%20387.87%20823.883L399.051%20818.914H398.554Z'%20fill='white'/%3e%3cpath%20d='M636.123%20549.353C603.328%20549.353%20598.359%20510.097%20598.359%20486.742C598.359%20465.623%20602.086%20448.977%20609.293%20438.293C615.504%20428.852%20624.697%20424.131%20636.123%20424.131C647.555%20424.131%20657.492%20428.852%20664.447%20438.541C672.398%20449.474%20676.623%20466.12%20676.623%20486.742C676.623%20525.998%20661.471%20549.353%20636.375%20549.353H636.123Z'%20fill='black'/%3e%3cpath%20d='M771.24%20549.353C738.445%20549.353%20733.477%20510.097%20733.477%20486.742C733.477%20465.623%20737.203%20448.977%20744.41%20438.293C750.621%20428.852%20759.814%20424.131%20771.24%20424.131C782.672%20424.131%20792.609%20428.852%20799.564%20438.541C807.516%20449.474%20811.74%20466.12%20811.74%20486.742C811.74%20525.998%20796.588%20549.353%20771.492%20549.353H771.24Z'%20fill='black'/%3e%3c/g%3e%3c/svg%3e",o9="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eMistral%3c/title%3e%3cpath%20d='M3.428%203.4h3.429v3.428H3.428V3.4zm13.714%200h3.43v3.428h-3.43V3.4z'%20fill='gold'%3e%3c/path%3e%3cpath%20d='M3.428%206.828h6.857v3.429H3.429V6.828zm10.286%200h6.857v3.429h-6.857V6.828z'%20fill='%23FFAF00'%3e%3c/path%3e%3cpath%20d='M3.428%2010.258h17.144v3.428H3.428v-3.428z'%20fill='%23FF8205'%3e%3c/path%3e%3cpath%20d='M3.428%2013.686h3.429v3.428H3.428v-3.428zm6.858%200h3.429v3.428h-3.429v-3.428zm6.856%200h3.43v3.428h-3.43v-3.428z'%20fill='%23FA500F'%3e%3c/path%3e%3cpath%20d='M0%2017.114h10.286v3.429H0v-3.429zm13.714%200H24v3.429H13.714v-3.429z'%20fill='%23E10500'%3e%3c/path%3e%3c/svg%3e",i9="data:image/svg+xml,%3csvg%20fill='%231FB8CD'%20role='img'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3ePerplexity%3c/title%3e%3cpath%20d='M22.3977%207.0896h-2.3106V.0676l-7.5094%206.3542V.1577h-1.1554v6.1966L4.4904%200v7.0896H1.6023v10.3976h2.8882V24l6.932-6.3591v6.2005h1.1554v-6.0469l6.9318%206.1807v-6.4879h2.8882V7.0896zm-3.4657-4.531v4.531h-5.355l5.355-4.531zm-13.2862.0676%204.8691%204.4634H5.6458V2.6262zM2.7576%2016.332V8.245h7.8476l-6.1149%206.1147v1.9723H2.7576zm2.8882%205.0404v-3.8852h.0001v-2.6488l5.7763-5.7764v7.0111l-5.7764%205.2993zm12.7086.0248-5.7766-5.1509V9.0618l5.7766%205.7766v6.5588zm2.8882-5.0652h-1.733v-1.9723L13.3948%208.245h7.8478v8.087z'/%3e%3c/svg%3e",c9="/taskforce/assets/vscode-C_7wk1WI.svg",l9="data:image/svg+xml,%3csvg%20width='1024'%20height='1024'%20viewBox='0%200%201024%201024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_109_63)'%3e%3crect%20width='1024'%20height='1024'%20fill='%23F9F3E9'/%3e%3cpath%20d='M897.246%20286.869H889.819C850.735%20286.808%20819.017%20318.46%20819.017%20357.539V515.589C819.017%20547.15%20792.93%20572.716%20761.882%20572.716C743.436%20572.716%20725.02%20563.433%20714.093%20547.85L552.673%20317.304C539.28%20298.16%20517.486%20286.747%20493.895%20286.747C457.094%20286.747%20423.976%20318.034%20423.976%20356.657V515.619C423.976%20547.181%20398.103%20572.746%20366.842%20572.746C348.335%20572.746%20329.949%20563.463%20319.021%20547.881L138.395%20289.882C134.316%20284.038%20125.154%20286.93%20125.154%20294.052V431.892C125.154%20438.862%20127.285%20445.619%20131.272%20451.34L309.037%20705.2C319.539%20720.204%20335.033%20731.344%20352.9%20735.392C397.616%20745.557%20438.77%20711.135%20438.77%20667.278V508.406C438.77%20476.845%20464.339%20451.279%20495.904%20451.279H495.995C515.02%20451.279%20532.857%20460.562%20543.785%20476.145L705.235%20706.661C718.659%20725.835%20739.327%20737.218%20763.983%20737.218C801.606%20737.218%20833.841%20705.9%20833.841%20667.308V508.376C833.841%20476.815%20859.41%20451.249%20890.975%20451.249H897.276C901.233%20451.249%20904.43%20448.053%20904.43%20444.097V294.021C904.43%20290.065%20901.233%20286.869%20897.276%20286.869H897.246Z'%20fill='%230B100F'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_109_63'%3e%3crect%20width='1024'%20height='1024'%20rx='100'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e",d9={antigravity:Z8,chatgpt:J8,"claude-chat":X8,"claude-code":Q8,cline:e9,codex:t9,cursor:r9,"gemini-chat":a9,"gemini-cli":n9,grok:aA,"grok-chat":aA,kiro:s9,"mistral-chat":o9,"perplexity-chat":i9,vscode:c9,windsurf:l9};function Zs(e){return e?d9[e]:""}function u9(e){if(!e||k_(e))return"";const t=e.providerMetadata?.connection,r=t&&typeof t=="object"&&!Array.isArray(t)?t.clientId:null,n=y_(r);if(n?.logoKey)return Zs(n.logoKey);if(!["chat_app","ide","cli","coding_tool"].includes(String(e.surfaceType||"")))return"";const s=[e.username,e.name].map(i=>String(i||"").toLowerCase()).join(" ");return!s.trim()||s.includes("openclaw")||s.includes("hermes agent")?"":s.includes("chatgpt")?Zs("chatgpt"):s.includes("claude code")?Zs("claude-code"):s.includes("claude desktop")?Zs("claude-chat"):s.includes("cline")?Zs("cline"):s.includes("codex")?Zs("codex"):s.includes("cursor")?Zs("cursor"):s.includes("cascade")||s.includes("windsurf")?Zs("windsurf"):s.includes("antigravity")?Zs("antigravity"):s.includes("gemini")?Zs("gemini-cli"):s.includes("grok")?Zs("grok"):s.includes("mistral")||s.includes("le chat")?Zs("mistral-chat"):s.includes("perplexity")?Zs("perplexity-chat"):s.includes("kiro")?Zs("kiro"):s.includes("visual studio code")||s.includes("vs code")||s.includes("vscode")?Zs("vscode"):""}function f9(e,t,r){const n=typeof e=="string"?e.trim():"";if(!n||n.startsWith("data:")||n.startsWith("blob:"))return n;const s=Number(t),i=Number.isFinite(s)&&s>0?String(Math.floor(s)):typeof r=="string"&&r.trim().length>0?r.trim():"";if(!i)return n;const[l,c=""]=n.split("#"),d=l.includes("?")?"&":"?";return`${l}${d}v=${encodeURIComponent(i)}${c?`#${c}`:""}`}function v_(e,t){const r=String(e||"").trim(),n=String(t||"").trim(),[s,i]=o.useState(r||n);return o.useEffect(()=>{i(r||n)},[r,n]),{activeImageUrl:s,handleImageError:()=>{if(s&&n&&s!==n){i(n);return}i("")}}}const m9="_identity_1owqe_1",p9="_avatar_1owqe_9",h9="_person_1owqe_17",g9="_provider_1owqe_21",y9="_unassigned_1owqe_25",k9="_card_1owqe_31",v9="_label_1owqe_51",Ad={identity:m9,avatar:p9,person:h9,provider:g9,unassigned:y9,card:k9,label:v9};function gy({option:e,size:t=22,variant:r="default",unassignedIcon:n}){const s=Iw(e.value),i=s?"":f9(e.avatarUrl,e.avatarRevision,e.avatarUpdatedAt),l=!s&&e.kind==="agent"?u9({name:e.label,username:e.username,surfaceType:e.surfaceType,providerMetadata:e.providerMetadata}):"",{activeImageUrl:c,handleImageError:d}=v_(i,l),m=Xs,f=s?hp:e.icon,g=s&&n?n:f&&m[f]?m[f]:Md,h=s?Math.max(13,Math.round(t*.56)):Math.max(14,t-6),y=ta(e.color)||(e.kind==="member"?"var(--color-green-500, #22c55e)":"var(--text-secondary, #888)");return a.jsx("span",{className:`${Ad.avatar} ${l?Ad.provider:Ad.person} ${s?Ad.unassigned:""} ${r==="card"?Ad.card:""}`.trim(),style:{width:t,height:t,color:c?void 0:y,"--assignee-avatar-color":y},"data-assignee-avatar":r,"aria-hidden":"true",children:c?a.jsx("img",{src:c,alt:"",onError:d}):a.jsx(g,{size:h,strokeWidth:s?1.6:void 0})})}function pf({option:e,size:t=22}){return a.jsxs("span",{className:Ad.identity,children:[a.jsx(gy,{option:e,size:t}),a.jsx("span",{className:Ad.label,children:e.label})]})}const w_=Object.freeze(["Target","Route","Flag","Rocket","Briefcase","Folder","Layers","Map","Compass","Landmark","BookOpen","Lightbulb","Wrench","Shield","Bug","Palette","Camera","Music","Heart","Globe","Users","Sparkles","FlaskConical","Code"]),b_=Object.freeze(["red","orange","amber","green","teal","sky","blue","indigo","violet"]),w9=new Set(w_),b9=new Set(b_);function S9(e){if(e==null||e==="")return null;const t=typeof e=="string"?e.trim():"";return w9.has(t)?t:null}function A9(e){if(e==null||e==="")return null;const t=typeof e=="string"?e.trim().toLowerCase():"";return b9.has(t)?t:null}function C9(e){const t=S9(e.icon),r=A9(e.color);return{icon:t||(e.entityType==="initiative"?"Target":"Route"),color:r,customized:!!(t||r)}}function sA(e){return e?`var(--planning-identity-${e})`:"var(--planning-identity-default)"}const I9="_root_kfvfr_1",_9="_trigger_kfvfr_6",T9="_marker_kfvfr_20",x9="_card_kfvfr_31",R9="_inline_kfvfr_32",P9="_detail_kfvfr_33",j9="_disabled_kfvfr_34",E9="_popover_kfvfr_36",N9="_colorGrid_kfvfr_48",D9="_colorOption_kfvfr_55",M9="_iconOption_kfvfr_66",L9="_iconGrid_kfvfr_70",O9="_selected_kfvfr_91",B9="_divider_kfvfr_100",W9="_reset_kfvfr_106",Js={root:I9,trigger:_9,marker:T9,card:x9,inline:R9,detail:P9,disabled:j9,popover:E9,colorGrid:N9,colorOption:D9,iconOption:M9,iconGrid:L9,selected:O9,divider:B9,reset:W9},oA={Target:C0,Route:A0,Flag:S0,Rocket:b0,Briefcase:w0,Folder:cc,Layers:Tg,Map:v0,Compass:k0,Landmark:y0,BookOpen:g0,Lightbulb:h0,Wrench:p0,Shield:m0,Bug:f0,Palette:u0,Camera:d0,Music:l0,Heart:c0,Globe:i0,Users:pg,Sparkles:ZA,FlaskConical:o0,Code:s0};function vp({entityType:e,entityId:t,icon:r,color:n,disabled:s=!1,size:i="card",onChange:l}){const[c,d]=ne.useState(!1),[m,f]=ne.useState(!1),[g,h]=ne.useState(null),[y,k]=ne.useState(),[v,A]=ne.useState({top:0,left:0}),b=ne.useRef(null),w=ne.useRef(null),R=ne.useRef(null),N=g&&Object.prototype.hasOwnProperty.call(g,"icon")?g.icon:r,j=g&&Object.prototype.hasOwnProperty.call(g,"color")?g.color:n,E=C9({entityType:e,icon:N,color:j}),S=oA[E.icon],L=!s&&!!l;ne.useEffect(()=>{if(!c)return;const H=q=>{const z=q.target;!b.current?.contains(z)&&!R.current?.contains(z)&&d(!1)};return document.addEventListener("pointerdown",H),()=>document.removeEventListener("pointerdown",H)},[c]),ne.useLayoutEffect(()=>{if(!c)return;const H=()=>{const q=w.current?.getBoundingClientRect();if(!q)return;k(w.current?.closest("[data-theme]")?.dataset.theme);const z=R.current?.getBoundingClientRect(),M=z?.width||248,Z=z?.height||320,J=8,ee=8,te=Math.max(ee,Math.min(q.left,window.innerWidth-M-ee)),fe=q.bottom+J,Ie=fe+Z<=window.innerHeight-ee?fe:Math.max(ee,q.top-Z-J);A({top:Ie,left:te})};return H(),window.addEventListener("resize",H),window.addEventListener("scroll",H,!0),()=>{window.removeEventListener("resize",H),window.removeEventListener("scroll",H,!0)}},[c]),ne.useEffect(()=>{if(!g)return;const H=!Object.prototype.hasOwnProperty.call(g,"icon")||(g.icon??null)===(r??null),q=!Object.prototype.hasOwnProperty.call(g,"color")||(g.color??null)===(n??null);H&&q&&h(null)},[n,r,g]);const _=async H=>{if(!(!l||m)){h(q=>({...q,...H})),f(!0);try{await l(H)}catch{h(null)}finally{f(!1)}}},T=a.jsx("span",{className:`${Js.marker} ${Js[i]} ${s?Js.disabled:""}`.trim(),style:{color:sA(E.color)},"aria-hidden":"true",children:a.jsx(S,{size:i==="detail"?26:i==="inline"?18:24,strokeWidth:1.9})});return L?a.jsxs("div",{ref:b,className:Js.root,onClick:H=>H.stopPropagation(),children:[a.jsx("button",{ref:w,type:"button",className:Js.trigger,onClick:()=>d(H=>!H),onKeyDown:H=>H.stopPropagation(),"aria-label":`Change ${e} icon and color`,"aria-expanded":c,disabled:m,children:T}),c?uc.createPortal(a.jsxs("div",{ref:R,className:Js.popover,role:"dialog","aria-label":`${e} icon and color`,"aria-busy":m,"data-theme":y,style:v,onClick:H=>H.stopPropagation(),onKeyDown:H=>H.stopPropagation(),children:[a.jsx("div",{className:Js.colorGrid,"aria-label":"Colors",children:b_.map(H=>a.jsx("button",{type:"button",className:`${Js.colorOption} ${E.color===H?Js.selected:""}`.trim(),style:{backgroundColor:sA(H)},onClick:()=>{_({color:H})},"aria-label":`${H} color`,"aria-pressed":E.color===H,disabled:m},H))}),a.jsx("div",{className:Js.divider}),a.jsx("div",{className:Js.iconGrid,"aria-label":"Icons",children:w_.map(H=>{const q=oA[H];return a.jsx("button",{type:"button",className:`${Js.iconOption} ${E.icon===H?Js.selected:""}`.trim(),onClick:()=>{_({icon:H})},"aria-label":H,"aria-pressed":E.icon===H,disabled:m,children:a.jsx(q,{size:18,strokeWidth:1.8})},H)})}),a.jsx("div",{className:Js.divider}),a.jsx("button",{type:"button",className:Js.reset,onClick:()=>{_({icon:null,color:null})},disabled:!E.customized||m,children:"Reset to default"})]}),document.body):null]}):T}function S_({workstreams:e,onSelect:t,disabled:r=!1}){const n=ne.useMemo(()=>e.filter(l=>!l.isArchived),[e]),s=ne.useMemo(()=>new Map(n.map(l=>[l.id,l])),[n]),i=ne.useMemo(()=>n.map(l=>({value:l.id,label:`${lf(l)||l.id} — ${l.title}`})),[n]);return a.jsx(ui,{value:"",options:i,onChange:l=>{const c=s.get(String(l));c&&t(c)},placeholder:"Select workstream…",ariaLabel:"Link task to workstream",title:i.length>0?"Link to workstream":"No workstreams available",disabled:r||i.length===0,className:P.taskWorkstreamPicker,panelClassName:P.taskWorkstreamPickerPanel,portalPanel:!0,panelAlign:"start",panelMinWidth:280,searchable:!0,searchPlaceholder:"Search workstreams…",noResultsText:"No matching workstreams.",hideChevron:!0,triggerContent:a.jsx("span",{className:P.taskWorkstreamPickerIcon,children:a.jsx(Jm,{size:13,"aria-hidden":"true"})}),renderOptionContent:l=>{const c=s.get(String(l.value));return c?a.jsxs("span",{className:P.taskWorkstreamPickerOption,children:[a.jsx(vp,{entityType:"workstream",entityId:c.id,icon:c.icon,color:c.color,size:"inline",disabled:!0}),a.jsx("span",{children:lf(c)||c.id}),a.jsx("span",{children:c.title})]}):l.label}})}const $9="_root_evk0k_1",F9="_compact_evk0k_21",U9="_outline_evk0k_26",z9="_foldFill_evk0k_47",H9="_foldLine_evk0k_56",V9="_label_evk0k_60",zu={root:$9,compact:F9,outline:U9,foldFill:z9,foldLine:H9,label:V9};function G9({label:e,compact:t=!1,accentColor:r}){const n=r?{"--document-type-accent":r}:void 0;return a.jsxs("span",{className:`${zu.root} ${t?zu.compact:""}`.trim(),style:n,"aria-hidden":"true",children:[a.jsxs("svg",{className:zu.outline,viewBox:"0 0 28 28",focusable:"false",children:[a.jsx("path",{d:"M2 0.75h18.25l7 7V26q0 1.25-1.25 1.25H2Q0.75 27.25 0.75 26V2Q0.75 0.75 2 0.75Z"}),a.jsx("path",{className:zu.foldFill,d:"M20.25 0.75v7h7Z"}),a.jsx("path",{className:zu.foldLine,d:"M20.25 0.75v7h7"})]}),a.jsx("span",{className:zu.label,children:e})]})}const{MessageSquare:K9,Gauge:q9,ClipboardList:Y9,HelpCircle:Z9}=Xs;function J9(e,t){if(!e)return null;const r=String(e.type==="comment"?e.comment.author:e.event.actor).trim(),n=e.type==="comment"?e.comment.actor:e.event.actorProfile;if(!r&&!n)return null;const s=r.toLowerCase(),i=t.find(v=>String(v.value||"").trim().toLowerCase()===s),l=e.type==="comment"?n?.kind==="ai"?"ai":n?.kind==="human"?"human":i?.kind==="agent"?"ai":i?.kind==="member"?"human":null:e.event.actorType,c=l==="system"||s==="system"?"system":l==="ai"||n?.kind==="ai"||i?.kind==="agent"?"agent":"member";if(c==="system")return{label:"System"};const d=String(n?.label||"").trim(),m=String(i?.label||"").trim(),f=!s||s==="user"||s==="human"||s==="ai",g=/^(?:ai-profile|user|member)-[0-9a-f-]{8,}$/i.test(r)||/^[0-9a-f]{16,}$/i.test(r),h=r.replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,v=>v.toUpperCase()),y=d||m||(c==="agent"&&(f||g)?"AI Agent":"")||(f||g?"Workspace member":h)||(c==="agent"?"AI Agent":"Workspace member"),k=ta(n?.color||i?.color);return{label:y,color:k}}const X9=({task:e,searchQuery:t="",copiedId:r=null,taxonomies:n=[],types:s=[],priorities:i=[],categories:l=[],assigneeOptions:c=[],workstreams:d=[],taskWorkstream:m=null,taskInitiative:f=null,workspaceId:g=null,isOverlay:h=!1,isArchived:y=!1,readOnlyMode:k=null,isRecentlyChanged:v=!1,selectable:A=!1,selected:b=!1,onSelectionChange:w,onClick:R,onCopyId:N,onToggleInProgress:j,onToggleReview:E,onToggleComplete:S,onToggleCancel:L,onSetStatus:_,onArchiveTask:T,onUnarchive:H,onDelete:q,deleteActionTitle:z,taskReferences:M,onAssigneeChange:Z,onWorkstreamChange:J,compressed:ee=!1,showStatusLabel:te=!1,showDescription:fe=!0,showAttachments:Ie=!0,showChecklistProgress:$e=!0,showLatestActivity:Ye=!0,tintActivityBackground:ye=!1})=>{const ge=kw(e),oe=ge.label||(ge.isProvisional?"Pending":""),ie=ge.isProvisional,me=!!ge.label,W=lf(m)||m?.id||"",V=GI(f)||f?.id||"",B=i.find(U=>String(U.value)===String(e.priority)),D=zo(e.status),be=ta(D.color),Se=l.find(U=>U.value===e.category||U.label===e.category),K=typeof e.complexity=="number"?e.complexity:Number(e.complexity??3),Y=Number.isFinite(K)?Math.max(1,Math.min(5,Math.round(K))):3,G={1:"Tiny",2:"Low",3:"Mid",4:"High",5:"Epic"},ae={1:"tiny",2:"low",3:"medium",4:"high",5:"epic"},_e=G[Y],Oe=`var(--complexity-${ae[Y]})`,Fe=np(e.assignee,c),st=ne.useMemo(()=>{const U=String(e.assignee||"").trim();if(!U||U===Ed.value)return Ed;const he=MC(c,e.assignee).find(Et=>String(Et.value||"").trim()===U);if(he)return he;const Ke=wv(U);return{...Ed,value:U,label:Fe,icon:Ke==="agent"?"Bot":"User",color:Ke==="agent"?"#8b5cf6":"#22c55e",kind:Ke}},[Fe,c,e.assignee]),ft=ne.useMemo(()=>e.latestActivity??AC(e),[e]),xe=ne.useMemo(()=>J9(ft,c),[c,ft]),ke=k||(e.isDeleted?"deleted":y?"archived":null),ve=ke!==null,Ve=ne.useMemo(()=>{if(ke!=="deleted"||!e.deletedExpiresAt)return"";const U=new Date(e.deletedExpiresAt);return Number.isNaN(U.getTime())?"":`Trash expires ${U.toLocaleString()}`},[ke,e.deletedExpiresAt]),Ne=!ve&&!h&&!!Z&&c.length>0,de=!ve&&!h&&!!J,[x,le]=ne.useState(!1),Re=ne.useCallback((U,he)=>{const Ke=String(he||"").trim();if(Ke){if(U==="assignee")return np(Ke,c);if(U==="workstreamId"&&Ke===m?.id)return W||m.id;if(U==="initiativeId"&&Ke===f?.id)return V||f.id}},[c,V,f,m,W]),Je=ne.useMemo(()=>$x(ft,Re),[Re,ft]),X=ne.useMemo(()=>e.commentCount??ww(e).filter(U=>U.type==="comment").length,[e]),Ze=[kr.taskItem,e.status==="on-hold"?kr.onHold:"",e.status==="in-progress"?kr.inProgress:"",e.status==="review"?kr.readyForReview:"",e.status==="done"?kr.completed:"",e.status==="cancelled"?kr.cancelled:"",v?kr.taskItemRecentlyChanged:"",h?kr.kanbanCardOverlay:"",ve?kr.readOnly:"",y?kr.archived:"",ee?kr.compressed:"",b?kr.selected:""].filter(Boolean).join(" "),re=ta(B?.color),Ee=s.find(U=>U.value===e.type),je=ta(Ee?.color)||nN(e.type),Pe=U=>{const he=typeof U=="string"?U:U.path,Ke=typeof U=="string"?"":(U.fsPath||"").trim(),Et=typeof U=="string"?"":(U.displayName||"").trim(),vt=typeof U=="string"?"":(U.originalFilename||"").trim(),Bt=typeof U=="string"?"":(U.caption||"").trim();return[Ke,vt,Et,Bt,he].some(er=>/\.(png|jpe?g|webp|gif)(\?|#|$)/i.test(er))},Ce=U=>{const he=typeof U=="string"?U:U.path,Ke=he.includes("/api/taskforce/documents/"),Et=typeof U=="string"?"":(U.displayName||"").trim();if(Ke&&typeof U!="string")return _8({displayName:U.displayName,originalFilename:U.originalFilename,fsPath:U.fsPath,assetId:U.assetId||null});const vt=typeof U=="string"?"":(U.caption||"").trim();if(vt)return vt;if(Et)return Et;const Bt=typeof U=="string"?"":(U.originalFilename||"").trim();return Bt||he.split("?")[0].split("#")[0].split("/").pop()||"Context file"},Te=U=>{const he=typeof U=="string"?U:U.path,Ke=typeof U=="string"?"":(U.fsPath||"").trim(),Et=typeof U=="string"?"":(U.caption||"").trim(),vt=typeof U=="string"?"":(U.originalFilename||"").trim(),Bt=[];if(Ke&&Bt.push(Ke),vt&&Bt.push(vt),Et&&Bt.push(Et),he.includes("/api/taskforce/context-link?path="))try{const er=new URL(he,"http://localhost").searchParams.get("path");er&&Bt.push(er)}catch{}Bt.push(he);for(const dr of Bt){const cr=dr.split("?")[0].split("#")[0].split("/").pop()||"",Ot=cr.lastIndexOf(".");if(Ot<=0||Ot===cr.length-1)continue;const fr=cr.slice(Ot+1);if(fr)return fr.slice(0,5).toUpperCase()}return"FILE"},pe={"--task-status-color":be||"var(--border-primary)","--task-card-tint-color":ve?"transparent":be||"transparent","--task-change-glow-color":be||"var(--brand-primary)",...be?{borderColor:be}:{}},Me=U=>U.replace(/\b\w/g,he=>he.toUpperCase()),et=kp(n,[e]),Ue=e.checklistItems||[],yt=e.checklistCount??Ue.length,Le=e.completedChecklistCount??(yt>0?Ue.filter(U=>U.isCompleted).length:0),mt=(U,he)=>{U.stopPropagation(),N?.(U,he)},kt=async U=>{if(!J||x)return!1;le(!0);try{return await J(e,U)!==!1}finally{le(!1)}},He=U=>{const he=typeof U=="string"?U:U.path;return/^https?:\/\//i.test(he)?(window.open(he,"_blank"),!0):ip(U,{ownerType:"task",ownerId:e.id,ownerReferenceLabel:oe,workspaceId:g})},rt=ee||h||!e.cardCoverAssetId?null:e.cardCoverAttachment&&typeof e.cardCoverAttachment!="string"&&e.cardCoverAttachment.assetId===e.cardCoverAssetId?e.cardCoverAttachment:(e.attachments||[]).find(U=>typeof U!="string"&&String(U.assetId||"").trim()===e.cardCoverAssetId&&U.linkRole==="image"&&Pe(U))||null,It=rt?`${rt.assetId||""}:${rt.path}`:"",Xe=(e.attachments||[]).filter(U=>!rt||typeof U=="string"||U.assetId!==rt.assetId),[wt,at]=ne.useState(!1);return ne.useEffect(()=>{at(!1)},[It]),a.jsxs("div",{className:Ze,onClick:()=>R?.(e),style:pe,"data-task-card":"true",children:[a.jsxs("div",{className:kr.taskHeader,children:[A&&a.jsx("label",{className:kr.selectionControl,onClick:U=>U.stopPropagation(),onPointerDown:U=>U.stopPropagation(),children:a.jsx("input",{type:"checkbox",checked:b,onChange:U=>w?.(U.target.checked),"aria-label":`Select ${oe||e.title} for restore`})}),a.jsxs("div",{className:kr.taskReferenceCluster,children:[f?a.jsxs(a.Fragment,{children:[a.jsx(nf,{copied:r===V,onClick:U=>mt(U,V),disabled:!V,title:f.title,ariaLabel:`Copy initiative reference ${V}: ${f.title}`,className:y?kr.archiveBadge:"",label:V}),a.jsx("span",{className:kr.taskReferenceDivider,children:"/"})]}):null,m?a.jsxs(a.Fragment,{children:[a.jsx(nf,{copied:r===W,onClick:U=>mt(U,W),disabled:!W,title:m.title,ariaLabel:`Copy workstream reference ${W}: ${m.title}`,className:y?kr.archiveBadge:"",label:W}),a.jsx("span",{className:kr.taskReferenceDivider,children:"/"})]}):null,de&&!m?a.jsx("div",{className:kr.taskReferenceSegment,onClick:U=>U.stopPropagation(),onPointerDown:U=>U.stopPropagation(),onKeyDown:U=>U.stopPropagation(),children:a.jsx(S_,{workstreams:d,disabled:x,onSelect:U=>{kt(U.id)}})}):null,oe?a.jsx("div",{className:kr.taskReferenceSegment,onClick:U=>U.stopPropagation(),onPointerDown:U=>U.stopPropagation(),onKeyDown:U=>U.stopPropagation(),children:a.jsx(nf,{copied:me&&r===ge.label,onClick:U=>mt(U,ge.label),disabled:!me,title:ie?"Temporary identifier — replaced after synchronization.":"Copy task reference",ariaLabel:ie?`Copy temporary task reference ${oe}`:void 0,className:y?kr.archiveBadge:"",label:Xh(oe,t),provisional:ie})}):null]}),a.jsx("div",{className:kr.taskActions,onClick:U=>U.stopPropagation(),children:ve?H||q?a.jsxs(a.Fragment,{children:[H&&a.jsx("button",{type:"button",className:P.actionBtn,onClick:()=>H(e.id),title:ke==="deleted"?`Restore to ${e.isArchived===!0?"Archived":"Active"}`:"Restore archived task",children:a.jsx($i,{size:16})}),q&&a.jsx("button",{type:"button",className:`${P.actionBtn} ${P.deleteBtn}`,onClick:()=>q(e.id),title:z||(ke==="deleted"?"Delete Permanently":"Move to Trash"),children:a.jsx(fp,{size:16})})]}):null:a.jsx(Kg,{task:e,compressed:ee,shortLabels:!0,showLabel:te,onSetStatus:(U,he)=>{if(_){_(U,he);return}if(he==="in-progress"){j?.(U);return}if(he==="review"){E?.(U);return}if(he==="done"){S?.(U);return}he==="cancelled"&&L?.(U)},onArchiveTask:T})})]}),rt&&!wt&&a.jsx("button",{type:"button",className:kr.taskCover,"aria-label":`Preview ${Ce(rt)}`,onPointerDown:U=>U.stopPropagation(),onClick:U=>{U.stopPropagation(),!He(rt)&&(Kv(rt,{taskId:e.id,taskReferenceLabel:oe})||window.open(rt.path,"_blank"))},children:a.jsx("img",{src:rt.path,alt:rt.caption||rt.displayName||rt.originalFilename||e.title,loading:"lazy",decoding:"async",onError:()=>at(!0)})}),a.jsxs("div",{className:kr.taskContent,children:[ve&&a.jsx("div",{className:`${kr.taskMeta} ${kr.taskMetaCompact}`}),a.jsxs("div",{children:[a.jsxs("div",{className:kr.taskTitle,style:ee?{fontSize:"13px",lineHeight:"1.4"}:{},children:[ke==="archived"&&"✓ ",ke==="deleted"&&"Deleted: ",Xh(e.title,t)]}),Ve&&a.jsx("div",{className:kr.deletedExpiry,title:"Trash items are permanently deleted 90 days after deletion.",children:Ve}),fe&&e.description&&!ve&&!ee&&a.jsx("div",{className:kr.taskDescription,children:a.jsx(py,{variant:"compact",taskReferences:M,children:e.description})})]}),Ie&&Xe.length>0&&!ve&&!ee&&a.jsxs("div",{className:kr.attachmentThumbnails,children:[a.jsx("div",{className:kr.attachmentImageRow,children:Xe.map((U,he)=>{const Ke=typeof U=="string"?U:U.path;return Pe(U)?a.jsx("button",{type:"button",className:kr.attachmentThumbnail,"aria-label":`Preview ${Ce(U)}`,onPointerDown:Et=>Et.stopPropagation(),onClick:Et=>{Et.stopPropagation(),!He(U)&&(Kv(typeof U=="string"?{path:Ke}:U,{taskId:e.id,taskReferenceLabel:oe})||window.open(Ke,"_blank"))},children:a.jsx("img",{src:Ke,alt:`Attachment ${he}`})},he):null})}),a.jsx("div",{className:kr.attachmentDocumentList,children:Xe.map((U,he)=>{const Ke=typeof U=="string"?U:U.path,Et=typeof U=="string"?void 0:U.fsPath,vt=Ce(U);if(Pe(U))return null;const Bt=Te(U),dr=aN(Bt);return a.jsxs("button",{type:"button",className:kr.contextDocThumb,onPointerDown:er=>er.stopPropagation(),onClick:er=>{if(er.stopPropagation(),He(U))return;const cr=typeof U=="string"?{path:U,taskId:e.id}:{...U,taskId:e.id};f_(cr,Et)||window.open(Ke,"_blank")},title:vt,"aria-label":`${vt} ${Bt}`,style:{"--context-doc-accent":dr},children:[a.jsx(G9,{label:Bt,accentColor:dr,compact:!0}),a.jsx("span",{className:kr.contextDocMain,children:a.jsx("span",{className:kr.contextDocName,children:vt})})]},he)})})]}),e.status==="cancelled"&&e.canceledReason&&!ee&&a.jsxs("div",{className:kr.taskCancellationReason,children:[a.jsx("strong",{children:"Cancellation Reason:"})," ",Xh(e.canceledReason,t)]}),Ye&&(Je||X>0)&&!ve&&!ee&&a.jsxs("div",{className:`${kr.taskLatestComment} ${ye&&xe?.color?kr.taskLatestCommentTinted:""}`,"data-task-activity-summary":"true",style:xe?.color?{"--task-activity-accent":xe.color}:void 0,children:[a.jsxs("div",{className:kr.taskLatestCommentHeader,children:[a.jsxs("div",{className:kr.taskLatestActivityHeading,children:[a.jsx("strong",{children:Je?"Latest Activity:":"Activity:"}),Je&&xe?a.jsx("span",{className:kr.taskLatestActivityActor,title:xe.label,children:xe.label}):null]}),X>0&&a.jsxs("span",{className:`${P.metaBadge} ${kr.taskCommentCount}`,title:`${X} ${X===1?"comment":"comments"}`,"aria-label":`${X} ${X===1?"comment":"comments"}`,children:[a.jsx(K9,{size:12,"aria-hidden":"true"}),a.jsx("span",{children:X})]})]}),Je&&a.jsx("div",{className:kr.taskLatestCommentText,title:Je,children:Xh(Je,t)})]}),!ve&&et.length>0&&!ee&&a.jsx("div",{className:`${kr.taskSpecialists} ${kr.taxonomiesList}`,children:et.map(U=>{const he=e.taxonomies?.[U.id];return he?(Array.isArray(he)?he:[he]).map(Et=>{const vt=U.options.find(Ot=>Ot.value===Et);if(!vt)return null;const Bt=Xs[vt.icon||"Layers"]||Tg,dr=ta(vt.color)||"var(--text-primary)",er=U.status==="retired"?`${U.label} (Retired)`:U.label,cr=vt.status==="retired"?`${vt.label} (Retired)`:vt.label;return a.jsx("span",{className:P.specialistBadge,style:{borderColor:`${dr}50`,backgroundColor:`${dr}15`,color:dr},title:`${er}: ${Me(cr)}`,children:a.jsx(Bt,{size:10})},`${U.id}-${Et}`)}):null})}),a.jsx("div",{className:kr.taskMeta,children:ve?a.jsx("span",{children:e.category}):a.jsx(a.Fragment,{children:a.jsxs("div",{className:kr.taskMetaRow,style:ee?{marginBottom:0}:void 0,children:[a.jsxs("div",{className:kr.taskMetaBadgeGroup,"data-task-meta-primary":"true",children:[(()=>{const U=ta(Se?.color),he=Se?.icon||"Folder",Ke=Xs[he]||cc;return a.jsx("span",{className:`${P.metaBadge} ${kr.taskMetaCategory}`,title:Me(e.category),style:{color:U||"var(--text-secondary)",backgroundColor:U?`${U}15`:"var(--bg-tertiary)",borderColor:U?`${U}40`:"transparent"},children:a.jsx(Ke,{size:14})})})(),a.jsx("span",{className:`${P.metaBadge} ${kr.taskMetaType} ${P[`type_${e.type}`]||""}`,title:Me(e.type||wo),style:{color:`var(--type-color, ${je})`,backgroundColor:`color-mix(in srgb, var(--type-color, ${je}), transparent 90%)`,borderColor:`color-mix(in srgb, var(--type-color, ${je}), transparent 75%)`},children:Ee?.icon?(()=>{const U=Xs[Ee.icon]||Z9;return a.jsx(U,{size:14})})():g8(e.type,14)}),B&&a.jsx("span",{className:`${P.metaBadge} ${kr.taskMetaPriority}`,style:{color:re||"var(--text-secondary)",backgroundColor:re?`${re}15`:"var(--bg-tertiary)",borderColor:re?`${re}40`:"var(--border-color)"},title:`${B.label}`,children:(()=>{const U=B.icon||"AlertCircle",he=Xs[U]||I0;return a.jsx(he,{size:14})})()}),$e&&yt>0&&a.jsxs("span",{className:P.metaBadge,title:`${Le}/${yt} checklist items complete`,style:{color:"var(--text-muted)",backgroundColor:"var(--bg-tertiary)",borderColor:"var(--border-primary)",gap:"4px",padding:"0 8px"},children:[a.jsx(Y9,{size:14}),a.jsx("span",{children:`${Le}/${yt}`})]})]}),a.jsxs("div",{className:kr.taskMetaIdentityGroup,"data-task-meta-identity":"true",children:[a.jsxs("span",{className:P.metaBadge,title:`AI-estimated complexity: ${_e} (${Y}/5)`,style:{color:Oe,backgroundColor:`color-mix(in srgb, ${Oe}, transparent 88%)`,borderColor:`color-mix(in srgb, ${Oe}, transparent 72%)`,gap:"4px",padding:"0 8px"},children:[a.jsx(q9,{size:14}),!ee&&a.jsx("span",{className:kr.taskComplexityLabel,children:_e})]}),(()=>{const U=st.kind==="unassigned",he=a.jsx("span",{className:kr.assigneeAvatarShared,"data-task-assignee":"true","aria-hidden":Ne?"true":void 0,"aria-label":Ne?void 0:U?"Unassigned":`Assigned to ${Fe}`,children:a.jsx(gy,{option:st,size:ee?32:36,variant:"card",unassignedIcon:Ne?di:void 0})});return Ne?a.jsx("div",{className:kr.assigneePicker,title:U?"Assign task":Fe,onClick:Ke=>Ke.stopPropagation(),onPointerDown:Ke=>Ke.stopPropagation(),onKeyDown:Ke=>Ke.stopPropagation(),children:a.jsx(ui,{value:e.assignee||"unassigned",options:c,onChange:Ke=>Z?.(e,String(Ke)),ariaLabel:U?"Assign task":`Reassign task currently assigned to ${Fe}`,hideChevron:!0,portalPanel:!0,panelMinWidth:240,searchable:!0,searchPlaceholder:"Search assignees...",noResultsText:"No assignees found.",renderOptionContent:Ke=>{const Et=c.find(vt=>String(vt.value)===String(Ke.value));return Et?a.jsx(pf,{option:Et}):Ke.label},triggerContent:he})}):a.jsx("span",{title:Fe,children:he})})()]})]})})})]})]})},dp=ne.memo(X9),qg="168px",Hu=[{value:"open",label:"Open"},{value:"archived",label:"Archived"},{value:"deleted",label:"Deleted"}];function Q9(){return a.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:"var(--text-secondary)",marginRight:"4px"},children:jt("standalone.filtersCaps")})}function xm({label:e,options:t,selected:r,onChange:n,variant:s="label",renderOptionContent:i,searchable:l=!1,searchPlaceholder:c,noResultsText:d}){return a.jsx(Sd,{label:e,options:t,selected:r,onChange:n,variant:s,renderOptionContent:i,searchable:l,searchPlaceholder:c,noResultsText:d,containerStyle:{flex:`0 0 ${qg}`,maxWidth:qg}})}function eH({onClick:e,disabled:t,label:r="Reset filters"}){return a.jsx("button",{type:"button",className:"tf-control-icon",onClick:e,disabled:t,"aria-label":r,title:r,children:a.jsx($i,{size:14,"aria-hidden":"true"})})}function iA({label:e,options:t,selected:r,onChange:n,allLabel:s,title:i}){const[l,c]=ne.useState(!1),d=ne.useRef(null),m=t.find(h=>h.value===r),f=m?.selectedLabel||m?.label||s;ne.useEffect(()=>{const h=y=>{d.current&&!d.current.contains(y.target)&&c(!1)};return document.addEventListener("mousedown",h),()=>document.removeEventListener("mousedown",h)},[]);const g=h=>{n(h),c(!1)};return a.jsxs("div",{className:P.filterContainer,ref:d,style:{flex:`0 0 ${qg}`,maxWidth:qg},children:[a.jsxs("button",{type:"button",className:`${P.filterButton} ${r?P.filterActive:""}`,onClick:()=>c(h=>!h),title:i||`Filter by ${e}`,"aria-haspopup":"listbox","aria-expanded":l,children:[a.jsx("span",{children:f}),a.jsx(Fd,{size:14,style:{transform:l?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),l&&a.jsxs("div",{className:`${P.filterDropdown} ${P.appScrollbar} tf-scrollbar`,role:"listbox","aria-label":e,children:[a.jsxs("button",{type:"button",className:P.filterOption,onClick:()=>g(""),"aria-selected":!r,children:[a.jsx(Fi,{size:14,style:{opacity:r?0:1}}),a.jsx("span",{style:{fontWeight:r?500:600},children:s})]}),a.jsx("div",{className:P.filterDivider}),t.map(h=>{const y=h.value===r;return a.jsxs("button",{type:"button",className:P.filterOption,onClick:()=>g(h.value),"aria-selected":y,children:[a.jsx(Fi,{size:14,style:{opacity:y?1:0}}),a.jsx("span",{style:{fontWeight:y?600:500},children:h.label})]},h.value)})]})]})}function A_({scope:e,onScopeChange:t,className:r,labelClassName:n}){const s=ne.useRef([]),i=(l,c)=>{let d;l.key==="ArrowRight"?d=(c+1)%Hu.length:l.key==="ArrowLeft"?d=(c-1+Hu.length)%Hu.length:l.key==="Home"?d=0:l.key==="End"&&(d=Hu.length-1),d!==void 0&&(l.preventDefault(),s.current[d]?.focus(),t(Hu[d].value))};return a.jsxs("div",{className:[P.taskScopeToggle,r].filter(Boolean).join(" "),children:[a.jsx("span",{className:n,children:"Scope"}),a.jsx("div",{className:P.taskScopeTabs,role:"tablist","aria-label":"Task scope",children:Hu.map((l,c)=>{const d=e===l.value;return a.jsx("button",{ref:m=>{s.current[c]=m},type:"button",className:`${P.taskScopeTab} ${d?P.taskScopeTabActive:""}`,onClick:()=>t(l.value),onKeyDown:m=>i(m,c),role:"tab","aria-selected":d,tabIndex:d?0:-1,title:`Show ${l.label.toLowerCase()} tasks`,children:l.label},l.value)})})]})}function tH({onClick:e,disabled:t=!1,className:r,title:n="Permanently delete all deleted tasks",children:s="Delete All Permanently"}){return a.jsxs("button",{type:"button",className:r,onClick:e,disabled:t,title:n,children:[a.jsx(fp,{size:14}),s]})}const{Search:cA,ClipboardList:rH,ChevronRight:nH,ChevronDown:aH,Folder:sH,Archive:oH,RotateCcw:iH,X:cH,Plus:lH,ArrowUpDown:dH,Trash2:uH}=Xs,fH=new Map,mH=new Set,C_=o.forwardRef((e,t)=>{const{tasks:r,archivedTasks:n,categories:s,types:i,priorities:l,taxonomyDisplayLabels:c,assigneeOptions:d=[],workstreams:m=[],initiatives:f=[],workspaceId:g=null,searchQuery:h,filterCategories:y,filterTypes:k,filterPriorities:v,filterStatus:A,filterAssignees:b=[],filterTaxonomies:w,sortBy:R,sortOrder:N,showArchive:j,taskScope:E,collapsedCategories:S,loadingTasks:L,filteredTasks:_,filteredArchive:T,groupedTasks:H,filteredDeletedTasks:q=[],groupedDeletedTasks:z={},copiedId:M,recentlyChangedTaskIds:Z=[],showTaskCardStatusLabel:J=!1,showTaskCardDescription:ee=!0,showTaskCardAttachments:te=!0,showTaskCardChecklistProgress:fe=!0,showTaskCardLatestActivity:Ie=!0,tintTaskCardActivityBackground:$e=!1,deletedTaskRecordByTaskId:Ye=fH,selectedDeletedRecordIds:ye=mH,onDeletedSelectionChange:ge,trashControls:oe,onSearchChange:ie,onFilterCategoriesChange:me,onFilterTypesChange:W,onFilterPrioritiesChange:V,onFilterStatusChange:B,onFilterAssigneesChange:D,onTaxonomyFilterChange:be,onSortByChange:Se,onSortOrderChange:K,onShowArchiveChange:Y,onTaskScopeChange:G,onClearFilters:ae,onToggleCategory:_e,onEditTask:Oe,onUpdateTask:Fe,taskReferences:st,onCopyId:ft,onToggleInProgress:xe,onToggleReview:ke,onToggleComplete:ve,onToggleCancel:Ve,onSetStatus:Ne,onArchiveTask:de,onBulkArchive:x,onUnarchive:le,onDelete:Re,onFetchArchive:Je,onAddTaskToCategory:X,supplementalTasks:Ze=[],taxonomies:re}=e,Ee=ne.useMemo(()=>new Set(Z),[Z]),je=ne.useMemo(()=>new Map(m.map(at=>[at.id,at])),[m]),Pe=ne.useMemo(()=>new Map(f.map(at=>[at.id,at])),[f]),Ce=ne.useCallback(at=>{const U=at.workstreamId&&je.get(at.workstreamId)||null,he=U?.initiativeId&&Pe.get(U.initiativeId)||null;return{taskWorkstream:U,taskInitiative:he}},[Pe,je]),Te=ne.useMemo(()=>[...r,...n,...Ze],[n,Ze,r]),pe=ne.useCallback((at,U)=>Fe(at.id,{assignee:U}),[Fe]),Me=!!G,et=G,Ue=E??(j?"archived":"open"),yt=Me?Ue==="archived"?T:Ue==="deleted"?q:_:_,Le=Me?Ue==="archived"?{Archived:T}:Ue==="deleted"?z:H:H,mt=Me?Ue==="deleted"?"deleted":Ue==="archived"?"archived":null:null,kt=my(h),He=h?kt?`No task found for ${kt.toUpperCase()}`:jt("taskList.noMatchingTasks"):Ue==="archived"?"No archived tasks found.":Ue==="deleted"?"No deleted tasks found.":jt("taskList.noActiveTasks"),rt=ne.useMemo(()=>{const at=s.filter(he=>!he.disabled),U=s.filter(he=>he.disabled&&Te.some(Ke=>Ke.category===he.value));return[...at,...U.filter(he=>!at.some(Ke=>Ke.value===he.value))].map(he=>({value:he.value,label:he.disabled?`${he.label} (Legacy)`:he.label}))},[s,Te]),It=ne.useMemo(()=>{const at=i.filter(he=>he.status!=="retired"),U=i.filter(he=>he.status==="retired"&&Te.some(Ke=>Ke.type===he.value));return[...at,...U.filter(he=>!at.some(Ke=>Ke.value===he.value))].map(he=>({value:he.value,label:he.status==="retired"?`${he.label} (Retired)`:he.label}))},[Te,i]),Xe=ne.useMemo(()=>kp(re,Te).filter(at=>at.filterEnabled!==!1).map(at=>({...at,options:Hw(at,Te)})),[Te,re]),wt=ne.useMemo(()=>[{value:"created",label:jt("taskList.sortCreated")},{value:"updated",label:jt("taskList.sortUpdated")},{value:"priority",label:jt("taskList.sortPriority")},...YI(re,Te)],[Te,jt,re]);return a.jsxs("div",{className:P.viewTab,ref:t,children:[a.jsxs("div",{className:P.filterBar,children:[a.jsxs("div",{className:P.searchContainer,children:[a.jsx(cA,{size:16,className:P.searchIcon}),a.jsx("input",{type:"text",className:P.searchInput,placeholder:jt("taskList.searchPlaceholder"),value:h,onChange:at=>ie(at.target.value)}),h&&a.jsx("button",{className:P.clearSearchBtn,onClick:()=>ie(""),title:jt("taskList.clearSearchTitle"),children:a.jsx(cH,{size:14})})]}),a.jsxs("div",{className:P.filterRow,children:[a.jsx(Sd,{label:c?.category||jt("taskList.categoryLabel"),options:rt,selected:y,onChange:me,variant:"value"}),a.jsx(Sd,{label:c?.type||jt("taskList.typeLabel"),options:It,selected:k,onChange:W,variant:"value"})]}),a.jsxs("div",{className:P.filterRow,children:[a.jsx(Sd,{label:c?.priority||jt("taskList.priorityLabel"),options:l,selected:v,onChange:V,variant:"value"}),a.jsx(Sd,{label:jt("taskList.statusLabel"),options:fc,selected:A,onChange:B,variant:"value"}),a.jsx(Sd,{label:jt("taskList.assigneeLabel"),options:d,selected:b,onChange:at=>D?.(at),variant:"value",renderOptionContent:at=>{const U=d.find(he=>String(he.value)===String(at.value));return U?a.jsx(pf,{option:U,size:20}):at.label}})]}),Xe.map(at=>a.jsx(Sd,{label:at.status==="retired"?`${at.label} (Retired)`:at.label,options:at.options.map(U=>({...U,label:U.status==="retired"?`${U.label} (Retired)`:U.label})),selected:w[at.id]||[],onChange:U=>be(at.id,U),variant:"value"},at.id)),a.jsxs("div",{className:P.filterRow,children:[a.jsxs("div",{className:P.sortLabel,children:[a.jsx(dH,{size:14,style:{marginRight:"4px"}})," ",jt("taskList.sortByLabel")]}),a.jsx("select",{value:R,onChange:at=>Se(at.target.value),className:`${P.filterSelect} ${P.filterSelectSort} `,children:wt.map(at=>a.jsx("option",{value:at.value,children:at.label},at.value))}),a.jsx("button",{className:`${P.resetFiltersBtn} ${P.sortDirectionBtnWidget}`,onClick:K,title:jt(N==="desc"?"taskList.sortDirectionDescTitle":"taskList.sortDirectionAscTitle"),children:N==="desc"?a.jsx(sw,{size:14}):a.jsx(JA,{size:14})}),a.jsx("button",{className:P.resetFiltersBtn,onClick:ae,title:jt("taskList.resetFiltersTitle"),children:a.jsx(iH,{size:14})})]}),a.jsxs("div",{className:`${P.filterRow} ${P.archiveRow} `,children:[Ue==="open"?a.jsxs("button",{className:`${P.bulkArchiveBtn} ${r.some(at=>at.status==="done"||at.status==="cancelled")?"":P.disabledBtn} `,onClick:()=>r.some(at=>at.status==="done"||at.status==="cancelled")&&x(),disabled:!r.some(at=>at.status==="done"||at.status==="cancelled"),title:r.some(at=>at.status==="done"||at.status==="cancelled")?jt("taskList.archiveAllTitle"):jt("taskList.noTasksToArchiveTitle"),children:[a.jsx(oH,{size:12}),a.jsx("span",{children:jt("taskList.archiveFinished")})]}):Ue==="deleted"?a.jsx("div",{}):a.jsx("div",{}),Me?a.jsx(A_,{scope:Ue,onScopeChange:at=>{et?.(at),at==="archived"?Y(!0):j&&Y(!1)},className:P.archiveToggle}):a.jsxs("label",{className:P.archiveToggle,children:[a.jsx("input",{type:"checkbox","aria-label":"Archived",checked:j,onChange:at=>{Y(at.target.checked),at.target.checked&&Je()}}),a.jsx("span",{children:"Include Archive"})]})]}),Ue==="deleted"&&oe]}),L&&r.length===0?a.jsx("div",{className:P.loading,children:a.jsx(ea,{size:24,className:P.spinner})}):yt.length===0&&!L?a.jsxs("div",{className:P.emptyState,children:[h?a.jsx(cA,{size:48}):Ue==="deleted"?a.jsx(uH,{size:48}):a.jsx(rH,{size:48}),a.jsx("p",{children:He})]}):a.jsx("div",{className:P.taskList,style:{opacity:L?.6:1,transition:"opacity 0.2s ease"},children:Object.entries(Le).map(([at,U])=>{if(U.length===0)return null;const he=S[at];return a.jsxs("div",{className:P.categoryGroup,children:[a.jsx("div",{className:P.categoryHeader,onClick:()=>_e(at),children:a.jsxs("div",{className:P.categoryTitle,children:[he?a.jsx(nH,{size:16}):a.jsx(aH,{size:16}),(()=>{const Ke=s.find(Bt=>Bt.label===at),Et=Ke?.icon&&df[Ke.icon]?df[Ke.icon]:sH,vt=ta(Ke?.color)||"var(--color-purple, #8b5cf6)";return a.jsx(Et,{size:16,className:P.categoryTitleIcon,style:{color:vt}})})(),at,a.jsxs("span",{className:P.categoryCount,children:["(",U.length,")"]}),X&&a.jsx("button",{className:P.kanbanQuickAdd,onClick:Ke=>{Ke.stopPropagation(),X(at)},title:jt("taskList.addTaskToCategoryTitle",{category:at}),style:{marginLeft:"auto"},disabled:mt!==null,children:a.jsx(lH,{size:14})})]})}),!he&&a.jsx("div",{className:P.categoryItems,children:U.map(Ke=>(()=>{const{taskWorkstream:Et,taskInitiative:vt}=Ce(Ke),Bt=mt==="deleted"?Ye.get(Ke.id):void 0;return a.jsx(dp,{task:Ke,taskWorkstream:Et,taskInitiative:vt,workspaceId:g,searchQuery:h,copiedId:M,taxonomies:re,types:i,priorities:l,assigneeOptions:d,workstreams:m,onClick:Oe,onAssigneeChange:pe,onWorkstreamChange:(dr,er)=>Fe(dr.id,{workstreamId:er}),taskReferences:st,onCopyId:ft,onToggleInProgress:xe,onToggleReview:ke,onToggleComplete:ve,onToggleCancel:Ve,onSetStatus:Ne,onArchiveTask:de,onUnarchive:mt?le:void 0,onDelete:mt?Re:void 0,categories:s,isRecentlyChanged:Ee.has(Ke.id),readOnlyMode:mt,selectable:!!(Bt&&ge),selected:!!(Bt&&ye.has(Bt.id)),onSelectionChange:Bt?dr=>ge?.(Bt.id,dr):void 0,showStatusLabel:J,showDescription:ee,showAttachments:te,showChecklistProgress:fe,showLatestActivity:Ie,tintActivityBackground:$e},Ke.id)})())})]},at)})}),!Me&&j&&T.length>0&&a.jsxs("div",{className:P.archiveList,children:[a.jsx("div",{className:P.archiveHeader,children:"Archived"}),T.map(at=>(()=>{const{taskWorkstream:U,taskInitiative:he}=Ce(at);return a.jsx(dp,{task:at,taskWorkstream:U,taskInitiative:he,workspaceId:g,searchQuery:h,copiedId:M,isArchived:!0,types:i,assigneeOptions:d,workstreams:m,onClick:Oe,onCopyId:ft,onSetStatus:Ne,onUnarchive:le,onDelete:Re,deleteActionTitle:"Delete Permanently",taskReferences:st,categories:s,showStatusLabel:J,showDescription:ee,showAttachments:te,showChecklistProgress:fe,showLatestActivity:Ie,tintActivityBackground:$e},at.id)})())]})]})});C_.displayName="TaskList";const pH="_formNotice_1h100_1",hH="_markdownPreview_1h100_12",gH="_descriptionField_1h100_18",yH="_descriptionImageStatus_1h100_22",kH="_descriptionImageError_1h100_23",vH="_taskFormLifecycle_1h100_46",wH="_taskFormMetaDivider_1h100_51",bH="_taskFormMetaGrid_1h100_58",SH="_compactMetaGrid_1h100_59",AH="_compactMetaSection_1h100_65",CH="_compactMetaField_1h100_71",IH="_compactMetaFieldHint_1h100_85",_H="_workflowAssignmentField_1h100_89",TH="_workflowAssignmentLabels_1h100_93",xH="_workflowAssignmentControls_1h100_94",RH="_workflowAssignmentSelector_1h100_101",PH="_workflowAssignmentError_1h100_110",jH="_workflowExecutionToggle_1h100_121",EH="_workflowExecutionVersion_1h100_147",NH="_workflowExecutionPanel_1h100_168",DH="_workflowExecutionHeader_1h100_176",MH="_workflowExecutionEyebrow_1h100_195",LH="_workflowExecutionSummary_1h100_196",OH="_workflowExecutionSpinner_1h100_206",BH="_workflowExecutionSteps_1h100_239",WH="_workflowExecutionStepCurrent_1h100_261",$H="_workflowExecutionStepMarker_1h100_266",FH="_workflowExecutionStepCompleted_1h100_277",UH="_workflowExecutionStepState_1h100_278",zH="_workflowExecutionStepBody_1h100_282",HH="_workflowExecutionStepTitle_1h100_286",VH="_workflowExecutionStepMeta_1h100_308",GH="_workflowExecutionEmpty_1h100_310",KH="_formFieldsetReset_1h100_350",qH="_formLayoutWithSidebar_1h100_357",YH="_formMainColumn_1h100_365",ZH="_activitySidebar_1h100_372",JH="_activitySidebarHeader_1h100_382",XH="_activitySidebarTitle_1h100_389",QH="_taskFormDateRow_1h100_398",eV="_taskFormDateLabel_1h100_405",tV="_taskFormDateValue_1h100_413",rV="_taskFormMetaStack_1h100_421",nV="_taskFormMetaActor_1h100_427",aV="_taskFormDateWarning_1h100_433",sV="_taskFormDateError_1h100_439",oV="_helpHeader_1h100_445",iV="_helpClose_1h100_456",cV="_markdownHelp_1h100_470",lV="_helpGrid_1h100_479",dV="_helpGridItem_1h100_485",uV="_settingsHint_1h100_497",fV="_sectionBlock_1h100_503",mV="_specialistSectionWithoutTaxonomies_1h100_509",pV="_softSectionSurface_1h100_514",hV="_stackedList_1h100_521",gV="_stackedListSpaced_1h100_526",yV="_checklistInputGroup_1h100_530",kV="_checklistRow_1h100_537",vV="_checklistRowDragging_1h100_546",wV="_checklistHandleBtn_1h100_550",bV="_checklistCheckboxBtn_1h100_573",SV="_checklistCheckboxBtnChecked_1h100_593",AV="_checklistItemText_1h100_598",CV="_checklistItemTextCompleted_1h100_606",IV="_checklistRemoveBtn_1h100_611",_V="_specialistChip_1h100_643",TV="_specialistChipActive_1h100_666",xV="_commentPanel_1h100_676",RV="_activitySidebarPanel_1h100_690",PV="_commentThread_1h100_698",jV="_activityTimelineRegion_1h100_702",EV="_activityLoadingThread_1h100_711",NV="_newActivityNotice_1h100_715",DV="_newActivityButton_1h100_723",MV="_emptyComments_1h100_767",LV="_activitySkeletonItem_1h100_781",OV="_activitySkeletonMeta_1h100_787",BV="_activitySkeletonBody_1h100_788",WV="_commentInputArea_1h100_912",$V="_commentInput_1h100_912",FV="_sendCommentBtn_1h100_955",UV="_taxonomyFieldsGrid_1h100_998",zV="_markdownPreviewContainer_1h100_1005",HV="_descriptionSurface_1h100_1010",At={formNotice:pH,markdownPreview:hH,descriptionField:gH,descriptionImageStatus:yH,descriptionImageError:kH,taskFormLifecycle:vH,taskFormMetaDivider:wH,taskFormMetaGrid:bH,compactMetaGrid:SH,compactMetaSection:AH,compactMetaField:CH,compactMetaFieldHint:IH,workflowAssignmentField:_H,workflowAssignmentLabels:TH,workflowAssignmentControls:xH,workflowAssignmentSelector:RH,workflowAssignmentError:PH,workflowExecutionToggle:jH,workflowExecutionVersion:EH,workflowExecutionPanel:NH,workflowExecutionHeader:DH,workflowExecutionEyebrow:MH,workflowExecutionSummary:LH,workflowExecutionSpinner:OH,workflowExecutionSteps:BH,workflowExecutionStepCurrent:WH,workflowExecutionStepMarker:$H,workflowExecutionStepCompleted:FH,workflowExecutionStepState:UH,workflowExecutionStepBody:zH,workflowExecutionStepTitle:HH,workflowExecutionStepMeta:VH,workflowExecutionEmpty:GH,formFieldsetReset:KH,formLayoutWithSidebar:qH,formMainColumn:YH,activitySidebar:ZH,activitySidebarHeader:JH,activitySidebarTitle:XH,taskFormDateRow:QH,taskFormDateLabel:eV,taskFormDateValue:tV,taskFormMetaStack:rV,taskFormMetaActor:nV,taskFormDateWarning:aV,taskFormDateError:sV,helpHeader:oV,helpClose:iV,markdownHelp:cV,helpGrid:lV,helpGridItem:dV,settingsHint:uV,sectionBlock:fV,specialistSectionWithoutTaxonomies:mV,softSectionSurface:pV,stackedList:hV,stackedListSpaced:gV,checklistInputGroup:yV,checklistRow:kV,checklistRowDragging:vV,checklistHandleBtn:wV,checklistCheckboxBtn:bV,checklistCheckboxBtnChecked:SV,checklistItemText:AV,checklistItemTextCompleted:CV,checklistRemoveBtn:IV,specialistChip:_V,specialistChipActive:TV,commentPanel:xV,activitySidebarPanel:RV,commentThread:PV,activityTimelineRegion:jV,activityLoadingThread:EV,newActivityNotice:NV,newActivityButton:DV,emptyComments:MV,activitySkeletonItem:LV,activitySkeletonMeta:OV,activitySkeletonBody:BV,commentInputArea:WV,commentInput:$V,sendCommentBtn:FV,taxonomyFieldsGrid:UV,markdownPreviewContainer:zV,descriptionSurface:HV};function ev({label:e,value:t,options:r,onChange:n,type:s="priority",hideLabel:i=!1,showSelectedLabel:l=!0}){const c=r.find(d=>String(d.value)===String(t));return a.jsxs("div",{className:P.field,children:[!i&&a.jsxs("div",{className:P.labelRow,children:[a.jsx("label",{className:P.label,children:e}),l&&c&&a.jsx("span",{className:P.levelLabel,style:{color:ta(c.color)||(s==="priority"?`var(--priority-${t})`:s==="complexity"?`var(--complexity-${t})`:"var(--text-secondary)"),backgroundColor:(ta(c.color)?`${ta(c.color)}25`:void 0)||(s==="priority"?`color-mix(in srgb, var(--priority-${t}), transparent 85%)`:s==="complexity"?`color-mix(in srgb, var(--complexity-${t}), transparent 85%)`:"rgba(255,255,255,0.05)")},children:c.label})]}),a.jsx("div",{className:P.levelSelect,children:r.map((d,m)=>{const f=r.findIndex(y=>String(y.value)===String(t)),g=m<=f,h=String(d.value)===String(t);return a.jsx("button",{type:"button",className:`${P.levelOption} ${g?P.levelOptionFilled:""} ${g?P[`levelOption_${s}_${d.value}`]:""} ${h?P.levelOptionSelected:""}`,onClick:()=>n(d.value),title:d.label,style:{opacity:g?1:.15,backgroundColor:g?ta(d.color)||(s==="priority"?`var(--priority-${d.value})`:s==="complexity"?`var(--complexity-${d.value})`:"var(--text-primary)"):void 0,color:g?s==="priority"&&String(d.value).toLowerCase()==="medium"?"black":"white":void 0,boxShadow:g&&(s==="priority"&&(String(d.value).toLowerCase()==="critical"||d.value===4)||s==="complexity"&&(String(d.value).toLowerCase()==="epic"||d.value===5))?`0 0 12px ${s==="priority"?"rgba(239, 68, 68, 0.6)":"rgba(217, 70, 239, 0.6)"}`:void 0}},String(d.value))})})]})}const lA=new Map;function VV(e){const t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?null:t}function GV(e,t){const r=Object.entries(t).sort(([n],[s])=>n.localeCompare(s));return JSON.stringify([e,r])}function Yg(e,t,r){const n=VV(e);if(!n)return"";const s=r??TC(),i=GV(s,t);let l=lA.get(i);return l||(l=new Intl.DateTimeFormat(s,t),lA.set(i,l)),l.format(n)}function KV(e){return new Promise((t,r)=>{const n=new FileReader;n.onload=()=>t(String(n.result||"")),n.onerror=()=>r(n.error||new Error("Failed to read file")),n.readAsDataURL(e)})}async function Qh(e,t){try{const n=await(typeof e.clone=="function"?e.clone():e).json().catch(()=>null),s=String(n?.error||n?.message||"").trim();if(s)return s}catch{}try{const n=(await(typeof e.clone=="function"?e.clone():e).text().catch(()=>"")).trim();if(n)return n}catch{}return t}async function qV(e,t){const r=String(t.workspaceId||"").trim(),n=String(t.ownerId||"").trim(),s={ownerType:t.ownerType,ownerId:n||null,taskId:t.ownerType==="task"&&n||null},i=String(t.draftUploadId||"").trim(),l=i&&t.uploadPurpose?{draftUploadId:i,uploadPurpose:t.uploadPurpose}:{},c=globalThis.crypto?.randomUUID?.()||`context-upload-${Date.now()}-${Math.random().toString(16).slice(2)}`,d=()=>({"Content-Type":"application/json",...r?{"x-taskforce-workspace-id":r}:{},"x-taskforce-operation-id":c});let m=null,f=null;const g=await fetch("/api/taskforce/context-upload/init",{method:"POST",headers:d(),body:JSON.stringify({originalName:e.name,mimeType:e.type||"application/octet-stream",size:e.size,...s,...l,workspaceId:r||null})});if(g.ok){const h=await g.json();if(h?.success&&typeof h?.uploadUrl=="string"&&typeof h?.path=="string"){let y=!1;try{const k=await fetch(h.uploadUrl,{method:String(h.method||"PUT"),headers:h.headers||{"Content-Type":e.type||"application/octet-stream"},body:e});if(!k.ok)f=await Qh(k,`Upload failed for ${e.name}`);else{y=!0;const v=await fetch("/api/taskforce/context-upload/finalize",{method:"POST",headers:d(),body:JSON.stringify({relativePath:h.relativePath,mimeType:e.type||"application/octet-stream",originalName:e.name,size:e.size,...s,...l,workspaceId:r||null})});if(!v.ok)throw new Error(await Qh(v,`Upload failed for ${e.name}`));m=await v.json().catch(()=>null)}}catch(k){if(y)throw k;f=k instanceof Error?k.message:`Upload failed for ${e.name}`}}else h?.success&&typeof h?.path=="string"&&(m=h)}else f=await Qh(g,`Upload failed for ${e.name}`);if(!m){const h=await KV(e),y=await fetch("/api/taskforce/context-upload",{method:"POST",headers:d(),body:JSON.stringify({file:h,originalName:e.name,...s,...l,workspaceId:r||null})});if(!y.ok){const k=await Qh(y,`Upload failed for ${e.name}`);throw new Error(f&&f!==k?`${k} (${f})`:k)}m=await y.json()}if(!m?.success||!m?.path)throw new Error(`Upload failed for ${e.name}`);return{path:m.path,fsPath:m.fsPath,caption:typeof m.caption=="string"&&m.caption.trim().length>0?m.caption:e.name,displayName:typeof m.displayName=="string"?m.displayName:void 0,originalFilename:typeof m.originalFilename=="string"?m.originalFilename:e.name,assetId:typeof m.assetId=="string"?m.assetId:void 0,referenceNumber:typeof m.referenceNumber=="number"?m.referenceNumber:null,referenceLabel:typeof m.referenceLabel=="string"?m.referenceLabel:void 0,taskId:t.ownerType==="task"&&typeof m.taskId=="string"?m.taskId:null,timestamp:typeof m.timestamp=="string"&&m.timestamp.trim().length>0?m.timestamp:new Date().toISOString()}}class el extends Error{constructor(t,r){super(t),this.code=r,this.name="WorkflowManagerApiError"}}async function mi(e,t,r){const n=new Headers(t?.headers||void 0);t?.body&&n.set("Content-Type","application/json");const s=String(r?.workspaceId||"").trim();s&&s!=="default"&&n.set("x-taskforce-workspace-id",s);const i=await GR(e,{credentials:"include",...t,headers:n},r?.apiBaseUrl),l=await i.json().catch(()=>({}));if(!i.ok||l.success===!1)throw new el(String(l.error||`Workflow request failed (${i.status}).`),l.code);return l}async function YV(e){const t=await mi("/api/taskforce/workflows",void 0,e);return Array.isArray(t.workflows)?t.workflows:[]}async function eg(e,t){return(await mi(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,void 0,t)).assignment||null}async function ZV(e,t){if(t?.runtimeMode!=="local"||!e.assignmentSnapshot)return e.taskSnapshot||null;try{return(await mi(`/api/taskforce/workflow-executions/${encodeURIComponent(e.executionId)}/apply-cloud-state`,{method:"POST",body:JSON.stringify({assignment:e.assignmentSnapshot,taskAuthoritative:e.taskAuthoritative})},{workspaceId:t?.workspaceId})).task||null}catch{return null}}async function JV(e,t,r,n,s){const i=await mi(`/api/taskforce/workflow-executions/${encodeURIComponent(e)}/complete-step?taskforceCloud=1`,{method:"POST",body:JSON.stringify({idempotencyKey:t,...n?{evidenceCommentId:n}:{},...s?{expectedStepId:s}:{}})},r);if(!i.result)throw new el("The workflow step result was not returned.");let l=i.result.taskSnapshot||null;return i.result.assignmentSnapshot&&i.result.route!=="local-outbox"&&(l=await ZV({executionId:e,taskId:i.result.execution.taskId,assignmentSnapshot:i.result.assignmentSnapshot,taskSnapshot:i.result.taskSnapshot,taskAuthoritative:i.result.taskAuthoritative},r)),i.result.taskSnapshot&&_N({workspaceId:r?.workspaceId,taskId:i.result.taskSnapshot.id,reason:"workflow-step",...l?{authoritativeTask:l}:{},...i.result.assignmentSnapshot?{authoritativeWorkflowAssignment:i.result.assignmentSnapshot}:{}}),i.result}async function dA(e,t,r){const n=await mi(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,{method:"POST",body:JSON.stringify(t)},r);if(!n.assignment)throw new el("The workflow assignment was not returned.");return n.assignment}async function XV(e,t,r){const n=await mi(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,{method:"PUT",body:JSON.stringify(t)},r);if(!n.assignment)throw new el("The workflow assignment was not returned.");return n.assignment}async function QV(e,t){await mi(`/api/taskforce/tasks/${encodeURIComponent(e)}/workflow`,{method:"DELETE"},t)}async function nne(e){const t=await mi(`/api/taskforce/workflows/${encodeURIComponent(e)}`);if(!t.workflow)throw new el("Workflow details were not returned.");return t.workflow}async function ane(e){const t=await mi("/api/taskforce/workflows",{method:"POST",body:JSON.stringify(e)});if(!t.workflow)throw new el("The new workflow was not returned.");return t.workflow}async function sne(e,t){const r=await mi(`/api/taskforce/workflows/${encodeURIComponent(e)}/draft`,{method:"PUT",body:JSON.stringify(t)});if(!r.workflow)throw new el("The saved workflow draft was not returned.");return r.workflow}async function one(e){const t=await mi(`/api/taskforce/workflows/${encodeURIComponent(e)}/publish`,{method:"POST"});if(!t.workflow)throw new el("The published workflow was not returned.");return t.workflow}async function ine(e){const t=await mi(`/api/taskforce/workflows/${encodeURIComponent(e)}/draft`,{method:"POST"});if(!t.workflow)throw new el("The new workflow draft was not returned.");return t.workflow}const tv="__none__";function eG(e){return e.charAt(0).toUpperCase()+e.slice(1)}function tG(e,t){if(!e||typeof e!="object"||Array.isArray(e))return null;const r=e;return!r.execution||r.execution.taskId!==t||!r.template||!r.version||!Array.isArray(r.steps)||!Array.isArray(r.events)?null:r}function uA(e){return Math.max(0,...(e?.events||[]).map(t=>t.sequenceNumber||0))}function fA(e){const t=Date.parse(e.execution.createdAt);return Number.isFinite(t)?t:0}function rG(e,t){return t?e?e.execution.id!==t.execution.id?fA(t)>fA(e)?t:e:uA(t)>=uA(e)?t:e:t:e}function nG({taskId:e,workspaceId:t,taskStatus:r,taskUpdatedAt:n,comments:s=[],assigneeOptions:i=[],currentActorId:l,apiBaseUrl:c,runtimeMode:d="local",disabled:m=!1,onActivatePendingWorkflow:f,onActiveOwnerChange:g}){const[h,y]=ne.useState([]),[k,v]=ne.useState(null),[A,b]=ne.useState(!0),[w,R]=ne.useState(!1),[N,j]=ne.useState(!1),[E,S]=ne.useState(!1),[L,_]=ne.useState(0),[T,H]=ne.useState(""),q=ne.useRef(0),z=ne.useRef(0),M=ne.useRef(null),Z=ne.useRef({taskId:e,revision:`${e}:${n||""}`}),J=ne.useMemo(()=>({workspaceId:t,apiBaseUrl:c,runtimeMode:d}),[c,d,t]);ne.useEffect(()=>{const xe=++q.current,ke=++z.current;return b(!0),R(!1),j(!1),H(""),y([]),v(null),S(!1),_(0),M.current=null,Promise.allSettled([YV(J),eg(e,J)]).then(([ve,Ve])=>{xe===q.current&&(ve.status==="fulfilled"&&y(ve.value.filter(Ne=>Ne.template.status==="active"&&!!Ne.latestPublishedVersion)),ke===z.current&&(Ve.status==="fulfilled"?(v(Ve.value),!Ve.value&&ve.status==="rejected"&&H(String(ve.reason?.message||"Unable to load workflows."))):H(String(Ve.reason?.message||"Unable to load workflow assignment."))),b(!1))}),()=>{q.current+=1,z.current+=1}},[J,e]);const ee=k?.execution.taskId===e?k:null,te=ee?["pending","running","paused"].includes(ee.execution.status):!1,fe=te?ee:null,Ie=ee&&!h.some(({template:xe})=>xe.id===ee.template.id)?[{template:ee.template,draftVersionId:null,latestPublishedVersion:{id:ee.version.id,versionNumber:ee.version.versionNumber,publishedAt:ee.version.publishedAt}},...h]:h,$e=[...!ee||te?[{value:tv,label:"None"}]:[],...Ie.map(({template:xe})=>({value:xe.id,label:xe.name}))],Ye=fe?.execution.status==="pending",ye=!m&&!A&&!w&&(!fe||Ye),ge=ee?.template.id||tv,oe=ne.useMemo(()=>[...ee?.steps||[]].sort((xe,ke)=>xe.position-ke.position),[ee?.steps]),ie=ee?.execution.currentStepId&&oe.find(xe=>xe.id===ee.execution.currentStepId)||null,me=ee?.execution.currentStepId?oe.findIndex(xe=>xe.id===ee.execution.currentStepId):-1,W=ee?.execution.status==="completed",V=ne.useMemo(()=>new Set((ee?.events||[]).filter(xe=>xe.eventType==="step-completed"&&xe.stepId).map(xe=>xe.stepId)),[ee?.events]),B=fe?.execution.status==="pending"?(oe.find(xe=>xe.isRequired)||oe[0])?.id:null,D=`task-workflow-execution-${e}`,be=A?"Loading...":T&&!ee?"Unavailable":ee?eG(ee.execution.status):"Not assigned",Se=ee?.version.versionNumber?`V${ee.version.versionNumber}`:null,K=be.replace(/\.+$/,""),Y=ee?`Status: ${K}${Se?`, ${Se}`:""}. ${E?"Hide":"View"} workflow execution.`:`Status: ${K}.`,G=!m&&!N&&fe?.execution.status==="running"&&ie?.ownerType==="user"&&!!l&&ie.ownerId===l,ae=W&&h.find(({template:xe})=>xe.id===ee?.template.id)||null,_e=!!(!m&&!w&&ae?.latestPublishedVersion);ne.useEffect(()=>{const xe=fe?.execution.id||null;if(!xe||fe?.execution.status!=="pending"||r!=="in-progress"||!f||M.current===xe)return;M.current=xe;const ke=q.current;R(!0),H(""),Promise.resolve(f()).then(async()=>{const ve=await eg(e,J);if(ke!==q.current)return;if(ve?.execution.status==="pending")throw new Error("Workflow is still pending. Retry to start it.");const Ve=ve?.steps.find(Ne=>Ne.id===ve.execution.currentStepId);Ve?.ownerId&&g?.(Ve.ownerId),v(ve)}).catch(ve=>{ke===q.current&&(M.current=null,H(String(ve?.message||"Unable to start workflow.")))}).finally(()=>{ke===q.current&&R(!1)})},[L,fe,f,g,J,e,r]);const Oe=ne.useCallback(xe=>xe?np(xe,i):"Unassigned",[i]);ne.useEffect(()=>{Z.current.taskId!==e&&(Z.current={taskId:e,revision:`${e}:${n||""}`})},[e,n]),ne.useEffect(()=>{const xe=`${e}:${n||""}`;if(xe===Z.current.revision||r!=="in-progress"||!Ye)return;Z.current={taskId:e,revision:xe};const ke=q.current,ve=++z.current;eg(e,J).then(Ve=>{ke===q.current&&ve===z.current&&v(Ve)}).catch(Ve=>{ke===q.current&&ve===z.current&&H(String(Ve?.message||"Unable to refresh workflow assignment."))})},[Ye,J,e,r,n]),ne.useEffect(()=>{if(typeof window>"u")return;const xe=ke=>{const ve=ke.detail;if(ve?.reason!=="workflow-step")return;const Ve=String(ve.workspaceId||"").trim(),Ne=String(t||"").trim();if(Ne&&Ve!==Ne||String(ve.taskId||"").trim()!==e)return;const x=tG(ve.authoritativeWorkflowAssignment,e);if(x){++z.current,v(Je=>rG(Je,x)),H("");return}const le=q.current,Re=++z.current;eg(e,J).then(Je=>{le===q.current&&Re===z.current&&(v(Je),H(""))}).catch(Je=>{le===q.current&&Re===z.current&&H(String(Je?.message||"Unable to refresh workflow assignment."))})};return window.addEventListener(Wd,xe),()=>window.removeEventListener(Wd,xe)},[J,e,t]);const Fe=async xe=>{const ke=String(xe);if(!ye||ke===ge)return;const ve=q.current;R(!0),H("");try{if(ke===tv){if(await QV(e,J),ve!==q.current)return;v(null);return}const Ve=h.find(({template:le})=>le.id===ke),Ne=Ve?.latestPublishedVersion;if(!Ve||!Ne)return;const de={workflowTemplateId:Ve.template.id,workflowVersionId:Ne.id},x=fe?await XV(e,de,J):await dA(e,de,J);if(ve!==q.current)return;v(x)}catch(Ve){if(ve!==q.current)return;H(String(Ve?.message||"Unable to assign workflow."))}finally{ve===q.current&&R(!1)}},st=async()=>{if(!fe||!G)return;const xe=[...fe.events||[]].reverse().find(Ve=>Ve.eventType==="step-started"&&Ve.stepId===ie?.id)?.createdAt||fe.execution.startedAt||fe.execution.createdAt,ke=ie?.requiresCommentEvidence&&[...s].reverse().find(Ve=>Ve.author===l&&Ve.text.trim().length>0&&Date.parse(Ve.timestamp)>=Date.parse(xe))||null;if(ie?.requiresCommentEvidence&&!ke){H("Add a task comment for this workflow step before completing it.");return}const ve=q.current;j(!0),H("");try{const Ve=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,Ne=await JV(fe.execution.id,Ve,J,ke?.id,ie?.id);if(ve!==q.current)return;v(de=>de&&{...de,execution:Ne.execution,events:Ne.events})}catch(Ve){if(ve!==q.current)return;H(String(Ve?.message||"Unable to complete workflow step."))}finally{ve===q.current&&j(!1)}},ft=async()=>{const xe=ae?.latestPublishedVersion;if(!_e||!ae||!xe)return;const ke=q.current;R(!0),H("");try{const ve=await dA(e,{workflowTemplateId:ae.template.id,workflowVersionId:xe.id},J);if(ke!==q.current)return;v(ve)}catch(ve){if(ke!==q.current)return;H(String(ve?.message||"Unable to run workflow again."))}finally{ke===q.current&&R(!1)}};return a.jsxs("div",{className:`${P.field} ${At.compactMetaField} ${At.workflowAssignmentField}`,children:[a.jsxs("div",{className:At.workflowAssignmentLabels,children:[a.jsx("label",{id:"task-workflow-label",className:P.label,children:"Workflow"}),a.jsx("span",{id:"task-workflow-status-label",className:P.label,children:"Status"})]}),a.jsxs("div",{className:At.workflowAssignmentControls,children:[a.jsx(ui,{value:ge,options:$e,onChange:xe=>{Fe(xe)},placeholder:A?"Loading workflows...":"None",ariaLabelledBy:"task-workflow-label",disabled:!ye||$e.length===1&&!fe,portalPanel:!0,panelMinWidth:280,panelAlign:"start",className:At.workflowAssignmentSelector}),a.jsxs("button",{type:"button",className:At.workflowExecutionToggle,onClick:()=>S(xe=>!xe),"aria-expanded":ee?E:void 0,"aria-controls":ee?D:void 0,"aria-label":Y,disabled:!ee,children:[a.jsxs("span",{children:[be,Se?a.jsxs("span",{className:At.workflowExecutionVersion,children:[" · ",Se]}):null]}),ee?E?a.jsx(Fd,{size:13,"aria-hidden":"true"}):a.jsx(Ld,{size:13,"aria-hidden":"true"}):null]})]}),ee&&E?a.jsxs("section",{id:D,className:At.workflowExecutionPanel,"aria-label":"Workflow execution",children:[a.jsxs("div",{className:At.workflowExecutionHeader,children:[a.jsxs("div",{children:[a.jsx("span",{className:At.workflowExecutionEyebrow,children:"Workflow execution"}),a.jsx("strong",{children:ee.version.name||ee.template.name})]}),W&&ae?a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{ft()},disabled:!_e,children:[w?a.jsx(ea,{size:14,className:At.workflowExecutionSpinner,"aria-hidden":"true"}):a.jsx($i,{size:14,"aria-hidden":"true"}),"Run again"]}):null]}),a.jsxs("dl",{className:At.workflowExecutionSummary,children:[a.jsxs("div",{children:[a.jsx("dt",{children:"Current step"}),a.jsx("dd",{children:W?"Completed":ie?.name||(ee.execution.status==="pending"?"Not started":"Not available")})]}),a.jsxs("div",{children:[a.jsx("dt",{children:"Owner"}),a.jsx("dd",{children:!W&&ie?Oe(ie.ownerId):"Unassigned"})]}),a.jsxs("div",{children:[a.jsx("dt",{children:"Version"}),a.jsx("dd",{children:ee.version.versionNumber?`V${ee.version.versionNumber}`:"Published"})]})]}),a.jsx("ol",{className:`${At.workflowExecutionSteps} tf-scrollbar`,children:oe.map((xe,ke)=>{const ve=V.has(xe.id),Ve=!W&&xe.id===ee.execution.currentStepId,Ne=!ve&&!Ve&&me>=0&&ke<me,de=[ve?At.workflowExecutionStepCompleted:"",Ve?At.workflowExecutionStepCurrent:""].filter(Boolean).join(" ")||void 0;return a.jsxs("li",{className:de,"aria-current":Ve?"step":void 0,children:[a.jsx("span",{className:At.workflowExecutionStepMarker,"aria-hidden":"true",children:ve?a.jsx(_0,{size:16}):Ve?a.jsx(T0,{size:17}):a.jsx(x0,{size:15})}),a.jsxs("span",{className:At.workflowExecutionStepBody,children:[a.jsxs("span",{className:At.workflowExecutionStepTitle,children:[a.jsx("span",{children:ke+1}),a.jsx("strong",{children:xe.name})]}),a.jsxs("span",{className:At.workflowExecutionStepMeta,children:[Oe(xe.ownerId)," · ",xe.isRequired?"Required":"Optional"]})]}),a.jsx("span",{className:At.workflowExecutionStepState,children:ve?"Completed":Ne?"Skipped":Ve&&(G||N)?a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{st()},disabled:N,children:[N?a.jsx(ea,{size:14,className:At.workflowExecutionSpinner,"aria-hidden":"true"}):a.jsx(Fi,{size:14,"aria-hidden":"true"}),"Complete Step"]}):Ve?"Current":xe.id===B?"Starts here":"Upcoming"})]},xe.id)})}),oe.length===0?a.jsx("p",{className:At.workflowExecutionEmpty,children:"No steps are available for this workflow version."}):null]}):null,T?a.jsxs("span",{className:At.workflowAssignmentError,role:"alert",children:[T,Ye&&r==="in-progress"&&f?a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>_(xe=>xe+1),disabled:w,children:"Retry"}):null]}):null]})}const aG="_header_g17dz_1",sG="_title_g17dz_15",oG="_actions_g17dz_24",iG="_toggle_g17dz_30",tg={header:aG,title:sG,actions:oG,toggle:iG};function Km({label:e,count:t,showZeroCount:r=!1,actions:n,expanded:s,expandedTitle:i,collapsedTitle:l,onToggle:c,className:d="",controlsId:m}){const f=typeof t=="number"&&(r||t>0),g=s?Fd:Ld;return a.jsxs("div",{className:`${tg.header} ${d}`.trim(),children:[a.jsxs("span",{className:tg.title,children:[e,f?` (${t})`:""]}),n?a.jsx("span",{className:tg.actions,children:n}):null,a.jsx("button",{type:"button",className:`tf-control-icon ${tg.toggle}`.trim(),onClick:c,"aria-expanded":s,"aria-controls":m,"aria-label":s?i:l,title:s?i:l,children:a.jsx(g,{size:14,"aria-hidden":"true"})})]})}const cG="system:unverified-comment-import",I_="Imported comment",__="This comment was recovered during synchronization, but its author could not be verified.";function T_(e){return String(e||"").trim().toLowerCase()===cG}const rv=280,lG=48,dG=ne.lazy(()=>Go(()=>import("./EntityActivityTimeline-CZ8x4UJE.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),uG=ne.lazy(()=>Go(()=>import("./TaskContextUpload-BVIkU9yT.js"),__vite__mapDeps([7,1,8,2,3,4,5,9])).then(e=>({default:e.TaskContextUpload})));function fG({count:e}){const t=Math.max(2,Math.min(e||3,4));return a.jsx("div",{className:`${At.commentThread} ${At.activityLoadingThread}`.trim(),"aria-busy":"true","aria-live":"polite","aria-label":"Loading activity",children:Array.from({length:t},(r,n)=>a.jsxs("div",{className:At.activitySkeletonItem,children:[a.jsx("div",{className:At.activitySkeletonMeta}),a.jsx("div",{className:At.activitySkeletonBody})]},n))})}function mG({id:e,item:t,onToggle:r,onRemove:n}){const{attributes:s,listeners:i,setNodeRef:l,transform:c,transition:d,isDragging:m}=pw({id:e}),f={transform:ny.Transform.toString(c),transition:d,opacity:m?.88:1};return a.jsxs("div",{ref:l,style:f,className:`${At.checklistRow} ${m?At.checklistRowDragging:""}`.trim(),children:[a.jsx("button",{type:"button",className:At.checklistHandleBtn,title:"Reorder checklist item","aria-label":"Reorder checklist item",...s,...i,children:a.jsx(ow,{size:14})}),a.jsx("button",{type:"button",className:`${At.checklistCheckboxBtn} ${t.isCompleted?At.checklistCheckboxBtnChecked:""}`.trim(),onClick:r,title:t.isCompleted?"Mark incomplete":"Mark complete","aria-label":t.isCompleted?"Mark checklist item incomplete":"Mark checklist item complete",children:t.isCompleted?a.jsx(Fi,{size:14,strokeWidth:2.1}):null}),a.jsx("span",{className:`${At.checklistItemText} ${t.isCompleted?At.checklistItemTextCompleted:""}`.trim(),children:t.title}),a.jsx("button",{type:"button",className:At.checklistRemoveBtn,onClick:n,title:"Remove checklist item","aria-label":"Remove checklist item",children:a.jsx(fi,{size:15,strokeWidth:1.9})})]})}function x_(e){const{editingTaskId:t,initialActivityEntryId:r,title:n,description:s,category:i,type:l,priority:c,complexity:d,manualComplexityEnabled:m=!1,assignee:f,scheduledDate:g,dueDate:h,checklistItems:y,comments:k,newCommentText:v,contextFiles:A,currentWorkspaceId:b,descriptionImageDraftId:w,currentActorId:R,apiBaseUrl:N,runtimeMode:j="local",showImageReviews:E=!1,descriptionFocused:S,showMarkdownHelp:L,checklistEnabled:_=!0,formTaxonomies:T,onTaxonomyChange:H,onOpenSettings:q,categories:z,types:M,priorities:Z,taxonomyDisplayLabels:J,assigneeOptions:ee,taxonomies:te,workstreams:fe=[],initiatives:Ie=[],copiedId:$e,onTitleChange:Ye,onTitleDraftChange:ye,onDescriptionChange:ge,onDescriptionDraftChange:oe,onCategoryChange:ie,onTypeChange:me,onPriorityChange:W,onComplexityChange:V,onAssigneeChange:B,onScheduledDateChange:D,onDueDateChange:be,onChecklistItemsChange:Se,onNewCommentTextChange:K,onDescriptionFocusedChange:Y,onShowMarkdownHelpChange:G,onSubmit:ae,onAddComment:_e,onDescriptionImageUploadStart:Oe,onAddContextFile:Fe,onRemoveContextFile:st,onUpdateContextCaption:ft,onSetCardCover:xe,cardCoverDisabled:ke,onOpenContextImage:ve,onCopyId:Ve,onToggleInProgress:Ne,onToggleReview:de,onToggleComplete:x,onToggleCancel:le,onSetStatus:Re,onArchiveTask:Je,onUnarchive:X,taskReferences:Ze,currentTask:re,commentsEndRef:Ee}=e,je=ye||Ye,Pe=oe||ge,Ce=Ss(re),Te=ne.useRef(null),pe=ne.useRef(null),Me=ne.useRef(s),et=ne.useRef(t),Ue=`${String(b||"").trim()}\0${t||""}`,yt=ne.useRef(Ue),Le=ne.useRef(0);yt.current!==Ue&&(yt.current=Ue,Le.current+=1);const[mt,kt]=ne.useState(!1),He=ne.useRef(null),[rt,It]=ne.useState(null);ne.useLayoutEffect(()=>{const ue=et.current!==t;Te.current&&(ue||document.activeElement!==Te.current)&&(Te.current.value=n),pe.current&&(ue||document.activeElement!==pe.current)&&(pe.current.value=s,Me.current=s),et.current=t},[s,t,n]),ne.useEffect(()=>(He.current=null,kt(!1),It(null),()=>{Le.current+=1}),[Ue]);const Xe=ne.useMemo(()=>{if(!ve)return;const ue=new Map;return A.forEach(it=>{if(typeof it=="string")return;const _t=cp(it);_t&&ue.set(_t.toLowerCase(),it)}),{resolve:it=>ue.get(it.toLowerCase())||null,activate:ve}},[A,ve]),wt=ne.useMemo(()=>qE(te,T),[te,T]),at=ne.useMemo(()=>{const ue=z.find(mr=>mr.value===rf),it={value:rf,label:ue?.label||ay,icon:ue?.icon||"HelpCircle",color:ue?.color||"var(--text-secondary)"},_t=z.find(mr=>mr.value===i),rr=z.filter(mr=>!mr.disabled||mr.value===_t?.value).filter(mr=>mr.value!==rf).map(mr=>({value:mr.value,label:mr.disabled?`${mr.label} (Legacy)`:mr.label,icon:mr.icon,color:mr.color}));return[it,...rr]},[z,i]),U=ne.useMemo(()=>{const ue=M.find(_t=>_t.value===l);return M.filter(_t=>_t.status!=="retired"||_t.value===ue?.value).map(_t=>({value:_t.value,label:_t.status==="retired"?`${_t.label} (Retired)`:_t.label,icon:_t.icon||"Box",color:_t.color||"violet-500"}))},[M,l]),he=ue=>ue&&Yg(ue,{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"})||null,Ke=he(re?.createdAt),Et=he(re?.updatedAt||re?.createdAt),vt=he(re?.completedAt),Bt=ne.useMemo(()=>{const ue=new Date,it=ue.getFullYear(),_t=String(ue.getMonth()+1).padStart(2,"0"),Pt=String(ue.getDate()).padStart(2,"0");return`${it}-${_t}-${Pt}`},[]),dr=!!(h&&g&&h<g),er=!!(h&&h<Bt&&(!re||re.status!=="done"&&re.status!=="cancelled")),cr=y.filter(ue=>ue.isCompleted).length,[Ot,fr]=ne.useState(""),[Ar,Lr]=ne.useState(!0),[Wr,De]=ne.useState(!1),nt=ne.useRef(null),pt=ne.useRef(null),ut=!!re?.isArchived,Tt=!!re?.isDeleted,Xt=ut||Tt,Nt=ne.useRef(null),Qt=ne.useRef(null),St=ne.useRef(null),Kt=ne.useRef(null),Ft=ne.useRef(null),ir=ne.useRef(null),sr=ne.useRef(null),ot=ne.useRef(!0),[or,Nr]=ne.useState(!1),ur=ne.useRef(new Map),ra=ne.useRef(void 0),wr=ne.useRef(0),lr=lw(ep(dw,{activationConstraint:{distance:6}}));ne.useLayoutEffect(()=>{const ue=Nt.current;if(!ue)return;const it=ra.current;if(it===t)return;it!==void 0&&ur.current.set(it,wr.current);const _t=ur.current.get(t)??0;ue.scrollTop=_t,wr.current=_t,ra.current=t},[t]),ne.useLayoutEffect(()=>{Lr(!0)},[t]),ne.useEffect(()=>{Wr&&nt.current?.focus()},[Wr]),ne.useEffect(()=>{De(!1),fr("")},[t]),ne.useEffect(()=>{Ar||(De(!1),fr(""))},[Ar]);const u=ne.useCallback(ue=>{const it=ue.currentTarget.scrollTop;wr.current=it,ur.current.set(t,it)},[t]),bt=()=>{const ue=Ot.trim();if(!ue)return;const it=new Date().toISOString();Se([...y,{id:`checklist-draft-${it}-${y.length}`,taskId:t||"",title:ue,isCompleted:!1,order:y.length,createdAt:it,updatedAt:it}]),fr(""),De(!1),window.requestAnimationFrame(()=>pt.current?.focus())},gt=()=>{if(Wr){nt.current?.focus();return}Ar||Lr(!0),De(!0)},Xr=(ue=!0)=>{De(!1),fr(""),ue&&window.requestAnimationFrame(()=>pt.current?.focus())},Ir=async(ue,it,_t)=>{const Pt=Le.current,rr=t,mr=()=>Le.current===Pt&&yt.current===Ue;It(null);const dn=[];let xt=0,Rr=null;for(const Yr of ue){if(Yr.size>10*1024*1024){xt+=1,Rr="Images must be 10 MB or smaller.";continue}try{const ln=await qV(Yr,{ownerType:"task",ownerId:rr,workspaceId:b,...!rr&&w?{draftUploadId:w,uploadPurpose:"task-description-draft"}:{}});if(!mr())return;const qn=cp(ln);if(!qn)throw new Error("The uploaded image did not receive an image reference.");Fe(ln),$P({workspaceId:String(b||"").trim()||"default",ownerType:"task",ownerId:rr,taskId:rr,reason:"upload"}),dn.push(qn)}catch(ln){xt+=1,Rr=ln instanceof Error?ln.message:"The image could not be added."}}if(mr()){if(dn.length>0){const Yr=Me.current,ln=Math.min(it,Yr.length),qn=Math.min(Math.max(_t,ln),Yr.length),Kr=Yr.slice(0,ln),jr=Yr.slice(qn),Yn=Kr&&!/\s$/.test(Kr)?`
|
|
3
|
+
`:"",Ia=jr&&!/^\s/.test(jr)?`
|
|
4
|
+
`:"",$n=`${Yn}${dn.join(`
|
|
5
|
+
`)}${Ia}`,Cs=`${Kr}${$n}${jr}`,ya=Kr.length+$n.length;Me.current=Cs,pe.current&&(pe.current.value=Cs),Pe(Cs),ge(Cs),window.requestAnimationFrame(()=>{pe.current?.focus(),pe.current?.setSelectionRange(ya,ya)})}if(xt>0){const Yr=dn.length>0?`${xt} image${xt===1?"":"s"} could not be added.`:Rr||(ue.length===1?"The image could not be added.":"The images could not be added.");It(Yr)}}},Vt=(ue,it,_t)=>{if(ue.length===0||He.current)return He.current||Promise.resolve();kt(!0);const Pt=Ir(ue,it,_t);return He.current=Pt,Oe?.(Pt),Pt.then(()=>{He.current===Pt&&(He.current=null,kt(!1))},()=>{He.current===Pt&&(He.current=null,kt(!1))}),Pt},Ur=ue=>Array.from(ue.items).filter(it=>it.kind==="file"&&/^(?:image\/(?:png|jpeg|webp))$/i.test(it.type)).map(it=>it.getAsFile()).filter(it=>!!it),$r=ue=>Array.from(ue.files).filter(it=>/^(?:image\/(?:png|jpeg|webp))$/i.test(it.type)),Tn=ue=>Array.from(ue.items||[]).some(it=>it.kind==="file"&&/^(?:image\/(?:png|jpeg|webp))$/i.test(it.type))||$r(ue).length>0,an=ue=>{Tn(ue.dataTransfer)&&(ue.preventDefault(),ue.dataTransfer.dropEffect="copy")},Qr=ne.useCallback(ue=>{const{active:it,over:_t}=ue;if(!_t||it.id===_t.id)return;const Pt=y.findIndex(xt=>xt.id===it.id),rr=y.findIndex(xt=>xt.id===_t.id);if(Pt<0||rr<0)return;const mr=new Date().toISOString(),dn=iC(y,Pt,rr).map((xt,Rr)=>({...xt,order:Rr,updatedAt:mr}));Se(dn)},[y,Se]),Ge=ue=>{const it=String(ue||"").trim(),_t=ue.trim().replace(/^ai-profile-/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ");return!_t||_t==="ai"||it.toLowerCase().startsWith("ai-profile-")?"AI Agent":`AI Agent - ${_t.split(" ").map(rr=>rr.charAt(0).toUpperCase()+rr.slice(1)).join(" ")}`},Gr=MC(ee,f),yr=ne.useMemo(()=>new Map(Gr.map(ue=>[String(ue.value),ue])),[Gr]),Yt=ne.useMemo(()=>{const ue=[re?.assigneeActor,re?.createdByActor].filter(Boolean);return new Map(ue.map(it=>[String(it.id),it]))},[re?.assigneeActor,re?.createdByActor]),Zt=ne.useMemo(()=>new Map(fe.map(ue=>[ue.id,lf(ue)||ue.id])),[fe]),Sn=ne.useMemo(()=>new Map(Ie.map(ue=>[ue.id,GI(ue)||ue.id])),[Ie]),$t=ne.useMemo(()=>ww({activity:re?.activity,comments:k}),[k,re?.activity]),Ut=(ue,it)=>{const _t=String(it||"").trim();if(_t){if(ue==="assignee")return np(_t,Gr);if(ue==="workstreamId")return Zt.get(_t);if(ue==="initiativeId")return Sn.get(_t)}},Fr=ne.useCallback((ue,it,_t)=>{if(_t&&_t.trim())return _t.trim();const Pt=String(ue||"").trim();if(!Pt)return it==="ai"?"AI Agent":jt("taskForm.you");const rr=Yt.get(Pt);if(rr?.label)return rr.label;const mr=yr.get(Pt)||yr.get(Pt.toLowerCase());return mr?.label?mr.label:it==="ai"?Ge(Pt):np(Pt,Gr)||Pt},[Yt,yr,Ge,Gr]),Wn=ne.useCallback(({actorId:ue,actorType:it,actorProfile:_t,fallbackKind:Pt})=>{const rr=String(ue||"").trim();if(T_(rr))return{kind:"system",label:I_,ActorIcon:XA,description:__};const mr=rr.toLowerCase(),dn=Yt.get(rr),xt=yr.get(rr)||yr.get(mr),Rr=_t||dn||xt||null,Yr=it==="system"?"system":it==="ai"||Rr?.kind==="ai"?"agent":it==="human"||Rr?.kind==="human"?"member":xt?.kind==="agent"?"agent":xt?.kind==="member"?"member":Pt||(mr===""||mr==="user"||mr==="human"?"member":"agent"),ln=Yr==="system"?"System":Fr(rr,Yr==="agent"?"ai":"human",Rr?.label||null),qn=Rr?.color,Kr=String(Rr?.icon||(Yr==="agent"?"Bot":Yr==="member"?"User":"ClipboardList")),jr=df[Kr]||(Yr==="agent"?Cd:Yr==="member"?tf:QA);return{kind:Yr,label:ln,color:qn,ActorIcon:jr,isCurrentActorHint:Yr==="member"&&(mr===""||mr==="user"||mr==="human")}},[Yt,yr,Fr]),da=ne.useMemo(()=>{const ue=$t[$t.length-1];if(!ue)return null;if(ue.type==="comment"){const _t=ue.comment;return Fr(_t.author,_t.actor?.kind==="ai"?"ai":_t.actor?.kind==="human"?"human":null,_t.actor?.label||null)}const it=ue.event;return Fr(it.actor,it.actorType,it.actorProfile?.label||null)},[Fr,$t]),ua=ne.useMemo(()=>{if(!re?.completedAt)return null;for(const it of $t){if(it.type!=="event")continue;const _t=it.event,Pt=_t.details?.changes?.status?.to;if(Pt==="done"||Pt==="cancelled")return Fr(_t.actor,_t.actorType,_t.actorProfile?.label||null)}return da},[re?.completedAt,da,Fr,$t]),en=re?.createdByActor?.label||Fr(re?.createdBy||null,re?.createdByActor?.kind==="ai"?"ai":re?.createdByActor?.kind==="human"?"human":null,re?.createdByActor?.label||null),sn=da,on=$t.length,xn=$t.filter(ue=>ue.type==="comment").length,cn=$t[0]?.id||null,xr=$t[on-1]?.id||null,Dr=String(r||"").trim(),kn=t&&Dr?`${t}\0${Dr}`:null,tn=ne.useCallback(ue=>({taskId:t,count:on,firstItemId:cn,lastItemId:xr,scrollHeight:ue.scrollHeight,scrollTop:ue.scrollTop}),[on,t,cn,xr]),ga=ne.useCallback(()=>{const ue=Qt.current;ue&&(ue.scrollTop=ue.scrollHeight,ot.current=!0,Nr(!1),sr.current=tn(ue))},[tn]),Mn=ne.useCallback(()=>{const ue=Qt.current,it=St.current;return!ue||!it||!kn||Kt.current===kn?!1:(it.scrollIntoView?.({block:"center",inline:"nearest"}),it.focus({preventScroll:!0}),ot.current=!1,Nr(!1),Kt.current=kn,sr.current=tn(ue),!0)},[kn,tn]),mn=ne.useCallback(ue=>{St.current=ue,ue&&Mn()},[Mn]),Rn=ne.useCallback(ue=>{ir.current?.(ue.currentTarget)},[]),gn=ne.useCallback(ue=>{const _t=ue.scrollHeight-ue.scrollTop-ue.clientHeight<=lG;ot.current=_t,_t&&Nr(!1),sr.current=tn(ue)},[tn]);ne.useLayoutEffect(()=>{ir.current=gn},[gn]);const lt=ne.useCallback(ue=>{if(Ft.current?.disconnect(),Ft.current=null,Qt.current=ue,!!ue&&(kn&&Kt.current!==kn?ot.current=!1:(ue.scrollTop=ue.scrollHeight,ot.current=!0),Nr(!1),typeof ResizeObserver<"u")){const it=new ResizeObserver(()=>{const _t=Qt.current;_t&&ir.current?.(_t)});it.observe(ue),Ft.current=it}},[kn,t]);ne.useLayoutEffect(()=>{Kt.current=null},[kn]),ne.useLayoutEffect(()=>{if(!t)return;const ue=Qt.current;if(!ue)return;const it=sr.current,_t=it?.taskId!==t,Pt=!!(it&&on>it.count),rr=!!(it&&Pt&&it.lastItemId===xr&&it.firstItemId!==cn);if(kn&&Mn()){sr.current=tn(ue);return}_t||ot.current?ga():rr&&it?ue.scrollTop=it.scrollTop+(ue.scrollHeight-it.scrollHeight):Pt&&Nr(!0),sr.current=tn(ue);const mr=window.requestAnimationFrame(()=>{_t||ot.current?ga():sr.current=tn(ue)});return()=>window.cancelAnimationFrame(mr)},[on,kn,tn,t,cn,xr,ga,Mn]);const Ln=ne.useCallback(()=>{ga(),_e()},[_e,ga]),Wt=a.jsxs("aside",{className:At.activitySidebar,"aria-label":jt("taskForm.commentsSectionTitle"),children:[a.jsx("div",{className:At.activitySidebarHeader,children:a.jsxs("h2",{className:At.activitySidebarTitle,children:[jt("taskForm.commentsSectionTitle")," (",xn,")"]})}),a.jsxs("div",{className:`${At.commentPanel} ${At.activitySidebarPanel} tf-surface-panel`.trim(),children:[a.jsxs("div",{className:At.activityTimelineRegion,children:[a.jsx(ne.Suspense,{fallback:a.jsx(fG,{count:on}),children:a.jsx(dG,{activity:re?.activity,comments:k,formatFieldValue:Ut,resolveActorPresentation:Wn,currentActorId:R,taskReferences:Ze,emptyMessage:jt(t?"taskForm.noComments":"taskForm.noActivity"),listClassName:At.commentThread,emptyClassName:At.emptyComments,listRef:lt,endRef:Ee,onScroll:Rn,targetEntryId:Dr,targetEntryRef:mn})}),or?a.jsx("div",{className:At.newActivityNotice,role:"status","aria-live":"polite",children:a.jsxs("button",{type:"button",className:At.newActivityButton,onClick:ga,"aria-label":jt("taskForm.newActivityAriaLabel"),children:[a.jsx(sw,{size:14,"aria-hidden":"true"}),a.jsx("span",{children:jt("taskForm.newActivity")})]})}):null]}),a.jsxs("div",{className:At.commentInputArea,children:[a.jsx("textarea",{className:`${At.commentInput} tf-field-shell`,placeholder:t?jt("taskForm.commentPlaceholder"):"Comments become available after saving",value:v,onChange:ue=>K(ue.target.value),disabled:!t||Xt,onKeyDown:ue=>{ue.key==="Enter"&&!ue.shiftKey&&(ue.preventDefault(),Ln())},rows:3}),a.jsx("button",{type:"button",className:`${At.sendCommentBtn} tf-control-icon`,onClick:Ln,disabled:!t||Xt||!v.trim(),"aria-label":"Send comment",title:"Send comment",children:a.jsx(R0,{size:16,"aria-hidden":"true"})})]})]})]});return a.jsxs("form",{ref:Nt,onSubmit:ae,onScroll:u,className:`${P.form} ${P.appScrollbar} tf-scrollbar`,children:[Xt&&a.jsx("div",{className:`${At.formNotice} tf-text-helper`,children:Tt?"Deleted tasks are read-only. Restore the task to make changes.":"Archived tasks are read-only. Unarchive the task to make changes."}),a.jsxs("div",{className:At.formLayoutWithSidebar,children:[a.jsx("fieldset",{disabled:Xt,className:At.formFieldsetReset,children:a.jsxs("div",{className:At.formMainColumn,children:[a.jsxs("div",{className:P.field,children:[a.jsx("label",{className:P.label,children:"Title"}),a.jsx("input",{ref:Te,type:"text",defaultValue:n,onChange:ue=>{const it=ue.target.value;je(it)},onBlur:ue=>{ue.currentTarget.value!==n&&Ye(ue.currentTarget.value)},placeholder:"What needs to be done?",className:P.input,required:!0,maxLength:255,autoFocus:!0})]}),a.jsxs("div",{className:`${P.field} ${At.descriptionField}`,children:[a.jsxs("div",{className:P.labelRow,children:[a.jsx("label",{className:P.label,children:"Description"}),a.jsx("button",{type:"button",className:P.helpLink,onClick:()=>G(!L),title:"Markdown Help",tabIndex:-1,children:a.jsx(Md,{size:14})})]}),L&&a.jsxs("div",{className:At.markdownHelp,children:[a.jsxs("div",{className:At.helpHeader,children:[a.jsx("span",{children:"Markdown Guide"}),a.jsx("button",{onClick:()=>G(!1),className:At.helpClose,children:a.jsx(fi,{size:12})})]}),a.jsxs("div",{className:At.helpGrid,children:[a.jsx("div",{children:a.jsx("code",{children:"**bold**"})}),a.jsx("div",{children:a.jsx("code",{children:"_italic_"})}),a.jsx("div",{children:a.jsx("code",{children:"- list"})}),a.jsx("div",{children:a.jsx("code",{children:"1. list"})}),a.jsx("div",{className:At.helpGridItem,children:a.jsx("code",{children:"`inline code`"})}),a.jsxs("div",{className:At.helpGridItem,children:[a.jsx("code",{children:"```"}),a.jsx("br",{}),a.jsx("code",{children:"code block"}),a.jsx("br",{}),a.jsx("code",{children:"```"})]}),a.jsx("div",{children:a.jsx("code",{children:"[link](url)"})})]})]}),S||!s?a.jsx("textarea",{ref:pe,className:`${P.textarea} ${At.descriptionSurface}`,placeholder:"What needs to be done? (Markdown supported)",defaultValue:s,onChange:ue=>{const it=ue.target.value;Me.current=it,Pe(it)},onFocus:()=>Y(!0),onBlur:ue=>{ue.currentTarget.value!==s&&ge(ue.currentTarget.value),Y(!1)},onPaste:ue=>{const it=Ur(ue.clipboardData);if(it.length===0)return;ue.preventDefault();const _t=ue.currentTarget;Vt(it,_t.selectionStart,_t.selectionEnd)},onDragOver:an,onDrop:ue=>{const it=$r(ue.dataTransfer);if(it.length===0)return;ue.preventDefault(),ue.stopPropagation();const _t=ue.currentTarget;Vt(it,_t.selectionStart,_t.selectionEnd)},rows:9,autoFocus:S}):a.jsx("div",{className:`${P.textarea} ${At.descriptionSurface} ${At.markdownPreview} ${At.markdownPreviewContainer}`,onClick:()=>Y(!0),onDragOver:an,onDrop:ue=>{const it=$r(ue.dataTransfer);it.length!==0&&(ue.preventDefault(),ue.stopPropagation(),Y(!0),Vt(it,s.length,s.length))},children:a.jsx(py,{variant:"detail",taskReferences:Ze,imageReferences:Xe,children:s})}),mt&&a.jsx("div",{className:At.descriptionImageStatus,role:"status",children:"Adding image to Context…"}),rt&&a.jsx("div",{className:At.descriptionImageError,role:"alert",children:rt})]}),a.jsxs("div",{className:At.compactMetaSection,children:[a.jsxs("div",{className:At.compactMetaGrid,children:[a.jsxs("div",{className:`${P.field} ${At.compactMetaField}`,children:[a.jsx("label",{id:"category-label",className:P.label,children:J?.category||"Category"}),a.jsx(ui,{value:i,options:at,onChange:ue=>ie(String(ue)),required:!0,ariaLabelledBy:"category-label",portalPanel:!0,panelMinWidth:rv,panelAlign:"start"})]}),a.jsxs("div",{className:`${P.field} ${At.compactMetaField}`,children:[a.jsx("label",{id:"type-label",className:P.label,children:J?.type||"Type"}),a.jsx(ui,{value:l,options:U,onChange:ue=>me(String(ue)),ariaLabelledBy:"type-label",portalPanel:!0,panelMinWidth:rv,panelAlign:"start"})]}),a.jsxs("div",{className:`${P.field} ${At.compactMetaField}`,children:[a.jsx("label",{htmlFor:"task-form-scheduled-date",className:P.label,children:jt("taskForm.scheduledLabel")}),a.jsx("input",{id:"task-form-scheduled-date",type:"date",value:g,onChange:ue=>D(ue.target.value),className:`${P.input} ${P.taskFormDateInput}`})]}),a.jsxs("div",{className:`${P.field} ${At.compactMetaField}`,children:[a.jsx("label",{id:"assignee-label",className:P.label,children:"Assigned To"}),a.jsx(ui,{value:f||"unassigned",options:Gr,onChange:ue=>B(String(ue)),ariaLabelledBy:"assignee-label",portalPanel:!0,panelMinWidth:rv,panelAlign:"start",searchable:!0,searchPlaceholder:"Search assignees...",noResultsText:"No assignees found.",renderOptionContent:ue=>{const it=yr.get(String(ue.value));return it?a.jsx(pf,{option:it}):ue.label}})]}),a.jsx("div",{className:At.compactMetaField,children:a.jsx(ev,{label:J?.priority||"Priority",options:Z,value:c,onChange:W,type:"priority",showSelectedLabel:!1})}),a.jsxs("div",{className:`${P.field} ${At.compactMetaField}`,children:[a.jsx("label",{htmlFor:"task-form-due-date",className:P.label,children:jt("taskForm.dueLabel")}),a.jsx("input",{id:"task-form-due-date",type:"date",value:h,onChange:ue=>be(ue.target.value),className:`${P.input} ${P.taskFormDateInput}`}),dr&&a.jsx("span",{className:`${At.taskFormDateWarning} ${At.compactMetaFieldHint}`,children:jt("taskForm.dueBeforeScheduled")}),er&&a.jsx("span",{className:`${At.taskFormDateError} ${At.compactMetaFieldHint}`,children:jt("taskForm.overdue")})]}),m&&a.jsx("div",{className:At.compactMetaField,children:a.jsx(ev,{label:"Complexity",options:[{value:1,label:"Tiny",color:"#10b981",icon:"Gauge"},{value:2,label:"Low",color:"#14b8a6",icon:"Gauge"},{value:3,label:"Medium",color:"#3b82f6",icon:"Gauge"},{value:4,label:"High",color:"#8b5cf6",icon:"Gauge"},{value:5,label:"Epic",color:"#d946ef",icon:"Gauge"}],value:d,onChange:V,type:"general"})})]}),t&&a.jsx(nG,{taskId:t,workspaceId:b,taskStatus:re?.status,taskUpdatedAt:re?.updatedAt,comments:k,assigneeOptions:Gr,currentActorId:R,apiBaseUrl:N,runtimeMode:j,disabled:!!(re?.isArchived||re?.isDeleted),onActivatePendingWorkflow:re&&Re?()=>Re(re,"in-progress",{allowSameStatus:!0}):void 0,onActiveOwnerChange:B})]}),a.jsxs("div",{className:At.sectionBlock,children:[wt.length>0&&a.jsx("div",{className:At.taxonomyFieldsGrid,children:wt.map(ue=>{const it=T[ue.id],_t=Array.isArray(it)?it.map(rr=>String(rr)):it!=null&&it!==""?[String(it)]:[],Pt=ue.options.filter(rr=>rr.status!=="retired"||_t.includes(String(rr.value)));return a.jsxs("div",{className:P.field,children:[a.jsx("label",{className:P.label,children:ue.label}),ue.description&&a.jsx("div",{className:`${At.settingsHint} tf-text-helper`,children:ue.description}),ue.widgetType==="level"?a.jsx(ev,{label:ue.label,options:Pt.map(rr=>({...rr,label:rr.status==="retired"?`${rr.label} (Retired)`:rr.label})),value:T[ue.id]||"",onChange:rr=>H(ue.id,rr),type:"general",hideLabel:!0}):ue.multiSelect?a.jsx("div",{className:`${P.dropdownList} ${At.softSectionSurface}`,children:Pt.map(rr=>{const mr=String(rr.value),dn=_t.includes(mr);return a.jsxs("button",{type:"button",className:`${At.specialistChip} ${dn?At.specialistChipActive:""}`,onClick:()=>{const xt=dn?_t.filter(Rr=>Rr!==mr):[..._t,mr];H(ue.id,xt)},title:dn?"Click to remove":"Click to add",children:[dn&&a.jsx(Fi,{size:12}),rr.status==="retired"?`${rr.label} (Retired)`:rr.label]},mr)})}):a.jsxs("div",{className:P.fieldIconWrapper,style:{"--field-color":"var(--text-primary)","--field-border":"rgba(255, 255, 255, 0.1)","--field-bg":"rgba(255, 255, 255, 0.02)"},children:[(()=>{const rr=ue.options.find(xt=>String(xt.value)===String(T[ue.id])),mr=rr?.icon&&Xs[rr.icon]?Xs[rr.icon]:Md,dn=rr?.color||"var(--text-secondary)";return a.jsx("div",{className:P.fieldIcon,style:{color:ta(dn)},children:a.jsx(mr,{size:16})})})(),a.jsxs("select",{value:T[ue.id]||"",onChange:rr=>H(ue.id,rr.target.value),className:`${P.select} ${P.field_dynamic}`,required:ue.isRequired,children:[a.jsxs("option",{value:"",children:["Select ",ue.label,"..."]}),Pt.map(rr=>a.jsx("option",{value:rr.value,children:rr.status==="retired"?`${rr.label} (Retired)`:rr.label},rr.value))]})]})]},ue.id)})}),_&&a.jsxs("div",{className:`${P.specialistSection} ${wt.length===0?At.specialistSectionWithoutTaxonomies:""}`.trim(),children:[a.jsx(Km,{label:`Checklist${y.length>0?` (${cr}/${y.length})`:""}`,expanded:Ar,expandedTitle:"Hide checklist",collapsedTitle:"Show checklist",onToggle:()=>{const ue=!Ar;Lr(ue),ue||Xr(!1)},actions:a.jsx("div",{className:P.contextMenuControl,children:a.jsx("button",{ref:pt,type:"button",className:"tf-control-icon","aria-label":"Add checklist item",title:"Add checklist item","aria-expanded":Wr,onClick:gt,children:a.jsx(di,{size:14,"aria-hidden":"true"})})})}),Ar&&(Wr||y.length>0)&&a.jsxs("div",{className:`${P.dropdownList} ${At.stackedList} ${At.stackedListSpaced}`,children:[Wr&&a.jsxs("div",{className:`${P.pathInputGroup} ${At.checklistInputGroup}`,children:[a.jsx("input",{ref:nt,type:"text",className:P.input,placeholder:"Add checklist item",value:Ot,onChange:ue=>fr(ue.target.value),onKeyDown:ue=>{ue.key==="Enter"&&(ue.preventDefault(),ue.stopPropagation(),bt()),ue.key==="Escape"&&(ue.preventDefault(),ue.stopPropagation(),Xr())}}),a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:bt,disabled:!Ot.trim(),"aria-label":"Confirm checklist item",title:"Add checklist item",children:a.jsx(Fi,{size:14,"aria-hidden":"true"})}),a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:()=>Xr(),"aria-label":"Cancel checklist item",title:"Cancel",children:a.jsx(fi,{size:14,"aria-hidden":"true"})})]}),y.length>0&&a.jsx(uw,{sensors:lr,collisionDetection:cC,onDragEnd:Qr,children:a.jsx(fw,{items:y.map(ue=>ue.id),strategy:mw,children:y.map((ue,it)=>a.jsx(mG,{id:ue.id||`checklist-${it}`,item:ue,onToggle:()=>{const _t=new Date().toISOString();Se(y.map((Pt,rr)=>rr===it?{...Pt,isCompleted:!Pt.isCompleted,updatedAt:_t}:Pt))},onRemove:()=>Se(y.filter((_t,Pt)=>Pt!==it).map((_t,Pt)=>({..._t,order:Pt})))},ue.id||`checklist-${it}`))})})]})]})]}),a.jsxs("div",{children:[a.jsx(ne.Suspense,{fallback:null,children:a.jsx(uG,{taskId:t,taskReferenceLabel:Ce,workspaceId:b,apiBaseUrl:N,showImageReviews:E&&!!re,contextFiles:A,onAddContextFile:Fe,onRemoveContextFile:st,onUpdateContextCaption:ft,cardCoverAssetId:re?.cardCoverAssetId,onSetCardCover:xe,cardCoverDisabled:ke})}),a.jsx("div",{className:`${At.taskFormLifecycle} ${At.taskFormMetaDivider}`,children:a.jsx("div",{className:At.taskFormMetaGrid,children:re&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:At.taskFormDateRow,children:[a.jsx("span",{className:At.taskFormDateLabel,children:jt("taskForm.createdLabel")}),a.jsxs("span",{className:At.taskFormMetaStack,children:[a.jsx("span",{className:At.taskFormDateValue,children:Ke||jt("taskForm.emptyValue")}),a.jsx("span",{className:At.taskFormMetaActor,children:en?`by ${en}`:jt("taskForm.emptyValue")})]})]}),a.jsxs("div",{className:At.taskFormDateRow,children:[a.jsx("span",{className:At.taskFormDateLabel,children:jt("taskForm.updatedLabel")}),a.jsxs("span",{className:At.taskFormMetaStack,children:[a.jsx("span",{className:At.taskFormDateValue,children:Et||jt("taskForm.emptyValue")}),a.jsx("span",{className:At.taskFormMetaActor,children:sn?`by ${sn}`:jt("taskForm.emptyValue")})]})]}),a.jsxs("div",{className:At.taskFormDateRow,children:[a.jsx("span",{className:At.taskFormDateLabel,children:jt("taskForm.completedLabel")}),a.jsxs("span",{className:At.taskFormMetaStack,children:[a.jsx("span",{className:At.taskFormDateValue,children:vt||jt("taskForm.emptyValue")}),a.jsx("span",{className:At.taskFormMetaActor,children:ua?`by ${ua}`:jt("taskForm.emptyValue")})]})]})]})})})]})]})}),Wt]})]})}function Sg({ariaExpanded:e,ariaLabel:t,children:r,disabled:n=!1,onClick:s,title:i}){return a.jsx("button",{type:"button",className:`${P.referenceBadge} ${P.taskHierarchyActionBtn}`,onClick:s,disabled:n,title:i,"aria-label":t,"aria-expanded":e,children:r})}function R_({editingTaskId:e,loading:t,submitDisabled:r=!1,autoSaveState:n="idle",title:s,status:i="task",onStatusChange:l,showCreateSubmit:c=!0,handleSubmit:d,handleCopyId:m,copiedId:f,tasks:g,currentTask:h,currentTaskWorkstream:y,currentTaskInitiative:k,workstreams:v=[],onWorkstreamInputChange:A,onSetWorkstreamForCurrentTask:b,handleToggleInProgress:w,handleToggleReview:R,handleToggleComplete:N,handleToggleCancel:j,handleSetStatus:E,handleArchiveTask:S,handleUnarchiveTask:L,handleRestoreDeletedTask:_,handlePermanentlyDeleteDeletedTask:T,onAskAgent:H}){const q=h??(e&&g.find(ie=>ie.id===e)||null),z=!!q?.isArchived,M=!!q?.isDeleted,Z=ne.useMemo(()=>{if(!M||!q?.deletedExpiresAt)return"";const ie=new Date(q.deletedExpiresAt);return Number.isNaN(ie.getTime())?"":`Trash expires ${ie.toLocaleString()}`},[q?.deletedExpiresAt,M]),J=kw(q),ee=J.label||(J.isProvisional?"Pending":""),te=J.isProvisional,fe=!!J.label,Ie=y?lf(y)||y.id:"",$e=k?ws(k)||k.id:"",Ye=ne.useCallback(ie=>{A?.(lf(ie)||ie.id),e&&b?.(ie.id)},[e,b,A]),ye=ne.useCallback(()=>{A?.(""),e&&b?.(null)},[e,b,A]),ge=y?a.jsx(Sg,{onClick:ye,disabled:t||z||M,title:"Unlink task from workstream",ariaLabel:"Unlink task from workstream",children:a.jsx(Um,{size:13})}):null,oe=a.jsx("div",{className:P.taskHierarchyHeader,children:a.jsxs("div",{className:P.taskHierarchyBadgeRow,children:[k?a.jsx("span",{className:P.taskHierarchySegment,children:a.jsx(nf,{copied:f===$e,onClick:ie=>m(ie,$e),disabled:t,title:k.title,ariaLabel:`Copy initiative reference ${$e}: ${k.title}`,label:$e})}):null,y?a.jsxs("span",{className:P.taskHierarchySegment,children:[k?a.jsx("span",{className:P.taskHierarchyDivider,children:"/"}):null,a.jsx(nf,{copied:f===Ie,onClick:ie=>m(ie,Ie),disabled:t,title:y.title,ariaLabel:`Copy workstream reference ${Ie}: ${y.title}`,label:Ie})]}):a.jsx(S_,{workstreams:v,onSelect:Ye,disabled:t||z||M}),!ee&&ge?a.jsxs("span",{className:P.taskHierarchySegment,children:[a.jsx("span",{className:P.taskHierarchyDivider,children:"/"}),ge]}):null,ee?a.jsxs("span",{className:P.taskHierarchySegment,children:[y?a.jsx("span",{className:P.taskHierarchyDivider,children:"/"}):null,ge,a.jsx(nf,{copied:fe&&f===J.label,onClick:ie=>m(ie,J.label),disabled:t||!fe,title:te?"Temporary identifier — replaced after synchronization.":jt("actionHeader.copyTaskIdTitle"),ariaLabel:te?`Copy temporary task reference ${ee}`:void 0,label:ee,provisional:te})]}):null,Z?a.jsx("span",{className:P.taskHierarchyMeta,title:"Trash items are permanently deleted 90 days after deletion.",children:Z}):null]})});return a.jsxs("div",{className:P.stickyActionHeader,children:[oe,e?a.jsxs(a.Fragment,{children:[a.jsx("div",{className:P.taskSaveStatusCenter,children:a.jsx("div",{className:`${P.taskSaveStatus} ${n==="error"?P.taskSaveStatusError:""}`,"aria-live":"polite",children:n==="saving"?a.jsxs(a.Fragment,{children:[a.jsx(ea,{size:14,className:P.spinner}),a.jsx("span",{children:"Saving…"})]}):n==="saved"?a.jsx("span",{children:"Saved"}):n==="error"?a.jsx("span",{children:"Save failed"}):null})}),a.jsxs("div",{className:P.editActionsGroup,children:[H&&q?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>H(q),disabled:t,title:"Ask a Taskforce Agent about this task","aria-label":"Ask a Taskforce Agent about this task",children:a.jsx(Cd,{size:16})}):null,M&&q?.deletedRecordId?a.jsxs(a.Fragment,{children:[_&&a.jsx("button",{type:"button",className:P.actionBtn,onClick:()=>_(q.deletedRecordId||""),disabled:t,title:"Restore deleted task","aria-label":"Restore deleted task",children:a.jsx($i,{size:16})}),T&&a.jsx("button",{type:"button",className:`${P.actionBtn} ${P.deleteBtn}`,onClick:()=>T(q.deletedRecordId||""),disabled:t,title:"Permanently delete deleted task","aria-label":"Permanently delete deleted task",children:a.jsx(fp,{size:16})})]}):a.jsx(Kg,{task:q,disabled:t,statusDisabled:t||z,archiveActionMode:z?"unarchive":"auto",onSetStatus:(ie,me)=>{if(E){E(ie,me);return}if(me==="in-progress"){w(ie);return}if(me==="review"){R(ie);return}if(me==="done"){N(ie);return}me==="cancelled"&&j(ie)},onArchiveTask:S,onUnarchiveTask:ie=>L?.(ie.id)})]})]}):a.jsxs(a.Fragment,{children:[a.jsx("div",{className:P.taskSaveStatusCenter}),a.jsxs("div",{className:P.editActionsGroup,children:[a.jsx(Kg,{status:i,disabled:t,archiveActionMode:"none",onStatusChange:l}),c?a.jsxs("button",{type:"button",onClick:ie=>d(ie),disabled:t||r||!s.trim(),className:P.primaryUpdateBtn,title:jt("actionHeader.addTaskTitle"),children:[t?a.jsx(ea,{size:16,className:P.spinner}):a.jsx(di,{size:16}),jt("actionHeader.addTask")]}):null]})]})]})}function pG(e={x:0,y:0}){const[t,r]=o.useState(e),[n,s]=o.useState(!1),[i,l]=o.useState({x:0,y:0}),[c,d]=o.useState(0),m=o.useRef(null),f=o.useCallback(y=>{const k=y.target;if(!(k.closest("button")||k.closest("input")||k.closest("select")||k.closest("textarea")||k.closest('[role="button"]')||k.closest(".no-drag"))){if(m.current){const v=m.current.getBoundingClientRect();d(v.top-t.y)}s(!0),l({x:y.clientX-t.x,y:y.clientY-t.y})}},[t]),g=o.useCallback(y=>{if(n){let k=y.clientX-i.x,v=y.clientY-i.y;v<-c&&(v=-c),r({x:k,y:v})}},[n,i,c]),h=o.useCallback(()=>{s(!1)},[]);return o.useEffect(()=>(n?(window.addEventListener("mousemove",g),window.addEventListener("mouseup",h)):(window.removeEventListener("mousemove",g),window.removeEventListener("mouseup",h)),()=>{window.removeEventListener("mousemove",g),window.removeEventListener("mouseup",h)}),[n,g,h]),{position:t,isDragging:n,handleMouseDown:f,modalRef:m,setPosition:r}}const qm=[];let Rm=0,nv="";function hG(e){return qm.push(e),()=>{const t=qm.lastIndexOf(e);t>=0&&qm.splice(t,1)}}function gG(){return Rm===0&&(nv=document.body.style.overflow,document.body.style.overflow="hidden"),Rm+=1,()=>{Rm=Math.max(0,Rm-1),Rm===0&&(document.body.style.overflow=nv,nv="")}}function Vo({isOpen:e,onClose:t,title:r,children:n,footer:s,size:i="md",theme:l=xg,className:c,overlayStyle:d,headerActions:m,draggable:f=!1,isSettings:g=!1,closeOnOverlayClick:h=!0,closeDisabled:y=!1}){const k=o.useRef(null),v=o.useRef(null),A=o.useRef(t),b=o.useRef(y),w=o.useRef(Symbol("taskforce-modal")),R=o.useId(),{position:N,isDragging:j,handleMouseDown:E,modalRef:S}=pG();if(A.current=t,b.current=y,o.useEffect(()=>{if(e)return hG(w.current)},[e]),o.useEffect(()=>{const _=T=>{if(qm[qm.length-1]!==w.current)return;if(T.key==="Escape"&&e&&!b.current){A.current();return}if(T.key!=="Tab"||!e||!S.current)return;const H=Array.from(S.current.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'));if(H.length===0){T.preventDefault(),S.current.focus();return}const q=H[0],z=H[H.length-1];T.shiftKey&&document.activeElement===q?(T.preventDefault(),z.focus()):!T.shiftKey&&document.activeElement===z&&(T.preventDefault(),q.focus())};return e&&(v.current=document.activeElement instanceof HTMLElement?document.activeElement:null,window.requestAnimationFrame(()=>{(S.current?.querySelector("[data-modal-initial-focus]")??S.current?.querySelector("button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled])")??S.current)?.focus()})),window.addEventListener("keydown",_),()=>{window.removeEventListener("keydown",_),v.current?.focus()}},[e,S]),o.useEffect(()=>{if(e)return gG()},[e]),!e)return null;const L={sm:gr.modalSizeSm,md:gr.modalSizeMd,mdWide:gr.modalSizeMdWide,lg:gr.modalSizeLg,xl:gr.modalSizeXl,full:gr.modalSizeFull};return uc.createPortal(a.jsx("div",{className:`${gr.overlay} ${c||""} ${gr.overlayHighZ}`,style:d,ref:k,onClick:_=>{h&&!y&&_.target===k.current&&t()},children:a.jsxs("div",{ref:S,className:`tf-surface-modal tf-modal-shell ${gr.modal} tf-scrollbar-scope ${L[i]} ${f?gr.draggableModal:""} ${g?gr.settingsViewModal:""}`,role:"dialog","aria-modal":"true","aria-labelledby":R,tabIndex:-1,"data-theme":l,style:{transform:f?`translate(${N.x}px, ${N.y}px)`:void 0,transition:j?"none":"transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease-out"},children:[a.jsxs("div",{className:`tf-modal-header ${f?gr.draggableHeader:""}`,onMouseDown:f?E:void 0,style:{cursor:f?j?"grabbing":"grab":"default"},children:[a.jsx("div",{className:"tf-modal-title",id:R,children:r}),a.jsxs("div",{className:gr.headerActions,children:[m,a.jsx("button",{className:"tf-control-icon",onClick:t,disabled:y,title:"Close","aria-label":"Close",children:a.jsx(fi,{size:20})})]})]}),a.jsx("div",{className:gr.modalContent,children:n}),s&&a.jsx("div",{className:`${gr.formActions} ${gr.modalFooter}`,children:s})]})}),document.body)}const yG="_toolbar_1nqyq_1",kG="_masterSelection_1nqyq_13",vG="_selectedCount_1nqyq_32",wG="_actionButton_1nqyq_36",bG="_emptyButton_1nqyq_47",SG="_dialogBody_1nqyq_52",AG="_destinationSummary_1nqyq_62",CG="_hint_1nqyq_66",IG="_progress_1nqyq_70",_G="_failures_1nqyq_77",TG="_spinner_1nqyq_102",Fo={toolbar:yG,masterSelection:kG,selectedCount:vG,actionButton:wG,emptyButton:bG,dialogBody:SG,destinationSummary:AG,hint:CG,progress:IG,failures:_G,spinner:TG};function P_({theme:e,selectedRecords:t,matchingCount:r,allMatchingSelected:n,someMatchingSelected:s,fullTrashCount:i,onSelectAllMatching:l,onClearSelection:c,onRestore:d,onEmptyEntireTrash:m}){const f=o.useRef(null),[g,h]=o.useState(!1),[y,k]=o.useState("previous"),[v,A]=o.useState(!1),[b,w]=o.useState(null),R=o.useMemo(()=>t.filter(T=>T.taskSnapshot.isArchived===!0).length,[t]),N=t.length-R;o.useEffect(()=>{f.current&&(f.current.indeterminate=s)},[s]);const j=async()=>{if(t.length===0||v)return;A(!0),w({requested:t.length,completed:0,succeeded:[],failed:[]});const T=await d(t,y,w);w(T),A(!1),T.failed.length===0&&(h(!1),w(null))},E=T=>{k(T),w(null),h(!0)},S=y==="archive",L=S?t.length:R,_=S?0:N;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:Fo.toolbar,"aria-label":"Trash restore selection",children:[a.jsxs("label",{className:Fo.masterSelection,children:[a.jsx("input",{ref:f,type:"checkbox",checked:n,disabled:r===0||v,onChange:T=>{T.target.checked?l():c()},"aria-label":"Select all matching deleted tasks"}),a.jsxs("span",{className:Fo.selectedCount,children:[t.length," selected"]})]}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:c,disabled:t.length===0||v,"aria-label":"Clear selected tasks",title:"Clear selection",children:a.jsx(fi,{size:15,"aria-hidden":"true"})}),a.jsxs("button",{type:"button",className:`tf-control-icon ${Fo.actionButton}`,onClick:()=>E("previous"),disabled:t.length===0||v,children:[a.jsx($i,{size:15,"aria-hidden":"true"}),"Restore"]}),a.jsxs("button",{type:"button",className:`tf-control-icon ${Fo.actionButton}`,onClick:()=>E("archive"),disabled:t.length===0||v,title:"Restore selected tasks directly to Archive",children:[a.jsx(Pd,{size:15,"aria-hidden":"true"}),"Restore to archive"]}),m&&a.jsxs("button",{type:"button",className:`tf-control-icon ${Fo.actionButton} ${Fo.emptyButton}`,onClick:m,disabled:i===0||v,title:i>0?`Permanently delete all ${i} tasks in Trash; filters and selection do not limit this action.`:"Trash is already empty",children:[a.jsx(fp,{size:14,"aria-hidden":"true"}),"Empty Trash"]})]}),a.jsx(Vo,{isOpen:g,onClose:()=>{v||(h(!1),w(null))},closeDisabled:v,closeOnOverlayClick:!v,size:"sm",theme:e,title:S?"Restore selected tasks to Archive?":"Restore selected tasks?",footer:a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{h(!1),w(null)},disabled:v,children:"Cancel"}),a.jsxs("button",{type:"button",className:"tf-button-primary tf-button-compact","data-modal-initial-focus":!0,onClick:()=>{j()},disabled:v||t.length===0,children:[v?a.jsx(ea,{size:15,className:Fo.spinner}):S?a.jsx(Pd,{size:15}):a.jsx($i,{size:15}),b?.failed.length?"Retry failed":S?"Restore to archive":"Restore"]})]}),children:a.jsxs("div",{className:Fo.dialogBody,children:[a.jsxs("p",{children:["Restore ",t.length," task",t.length===1?"":"s","?"]}),a.jsxs("p",{className:Fo.destinationSummary,children:[L," to Archived · ",_," to Active"]}),a.jsx("p",{className:Fo.hint,children:S?"Active tasks will be marked Done and restored directly to Archive. Cancelled tasks remain Cancelled.":"Each task returns to the lifecycle state it had before deletion."}),b&&a.jsxs("div",{className:Fo.progress,"aria-live":"polite",children:[a.jsxs("strong",{children:[b.completed," / ",b.requested," completed"]}),b.failed.length>0&&a.jsxs("div",{className:Fo.failures,children:[a.jsxs("p",{children:[b.failed.length," failed and remain selected:"]}),a.jsx("ul",{children:b.failed.slice(0,8).map(T=>a.jsxs("li",{children:[a.jsx("span",{children:T.title||T.taskId}),a.jsx("span",{children:T.message})]},T.deletedRecordId))}),b.failed.length>8&&a.jsxs("p",{children:["And ",b.failed.length-8," more."]})]})]})]})})]})}const xG="_topNoticeLayer_1yiif_1",RG="_taskNoticeLayer_1yiif_13",PG="_topNotice_1yiif_1",jG="_topNoticeMessage_1yiif_37",EG="_topNoticeSuccess_1yiif_43",NG="_topNoticeError_1yiif_44",DG="_topNoticeInfo_1yiif_45",MG="_topNoticeDismiss_1yiif_63",qc={topNoticeLayer:xG,taskNoticeLayer:RG,topNotice:PG,topNoticeMessage:jG,topNoticeSuccess:EG,topNoticeError:NG,topNoticeInfo:DG,topNoticeDismiss:MG};function Zg({notice:e,onDismiss:t,placement:r="top"}){if(!e)return null;const n=e.tone==="error"?qc.topNoticeError:e.tone==="success"?qc.topNoticeSuccess:qc.topNoticeInfo,s=e.tone==="error"?"alert":"status",i=r==="task"?`${qc.topNoticeLayer} ${qc.taskNoticeLayer}`:qc.topNoticeLayer;return a.jsx("div",{className:i,children:a.jsxs("div",{className:`${qc.topNotice} ${n}`,role:s,"aria-live":e.tone==="error"?"assertive":"polite",children:[e.tone==="error"?a.jsx(Od,{size:14}):e.tone==="success"?a.jsx(Fi,{size:14}):a.jsx(P0,{size:14}),a.jsx("span",{className:qc.topNoticeMessage,children:e.message}),e.actionLabel&&e.onAction&&a.jsx("button",{type:"button",className:`${e.actionPrimary?"tf-button-primary":"tf-button-ghost"} tf-button-compact`,onClick:e.onAction,children:e.actionLabel}),e.secondaryActionLabel&&e.onSecondaryAction&&a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:e.onSecondaryAction,children:e.secondaryActionLabel}),t&&e.dismissible!==!1&&a.jsx("button",{type:"button",className:qc.topNoticeDismiss,onClick:t,"aria-label":"Dismiss notice",title:"Dismiss notice",children:a.jsx(fi,{size:14})})]})})}const LG="D-";function OG(e){return mp(LG,e)}const BG="_overlay_ey7rx_1",WG="_dialog_ey7rx_13",$G="_header_ey7rx_32",FG="_footer_ey7rx_33",UG="_titleGroup_ey7rx_53",zG="_secondaryActions_ey7rx_54",HG="_typeIcon_ey7rx_61",VG="_titleText_ey7rx_66",GG="_title_ey7rx_53",KG="_referenceBadge_ey7rx_79",qG="_content_ey7rx_83",YG="_image_ey7rx_93",ZG="_pdf_ey7rx_100",JG="_textPreview_ey7rx_107",XG="_codePreview_ey7rx_108",QG="_message_ey7rx_125",eK="_unavailable_ey7rx_126",tK="_secondaryLink_ey7rx_145",Ma={overlay:BG,dialog:WG,header:$G,footer:FG,titleGroup:UG,secondaryActions:zG,typeIcon:HG,titleText:VG,title:GG,referenceBadge:KG,content:qG,image:YG,pdf:ZG,textPreview:JG,codePreview:XG,message:QG,unavailable:eK,secondaryLink:tK},rK=/\.(?:md|markdown|txt|csv|json|js|ts|tsx|css|py|java|go|rs|sh)(?:[?#]|$)/i,nK=/\.(?:png|jpe?g|webp|gif)(?:[?#]|$)/i,aK=/\.pdf(?:[?#]|$)/i;function sK(e){return typeof e=="string"?e:e.path}function oK(e){return typeof e=="string"?e.split("/").pop()||"Context attachment":e.caption||e.displayName||e.originalFilename||e.fsPath?.split("/").pop()||e.path.split("/").pop()||"Context attachment"}function iK(e){return typeof e=="string"?[e]:[e.path,e.fsPath,e.originalFilename,e.displayName,e.caption].filter(t=>!!t)}function cK(e,t){const r=e.includes("?")?"&":"?";return`${e}${r}download=1&filename=${encodeURIComponent(t)}`}function lK(e){return e.ownerType!=="task"?e.attachment:typeof e.attachment=="string"?{path:e.attachment,taskId:e.ownerId||null}:{...e.attachment,taskId:e.ownerId||e.attachment.taskId||null}}function j_({theme:e}){const[t,r]=o.useState(null),[n,s]=o.useState(""),[i,l]=o.useState(!1),[c,d]=o.useState(null),[m,f]=o.useState(!1),g=o.useRef(null),h=o.useRef(null),y=o.useRef(null),k=o.useRef(0),v=o.useId();o.useEffect(()=>{const Z=J=>{const ee=J;ee.detail?.attachment&&(ee.preventDefault(),k.current+=1,y.current!==null&&(window.clearTimeout(y.current),y.current=null),f(!1),r(ee.detail))};return window.addEventListener(Gv,Z),()=>window.removeEventListener(Gv,Z)},[]),o.useEffect(()=>()=>{k.current+=1,y.current!==null&&window.clearTimeout(y.current)},[]),o.useEffect(()=>{if(!t)return;h.current=document.activeElement instanceof HTMLElement?document.activeElement:null;const Z=J=>{if(J.key==="Escape"){J.preventDefault(),J.stopPropagation(),r(null);return}if(J.key!=="Tab"||!g.current)return;const ee=Array.from(g.current.querySelectorAll('button:not([disabled]), [href], iframe, [tabindex]:not([tabindex="-1"])'));if(ee.length===0){J.preventDefault(),g.current.focus();return}const te=ee[0],fe=ee[ee.length-1];J.shiftKey&&document.activeElement===te?(J.preventDefault(),fe.focus()):!J.shiftKey&&document.activeElement===fe&&(J.preventDefault(),te.focus())};return window.addEventListener("keydown",Z,!0),window.requestAnimationFrame(()=>g.current?.focus()),()=>{window.removeEventListener("keydown",Z,!0),h.current?.focus()}},[t]);const A=t?sK(t.attachment):"",b=t?iK(t.attachment):[],w=/^https?:\/\//i.test(A),R=b.some(Z=>nK.test(Z)),N=b.some(Z=>aK.test(Z)),j=b.some(Z=>rK.test(Z))&&!w,E=b.some(Z=>/\.(?:md|markdown)(?:[?#]|$)/i.test(Z));if(o.useEffect(()=>{if(s(""),d(null),!t||!j){l(!1);return}const Z=new AbortController;return l(!0),fetch(A,{signal:Z.signal,headers:t.workspaceId?{"x-taskforce-workspace-id":t.workspaceId}:void 0}).then(async J=>{if(!J.ok)throw new Error("Preview unavailable");s(await J.text())}).catch(J=>{J instanceof DOMException&&J.name==="AbortError"||d(J instanceof Error?J.message:"Preview unavailable")}).finally(()=>{Z.signal.aborted||l(!1)}),()=>Z.abort()},[j,A,t]),!t)return null;const S=oK(t.attachment),L=typeof t.attachment=="string"?null:t.attachment,_=R?cp(L):OG(L),T=lK(t),H=R&&h_(T,{taskId:t.ownerType==="task"?t.ownerId:null,taskReferenceLabel:t.ownerReferenceLabel}),q=!R&&u_(T,typeof T=="string"?void 0:T.fsPath),z=async()=>{if(!_)return;const Z=k.current;try{await navigator.clipboard.writeText(_)}catch{if(k.current!==Z)return;const J=document.createElement("textarea");J.value=_,document.body.appendChild(J),J.select(),document.execCommand("copy"),J.remove()}k.current===Z&&(f(!0),y.current!==null&&window.clearTimeout(y.current),y.current=window.setTimeout(()=>{k.current===Z&&(f(!1),y.current=null)},1200))},M=()=>{if(H?Kv(T,{taskId:t.ownerType==="task"?t.ownerId:null,taskReferenceLabel:t.ownerReferenceLabel}):f_(T,typeof T=="string"?void 0:T.fsPath)){r(null);return}window.open(A,"_blank","noopener,noreferrer")};return uc.createPortal(a.jsx("div",{className:Ma.overlay,"data-theme":e,onMouseDown:Z=>{Z.target===Z.currentTarget&&r(null)},children:a.jsxs("div",{ref:g,className:Ma.dialog,role:"dialog","aria-modal":"true","aria-labelledby":v,tabIndex:-1,children:[a.jsxs("header",{className:Ma.header,children:[a.jsxs("div",{className:Ma.titleGroup,children:[a.jsx("span",{className:Ma.typeIcon,"aria-hidden":"true",children:R?a.jsx(eC,{size:16}):a.jsx(Xm,{size:16})}),a.jsxs("div",{className:Ma.titleText,children:[a.jsx("div",{className:Ma.title,id:v,children:S}),_&&a.jsx(Zw,{label:_,copied:m,onClick:()=>{z()},title:S,ariaLabel:m?`Copied ${_}`:`Copy ${_}`,className:Ma.referenceBadge})]})]}),a.jsx("button",{type:"button",className:"tf-control-icon","aria-label":"Close preview",title:"Close preview",onClick:()=>r(null),children:a.jsx(fi,{size:18})})]}),a.jsxs("div",{className:Ma.content,children:[R&&a.jsx("img",{className:Ma.image,src:A,alt:S}),N&&a.jsx("iframe",{className:Ma.pdf,src:A,title:`Preview ${S}`}),j&&i&&a.jsx("div",{className:Ma.message,children:"Loading preview…"}),j&&c&&a.jsx("div",{className:Ma.message,children:c}),j&&!i&&!c&&(E?a.jsx("div",{className:Ma.textPreview,children:a.jsx(py,{variant:"detail",children:n})}):a.jsx("pre",{className:Ma.codePreview,children:n})),!R&&!N&&!j&&a.jsxs("div",{className:Ma.unavailable,children:[a.jsx(Xm,{size:34,"aria-hidden":"true"}),a.jsx("strong",{children:"Preview unavailable"}),a.jsx("span",{children:"This file type can be opened or downloaded instead."})]})]}),a.jsxs("footer",{className:Ma.footer,children:[a.jsxs("div",{className:Ma.secondaryActions,children:[!w&&a.jsxs("a",{className:Ma.secondaryLink,href:cK(A,S),target:"_blank",rel:"noreferrer",children:[a.jsx(j0,{size:14})," Download"]}),(w||!H&&!q)&&a.jsxs("a",{className:Ma.secondaryLink,href:A,target:"_blank",rel:"noreferrer",children:[a.jsx(Eb,{size:14})," Open original"]})]}),(H||q)&&a.jsxs("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:M,children:[H?a.jsx(E0,{size:14}):a.jsx(Eb,{size:14}),H?"Open in Image Notes":"Open"]})]})]})}),document.body)}const dK=ne.lazy(()=>Go(()=>import("./TaskSettings-Cv1mNhv_.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings})));function uK(e){const{activeTab:t,setActiveTab:r,isOpen:n,setIsOpen:s,currentTheme:i,setCurrentTheme:l,saveSettings:c,pathSaved:d,keyShortcut:m,setKeyShortcut:f,jsonBackupEnabled:g,setJsonBackupEnabled:h,mcpHostRoot:y,setMcpHostRoot:k,settingsSection:v,setSettingsSection:A,projectRoot:b,projectName:w,mcpScriptPath:R,serverHostRoot:N,showFolderBrowser:j,setShowFolderBrowser:E,folders:S,files:L,currentBrowsePath:_,fetchFolders:T,browserTarget:H,setBrowserTarget:q,handleSelectPath:z,handleAddPath:M,handleRemovePath:Z,tasks:J,loadingTasks:ee,archivedTasks:te,deletedTasks:fe,activeCategories:Ie,activeTypes:$e,priorities:Ye,taxonomyDisplayLabels:ye,taxonomies:ge,searchQuery:oe,setSearchQuery:ie,filterCategories:me,setFilterCategories:W,filterTypes:V,setFilterTypes:B,filterPriorities:D,setFilterPriorities:be,filterStatus:Se,setFilterStatus:K,filterAssignees:Y,setFilterAssignees:G,assigneeOptions:ae,filterTaxonomies:_e,setFilterTaxonomies:Oe,sortBy:Fe,setSortBy:st,sortOrder:ft,toggleSortOrder:xe,showArchive:ke,setShowArchive:ve,taskScope:Ve,setTaskScope:Ne,clearFilters:de,filteredTasks:x,filteredArchive:le,groupedTasks:Re,collapsedCategories:Je,setCollapsedCategories:X,handleEdit:Ze,handleDelete:re,handleCopyId:Ee,handleUpdateTask:je,handleToggleComplete:Pe,handleToggleCancel:Ce,handleToggleInProgress:Te,handleToggleReview:pe,handleSetStatus:Me,handleArchiveTask:et,handleBulkArchive:Ue,handleUnarchive:yt,handleRestoreDeletedTask:Le,handleRestoreSelectedDeletedTasks:mt,handlePermanentlyDeleteDeletedTask:kt,handleEmptyDeletedTasks:He,fetchArchive:rt,editingTaskId:It,loading:Xe,error:wt,clearTaskError:at,title:U,setTitle:he,setTitleDraft:Ke,description:Et,setDescription:vt,setDescriptionDraft:Bt,checklistItems:dr,setChecklistItems:er,category:cr,setCategory:Ot,type:fr,setType:Ar,priority:Lr,setPriority:Wr,complexity:De,setComplexity:nt,status:pt,setStatus:ut,manualComplexityEnabled:Tt,checklistDropdownEnabled:Xt,showTaskCardStatusLabel:Nt,showTaskCardDescription:Qt,showTaskCardAttachments:St,showTaskCardChecklistProgress:Kt,showTaskCardLatestActivity:Ft,tintTaskCardActivityBackground:ir,assignee:sr,setAssignee:ot,scheduledDate:or,setScheduledDate:Nr,dueDate:ur,setDueDate:ra,workstreamInput:wr,setWorkstreamInput:lr,formTaxonomies:u,setFormTaxonomies:bt,comments:gt,newCommentText:Xr,setNewCommentText:Ir,attachments:Vt,setAttachments:Ur,setAttachmentsDirty:$r,descriptionImageUploadPending:Tn,descriptionImageDraftId:an,registerDescriptionImageUpload:Qr,descriptionFocused:Ge,setDescriptionFocused:Gr,showMarkdownHelp:yr,setShowMarkdownHelp:Yt,handleSubmit:Zt,resetForm:Sn,discardDescriptionImageDraft:$t,handleAddComment:Ut,handleSetWorkstreamForCurrentTask:Fr,handleOpenTaskById:Wn,autoSaveState:da,unsavedModalOpen:ua,setUnsavedModalOpen:en,pendingNavigation:sn,handleNavigation:on,handleClose:xn,scheduleWarningPrompt:cn,confirmScheduleWarning:xr,cancelScheduleWarning:Dr,uiNotice:kn,pushNotice:tn,clearNotice:ga,taskReturnTrail:Mn,clearReturnToParentTask:mn,returnToPreviousTask:Rn,copiedId:gn,recentlyChangedTaskIds:lt,tasksScrollRef:Ln,setTasksScrollPos:Wt,currentTask:ue,currentTaskWorkstream:it,currentTaskInitiative:_t,handleUpdateCategory:Pt,handleRemoveCategory:rr,handleSaveCategory:mr,handleUpdateCategoryIcon:dn,handleUpdateCategoryColor:xt,handleSaveType:Rr,handleRemoveType:Yr,handleUpdateTaxonomies:ln,handleUpdatePriorities:qn,pathValidation:Kr,validatePaths:jr,getCategoryPaths:Yn,commentsEndRef:Ia,currentWorkspaceId:$n,authUserId:Cs,runtimeMode:ya,settingsModel:Bs,onHeaderMouseDown:eo,isDragging:to}=e,Zn=s_(J,Wn),Ws=o.useCallback(dt=>{if(dt.kind==="initiative"||dt.kind==="workstream"){const Zr=dt.kind==="initiative"?e.initiatives.find(Pn=>Pn.referenceNumber===dt.referenceNumber):e.workstreams.find(Pn=>Pn.referenceNumber===dt.referenceNumber);if(!Zr){tn(`${dt.token} could not be found.`,"error");return}const Cn=qz({applicationBaseUrl:window.location.origin,workspaceId:String($n||"default").trim()||"default",target:dt.kind,id:Zr.id});if(!Cn){tn(`${dt.token} could not be opened.`,"error");return}window.open(Cn,"_blank","noopener,noreferrer");return}const vr=String($n||"default").trim()||"default";i_(dt,{workspaceId:vr}).then(Zr=>{ip(Zr,{ownerType:"task",ownerId:ue?.id||null,ownerReferenceLabel:Ss(ue),workspaceId:vr})}).catch(()=>{tn(`${dt.token} could not be opened.`,"error")})},[ue,$n,e.initiatives,e.workstreams,tn]),na=o.useMemo(()=>({...Zn,entityReferences:{resolve:yC,activate:Ws}}),[Ws,Zn]),pi=o.useRef(null),[Jn,hi]=ne.useState(0);o.useLayoutEffect(()=>{if(t==="tasks"&&Ln.current&&Jn>0){const dt=setTimeout(()=>{Ln.current&&(Ln.current.scrollTop=Jn)},50);return()=>clearTimeout(dt)}},[t,Jn,J]);const _a=dt=>{st(dt)},aa=()=>{on(()=>{if(t==="add"||t==="settings"){if(t==="add"&&Rn())return;t==="add"&&Mn.length>0&&mn(),t==="add"&&Sn(),r("tasks")}else e.onClose?e.onClose():xn()})},Ta=()=>{en(!1),t==="add"&&!It&&$t(),sn?(t==="add"&&Sn(),sn()):r("tasks")},Ka=async()=>{await Zt({preventDefault:()=>{}}),en(!1),sn&&sn()},ls=(dt,vr)=>{bt(Zr=>({...Zr,[dt]:vr}))},ds=o.useCallback(dt=>{Sn(),Ot(dt),on(()=>{r("add")})},[Sn,Ot,r,on]),La=ne.useMemo(()=>fe.map(dt=>({...dt.taskSnapshot,isDeleted:!0,deletedRecordId:dt.id,deletedAt:dt.deletedAt,deletedExpiresAt:a_(dt.deletedAt)})),[fe]),qa=ne.useMemo(()=>new globalThis.Map(fe.map(dt=>[dt.taskId,dt])),[fe]),xa=ne.useMemo(()=>{const dt=yp(oe),vr={categories:Ie,types:$e,priorities:Ye,assigneeOptions:ae,taxonomies:ge},Zr=Ie.every(Er=>me.includes(Er.value)),Cn=$e.every(Er=>V.includes(Er.value)),Pn=Array.from(new Set(D.map(Er=>Number(Er)).filter(Er=>Number.isFinite(Er)))),Is=Ye.map(Er=>Number(Er.value)).filter(Er=>Number.isFinite(Er)).every(Er=>Pn.includes(Er)),Pa=["task","in-progress","review","done","cancelled","on-hold"].every(Er=>Se.includes(Er)),ka=ae.length>0&&ae.every(Er=>Y.includes(Er.value)),jn=kp(ge,La);return La.filter(Er=>{const Oa=Ug(Er,dt,vr),Ya=Zr||me.includes(Er.category),sa=Is||Pn.includes(Eg(Er.priority)),Un=Cn||V.includes(Er.type||wo),zn=Pa||Se.includes(Er.status),Za=ka||Y.includes(Er.assignee||"unassigned"),So=Object.entries(_e).every(([gi,_s])=>{const yi=jn.find(nr=>nr.id===gi);if(!yi||Hw(yi,La).every(nr=>_s.includes(nr.value)))return!0;const qt=Er.taxonomies?.[gi];return qt?Array.isArray(qt)?qt.some(nr=>_s.includes(nr)):_s.includes(qt):_s.includes("")});return Oa&&Ya&&sa&&Un&&zn&&Za&&So}).sort((Er,Oa)=>zg(Er,Oa,Fe,ft,ge))},[Ie,$e,te,ae,La,Y,me,D,Se,_e,V,Ye,oe,Fe,ft,ge,J]),Ra=ne.useMemo(()=>{const dt={};return xa.forEach(vr=>{const Cn=Ie.find(Pn=>Pn.value===vr.category||Pn.label===vr.category)?.label||vr.category||"General";dt[Cn]||(dt[Cn]=[]),dt[Cn].push(vr)}),dt},[Ie,xa]),Fn=o_(fe,xa.map(dt=>dt.id),Ve==="deleted"),us=Ve==="archived"?le.length:Ve==="deleted"?xa.length:x.length;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{ref:pi,className:`${gr.modal} ${P.coreModal} ${t==="settings"?gr.settingsViewModal:""}`,"data-theme":i,children:[a.jsxs("div",{className:"tf-modal-header",onMouseDown:eo,style:{cursor:eo?to?"grabbing":"grab":"default"},children:[a.jsxs("div",{className:`tf-modal-title ${Jr.headerTitleWidget}`,children:["Taskforce",w&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:P.projectSlash,children:"/"}),a.jsx("span",{className:P.projectName,style:{fontSize:"14px",padding:"1px 6px"},children:w})]}),a.jsx("span",{className:P.taskCountBadge,title:Ve==="deleted"?"Trash tasks — automatically deleted after 90 days":`${Ve.charAt(0).toUpperCase()+Ve.slice(1)} tasks`,children:us})]}),a.jsxs("div",{className:gr.headerActions,children:[t==="tasks"&&a.jsx(a.Fragment,{children:a.jsx("button",{className:"tf-control-icon",onClick:()=>{on(()=>{Sn(),r("add")})},title:"Add New Task","aria-label":"Add New Task",children:a.jsx(di,{size:18})})}),a.jsx("button",{className:`tf-control-icon ${t==="settings"?"tf-control-icon-active":""}`,onClick:()=>{t!=="settings"&&on(()=>{r("settings")})},title:"Settings","aria-label":"Settings",children:a.jsx(Qm,{size:18})}),a.jsx("button",{className:"tf-control-icon",onClick:aa,title:t==="tasks"?"Close":"Back to Tasks","aria-label":t==="tasks"?"Close":"Back to Tasks",children:t==="tasks"?a.jsx(fi,{size:20}):a.jsx(N0,{size:20})})]})]}),a.jsx(Zg,{notice:t==="add"?null:kn,onDismiss:ga}),a.jsx(j_,{theme:i}),t==="add"&&a.jsxs("div",{className:P.taskNoticeAnchor,children:[a.jsx(R_,{editingTaskId:It,loading:Xe,submitDisabled:Tn,autoSaveState:da,title:U,status:pt,onStatusChange:ut,currentTask:ue,currentTaskWorkstream:it,currentTaskInitiative:_t,workstreams:e.workstreams,onWorkstreamInputChange:lr,onSetWorkstreamForCurrentTask:Fr,handleSubmit:Zt,handleCopyId:Ee,copiedId:gn,tasks:J,handleToggleInProgress:Te,handleToggleReview:pe,handleToggleComplete:Pe,handleToggleCancel:Ce,handleSetStatus:Me,handleArchiveTask:et,handleUnarchiveTask:dt=>{if(ue?.isDeleted){const vr=qa.get(dt);vr&&Le(vr.id,vr.taskId);return}yt(dt)},handleRestoreDeletedTask:dt=>{const vr=fe.find(Zr=>Zr.id===dt);Le(dt,vr?.taskId)},handlePermanentlyDeleteDeletedTask:dt=>{kt(dt)}}),a.jsx(Zg,{notice:wt?{message:wt,tone:"error"}:kn,onDismiss:()=>{at(),ga()},placement:"task"})]}),t==="tasks"&&a.jsx(C_,{ref:Ln,tasks:J,archivedTasks:te,categories:Ie,types:$e,priorities:Ye,workspaceId:$n,taxonomyDisplayLabels:ye,taxonomies:ge,searchQuery:oe,filterCategories:me,filterTypes:V,filterPriorities:D,filterStatus:Se,filterAssignees:Y,assigneeOptions:ae,filterTaxonomies:_e,sortBy:Fe,sortOrder:ft,showArchive:ke,taskScope:Ve,collapsedCategories:Je,loadingTasks:ee,filteredTasks:x,filteredArchive:le,groupedTasks:Re,filteredDeletedTasks:xa,groupedDeletedTasks:Ra,deletedTaskRecordByTaskId:qa,selectedDeletedRecordIds:Fn.selectedIds,onDeletedSelectionChange:Fn.toggle,trashControls:a.jsx(P_,{theme:i,selectedRecords:Fn.selectedRecords,matchingCount:Fn.matchingRecords.length,allMatchingSelected:Fn.allMatchingSelected,someMatchingSelected:Fn.someMatchingSelected,fullTrashCount:fe.length,onSelectAllMatching:Fn.selectAllMatching,onClearSelection:Fn.clear,onRestore:mt,onEmptyEntireTrash:()=>{confirm(`Permanently delete all ${fe.length} tasks in Trash? Filters and selection do not limit this action. This cannot be undone.`)&&He()}}),copiedId:gn,recentlyChangedTaskIds:lt,showTaskCardStatusLabel:Nt,showTaskCardDescription:ya!=="cloud"&&Qt,showTaskCardAttachments:St,showTaskCardChecklistProgress:Kt,showTaskCardLatestActivity:Ft,tintTaskCardActivityBackground:ir,workstreams:e.workstreams,initiatives:e.initiatives,onSearchChange:ie,onFilterCategoriesChange:dt=>W(dt),onFilterTypesChange:dt=>B(dt),onFilterPrioritiesChange:be,onFilterStatusChange:K,onFilterAssigneesChange:dt=>G(dt),onTaxonomyFilterChange:(dt,vr)=>Oe(Zr=>({...Zr,[dt]:vr})),onSortByChange:_a,onSortOrderChange:xe,onShowArchiveChange:ve,onTaskScopeChange:Ne,onClearFilters:de,onToggleCategory:dt=>X(vr=>({...vr,[dt]:!vr[dt]})),onEditTask:Ze,onUpdateTask:je,taskReferences:na,onCopyId:Ee,onToggleInProgress:Te,onToggleReview:pe,onToggleComplete:Pe,onToggleCancel:Ce,onSetStatus:Me,onArchiveTask:et,onBulkArchive:Ue,onUnarchive:dt=>{const vr=qa.get(dt);if(vr){Le(vr.id,vr.taskId);return}yt(dt)},onDelete:dt=>{const vr=qa.get(dt);if(vr){kt(vr.id);return}re(dt)},onDeleteAllDeleted:()=>{He()},onFetchArchive:rt,onAddTaskToCategory:ds,supplementalTasks:La}),t==="add"&&a.jsx(x_,{editingTaskId:It,initialActivityEntryId:e.initialActivityEntryId,title:U,description:Et,checklistItems:dr,category:cr,type:fr,priority:Lr,complexity:De,manualComplexityEnabled:Tt,assignee:sr,scheduledDate:or,dueDate:ur,formTaxonomies:u,onTaxonomyChange:ls,taxonomies:ge,comments:gt,newCommentText:Xr,contextFiles:Vt,currentWorkspaceId:$n,descriptionImageDraftId:an,currentActorId:Cs,apiBaseUrl:"",descriptionFocused:Ge,showMarkdownHelp:yr,checklistEnabled:Xt,categories:Ie,types:$e,priorities:Ye,taxonomyDisplayLabels:ye,assigneeOptions:ae,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:gn,onTitleChange:he,onTitleDraftChange:Ke,onDescriptionChange:vt,onDescriptionDraftChange:Bt,onChecklistItemsChange:er,onCategoryChange:Ot,onTypeChange:Ar,onPriorityChange:Wr,onComplexityChange:nt,onAssigneeChange:ot,onScheduledDateChange:Nr,onDueDateChange:ra,onNewCommentTextChange:Ir,onDescriptionFocusedChange:Gr,onShowMarkdownHelpChange:Yt,onOpenSettings:dt=>{on(()=>{A(dt),r("settings")})},onSubmit:Zt,onDescriptionImageUploadStart:Qr,commentsEndRef:Ia,onAddComment:()=>Ut(Xr),taskReferences:na,onAddContextFile:dt=>{$r(!0),Ur(vr=>[...vr,dt])},onRemoveContextFile:async dt=>{$r(!0),Ur(vr=>vr.filter((Zr,Cn)=>Cn!==dt))},onUpdateContextCaption:(dt,vr)=>{$r(!0),Ur(Zr=>Zr.map((Cn,Pn)=>Pn!==dt?Cn:typeof Cn=="string"?{path:Cn,caption:vr,timestamp:new Date().toISOString()}:{...Cn,caption:vr}))},onOpenContextImage:dt=>{ip(dt,{ownerType:"task",ownerId:It,ownerReferenceLabel:Ss(ue),workspaceId:$n})},onCopyId:Ee,onToggleInProgress:Te,onToggleReview:pe,onToggleComplete:Pe,onToggleCancel:Ce,onArchiveTask:et,onUnarchive:dt=>{if(ue?.isDeleted){const vr=qa.get(dt);vr&&Le(vr.id,vr.taskId);return}yt(dt)},currentTask:ue}),t==="settings"&&a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"2rem"},children:a.jsx(ea,{size:20,className:P.spinner})}),children:a.jsx(dK,{settingsModel:Bs,onSectionChange:A})})]}),j&&uc.createPortal(a.jsx("div",{className:Dn.overlay,children:a.jsxs("div",{className:Dn.browser,children:[a.jsxs("div",{className:Dn.header,children:[a.jsxs("div",{className:Dn.pathInfo,children:[a.jsx(cc,{size:14}),a.jsx("span",{children:_||"Project Root"})]}),a.jsxs("div",{className:Dn.actions,children:[_&&a.jsx("button",{className:P.helpLink,onClick:()=>{const dt=_.split("/").filter(Boolean);dt.pop(),T(dt.length?dt.join("/")+"/":"")},children:"Back"}),a.jsx("button",{className:P.helpLink,onClick:()=>E(!1),children:"Close"})]})]}),a.jsxs("div",{className:Dn.list,children:[H&&typeof H=="object"&&a.jsxs("div",{className:`${Dn.item} ${Dn.itemCurrent}`,onClick:()=>z(_),children:[a.jsx(Fi,{size:14})," Select Current: ./",_||"(root)"]}),S.map(dt=>a.jsxs("div",{className:Dn.item,onClick:()=>T(_+dt+"/"),children:[a.jsx(cc,{size:14})," ",dt,"/"]},dt)),L.map(dt=>a.jsxs("div",{className:`${Dn.item} ${Dn.itemFile}`,onClick:()=>z(_+dt),children:[a.jsx(Xm,{size:14})," ",dt]},dt)),S.length===0&&L.length===0&&a.jsx("div",{className:`${Dn.item} ${Dn.empty}`,children:"No items found"})]})]})}),document.body),ua&&a.jsx("div",{className:`${gr.overlay} ${gr.unsavedOverlay}`,children:a.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${gr.modal} ${gr.unsavedModal}`,"data-theme":i,children:[a.jsx("div",{className:`tf-modal-header ${gr.unsavedHeader}`,children:a.jsxs("div",{className:`tf-modal-title ${gr.unsavedTitle}`,children:[a.jsx(Od,{size:20}),"Unsaved Changes"]})}),a.jsx("div",{className:`${gr.form} ${gr.unsavedContent}`,children:a.jsx("p",{className:gr.unsavedText,children:"You have unsaved changes. Would you like to save them?"})}),a.jsxs("div",{className:`${gr.formActions} ${gr.unsavedActions}`,children:[a.jsx("button",{className:P.cancelBtn,onClick:()=>en(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),a.jsx("button",{className:P.destructiveBtn,onClick:Ta,title:"Discard unsaved changes and leave",children:"Discard"}),a.jsxs("button",{className:P.submitBtn,onClick:Ka,disabled:Xe,title:"Save changes and leave",children:[Xe?a.jsx(ea,{size:16,className:P.spinner}):a.jsx(tC,{size:16}),"Save"]})]})]})}),cn&&a.jsx("div",{className:`${gr.overlay} ${gr.unsavedOverlay}`,children:a.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${gr.modal} ${gr.unsavedModal}`,"data-theme":i,children:[a.jsx("div",{className:`tf-modal-header ${gr.unsavedHeader}`,children:a.jsxs("div",{className:`tf-modal-title ${gr.unsavedTitle}`,children:[a.jsx(Od,{size:20}),"Date Warning"]})}),a.jsxs("div",{className:`${gr.form} ${gr.unsavedContent}`,children:[a.jsx("p",{className:gr.unsavedText,children:"Due date is before scheduled date."}),a.jsxs("p",{style:{margin:0,fontSize:"12px",color:"var(--text-muted)"},children:["Due: ",cn.dueDate," · Scheduled: ",cn.scheduledDate]})]}),a.jsxs("div",{className:`${gr.formActions} ${gr.unsavedActions}`,children:[a.jsx("button",{className:P.cancelBtn,onClick:Dr,children:"Go Back"}),a.jsx("button",{className:P.submitBtn,onClick:xr,children:"Save Anyway"})]})]})})]})}const fK="_accountMenuWrap_1mocf_1",mK="_avatarBtn_1mocf_5",pK="_avatarBadge_1mocf_9",hK="_avatarImage_1mocf_24",gK="_avatarIcon_1mocf_30",yK="_accountMenu_1mocf_1",kK="_accountMenuItem_1mocf_48",vK="_accountMenuItemActive_1mocf_68",wK="_accountMenuSection_1mocf_73",bK="_accountMenuSectionLabel_1mocf_79",SK="_accountMenuMeta_1mocf_88",AK="_accountMenuHint_1mocf_93",CK="_accountIdentityEmail_1mocf_99",IK="_accountIdentityBlock_1mocf_104",_K="_accountIdentityMetaLine_1mocf_109",TK="_accountIdentityMetaAction_1mocf_116",xK="_accountIdentityMetaValue_1mocf_125",RK="_accountIdentityMetaLabel_1mocf_130",PK="_accountMenuError_1mocf_159",jK="_accountHubCard_1mocf_165",EK="_profileAvatarEditor_1mocf_172",NK="_profileEditLayout_1mocf_178",DK="_profileFieldStack_1mocf_185",MK="_profileFieldLabel_1mocf_191",hr={accountMenuWrap:fK,avatarBtn:mK,avatarBadge:pK,avatarImage:hK,avatarIcon:gK,accountMenu:yK,accountMenuItem:kK,accountMenuItemActive:vK,accountMenuSection:wK,accountMenuSectionLabel:bK,accountMenuMeta:SK,accountMenuHint:AK,accountIdentityEmail:CK,accountIdentityBlock:IK,accountIdentityMetaLine:_K,accountIdentityMetaAction:TK,accountIdentityMetaValue:xK,accountIdentityMetaLabel:RK,accountMenuError:PK,accountHubCard:jK,profileAvatarEditor:EK,profileEditLayout:NK,profileFieldStack:DK,profileFieldLabel:MK},LK="_authBlockedBanner_1virb_1",OK="_loginView_1virb_10",BK="_loginCard_1virb_20",WK="_loginCloseBtn_1virb_34",$K="_loginLogo_1virb_56",FK="_authBrandRow_1virb_62",UK="_setupHeaderRow_1virb_68",zK="_runtimeIconBadge_1virb_75",HK="_loginTitle_1virb_94",VK="_loginTitleAccent_1virb_105",GK="_loginSubtitle_1virb_109",KK="_loginError_1virb_115",qK="_loginField_1virb_121",YK="_loginFieldLabel_1virb_126",ZK="_loginInput_1virb_133",JK="_loginPrimaryBtn_1virb_149",XK="_authPrimaryActions_1virb_154",QK="_registerConsent_1virb_159",eq="_registerConsentLink_1virb_167",tq="_authModeSwitch_1virb_177",rq="_authModeSwitchLink_1virb_184",nq="_authModeLinks_1virb_199",aq="_authSecondaryActions_1virb_207",sq="_authModeLink_1virb_199",oq="_optionGrid_1virb_236",iq="_optionGroup_1virb_242",cq="_optionRow_1virb_247",lq="_inlineHint_1virb_254",dq="_actionRowEnd_1virb_260",uq="_oauthProviders_1virb_267",fq="_oauthDivider_1virb_274",mq="_oauthButtons_1virb_290",pq="_oauthButton_1virb_290",Qe={authBlockedBanner:LK,loginView:OK,loginCard:BK,loginCloseBtn:WK,loginLogo:$K,authBrandRow:FK,setupHeaderRow:UK,runtimeIconBadge:zK,loginTitle:HK,loginTitleAccent:VK,loginSubtitle:GK,loginError:KK,loginField:qK,loginFieldLabel:YK,loginInput:ZK,loginPrimaryBtn:JK,authPrimaryActions:XK,registerConsent:QK,registerConsentLink:eq,authModeSwitch:tq,authModeSwitchLink:rq,authModeLinks:nq,authSecondaryActions:aq,authModeLink:sq,optionGrid:oq,optionGroup:iq,optionRow:cq,inlineHint:lq,actionRowEnd:dq,oauthProviders:uq,oauthDivider:fq,oauthButtons:mq,oauthButton:pq},hq="_modalBody_xo2lt_1",gq="_mutedText_xo2lt_5",yq="_sectionText_xo2lt_10",kq="_modalActionsEnd_xo2lt_50",vq="_helpModalBody_xo2lt_56",wq="_helpHero_xo2lt_60",bq="_helpHeroIcon_xo2lt_67",Sq="_helpHeroCopy_xo2lt_79",Aq="_supportContactCard_xo2lt_84",Cq="_supportContactHeader_xo2lt_90",Iq="_supportEmailAddress_xo2lt_97",_q="_supportActionRow_xo2lt_112",Tq="_supportAction_xo2lt_112",xq="_supportPanel_xo2lt_123",Rq="_supportPanelHeader_xo2lt_132",Pq="_memberRow_xo2lt_150",jq="_memberTitle_xo2lt_156",Eq="_memberActions_xo2lt_160",Nq="_selectRole_xo2lt_167",Dq="_selectPermission_xo2lt_171",Mq="_inviteRow_xo2lt_175",Lq="_listHeading_xo2lt_179",Oq="_auditList_xo2lt_184",Bq="_auditPager_xo2lt_190",Wq="_labelFixed_xo2lt_197",Vr={modalBody:hq,mutedText:gq,sectionText:yq,modalActionsEnd:kq,helpModalBody:vq,helpHero:wq,helpHeroIcon:bq,helpHeroCopy:Sq,supportContactCard:Aq,supportContactHeader:Cq,supportEmailAddress:Iq,supportActionRow:_q,supportAction:Tq,supportPanel:xq,supportPanelHeader:Rq,memberRow:Pq,memberTitle:jq,memberActions:Eq,selectRole:Nq,selectPermission:Dq,inviteRow:Mq,listHeading:Lq,auditList:Oq,auditPager:Bq,labelFixed:Wq};function $q({isOpen:e,theme:t,onClose:r,onConfirm:n}){return a.jsx(Vo,{isOpen:e,onClose:r,title:"New Workspace",size:"sm",theme:t,draggable:!0,footer:a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:P.cancelBtn,onClick:r,children:"Cancel"}),a.jsx("button",{type:"button",className:P.submitBtn,onClick:n,children:"Start Setup"})]}),children:a.jsx("div",{className:`${gr.form} ${Vr.modalBody}`,children:a.jsx("p",{className:Vr.sectionText,children:"Create and configure a new workspace."})})})}const Fq="_editableAvatarButton_1qp11_1",Uq="_editableAvatarImage_1qp11_47",zq="_editableAvatarFallback_1qp11_54",Hq="_editableAvatarBadge_1qp11_65",Vq="_editableAvatarProgress_1qp11_91",Gq="_editableAvatarProgressError_1qp11_108",yd={editableAvatarButton:Fq,editableAvatarImage:Uq,editableAvatarFallback:zq,editableAvatarBadge:Hq,editableAvatarProgress:Vq,editableAvatarProgressError:Gq};function Kq({label:e,imageUrl:t,fallbackImageUrl:r,fallback:n,accentColor:s,size:i=52,width:l,height:c,radius:d,editBadgeSize:m,editIconSize:f=16,disabled:g=!1,loading:h=!1,loadingLabel:y="Updating profile photo",error:k=!1,errorLabel:v="Profile photo update failed",className:A="",onClick:b}){const{activeImageUrl:w,handleImageError:R}=v_(t,r),N=l??i,j=c??i,E=typeof d=="number"?`${d}px`:d,S=typeof m=="number"?`${m}px`:m;return a.jsxs("button",{type:"button",className:`${yd.editableAvatarButton} ${A}`.trim(),"aria-label":e,"aria-busy":h,title:e,onClick:b,disabled:g,style:{"--editable-avatar-size":`${i}px`,"--editable-avatar-width":`${N}px`,"--editable-avatar-height":`${j}px`,...E?{"--editable-avatar-radius":E}:{},...S?{"--editable-avatar-badge-size":S}:{},...s?{"--editable-avatar-accent":s}:{}},children:[w?a.jsx("img",{src:w,alt:"",className:yd.editableAvatarImage,onError:R}):a.jsx("span",{className:yd.editableAvatarFallback,children:n}),a.jsx("span",{className:yd.editableAvatarBadge,"aria-hidden":"true",children:a.jsx(rC,{size:f})}),h?a.jsx("span",{className:yd.editableAvatarProgress,role:"status","aria-label":y,children:a.jsx(ea,{size:Math.max(16,Math.round(i*.24))})}):k?a.jsx("span",{className:`${yd.editableAvatarProgress} ${yd.editableAvatarProgressError}`,role:"status","aria-label":v,children:a.jsx(Od,{size:Math.max(16,Math.round(i*.24))})}):null]})}const qq="_modalBody_1t6q4_1",Yq="_layout_1t6q4_5",Zq="_sectionTabs_1t6q4_11",Jq="_sectionTab_1t6q4_11",Xq="_sectionPanel_1t6q4_55",Qq="_section_1t6q4_11",eY="_sectionHeader_1t6q4_65",tY="_cardHeader_1t6q4_66",rY="_planSummary_1t6q4_67",nY="_intervalRow_1t6q4_68",aY="_sectionCard_1t6q4_81",sY="_sectionActions_1t6q4_87",oY="_inlineActions_1t6q4_88",iY="_loginMethodList_1t6q4_96",cY="_loginMethodRow_1t6q4_101",lY="_loginMethodIcon_1t6q4_110",dY="_loginMethodCopy_1t6q4_122",uY="_addPasswordForm_1t6q4_137",fY="_linkProviderBlock_1t6q4_138",mY="_fieldLabel_1t6q4_145",pY="_planName_1t6q4_157",nn={modalBody:qq,layout:Yq,sectionTabs:Zq,sectionTab:Jq,sectionPanel:Xq,section:Qq,sectionHeader:eY,cardHeader:tY,planSummary:rY,intervalRow:nY,sectionCard:aY,sectionActions:sY,inlineActions:oY,loginMethodList:iY,loginMethodRow:cY,loginMethodIcon:lY,loginMethodCopy:dY,addPasswordForm:uY,linkProviderBlock:fY,fieldLabel:mY,planName:pY},hY=new Set(["active","trialing","grace"]),mA={CHECKOUT_SESSION_EXPIRED:"Your previous checkout expired. Choose a plan to continue.",CHECKOUT_SESSION_SUPERSEDED:"A newer checkout replaced your previous checkout. Choose a plan to continue."},rg={planSelectionRequired:"Choose a plan to continue.",checkoutPending:"Complete checkout to continue.",misconfigured:"Onboarding policy is misconfigured. Contact support or a system administrator.",missingEntitlement:"No entitlement is linked to this account."};function $d(e){return String(e||"").trim()}function E_(e){return $d(e).toLowerCase()}function gY(e){return $d(e).toLowerCase()}function yY(e){return!!($d(e?.stripeCustomerId)||$d(e?.stripeSubscriptionId))}function kY(e){const t=$d(e?.trialEnd||e?.effectiveUntil);if(t){const r=new Date(t);if(!Number.isNaN(r.getTime()))return r.getTime()<=Date.now()?"Your trial end date has passed. Billing status is updating.":`Your trial is active through ${r.toLocaleString()}.`}return"Your trial is active. Continue to Taskforce or manage billing anytime."}function vY(e){return hY.has(E_(e))}function qv(e,t){const r=E_(e?.entitlementState),n=gY(e?.gate||t),s=$d(e?.billingConflictCode).toUpperCase(),i=$d(e?.message),l=vY(r),c=yY(e);return s==="CHECKOUT_SESSION_EXPIRED"?{entitlementState:r||null,gate:n||null,isActive:!1,allowReturnToApp:!1,statusTone:"info",message:mA.CHECKOUT_SESSION_EXPIRED,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:c,markCurrentPlan:!1}:s==="CHECKOUT_SESSION_SUPERSEDED"?{entitlementState:r||null,gate:n||null,isActive:!1,allowReturnToApp:!1,statusTone:"info",message:mA.CHECKOUT_SESSION_SUPERSEDED,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:c,markCurrentPlan:!1}:r==="trialing"?{entitlementState:r,gate:n||null,isActive:!0,allowReturnToApp:!0,statusTone:"success",message:kY(e),primaryAction:c?"manage_billing":"none",primaryLabel:c?"Manage Billing":null,showManageBilling:c,markCurrentPlan:!0}:l?{entitlementState:r||null,gate:n||null,isActive:!0,allowReturnToApp:!0,statusTone:"success",message:i||null,primaryAction:"none",primaryLabel:null,showManageBilling:c,markCurrentPlan:!0}:r==="suspended"?{entitlementState:r,gate:n||null,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:"Your access is suspended because billing needs attention. Update billing to restore access.",primaryAction:c?"manage_billing":"open_plans",primaryLabel:c?"Manage Billing":"Open Plans",showManageBilling:c,markCurrentPlan:!1}:r==="canceled"?{entitlementState:r,gate:n||null,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:"Your access has ended. Choose a plan to reactivate your workspace.",primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:c,markCurrentPlan:!1}:r==="pending_plan_selection"||e?.planSelectionRequired===!0||n==="plan_selection_required"?{entitlementState:r||"pending_plan_selection",gate:n||"plan_selection_required",isActive:!1,allowReturnToApp:!1,statusTone:"info",message:i||rg.planSelectionRequired,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:!1,markCurrentPlan:!1}:r==="checkout_pending"||n==="checkout_pending"?{entitlementState:r||"checkout_pending",gate:n||"checkout_pending",isActive:!1,allowReturnToApp:!1,statusTone:"info",message:i||rg.checkoutPending,primaryAction:"open_plans",primaryLabel:"Open Plans",showManageBilling:c,markCurrentPlan:!1}:n==="misconfigured"?{entitlementState:r||null,gate:n,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:rg.misconfigured,primaryAction:"none",primaryLabel:null,showManageBilling:!1,markCurrentPlan:!1}:n==="missing_entitlement"?{entitlementState:r||null,gate:n,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:rg.missingEntitlement,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:!1,markCurrentPlan:!1}:{entitlementState:r||null,gate:n||null,isActive:!1,allowReturnToApp:!1,statusTone:i?"error":"info",message:i||null,primaryAction:"none",primaryLabel:null,showManageBilling:c,markCurrentPlan:!1}}const Yv=12,Zv=256,wY=new Set(["12345678","123456789","1234567890","admin123","changeme","letmein","letmein123","password","password1","password12","password123","password1234","qwerty","qwerty123","welcome","welcome123"]),bY=e=>String(e||"").trim().toLowerCase().replace(/[^a-z0-9]/g,"");function SY(e){const t=new Set,r=String(e?.email||"").trim().toLowerCase(),n=String(e?.displayName||"").trim().toLowerCase();if(r.includes("@")){const s=r.split("@")[0]||"",i=s.replace(/[^a-z0-9]/g,"");i.length>=4&&t.add(i);for(const l of s.split(/[^a-z0-9]+/))l.length>=4&&t.add(l)}for(const s of n.split(/[^a-z0-9]+/))s.length>=4&&t.add(s);return[...t]}function N_(){return[`Use at least ${Yv} characters.`,`Use no more than ${Zv} characters.`,"Avoid common passwords or obvious patterns.","Do not include your email or display name."]}function Jv(e,t){const r=String(e||"");if(!r)return{ok:!1,code:"PASSWORD_REQUIRED",message:"Password is required."};if(r.length<Yv)return{ok:!1,code:"PASSWORD_TOO_SHORT",message:`Password must be at least ${Yv} characters.`};if(r.length>Zv)return{ok:!1,code:"PASSWORD_TOO_LONG",message:`Password must be no more than ${Zv} characters.`};const n=bY(r);return wY.has(n)?{ok:!1,code:"PASSWORD_TOO_COMMON",message:"Choose a less common password."}:SY(t).some(i=>n.includes(i))?{ok:!1,code:"PASSWORD_CONTAINS_PERSONAL_INFO",message:"Password cannot contain your email or display name."}:{ok:!0}}const AY="_wrapper_1g3s7_1",CY="_input_1g3s7_7",IY="_toggle_1g3s7_11",av={wrapper:AY,input:CY,toggle:IY},ef=o.forwardRef(function({className:t,disabled:r,visibilityLabel:n="password",visibilityToggleTestId:s,...i},l){const[c,d]=o.useState(!1),m=`${c?"Hide":"Show"} ${n}`;return a.jsxs("span",{className:av.wrapper,children:[a.jsx("input",{...i,ref:l,className:`${t||""} ${av.input}`.trim(),type:c?"text":"password",disabled:r}),a.jsx("button",{type:"button",className:av.toggle,"aria-label":m,title:m,"data-testid":s,disabled:r,onClick:()=>d(f=>!f),children:c?a.jsx(iw,{size:18,"aria-hidden":"true"}):a.jsx(nC,{size:18,"aria-hidden":"true"})})]})}),pA={password:"Email & Password",google:"Google",github:"GitHub",apple:"Apple"},_Y=[{id:"profile",label:"Profile",icon:tf},{id:"security",label:"Sign-in & Security",icon:D0},{id:"billing",label:"Plan & Billing",icon:M0}];function TY(e){const t=String(e||"").trim();return t?t.replace(/[_-]+/g," ").replace(/\b\w/g,r=>r.toUpperCase()):"Not available"}function xY({isOpen:e,theme:t,displayName:r,email:n,avatarDisplayUrl:s,accountBadgeInitial:i,profileSaveBusy:l,profileAvatarBusy:c,profileSaveError:d,profileSaveNotice:m,cloudAuthEnabled:f,availableAuthProviders:g,billingLoading:h,billingError:y,billingActionError:k,billingNotice:v,billingActionBusy:A,billingIntervalChoice:b,accountProfileSummary:w,onClose:R,onSaveProfile:N,onDisplayNameChange:j,onOpenAvatarManager:E,onFetchLoginMethods:S,onUnlinkLoginMethod:L,onAddPassword:_,onChangePassword:T,onLinkProvider:H,onBillingIntervalChange:q,onRefreshBilling:z,onUpdateInterval:M,onManageBilling:Z,onOpenPlans:J}){const[ee,te]=o.useState("profile"),[fe,Ie]=o.useState([]),[$e,Ye]=o.useState(!1),[ye,ge]=o.useState(null),[oe,ie]=o.useState(null),[me,W]=o.useState(null),[V,B]=o.useState(!1),[D,be]=o.useState(""),[Se,K]=o.useState(!1),[Y,G]=o.useState(null),[ae,_e]=o.useState(!1),[Oe,Fe]=o.useState(!1),[st,ft]=o.useState(""),[xe,ke]=o.useState(""),[ve,Ve]=o.useState(""),[Ne,de]=o.useState(!1),[x,le]=o.useState(null),[Re,Je]=o.useState(!1),X=qv(w),Ze=N_(),re=String(w?.planName||w?.planId||"No plan selected").trim()||"No plan selected",Ee=new Set(fe.map(He=>He.provider)),je=Ee.has("password"),Pe=g.filter(He=>He!=="password"&&!Ee.has(He)),Ce=o.useCallback(()=>{B(!1),be(""),G(null),_e(!1),Fe(!1),ft(""),ke(""),Ve(""),le(null),Je(!1)},[]),Te=()=>{Ce(),R()},pe=He=>{He!=="security"&&Ce(),te(He)};o.useEffect(()=>{W(null),Ce(),e&&te("profile")},[Ce,e]),o.useEffect(()=>{ee!=="security"&&Ce()},[ee,Ce]),o.useEffect(()=>{if(!e||ee!=="security"||!f)return;let He=!1;return Ye(!0),ge(null),S().then(rt=>{He||(Ye(!1),rt.success&&rt.methods?Ie(rt.methods):ge(rt.error||"Failed to load login methods."))}),()=>{He=!0}},[ee,f,e,S]);const Me=async He=>{ie(He),W(null);const rt=await L(He);if(ie(null),!rt.success){W(rt.error||"Unable to remove this login method.");return}Ie(It=>It.filter(Xe=>Xe.provider!==He))},et=async()=>{const He=Jv(D,{email:n,displayName:r});if(!He.ok){G(He.message||"Password does not meet the password policy.");return}K(!0),G(null);const rt=await _(D);if(K(!1),!rt.success){G(rt.code==="IDENTITY_ALREADY_EXISTS"?"A password login already exists. Use Forgot Password from sign-in to recover it.":rt.error||"Failed to add password.");return}_e(!0),be(""),B(!1);const It=await S();It.success&&It.methods&&Ie(It.methods)},Ue=async()=>{if(xe!==ve){le("New passwords do not match.");return}const He=Jv(xe,{email:n,displayName:r});if(!He.ok){le(He.message||"Password does not meet the password policy.");return}de(!0),le(null),Je(!1);const rt=await T(st,xe);if(de(!1),!rt.success){le(rt.error||"Failed to change password.");return}ft(""),ke(""),Ve(""),Fe(!1),Je(!0);const It=await S();It.success&&It.methods&&Ie(It.methods)},yt=()=>{if(X.primaryAction==="manage_billing"){Z();return}J()},Le=()=>a.jsxs("section",{className:nn.section,"aria-labelledby":"account-profile-heading",children:[a.jsx("div",{className:nn.sectionHeader,children:a.jsxs("div",{children:[a.jsx("h2",{className:"tf-heading-card",id:"account-profile-heading",children:"Profile"}),a.jsx("p",{className:"tf-text-secondary",children:"Manage how you appear across Taskforce."})]})}),a.jsxs("div",{className:`${nn.sectionCard} tf-surface-panel`,children:[a.jsxs("div",{className:hr.profileEditLayout,children:[a.jsx("div",{className:hr.profileAvatarEditor,children:a.jsx(Kq,{label:"Edit profile photo",imageUrl:s,fallback:i,disabled:l||c,onClick:E})}),a.jsxs("div",{className:hr.profileFieldStack,children:[a.jsxs("label",{className:hr.profileFieldLabel,children:[a.jsx("span",{children:"Display name"}),a.jsx("input",{className:P.input,type:"text",value:r,onChange:He=>j(He.target.value),placeholder:"Display name",disabled:l})]}),a.jsxs("label",{className:hr.profileFieldLabel,children:[a.jsx("span",{children:"Email"}),a.jsx("input",{className:P.input,type:"email",value:n,readOnly:!0,disabled:!0})]})]})]}),d&&a.jsx("p",{className:"tf-text-error",role:"alert",children:d}),m&&!d&&a.jsx("p",{className:"tf-text-secondary",role:"status",children:m}),a.jsx("div",{className:nn.sectionActions,children:a.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:N,disabled:l||c||!r.trim(),children:l?"Saving…":"Save profile"})})]})]}),mt=()=>a.jsxs("section",{className:nn.section,"aria-labelledby":"account-security-heading",children:[a.jsx("div",{className:nn.sectionHeader,children:a.jsxs("div",{children:[a.jsx("h2",{className:"tf-heading-card",id:"account-security-heading",children:"Sign-in & Security"}),a.jsx("p",{className:"tf-text-secondary",children:"Manage the methods you use to sign in to your account."})]})}),a.jsxs("div",{className:`${nn.sectionCard} tf-surface-panel`,children:[a.jsx("div",{className:nn.cardHeader,children:a.jsxs("div",{children:[a.jsx("h3",{className:"tf-heading-card",children:"Login methods"}),a.jsx("p",{className:"tf-text-secondary",children:"Keep at least one sign-in method connected."})]})}),$e&&a.jsx("p",{className:"tf-text-secondary",children:"Loading login methods…"}),ye&&a.jsx("p",{className:"tf-text-error",role:"alert",children:ye}),me&&a.jsx("p",{className:"tf-text-error",role:"alert",children:me}),ae&&a.jsx("p",{className:"tf-text-secondary",role:"status",children:"Password login added."}),Re&&a.jsx("p",{className:"tf-text-secondary",role:"status",children:"Password changed."}),!$e&&fe.length>0&&a.jsx("div",{className:nn.loginMethodList,children:fe.map(He=>a.jsxs("div",{className:nn.loginMethodRow,children:[a.jsx("span",{className:nn.loginMethodIcon,"aria-hidden":"true",children:He.provider==="password"?a.jsx(L0,{size:16}):a.jsx(Jm,{size:16})}),a.jsxs("span",{className:nn.loginMethodCopy,children:[a.jsx("strong",{children:pA[He.provider]||He.provider}),He.providerEmail&&a.jsx("span",{children:He.providerEmail})]}),fe.length>1&&a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:oe===He.provider,onClick:()=>{Me(He.provider)},children:oe===He.provider?"Removing…":"Remove"})]},He.provider))}),!$e&&!ye&&je&&!Oe&&a.jsx("div",{className:nn.sectionActions,children:a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{Fe(!0),Je(!1),le(null)},children:"Change password"})}),Oe&&a.jsxs("div",{className:nn.addPasswordForm,children:[a.jsxs("div",{className:nn.fieldLabel,children:[a.jsx("label",{htmlFor:"account-current-password",children:"Current password"}),a.jsx(ef,{id:"account-current-password",className:P.input,value:st,onChange:He=>ft(He.target.value),disabled:Ne,autoComplete:"current-password",visibilityLabel:"current password"})]}),a.jsxs("div",{className:nn.fieldLabel,children:[a.jsx("label",{htmlFor:"account-new-password",children:"New password"}),a.jsx(ef,{id:"account-new-password",className:P.input,value:xe,onChange:He=>ke(He.target.value),disabled:Ne,autoComplete:"new-password",visibilityLabel:"new password"})]}),a.jsxs("div",{className:nn.fieldLabel,children:[a.jsx("label",{htmlFor:"account-confirm-password",children:"Confirm new password"}),a.jsx(ef,{id:"account-confirm-password",className:P.input,value:ve,onChange:He=>Ve(He.target.value),disabled:Ne,autoComplete:"new-password",visibilityLabel:"confirm new password"})]}),a.jsx("p",{className:"tf-text-helper",children:Ze.join(" ")}),x&&a.jsx("p",{className:"tf-text-error",role:"alert",children:x}),a.jsxs("div",{className:nn.inlineActions,children:[a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{Fe(!1),ft(""),ke(""),Ve(""),le(null)},disabled:Ne,children:"Cancel"}),a.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:()=>{Ue()},disabled:Ne||!st||!xe||!ve,children:Ne?"Changing…":"Change password"})]})]}),!$e&&!ye&&!je&&!V&&a.jsx("div",{className:nn.sectionActions,children:a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{B(!0),_e(!1),G(null)},children:"Add password login"})}),V&&a.jsxs("div",{className:nn.addPasswordForm,children:[a.jsxs("div",{className:nn.fieldLabel,children:[a.jsx("label",{htmlFor:"account-add-password",children:"New password"}),a.jsx(ef,{id:"account-add-password",className:P.input,placeholder:"Use 12+ characters",value:D,onChange:He=>be(He.target.value),disabled:Se,autoComplete:"new-password",visibilityLabel:"new password"})]}),a.jsx("p",{className:"tf-text-helper",children:Ze.join(" ")}),Y&&a.jsx("p",{className:"tf-text-error",role:"alert",children:Y}),a.jsxs("div",{className:nn.inlineActions,children:[a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{B(!1),be(""),G(null)},disabled:Se,children:"Cancel"}),a.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:()=>{et()},disabled:Se||!D,children:Se?"Saving…":"Save password"})]})]}),!$e&&!ye&&Pe.length>0&&a.jsxs("div",{className:nn.linkProviderBlock,children:[a.jsx("p",{className:"tf-label-micro",children:"Link another account"}),a.jsx("div",{className:nn.inlineActions,children:Pe.map(He=>a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>H(He),children:[a.jsx(Jm,{size:15}),pA[He]||He]},He))})]})]})]}),kt=()=>a.jsxs("section",{className:nn.section,"aria-labelledby":"account-billing-heading",children:[a.jsxs("div",{className:nn.sectionHeader,children:[a.jsxs("div",{children:[a.jsx("h2",{className:"tf-heading-card",id:"account-billing-heading",children:"Plan & Billing"}),a.jsx("p",{className:"tf-text-secondary",children:"Review your plan and open the secure billing portal."})]}),a.jsxs("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:z,disabled:A||h,children:[a.jsx(O0,{size:14}),"Refresh"]})]}),a.jsxs("div",{className:`${nn.sectionCard} tf-surface-panel`,children:[h&&a.jsx("p",{className:"tf-text-secondary",children:"Loading billing status…"}),y&&a.jsx("p",{className:"tf-text-error",role:"alert",children:y}),k&&a.jsx("p",{className:"tf-text-error",role:"alert",children:k}),v&&a.jsx("p",{className:"tf-text-secondary",role:"status",children:v}),a.jsxs("div",{className:nn.planSummary,children:[a.jsxs("div",{children:[a.jsx("p",{className:"tf-label-micro",children:"Current plan"}),a.jsx("strong",{className:nn.planName,children:re})]}),a.jsx("span",{className:`tf-chip ${X.isActive?"tf-chip-success":"tf-chip-neutral"}`,children:TY(w?.entitlementState)})]}),X.message&&a.jsx("p",{className:X.statusTone==="error"?"tf-text-error":"tf-text-secondary",children:X.message}),w?.stripeSubscriptionId&&a.jsxs("div",{className:nn.intervalRow,children:[a.jsxs("label",{className:nn.fieldLabel,children:[a.jsx("span",{children:"Billing interval"}),a.jsxs("select",{className:P.input,value:b,onChange:He=>q(He.target.value==="year"?"year":"month"),disabled:A,children:[a.jsx("option",{value:"month",children:"Monthly"}),a.jsx("option",{value:"year",children:"Yearly"})]})]}),a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:M,disabled:A,children:"Update interval"})]}),a.jsxs("div",{className:nn.sectionActions,children:[(X.primaryAction==="manage_billing"||X.primaryAction==="none")&&a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:J,disabled:A,children:"View plans"}),X.showManageBilling&&X.primaryAction!=="manage_billing"&&a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:Z,disabled:A,children:"Manage billing"}),X.primaryLabel&&a.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:yt,disabled:A,children:A?"Working…":X.primaryLabel})]})]})]});return a.jsx(Vo,{isOpen:e,onClose:Te,title:"Account Settings",size:"mdWide",theme:t,draggable:!0,children:a.jsx("div",{className:`${gr.form} ${nn.modalBody}`,children:a.jsxs("div",{className:nn.layout,children:[a.jsx("div",{className:nn.sectionTabs,role:"tablist","aria-label":"Account settings sections","aria-orientation":"vertical",children:_Y.map(He=>{const rt=He.icon,It=He.id===ee;return a.jsxs("button",{type:"button",role:"tab",id:`account-settings-tab-${He.id}`,"aria-controls":`account-settings-panel-${He.id}`,"aria-selected":It,className:nn.sectionTab,onClick:()=>pe(He.id),children:[a.jsx(rt,{size:16}),a.jsx("span",{children:He.label})]},He.id)})}),a.jsxs("div",{className:nn.sectionPanel,role:"tabpanel",id:`account-settings-panel-${ee}`,"aria-labelledby":`account-settings-tab-${ee}`,children:[ee==="profile"&&Le(),ee==="security"&&mt(),ee==="billing"&&kt()]})]})})})}var hA=(e,t,r,n,s,i)=>{if(i===0)e.rect(t,r,n,s);else{let l=n-i,c=s-i;e.translate(t,r),e.arc(i,i,i,Math.PI,Math.PI*1.5),e.lineTo(l,0),e.arc(l,i,i,Math.PI*1.5,Math.PI*2),e.lineTo(n,c),e.arc(l,c,i,Math.PI*2,Math.PI*.5),e.lineTo(i,s),e.arc(i,c,i,Math.PI*.5,Math.PI),e.closePath(),e.translate(-t,-r)}},RY=(e,t,r,n,s,i)=>{e.fillStyle=i;let l=n/3,c=s/3;e.fillRect(t,r,1,s),e.fillRect(l+t,r,1,s),e.fillRect(l*2+t,r,1,s),e.fillRect(l*3+t,r,1,s),e.fillRect(l*4+t,r,1,s),e.fillRect(t,r,n,1),e.fillRect(t,c+r,n,1),e.fillRect(t,c*2+r,n,1),e.fillRect(t,c*3+r,n,1),e.fillRect(t,c*4+r,n,1)},PY=e=>!!e.match(/^\s*data:([a-z]+\/[a-z]+(;[a-z-]+=[a-z-]+)?)?(;base64)?,[a-z0-9!$&',()*+;=\-._~:@/?%\s]*\s*$/i),D_=(e,t)=>new Promise((r,n)=>{let s=new Image;s.addEventListener("load",()=>r(s)),s.addEventListener("error",n),!PY(e)&&t&&(s.crossOrigin=t),s.src=e}),jY=e=>new Promise((t,r)=>{let n=new FileReader;n.addEventListener("load",s=>{try{if(!s?.target?.result)throw Error("No image data");t(D_(s.target.result))}catch(i){r(i)}}),n.readAsDataURL(e)}),EY=typeof File<"u",gA=e=>Math.PI/180*e,yA={x:.5,y:.5},NY=class{constructor(e){this.imageState=yA,this.config={border:25,borderRadius:0,scale:1,rotate:0,color:[0,0,0,.5],backgroundColor:"",borderColor:void 0,showGrid:!1,gridColor:"#666",disableBoundaryChecks:!1,disableHiDPIScaling:!1,disableCanvasRotation:!0,crossOrigin:void 0,...e},this.pixelRatio=typeof window<"u"&&window.devicePixelRatio&&!this.config.disableHiDPIScaling?window.devicePixelRatio:1}getPixelRatio(){return this.pixelRatio}getImageState(){return this.imageState}setImageState(e){this.imageState=e}updateConfig(e){this.config={...this.config,...e}}isVertical(){return!this.config.disableCanvasRotation&&this.config.rotate%180!=0}getBorders(e){let t=e??this.config.border;return Array.isArray(t)?t:[t,t]}getDimensions(){let{width:e,height:t,rotate:r,border:n}=this.config,s={width:0,height:0},[i,l]=this.getBorders(n);return this.isVertical()?(s.width=t,s.height=e):(s.width=e,s.height=t),s.width+=i*2,s.height+=l*2,{canvas:s,rotate:r,width:e,height:t,border:n}}getXScale(){if(!this.imageState.width||!this.imageState.height)throw Error("Image dimension is unknown.");let e=this.config.width/this.config.height,t=this.imageState.width/this.imageState.height;return Math.min(1,e/t)}getYScale(){if(!this.imageState.width||!this.imageState.height)throw Error("Image dimension is unknown.");let e=this.config.height/this.config.width,t=this.imageState.height/this.imageState.width;return Math.min(1,e/t)}getCroppingRect(e){if(!this.imageState.width||!this.imageState.height)return{x:0,y:0,width:1,height:1};let t=e||{x:this.imageState.x,y:this.imageState.y},r=1/this.config.scale*this.getXScale(),n=1/this.config.scale*this.getYScale(),s={x:t.x-r/2,y:t.y-n/2,width:r,height:n},i=0,l=1-s.width,c=0,d=1-s.height;return(this.config.disableBoundaryChecks||r>1||n>1)&&(i=-s.width,l=1,c=-s.height,d=1),{...s,x:Math.max(i,Math.min(s.x,l)),y:Math.max(c,Math.min(s.y,d))}}getInitialSize(e,t){let r,n,s=this.getDimensions();return s.height/s.width>t/e?(r=s.height,n=r/t*e):(n=s.width,r=n/e*t),{height:r,width:n}}async loadImage(e){let t;if(EY&&e instanceof File)t=await jY(e);else if(typeof e=="string")t=await D_(e,this.config.crossOrigin);else throw Error("Invalid image source");let r={...this.getInitialSize(t.width,t.height),resource:t,x:.5,y:.5};return this.imageState=r,r}clearImage(){this.imageState=yA}calculatePosition(e=this.imageState,t){let[r,n]=this.getBorders(t);if(!e.width||!e.height)throw Error("Image dimension is unknown.");let s=this.getCroppingRect(),i=e.width*this.config.scale,l=e.height*this.config.scale,c=-s.x*i,d=-s.y*l;return this.isVertical()?(c+=n,d+=r):(c+=r,d+=n),{x:c,y:d,height:l,width:i}}paint(e){e.save(),e.scale(this.pixelRatio,this.pixelRatio),e.translate(0,0),e.fillStyle="rgba("+this.config.color.slice(0,4).join(",")+")";let t=this.config.borderRadius,r=this.getDimensions(),[n,s]=this.getBorders(r.border),i=r.canvas.height,l=r.canvas.width;t=Math.max(t,0),t=Math.min(t,l/2-n,i/2-s),e.beginPath(),hA(e,n,s,l-n*2,i-s*2,t),e.rect(l,0,-l,i),e.fill("evenodd"),this.config.borderColor&&(e.strokeStyle="rgba("+this.config.borderColor.slice(0,4).join(",")+")",e.lineWidth=1,e.beginPath(),hA(e,n+.5,s+.5,l-n*2-1,i-s*2-1,t),e.stroke()),this.config.showGrid&&RY(e,n,s,l-n*2,i-s*2,this.config.gridColor),e.restore()}paintImage(e,t,r,n=this.pixelRatio){if(!t.resource)return;let s=this.calculatePosition(t,r);e.save(),e.translate(e.canvas.width/2,e.canvas.height/2),e.rotate(this.config.rotate*Math.PI/180),e.translate(-(e.canvas.width/2),-(e.canvas.height/2)),this.isVertical()&&e.translate((e.canvas.width-e.canvas.height)/2,(e.canvas.height-e.canvas.width)/2),e.scale(n,n),e.globalCompositeOperation="destination-over",e.drawImage(t.resource,s.x,s.y,s.width,s.height),this.config.backgroundColor&&(e.fillStyle=this.config.backgroundColor,e.fillRect(0,0,e.canvas.width,e.canvas.height)),e.restore()}getImage(){let e=this.getCroppingRect(),t=this.imageState;if(!t.resource)throw Error("No image resource available, please report this to: https://github.com/mosch/react-avatar-editor/issues");e.x*=t.resource.width,e.y*=t.resource.height,e.width*=t.resource.width,e.height*=t.resource.height;let r=document.createElement("canvas");this.isVertical()?(r.width=Math.round(e.height),r.height=Math.round(e.width)):(r.width=Math.round(e.width),r.height=Math.round(e.height));let n=r.getContext("2d");if(!n)throw Error("No context found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return n.translate(r.width/2,r.height/2),n.rotate(this.config.rotate*Math.PI/180),n.translate(-(r.width/2),-(r.height/2)),this.isVertical()&&n.translate((r.width-r.height)/2,(r.height-r.width)/2),this.config.backgroundColor&&(n.fillStyle=this.config.backgroundColor,n.fillRect(0,0,r.width,r.height)),n.drawImage(t.resource,-e.x,-e.y),r}getImageScaledToCanvas(){let e=this.getDimensions(),t=this.imageState,r=document.createElement("canvas");if(this.isVertical()?(r.width=e.height,r.height=e.width):(r.width=e.width,r.height=e.height),!t.resource)return r;let n=r.getContext("2d");if(!n)return r;let s=this.calculatePosition(t,0);return n.save(),n.translate(r.width/2,r.height/2),n.rotate(this.config.rotate*Math.PI/180),n.translate(-(r.width/2),-(r.height/2)),this.isVertical()&&n.translate((r.width-r.height)/2,(r.height-r.width)/2),this.config.backgroundColor&&(n.fillStyle=this.config.backgroundColor,n.fillRect(0,0,r.width,r.height)),n.drawImage(t.resource,s.x,s.y,s.width,s.height),n.restore(),r}calculateDragPosition(e,t,r,n){let s=r-e,i=n-t;if(!this.imageState.width||!this.imageState.height)throw Error("Image dimension is unknown.");let l=this.imageState.width*this.config.scale,c=this.imageState.height*this.config.scale,{x:d,y:m}=this.getCroppingRect();d*=l,m*=c;let f=this.config.rotate;f%=360,f=f<0?f+360:f;let g=Math.cos(gA(f)),h=Math.sin(gA(f)),y=d+s*g+i*h,k=m+-s*h+i*g,v=1/this.config.scale*this.getXScale(),A=1/this.config.scale*this.getYScale();return{x:y/l+v/2,y:k/c+A/2}}},kA=()=>{},DY=()=>{let e=!1;try{let t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",kA,t),window.removeEventListener("test",kA,t)}catch{e=!1}return e},M_=o.forwardRef((e,t)=>{let{scale:r=1,rotate:n=0,border:s=25,borderRadius:i=0,width:l=200,height:c=200,color:d=[0,0,0,.5],showGrid:m=!1,gridColor:f="#666",disableBoundaryChecks:g=!1,disableHiDPIScaling:h=!1,disableCanvasRotation:y=!0,image:k,position:v,backgroundColor:A,crossOrigin:b,onLoadStart:w,onLoadFailure:R,onLoadSuccess:N,onImageReady:j,onImageChange:E,onMouseUp:S,onMouseMove:L,onPositionChange:_,borderColor:T,style:H}=e,q=o.useRef(null),z=o.useRef(new NY({width:l,height:c,border:s,borderRadius:i,scale:r,rotate:n,color:d,backgroundColor:A,borderColor:T,showGrid:m,gridColor:f,disableBoundaryChecks:g,disableHiDPIScaling:h,disableCanvasRotation:y,crossOrigin:b})),M=o.useRef(!1),Z=o.useRef(void 0),J=o.useRef(void 0),[ee,te]=o.useState(!1),[fe,Ie]=o.useState(!1),[$e,Ye]=o.useState(z.current.getImageState()),ye=o.useRef(S);ye.current=S;let ge=o.useRef(L);ge.current=L;let oe=o.useRef(_);oe.current=_,o.useEffect(()=>{z.current.updateConfig({width:l,height:c,border:s,borderRadius:i,scale:r,rotate:n,color:d,backgroundColor:A,borderColor:T,showGrid:m,gridColor:f,disableBoundaryChecks:g,disableHiDPIScaling:h,disableCanvasRotation:y,crossOrigin:b})},[l,c,s,i,r,n,d,A,T,m,f,g,h,y,b]);let ie=o.useCallback(()=>{if(!q.current)throw Error("No canvas found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return q.current},[]),me=o.useCallback(()=>{let ae=ie().getContext("2d");if(!ae)throw Error("No context found, please report this to: https://github.com/mosch/react-avatar-editor/issues");return ae},[ie]),W=o.useCallback(async ae=>{Ie(!0),w?.();try{let _e=await z.current.loadImage(ae);M.current=!1,te(!1),Ye(_e),j?.(),N?.(_e)}catch{R?.()}finally{Ie(!1)}},[w,j,N,R]),V=o.useCallback(()=>{let ae=ie();me().clearRect(0,0,ae.width,ae.height),z.current.clearImage(),Ye(z.current.getImageState())},[ie,me]),B=o.useCallback(()=>{let ae=me(),_e=ie();ae.clearRect(0,0,_e.width,_e.height),z.current.paint(ae),z.current.paintImage(ae,$e,s)},[me,ie,$e,s,l,c,i,r,n,d,A,T,m,f,g,h,y,b]),D=o.useCallback(ae=>{ae.preventDefault(),M.current=!0,Z.current=void 0,J.current=void 0,te(!0)},[]),be=o.useCallback(()=>{M.current=!0,Z.current=void 0,J.current=void 0,te(!0)},[]);o.useImperativeHandle(t,()=>({getImage:()=>z.current.getImage(),getImageScaledToCanvas:()=>z.current.getImageScaledToCanvas(),getCroppingRect:()=>z.current.getCroppingRect()}),[]),o.useEffect(()=>{let ae=me();k&&W(k),z.current.paint(ae);let _e=st=>{if(!M.current)return;st.cancelable&&st.preventDefault();let ft="targetTouches"in st?st.targetTouches[0].pageX:st.clientX,xe="targetTouches"in st?st.targetTouches[0].pageY:st.clientY,ke=Z.current,ve=J.current;if(Z.current=ft,J.current=xe,ke!==void 0&&ve!==void 0){let Ve=z.current.getImageState();if(Ve.width&&Ve.height){let Ne=z.current.calculateDragPosition(ft,xe,ke,ve);oe.current?.(Ne);let de={...Ve,...Ne};z.current.setImageState(de),Ye(de)}}ge.current?.(st)},Oe=()=>{M.current&&(M.current=!1,te(!1),ye.current?.())},Fe=DY()?{passive:!1}:!1;return document.addEventListener("mousemove",_e,Fe),document.addEventListener("mouseup",Oe,Fe),document.addEventListener("touchmove",_e,Fe),document.addEventListener("touchend",Oe,Fe),()=>{document.removeEventListener("mousemove",_e,!1),document.removeEventListener("mouseup",Oe,!1),document.removeEventListener("touchmove",_e,!1),document.removeEventListener("touchend",Oe,!1)}},[]),o.useEffect(()=>{k?W(k):!k&&$e.x!==.5&&$e.y!==.5&&V()},[k,l,c,A]),o.useEffect(()=>{B()},[B]),o.useEffect(()=>{if(!fe)return;let ae=q.current;if(!ae)return;let _e=ae.getContext("2d");if(!_e)return;let Oe,Fe=performance.now(),st=ft=>{let xe=(ft-Fe)/1e3,ke=.03+Math.sin(xe*2.5)*.02+.02;_e.save(),_e.clearRect(0,0,ae.width,ae.height),_e.fillStyle=`rgba(255,255,255,${ke})`,_e.fillRect(0,0,ae.width,ae.height),_e.restore(),Oe=requestAnimationFrame(st)};return Oe=requestAnimationFrame(st),()=>cancelAnimationFrame(Oe)},[fe]);let Se=o.useRef({image:k,width:l,height:c,position:v,scale:r,rotate:n,imageX:$e.x,imageY:$e.y});o.useEffect(()=>{let ae=Se.current;(ae.image!==k||ae.width!==l||ae.height!==c||ae.position!==v||ae.scale!==r||ae.rotate!==n||ae.imageX!==$e.x||ae.imageY!==$e.y)&&(E?.(),Se.current={image:k,width:l,height:c,position:v,scale:r,rotate:n,imageX:$e.x,imageY:$e.y})},[k,l,c,v,r,n,$e.x,$e.y,E]);let K=z.current.getDimensions(),Y=z.current.getPixelRatio(),G={width:K.canvas.width,height:K.canvas.height,cursor:ee?"grabbing":"grab",touchAction:"none",maxWidth:"none",maxHeight:"none"};return ne.createElement("canvas",{width:K.canvas.width*Y,height:K.canvas.height*Y,onMouseDown:D,onTouchStart:be,style:{...G,...H},ref:q})});M_.displayName="AvatarEditor";const MY="_avatarManagerBody_1bfoi_1",LY="_editorPanel_1bfoi_7",OY="_editorFrame_1bfoi_13",BY="_gifPreviewImage_1bfoi_21",WY="_emptyPreview_1bfoi_28",$Y="_controlPanel_1bfoi_41",FY="_zoomField_1bfoi_47",UY="_zoomSlider_1bfoi_52",zY="_actionGrid_1bfoi_57",HY="_fileInput_1bfoi_71",VY="_messageStack_1bfoi_75",GY="_footerActions_1bfoi_80",oi={avatarManagerBody:MY,editorPanel:LY,editorFrame:OY,gifPreviewImage:BY,emptyPreview:WY,controlPanel:$Y,zoomField:FY,zoomSlider:UY,actionGrid:zY,fileInput:HY,messageStack:VY,footerActions:GY},sv=512,KY=48,ng=512;function vA(e,t,r){return new Promise(n=>{e.toBlob(n,t,r)})}function qY(e,t){const r=String(e).trim()||"avatar",n=r.lastIndexOf(".");return n<=0?`${r}${t}`:`${r.slice(0,n)}${t}`}async function YY(e,t){const r=e.getImageScaledToCanvas(),n=document.createElement("canvas");n.width=ng,n.height=ng;const s=n.getContext("2d");if(!s)throw new Error("Image editing requires a 2D canvas context.");s.drawImage(r,0,0,ng,ng);const l=await vA(n,"image/webp",.9)||await vA(n,"image/jpeg",.9);if(!l)throw new Error("Unable to prepare profile photo.");const c=l.type||"image/jpeg",d=c==="image/webp"?".webp":".jpg";return new File([l],qY(t,d),{type:c,lastModified:Date.now()})}function ZY({isOpen:e,theme:t,title:r="Edit Photo",currentImageUrl:n,editorImageUrl:s="",fallbackInitial:i,accept:l,busy:c,generating:d=!1,generateLabel:m="Generate",hasPendingImage:f,canRemove:g,error:h,notice:y,onClose:k,onApplyImage:v,onGenerateImage:A,onRemoveImage:b,onDiscardPendingImage:w}){const R=o.useRef(null),N=o.useRef(null),j=o.useRef(!1),E=o.useRef(!1),[S,L]=o.useState(null),[_,T]=o.useState(""),[H,q]=o.useState(1.1),[z,M]=o.useState(!1),[Z,J]=o.useState(null),[ee,te]=o.useState(null);o.useEffect(()=>{e||(L(null),T(""),q(1.1),M(!1),E.current=!1,J(null),te(null))},[e]),o.useEffect(()=>{e&&(M(!1),E.current=!1)},[n,s,e]),o.useEffect(()=>{if(!S){T("");return}const B=URL.createObjectURL(S);return T(B),()=>URL.revokeObjectURL(B)},[S]);const fe=_||s||n,Ie=S?.name||"avatar",$e=String(i||"").trim().charAt(0).toUpperCase(),Ye=Z||h,ye=ee||y,ge=c||d,oe=o.useCallback(B=>{if(J(null),te(null),!!B){if(!B.type.startsWith("image/")){J("Profile photo must be an image file.");return}B.type==="image/gif"&&te("Animated GIFs will upload without repositioning."),L(B),q(1.1),M(!1),E.current=!1}},[]),ie=o.useCallback(async()=>{J(null);const B=R.current;if(S?.type==="image/gif"){await v(S)&&k();return}if(!B||!fe){J("Choose a profile photo first.");return}try{const D=await YY(B,Ie);await v(D,S,{preserveExistingSource:!S&&!!s})&&k()}catch(D){J(D instanceof Error?D.message:"Unable to prepare profile photo.")}},[n,fe,s,v,k,S,Ie]),me=o.useCallback(async()=>{if(!(!A||ge||j.current)){j.current=!0,J(null),te(null);try{await A()&&(L(null),q(1.1),M(!1),E.current=!1)}catch(B){J(B instanceof Error?B.message:"Unable to generate profile photo.")}finally{j.current=!1}}},[ge,A]),W=f||!!S||z,V=o.useMemo(()=>a.jsxs("div",{className:oi.footerActions,children:[a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:k,disabled:c,children:"Cancel"}),a.jsx("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:()=>{ie()},disabled:ge||!W,children:c?"Applying...":"Apply Changes"})]}),[c,W,ie,ge,k]);return a.jsx(Vo,{isOpen:e,onClose:k,title:r,size:"md",theme:t,draggable:!0,footer:V,children:a.jsxs("div",{className:oi.avatarManagerBody,children:[a.jsxs("div",{className:oi.editorPanel,children:[a.jsx("div",{className:`tf-surface-inset ${oi.editorFrame}`,onPointerDown:()=>{fe&&S?.type!=="image/gif"&&(E.current=!0)},children:S?.type==="image/gif"&&_?a.jsx("img",{src:_,alt:"",className:oi.gifPreviewImage}):fe?a.jsx(M_,{ref:R,image:fe,width:sv,height:sv,border:KY,borderRadius:sv/2,scale:H,color:[15,15,26,.72],backgroundColor:"transparent",onPositionChange:()=>{E.current&&M(!0)},style:{width:"100%",height:"100%",maxWidth:"100%",maxHeight:"100%",display:"block",borderRadius:"var(--radius-lg)",boxShadow:"var(--box-shadow-sm)"},disableCanvasRotation:!0}):a.jsx("div",{className:oi.emptyPreview,"aria-hidden":"true",children:$e})}),a.jsxs("div",{className:oi.controlPanel,children:[a.jsx("input",{ref:N,type:"file","aria-label":"Choose profile photo",accept:l,className:oi.fileInput,onChange:B=>oe(B.target.files?.[0]||null),disabled:ge}),a.jsxs("div",{className:oi.actionGrid,children:[a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>N.current?.click(),disabled:ge,children:[a.jsx(B0,{size:16}),"Choose"]}),f&&w&&a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:w,disabled:ge,children:[a.jsx($i,{size:16}),"Discard"]}),A&&a.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>{me()},disabled:ge,"aria-busy":d,children:[d?a.jsx(ea,{size:16,className:P.spinner}):a.jsx(ZA,{size:16}),d?"Generating":m]}),g&&b&&a.jsxs("button",{type:"button",className:"tf-button-destructive tf-button-compact",onClick:b,disabled:ge,children:[a.jsx(fp,{size:16}),"Remove"]})]}),a.jsxs("label",{className:`tf-field-stack ${oi.zoomField}`,children:[a.jsx("span",{className:"tf-field-label",children:"Zoom"}),a.jsx("input",{type:"range",min:"1",max:"3",step:"0.01",value:H,onChange:B=>{q(Number(B.target.value)),M(!0)},className:oi.zoomSlider,disabled:ge||!fe||S?.type==="image/gif"})]})]})]}),(Ye||ye)&&a.jsxs("div",{className:oi.messageStack,children:[Ye&&a.jsx("p",{className:"tf-text-error",children:Ye}),ye&&!Ye&&a.jsx("p",{className:"tf-text-helper",children:ye})]})]})})}const Xv="support@taskforcehq.ai";function ag(e){return String(e||"").trim()}function JY(e={}){const t=ag(e.workspaceName),r=ag(e.workspaceId),n=ag(e.accountLabel),s=ag(e.runtimeMode),i=[t?`Workspace: ${t}`:"",r?`Workspace ID: ${r}`:"",n?`Account: ${n}`:"",s?`Runtime: ${s}`:""].filter(Boolean),l=["Hi Taskforce team,","","I need help with:","",i.length>0?"Context:":"",...i,(i.length>0,""),"What happened:",""].filter((d,m,f)=>d!==""||f[m-1]!==""),c=new URLSearchParams({subject:"Taskforce support request",body:l.join(`
|
|
6
|
+
`)});return`mailto:${Xv}?${c.toString()}`}function XY({isOpen:e,theme:t,onClose:r,onOpenSettings:n,supportMailtoHref:s}){const[i,l]=o.useState("idle"),c=async()=>{try{await navigator.clipboard.writeText(Xv),l("copied"),window.setTimeout(()=>l("idle"),1600)}catch{l("failed"),window.setTimeout(()=>l("idle"),2200)}};return a.jsx(Vo,{isOpen:e,onClose:r,title:"Help & Support",size:"sm",theme:t,draggable:!0,children:a.jsxs("div",{className:`${gr.form} ${Vr.modalBody} ${Vr.helpModalBody}`,children:[a.jsxs("div",{className:Vr.helpHero,children:[a.jsx("span",{className:Vr.helpHeroIcon,"aria-hidden":"true",children:a.jsx(W0,{size:20})}),a.jsxs("div",{className:Vr.helpHeroCopy,children:[a.jsx("h2",{className:"tf-heading-card",children:"How can we help?"}),a.jsx("p",{className:"tf-text-secondary",children:"Tell us what you were trying to do, what happened, and any workspace context that could help us reproduce it."})]})]}),a.jsxs("section",{className:`${Vr.supportContactCard} tf-surface-panel`,"aria-labelledby":"support-email-heading",children:[a.jsx("div",{className:Vr.supportContactHeader,children:a.jsxs("div",{children:[a.jsx("h3",{className:"tf-label-micro",id:"support-email-heading",children:"Email support"}),a.jsx("a",{className:Vr.supportEmailAddress,href:s,children:Xv})]})}),a.jsxs("div",{className:Vr.supportActionRow,children:[a.jsxs("a",{className:`tf-button-primary tf-button-compact ${Vr.supportAction}`,href:s,children:[a.jsx($0,{size:15}),"Email Support"]}),a.jsxs("button",{className:`tf-button-secondary tf-button-compact ${Vr.supportAction}`,onClick:()=>{c()},type:"button",children:[i==="copied"?a.jsx(Fi,{size:15}):a.jsx(aC,{size:15}),i==="copied"?"Copied":i==="failed"?"Copy failed":"Copy address"]})]})]}),a.jsxs("section",{className:Vr.supportPanel,"aria-labelledby":"support-settings-heading",children:[a.jsxs("div",{className:Vr.supportPanelHeader,children:[a.jsx(Qm,{size:17,"aria-hidden":"true"}),a.jsxs("div",{children:[a.jsx("h3",{className:"tf-heading-card",id:"support-settings-heading",children:"Check workspace settings"}),a.jsx("p",{className:"tf-text-secondary",children:"Common workspace, appearance, and setup options are available in Settings."})]})]}),a.jsxs("button",{className:`tf-button-secondary tf-button-compact ${Vr.supportAction}`,onClick:n,type:"button",children:[a.jsx(Qm,{size:15}),"Open Settings"]})]})]})})}function QY({prompt:e,theme:t,onClose:r,onConfirm:n}){return a.jsx(Vo,{isOpen:!!e,onClose:r,title:"Date Warning",size:"sm",theme:t,draggable:!1,closeOnOverlayClick:!1,children:a.jsxs("div",{className:`${P.form} tf-inline-stack-sm`,style:{padding:"16px",gap:"12px"},children:[a.jsx("p",{className:"tf-text-body",children:"Due date is before scheduled date."}),e&&a.jsxs("p",{className:"tf-text-helper",children:["Due: ",e.dueDate," · Scheduled: ",e.scheduledDate]}),a.jsxs("div",{className:P.formActions,children:[a.jsx("button",{className:P.cancelBtn,onClick:r,children:"Go Back"}),a.jsx("button",{className:P.submitBtn,onClick:n,children:"Save Anyway"})]})]})})}function eZ({isOpen:e,theme:t,onClose:r,onConfirm:n}){return a.jsx(Vo,{isOpen:e,onClose:r,title:"Cloud Sync Warning",size:"sm",theme:t,draggable:!1,closeOnOverlayClick:!1,children:a.jsxs("div",{className:`${P.form} tf-inline-stack-sm`,style:{padding:"16px",gap:"12px"},children:[a.jsx("p",{className:"tf-text-body",children:"Turning on cloud sync can renumber task, document, and image references to match the cloud workspace."}),a.jsxs("p",{className:"tf-text-helper",children:["Labels like ",a.jsx("code",{children:"T-12"}),", ",a.jsx("code",{children:"D-4"}),", and ",a.jsx("code",{children:"IMG-2"})," may change. Plain file attachments are not renumbered."]}),a.jsxs("div",{className:P.formActions,children:[a.jsx("button",{className:P.cancelBtn,onClick:r,children:"Go Back"}),a.jsx("button",{className:P.submitBtn,onClick:n,children:"Enable Sync Anyway"})]})]})})}const tZ="_syncStatusOverlay_b2fe8_1",rZ="_syncStatusModal_b2fe8_5",nZ="_syncStatusTop_b2fe8_10",aZ="_syncStatusMetaHeader_b2fe8_19",sZ="_syncStatusBadge_b2fe8_26",oZ="_syncStatusLabel_b2fe8_40",iZ="_syncToggle_b2fe8_51",cZ="_syncToggleTransition_b2fe8_59",lZ="_syncToggleControl_b2fe8_66",dZ="_syncToggleControlEnabled_b2fe8_82",uZ="_syncToggleControlDisabled_b2fe8_88",fZ="_syncToggleControlBusy_b2fe8_92",mZ="_syncToggleControlBlocked_b2fe8_97",pZ="_syncToggleInput_b2fe8_102",hZ="_syncToggleState_b2fe8_115",gZ="_syncToggleStateOn_b2fe8_129",yZ="_syncToggleStateOff_b2fe8_133",kZ="_syncToggleThumb_b2fe8_142",vZ="_syncStatusOverview_b2fe8_153",wZ="_syncStatusEventsPanel_b2fe8_154",bZ="_syncStatusAdvanced_b2fe8_155",SZ="_syncStatusOverviewRow_b2fe8_166",AZ="_syncStatusSummaryValue_b2fe8_180",CZ="_syncStatusValue_b2fe8_181",IZ="_syncStatusIssueRow_b2fe8_189",_Z="_syncStatusIssueRowError_b2fe8_193",TZ="_syncStatusValueMuted_b2fe8_197",xZ="_syncStatusValueError_b2fe8_204",RZ="_syncStatusKeyMetrics_b2fe8_211",PZ="_syncStatusCompactGrid_b2fe8_212",jZ="_syncStatusCompactItem_b2fe8_225",EZ="_syncStatusAdvancedContent_b2fe8_266",NZ="_syncStatusDiagnosticsList_b2fe8_273",DZ="_syncStatusOwnershipControl_b2fe8_279",MZ="_syncStatusDiagnosticRow_b2fe8_300",LZ="_syncStatusPanelHeader_b2fe8_322",OZ="_syncStatusPanelMeta_b2fe8_329",BZ="_syncStatusMismatchPanel_b2fe8_335",WZ="_syncStatusMismatchItem_b2fe8_345",$Z="_syncStatusEventFilters_b2fe8_364",FZ="_syncStatusEventFilterActive_b2fe8_391",UZ="_syncStatusEventsList_b2fe8_396",zZ="_syncStatusEventItem_b2fe8_406",HZ="_syncStatusEventItemError_b2fe8_413",VZ="_syncStatusEventItemMuted_b2fe8_418",GZ="_syncStatusEventLine_b2fe8_422",KZ="_syncStatusFooter_b2fe8_432",qZ="_syncStatusFooterPrimary_b2fe8_441",Lt={syncStatusOverlay:tZ,syncStatusModal:rZ,syncStatusTop:nZ,syncStatusMetaHeader:aZ,syncStatusBadge:sZ,syncStatusLabel:oZ,syncToggle:iZ,syncToggleTransition:cZ,syncToggleControl:lZ,syncToggleControlEnabled:dZ,syncToggleControlDisabled:uZ,syncToggleControlBusy:fZ,syncToggleControlBlocked:mZ,syncToggleInput:pZ,syncToggleState:hZ,syncToggleStateOn:gZ,syncToggleStateOff:yZ,syncToggleThumb:kZ,syncStatusOverview:vZ,syncStatusEventsPanel:wZ,syncStatusAdvanced:bZ,syncStatusOverviewRow:SZ,syncStatusSummaryValue:AZ,syncStatusValue:CZ,syncStatusIssueRow:IZ,syncStatusIssueRowError:_Z,syncStatusValueMuted:TZ,syncStatusValueError:xZ,syncStatusKeyMetrics:RZ,syncStatusCompactGrid:PZ,syncStatusCompactItem:jZ,syncStatusAdvancedContent:EZ,syncStatusDiagnosticsList:NZ,syncStatusOwnershipControl:DZ,syncStatusDiagnosticRow:MZ,syncStatusPanelHeader:LZ,syncStatusPanelMeta:OZ,syncStatusMismatchPanel:BZ,syncStatusMismatchItem:WZ,syncStatusEventFilters:$Z,syncStatusEventFilterActive:FZ,syncStatusEventsList:UZ,syncStatusEventItem:zZ,syncStatusEventItemError:HZ,syncStatusEventItemMuted:VZ,syncStatusEventLine:GZ,syncStatusFooter:KZ,syncStatusFooterPrimary:qZ};function YZ(e){const t=e?.preparedPlan,r=e?.settledBatchOperationIdentities;if(e?.settlementVersion!==1||!t||!Array.isArray(r)||t.batches.length!==t.batchOperationIdentities.length||new Set(t.batchOperationIdentities).size!==t.batchOperationIdentities.length||new Set(r).size!==r.length||r.some(c=>!t.batchOperationIdentities.includes(c)))return null;const n=new Set(r),s=t.batches.reduce((c,d)=>c+d.length,0),i=t.batches.reduce((c,d,m)=>n.has(t.batchOperationIdentities[m])?c+d.length:c,0),l=t.batchOperationIdentities.findIndex(c=>!n.has(c));return{effectiveTotalBatches:t.batches.length,settledBatches:n.size,effectiveTotalChanges:s,settledChanges:i,remainingChanges:s-i,firstUnsettledBatchIndex:l<0?null:l}}function L_(e){return/\btaskforce session is invalid\b|\bauthenticated taskforce session is required\b/i.test(e||"")}function ZZ(e){if(!e)return null;const t=e.snapshot;if(e.phase!=="ready"){const Ye=e.phase==="error",ye=L_(e.errorMessage);return{header:{actionable:Ye,status:Ye?"attention":"checking",syncEnabledLabel:"unknown",summary:Ye?"The shared sync coordinator status is unavailable.":"Reading shared sync coordinator status.",recommendedAction:Ye?ye?"Sign out and sign back in so automatic sync can resume.":"Wait for automatic recovery. If the coordinator remains unavailable, restart the local server.":"Wait for the coordinator status check to finish.",lastError:e.errorMessage||(Ye?"Coordinator status unavailable.":"None")},pendingLocalChanges:"Unknown",incomingCloudChanges:"Not checked",stage:Ye?"unavailable":"checking coordinator",lastPullAt:null,lastPushAt:null,lastSyncedAt:null,busy:e.phase==="attaching",repairBusy:!1,diagnostics:[{label:"Coordinator",value:e.errorMessage||e.phase}]}}if(!t||t.state.ownershipMode!=="server")return null;const r=t.workspace,n=r?.runner||null,s=n?.checkpoint?.checkpoint||null,i=r?.outbox||null,l=i?.operationStates,c=l?.stale||0,d=l?.blocked??i?.blocked??0,m=l?.retryScheduled||0,f=!!(i?.recovery&&i.recovery.state!=="completed"),g=i?.attachmentApplyObligations?.open||0,h=t.credential.status!=="ready",y=t.state.transitionState!=="idle",k=!n||!n.running||!n.acceptingWork||!s,v=s?.controlState==="error"||!!s?.lastError,A=s?.controlState==="retry-wait"||m>0,b=t.permits.recoveryObligations,w=s?.pendingV2Push||null,R=w?.lastBatchProgress||null,N=YZ(w),j=N?.remainingChanges??Math.max(0,(w?.frozenPayload.changes.length||0)-(R?.completedChanges||0)),E=N?.settledBatches??R?.completedBatches??0,S=N?.effectiveTotalBatches??R?.totalBatches??0,L=!!(R&&(R.failureDomain==="content"||R.failureDomain==="mixed")&&j>0),_=!!(s?.syncEnabled&&s.syncPhase==="attach-cloud"&&!s.lastPullAt),T=!!(n?.queuedCommandCount||["starting","pulling","pushing","repairing","stopping"].includes(s?.controlState||"")||(l?.inFlight??i?.inFlight??0)>0),H=T||(i?.pending||0)>0,q=L&&!T,z=T,M=s?.controlState==="repairing";let Z="healthy",J="Sync is healthy.",ee="No action needed.",te=s?.lastError||"None";if(h)Z="attention",J="Sync is paused because the coordinator credential is unavailable.",ee="Sign in again, then retry sync.";else if(y)Z="syncing",J="Sync ownership is changing safely.",ee="Wait for the coordinator transition to finish.";else if(k)Z="attention",J="The shared sync runner is unavailable.",ee="Wait for automatic recovery. If the runner does not recover, restart the local server.";else if(g>0)Z="attention",J=`${g} incoming attachment ${g===1?"change is":"changes are"} waiting for content.`,ee=s&&!s.syncEnabled?"Turn on sync to resume automatic attachment hydration.":"Wait for the scheduled attachment hydration retry.",te=i?.attachmentApplyObligations?.lastError||te;else if(b>0||d>0||c>0||f)Z="attention",J="Durable local changes need reconciliation.",ee=s&&!s.syncEnabled?"Turn on sync, then press Repair to reconcile and replay supported changes.":"Press Repair to reconcile and replay supported changes.";else if(q){Z="attention";const Ye=R.failureDomain==="content"?"content":"push";J=`${R.failedChangeCount} ${Ye} ${R.failedChangeCount===1?"change is":"changes are"} waiting to retry; ${j} total push ${j===1?"change remains":"changes remain"}.`,ee=s&&!s.syncEnabled?"Turn on sync to resume the bounded content retry.":"Wait for the scheduled content retry."}else s&&!s.syncEnabled?(Z="off",J="Workspace sync is turned off.",ee="Turn on sync when you are ready to connect this workspace.",te="None"):v&&!T?(Z="attention",J=s?.lastError||"The shared sync runner reported an error.",ee="Wait for the automatic retry. If the same issue returns, press Repair."):A?(Z="attention",J="Sync is waiting for a scheduled retry.",ee="Wait for the scheduled retry."):_?(Z="attention",J="The initial cloud baseline has not completed.",ee="Keep sync enabled until the first cloud check completes."):H&&(Z="syncing",J="The shared sync runner is processing workspace changes.",ee="Wait for the current transfer to finish.");const fe=s?.lastPullAt?s.controlState==="pulling"?"Checking — total unknown":"No known backlog at last check":s?.controlState==="pulling"?"Checking — total unknown":"Not checked",Ie=i?i.activeDepth+j:w?j:"Unknown",$e=s?.controlState||"unavailable";return{header:{actionable:!0,status:Z,syncEnabledLabel:s?.syncEnabled?"yes":"no",summary:J,recommendedAction:ee,lastError:te},pendingLocalChanges:Ie,incomingCloudChanges:fe,stage:$e,lastPullAt:s?.lastPullAt||null,lastPushAt:s?.lastPushAt||null,lastSyncedAt:s?.lastSyncedAt||null,busy:z,repairBusy:M,diagnostics:[{label:"Coordinator",value:`Generation ${t.state.coordinatorGeneration}; server-owned`},{label:"Durable outbox",value:i?`${l?.pending??i.pending} pending, ${m} retry scheduled, ${l?.inFlight??i.inFlight} in flight, ${c} stale, ${d} blocked`:"Unavailable"},{label:"Recovery obligations",value:String(b)},{label:"Attachment apply obligations",value:i?.attachmentApplyObligations?`${i.attachmentApplyObligations.open} open, ${i.attachmentApplyObligations.due} due, ${i.attachmentApplyObligations.totalAttempts} attempts`:"Unavailable"},{label:"Content push backlog",value:L?`${R.failedChangeCount} blocked ${R.failureDomain==="content"?"content":"push"} ${R.failedChangeCount===1?"change":"changes"}; ${j} total push ${j===1?"change remains":"changes remain"}; ${E}/${S} batches settled`:"None"},{label:"Oldest actionable change",value:i?.oldestActionableAt||"None"},{label:"Local data version",value:String(t.state.localDataVersion)}]}}function JZ(e){switch(e){case"auth-required":return{summary:"Sync is paused until you sign in again.",recommendedAction:"Sign in so automatic sync can resume."};case"attach-cloud":return{summary:"This workspace still needs its first cloud pull before local pushes can run.",recommendedAction:"Keep this window open for the first cloud pull. If it seems stuck, press Repair."};case"provision-local":return{summary:"This workspace is still doing its first cloud upload before normal pulls can run.",recommendedAction:"Keep this window open until the first cloud upload finishes."};case"repair-active":return{summary:"Repair is already running for this workspace.",recommendedAction:"Wait for repair to finish."};case"retry-pending":return{summary:"Sync hit a temporary problem and is waiting for its scheduled retry.",recommendedAction:"Wait for the automatic retry."};case"lease-held":return{summary:"Another local window is already syncing this workspace.",recommendedAction:"Use a single local window for sync, or close the other syncing window."};case"invalid-workspace":return{summary:"Workspace setup is required before sync can run.",recommendedAction:"Open or create a named workspace before retrying sync."};case"cloud-auth-unconfigured":return{summary:"Cloud sync is unavailable because cloud authentication is not configured.",recommendedAction:"Configure cloud authentication before turning on sync."};case"runtime-not-local":return{summary:"Workspace sync controls are only available in the local runtime.",recommendedAction:"Open this workspace in the local app to manage sync."};case"sync-disabled":return{summary:"Workspace sync is currently turned off.",recommendedAction:"Turn on sync when you are ready to connect this workspace to cloud."};default:return null}}function XZ(e){const t=e.runtimeMode==="local"&&e.isAuthenticated;if(t){const r=Math.max(0,Number(e.coordinatorRecoveryObligations||0)),n=JZ(e.retryBlockedReason||e.pullBlockedReason||e.pushBlockedReason||null);return r>0&&e.retryBlockedReason!=="auth-required"&&e.pullBlockedReason!=="auth-required"&&e.pushBlockedReason!=="auth-required"&&e.retryBlockedReason!=="repair-active"&&e.pullBlockedReason!=="repair-active"&&e.pushBlockedReason!=="repair-active"?{actionable:t,status:"attention",syncEnabledLabel:e.workspaceCloudSyncEnabled?"yes":"no",summary:`${r} durable sync recovery obligation${r===1?"":"s"} remain.`,recommendedAction:e.workspaceCloudSyncEnabled?"Press Repair to reconcile the durable sync ledger.":"Turn on sync, then press Repair to reconcile the durable sync ledger.",lastError:e.workspaceSyncError}:{actionable:t,status:e.workspaceSyncStatus,syncEnabledLabel:e.workspaceCloudSyncEnabled?"yes":"no",summary:n?.summary||e.workspaceSyncSummary,recommendedAction:n?.recommendedAction||e.workspaceSyncRecommendedAction,lastError:e.workspaceSyncError}}return{actionable:t,status:"off",syncEnabledLabel:"no",summary:"Sign in to enable workspace sync controls on this device.",recommendedAction:"Sign in to manage workspace sync for this workspace.",lastError:"Sign in to enable workspace sync controls on this device."}}function QZ({isOpen:e,theme:t,currentWorkspaceLabel:r,syncStatus:n,syncStatusMeta:s,workspaceCloudSyncEnabled:i,syncControlBusy:l,syncControlIntent:c,canManageWorkspaceSync:d,workspaceSyncSummary:m,workspaceSyncRecommendedAction:f,workspaceSyncRepairBusy:g,referenceMismatchCount:h,syncStageLabel:y,workspaceSyncPendingChanges:k,incomingCloudChanges:v,formattedLastSyncTime:A,formattedLastPullTime:b,formattedLastPushTime:w,syncLastError:R,activeReferenceMismatchSummaries:N,syncDiagnosticsSummary:j,syncEventRows:E,syncEventsListRef:S,workspaceSyncRepairQueued:L,workspaceSyncBusy:_,workspaceSyncCopied:T,coordinatorOwnershipMode:H,coordinatorOwnershipTransferBusy:q,coordinatorOwnershipTransferDisabled:z,onClose:M,onToggleWorkspaceSync:Z,onRepairSync:J,onCopyReport:ee,onTransferCoordinatorOwnership:te}){const[fe,Ie]=o.useState("all");o.useEffect(()=>{e&&Ie("all")},[e]);const $e=n==="attention",Ye=c==="enabling"?!0:c==="disabling"?!1:i,ye=c==="enabling"?"Turning on…":c==="disabling"?"Turning off…":null,ge=g?h>0?`Repair is reconciling cloud state, including ${h} reference mismatch${h===1?"":"es"}.`:"Repair is reconciling workspace state from the cloud.":$e&&R!=="None"?R:$e?m:"No active issue.",oe=!g&&$e&&R!=="None",ie=/\banother local taskforce process owns workspace synchronization\b/i.test(R),me=L_(R),W=i&&n!=="checking"&&!ie&&!me&&($e||_||g||L),V=o.useMemo(()=>fe==="issues"?E.filter(D=>D.tone==="error"):E,[fe,E]),B=a.jsxs("div",{className:Lt.syncStatusFooter,children:[a.jsxs("button",{className:P.cancelBtn,onClick:ee,title:"Copy the current sync manager report for support or AI troubleshooting.",children:[a.jsx(aC,{size:14}),a.jsx("span",{children:T?"Copied":"Copy Report"})]}),a.jsx("div",{className:Lt.syncStatusFooterPrimary,children:a.jsx("button",{className:P.cancelBtn,onClick:J,disabled:!W||g||L,title:g?"Repair is running now.":L?"Repair is queued and will start when the current sync finishes.":i?ie?"Repair is unavailable in this process. Use the Taskforce process that owns workspace synchronization.":me?"Sign out and sign back in before running Repair.":_?"Queue a repair to start automatically when the current sync finishes.":W?"Advanced recovery: clear the saved pull cursor and re-fetch cloud state from the beginning.":"Repair is available when sync needs attention.":"Turn on workspace sync before running Repair.",children:g?a.jsxs(a.Fragment,{children:[a.jsx(ea,{size:14,className:P.spinner}),"Repairing..."]}):L?"Repair Queued":"Repair"})})]});return a.jsx(Vo,{isOpen:e,onClose:M,title:"Sync Manager",size:"mdWide",theme:t,draggable:!0,className:Lt.syncStatusOverlay,footer:B,children:a.jsxs("div",{className:`${gr.form} ${Lt.syncStatusModal}`,children:[a.jsxs("div",{className:Lt.syncStatusTop,children:[a.jsxs("div",{className:Lt.syncStatusMetaHeader,children:[a.jsx("div",{className:Lt.syncStatusBadge,style:{borderColor:s.border,background:s.background,color:s.color},children:s.label}),a.jsxs("span",{className:Lt.syncStatusLabel,children:["Workspace: ",a.jsx("code",{children:r})]})]}),a.jsxs("label",{className:Lt.syncToggle,children:[ye?a.jsx("span",{className:Lt.syncToggleTransition,"aria-live":"polite",children:ye}):null,a.jsxs("span",{className:[Lt.syncToggleControl,Ye?Lt.syncToggleControlEnabled:Lt.syncToggleControlDisabled,l?Lt.syncToggleControlBusy:"",d?"":Lt.syncToggleControlBlocked].filter(Boolean).join(" "),children:[a.jsx("input",{className:Lt.syncToggleInput,type:"checkbox",role:"switch","aria-label":ye||"Enable Sync",checked:Ye,disabled:!d||l,onChange:D=>Z(D.target.checked)}),a.jsx("span",{className:`${Lt.syncToggleState} ${Lt.syncToggleStateOn}`,children:"On"}),a.jsx("span",{className:`${Lt.syncToggleState} ${Lt.syncToggleStateOff}`,children:"Off"}),a.jsx("span",{className:Lt.syncToggleThumb})]})]})]}),a.jsxs("section",{className:Lt.syncStatusOverview,"aria-label":"Sync status",children:[a.jsxs("div",{className:Lt.syncStatusOverviewRow,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Health"}),a.jsx("span",{className:Lt.syncStatusSummaryValue,children:m})]}),a.jsxs("div",{className:Lt.syncStatusOverviewRow,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Next step"}),a.jsx("span",{className:Lt.syncStatusSummaryValue,children:f})]}),a.jsxs("div",{className:[Lt.syncStatusOverviewRow,Lt.syncStatusIssueRow,oe?Lt.syncStatusIssueRowError:""].filter(Boolean).join(" "),children:[a.jsxs("span",{className:Lt.syncStatusLabel,children:[oe?a.jsx(Od,{size:12}):null,"Current issue"]}),a.jsx("span",{className:oe?Lt.syncStatusValueError:Lt.syncStatusValueMuted,children:ge})]})]}),a.jsxs("div",{className:Lt.syncStatusKeyMetrics,children:[a.jsxs("div",{className:Lt.syncStatusCompactItem,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Outgoing local changes"}),a.jsx("span",{className:Lt.syncStatusValue,children:k})]}),a.jsxs("div",{className:Lt.syncStatusCompactItem,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Incoming cloud changes"}),a.jsx("span",{className:Lt.syncStatusValue,children:v})]}),a.jsxs("div",{className:Lt.syncStatusCompactItem,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Last cloud check"}),a.jsx("span",{className:Lt.syncStatusValue,children:b})]})]}),a.jsxs("details",{className:Lt.syncStatusAdvanced,children:[a.jsxs("summary",{children:[a.jsx("span",{children:"Advanced diagnostics"}),a.jsx(Fd,{size:16,"aria-hidden":"true"})]}),a.jsxs("div",{className:Lt.syncStatusAdvancedContent,children:[a.jsxs("div",{className:Lt.syncStatusCompactGrid,children:[a.jsxs("div",{className:Lt.syncStatusCompactItem,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Stage"}),a.jsx("span",{className:Lt.syncStatusValue,children:y})]}),a.jsxs("div",{className:Lt.syncStatusCompactItem,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Last upload"}),a.jsx("span",{className:Lt.syncStatusValue,children:w})]}),a.jsxs("div",{className:Lt.syncStatusCompactItem,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Last successful transfer"}),a.jsx("span",{className:Lt.syncStatusValue,children:A})]})]}),a.jsx("div",{className:Lt.syncStatusDiagnosticsList,children:j.map(D=>a.jsxs("div",{className:Lt.syncStatusDiagnosticRow,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:D.label}),a.jsx("span",{className:Lt.syncStatusValue,children:D.value})]},D.label))}),H?a.jsxs("div",{className:Lt.syncStatusOwnershipControl,children:[a.jsxs("div",{children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Sync coordinator"}),a.jsx("span",{className:Lt.syncStatusValue,children:H==="server"?"Local server owns background synchronization.":"This browser owns background synchronization."})]}),a.jsx("button",{className:P.cancelBtn,type:"button",onClick:te,disabled:q||z,title:q?"Sync ownership is transferring.":z?"Finish active sync or recovery work before transferring ownership.":H==="server"?"Return background synchronization to this browser.":"Move background synchronization to the local Taskforce server.",children:q?a.jsxs(a.Fragment,{children:[a.jsx(ea,{size:14,className:P.spinner}),"Transferring..."]}):H==="server"?"Use browser sync":"Use server sync"})]}):null,h>0&&a.jsxs("div",{className:Lt.syncStatusMismatchPanel,children:[a.jsxs("div",{className:Lt.syncStatusPanelHeader,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Identifier integrity"}),a.jsxs("span",{className:Lt.syncStatusPanelMeta,children:[h," mismatch",h===1?"":"es"," detected"]})]}),a.jsx("span",{className:Lt.syncStatusValue,children:"Cloud-backed sync preserved the incoming cloud reference and renumbered the displaced local item."}),N.map(D=>a.jsxs("div",{className:Lt.syncStatusMismatchItem,children:[a.jsx("span",{className:Lt.syncStatusValue,children:D.pathLabel}),D.refsLabel?a.jsx("span",{className:Lt.syncStatusPanelMeta,children:D.refsLabel}):null]},D.key))]})]})]}),a.jsxs("section",{className:Lt.syncStatusEventsPanel,"aria-label":"Recent sync events",children:[a.jsxs("div",{className:Lt.syncStatusPanelHeader,children:[a.jsx("span",{className:Lt.syncStatusLabel,children:"Recent events"}),a.jsxs("div",{className:Lt.syncStatusEventFilters,"aria-label":"Filter recent events",children:[a.jsx("button",{type:"button",className:fe==="all"?Lt.syncStatusEventFilterActive:"","aria-pressed":fe==="all",onClick:()=>Ie("all"),children:"All"}),a.jsx("button",{type:"button",className:fe==="issues"?Lt.syncStatusEventFilterActive:"","aria-pressed":fe==="issues",onClick:()=>Ie("issues"),children:"Issues"})]})]}),a.jsx("div",{ref:S,className:Lt.syncStatusEventsList,children:V.length>0?V.map(D=>a.jsx("div",{className:[Lt.syncStatusEventItem,D.tone==="error"?Lt.syncStatusEventItemError:"",D.tone==="muted"?Lt.syncStatusEventItemMuted:""].filter(Boolean).join(" "),children:a.jsx("span",{className:Lt.syncStatusEventLine,children:D.text})},D.key)):a.jsx("div",{className:`${Lt.syncStatusEventItem} ${Lt.syncStatusEventItemMuted}`,children:a.jsx("span",{className:Lt.syncStatusEventLine,children:"No issues in recent events."})})})]})]})})}function eJ({isOpen:e,theme:t,teamPlanMode:r,teamMgmtError:n,teamManagementTab:s,teamUsersLoading:i,teamUsers:l,teamActionBusyUserId:c,teamInviteFeedback:d,teamInviteEmail:m,teamInviteRole:f,teamInvitePermissionMode:g,teamInviteBusy:h,pendingInvites:y,teamAuditLoading:k,teamAuditEvents:v,teamAuditPage:A,teamAuditPages:b,teamAuditHasMore:w,onClose:R,onOpenMembersTab:N,onOpenInvitesTab:j,onOpenAuditTab:E,onMemberRoleChange:S,onMemberPermissionChange:L,onToggleMemberDisabled:_,onRevokeInvite:T,onRemoveMember:H,onInviteEmailChange:q,onInviteRoleChange:z,onInvitePermissionModeChange:M,onSubmitInvite:Z,onLoadAuditPrevious:J,onLoadAuditNext:ee}){return a.jsx(Vo,{isOpen:e,onClose:R,title:"Team Management",size:"md",theme:t,draggable:!0,children:a.jsxs("div",{className:`${gr.form} ${Vr.modalBody}`,children:[r==="personal"&&a.jsx("p",{className:Qe.loginError,children:"Team management is only available in TEAM accounts."}),n&&a.jsx("p",{className:Qe.loginError,children:n}),a.jsxs("div",{className:`${P.settingsTabs} tf-scrollbar tf-scrollbar--track-transparent tf-scrollbar--compact`,children:[a.jsx("button",{className:`${P.settingsTabBtn} ${s==="members"?P.settingsTabBtnActive:""}`,onClick:N,children:"Members"}),a.jsx("button",{className:`${P.settingsTabBtn} ${s==="invites"?P.settingsTabBtnActive:""}`,onClick:j,children:"Invites"}),a.jsx("button",{className:`${P.settingsTabBtn} ${s==="audit"?P.settingsTabBtnActive:""}`,onClick:E,children:"Audit Log"})]}),s==="members"&&a.jsxs("div",{className:hr.accountHubCard,children:[i&&a.jsx("p",{className:Vr.mutedText,children:"Loading members..."}),!i&&l.length===0&&a.jsx("p",{className:Vr.mutedText,children:"No users found."}),!i&&l.map(te=>a.jsxs("div",{className:Vr.memberRow,children:[a.jsx("div",{className:Vr.memberTitle,children:te.displayName||te.email}),a.jsxs("div",{className:hr.accountMenuMeta,children:[te.email," · ",te.status,te.disabled?" · deactivated":""]}),a.jsxs("div",{className:Vr.memberActions,children:[a.jsxs("select",{className:`${P.input} ${Vr.selectRole}`,value:te.role,onChange:fe=>S(te.userId,fe.target.value),disabled:c===te.userId,children:[a.jsx("option",{value:"owner",children:"Owner"}),a.jsx("option",{value:"admin",children:"Admin"}),a.jsx("option",{value:"member",children:"Member"})]}),te.role==="member"&&a.jsxs("select",{className:`${P.input} ${Vr.selectPermission}`,value:te.permissionMode,onChange:fe=>L(te.userId,fe.target.value),disabled:c===te.userId,children:[a.jsx("option",{value:"read-write",children:"Read / Write"}),a.jsx("option",{value:"read-only",children:"Read Only"})]}),a.jsx("button",{className:P.cancelBtn,disabled:c===te.userId,onClick:()=>_(te.userId,!te.disabled),children:te.disabled?"Reactivate":"Deactivate"}),te.status==="invited"&&a.jsx("button",{className:P.cancelBtn,disabled:c===te.userId,onClick:()=>T(te.userId),children:"Revoke Invite"}),a.jsx("button",{className:P.cancelBtn,disabled:c===te.userId,onClick:()=>H(te.userId),children:"Remove"})]})]},te.userId))]}),s==="invites"&&a.jsxs("div",{className:hr.accountHubCard,children:[d&&a.jsx("p",{className:Vr.sectionText,children:d}),a.jsxs("div",{className:P.pathInputGroup,children:[a.jsx("label",{className:`${P.label} ${Vr.labelFixed}`,children:"Email"}),a.jsx("input",{className:P.input,value:m,onChange:te=>q(te.target.value),placeholder:"name@example.com"})]}),a.jsxs("div",{className:P.pathInputGroup,children:[a.jsx("label",{className:`${P.label} ${Vr.labelFixed}`,children:"Role"}),a.jsxs("select",{className:`${P.input} ${Vr.selectRole}`,value:f,onChange:te=>z(te.target.value==="admin"?"admin":"member"),children:[a.jsx("option",{value:"member",children:"Member"}),a.jsx("option",{value:"admin",children:"Admin"})]}),f==="member"&&a.jsxs("select",{className:`${P.input} ${Vr.selectPermission}`,value:g,onChange:te=>M(te.target.value==="read-only"?"read-only":"read-write"),children:[a.jsx("option",{value:"read-write",children:"Read / Write"}),a.jsx("option",{value:"read-only",children:"Read Only"})]}),a.jsx("button",{className:P.submitBtn,disabled:h||!m.trim()||r!=="team",onClick:Z,children:h?"Sending...":"Send Invite"})]}),a.jsxs("div",{className:Vr.inviteRow,children:[a.jsx("div",{className:Vr.listHeading,children:"Pending Invites"}),y.length===0&&a.jsx("p",{className:Vr.mutedText,children:"No pending invites."}),y.map(te=>a.jsxs("div",{className:Vr.memberRow,children:[a.jsx("div",{className:Vr.memberTitle,children:te.displayName||te.email}),a.jsxs("div",{className:hr.accountMenuMeta,children:[te.email," · ",te.role]})]},te.userId))]})]}),s==="audit"&&a.jsxs("div",{className:hr.accountHubCard,children:[k&&a.jsx("p",{className:Vr.mutedText,children:"Loading audit entries..."}),!k&&v.length===0&&a.jsx("p",{className:Vr.mutedText,children:"No audit events for this workspace."}),!k&&a.jsx("div",{className:Vr.auditList,children:v.map(te=>a.jsxs("div",{className:Vr.memberRow,children:[a.jsx("div",{className:hr.accountMenuMeta,children:new Date(te.createdAt).toLocaleString()}),a.jsx("div",{className:Vr.memberTitle,children:te.action}),a.jsxs("div",{className:hr.accountMenuMeta,children:[te.actorUserId," (",te.actorRole,")"]})]},te.id))}),a.jsxs("div",{className:Vr.auditPager,children:[a.jsx("button",{className:P.cancelBtn,disabled:k||A===0,onClick:J,children:"Previous"}),a.jsxs("span",{className:hr.accountMenuMeta,children:["Page ",A+1," of ",b]}),a.jsx("button",{className:P.cancelBtn,disabled:k||!w||A+1>=b,onClick:ee,children:"Next"})]})]}),a.jsx("div",{className:`${gr.formActions} ${Vr.modalActionsEnd}`,children:a.jsx("button",{className:P.cancelBtn,onClick:R,children:"Close"})})]})})}const tJ="_title_j8q8h_1",rJ="_message_j8q8h_8",nJ="_actions_j8q8h_14",ov={title:tJ,message:rJ,actions:nJ};function aJ({isOpen:e,onKeepEditing:t,onDiscard:r,title:n="Unsaved Changes",message:s="Discard your unsaved workflow changes?",theme:i}){return a.jsx(Vo,{isOpen:e,onClose:t,title:a.jsxs("span",{className:ov.title,children:[a.jsx(Od,{size:18})," ",n]}),size:"sm",closeOnOverlayClick:!1,theme:i,footer:a.jsxs("div",{className:ov.actions,children:[a.jsx("button",{type:"button",className:"tf-button-secondary",onClick:t,"data-modal-initial-focus":!0,children:"Keep Editing"}),a.jsx("button",{type:"button",className:"tf-button-destructive",onClick:r,children:"Discard"})]}),children:a.jsx("p",{className:ov.message,children:s})})}const O_=e=>{const t=e.status||"task";return t==="done"||t==="cancelled"?"completed":t},sJ=(e,t,r)=>{if(O_(e)===t)return null;const s={status:t};return t==="task"||t==="on-hold"?(s.inProgress=!1,s.readyForReview=!1,s.completed=!1,s.cancelled=!1,s.completedAt=null,s):t==="in-progress"?(s.inProgress=!0,s.readyForReview=!1,s.completed=!1,s.cancelled=!1,s.completedAt=null,s):t==="review"?(s.inProgress=!1,s.readyForReview=!0,s.completed=!1,s.cancelled=!1,s.completedAt=null,s):t==="done"||t==="completed"?(s.status="done",s.inProgress=!1,s.readyForReview=!1,s.completed=!0,s.cancelled=!1,s.completedAt=r,s):(t==="cancelled"&&(s.status="cancelled"),s)},oJ=({targetTasks:e,overTaskId:t,isBelowOverItem:r})=>{if(!t)return e.length;const n=e.findIndex(s=>s.id===t);return n<0?e.length:n+(r?1:0)},B_=(e,t=new Map)=>{const r=new Map(t);return e.forEach((n,s)=>{r.set(n.id,{...r.get(n.id)||{},orderInDay:s})}),r},Qw=e=>Array.from(e.entries()).map(([t,r])=>({taskId:t,updates:r})),W_=({sourceColumnId:e,targetColumnId:t,sourceTasks:r,updates:n})=>!e||e===t?n:B_(r,n),iJ=({activeTask:e,sourceColumnId:t,targetTasks:r,sourceTasks:n,insertAt:s})=>{const i=[...r];i.splice(s,0,e);let l=new Map;return i.forEach((c,d)=>{if(c.id===e.id){l.set(c.id,{...l.get(c.id)||{},...e.scheduledDate?{scheduledDate:null,scheduledWeekKey:null}:{},orderInDay:d});return}l.set(c.id,{...l.get(c.id)||{},orderInDay:d})}),l=W_({sourceColumnId:t,targetColumnId:"backlog",sourceTasks:n,updates:l}),Qw(l)},cJ=({activeTask:e,targetTasks:t,insertAt:r})=>{const n=[...t];return n.splice(r,0,e),Qw(B_(n))},lJ=({activeTask:e,sourceColumnId:t,targetColumnId:r,targetTasks:n,sourceTasks:s,insertAt:i,scheduledDate:l,scheduledWeekKey:c})=>{const d=[...n];d.splice(i,0,e);let m=new Map;return d.forEach((f,g)=>{if(f.id===e.id){m.set(f.id,{...m.get(f.id)||{},scheduledDate:l,scheduledWeekKey:c,orderInDay:g});return}m.set(f.id,{...m.get(f.id)||{},orderInDay:g})}),m=W_({sourceColumnId:t,targetColumnId:r,sourceTasks:s,updates:m}),Qw(m)},dJ=({activeTask:e,sourceColumnId:t,targetColumnId:r,targetTasks:n,sourceTasks:s,overTaskId:i,isBelowOverItem:l,scheduleDates:c,parseToIsoWeekKey:d,todayDate:m})=>{const f=["mon","tue","wed","thu","fri","sat","sun"];if(!(r==="backlog"||r==="expired"||f.includes(r)))return null;const h=oJ({targetTasks:n,overTaskId:i,isBelowOverItem:l});if(r==="expired")return t!=="expired"?null:{kind:"updates",updates:cJ({activeTask:e,targetTasks:n,insertAt:h})};if(r==="backlog")return{kind:"updates",updates:iJ({activeTask:e,sourceColumnId:t,targetTasks:n,sourceTasks:s,insertAt:h})};if(!f.includes(r))return null;const y=c[r];return y?!(e.status==="done"||e.status==="cancelled")&&y<m?{kind:"blocked",reason:"Only completed work can be scheduled in the past."}:{kind:"updates",updates:lJ({activeTask:e,sourceColumnId:t,targetColumnId:r,targetTasks:n,sourceTasks:s,insertAt:h,scheduledDate:y,scheduledWeekKey:d(y)}),selectedDate:y}:null},Ag="expired::",uJ=new Map,fJ=new Set,mJ=250,pJ=24,sg=180,wA=8,bA=600,SA=720;function hJ({tasks:e,enabled:t,scrollRef:r,initialScrollTop:n,onScrollTopChange:s}){const i=o.useRef(new Map),[l,c]=o.useState(0),[d,m]=o.useState(()=>({scrollTop:n,height:SA})),f=o.useCallback((y,k)=>{if(!Number.isFinite(k)||k<=0)return;const v=Math.ceil(k),A=i.current.get(y)??sg;if(A===v)return;const b=e.findIndex(E=>E.id===y);let w=0;for(let E=0;E<b;E+=1)w+=i.current.get(e[E].id)??sg,w+=wA;i.current.set(y,v);const R=r.current,N=v-A,j=w+A;if(R&&b>=0&&j<=R.scrollTop&&N!==0){const E=Math.max(0,R.scrollTop+N);R.scrollTop=E,m(S=>({...S,scrollTop:E})),s(E)}c(E=>E+1)},[s,r,e]),g=o.useMemo(()=>{let y=0;return{rows:e.map((v,A)=>{const b={task:v,index:A,top:y},w=i.current.get(v.id)??sg;return y+=w,A<e.length-1&&(y+=wA),b}),totalHeight:y}},[l,e]);o.useEffect(()=>{const y=r.current;if(!y)return;n>0&&y.scrollTop!==n&&(y.scrollTop=n);const k=(w=!1)=>{const R=Math.max(0,y.scrollTop),N=y.clientHeight||SA,j=()=>m(E=>E.scrollTop===R&&E.height===N?E:{scrollTop:R,height:N});w?o.startTransition(j):j(),s(R)},v=()=>k(!0),A=()=>k(!1);A(),y.addEventListener("scroll",v,{passive:!0});const b=typeof ResizeObserver>"u"?null:new ResizeObserver(A);return b?.observe(y),window.addEventListener("resize",A),()=>{y.removeEventListener("scroll",v),b?.disconnect(),window.removeEventListener("resize",A)}},[n,s,r]);const h=o.useMemo(()=>{if(!t)return g.rows;const y=Math.max(0,d.scrollTop-bA),k=d.scrollTop+d.height+bA;return g.rows.filter(v=>{const A=i.current.get(v.task.id)??sg;return v.top+A>=y&&v.top<=k})},[t,g.rows,l,d.height,d.scrollTop]);return{measureRow:f,rows:h,totalHeight:g.totalHeight}}function gJ({tasks:e,columns:t,groupBy:r,searchQuery:n,copiedId:s,taxonomies:i,types:l,priorities:c,assigneeOptions:d=[],onUpdateTask:m,onTaskClick:f,taskReferences:g,onCopyId:h,onToggleInProgress:y,onToggleReview:k,onToggleComplete:v,onToggleCancel:A,onSetStatus:b,onArchiveTask:w,onUnarchive:R,onDelete:N,allTasks:j=[],onAddTaskToColumn:E,emptyColumnMode:S="show",filterCategories:L=[],filterTypes:_=[],filterPriorities:T=[],filterStatus:H=[],filterAssignees:q=[],filtersReady:z=!0,scheduleFilteredTaskIds:M,categories:Z=[],compressed:J=!1,readOnlyMode:ee=null,recentlyChangedTaskIds:te=[],scheduleDates:fe,onScheduleDaySelected:Ie,persistedScrollLeft:$e,onScrollLeftChange:Ye,sortBy:ye="created",sortOrder:ge="desc",planningDropTargets:oe=null,onAssignTaskToWorkstream:ie,onAssignWorkstreamToInitiative:me,showTaskCardStatusLabel:W=!1,showTaskCardDescription:V=!0,showTaskCardAttachments:B=!0,showTaskCardChecklistProgress:D=!0,showTaskCardLatestActivity:be=!0,tintTaskCardActivityBackground:Se=!1,workstreams:K=[],initiatives:Y=[],workspaceId:G=null,deletedTaskRecordByTaskId:ae=uJ,selectedDeletedRecordIds:_e=fJ,onDeletedSelectionChange:Oe}){const[Fe,st]=o.useState(null),[ft,xe]=o.useState(!1),[ke,ve]=o.useState(!1),Ve=o.useMemo(()=>new Set(te),[te]),Ne=o.useMemo(()=>new Map(K.map(De=>[De.id,De])),[K]),de=o.useMemo(()=>new Map(Y.map(De=>[De.id,De])),[Y]),x=o.useCallback(De=>{const nt=De.workstreamId&&Ne.get(De.workstreamId)||null,pt=nt?.initiativeId&&de.get(nt.initiativeId)||null;return{taskWorkstream:nt,taskInitiative:pt}},[de,Ne]),le=o.useMemo(()=>new Set(e.map(De=>De.id)),[e]),Re=o.useCallback(De=>De.startsWith(Ag)?De.slice(Ag.length):De,[]),Je=o.useCallback(De=>le.has(Re(De)),[le,Re]),X=o.useMemo(()=>new Set(M||[]),[M]),Ze=o.useRef(null),re=o.useRef(new Map),Ee=o.useCallback((De,nt)=>{re.current.set(De,nt)},[]),je=o.useCallback(De=>{const nt=De?.data?.current||{},pt=String(De?.id||"");let ut=String(nt.taskId||""),Tt=String(nt.workstreamId||"");!ut&&pt&&Je(pt)&&(ut=Re(pt)),!Tt&&pt.startsWith("planning-workstream:")&&(Tt=pt.slice(20));let Xt=String(nt.type||"");return Xt||(ut?Xt="task-card":Tt&&(Xt="planning-workstream")),{activeId:pt,type:Xt,taskId:ut,workstreamId:Tt}},[Re,Je]),Pe=lw(ep(dw,{activationConstraint:{distance:10}}),ep(dC,{coordinateGetter:lC})),Ce=O_,Te=o.useMemo(()=>{const De=new Date,nt=De.getFullYear(),pt=String(De.getMonth()+1).padStart(2,"0"),ut=String(De.getDate()).padStart(2,"0");return`${nt}-${pt}-${ut}`},[]),pe=o.useMemo(()=>{const De=ut=>{const Tt=ut.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!Tt)return null;const Xt=new Date(Date.UTC(Number(Tt[1]),Number(Tt[2])-1,Number(Tt[3]))),Nt=Xt.getUTCDay()||7;Xt.setUTCDate(Xt.getUTCDate()+4-Nt);const Qt=new Date(Date.UTC(Xt.getUTCFullYear(),0,1)),St=Math.ceil(((Xt.getTime()-Qt.getTime())/864e5+1)/7);return`${Xt.getUTCFullYear()}-W${String(St).padStart(2,"0")}`};return{dates:{...(()=>{const ut=new Date,Tt=ut.getDay(),Xt=Tt===0?-6:1-Tt,Nt=new Date(ut);Nt.setDate(ut.getDate()+Xt);const Qt=Ft=>{const ir=Ft.getFullYear(),sr=String(Ft.getMonth()+1).padStart(2,"0"),ot=String(Ft.getDate()).padStart(2,"0");return`${ir}-${sr}-${ot}`},St={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return["mon","tue","wed","thu","fri","sat","sun"].forEach((Ft,ir)=>{const sr=new Date(Nt);sr.setDate(Nt.getDate()+ir),St[Ft]=Qt(sr)}),St})(),...fe||{}},parseToIsoWeekKey:De}},[fe]),Me=De=>{const nt=De.scheduledDate||null;return nt?new Map([[pe.dates.mon,"mon"],[pe.dates.tue,"tue"],[pe.dates.wed,"wed"],[pe.dates.thu,"thu"],[pe.dates.fri,"fri"],[pe.dates.sat,"sat"],[pe.dates.sun,"sun"]]).get(nt)||"__offweek":"backlog"},et=o.useMemo(()=>{if(r==="schedule")return[];const De=new Set(t.map(Tt=>String(Tt.value))),nt=new Set(t.map(Tt=>Tt.label)),pt=[],ut=Tt=>{const Xt=r==="status"?Ce(Tt):Tt[r],Nt=String(Xt??"");if(!Nt||De.has(Nt)||nt.has(Nt))return null;if(r==="category"){const Qt=Z.find(St=>St.value===Nt||St.label===Nt);return{value:Nt,label:Qt?.label||Nt,icon:Qt?.icon||"Folder",color:Qt?.color}}if(r==="type"){const Qt=l?.find(St=>St.value===Nt||St.label===Nt);return{value:Nt,label:Qt?.label||Nt,icon:Qt?.icon||"CheckSquare",color:Qt?.color}}if(r==="priority"){const Qt=c?.find(St=>Number(St.value)===Number(Nt));return{value:Number.isFinite(Number(Nt))?Number(Nt):Nt,label:Qt?.label||Nt,icon:Qt?.icon||"Flag",color:Qt?.color}}if(r==="complexity")return{value:Number.isFinite(Number(Nt))?Number(Nt):Nt,label:Nt,icon:"Gauge"};if(r==="status")return{value:Nt,label:Nt,icon:"Circle"};if(r==="assignee"){const Qt=d.find(St=>St.value===Nt);return{value:Nt,label:Qt?.label||Nt,icon:Qt?.icon==="HelpCircle"?"Circle":Qt?.icon,color:Qt?.color}}return{value:Nt,label:Nt}};for(const Tt of e){const Xt=ut(Tt);Xt&&(pt.push(Xt),De.add(String(Xt.value)),nt.add(Xt.label))}return pt},[d,Z,r,t,c,e,l]),Ue=o.useMemo(()=>[...t,...et],[et,t]),yt=o.useMemo(()=>{const De=new Map;for(const nt of Ue)De.set(String(nt.value),nt),De.has(nt.label)||De.set(nt.label,nt);return De},[Ue]),Le=o.useMemo(()=>{const De={};return Ue.forEach(pt=>{De[String(pt.value)]=0}),(j.length>0?j:e).forEach(pt=>{let ut="";if(r==="status")ut=Ce(pt);else if(r==="schedule")ut=Me(pt);else{const Xt=pt[r];ut=String(Xt??"")}const Tt=yt.get(ut);if(Tt&&De[String(Tt.value)]++,r==="schedule"){const Xt=pt.status==="done"||pt.status==="cancelled";pt.scheduledDate&&!Xt&&pt.scheduledDate<Te&&yt.has("expired")&&(De.expired=(De.expired||0)+1)}}),De},[j,e,Ue,r,yt,Te]),mt=o.useMemo(()=>{const De={};if(Ue.forEach(nt=>{De[String(nt.value)]=[]}),e.forEach(nt=>{let pt="";if(r==="status")pt=Ce(nt);else if(r==="schedule")pt=Me(nt);else{const Tt=nt[r];pt=String(Tt??"")}const ut=yt.get(pt);if(ut){if(r==="schedule"&&String(ut.value)==="backlog"&&!X.has(nt.id))return;De[String(ut.value)].push(nt)}if(r==="schedule"){const Tt=nt.status==="done"||nt.status==="cancelled";nt.scheduledDate&&!Tt&&nt.scheduledDate<Te&&De.expired&&De.expired.push(nt)}}),r==="schedule"){const nt=(ut,Tt)=>{const Xt=typeof ut.orderInDay=="number"?ut.orderInDay:Number.MAX_SAFE_INTEGER,Nt=typeof Tt.orderInDay=="number"?Tt.orderInDay:Number.MAX_SAFE_INTEGER;return Xt!==Nt?Xt-Nt:String(ut.createdAt||"").localeCompare(String(Tt.createdAt||""))},pt=(ut,Tt)=>zg(ut,Tt,ye,ge,i);Object.keys(De).forEach(ut=>{if(ut==="backlog"||ut==="expired"){De[ut].sort(pt);return}De[ut].sort(nt)})}return De},[e,Ue,r,yt,X,Te,ye,ge,i]),kt=Fe?Re(Fe):null,He=kt?e.find(De=>De.id===kt):null,rt=e.length>mJ&&r!=="schedule"&&!ee,It=o.useRef(null),Xe=o.useRef(null),wt=o.useRef({pointerId:null,startX:0,startY:0,startScrollLeft:0,didPan:!1}),at=o.useRef(-1),U=(De,nt)=>z?r==="category"?!L.includes(String(De)):r==="type"?!_.includes(String(De)):r==="priority"?!T.some(pt=>Number(pt)===Number(De)):r==="status"?String(De)==="completed"?!H.includes("done")&&!H.includes("cancelled"):!H.includes(String(De)):r==="assignee"?!q.includes(String(De)):!1:!1,he=o.useMemo(()=>{let ut=0;return Ue.forEach((Tt,Xt)=>{const Nt=mt[String(Tt.value)]||[],Qt=U(Tt.value,Tt.label),St=r!=="schedule"&&S==="hide"&&Nt.length===0;if(Qt||St)return;const Kt=S==="collapse"&&Nt.length===0;ut+=Kt?72:320,ut+=4}),ut},[Ue,mt,S,r,L,_,T,H,q,z]),Ke=o.useCallback(De=>{if(!Ye)return;const nt=Math.max(0,Math.round(De));nt!==at.current&&(at.current=nt,Ye(nt))},[Ye]);o.useEffect(()=>{const De=It.current,nt=Xe.current;if(!De||!nt)return;let pt=!1,ut=!1;const Tt=()=>{!De||ut||(pt=!0,De.scrollLeft=nt.scrollLeft,Ke(nt.scrollLeft),setTimeout(()=>pt=!1,0))},Xt=()=>{!nt||pt||(ut=!0,nt.scrollLeft=De.scrollLeft,Ke(De.scrollLeft),setTimeout(()=>ut=!1,0))};return nt.addEventListener("scroll",Tt),De.addEventListener("scroll",Xt),()=>{nt.removeEventListener("scroll",Tt),De.removeEventListener("scroll",Xt)}},[Ke]);const Et=o.useRef(!1);o.useEffect(()=>{if(Et.current)return;if(typeof $e!="number"||!Number.isFinite($e)){Et.current=!0;return}const De=It.current,nt=Xe.current;if(!De||!nt)return;const pt=Math.max(0,De.scrollWidth-De.clientWidth),ut=Math.min(Math.max(0,$e),pt);De.scrollLeft=ut,nt.scrollLeft=ut,Et.current=!0},[$e,he]),o.useEffect(()=>{const De=()=>{const nt=It.current;if(!nt){ve(!1);return}ve(nt.scrollWidth>nt.clientWidth+4)};return De(),window.addEventListener("resize",De),()=>{window.removeEventListener("resize",De)}},[he,Ue.length,mt]),o.useEffect(()=>{const De=pt=>{const ut=wt.current;if(ut.pointerId===null||ut.pointerId!==pt.pointerId)return;const Tt=pt.clientX-ut.startX,Xt=pt.clientY-ut.startY;if(!ut.didPan){if(Math.abs(Tt)<7||Math.abs(Tt)<Math.abs(Xt))return;ut.didPan=!0,xe(!0),document.body.style.userSelect="none"}const Nt=ut.startScrollLeft-Tt;It.current&&(It.current.scrollLeft=Nt),Xe.current&&(Xe.current.scrollLeft=Nt),pt.preventDefault()},nt=()=>{const pt=wt.current;pt.pointerId!==null&&(pt.pointerId=null,pt.didPan=!1,ft&&(xe(!1),document.body.style.userSelect=""))};return window.addEventListener("pointermove",De),window.addEventListener("pointerup",nt),window.addEventListener("pointercancel",nt),()=>{window.removeEventListener("pointermove",De),window.removeEventListener("pointerup",nt),window.removeEventListener("pointercancel",nt),document.body.style.userSelect=""}},[ft]);const vt=De=>{!ke||De.target?.closest('button, a, input, select, textarea, [role="button"], [data-no-header-pan="true"]')||(wt.current.pointerId=De.pointerId,wt.current.startX=De.clientX,wt.current.startY=De.clientY,wt.current.startScrollLeft=It.current?.scrollLeft||0,wt.current.didPan=!1)},Bt=De=>{st(De.active.id)},dr=De=>{const nt=je(De.active),pt=String(De.over?.data?.current?.type||"");nt.type==="task-card"&&pt.startsWith("planning-")?Ze.current=`${String(De.over?.id||"")}:${pt}`:Ze.current&&(Ze.current=null)},er=De=>{const{active:nt,over:pt}=De;Ze.current=null,st(null);const ut=je(nt),Tt=ut.type,Xt=String(pt?.data?.current?.type||""),Nt=ut.taskId,Qt=ut.workstreamId,St=String(pt?.data?.current?.workstreamId||""),Kt=String(pt?.data?.current?.initiativeId||"");if(Tt==="task-card"&&Xt==="planning-workstream-target"&&Nt&&St){ie?.(Nt,St);return}if(Tt==="planning-workstream"){if(Xt==="planning-initiative-target"&&Qt&&Kt){me?.(Qt,Kt);return}return}const Ft=String(nt.id),ir=pt?String(pt.id):null,sr=Re(Ft);ir&&Re(ir);const ot=e.find(u=>u.id===sr);if(!ot||!ir)return;const or=cr(Ft),ur=String(nt?.data?.current?.sortable?.containerId||"")||or,wr=String(pt?.data?.current?.sortable?.containerId||"")||cr(ir);if(!wr)return;const lr=yt.get(wr)||Ue.find(u=>String(u.value)===wr||u.label===wr);if(lr){if(r==="schedule"){const gt=String(lr.value),Xr=ir&&Je(ir)?Re(ir):null,Ir=pt?.rect,Ur=nt.rect.current.translated||nt.rect.current.initial,$r=!!(Ir&&Ur&&Ur.top+Ur.height/2>Ir.top+Ir.height/2),Tn=(mt[gt]||[]).filter(Ge=>Ge.id!==sr),an=(mt[String(ur)]||[]).filter(Ge=>Ge.id!==sr),Qr=dJ({activeTask:ot,sourceColumnId:ur,targetColumnId:gt,targetTasks:Tn,sourceTasks:an,overTaskId:Xr,isBelowOverItem:$r,scheduleDates:pe.dates,parseToIsoWeekKey:pe.parseToIsoWeekKey,todayDate:Te});if(!Qr)return;if(Qr.kind==="blocked"){window.alert(Qr.reason);return}Qr.updates.forEach(({taskId:Ge,updates:Gr})=>m(Ge,Gr)),Qr.selectedDate&&Ie?.(Qr.selectedDate);return}let u=lr.value;if(r==="status"){const gt=String(u),Xr=sJ(ot,gt,new Date().toISOString());Xr&&m(ot.id,Xr);return}(r==="priority"||r==="complexity")&&(u=Number(u));const bt=ot[r];if(String(bt??"")!==String(u??"")){const gt={[r]:u};m(ot.id,gt)}}},cr=De=>{if(yt.has(De)){const ut=yt.get(De);return ut?String(ut.value):De}if(r==="schedule"&&De.startsWith(Ag))return"expired";const nt=Re(De),pt=e.find(ut=>ut.id===nt);if(pt){let ut="";r==="status"?ut=Ce(pt):r==="schedule"?ut=Me(pt):ut=String(pt[r]??"");const Tt=yt.get(ut);return Tt?String(Tt.value):null}return null},Ot={sideEffects:ox({styles:{active:{opacity:"0"}}})},fr=De=>{try{const nt=sx(De);if(nt.length>0){const pt=nt.find(St=>String(St.id).startsWith("planning-"));if(pt)return[pt];const ut=De.pointerCoordinates;if(!ut)return[nt[0]];const Tt=nt.filter(St=>{const Kt=String(St.id);return Je(Kt)&&Kt!==Fe});if(Tt.length===0){const Kt=nt.filter(sr=>{const ot=String(sr.id);return!Je(ot)}).find(sr=>!!cr(String(sr.id)))||null,Ft=Kt?cr(String(Kt.id)):null,ir=(De.droppableContainers||[]).filter(sr=>{const ot=String(sr.id);return!Je(ot)||ot===Fe?!1:Ft?cr(ot)===Ft:!0});if(ir.length>0){const sr=Ob({...De,droppableContainers:ir});if(sr.length>0)return[sr[0]]}return Kt?[Kt]:[nt[0]]}const Xt=Tt;let Nt=Xt[0],Qt=Number.POSITIVE_INFINITY;for(const St of Xt){const Kt=De.droppableRects?.get(St.id);if(!Kt)continue;const Ft=Kt.left+Kt.width/2,ir=Kt.top+Kt.height/2,sr=ut.x-Ft,ot=ut.y-ir,or=sr*sr+ot*ot;or<Qt&&(Qt=or,Nt=St)}return[Nt]}return Ob(De)}catch(nt){return console.error("[TaskKanban] collision detection error",nt),[]}},Ar=o.useCallback((De,nt)=>m(De.id,{assignee:nt}),[m]),Lr=o.useCallback((De,nt)=>ie?ie(De.id,nt):m(De.id,{workstreamId:nt}),[ie,m]),Wr=o.useMemo(()=>({searchQuery:n,copiedId:s,taxonomies:i,types:l,priorities:c,workspaceId:G,assigneeOptions:d,workstreams:K,onAssigneeChange:Ar,onWorkstreamChange:Lr,onCopyId:h,onToggleInProgress:y,onToggleReview:k,onToggleComplete:v,onToggleCancel:A,onSetStatus:b,onArchiveTask:w,onUnarchive:R,onDelete:N,taskReferences:g,categories:Z,readOnlyMode:ee,resolveTaskHierarchy:x,groupBy:r,showStatusLabel:W,showDescription:V,showAttachments:B,showChecklistProgress:D,showLatestActivity:be,tintActivityBackground:Se,deletedTaskRecordByTaskId:ae,selectedDeletedRecordIds:_e,onDeletedSelectionChange:Oe}),[d,Z,s,ae,r,Ar,Lr,w,h,N,Oe,b,A,v,y,k,R,c,ee,x,n,_e,B,D,V,W,be,Se,g,i,l,G,K]);return a.jsxs(uw,{sensors:Pe,collisionDetection:fr,onDragStart:Bt,onDragOver:dr,onDragEnd:er,onDragCancel:De=>{Ze.current=null,st(null)},children:[oe,a.jsxs("div",{className:P.kanbanWrapper,children:[a.jsx("div",{ref:Xe,className:`${P.kanbanTopScroll} tf-scrollbar`,children:a.jsx("div",{className:P.kanbanTopScrollSpacer,style:{width:`${he}px`}})}),a.jsx("div",{className:P.kanbanContainer,ref:It,children:Ue.map(De=>{const nt=mt[String(De.value)]||[],pt=U(De.value,De.label),ut=r!=="schedule"&&S==="hide"&&nt.length===0,Tt=r==="schedule",Xt=Tt&&Ue.some(ot=>String(ot.value)==="backlog"),Nt=Tt&&String(De.value)==="backlog",Qt=Tt&&String(De.value)==="expired",St=mt.backlog||[],Ft=S==="collapse"&&St.length===0?72:320,ir=Nt?0:Qt?Xt?Ft+4:0:void 0,sr=Nt?6:Qt?5:void 0;return pt||ut?null:a.jsx(yJ,{id:String(De.value),title:De.label,color:De.color,icon:De.icon,assigneeOption:r==="assignee"?d.find(ot=>String(ot.value)===String(De.value)):void 0,tasks:nt,activeId:Fe,activeTaskId:kt,totalCount:Le[String(De.value)],onAddTask:()=>E?.(r,De.value),onTaskClick:f,commonCardProps:Wr,changedTaskIdSet:Ve,collapseEmpty:S==="collapse",compressed:J,onHeaderPointerDown:vt,isHeaderPanning:ft,headerPanEnabled:ke,stickyLeft:ir,stickyZIndex:sr,isPast:!!De.isPast,isSelected:!!De.isSelected,isWeekend:!!De.isWeekend,disableSorting:!1,scheduleDate:r==="schedule"?pe.dates[String(De.value)]:void 0,onScheduleDaySelected:Ie,virtualize:rt,initialScrollTop:re.current.get(String(De.value))||0,onScrollTopChange:Ee},String(De.value))})})]}),uc.createPortal(a.jsx(ax,{dropAnimation:Ot,children:He?(()=>{const{taskWorkstream:De,taskInitiative:nt}=x(He);return a.jsx(dp,{task:He,taskWorkstream:De,taskInitiative:nt,isOverlay:!0,...Wr,isArchived:He.isArchived,categories:Z,compressed:J,isRecentlyChanged:Ve.has(He.id)})})():null}),document.body)]})}const yJ=ne.memo(function({id:t,title:r,color:n,icon:s,assigneeOption:i,tasks:l,activeId:c=null,activeTaskId:d=null,totalCount:m,onAddTask:f,onTaskClick:g,commonCardProps:h,changedTaskIdSet:y,collapseEmpty:k,compressed:v,onHeaderPointerDown:A,isHeaderPanning:b=!1,headerPanEnabled:w=!1,stickyLeft:R,stickyZIndex:N,isPast:j=!1,isSelected:E=!1,isWeekend:S=!1,disableSorting:L=!1,scheduleDate:_,onScheduleDaySelected:T,virtualize:H=!1,initialScrollTop:q=0,onScrollTopChange:z}){const{setNodeRef:M}=hw({id:t,data:{type:"Column"}}),Z=k&&l.length===0,J=d?l.filter(ge=>ge.id!==d):l,ee=typeof R=="number",te=o.useRef(null),fe=H&&!L&&J.length>pJ,Ie=o.useCallback(ge=>{z?.(t,ge)},[t,z]),$e=hJ({tasks:J,enabled:fe,scrollRef:te,initialScrollTop:q,onScrollTopChange:Ie}),Ye=ge=>t==="expired"?`${Ag}${ge}`:ge,ye=ge=>{if(!_||!T)return;const oe=ge.target;oe&&(oe.closest('[data-task-card="true"]')||oe.closest(`.${P.kanbanCardWrapper}`)||T(_))};return a.jsxs("div",{ref:M,className:`${P.kanbanColumn} ${Z?P.kanbanColumnCollapsed:""} ${ee?P.kanbanColumnSticky:""} ${j?P.kanbanColumnPast:""} ${E?P.kanbanColumnSelectedDay:""} ${S?P.kanbanColumnWeekend:""}`,style:ee?{left:`${R}px`,zIndex:N??4}:void 0,onClick:ye,children:[a.jsxs("div",{className:`${P.kanbanHeader} ${w?P.kanbanHeaderDraggable:""} ${b?P.kanbanHeaderPanning:""}`,style:{borderTopColor:ta(n)||"var(--color-purple)"},onPointerDown:A,children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",minWidth:0,overflow:"hidden"},children:[i?a.jsx(gy,{option:i,size:20}):(()=>{const ge=s&&df[s]?df[s]:cc,oe=ta(n)||"var(--color-purple)";return a.jsx(ge,{size:16,style:{color:oe}})})(),!Z&&a.jsx("span",{style:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:r})]}),a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0},children:[(!Z||m>0)&&a.jsx("span",{className:P.kanbanCount,children:Z?m:`${l.length} / ${m}`}),!h.readOnlyMode&&a.jsx("button",{className:"tf-control-icon tf-control-icon-compact",onClick:ge=>{ge.stopPropagation(),f()},title:`Add task to ${r}`,"aria-label":`Add task to ${r}`,"data-no-header-pan":"true",children:a.jsx(di,{size:14})})]})]}),a.jsx("div",{className:P.kanbanDroppable,children:a.jsx("div",{className:`${P.kanbanDroppableScroll} ${fe?P.kanbanDroppableScrollVirtualized:""} ${P.appScrollbar} tf-scrollbar`,ref:te,"data-kanban-column-scroll":t,children:L?J.map(ge=>a.jsx("div",{className:P.kanbanCardWrapper,children:(()=>{const{taskWorkstream:oe,taskInitiative:ie}=h.resolveTaskHierarchy?.(ge)||{},me=h.deletedTaskRecordByTaskId?.get(ge.id);return a.jsx(dp,{task:ge,taskWorkstream:oe,taskInitiative:ie,onClick:g,...h,isArchived:ge.isArchived,readOnlyMode:h.readOnlyMode||null,compressed:v,isRecentlyChanged:!1,selectable:!!(me&&h.onDeletedSelectionChange),selected:!!(me&&h.selectedDeletedRecordIds?.has(me.id)),onSelectionChange:me?W=>h.onDeletedSelectionChange?.(me.id,W):void 0})})()},ge.id)):a.jsx(fw,{id:t,items:J.map(ge=>Ye(ge.id)),strategy:mw,children:fe?a.jsx("div",{className:P.kanbanVirtualCanvas,style:{height:`${$e.totalHeight}px`},children:$e.rows.map(ge=>a.jsx(kJ,{top:ge.top,sortableId:Ye(ge.task.id),task:ge.task,onClick:g,commonCardProps:h,compressed:v,isRecentlyChanged:y.has(ge.task.id),onMeasure:$e.measureRow},Ye(ge.task.id)))}):J.map(ge=>a.jsx($_,{sortableId:Ye(ge.id),task:ge,onClick:g,commonCardProps:h,compressed:v,isRecentlyChanged:y.has(ge.id)},Ye(ge.id)))})})})]})}),kJ=ne.memo(function({top:t,onMeasure:r,...n}){const s=o.useRef(null);return o.useEffect(()=>{const i=s.current;if(!i)return;const l=()=>r(n.task.id,i.getBoundingClientRect().height);if(l(),typeof ResizeObserver>"u")return;const c=new ResizeObserver(l);return c.observe(i),()=>c.disconnect()},[n.task.id,r]),a.jsx("div",{ref:s,className:P.kanbanVirtualRow,style:{top:`${t}px`},"data-kanban-virtual-index":n.task.id,children:a.jsx($_,{...n})})}),$_=ne.memo(function({sortableId:t,task:r,onClick:n,commonCardProps:s,compressed:i,isRecentlyChanged:l=!1}){const c=!!s?.readOnlyMode,{attributes:d,listeners:m,setNodeRef:f,transform:g,transition:h,isDragging:y}=pw({id:t,disabled:c,data:{type:"task-card",taskId:r.id}}),k={transform:ny.Transform.toString(g),transition:h,opacity:y?0:1,pointerEvents:y?"none":"auto"},v=s?.groupBy==="schedule",A=!v&&l;return a.jsx("div",{ref:f,style:k,...c?{}:d,...c?{}:m,className:`${P.kanbanCardWrapper} ${A?P.kanbanCardWrapperRaised:""}`,children:(()=>{const{taskWorkstream:b,taskInitiative:w}=s.resolveTaskHierarchy?.(r)||{},R=s.deletedTaskRecordByTaskId?.get(r.id);return a.jsx(dp,{task:r,taskWorkstream:b,taskInitiative:w,onClick:n,...s,isArchived:r.isArchived,readOnlyMode:s?.readOnlyMode||null,compressed:i,isRecentlyChanged:v?!1:l,selectable:!!(R&&s.onDeletedSelectionChange),selected:!!(R&&s.selectedDeletedRecordIds?.has(R.id)),onSelectionChange:R?N=>s.onDeletedSelectionChange?.(R.id,N):void 0})})()})});function vJ(e,t,r){const n=String(t);if(e==="category"){const s=r.categories.find(i=>String(i.value)===n||i.label===n);return s?{category:s.label}:{}}return e==="type"?{type:n}:e==="priority"?Number.isFinite(Number(t))?{priority:Number(t)}:{}:e==="complexity"?Number.isFinite(Number(t))?{complexity:Number(t)}:{}:e==="assignee"?n.trim().length>0?{assignee:n}:{}:e==="status"?n==="completed"?{status:"done"}:n==="task"||n==="on-hold"||n==="in-progress"||n==="review"||n==="done"||n==="cancelled"?{status:n}:{}:e==="schedule"?n==="backlog"||n==="expired"?{}:{scheduledDate:n}:{}}function wJ({authUserId:e,taskScope:t,workspaceId:r}){const[n,s]=o.useState(null);o.useEffect(()=>{s(null)},[e,r]),o.useEffect(()=>{t!=="open"&&s(null)},[t]);const i=o.useCallback(c=>{s(d=>d===c?null:c)},[]),l=o.useCallback(()=>{s(null)},[]);return{taskHeaderQuickFilter:n,toggleTaskHeaderQuickFilter:i,clearTaskHeaderQuickFilter:l}}function bJ(e,t,r,n){return e.status==="done"||e.status==="cancelled"||String(e.assignee||"").trim()!==r?!1:t==="overdue"?!!(e.dueDate&&e.dueDate<n):!0}function Jg(e,t){return e==="deleted"?!1:e==="archived"?t:!t}function AA(e,t){return t===null?e:e.filter(r=>t.has(r.id))}function SJ(e,t,r){const n=t.filter(c=>Jg(r,!!c.isArchived)),s=r==="deleted"?[]:e.filter(c=>Jg(r,!!c.isArchived)?!0:r!=="archived"?!1:n.some(d=>d.initiativeId===c.id)).map(c=>({...c,workstreams:n.filter(d=>d.initiativeId===c.id)})),i=n.filter(c=>!c.initiativeId),l=[...s.flatMap(c=>c.workstreams),...i];return{initiatives:s,standaloneWorkstreams:i,visibleWorkstreams:l,initiativeById:new Map(s.map(c=>[c.id,c])),workstreamById:new Map(l.map(c=>[c.id,c]))}}function F_(e){return typeof e.occurredAt=="string"&&e.occurredAt.trim().length>0?e.occurredAt:"unknown-time"}function AJ(e){return typeof e.eventType=="string"&&e.eventType.trim().length>0?e.eventType.trim():"sync"}function CJ(e){const t=uy(e.details),r=t?t.source:null;return typeof r=="string"?r.trim():""}function CA(e){const t=String(e||"").trim();switch(t){case"auth-required":return"sign in required";case"lease-held":return"another window is already syncing";case"sync-disabled":return"sync is turned off";case"attach-cloud":return"initial cloud pull required";case"provision-local":return"initial cloud upload required";default:return t.length>0?t.replace(/-/g," "):"blocked"}}function IA(e){const t=String(e||"").trim();switch(t){case"attach-cloud":return"initial cloud pull";case"provision-local":return"initial cloud upload";case"active":return"active sync";case"error":return"error recovery";case"idle":return"idle sync";default:return t.length>0?t.replace(/-/g," "):"sync"}}function Xg(e){if(e==null)return null;const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.floor(t)):null}function _A(e,t,r){const n=Xg(e);if(n===null)return null;const s=Xg(t),i=n===1&&(s===null||s===1)?r:`${r}s`;return`${n}${s===null?"":`/${s}`} ${i}`}function IJ(e,t){const r=Xg(e);if(r===null)return null;const n=r>=1024*1024?`${(r/(1024*1024)).toFixed(1)} MiB`:r>=1024?`${(r/1024).toFixed(1)} KiB`:`${r} B`;return String(t||"")==="content-bodies"?`${n} content`:n}function _J(e){const t=F_(e),r=uy(e.details),n=CJ(e);if(n==="server-runner.transfer"){const s=r?.transfer&&typeof r.transfer=="object"?r.transfer:{},i=String(s.direction||"").trim(),l=String(s.operation||e.eventType||"sync").trim(),c=String(s.outcome||e.status||"").trim()==="error"?"failed":"succeeded",d=[_A(s.processedChanges,s.knownTotalChanges,"change"),_A(s.processedPages,s.knownTotalPages,"page"),IJ(s.transferredBytes,s.transferredBytesScope)].filter(g=>!!g),m=Xg(s.durationMs),f=c==="failed"&&typeof e.errorMessage=="string"&&e.errorMessage.trim()?`: ${e.errorMessage.trim()}`:"";return`${t} ${i?`${i} `:""}${l} ${c}${d.length>0?` (${d.join(", ")})`:""}${m===null?"":` in ${m}ms`}${f}`}return n==="retry.blocked"?`${t} manual retry blocked: ${CA(r?.reason)} during ${IA(r?.phase)}`:n==="repair.started"?`${t} manual repair started: ${IA(r?.repairPhase)} selected`:n==="repair.blocked"?`${t} manual repair blocked: ${CA(r?.reason)}`:null}function uf(e,t=0){const r=String(e.id??"").trim();return r?`id:${r}`:[String(e.occurredAt||"").trim()||"unknown-time",String(e.eventType||"").trim()||"sync",String(e.status||"").trim()||"unknown-status",String(e.statusCode??""),String(e.changeCount??""),String(e.requestMs??""),String(e.errorMessage||"").trim(),TI(e.details),String(t)].join("|")}function TJ(e,t,r=15){const n=new Map;for(const[s,i]of e.entries())n.set(uf(i,s),i);for(const[s,i]of t.entries())n.set(uf(i,s),i);return Array.from(n.values()).sort((s,i)=>String(i.occurredAt||"").localeCompare(String(s.occurredAt||""))).slice(0,Math.max(1,r))}function xJ(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r+=1)if(uf(e[r],r)!==uf(t[r],r))return!1;return!0}function U_(e){const t=_J(e);if(t)return t;const r=F_(e),n=AJ(e),s=e.status==="error"?"failed":"succeeded",i=Number(e.changeCount),l=Number.isFinite(i)?` (${Math.max(0,Math.floor(i))} change${Math.floor(i)===1?"":"s"})`:"",c=Number(e.requestMs),d=Number.isFinite(c)?` in ${Math.max(0,Math.floor(c))}ms`:"",m=Number(e.statusCode),f=Number.isFinite(m)?` [${Math.floor(m)}]`:"",g=typeof e.errorMessage=="string"&&e.errorMessage.trim().length>0?`: ${e.errorMessage.trim()}`:"";return`${r} ${n} ${s}${l}${d}${f}${g}`}function RJ(e){const t=U_(e),r=String(e.occurredAt||"").trim();if(!r||!t.startsWith(r))return t;const n=new Date(r);return Number.isNaN(n.getTime())?t:`${n.toLocaleString()}${t.slice(r.length)}`}function PJ(e){return e.status==="error"?null:[String(e.eventType||"").trim()||"sync",String(e.status||"").trim()||"unknown-status",String(e.statusCode??""),String(e.changeCount??""),String(e.errorMessage||"").trim(),TI(e.details)].join("|")}function jJ(e,t){return t?{...e,durableOutbox:t.outbox,coordinatorRecoveryObligations:t.recoveryObligations}:e}function Cg(e){if(!e)return"Never";const t=new Date(e);return Number.isNaN(t.getTime())?"Never":t.toLocaleString()}function z_(e){switch(e){case"off":return{label:"Off",icon:"off",color:"#94a3b8",border:"rgba(148, 163, 184, 0.35)",background:"rgba(148, 163, 184, 0.12)"};case"syncing":return{label:"Syncing",icon:"cloud",color:"#60a5fa",border:"rgba(96, 165, 250, 0.35)",background:"rgba(59, 130, 246, 0.12)"};case"checking":return{label:"Checking",icon:"cloud",color:"#94a3b8",border:"rgba(148, 163, 184, 0.35)",background:"rgba(148, 163, 184, 0.12)"};case"attention":return{label:"Needs Attention",icon:"cloud",color:"#fda4af",border:"rgba(253, 164, 175, 0.4)",background:"rgba(239, 68, 68, 0.12)"};default:return{label:"Healthy",icon:"cloud",color:"#86efac",border:"rgba(134, 239, 172, 0.4)",background:"rgba(34, 197, 94, 0.12)"}}}function EJ(e,t){return z_(t?e:"off")}function H_(e,t,r){if(t)return"Repairing";if(r&&e==="error")return"Recovering";switch(e){case"provision-local":return"Initial cloud upload";case"attach-cloud":return"Initial cloud pull";case"active":return"Active";case"error":return"Error";default:return"Idle"}}function NJ(e){return[{label:"AI profile snapshot",value:`${e.aiProfileSnapshotCount} local profile${e.aiProfileSnapshotCount===1?"":"s"}`},{label:"AI profile raw response",value:`${e.aiProfileSnapshotRawCount} from route`},{label:"Last pushed AI profiles",value:`${e.lastPushedAiProfileCount} tracked`},{label:"AI watermark map",value:`${e.lastPushedAiProfileWatermarkCount} tracked`},{label:"Document snapshot",value:`${e.documentSnapshotCount} local doc${e.documentSnapshotCount===1?"":"s"}`},{label:"Asset snapshot",value:`${e.assetSnapshotCount} local asset${e.assetSnapshotCount===1?"":"s"}`},{label:"Queued full AI sync",value:e.forceFullAiProfilePushQueued?"Yes":"No"},{label:"Durable outbox",value:e.durableOutbox?e.durableOutbox.operationStates?`${e.durableOutbox.operationStates.pending} pending, ${e.durableOutbox.operationStates.retryScheduled} retry scheduled, ${e.durableOutbox.operationStates.inFlight} in flight, ${e.durableOutbox.operationStates.stale} stale, ${e.durableOutbox.operationStates.blocked} blocked`:`${e.durableOutbox.pending} pending, ${e.durableOutbox.inFlight} in flight, ${e.durableOutbox.blocked} blocked`:"Unavailable"},{label:"Durable recovery",value:(()=>{const t=e.durableOutbox?.recovery?`${e.durableOutbox.recovery.state}; ${e.durableOutbox.recovery.replayAccepted}/${e.durableOutbox.recovery.replayTotal} replayed`:null,r=e.coordinatorRecoveryObligations||0,n=r>0?`${r} coordinator obligations open`:null;return[t,n].filter(Boolean).join(", ")||"None"})()},{label:"AI snapshot last fetch",value:Cg(e.aiProfileSnapshotLastFetchAt)},{label:"AI snapshot fetch error",value:e.aiProfileSnapshotLastFetchError||"None"},{label:"AI snapshot skip reason",value:e.aiProfileSnapshotLastSkipReason||"None"}]}function DJ({syncRecentEvents:e,syncRecentEventsError:t,syncRecentEventsLoading:r}){if(r&&e.length===0)return[{key:"loading",text:"Loading recent sync events...",tone:"muted"}];if(t)return[{key:"error",text:t,tone:"error"}];if(e.length===0)return[{key:"empty",text:"No recent sync events recorded.",tone:"muted"}];const n=[];for(const[s,i]of e.entries()){const l=PJ(i),c=n[n.length-1];if(l&&c?.signature===l){c.repeatCount+=1,c.text=`${c.baseText} × ${c.repeatCount}`;continue}const d=RJ(i);n.push({key:uf(i,s),text:d,tone:i.status==="error"?"error":"default",signature:l,repeatCount:1,baseText:d})}return n.map(({signature:s,repeatCount:i,baseText:l,...c})=>c)}function V_(e){const t=[];for(const r of e){if(String(r.errorMessage||"").toLowerCase().includes("reference number mismatch")){t.push(r);continue}if(String(r.status||"").toLowerCase()==="success")break}return t}function MJ(e){return V_(e).length}function LJ(e){return V_(e).map((t,r)=>{const n=t.details&&typeof t.details=="object"?t.details:null,s=String(n?.path||"").trim(),i=String(n?.referenceLabel||"").trim(),l=String(n?.taskTitle||n?.existingTaskTitle||"").trim(),c=Number(n?.existingReferenceNumber),d=Number(n?.incomingReferenceNumber),m=s||l||i||`Mismatch ${r+1}`,f=Number.isFinite(c)||Number.isFinite(d)?`Existing ${Number.isFinite(c)?c:"?"} vs incoming ${Number.isFinite(d)?d:"?"}`:i?`Both claimed ${i}`:null;return{key:uf(t,r),pathLabel:m,refsLabel:f}})}function OJ({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:r,workspaceSyncRecommendedAction:n,formattedLastSyncTime:s,formattedLastPullTime:i,formattedLastPushTime:l,workspaceSyncDiagnostics:c,workspaceSyncPendingChanges:d,syncLastError:m,syncStageLabel:f,referenceMismatchCount:g,syncRecentEvents:h}){const y=["Taskforce Sync Manager",`Workspace ID: ${e}`,`Status: ${t}`,`Summary: ${r}`,`Recommended action: ${n}`,`Last successful sync: ${s}`,`Last pull from cloud: ${i}`,`Last push to cloud: ${l}`,`Last error at: ${Cg(c.lastErrorAt)}`,`Pending local changes: ${d}`,`Last error: ${m}`,`Sync stage: ${f}`,`Push blocked reason: ${c.pushBlockedReason||"None"}`,`Pull blocked reason: ${c.pullBlockedReason||"None"}`,`Retry blocked reason: ${c.retryBlockedReason||"None"}`,`Repair active: ${c.repairActive?"Yes":"No"}`,`Push in flight: ${c.pushInFlight?"Yes":"No"}`,`Pull in flight: ${c.pullInFlight?"Yes":"No"}`,`Retry pending: ${c.retryPending?"Yes":"No"}`,`AI profile snapshot: ${c.aiProfileSnapshotCount}`,`AI profile raw response: ${c.aiProfileSnapshotRawCount}`,`Last pushed AI profiles tracked: ${c.lastPushedAiProfileCount}`,`AI profile watermarks tracked: ${c.lastPushedAiProfileWatermarkCount}`,`AI snapshot last fetch: ${Cg(c.aiProfileSnapshotLastFetchAt)}`,`AI snapshot fetch error: ${c.aiProfileSnapshotLastFetchError||"None"}`,`AI snapshot skip reason: ${c.aiProfileSnapshotLastSkipReason||"None"}`,`Document snapshot: ${c.documentSnapshotCount}`,`Asset snapshot: ${c.assetSnapshotCount}`,`Reference mismatches detected: ${g}`,`Queued full AI sync: ${c.forceFullAiProfilePushQueued?"Yes":"No"}`,`Durable outbox pending: ${c.durableOutbox?.pending??"Unavailable"}`,`Durable outbox in flight: ${c.durableOutbox?.inFlight??"Unavailable"}`,`Durable outbox blocked: ${c.durableOutbox?.blocked??"Unavailable"}`,`Durable outbox retry scheduled: ${c.durableOutbox?.operationStates?.retryScheduled??"Unavailable"}`,`Durable outbox stale: ${c.durableOutbox?.operationStates?.stale??"Unavailable"}`,`Durable outbox oldest active: ${Cg(c.durableOutbox?.oldestActiveCreatedAt)}`,`Durable outbox blocked error code: ${c.durableOutbox?.blockedErrorCode||"None"}`,`Durable recovery state: ${c.durableOutbox?.recovery?.state||"None"}`,`Durable recovery replay total: ${c.durableOutbox?.recovery?.replayTotal??0}`,`Durable recovery replay pending: ${c.durableOutbox?.recovery?.replayPending??0}`,`Durable recovery replay in flight: ${c.durableOutbox?.recovery?.replayInFlight??0}`,`Durable recovery replay blocked: ${c.durableOutbox?.recovery?.replayBlocked??0}`,`Durable recovery replay accepted: ${c.durableOutbox?.recovery?.replayAccepted??0}`,`Durable recovery obligations (coordinator): ${c.coordinatorRecoveryObligations??"Unavailable"}`],k=h.map(v=>U_(v));return[...y,"","Recent sync events",...k.length>0?k:["No recent sync events recorded."]].join(`
|
|
7
|
+
`)}const TA="/api/taskforce/account/profile-summary",BJ=9e4,Yu=new Map;function og(){return typeof performance<"u"?performance.now():Date.now()}function G_(e,t){const r=String(e||"").trim();if(!r)return"";const n=String(t||"").trim();return n?`${r}::${n}`:r}function xA(e,t){Yu.delete(G_(e,t?.identityKey))}async function WJ(e,t){const r=String(e||"").trim(),n=G_(e,t?.identityKey);if(!n||!r)return null;const s=t?.force===!0,i=Date.now(),l=Yu.get(n);if(!s&&l?.payload!==void 0&&i-l.fetchedAt<BJ)return Cr("account_profile_summary_cache_hit",{url:r,cacheKey:n,ageMs:i-l.fetchedAt}),l.payload;if(!s&&l?.promise)return Cr("account_profile_summary_request_reused",{url:r,cacheKey:n}),l.promise;const c=og(),d=(async()=>{const m=await fetch(r,{method:"GET",credentials:"include"});if(!m.ok)throw new Error(String((await m.json().catch(()=>({})))?.error||"Failed to load account summary."));const g=await m.json().catch(()=>({}))||null;return Yu.set(n,{payload:g,fetchedAt:Date.now(),promise:null}),Cr("account_profile_summary_loaded",{url:r,cacheKey:n,durationMs:Math.round(og()-c),fromCache:!1}),g})().catch(m=>{const f=l?.payload??null;if(f)return Yu.set(n,{payload:f,fetchedAt:l?.fetchedAt??Date.now(),promise:null}),Cr("account_profile_summary_failed",{url:r,cacheKey:n,durationMs:Math.round(og()-c),error:m instanceof Error?m.message:String(m||"Unknown error"),returnedStale:!0}),f;throw Yu.delete(n),Cr("account_profile_summary_failed",{url:r,cacheKey:n,durationMs:Math.round(og()-c),error:m instanceof Error?m.message:String(m||"Unknown error"),returnedStale:!1}),m});return Yu.set(n,{payload:l?.payload??null,fetchedAt:l?.fetchedAt??0,promise:d}),d}const $J=512,FJ=5*1024*1024,UJ=[.9,.82,.74,.66,.58],zJ=[.9,.82,.74,.66,.58],HJ=[1,.85,.7,.55,.4],VJ=new Set(["image/png","image/jpeg","image/webp"]);function GJ(e,t){const r=document.createElement("canvas");return r.width=Math.max(1,Math.round(e)),r.height=Math.max(1,Math.round(t)),r}async function KJ(e){const t=URL.createObjectURL(e);try{const r=await new Promise((n,s)=>{const i=new Image;i.onload=()=>n(i),i.onerror=()=>s(new Error("Failed to load image.")),i.src=t});return{width:r.naturalWidth||r.width,height:r.naturalHeight||r.height,source:r}}finally{URL.revokeObjectURL(t)}}async function qJ(e){const t=GJ(e.width,e.height),r=t.getContext("2d");if(!r)throw new Error("Image optimization requires a 2D canvas context.");return r.drawImage(e.image.source,0,0,t.width,t.height),await new Promise((n,s)=>{t.toBlob(i=>{if(i){n(i);return}s(new Error("Failed to encode resized image."))},e.type,e.quality)})}const YJ={loadImage:KJ,renderToBlob:qJ};function RA(e,t){return e==="image/png"?".png":e==="image/jpeg"?".jpg":e==="image/webp"?".webp":(t.includes(".")?t.slice(t.lastIndexOf(".")):"")||".img"}function PA(e,t){const r=String(e||"").trim();if(!r)return`avatar${t}`;const n=r.lastIndexOf(".");return n<=0?`${r}${t}`:`${r.slice(0,n)}${t}`}function ZJ(e){const t=e==="image/jpeg"?"image/jpeg":"image/webp";return Array.from(new Set([t,"image/webp","image/jpeg"]))}function JJ(e){return e==="image/webp"?UJ:e==="image/jpeg"?zJ:[void 0]}async function XJ(e,t,r=YJ){const n=Number.isFinite(t?.maxBytes)&&(t?.maxBytes||0)>0?Math.floor(t?.maxBytes):FJ,s=Number.isFinite(t?.maxDimension)&&(t?.maxDimension||0)>0?Math.floor(t?.maxDimension):$J;if(!VJ.has(e.type))return{file:e,optimized:!1,exceededLimit:e.size>n};const i=await r.loadImage(e),l=Math.max(i.width,i.height,1);if(e.size<=n&&l<=s)return{file:e,optimized:!1,exceededLimit:!1};const c=Math.min(1,s/l);let d=null;for(const f of HJ){const g=Math.min(1,c*f),h=Math.max(1,Math.round(i.width*g)),y=Math.max(1,Math.round(i.height*g));for(const k of ZJ(e.type))for(const v of JJ(k)){const A=await r.renderToBlob({image:i,width:h,height:y,type:k,quality:v});if((!d||A.size<d.size)&&(d=A),A.size<=n)return{file:new File([A],PA(e.name,RA(A.type||k,e.name)),{type:A.type||k,lastModified:e.lastModified}),optimized:!0,exceededLimit:!1}}}if(!d)return{file:e,optimized:!1,exceededLimit:!0};const m=new File([d],PA(e.name,RA(d.type||e.type,e.name)),{type:d.type||e.type,lastModified:e.lastModified});return{file:m,optimized:m.size<e.size,exceededLimit:m.size>n}}function QJ(e,t){return Array.from([...e,...t].reduce((r,n)=>r.set(n.id,n),new Map).values())}function K_(e){return e.status==="done"||e.status==="cancelled"}function eX({isArchived:e,tasks:t,dataReady:r}){return{archiveReady:r&&!e&&t.length>0&&t.every(K_),activeTaskCount:t.filter(n=>!n.isArchived).length,activeWorkstreamCount:0}}function tX({isArchived:e,workstreams:t,dataReady:r}){const n=t.flatMap(s=>s.tasks||[]);return{archiveReady:r&&!e&&t.length>0&&n.length>0&&n.every(K_),activeTaskCount:n.filter(s=>!s.isArchived).length,activeWorkstreamCount:t.filter(s=>!s.isArchived).length}}async function q_({workstream:e,allowEmpty:t=!1,archiveTask:r,archiveWorkstream:n}){if(e.isArchived)return!0;const s=e.tasks||[];if(!t&&s.length===0||s.some(i=>i.status!=="done"&&i.status!=="cancelled"))return!1;for(const i of s)if(!i.isArchived&&!await r(i.id))return!1;return await n(e.id),!0}async function rX({workstreams:e,archiveTask:t,archiveWorkstream:r,archiveInitiative:n,initiativeId:s}){const i=e.flatMap(l=>l.tasks||[]);if(e.length===0||i.length===0||i.some(l=>l.status!=="done"&&l.status!=="cancelled"))return!1;for(const l of e)if(!await q_({workstream:l,allowEmpty:!0,archiveTask:t,archiveWorkstream:r}))return!1;return await n(s),!0}function Y_({isArchived:e,taskCount:t,completedTaskCount:r,archiveReady:n,entityType:s,activeWorkstreamCount:i=0}){return e?{mode:"archived"}:t===0?s==="initiative"&&i>0?{mode:"blocked",remainingKind:"workstream"}:{mode:"empty"}:Math.max(0,t-r)>0?{mode:"blocked",remainingKind:"task"}:n?{mode:"ready"}:{mode:"checking"}}const Qv="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg2IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1IDg3LjY1ODkyMyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMSIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcwogICAgIGlkPSJkZWZzMSIgLz48ZwogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMwLjk2ODgxLC04NzIuMDY2NjgpIj48ZwogICAgICAgaWQ9ImcxLTctMS02LTItMS05IgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aAogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIKICAgICAgICAgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiCiAgICAgICAgIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJUIiAvPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmVuZDtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6ZW5kO2ZpbGw6I2ZmOGEwMDtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZmOGEwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIgogICAgICAgICBkPSJtIDE1My41Mzg4OCwxNjQuNTI2NiBoIC0zLjUwNjc0IHYgLTEzLjYzNzMzIGggMTAuODEyNDUgdiAyLjcyNzQ2IGggLTcuMzA1NzEgdiAzLjIxNDUyIGggNS43NDcxNiB2IDIuNzI3NDYgaCAtNS43NDcxNiB6IgogICAgICAgICBpZD0idGV4dDEtOS04LTQtMy03LTItNyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",Z_="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg5IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1OCA4Ny42NTg5MjMiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzEiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnMKICAgICBpZD0iZGVmczEiIC8+PGcKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcKICAgICAgIGlkPSJnMS03LTEtNi0yLTEiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCg0Ljk4MTU0NzksMCwwLDQuOTg1NTgyMiwtNjkwLjYwODc4LDQ2LjUyNDE0OCkiPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmNlbnRlcjtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTQ5LjQ0MDY2LDE2MS4xOTUwNSBoIC0zLjUwNjc0IHYgLTEwLjkwOTg2IGggLTQuMDkxMiB2IC0yLjcyNzQ3IGggMTEuNjg5MTQgdiAyLjcyNzQ3IGggLTQuMDkxMiB6IgogICAgICAgICBpZD0idGV4dDEtNC0zLTMtMS0wIgogICAgICAgICB0cmFuc2Zvcm09InNrZXdYKC0xNSkiCiAgICAgICAgIGFyaWEtbGFiZWw9IlQiIC8+PHBhdGgKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiCiAgICAgICAgIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",jA="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMDAwIiBoZWlnaHQ9IjEwMDAiPjxzdHlsZT4KICAgICNsaWdodC1pY29uIHsKICAgICAgZGlzcGxheTogaW5saW5lOwogICAgfQogICAgI2RhcmstaWNvbiB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAjbGlnaHQtaWNvbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAjZGFyay1pY29uIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICAgIH0KICAgIH0KICA8L3N0eWxlPjxnIGlkPSJsaWdodC1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODkyNTA0ODkwMzI3LDAsMCwyLjcyNzE4OTI1MDQ4OTAzMjcsMCw0OC4yMjgzNzgzMTg2MzgxOSkiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzNjYuNjc3ODkiIGhlaWdodD0iMzMxLjMwOTMzIiB2aWV3Qm94PSIwIDAgOTcuMDE2ODU4IDg3LjY1ODkyMyIgaWQ9InN2ZzEiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzIGlkPSJkZWZzMSI+PC9kZWZzPjxnIGlkPSJsYXllcjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcgaWQ9ImcxLTctMS02LTItMSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTY5MC42MDg3OCw0Ni41MjQxNDgpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIiBkPSJtIDE0OS40NDA2NiwxNjEuMTk1MDUgaCAtMy41MDY3NCB2IC0xMC45MDk4NiBoIC00LjA5MTIgdiAtMi43Mjc0NyBoIDExLjY4OTE0IHYgMi43Mjc0NyBoIC00LjA5MTIgeiIgaWQ9InRleHQxLTQtMy0zLTEtMCIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJGIj48L3BhdGg+PC9nPjwvZz48L3N2Zz48L2c+PC9nPjwvc3ZnPjwvZz48ZyBpZD0iZGFyay1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODk0NzM2MTU4ODcsMCwwLDIuNzI3MTg5NDczNjE1ODg3LDAsNDguMjI4MzQxMzU2NjMzOTA1KSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjM2Ni42Nzc4NiIgaGVpZ2h0PSIzMzEuMzA5MzMiIHZpZXdCb3g9IjAgMCA5Ny4wMTY4NSA4Ny42NTg5MjMiIGlkPSJzdmcxIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcyBpZD0iZGVmczEiPjwvZGVmcz48ZyBpZD0ibGF5ZXIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzAuOTY4ODEsLTg3Mi4wNjY2OCkiPjxnIGlkPSJnMS03LTEtNi0yLTEtOSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMi03IiB0cmFuc2Zvcm09InNrZXdYKC0xNSkiIGFyaWEtbGFiZWw9IkYiPjwvcGF0aD48L2c+PC9nPjwvc3ZnPjwvZz48L2c+PC9zdmc+PC9nPjwvc3ZnPg==";function nX({projectName:e,currentWorkspaceId:t,brandLabel:r="TaskForce",brandHomeLabel:n="Go to Kanban",onBrandClick:s,runtimeMode:i="local",theme:l=xg,meta:c,actions:d}){const m=o.useRef(null),f=o.useRef(null),[g,h]=o.useState(!0),[y,k]=o.useState("idle"),v=gC(l)?Z_:Qv,A=String(e||"").trim(),b=String(t||"").trim(),w=b.toLowerCase(),R=!!(A&&(i!=="cloud"||w&&w!=="default")),N=o.useCallback(()=>{if(!R){h(!0);return}const L=m.current,_=f.current;if(!L||!_)return;const T=L.getBoundingClientRect().width,H=_.getBoundingClientRect().width;if(T<=0||H<=0)return;const q=window.getComputedStyle(L),z=Number.parseFloat(q.columnGap||q.gap||"0")||0,M=Array.from(L.children).filter(ee=>{if(ee===_)return!1;const te=ee.getBoundingClientRect();return te.width>0&&te.height>0}),J=M.reduce((ee,te)=>ee+te.getBoundingClientRect().width,0)+H+z*M.length;h(J<=T)},[R]);o.useLayoutEffect(()=>{N();const L=m.current,_=f.current;if(!L||!_)return;if(typeof ResizeObserver>"u")return window.addEventListener("resize",N),()=>window.removeEventListener("resize",N);const T=new ResizeObserver(N);return T.observe(L),T.observe(_),()=>T.disconnect()},[N,A,c]),o.useEffect(()=>{if(y==="idle")return;const L=window.setTimeout(()=>k("idle"),1600);return()=>window.clearTimeout(L)},[y]);const j=R&&g,E=async()=>{if(!b||typeof navigator>"u")return;const L=navigator.clipboard;if(!L?.writeText){k("failed");return}try{await L.writeText(b),k("copied")}catch{k("failed")}},S=a.jsxs(a.Fragment,{children:[a.jsx("img",{src:v,alt:"Taskforce Logo",className:P.brandIcon,onError:L=>{const _=L.currentTarget;_.src!==jA?_.src=jA:_.style.display="none"}}),a.jsx("span",{children:r}),i==="cloud"&&a.jsx("span",{className:P.brandCloudSuffix,children:"HQ"})]});return a.jsxs("div",{className:`${P.header} ${Jr.standaloneHeader}`,children:[a.jsxs("div",{ref:m,className:`${P.headerTitle} ${Jr.standaloneTitle}`,children:[s?a.jsx("button",{type:"button",className:P.brandHomeButton,onClick:s,title:n,"aria-label":n,children:S}):a.jsx("span",{className:P.brandHomeStatic,children:S}),R&&a.jsxs("span",{ref:f,className:`${P.projectNameGroup} ${j?"":P.projectNameGroupHidden}`.trim(),"aria-hidden":j?void 0:!0,children:[a.jsx("span",{className:P.projectSlash,children:"/"}),b?a.jsx("button",{type:"button",className:`${P.projectName} ${y==="copied"?P.projectNameCopied:""}`.trim(),title:y==="copied"?"Workspace ID copied":y==="failed"?"Unable to copy workspace ID":`Workspace ID: ${b}`,"aria-label":`${A}. ${y==="copied"?"Workspace ID copied.":y==="failed"?"Unable to copy workspace ID.":"Copy workspace ID."}`,disabled:!j,onClick:()=>{E()},children:A}):a.jsx("span",{className:P.projectName,children:A}),a.jsx("span",{className:P.projectNameCopyFeedback,"aria-live":"polite",children:y==="copied"?"Workspace ID copied.":y==="failed"?"Unable to copy workspace ID.":""})]}),c]}),a.jsx("div",{className:P.headerActions,style:{gap:"16px"},children:d})]})}function ic(e){return`${e.type}:${e.id}`}function aX(e){if(!Array.isArray(e))return;const t=new Set,r=[];for(const n of e){if(!n||typeof n!="object"||Array.isArray(n))continue;const s=n.type,i=n.id;if(s!=="initiative"&&s!=="workstream"||typeof i!="string")continue;const l=i.trim();if(!l)continue;const c={type:s,id:l},d=ic(c);t.has(d)||(t.add(d),r.push(c))}return r}function sX(e,t){const r=ic(t);return e.some(s=>ic(s)===r)?e.filter(s=>ic(s)!==r):[...e,t]}const oX="taskforce.uiState.layout.v1",iX=/^\d{4}-\d{2}-\d{2}$/,cX=/^\d{4}-\d{2}$/;function lX(e){const t=String(e.workspaceId||"default").trim()||"default",r=String(e.userId||"anonymous").trim()||"anonymous",n=iy(`user:${r}`);return`${e.runtimeMode}:${t}:user:${n}`}function ff(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function ig(e){if(!Array.isArray(e))return;const t=Array.from(new Set(e.filter(r=>typeof r=="string").map(r=>r.trim()).filter(Boolean)));return t.length>0?t:[]}function up(e){if(!(typeof e!="number"||!Number.isFinite(e)||e<0))return Math.round(e)}function dX(e,t){if(!ff(e))return;const r=Object.entries(e).map(([n,s])=>{const i=n.trim(),l=up(s);return i&&l!==void 0?[i,l]:null}).filter(n=>n!==null).slice(-50);return Object.fromEntries(r)}function uX(e){if(!ff(e))return null;const t=typeof e.zoomLevel=="number"&&Number.isFinite(e.zoomLevel)?Math.min(4,Math.max(.25,e.zoomLevel)):void 0,r=up(e.scrollLeft),n=up(e.scrollTop);return t===void 0||r===void 0||n===void 0?null:{zoomLevel:t,scrollLeft:r,scrollTop:n}}function fX(e){if(!ff(e))return;const t=Object.entries(e).map(([r,n])=>{const s=r.trim(),i=uX(n);return s&&i?[s,i]:null}).filter(r=>r!==null).slice(-50);return Object.fromEntries(t)}function mX(e){if(e===null)return null;if(!ff(e)||e.type!=="initiative"&&e.type!=="workstream"||typeof e.id!="string")return;const t=e.id.trim();return t?{type:e.type,id:t}:null}function J_(e){if(!ff(e))return null;const t={},r=y=>{typeof e[y]=="boolean"&&(t[y]=e[y])};["scheduleShowWeekends","scheduleShowBacklog","scheduleOnlyExpired","scheduleSidebarOpen","showFilters","documentTrayOpen","imageTrayOpen","agentTrayOpen","taskforceAgentRosterTrayOpen","taskforceAgentDrawerOpen","taskforceAgentPanelCollapsed","planningDrawerOpen","planningTreeCollapsed","planningPrimaryCollapsed","planningSecondaryCollapsed","planningFavoritesSectionCollapsed","planningInitiativesSectionCollapsed","planningWorkstreamsSectionCollapsed"].forEach(y=>r(y)),(e.planningNavigatorSort==="default"||e.planningNavigatorSort==="title"||e.planningNavigatorSort==="owner"||e.planningNavigatorSort==="progress")&&(t.planningNavigatorSort=e.planningNavigatorSort),(e.planningTaskArrangeMode==="execution"||e.planningTaskArrangeMode==="ready"||e.planningTaskArrangeMode==="priority")&&(t.planningTaskArrangeMode=e.planningTaskArrangeMode);const n=aX(e.planningFavorites);n&&(t.planningFavorites=n),typeof e.scheduleSelectedDate=="string"&&iX.test(e.scheduleSelectedDate)&&(t.scheduleSelectedDate=e.scheduleSelectedDate),typeof e.scheduleCalendarMonth=="string"&&cX.test(e.scheduleCalendarMonth)&&(t.scheduleCalendarMonth=e.scheduleCalendarMonth);const s=up(e.scheduleScrollLeft);s!==void 0&&(t.scheduleScrollLeft=s);const i=ig(e.documentTypeFilters);i&&(t.documentTypeFilters=i);const l=ig(e.documentAttachmentFilters);l&&(t.documentAttachmentFilters=l),typeof e.documentSortField=="string"&&(t.documentSortField=e.documentSortField),(e.documentSortOrder==="asc"||e.documentSortOrder==="desc")&&(t.documentSortOrder=e.documentSortOrder);const c=ig(e.documentPinnedDocIds)?.slice(-50);c&&(t.documentPinnedDocIds=c),typeof e.documentSearchQuery=="string"&&(t.documentSearchQuery=e.documentSearchQuery),typeof e.documentSelectedDocId=="string"?t.documentSelectedDocId=e.documentSelectedDocId.trim()||null:e.documentSelectedDocId===null&&(t.documentSelectedDocId=null);const d=dX(e.documentScrollByDocId);d&&(t.documentScrollByDocId=d);const m=up(e.documentListScrollTop);m!==void 0&&(t.documentListScrollTop=m);const f=ig(e.planningExpandedInitiativeIds);f&&(t.planningExpandedInitiativeIds=f);const g=mX(e.planningDrawerDetail);g!==void 0&&(t.planningDrawerDetail=g),typeof e.planningNestedWorkstreamDetailId=="string"?t.planningNestedWorkstreamDetailId=e.planningNestedWorkstreamDetailId.trim()||null:e.planningNestedWorkstreamDetailId===null&&(t.planningNestedWorkstreamDetailId=null),ff(e.annotatedTarget)?t.annotatedTarget=e.annotatedTarget:e.annotatedTarget===null&&(t.annotatedTarget=null),typeof e.annotatedSessionId=="string"?t.annotatedSessionId=e.annotatedSessionId.trim()||null:e.annotatedSessionId===null&&(t.annotatedSessionId=null);const h=fX(e.annotatedViewportByContextKey);return h&&(t.annotatedViewportByContextKey=h),t}function pX(e,t){if(!e)return{state:t,localFallbackPatch:{}};const r={},n=r;for(const[s,i]of Object.entries(e))Object.prototype.hasOwnProperty.call(t,s)||(n[s]=i);return{state:{...e,...t},localFallbackPatch:r}}function yy(e,t){return Object.is(e,t)?!0:JSON.stringify(e)===JSON.stringify(t)}function hX(e,t){const r={},n=r;for(const[s,i]of Object.entries(t))yy(e[s],i)||(n[s]=i);return r}function gX(e,t){return Object.entries(t).every(([r,n])=>Object.prototype.hasOwnProperty.call(e,r)&&yy(e[r],n))}function EA(e,t){const r=e;for(const[n,s]of Object.entries(t))yy(r[n],s)&&delete r[n]}function X_(e){const t=bw(e);return`${oX}.${t}`}function cg(e){const t=String(e.currentWorkspaceId||"").trim();return!e.useCloudProxy||!t||t==="default"?e.headers:{...e.headers||{},"x-taskforce-workspace-id":t}}function yX(e){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(X_(e));return t?J_(JSON.parse(t)):null}catch{return null}}function NA(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(X_(t),JSON.stringify(e))}catch{}}function kX(e){const{currentWorkspaceId:t,loadKey:r,enabled:n=!0,headers:s,useCloudProxy:i=!1,remotePlanningFavoritesAuthoritative:l=!1,snapshot:c,onApplyState:d}=e,[m,f]=o.useState(""),g=o.useRef(""),h=o.useRef(0),y=o.useRef(c),k=o.useRef(c),v=o.useRef({}),A=o.useRef(null),b=o.useRef(d);return o.useEffect(()=>{b.current=d},[d]),o.useEffect(()=>{y.current=c},[c]),o.useEffect(()=>{if(!n){g.current="",h.current=0,k.current=y.current,v.current={},A.current=null,f("");return}if(g.current===r)return;g.current=r,h.current=0,k.current=y.current,v.current={},A.current=null,f("");let w=!1;const R=h.current,N=yX(r),j=!!N;return N&&(A.current={source:y.current,target:N},b.current(N),f(r)),(async()=>{try{const S=new URLSearchParams({key:"layout"});t&&S.set("workspaceId",t),i&&S.set("taskforceCloud","1");const L=await fetch(`/api/taskforce/ui-state?${S.toString()}`,{method:"GET",credentials:"include",headers:cg({headers:s,currentWorkspaceId:t,useCloudProxy:i})}),_=L.ok?await L.json().catch(()=>({})):{},T=J_(_?.state),H=T&&l?{...T,planningFavorites:T.planningFavorites??[]}:T;if(!w&&H&&h.current===R){const{state:q,localFallbackPatch:z}=pX(N,H);A.current={source:y.current,target:q},b.current(q),NA(q,r),Object.keys(z).length>0&&await Hm({stateKey:"layout",workspaceId:t,headers:cg({headers:s,currentWorkspaceId:t,useCloudProxy:i}),patch:z,dedupeScope:r,useCloudProxy:i})}}catch{}finally{!w&&!j&&(A.current||(k.current=y.current),f(r))}})(),()=>{w=!0}},[t,n,s,r,l,i]),o.useEffect(()=>{if(m!==r)return;const w=A.current;if(w){if(gX(c,w.target)){k.current=c,A.current=null;return}if(yy(c,w.source))return;A.current=null}const R=hX(k.current,c);if(k.current=c,Object.keys(R).length===0)return;h.current+=1,NA(c,r),Object.assign(v.current,R);const N=window.setTimeout(async()=>{const j={...v.current};if(Object.keys(j).length!==0)try{const E=await Hm({stateKey:"layout",workspaceId:t,headers:cg({headers:s,currentWorkspaceId:t,useCloudProxy:i}),patch:j,dedupeScope:r,useCloudProxy:i});(E.skipped&&E.reason==="unchanged"||!E.skipped&&E.response?.ok&&E.payload?.success!==!1)&&EA(v.current,j)}catch{}},250);return()=>window.clearTimeout(N)},[t,s,r,m,c,i]),o.useEffect(()=>{if(typeof window>"u"||m!==r)return;const w=()=>{const N={...v.current};Object.keys(N).length!==0&&Hm({stateKey:"layout",workspaceId:t,headers:cg({headers:s,currentWorkspaceId:t,useCloudProxy:i}),patch:N,keepalive:!0,dedupeScope:r,useCloudProxy:i}).then(j=>{(j.skipped&&j.reason==="unchanged"||!j.skipped&&j.response?.ok&&j.payload?.success!==!1)&&EA(v.current,N)}).catch(()=>{})},R=()=>{document.visibilityState==="hidden"&&w()};return window.addEventListener("pagehide",w),document.addEventListener("visibilitychange",R),()=>{window.removeEventListener("pagehide",w),document.removeEventListener("visibilitychange",R)}},[t,s,r,m,i]),{ready:n&&m===r}}function vX({value:e,placeholder:t,active:r=!1,onChange:n,onClear:s,clearTitle:i}){return a.jsxs("div",{className:P.searchContainer,style:{width:"240px"},children:[a.jsx(ry,{size:16,className:P.searchIcon}),a.jsx("input",{type:"text",className:`${P.searchInput} ${r?P.searchActive:""}`,placeholder:t,value:e,onChange:l=>n(l.target.value)}),e&&s&&a.jsx("button",{className:P.clearSearchBtn,onClick:s,title:i,children:a.jsx("span",{"aria-hidden":"true",children:"×"})})]})}function DA({label:e,value:t,options:r,onChange:n,trailingAction:s,width:i}){return a.jsxs("div",{className:P.groupByContainer,style:i?{width:i}:void 0,children:[a.jsx("span",{className:P.groupByLabel,children:e}),a.jsx("select",{className:`${P.select} ${P.groupBySelect}`,value:t,onChange:l=>n(l.target.value),children:r.map(l=>a.jsx("option",{value:l.value,children:l.label},String(l.value)))}),s]})}function lg({actions:e}){return a.jsx(a.Fragment,{children:e.map(t=>a.jsx("button",{className:`tf-control-icon ${t.active?"tf-control-icon-active":""} ${t.className||""}`.trim(),onClick:t.onClick,title:t.title,disabled:t.disabled,"aria-disabled":t.ariaDisabled,"aria-expanded":t.ariaExpanded,"aria-controls":t.ariaControls,children:t.icon},t.key))})}function MA(){return a.jsx("div",{className:P.headerDivider})}function wX({icon:e,label:t,onClick:r,disabled:n=!1}){return a.jsxs("button",{className:P.primaryUpdateBtn,onClick:r,disabled:n,children:[e," ",t]})}function bX({children:e,id:t}){return a.jsx("div",{id:t,className:P.filterToolbar,style:{padding:"8px 24px",borderBottom:"1px solid var(--border-primary)",background:"var(--bg-secondary)",boxShadow:"0 4px 18px rgba(8, 10, 24, 0.12)",display:"flex",alignItems:"center",gap:"12px",flexWrap:"wrap",position:"relative",zIndex:50},children:e})}function SX({categoryFilterOptions:e,typeFilterOptions:t,priorities:r,taxonomyDisplayLabels:n,filterCategories:s,setFilterCategories:i,filterTypes:l,setFilterTypes:c,filterPriorities:d,setFilterPriorities:m,filterStatus:f,setFilterStatus:g,filterAssignees:h,setFilterAssignees:y,assigneeOptions:k,initiativeFilterOptions:v=[],selectedInitiativeId:A="",setSelectedInitiativeId:b=()=>{},workstreamFilterOptions:w=[],selectedWorkstreamId:R="",setSelectedWorkstreamId:N=()=>{},taskScope:j,setTaskScope:E,showArchive:S,setShowArchive:L,onDeleteAllDeleted:_,clearFilters:T,clearFiltersDisabled:H=!1}){return a.jsxs(a.Fragment,{children:[a.jsx(Q9,{}),a.jsx(xm,{label:n?.category||jt("standalone.categoryLabel"),options:e,selected:s,onChange:q=>i(q),variant:"value"}),a.jsx(xm,{label:n?.type||jt("standalone.typeLabel"),options:t,selected:l,onChange:q=>c(q),variant:"value"}),a.jsx(xm,{label:n?.priority||jt("standalone.priorityLabel"),options:r,selected:d,onChange:q=>m(q),variant:"value"}),a.jsx(xm,{label:jt("standalone.statusLabel"),options:fc,selected:f,onChange:q=>g(q),variant:"value"}),a.jsx(xm,{label:jt("standalone.assigneeLabel"),options:k,selected:h,onChange:q=>y(q),variant:"value",searchable:!0,searchPlaceholder:"Search assignees...",noResultsText:"No assignees found.",renderOptionContent:q=>{const z=k.find(M=>String(M.value)===String(q.value));return z?a.jsx(pf,{option:z,size:20}):q.label}}),a.jsx("div",{className:P.headerDivider,style:{height:"16px",margin:"0 8px"}}),a.jsx(iA,{label:"Initiative",options:v,selected:A,onChange:b,allLabel:"All Initiatives",title:"Filter by initiative"}),a.jsx(iA,{label:"Workstream",options:w,selected:R,onChange:N,allLabel:"All Workstreams",title:"Filter by workstream"}),a.jsx(eH,{onClick:T,disabled:H,label:"Reset task filters and sort"}),a.jsx("div",{style:{flex:1}}),j==="deleted"&&_&&a.jsx(tH,{onClick:_,className:`${P.bulkArchiveBtn} ${P.taskToolbarAction} ${P.bulkDeleteBtn}`,title:"Empty trash",children:"Empty Trash"}),a.jsx(A_,{scope:j,onScopeChange:q=>{E(q),q==="archived"?L(!0):S&&L(!1)},className:P.groupByContainer,labelClassName:P.groupByLabel})]})}function AX(e){return a.jsx(bX,{id:e.id,children:a.jsx(SX,{...e})})}const CX="_drawer_1llbr_1",IX="_drawerBody_1llbr_5",_X="_paneShell_1llbr_13",TX="_collapsedPaneShell_1llbr_22",xX="_collapsedPaneHeader_1llbr_31",RX="_collapsedPaneLabel_1llbr_43",PX="_collapsedPaneMuted_1llbr_53",jX="_treePane_1llbr_66",EX="_treePaneSplit_1llbr_76",NX="_detailPane_1llbr_80",DX="_paneHeader_1llbr_90",MX="_paneHeaderLabel_1llbr_104",LX="_paneContent_1llbr_118",OX="_sectionTitle_1llbr_132",BX="_sectionHeaderRow_1llbr_141",WX="_headerActionGroup_1llbr_148",$X="_toggleActive_1llbr_155",FX="_archiveVisibilityToggle_1llbr_161",UX="_sectionGroup_1llbr_167",zX="_navigatorControls_1llbr_173",HX="_navigatorSearchRow_1llbr_179",VX="_navigatorSearch_1llbr_179",GX="_navigatorClearSearch_1llbr_223",KX="_navigatorOptions_1llbr_244",qX="_navigatorOptionField_1llbr_255",YX="_navigatorOptionLabel_1llbr_262",ZX="_navigatorDropdown_1llbr_268",JX="_navigatorDropdownTrigger_1llbr_282",XX="_navigatorEmpty_1llbr_295",QX="_scopeSummary_1llbr_324",eQ="_treeList_1llbr_361",tQ="_treeChildren_1llbr_374",rQ="_treeWorkstreamChildren_1llbr_384",nQ="_treeTaskChildren_1llbr_388",aQ="_visuallyHidden_1llbr_392",sQ="_treeRow_1llbr_412",oQ="_detailChildCard_1llbr_413",iQ="_treeRowShell_1llbr_433",cQ="_treeRowShellDraggable_1llbr_438",lQ="_treeRowArchived_1llbr_445",dQ="_rowButton_1llbr_450",uQ="_treeRowDetailOpen_1llbr_455",fQ="_treeRowDropReady_1llbr_473",mQ="_treeRowDropActive_1llbr_477",pQ="_treeRowDropMode_1llbr_483",hQ="_treeChevron_1llbr_483",gQ="_scopeButton_1llbr_485",yQ="_favoriteButton_1llbr_486",kQ="_treeRowShellDropMode_1llbr_487",vQ="_dragHandle_1llbr_487",wQ="_treeRowDragging_1llbr_491",bQ="_rowDragGutter_1llbr_499",SQ="_rowBody_1llbr_506",AQ="_rowContent_1llbr_529",CQ="_rowTopRow_1llbr_539",IQ="_rowReferenceActions_1llbr_548",_Q="_rowActions_1llbr_563",TQ="_emptyPanel_1llbr_607",xQ="_emptyPanelTitle_1llbr_616",RQ="_emptyPanelText_1llbr_622",PQ="_loadingState_1llbr_628",jQ="_loadingRow_1llbr_634",EQ="_loadingBadge_1llbr_646",NQ="_loadingTitle_1llbr_647",DQ="_loadingMeta_1llbr_648",MQ="_failureState_1llbr_669",LQ="_failureStateCompact_1llbr_678",OQ="_failureCopy_1llbr_682",BQ="_relationshipState_1llbr_708",WQ="_relationshipStateTitle_1llbr_719",$Q="_relationshipStateText_1llbr_725",FQ="_relationshipPaneContentEmpty_1llbr_732",UQ="_relationshipStateEmpty_1llbr_742",zQ="_detailHero_1llbr_756",HQ="_detailReferenceRow_1llbr_763",VQ="_detailTitle_1llbr_770",GQ="_detailTopRow_1llbr_777",KQ="_detailTopActions_1llbr_784",qQ="_detailDescription_1llbr_792",YQ="_detailDescriptionMarkdown_1llbr_805",ZQ="_detailOwnerField_1llbr_815",JQ="_detailOwnerLabel_1llbr_821",XQ="_detailSummaryMeta_1llbr_827",QQ="_passiveGuidance_1llbr_831",eee="_editorCard_1llbr_846",tee="_inlineEditorCard_1llbr_853",ree="_editorSelect_1llbr_858",nee="_ownerSelect_1llbr_862",aee="_editorField_1llbr_866",see="_editorLabel_1llbr_872",oee="_editorActions_1llbr_878",iee="_listCard_1llbr_898",cee="_activityTimelineList_1llbr_907",lee="_activityTimelineEmpty_1llbr_913",dee="_sectionDropReady_1llbr_917",uee="_sectionDropActive_1llbr_922",fee="_sectionDropMode_1llbr_928",mee="_linkPickerRow_1llbr_932",pee="_editorRelationshipRow_1llbr_933",hee="_relationshipRecovery_1llbr_940",gee="_listItem_1llbr_956",yee="_listItemButton_1llbr_965",kee="_detailCardButton_1llbr_974",vee="_listItemText_1llbr_980",wee="_detailChildCardSelected_1llbr_1004",bee="_detailChildCardArchived_1llbr_1012",See="_detailChildReferenceRow_1llbr_1017",Aee="_detailChildCardTopRow_1llbr_1023",Cee="_detailChildActions_1llbr_1039",Iee="_detailTitleRow_1llbr_1053",_ee="_editorIdentityField_1llbr_1060",ze={drawer:CX,drawerBody:IX,paneShell:_X,collapsedPaneShell:TX,collapsedPaneHeader:xX,collapsedPaneLabel:RX,collapsedPaneMuted:PX,treePane:jX,treePaneSplit:EX,detailPane:NX,paneHeader:DX,paneHeaderLabel:MX,paneContent:LX,sectionTitle:OX,sectionHeaderRow:BX,headerActionGroup:WX,toggleActive:$X,archiveVisibilityToggle:FX,sectionGroup:UX,navigatorControls:zX,navigatorSearchRow:HX,navigatorSearch:VX,navigatorClearSearch:GX,navigatorOptions:KX,navigatorOptionField:qX,navigatorOptionLabel:YX,navigatorDropdown:ZX,navigatorDropdownTrigger:JX,navigatorEmpty:XX,scopeSummary:QX,treeList:eQ,treeChildren:tQ,treeWorkstreamChildren:rQ,treeTaskChildren:nQ,visuallyHidden:aQ,treeRow:sQ,detailChildCard:oQ,treeRowShell:iQ,treeRowShellDraggable:cQ,treeRowArchived:lQ,rowButton:dQ,treeRowDetailOpen:uQ,treeRowDropReady:fQ,treeRowDropActive:mQ,treeRowDropMode:pQ,treeChevron:hQ,scopeButton:gQ,favoriteButton:yQ,treeRowShellDropMode:kQ,dragHandle:vQ,treeRowDragging:wQ,rowDragGutter:bQ,rowBody:SQ,rowContent:AQ,rowTopRow:CQ,rowReferenceActions:IQ,rowActions:_Q,emptyPanel:TQ,emptyPanelTitle:xQ,emptyPanelText:RQ,loadingState:PQ,loadingRow:jQ,loadingBadge:EQ,loadingTitle:NQ,loadingMeta:DQ,failureState:MQ,failureStateCompact:LQ,failureCopy:OQ,relationshipState:BQ,relationshipStateTitle:WQ,relationshipStateText:$Q,relationshipPaneContentEmpty:FQ,relationshipStateEmpty:UQ,detailHero:zQ,detailReferenceRow:HQ,detailTitle:VQ,detailTopRow:GQ,detailTopActions:KQ,detailDescription:qQ,detailDescriptionMarkdown:YQ,detailOwnerField:ZQ,detailOwnerLabel:JQ,detailSummaryMeta:XQ,passiveGuidance:QQ,editorCard:eee,inlineEditorCard:tee,editorSelect:ree,ownerSelect:nee,editorField:aee,editorLabel:see,editorActions:oee,listCard:iee,activityTimelineList:cee,activityTimelineEmpty:lee,sectionDropReady:dee,sectionDropActive:uee,sectionDropMode:fee,linkPickerRow:mee,editorRelationshipRow:pee,relationshipRecovery:hee,listItem:gee,listItemButton:yee,detailCardButton:kee,listItemText:vee,detailChildCardSelected:wee,detailChildCardArchived:bee,detailChildReferenceRow:See,detailChildCardTopRow:Aee,detailChildActions:Cee,detailTitleRow:Iee,editorIdentityField:_ee},Tee="_description_ued10_1",xee="_visuallyHidden_ued10_6",Qg={description:Tee,visuallyHidden:xee},Ree=ne.lazy(()=>Go(()=>import("./EntityActivityTimeline-CZ8x4UJE.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.EntityActivityTimeline}))),Pee=ne.lazy(()=>Go(()=>import("./ContextAttachmentManager-Coa8yVGM.js"),__vite__mapDeps([8,1,2,3,4,5])).then(e=>({default:e.ContextAttachmentManager})));function Q_(){return a.jsx("span",{className:Qg.visuallyHidden,"aria-hidden":"true",children:"Loading planning details"})}function jee({description:e,label:t,taskReferences:r,className:n,markdownClassName:s}){const i=String(e||"").trim();return i?a.jsx("div",{className:`${Qg.description} ${n||""}`.trim(),role:"region",tabIndex:0,"aria-label":`${t} description`,children:a.jsx(py,{variant:"detail",className:s,taskReferences:r,children:i})}):null}function Eee({entityType:e,entityId:t,referenceLabel:r,workspaceId:n,attachments:s,onAddAttachment:i,onRemoveAttachment:l,onUpdateAttachmentCaption:c,readOnly:d=!1,defaultExpanded:m=!0}){return a.jsx(ne.Suspense,{fallback:a.jsx(Q_,{}),children:a.jsx(Pee,{ownerType:e,ownerId:t,ownerReferenceLabel:r,workspaceId:n,attachments:s||[],onAddAttachment:f=>i?.(f),onRemoveAttachment:f=>l?.(f),onUpdateAttachmentCaption:(f,g)=>c?.(f,g),readOnly:d,defaultExpanded:m})})}function Nee({entityType:e,item:t,assigneeOptions:r,currentActorId:n,taskReferences:s,parentInitiative:i=null,defaultExpanded:l=!1,listClassName:c,emptyClassName:d,hydrationState:m,onRetryHydration:f}){const[g,h]=ne.useState(l);ne.useEffect(()=>{h(l)},[l,e,t.id]),ne.useEffect(()=>{if(!(m?.status!=="error"||!f))return window.addEventListener("online",f),()=>window.removeEventListener("online",f)},[m?.status,f]);const y=ne.useMemo(()=>{const N=new Map;for(const j of r){const E=String(j.value||"").trim();E&&(N.set(E,j),N.set(E.toLowerCase(),j))}return N},[r]),k=ne.useCallback((N,j,E)=>{if(E&&E.trim())return E.trim();const S=String(N||"").trim();return S?y.get(S)?.label||y.get(S.toLowerCase())?.label||S:j==="ai"?"AI Agent":"You"},[y]),v=ne.useCallback(N=>{const j=String(N.actorId||"").trim();if(T_(j))return{kind:"system",label:I_,ActorIcon:XA,description:__};const E=y.get(j)||y.get(j.toLowerCase()),S=N.actorProfile||E||null,L=N.actorType==="system"?"system":N.actorType==="ai"||S?.kind==="ai"||E?.kind==="agent"?"agent":N.actorType==="human"||S?.kind==="human"||E?.kind==="member"?"member":N.fallbackKind||"member",_=String(S&&"icon"in S&&S.icon?S.icon:L==="agent"?"Bot":L==="member"?"User":"ClipboardList"),T=df[_]||(L==="agent"?Cd:L==="member"?tf:QA);return{kind:L,label:L==="system"?"System":k(j,L==="agent"?"ai":"human",S&&"label"in S&&S.label||null),color:S&&"color"in S&&S.color||void 0,ActorIcon:T,isCurrentActorHint:L==="member"&&(j===""||j.toLowerCase()==="user"||j.toLowerCase()==="human")}},[y,k]),A=ne.useCallback((N,j)=>{const E=String(j||"").trim();if(E){if(N==="ownerId")return y.get(E)?.label||y.get(E.toLowerCase())?.label||E;if(N==="initiativeId"&&i&&E===i.id)return ws(i)||i.title}},[y,i]),b=ne.useMemo(()=>SC({activity:t.activity,comments:t.comments}).length,[t.activity,t.comments]),w=ne.useCallback(()=>{h(N=>{const j=!N;return j&&m?.status==="error"&&f?.(),j})},[m?.status,f]),R=m?.error?`${m.error} Retry activity refresh`:"Retry activity refresh";return a.jsxs(a.Fragment,{children:[a.jsx(Km,{label:"Activity",count:b,showZeroCount:!0,expanded:g,expandedTitle:"Hide activity",collapsedTitle:"Show activity",onToggle:w,actions:m?.status==="error"&&f?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:f,"aria-label":"Retry activity refresh",title:R,children:a.jsx($i,{size:13,"aria-hidden":"true"})}):null}),m?.status==="loading"?a.jsx("span",{className:Qg.visuallyHidden,role:"status","aria-live":"polite",children:"Loading latest activity…"}):null,m?.status==="error"?a.jsx("span",{className:Qg.visuallyHidden,role:"status","aria-live":"polite",children:"Activity could not be refreshed. Existing activity is still shown."}):null,g?a.jsx(ne.Suspense,{fallback:a.jsx(Q_,{}),children:a.jsx(Ree,{activity:t.activity,comments:t.comments,formatFieldValue:A,resolveActorPresentation:v,currentActorId:n,taskReferences:s,emptyMessage:`No ${e} activity yet.`,listClassName:c,emptyClassName:d})}):null]})}const Dee="_identity_1yyv1_1",Mee="_avatar_1yyv1_9",Lee="_picker_1yyv1_16",Oee="_identityDropdown_1yyv1_17",dg={identity:Dee,avatar:Mee,picker:Lee,identityDropdown:Oee};function eT({role:e,option:t,label:r,value:n,options:s=[],onChange:i,disabled:l=!1}){const[c,d]=ne.useState(!1),m=String(t?.label||r||"").trim(),f=t||(m?{...Ed,value:m,label:m,icon:"User",kind:"member"}:Ed),g=e==="owner"?`Owner: ${f.label}`:`Assigned to ${f.label}`,h=e==="owner"?`Change owner currently set to ${f.label}`:`Reassign task currently assigned to ${f.label}`,y=ne.useMemo(()=>sf(s),[s]),k=ne.useMemo(()=>new Map(y.map(b=>[b.value,b])),[y]),v=a.jsx("span",{className:dg.identity,title:i&&!l?h:g,"aria-label":g,children:a.jsx("span",{className:dg.avatar,children:a.jsx(gy,{option:f,size:22,variant:"card"})})});if(!i||l)return v;const A=String(n||t?.value||Ed.value);return a.jsx("span",{className:dg.picker,onClick:b=>b.stopPropagation(),onPointerDown:b=>b.stopPropagation(),onKeyDown:b=>b.stopPropagation(),children:a.jsx(ui,{value:A,options:y,onChange:async b=>{d(!0);try{await i(String(b))}catch{}finally{d(!1)}},disabled:c,ariaLabel:h,className:dg.identityDropdown,hideChevron:!0,portalPanel:!0,panelAlign:"end",panelMinWidth:240,searchable:!0,searchPlaceholder:e==="owner"?"Search owners...":"Search assignees...",noResultsText:e==="owner"?"No owners found.":"No assignees found.",renderOptionContent:b=>{const w=k.get(String(b.value));return w?a.jsx(pf,{option:w}):b.label},triggerContent:v})})}const Bee="_referenceBadgeButton_1ko1c_1",Wee="_referenceBadgeStatic_1ko1c_2",$ee="_summaryLayout_1ko1c_8",Fee="_summaryContent_1ko1c_17",Uee="_title_1ko1c_29",zee="_meta_1ko1c_43",Hee="_cardFooter_1ko1c_54",Vee="_cardFooterMeta_1ko1c_63",Gee="_noTasks_1ko1c_71",Kee="_scopeCount_1ko1c_79",qee="_contextCount_1ko1c_84",Yee="_progressTrack_1ko1c_91",Zee="_progressSegment_1ko1c_100",Jee="_progressSegmentCancelled_1ko1c_106",Xee="_progressSegmentTodo_1ko1c_110",Qee="_progressFill_1ko1c_114",Ls={referenceBadgeButton:Bee,referenceBadgeStatic:Wee,summaryLayout:$ee,summaryContent:Fee,title:Uee,meta:zee,cardFooter:Hee,cardFooterMeta:Vee,noTasks:Gee,scopeCount:Kee,contextCount:qee,progressTrack:Yee,progressSegment:Zee,progressSegmentCancelled:Jee,progressSegmentTodo:Xee,progressFill:Qee},ete=["done","review","in-progress","on-hold","cancelled","task"];function Dd({label:e,entityType:t,entityName:r,interactive:n=!0,provisional:s=!1,pending:i=!1}){const[l,c]=ne.useState(!1),d=s||i?P.provisionalReferenceBadge:"",m=r?.trim(),f=ne.useCallback(async g=>{g.stopPropagation();try{await navigator.clipboard.writeText(e),c(!0),window.setTimeout(()=>c(!1),1200)}catch{c(!1)}},[e]);return!n||i?a.jsx("span",{className:`${P.referenceBadge} ${P.referenceBadgeStatic} ${Ls.referenceBadgeStatic} ${d}`.trim(),title:i?"Canonical reference pending synchronization.":m||(s?"Temporary identifier — replaced after synchronization.":void 0),children:a.jsx("span",{children:e})}):a.jsx(Zw,{copied:l,label:e,onClick:f,title:m||(s?"Temporary identifier — replaced after synchronization.":`Copy ${t} reference`),ariaLabel:l?`Copied ${s?"temporary ":""}${t} reference`:s?`Copy temporary ${t} reference ${e}`:`Copy ${t} reference`,className:`${Ls.referenceBadgeButton} ${d}`.trim(),children:e})}function tT({children:e}){return a.jsx("span",{className:Ls.title,"data-planning-card-title":"true",children:e})}function rT({children:e,className:t=""}){return a.jsx("span",{className:`${Ls.meta} ${t}`.trim(),children:e})}function nT(){return a.jsx("span",{className:Ls.noTasks,children:"No tasks yet"})}function aT({children:e,identity:t}){return a.jsxs("div",{className:Ls.cardFooter,children:[a.jsx("div",{className:Ls.cardFooterMeta,children:e}),t]})}function sT({count:e}){const t=Math.max(0,Number(e)||0),r=`${t} context ${t===1?"item":"items"}`;return a.jsxs("span",{className:Ls.contextCount,"aria-label":r,title:r,children:[a.jsx(F0,{size:12,"aria-hidden":"true"}),a.jsx("span",{"aria-hidden":"true",children:t})]})}function oT({value:e,label:t,statusCounts:r}){const n=Math.min(100,Math.max(0,Number(e)||0)),s=ete.map(d=>{const m=Math.max(0,Number(r?.[d])||0),f=zo(d);return{status:d,count:m,label:f.shortLabel||f.label,color:d==="task"||d==="cancelled"?void 0:ta(f.color)}}),i=s.reduce((d,m)=>d+m.count,0),l=s.filter(d=>d.count>0).map(d=>`${d.label}: ${d.count}`).join(", "),c=l?`${t}. ${l}`:t;return a.jsx("div",{className:Ls.progressTrack,role:"progressbar","aria-label":c,title:l||void 0,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n,children:i>0?s.map(d=>d.count>0?a.jsx("span",{"aria-hidden":"true","data-progress-status":d.status,className:`${Ls.progressSegment} ${d.status==="cancelled"?Ls.progressSegmentCancelled:""} ${d.status==="task"?Ls.progressSegmentTodo:""}`.trim(),style:{width:`${d.count/i*100}%`,backgroundColor:d.color}},d.status):null):a.jsx("span",{className:Ls.progressFill,style:{width:`${n}%`},"aria-hidden":"true"})})}function iT({item:e,workstreamCount:t,className:r=""}){const n=e.taskCount>0,s=Math.max(0,Number(t)||0);return a.jsxs(rT,{className:r,children:[t!==void 0?a.jsxs(a.Fragment,{children:[a.jsxs("span",{className:Ls.scopeCount,children:[s," ",s===1?"workstream":"workstreams"]}),a.jsx("span",{"aria-hidden":"true",children:"•"})]}):null,n?a.jsxs(a.Fragment,{children:[a.jsxs("span",{children:[e.completedTaskCount," of ",e.taskCount," complete"]}),a.jsx("span",{"aria-hidden":"true",children:"•"})]}):null,a.jsx(sT,{count:e.attachmentCount})]})}function cT({item:e,entityType:t,workstreamCount:r,ownerOption:n,ownerOptions:s,onChangeOwner:i,onChangeIdentity:l}){const c=e.taskCount>0;return a.jsxs("div",{className:Ls.summaryLayout,children:[a.jsx(vp,{entityType:t,entityId:e.id,icon:e.icon,color:e.color,disabled:!!e.isArchived,onChange:l}),a.jsxs("div",{className:Ls.summaryContent,children:[a.jsx(tT,{children:e.title}),c?a.jsx(oT,{value:e.progressPercent,label:`${e.title}: ${e.progressPercent}% resolved`,statusCounts:e.statusCounts}):null,a.jsxs(aT,{identity:a.jsx(eT,{role:"owner",option:n,label:e.ownerLabel,value:e.ownerId,options:s,onChange:i,disabled:!!e.isArchived}),children:[c?null:a.jsx(nT,{}),a.jsx(iT,{item:e,workstreamCount:t==="initiative"?r:void 0})]})]})]})}const tte="_card_6phn6_1",rte="_content_6phn6_34",nte="_compact_6phn6_52",ate="_archived_6phn6_57",ste="_referenceRow_6phn6_75",ote="_topRow_6phn6_85",ite="_actions_6phn6_101",kd={card:tte,content:rte,compact:nte,archived:ate,referenceRow:ste,topRow:ote,actions:ite};function lT({task:e,assigneeOption:t,assigneeOptions:r,showStatusLabel:n,onOpen:s,onAssigneeChange:i,onStatusChange:l,referenceAction:c,actions:d,feedback:m,referenceInteractive:f=!0,compact:g=!1}){const h=kw(e),y=h.label,k=zo(e.status),v=k.value==="task"?"":k.shortLabel||k.label,A=ta(k.color),b=y?`Open task ${y}: ${e.title}`:`Open task ${e.title}`,w=R=>{!s||R.key!=="Enter"&&R.key!==" "||(R.preventDefault(),s())};return a.jsxs("div",{className:`${kd.card} ${g?kd.compact:""} ${e.isArchived?kd.archived:""}`.trim(),"data-task-status":k.value,style:{"--planning-task-status-color":A},children:[a.jsxs("div",{className:kd.topRow,children:[a.jsxs("div",{className:kd.referenceRow,children:[c,y?a.jsx(Dd,{label:y,entityType:"task",interactive:f,provisional:h.isProvisional}):a.jsx("span",{"aria-hidden":"true"})]}),a.jsxs("div",{className:kd.actions,onClick:R=>R.stopPropagation(),children:[d,a.jsx(Kg,{status:k.value,disabled:!!e.isArchived||!l,compressed:!0,shortLabels:!0,showLabel:n,archiveActionMode:"none",onStatusChange:l})]})]}),m,a.jsxs("div",{role:s?"button":void 0,tabIndex:s?0:void 0,className:kd.content,onClick:s,onKeyDown:w,"aria-label":s?b:void 0,children:[a.jsx(tT,{children:e.title}),a.jsx(aT,{identity:a.jsx(eT,{role:"assignee",option:t,value:e.assignee,options:r,onChange:i,disabled:!!e.isArchived}),children:a.jsxs(rT,{children:[v?a.jsxs(a.Fragment,{children:[v,a.jsx("span",{"aria-hidden":"true",children:" • "})]}):null,a.jsx(sT,{count:e.attachmentCount}),e.isArchived?a.jsxs(a.Fragment,{children:[a.jsx("span",{"aria-hidden":"true",children:" • "}),"archived"]}):null]})})]})]})}const iv=Object.freeze([{value:"execution",label:"Execution order",description:"Shared order planned for this workstream."},{value:"ready",label:"Ready first",description:"Shows tasks with completed prerequisites first."},{value:"priority",label:"Priority",description:"Shows higher-priority tasks first."}]);function cte(e){return e==="ready"||e==="priority"?e:"execution"}function lte(e,t){const r=new Set(t);if(r.size!==t.length)throw new Error("Visible task order contains duplicate task ids.");if(e.filter(i=>r.has(i.id)).length!==r.size)throw new Error("Visible task order contains tasks outside this workstream.");let s=0;return e.map(i=>r.has(i.id)?t[s++]:i.id)}function xd(e){const t=zo(e.status).value;return t==="done"||t==="cancelled"}function eb(e,t){const r=typeof e.workstreamOrder=="number"&&Number.isFinite(e.workstreamOrder)?e.workstreamOrder:Number.POSITIVE_INFINITY,n=typeof t.workstreamOrder=="number"&&Number.isFinite(t.workstreamOrder)?t.workstreamOrder:Number.POSITIVE_INFINITY;return r!==n?r-n:String(e.createdAt||"").localeCompare(String(t.createdAt||""))||e.id.localeCompare(t.id)}function LA(e,t){return e.dependencyState?e.dependencyState==="ready":(e.prerequisiteTaskIds||[]).every(r=>zo(t.get(r)?.status).value==="done")}function ey(e){return e.map((t,r)=>({task:t,index:r})).sort((t,r)=>eb(t.task,r.task)||t.index-r.index).map(({task:t})=>t)}function dte(e,t){const r=new Set(e.map(m=>m.id)),n=new Map,s=new Map(e.map(m=>[m.id,0]));for(const m of e)for(const f of m.prerequisiteTaskIds||[]){const g=t.get(f);!g||xd(g)||!r.has(f)||(n.set(f,[...n.get(f)||[],m.id]),s.set(m.id,(s.get(m.id)||0)+1))}const i=new Map(e.map(m=>[m.id,m])),l=ey(e.filter(m=>s.get(m.id)===0)),c=[];for(;l.length>0;){const m=l.shift();c.push(m);for(const f of n.get(m.id)||[]){const g=(s.get(f)||0)-1;if(s.set(f,g),g===0){const h=i.get(f);h&&(l.push(h),l.sort(eb))}}}if(c.length===e.length)return c;const d=new Set(c.map(m=>m.id));return[...c,...ey(e.filter(m=>!d.has(m.id)))]}function ew(e,t){const r=new Map(e.map(n=>[n.id,n]));if(t==="ready"){const n=e.filter(l=>!xd(l)),s=ey(n.filter(l=>LA(l,r))),i=dte(n.filter(l=>!LA(l,r)),r);return[...s,...i,...ey(e.filter(xd))]}return e.map((n,s)=>({task:n,index:s})).sort((n,s)=>{const i=n.task,l=s.task,c=Number(xd(i))-Number(xd(l));if(c)return c;if(t==="priority"){const d=Number(l.priority||0)-Number(i.priority||0);if(d)return d}return eb(i,l)||n.index-s.index}).map(({task:n})=>n)}const ute="_control_1n99m_1",tb={control:ute},fte="_trigger_11iyx_1",mte={trigger:fte};function pte({value:e,onChange:t}){const r=iv.find(n=>n.value===e)||iv[0];return a.jsx(ui,{value:e,options:[...iv],onChange:n=>t(n),ariaLabel:"Arrange workstream tasks",className:tb.control,portalPanel:!0,panelAlign:"end",triggerContent:a.jsxs("span",{className:mte.trigger,title:r.description,children:[a.jsx(cw,{size:14,"aria-hidden":"true"}),a.jsx("span",{children:r.label})]})})}const hte="_list_oepxi_1",gte="_item_oepxi_6",yte="_grip_oepxi_13",kte="_card_oepxi_40",Ym={list:hte,item:gte,grip:yte,card:kte};function vte(e){const t=pw({id:e.task.id,disabled:e.disabled}),r=e.disabledReason?`Reorder ${e.task.title} — ${e.disabledReason}`:`Reorder ${e.task.title}`;return a.jsxs("div",{ref:t.setNodeRef,className:Ym.item,style:{transform:ny.Transform.toString(t.transform),transition:t.transition},children:[a.jsx("button",{ref:t.setActivatorNodeRef,type:"button",className:Ym.grip,disabled:e.disabled,"aria-label":r,title:e.disabledReason||"Drag to change execution order",...t.attributes,...t.listeners,children:a.jsx(ow,{size:15,"aria-hidden":"true"})}),a.jsx("div",{className:Ym.card,children:e.children})]})}function wte(e){const[t,r]=ne.useState(()=>e.tasks.map(h=>h.id)),[n,s]=ne.useState(!1),i=e.tasks.map(h=>h.id).join("\0");ne.useEffect(()=>r(e.tasks.map(h=>h.id)),[i]);const l=lw(ep(dw,{activationConstraint:{distance:6}}),ep(dC,{coordinateGetter:lC})),c=ne.useMemo(()=>{const h=new Map(e.tasks.map(y=>[y.id,y]));return t.map(y=>h.get(y)).filter(y=>!!y)},[t,e.tasks]),d=!!e.onReorder,m=e.mode==="execution"&&d,f=ne.useCallback(async h=>{if(!m||n||!h.over||h.active.id===h.over.id)return;const y=t,k=y.indexOf(String(h.active.id)),v=y.indexOf(String(h.over.id));if(k<0||v<0)return;const A=new Map(c.map(N=>[N.id,N])),b=A.get(y[k]),w=A.get(y[v]);if(!b||!w||xd(b)!==xd(w))return;const R=iC(y,k,v);r(R),s(!0);try{await e.onReorder?.(R)}catch{r(y)}finally{s(!1)}},[m,t,c,e,n]);if(!d)return a.jsx("div",{className:`${Ym.list} ${e.className||""}`.trim(),children:e.tasks.map(h=>a.jsx(ne.Fragment,{children:e.children(h)},h.id))});const g=e.mode==="execution"?void 0:"Switch to Execution order to reorder tasks";return a.jsx(uw,{sensors:l,collisionDetection:cC,onDragEnd:h=>{f(h)},children:a.jsx(fw,{items:t,strategy:mw,children:a.jsx("div",{className:`${Ym.list} ${e.className||""}`.trim(),"aria-busy":n||void 0,children:c.map(h=>a.jsx(vte,{task:h,disabled:!m||n,disabledReason:g||(n?"Saving execution order":void 0),children:e.children(h)},h.id))})})})}const bte="_prompt_16ixe_1",Ste="_actions_16ixe_20",OA={prompt:bte,actions:Ste};function tw({entityType:e,title:t,activeTaskCount:r=0,activeWorkstreamCount:n=0,busy:s,onCancel:i,onConfirm:l}){const c=[r>0?`${r} completed/cancelled ${r===1?"task":"tasks"}`:"",e==="initiative"&&n>0?`${n} ${n===1?"workstream":"workstreams"}`:""].filter(Boolean),d=c.length===0?"":c.length===1?`${c[0]} and `:`${c.join(", ")}, and `;return a.jsxs("div",{className:`${OA.prompt} tf-surface-inset`,role:"group","aria-label":`Confirm archive ${e} ${t}`,children:[a.jsxs("span",{children:["Archive ",d,"this ",e,"?"]}),a.jsxs("div",{className:OA.actions,children:[a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",disabled:s,onClick:i,title:"Cancel archive","aria-label":"Cancel archive",children:a.jsx(fi,{size:14,"aria-hidden":"true"})}),a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",disabled:s,onClick:l,title:"Confirm archive","aria-label":s?"Archiving":"Confirm archive",children:a.jsx(Fi,{size:14,"aria-hidden":"true"})})]})]})}const Ate="_title_sy4bx_1",Cte="_content_sy4bx_7",Ite="_help_sy4bx_17",_te="_actions_sy4bx_22",ug={title:Ate,content:Cte,help:Ite,actions:_te};function Tte({item:e,busy:t,theme:r,onCancel:n,onConfirm:s}){return a.jsx(Vo,{isOpen:!!e,onClose:n,closeDisabled:t,closeOnOverlayClick:!1,size:"sm",theme:r,title:a.jsxs("span",{className:ug.title,children:[a.jsx(Um,{size:17,"aria-hidden":"true"}),"Unlink ",e?.entityType||"item"]}),footer:a.jsxs("div",{className:ug.actions,children:[a.jsx("button",{type:"button",className:"tf-button-secondary",disabled:t,onClick:n,"data-modal-initial-focus":!0,children:"Cancel"}),a.jsx("button",{type:"button",className:"tf-button-destructive",disabled:t,onClick:s,children:t?"Unlinking…":"Unlink"})]}),children:e?a.jsxs("div",{className:ug.content,children:[a.jsxs("p",{children:["Unlink ",a.jsx("strong",{children:e.referenceLabel})," ",e.title," from ",e.parentLabel,"?"]}),a.jsx("p",{className:ug.help,children:"The item will remain available and can be linked again later."})]}):null})}const xte="_triggerAction_ssrgo_1",Rte="_triggerSelection_ssrgo_2",Pte="_iconPicker_ssrgo_9",jte="_option_ssrgo_20",Ete="_optionTopRow_ssrgo_27",Nte="_optionTitle_ssrgo_38",Dte="_optionMeta_ssrgo_47",vd={triggerAction:xte,triggerSelection:Rte,iconPicker:Pte,option:jte,optionTopRow:Ete,optionTitle:Nte,optionMeta:Dte};function ty({options:e,selectedId:t="",entityLabel:r,onSelect:n,disabled:s=!1,className:i="",iconTrigger:l=!1,triggerTitle:c}){const d=ne.useMemo(()=>new Map(e.map(h=>[h.id,h])),[e]),m=ne.useMemo(()=>e.map(h=>({value:h.id,label:[h.referenceLabel,h.title,h.meta].filter(Boolean).join(" ")})),[e]),f=d.get(t),g=`Link ${r}`;return a.jsx(ui,{value:t,options:m,onChange:h=>{const y=d.get(String(h));y&&n(y)},disabled:s||e.length===0,className:`${l?`${vd.iconPicker} ${P.taskWorkstreamPicker}`:tb.control} ${i}`.trim(),portalPanel:!0,panelAlign:"start",panelMinWidth:320,searchable:!0,searchPlaceholder:`Search ${r}s by title or reference`,noResultsText:`No matching ${r}s.`,ariaLabel:g,title:l?c||g:void 0,hideChevron:l,triggerContent:l?a.jsx(Jm,{size:14,"aria-hidden":"true"}):f?a.jsxs("span",{className:vd.triggerSelection,children:[a.jsx(Dd,{label:f.referenceLabel,entityType:r,entityName:f.title}),a.jsx("span",{children:f.title})]}):a.jsxs("span",{className:vd.triggerAction,children:[a.jsx(Jm,{size:14,"aria-hidden":"true"}),a.jsx("span",{children:g})]}),renderOptionContent:h=>{const y=d.get(String(h.value));return y?a.jsxs("span",{className:vd.option,children:[a.jsxs("span",{className:vd.optionTopRow,children:[r!=="task"?a.jsx(vp,{entityType:r,entityId:y.id,icon:y.icon,color:y.color,size:"inline",disabled:!0}):null,a.jsx(Dd,{label:y.referenceLabel,entityType:r,entityName:y.title}),a.jsx("span",{className:vd.optionTitle,children:y.title})]}),y.meta?a.jsx("span",{className:vd.optionMeta,children:y.meta}):null]}):h.label},placeholder:g})}function dT(e,t){const r=String(t||"").trim(),n=new Map;for(const s of e){const i=String(s?.value||"").trim();if(!i||i==="unassigned"||typeof s.archivedAt=="string"&&s.archivedAt.trim().length>0)continue;const l=String(s.label||i).trim()||i,c=String(s.kind||"").trim().toLowerCase(),d=String(s.username||"").trim().toLowerCase(),m=c==="agent"?`agent:${d||l.toLowerCase()}`:`value:${i}`;(!n.has(m)||i===r)&&n.set(m,{...s,value:i,label:l})}return Array.from(n.values()).sort((s,i)=>s.label.localeCompare(i.label,void 0,{sensitivity:"base"}))}function dc(e){const t=e.kind==="agent"?"agent":e.kind==="member"?"member":"unassigned";return{value:e.value,label:e.label,icon:e.icon||(t==="agent"?"Bot":t==="member"?"User":hp),color:e.color||(t==="agent"?"var(--brand-primary)":t==="member"?"var(--status-success)":cy),kind:t,avatarUrl:e.avatarUrl,avatarRevision:e.avatarRevision,avatarUpdatedAt:e.avatarUpdatedAt,username:e.username,surfaceType:e.surfaceType,providerMetadata:e.providerMetadata,archivedAt:e.archivedAt}}function rb({value:e,options:t,leadingOptions:r=[],includeUnassigned:n=!0,onChange:s,disabled:i,ariaLabel:l,className:c}){const d=ne.useMemo(()=>{const f=r.map(y=>({...y,value:String(y.value||"").trim(),label:String(y.label||y.value||"").trim()})).filter(y=>y.value&&y.label),g=new Set(f.map(y=>y.value)),h=dT(t,e).filter(y=>!g.has(y.value));return[...f,...n?[{value:"",label:"Unassigned",icon:hp,color:cy,kind:"unassigned"}]:[],...h]},[n,r,t,e]),m=ne.useMemo(()=>new Map(d.map(f=>[f.value,dc(f)])),[d]);return a.jsx(ui,{value:e,options:d.map(f=>({value:f.value,label:f.label,icon:f.icon||void 0,color:f.color||void 0})),onChange:f=>s(String(f)),disabled:i,ariaLabel:l,className:c,portalPanel:!0,panelAlign:"start",panelMinWidth:240,searchable:!0,searchPlaceholder:"Search owners...",noResultsText:"No owners found.",renderOptionContent:f=>{const g=m.get(String(f.value));return g?a.jsx(pf,{option:g}):f.label}})}const BA=[{value:"default",label:"Default order"},{value:"title",label:"Title"},{value:"owner",label:"Owner"},{value:"progress",label:"Progress"}];function Ig(e,t,r){if(t==="all")return!0;const n=String(e.ownerId||"").trim();return t==="unassigned"?!n:t==="mine"?!!r&&n===r:n===t}function _g(e,t,r){if(!r)return!0;const n=t==="initiative"?ws(e):Ho(e);return e.title.toLocaleLowerCase().includes(r)||n.toLocaleLowerCase().includes(r)}function cv({item:e,entityType:t,showArchivedPlanning:r,searchQuery:n,ownerFilter:s,currentOwnerId:i}){return(r||!e.isArchived)&&Ig(e,s,i.trim())&&_g(e,t,n.trim().toLocaleLowerCase())}function fg(e,t){return t==="default"?e:e.map((r,n)=>({item:r,index:n})).sort((r,n)=>{let s=0;if(t==="title")s=r.item.title.localeCompare(n.item.title,void 0,{sensitivity:"base"});else if(t==="owner"){const i=String(r.item.ownerLabel||"").trim(),l=String(n.item.ownerLabel||"").trim();!i&&l?s=1:i&&!l?s=-1:s=i.localeCompare(l,void 0,{sensitivity:"base"})}else s=n.item.progressPercent-r.item.progressPercent;return s||r.index-n.index}).map(({item:r})=>r)}function Mte({initiatives:e,standaloneWorkstreams:t,showArchivedPlanning:r,searchQuery:n,ownerFilter:s,currentOwnerId:i,sort:l}){const c=n.trim().toLocaleLowerCase(),d=!!c||s!=="all",m=i.trim(),g=e.filter(A=>r||!A.isArchived).flatMap(A=>{const b=(A.allWorkstreams||A.workstreams).filter(L=>r||!L.isArchived);if(!d)return[{initiative:A,workstreams:fg(b,l)}];const w=Ig(A,s,m),R=_g(A,"initiative",c),N=w&&R,j=b.filter(L=>Ig(L,s,m)),E=j.filter(L=>_g(L,"workstream",c)),S=N&&c?j:E;return!N&&S.length===0?[]:[{initiative:A,workstreams:fg(S,l)}]}),h=new Map(g.map(A=>[A.initiative.id,A])),y=fg(g.map(({initiative:A})=>A),l).map(A=>h.get(A.id)),k=t.filter(A=>(r||!A.isArchived)&&Ig(A,s,m)&&_g(A,"workstream",c)),v=fg(k,l);return{initiatives:y,standaloneWorkstreams:v,hasCriteria:d,resultCount:y.length+y.reduce((A,b)=>A+b.workstreams.length,0)+v.length}}const Zm=392,mc=392,lv=56,uT=1280,Lte=Zm+mc;function Ote(e,t=0){const r=Math.max(0,e-t);return r>=uT?"wide":r>=Lte?"medium":"narrow"}function Bte(e){const t=ne.useCallback(()=>typeof window>"u"?uT+e:window.innerWidth,[e]),[r,n]=ne.useState(t);return ne.useEffect(()=>{const s=()=>n(t());return s(),window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)},[t]),{viewportWidth:r,availableWidth:Math.max(0,r-e),layoutMode:Ote(r,e)}}function fT(e,t,r,n,s){return(e?lv:Zm)+(t?r?lv:mc:0)+(n?s?lv:mc:0)}function dv({visible:e,disabled:t,disabledLabel:r,itemLabel:n,onToggle:s}){const i=e?`Hide archived ${n}`:`Show archived ${n}`,l=t?r||`No archived ${n}`:i;return a.jsx("button",{type:"button",className:`tf-control-icon ${ze.archiveVisibilityToggle} ${e?ze.toggleActive:""}`.trim(),title:l,"aria-label":l,"aria-pressed":e,disabled:t,onClick:s,children:e?a.jsx(iw,{size:15,"aria-hidden":"true"}):a.jsx(nC,{size:15,"aria-hidden":"true"})})}function WA(e){return e.type==="initiative"?(e.item.allWorkstreams||e.item.workstreams).filter(t=>!!t.isArchived).length:(e.item.tasks||[]).filter(t=>!!t.isArchived).length}function Pm({rowId:e,rowType:t,referenceLabel:r,item:n,ownerOption:s,ownerOptions:i,workstreamCount:l,active:c,isArchived:d=!1,detailOpen:m=!1,canExpand:f=!1,expanded:g=!1,controlsId:h,onToggleExpand:y,onToggleScope:k,onOpenDetails:v,onChangeOwner:A,onChangeIdentity:b,initiativeLinkOptions:w=[],onLinkInitiative:R,favorite:N,favoriteReady:j,onToggleFavorite:E,onArchiveReady:S,hierarchyInteractions:L=!0}){const{title:_}=n,[T,H]=ne.useState(!1),[q,z]=ne.useState(!1),[M,Z]=ne.useState(!1),{active:J}=uC(),ee=String(J?.data?.current?.type||""),te=L&&t==="workstream"&&ee==="task-card",fe=L&&t==="initiative"&&ee==="planning-workstream",Ie=t==="workstream"?"planning-workstream-target":"planning-initiative-target",{setNodeRef:$e,isOver:Ye}=hw({id:`${Ie}:${e}`,data:t==="workstream"?{type:Ie,workstreamId:e}:{type:Ie,initiativeId:e},disabled:!L}),ye=L&&t==="workstream",{attributes:ge,listeners:oe,setNodeRef:ie,setActivatorNodeRef:me,transform:W,isDragging:V}=ix({id:`planning-workstream:${e}`,data:{type:"planning-workstream",workstreamId:e},disabled:!ye}),B=ye&&W?{transform:ny.Translate.toString(W)}:void 0,D=te||fe,be=t==="initiative"?"workstreams":"tasks",Se=f&&!!y,K=f?`${g?"Collapse":"Expand"} ${be} for ${_}`:`No ${be} for ${_}`,Y=!!(n.archiveReady&&!d&&S),G=ne.useRef({}),[ae,_e]=ne.useState("favorite"),Oe=ne.useMemo(()=>[...j?["favorite"]:[],...Y?["archive"]:[],"scope",...Se?["disclosure"]:[]],[Y,Se,j]),Fe=Oe.includes(ae)?ae:Oe[0];ne.useEffect(()=>{Fe&&Fe!==ae&&_e(Fe)},[ae,Fe]);const st=ne.useCallback(de=>{_e(de)},[]),ft=ne.useCallback(de=>{if(!["ArrowLeft","ArrowRight","Home","End"].includes(de.key))return;const le=de.target.closest("[data-planning-row-action]")?.dataset.planningRowAction;if(!le||!Oe.includes(le))return;de.preventDefault();const Re=Oe.indexOf(le),Je=de.key==="Home"?0:de.key==="End"?Oe.length-1:de.key==="ArrowRight"?(Re+1)%Oe.length:(Re-1+Oe.length)%Oe.length,X=Oe[Je];_e(X),G.current[X]?.focus()},[Oe]),xe=async()=>{if(!(!S||q)){z(!0);try{await S()&&H(!1)}finally{z(!1)}}},ke=async de=>{if(!(!R||M)){Z(!0);try{await R(de)}finally{Z(!1)}}},ve=t==="workstream"&&!!R,Ve=d||M||w.length===0,Ne=d?"Unarchive this workstream before linking an initiative":w.length===0?"No initiatives available":"Link initiative";return a.jsxs("div",{ref:ie,style:B,className:`${ze.treeRowShell} ${ye?ze.treeRowShellDraggable:""} ${V?ze.treeRowDragging:""} ${D?ze.treeRowShellDropMode:""}`.trim(),"data-planning-draggable-row":ye||void 0,children:[ye?a.jsx("div",{className:ze.rowDragGutter,"data-planning-drag-gutter":"true",children:a.jsx("button",{type:"button",ref:me,className:ze.dragHandle,title:"Drag onto an initiative to move this workstream","aria-label":`Move workstream ${_} to an initiative`,"data-planning-drag-handle":"true",...ge,...oe,children:a.jsx(ow,{size:15,"aria-hidden":"true"})})}):null,a.jsx("div",{ref:$e,className:`${ze.treeRow} ${d?ze.treeRowArchived:""} ${m?ze.treeRowDetailOpen:""} ${D?ze.treeRowDropReady:""} ${Ye?ze.treeRowDropActive:""} ${D?ze.treeRowDropMode:""}`,"data-board-scoped":c||void 0,children:a.jsxs("div",{className:ze.rowContent,children:[a.jsxs("div",{className:ze.rowTopRow,children:[a.jsxs("div",{className:ze.rowReferenceActions,children:[ve?a.jsx(ty,{options:w,entityLabel:"initiative",onSelect:de=>{ke(de)},disabled:Ve,iconTrigger:!0,triggerTitle:Ne}):null,a.jsx(Dd,{label:r||"Reference pending",entityType:t,entityName:_,pending:!r})]}),a.jsxs("div",{className:ze.rowActions,role:"toolbar","aria-label":`${t==="initiative"?"Initiative":"Workstream"} actions for ${_}`,"aria-orientation":"horizontal",onKeyDown:ft,children:[a.jsx("button",{type:"button",ref:de=>{G.current.favorite=de},className:`tf-control-icon tf-control-icon-compact ${ze.favoriteButton} ${N?"tf-control-icon-active":""}`.trim(),onClick:E,onFocus:()=>st("favorite"),disabled:!j,tabIndex:Fe==="favorite"?0:-1,"data-planning-row-action":"favorite",title:j?N?`Remove ${t} from Favorites`:`Add ${t} to Favorites`:"Loading Favorites","aria-label":j?N?`Remove ${t} ${_} from Favorites`:`Add ${t} ${_} to Favorites`:`Loading Favorites for ${t} ${_}`,"aria-pressed":N,children:a.jsx(U0,{size:14,fill:N?"currentColor":"none","aria-hidden":"true"})}),Y?a.jsx("button",{type:"button",ref:de=>{G.current.archive=de},className:"tf-control-icon tf-control-icon-compact",onClick:()=>H(!0),onFocus:()=>st("archive"),tabIndex:Fe==="archive"?0:-1,"data-planning-row-action":"archive",title:`Archive completed ${t}`,"aria-label":`Archive completed ${t} ${_}`,"aria-expanded":T,children:a.jsx(Pd,{size:14,"aria-hidden":"true"})}):null,a.jsx("button",{type:"button",ref:de=>{G.current.scope=de},className:`tf-control-icon tf-control-icon-compact ${ze.scopeButton} ${c?"tf-control-icon-active":""}`.trim(),onClick:k,onFocus:()=>st("scope"),tabIndex:Fe==="scope"?0:-1,"data-planning-row-action":"scope",title:c?"Clear board scope":"Scope board to this item","aria-label":c?`Clear board scope for ${_}`:`Scope board to ${_}`,"aria-pressed":c,children:a.jsx(z0,{size:14,"aria-hidden":"true"})}),a.jsx("button",{type:"button",ref:de=>{G.current.disclosure=de},className:`tf-control-icon tf-control-icon-compact ${ze.treeChevron}`.trim(),onClick:Se?y:void 0,onFocus:()=>st("disclosure"),tabIndex:Fe==="disclosure"?0:-1,"data-planning-row-action":"disclosure",title:K,"aria-label":K,"aria-expanded":Se?g:!1,"aria-controls":Se&&g?h:void 0,disabled:!Se,children:g&&Se?a.jsx(Fd,{size:14,"aria-hidden":"true"}):a.jsx(Ld,{size:14,"aria-hidden":"true"})})]})]}),a.jsx("div",{className:ze.rowBody,children:a.jsx("div",{role:"button",tabIndex:0,className:ze.rowButton,onClick:v,onKeyDown:de=>{de.key!=="Enter"&&de.key!==" "||(de.preventDefault(),v())},"aria-label":`View ${t} details for ${_}`,"aria-pressed":m,children:a.jsx(cT,{item:n,entityType:t,workstreamCount:l,ownerOption:s?dc(s):void 0,ownerOptions:i.map(dc),onChangeOwner:A,onChangeIdentity:b})})}),T?a.jsx(tw,{entityType:t,title:_,activeTaskCount:n.archiveActiveTaskCount,activeWorkstreamCount:n.archiveActiveWorkstreamCount,busy:q,onCancel:()=>H(!1),onConfirm:()=>{xe()}}):null]})})]})}function Wte({task:e,assigneeOption:t,assigneeOptions:r,showTaskCardStatusLabel:n,onOpenTaskById:s,onChangeTaskAssignee:i,onSetTaskStatus:l,onArchivePlanningTask:c}){const[d,m]=ne.useState(!1),f=zo(e.status).value,g=!e.isArchived&&(f==="done"||f==="cancelled")&&!!c;return a.jsx("div",{className:`${ze.listItemButton} ${ze.detailCardButton}`.trim(),children:a.jsx(lT,{task:e,assigneeOption:t?dc(t):void 0,assigneeOptions:r.map(dc),showStatusLabel:n,onOpen:s?()=>s(e.id):void 0,onAssigneeChange:i?h=>i(e.id,h):void 0,onStatusChange:l?h=>l(e.id,h):void 0,actions:g?a.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",disabled:d,onClick:async h=>{h.stopPropagation(),m(!0);try{await c?.(e.id)}finally{m(!1)}},title:"Archive task","aria-label":`Archive task ${Ss(e)||e.title}`,children:a.jsx(Pd,{size:14,"aria-hidden":"true"})}):void 0,compact:!0})})}function jm({label:e,onExpand:t,muted:r=!1}){return a.jsx("div",{className:`${ze.paneShell} ${ze.collapsedPaneShell} ${r?ze.collapsedPaneMuted:""}`.trim(),"data-relationship-state":r?"missing":void 0,children:a.jsxs("div",{className:ze.collapsedPaneHeader,children:[a.jsx("button",{type:"button",className:"tf-control-icon",onClick:t,title:`Expand ${e}`,"aria-label":`Expand ${e} pane`,children:a.jsx(Ld,{size:16,"aria-hidden":"true"})}),a.jsx("span",{className:ze.collapsedPaneLabel,children:e})]})})}function $A({label:e,title:t,description:r,onCollapse:n,action:s,paneRef:i}){const l=!r&&!s;return a.jsxs("div",{ref:i,"data-planning-pane":`${e.toLowerCase()}-relationship`,className:`${ze.paneShell} ${P.appScrollbar} tf-scrollbar ${ze.detailPane}`.trim(),style:{flex:`0 0 ${mc}px`,width:`${mc}px`,minWidth:`${mc}px`,maxWidth:`${mc}px`},children:[a.jsxs("div",{className:ze.paneHeader,children:[a.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:e}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:n,"aria-label":`Collapse ${e} pane`,title:`Collapse ${e} pane`,children:a.jsx(vo,{size:16,"aria-hidden":"true"})})]}),a.jsx("div",{className:`${ze.paneContent} ${l?ze.relationshipPaneContentEmpty:""}`.trim(),children:a.jsxs("div",{className:`${ze.relationshipState} ${l?ze.relationshipStateEmpty:""}`.trim(),"data-relationship-display":l?"empty":"detail",children:[a.jsx("span",{className:ze.relationshipStateTitle,children:t}),r?a.jsx("p",{className:ze.relationshipStateText,children:r}):null,s?a.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:s.onClick,children:s.label}):null]})})]})}function $te({initiatives:e,standaloneWorkstreams:t,planningLoadState:r,taskScope:n,showArchivedPlanning:s,currentOwnerId:i,assigneeOptions:l,showTaskCardStatusLabel:c=!1,taskArrangeMode:d="execution",activeInitiativeId:m,activeWorkstreamId:f,navigatorSort:g,navigatorSortReady:h,onNavigatorSortChange:y,planningFavorites:k,onTogglePlanningFavorite:v,favoritesSectionCollapsed:A,initiativesSectionCollapsed:b,workstreamsSectionCollapsed:w,onToggleFavoritesSection:R,onToggleInitiativesSection:N,onToggleWorkstreamsSection:j,expandedInitiativeIds:E,detail:S,secondaryPane:L,onCreateInitiative:_,onCreateWorkstream:T,onToggleInitiative:H,onSelectInitiative:q,onSelectWorkstream:z,onOpenInitiativeDetails:M,onOpenWorkstreamDetails:Z,onOpenNestedWorkstreamDetails:J,onOpenTaskById:ee,onSetTaskStatus:te,onChangePlanningOwner:fe,onChangePlanningIdentity:Ie=()=>{},onChangeTaskAssignee:$e,onArchivePlanningTask:Ye,onArchiveResolvedWorkstream:ye,onArchiveResolvedInitiative:ge,linkOptions:oe,onAssignInitiativeToWorkstream:ie,onRetryPlanning:me}){const[W,V]=ne.useState(""),[B,D]=ne.useState("all"),[be,Se]=ne.useState(!1),[K,Y]=ne.useState(()=>new Set),[G,ae]=ne.useState(()=>new Set),_e=ne.useMemo(()=>new Map(l.filter(re=>!String(re.archivedAt||"").trim()).map(re=>[String(re.value||"").trim(),re])),[l]),Oe=ne.useMemo(()=>{const re=String(i||"").trim(),Ee=re?dT(l,re).find(je=>je.value===re):void 0;return[{value:"all",label:"All owners",icon:"Users",color:"var(--text-secondary)",kind:"unassigned"},...re?[{...Ee,value:"mine",label:"Owned by me",icon:Ee?.icon||"User",color:Ee?.color||"var(--text-secondary)",kind:Ee?.kind||"member"}]:[],{value:"unassigned",label:"Unassigned",icon:hp,color:cy,kind:"unassigned"}]},[l,i]),Fe=ne.useMemo(()=>Mte({initiatives:e,standaloneWorkstreams:t,showArchivedPlanning:s,searchQuery:W,ownerFilter:B,currentOwnerId:String(i||""),sort:g}),[i,e,g,B,W,s,t]),st=ne.useMemo(()=>new Set(k.map(ic)),[k]),ft=ne.useMemo(()=>{const re=new Map(e.filter(je=>cv({item:je,entityType:"initiative",showArchivedPlanning:s,searchQuery:W,ownerFilter:B,currentOwnerId:String(i||"")})).map(je=>[je.id,je])),Ee=new Map;return e.forEach(je=>{(je.allWorkstreams||je.workstreams).forEach(Pe=>{cv({item:Pe,entityType:"workstream",showArchivedPlanning:s,searchQuery:W,ownerFilter:B,currentOwnerId:String(i||"")})&&Ee.set(Pe.id,{item:Pe,parentInitiativeId:je.id})})}),t.forEach(je=>{cv({item:je,entityType:"workstream",showArchivedPlanning:s,searchQuery:W,ownerFilter:B,currentOwnerId:String(i||"")})&&Ee.set(je.id,{item:je,parentInitiativeId:null})}),k.reduce((je,Pe)=>{if(Pe.type==="initiative"){const Te=re.get(Pe.id);return Te&&je.push({favorite:Pe,item:Te,parentInitiativeId:null}),je}const Ce=Ee.get(Pe.id);return Ce&&je.push({favorite:Pe,...Ce}),je},[])},[i,e,B,k,W,s,t]);if(n==="deleted")return a.jsxs("div",{className:ze.scopeSummary,role:"status",children:[a.jsx("strong",{children:"Planning is not shown in Trash"}),a.jsx("span",{children:"Switch the task scope away from Trash to manage initiatives and workstreams."})]});if(r.status==="loading")return a.jsx(Fte,{});if(r.status==="error")return a.jsx(mg,{title:"Planning unavailable",message:r.error||"Planning could not be loaded.",retrying:r.isRefreshing,onRetry:me});const xe=e.filter(re=>!!re.isArchived).length,ke=t.filter(re=>!!re.isArchived).length,ve=e.length>0||t.length>0,Ve=Fe.hasCriteria||g!=="default",Ne=()=>{V(""),D("all"),h&&y("default")},de=re=>{Y(Ee=>{const je=new Set(Ee);return je.has(re)?je.delete(re):je.add(re),je})},x=re=>{ae(Ee=>{const je=new Set(Ee);return je.has(re)?je.delete(re):je.add(re),je})},le=(re,Ee=K.has(re.id),je=`planning-tasks-${re.id}`,Pe=`Tasks in ${re.title}`)=>{if(!Ee)return null;const Ce=re.tasks||[],Te=ew(s?Ce:Ce.filter(pe=>!pe.isArchived),d);return a.jsx("ul",{id:je,className:`${ze.treeChildren} ${ze.treeTaskChildren}`.trim(),"aria-label":Pe,children:Te.length>0?Te.map(pe=>a.jsx("li",{children:a.jsx(Wte,{task:pe,assigneeOption:pe.assignee?_e.get(pe.assignee):void 0,assigneeOptions:l,showTaskCardStatusLabel:c,onOpenTaskById:ee,onSetTaskStatus:te,onChangeTaskAssignee:$e,onArchivePlanningTask:Ye})},pe.id)):a.jsx("li",{className:ze.passiveGuidance,children:"Archived tasks are hidden."})})},Re=Fe.hasCriteria?"No matching initiatives":xe>0?"No active initiatives":"No initiatives yet",Je=Fe.hasCriteria?"No initiatives match the current planning search and owner filter.":xe>0?`${xe} archived ${xe===1?"initiative is":"initiatives are"} hidden. Use the archive visibility control above to view ${xe===1?"it":"them"}.`:a.jsxs(a.Fragment,{children:["Initiatives give larger efforts a clear home without crowding the task board. Use the ",a.jsx("code",{children:"+"})," action above to create the first one."]}),X=Fe.hasCriteria?"No matching standalone workstreams":ke>0?"No active standalone workstreams":"No standalone workstreams yet",Ze=Fe.hasCriteria?"No standalone workstreams match the current planning search and owner filter.":ke>0?`${ke} archived standalone ${ke===1?"workstream is":"workstreams are"} hidden. Use the archive visibility control above to view ${ke===1?"it":"them"}.`:a.jsxs(a.Fragment,{children:["Smaller projects can still use workstreams without needing initiative-level structure. Use the ",a.jsx("code",{children:"+"})," action above to add one."]});return a.jsxs(a.Fragment,{children:[r.status==="partial"&&r.collections.initiatives==="ready"&&r.collections.workstreams==="ready"?a.jsx(mg,{compact:!0,title:"Planning may be incomplete",message:r.error||"The latest planning refresh did not finish. Existing data is still shown.",retrying:r.isRefreshing,onRetry:me}):null,ve?a.jsxs("div",{className:ze.navigatorControls,children:[a.jsxs("div",{className:ze.navigatorSearchRow,children:[a.jsxs("div",{className:ze.navigatorSearch,children:[a.jsx(ry,{size:14,"aria-hidden":"true"}),a.jsx("span",{className:ze.visuallyHidden,children:"Search planning"}),a.jsx("input",{type:"search",value:W,onChange:re=>V(re.target.value),placeholder:"Search initiatives and workstreams","aria-label":"Search planning"}),W?a.jsx("button",{type:"button",className:ze.navigatorClearSearch,onClick:()=>V(""),"aria-label":"Clear planning search",title:"Clear search",children:a.jsx(fi,{size:13,"aria-hidden":"true"})}):null]}),a.jsx("button",{type:"button",className:`tf-control-icon ${be||B!=="all"||g!=="default"?ze.toggleActive:""}`.trim(),"aria-label":"Filter and sort planning",title:"Filter and sort planning","aria-expanded":be,"aria-controls":"planning-navigator-options",onClick:()=>Se(re=>!re),children:a.jsx(sC,{size:15,"aria-hidden":"true"})})]}),be?a.jsxs("div",{id:"planning-navigator-options",className:ze.navigatorOptions,children:[a.jsxs("div",{className:ze.navigatorOptionField,children:[a.jsx("span",{className:ze.navigatorOptionLabel,children:"Owner"}),a.jsx(rb,{value:B,options:l,leadingOptions:Oe,includeUnassigned:!1,onChange:D,disabled:!1,ariaLabel:"Filter planning by owner",className:ze.navigatorDropdown})]}),a.jsxs("div",{className:ze.navigatorOptionField,children:[a.jsx("span",{className:ze.navigatorOptionLabel,children:"Sort"}),a.jsx(ui,{value:g,options:BA,onChange:re=>y(String(re)),disabled:!h,ariaLabel:"Sort planning",className:ze.navigatorDropdown,portalPanel:!0,panelAlign:"start",triggerContent:a.jsxs("span",{className:ze.navigatorDropdownTrigger,children:[a.jsx(cw,{size:14,"aria-hidden":"true"}),a.jsx("span",{children:BA.find(re=>re.value===g)?.label})]}),renderOptionContent:re=>re.label})]}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:Ne,disabled:!Ve,"aria-label":"Reset planning filters and sort",title:"Reset planning filters and sort",children:a.jsx($i,{size:14,"aria-hidden":"true"})})]}):null,a.jsxs("span",{className:ze.visuallyHidden,role:"status","aria-live":"polite",children:[Fe.resultCount," planning ",Fe.resultCount===1?"result":"results"]})]}):null,Fe.hasCriteria&&Fe.resultCount===0?a.jsxs("div",{className:ze.navigatorEmpty,role:"status",children:[a.jsx("strong",{children:"No planning matches"}),a.jsx("span",{children:"Try another title or reference, or clear the owner filter."}),a.jsx("button",{type:"button",onClick:Ne,children:"Clear search and filters"})]}):a.jsxs(a.Fragment,{children:[ft.length>0?a.jsxs("div",{className:ze.sectionGroup,children:[a.jsx(Km,{label:"Favorites",count:ft.length,expanded:!A,expandedTitle:"Collapse favorites",collapsedTitle:"Expand favorites",onToggle:R,controlsId:"planning-favorites-section"}),a.jsx("ul",{id:"planning-favorites-section",className:ze.treeList,"aria-label":"Favorite planning items",hidden:A,children:ft.map(({favorite:re,item:Ee,parentInitiativeId:je})=>{const Pe=re.type==="initiative"?S?.type==="initiative"&&S.item.id===Ee.id:S?.type==="workstream"&&S.item.id===Ee.id||L?.kind==="detail"&&L.detail.item.id===Ee.id,Ce=re.type==="initiative"?Ee:null,Te=re.type==="workstream"?Ee:null,pe=Ce?Ce.allWorkstreams||Ce.workstreams:[],Me=pe.filter(Le=>s||!Le.isArchived),et=`favorite:${re.type}:${Ee.id}`,Ue=G.has(et),yt=`planning-${et.replaceAll(":","-")}-children`;return a.jsxs("li",{children:[a.jsx(Pm,{rowId:`favorite:${re.type}:${Ee.id}`,rowType:re.type,referenceLabel:re.type==="initiative"?ws(Ee):Ho(Ee),item:Ee,ownerOption:Ee.ownerId?_e.get(Ee.ownerId):void 0,ownerOptions:l,onChangeOwner:Le=>fe(re.type,Ee.id,Le==="unassigned"?"":Le),onChangeIdentity:Le=>Ie(re.type,Ee.id,Le),workstreamCount:Ce?Me.length:void 0,active:re.type==="initiative"?m===Ee.id&&!f:f===Ee.id,isArchived:!!Ee.isArchived,detailOpen:Pe,canExpand:re.type==="initiative"?pe.length>0:!!Te?.tasks?.length,expanded:Ue,controlsId:yt,onToggleExpand:()=>x(et),onToggleScope:()=>{re.type==="initiative"?q(Ee.id):z(Ee.id,je)},favoriteReady:h,onOpenDetails:()=>{re.type==="initiative"?M(Ee.id):je?(M(je),J(Ee.id)):Z(Ee.id)},favorite:!0,onToggleFavorite:()=>v(re),onArchiveReady:re.type==="initiative"?ge?()=>ge(Ee.id):void 0:ye?()=>ye(Ee.id):void 0,hierarchyInteractions:!1,initiativeLinkOptions:re.type==="workstream"&&!je?oe.initiatives:void 0,onLinkInitiative:re.type==="workstream"&&!je?Le=>ie(Ee.id,Le.referenceLabel):void 0}),Ce&&Ue?a.jsx("ul",{id:yt,className:ze.treeChildren,"aria-label":`Workstreams in favorite ${Ce.title}`,children:Me.length>0?Me.map(Le=>{const mt=`${et}:workstream:${Le.id}`,kt=G.has(mt),He=`planning-${mt.replaceAll(":","-")}-children`;return a.jsxs("li",{children:[a.jsx(Pm,{rowId:mt,rowType:"workstream",referenceLabel:Ho(Le),item:Le,ownerOption:Le.ownerId?_e.get(Le.ownerId):void 0,ownerOptions:l,onChangeOwner:rt=>fe("workstream",Le.id,rt==="unassigned"?"":rt),onChangeIdentity:rt=>Ie("workstream",Le.id,rt),active:f===Le.id,isArchived:!!Le.isArchived,detailOpen:S?.type==="workstream"&&S.item.id===Le.id||L?.kind==="detail"&&L.detail.item.id===Le.id,canExpand:!!Le.tasks?.length,expanded:kt,controlsId:He,onToggleExpand:()=>x(mt),onToggleScope:()=>z(Le.id,Ce.id),onOpenDetails:()=>{M(Ce.id),J(Le.id)},favorite:st.has(ic({type:"workstream",id:Le.id})),favoriteReady:h,onToggleFavorite:()=>v({type:"workstream",id:Le.id}),onArchiveReady:ye?()=>ye(Le.id):void 0,hierarchyInteractions:!1}),le(Le,kt,He,`Tasks in favorite ${Ce.title} / ${Le.title}`)]},Le.id)}):a.jsx("li",{className:ze.passiveGuidance,children:"Archived workstreams are hidden."})}):null,Te?le(Te,Ue,yt,`Tasks in favorite ${Te.title}`):null]},ic(re))})})]}):null,a.jsxs("div",{className:ze.sectionGroup,children:[a.jsx(Km,{label:"Initiatives",count:Fe.initiatives.length,showZeroCount:!0,actions:r.collections.initiatives==="ready"?a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create initiative","aria-label":"Create initiative",onClick:_,children:a.jsx(di,{size:15})}):null,expanded:!b,expandedTitle:"Collapse initiatives",collapsedTitle:"Expand initiatives",onToggle:N,controlsId:b?void 0:"planning-initiatives-section"}),b?null:a.jsx("ul",{id:"planning-initiatives-section",className:ze.treeList,"aria-label":"Initiatives",children:r.collections.initiatives==="error"?a.jsx("li",{children:a.jsx(mg,{compact:!0,title:"Initiatives unavailable",message:"Initiatives could not be loaded.",retrying:r.isRefreshing,onRetry:me})}):Fe.initiatives.length===0?a.jsxs("li",{className:ze.emptyPanel,children:[a.jsx("div",{className:ze.emptyPanelTitle,children:Re}),a.jsx("div",{className:ze.emptyPanelText,children:Je})]}):Fe.initiatives.map(({initiative:re,workstreams:Ee})=>{const je=re.allWorkstreams||re.workstreams,Pe=s?je:je.filter(pe=>!pe.isArchived),Ce=Ee,Te=Fe.hasCriteria?Ce.length>0:E.has(re.id);return a.jsxs("li",{children:[a.jsx(Pm,{rowId:re.id,rowType:"initiative",referenceLabel:ws(re),item:re,ownerOption:re.ownerId?_e.get(re.ownerId):void 0,ownerOptions:l,onChangeOwner:pe=>fe("initiative",re.id,pe==="unassigned"?"":pe),onChangeIdentity:pe=>Ie("initiative",re.id,pe),workstreamCount:Pe.length,active:m===re.id&&!f,isArchived:!!re.isArchived,detailOpen:S?.type==="initiative"&&S.item.id===re.id,canExpand:je.length>0,expanded:Te,controlsId:`planning-children-${re.id}`,onToggleExpand:()=>H(re.id),onToggleScope:()=>q(re.id),onOpenDetails:()=>M(re.id),favorite:st.has(ic({type:"initiative",id:re.id})),favoriteReady:h,onToggleFavorite:()=>v({type:"initiative",id:re.id}),onArchiveReady:ge?()=>ge(re.id):void 0}),Te&&Ce.length>0&&a.jsx("ul",{id:`planning-children-${re.id}`,className:`${ze.treeChildren} ${ze.treeWorkstreamChildren}`.trim(),"aria-label":`Workstreams in ${re.title}`,children:Ce.map(pe=>a.jsxs("li",{children:[a.jsx(Pm,{rowId:pe.id,rowType:"workstream",referenceLabel:Ho(pe),item:pe,ownerOption:pe.ownerId?_e.get(pe.ownerId):void 0,ownerOptions:l,onChangeOwner:Me=>fe("workstream",pe.id,Me==="unassigned"?"":Me),onChangeIdentity:Me=>Ie("workstream",pe.id,Me),active:f===pe.id,isArchived:!!pe.isArchived,detailOpen:S?.type==="workstream"&&S.item.id===pe.id||L?.kind==="detail"&&L.detail.item.id===pe.id,canExpand:(pe.tasks||[]).length>0,expanded:K.has(pe.id),controlsId:`planning-tasks-${pe.id}`,onToggleExpand:()=>de(pe.id),onToggleScope:()=>z(pe.id,re.id),onOpenDetails:()=>{M(re.id),J(pe.id)},favorite:st.has(ic({type:"workstream",id:pe.id})),favoriteReady:h,onToggleFavorite:()=>v({type:"workstream",id:pe.id}),onArchiveReady:ye?()=>ye(pe.id):void 0}),le(pe)]},pe.id))})]},re.id)})})]}),a.jsxs("div",{className:ze.sectionGroup,children:[a.jsx(Km,{label:"Workstreams",count:Fe.standaloneWorkstreams.length,showZeroCount:!0,actions:r.collections.workstreams==="ready"?a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create workstream","aria-label":"Create workstream",onClick:T,children:a.jsx(di,{size:15})}):null,expanded:!w,expandedTitle:"Collapse workstreams",collapsedTitle:"Expand workstreams",onToggle:j,controlsId:w?void 0:"planning-workstreams-section"}),w?null:a.jsx("ul",{id:"planning-workstreams-section",className:ze.treeList,"aria-label":"Standalone workstreams",children:r.collections.workstreams==="error"?a.jsx("li",{children:a.jsx(mg,{compact:!0,title:"Workstreams unavailable",message:"Workstreams could not be loaded.",retrying:r.isRefreshing,onRetry:me})}):Fe.standaloneWorkstreams.length===0?a.jsxs("li",{className:ze.emptyPanel,children:[a.jsx("div",{className:ze.emptyPanelTitle,children:X}),a.jsx("div",{className:ze.emptyPanelText,children:Ze})]}):Fe.standaloneWorkstreams.map(re=>a.jsxs("li",{children:[a.jsx(Pm,{rowId:re.id,rowType:"workstream",referenceLabel:Ho(re),item:re,ownerOption:re.ownerId?_e.get(re.ownerId):void 0,ownerOptions:l,onChangeOwner:Ee=>fe("workstream",re.id,Ee==="unassigned"?"":Ee),onChangeIdentity:Ee=>Ie("workstream",re.id,Ee),active:f===re.id,isArchived:!!re.isArchived,detailOpen:S?.type==="workstream"&&S.item.id===re.id||L?.kind==="detail"&&L.detail.item.id===re.id,canExpand:(re.tasks||[]).length>0,expanded:K.has(re.id),controlsId:`planning-tasks-${re.id}`,onToggleExpand:()=>de(re.id),onToggleScope:()=>z(re.id,null),onOpenDetails:()=>Z(re.id),favorite:st.has(ic({type:"workstream",id:re.id})),favoriteReady:h,onToggleFavorite:()=>v({type:"workstream",id:re.id}),onArchiveReady:ye?()=>ye(re.id):void 0,initiativeLinkOptions:oe.initiatives,onLinkInitiative:Ee=>ie(re.id,Ee.referenceLabel)}),le(re)]},re.id))})]})]})]})}function Fte(){return a.jsxs("div",{className:ze.loadingState,role:"status","aria-live":"polite",children:[a.jsx("span",{className:ze.visuallyHidden,children:"Loading planning"}),[0,1,2].map(e=>a.jsxs("div",{className:ze.loadingRow,"aria-hidden":"true",children:[a.jsx("span",{className:ze.loadingBadge}),a.jsx("span",{className:ze.loadingTitle}),a.jsx("span",{className:ze.loadingMeta})]},e))]})}function mg({title:e,message:t,retrying:r,onRetry:n,compact:s=!1}){return a.jsxs("div",{className:`${ze.failureState} ${s?ze.failureStateCompact:""} tf-surface-inset`.trim(),role:"alert",children:[a.jsxs("div",{className:ze.failureCopy,children:[a.jsx("strong",{children:e}),a.jsx("span",{children:t})]}),a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:r,onClick:n,children:r?"Retrying…":"Retry"})]})}function FA({detail:e,showArchivedChildren:t,inlineEditor:r,selectedChildWorkstreamId:n,currentWorkspaceId:s,currentActorId:i,theme:l,onOpenNestedWorkstreamDetails:c,onArchivePlanningTask:d,onArchiveResolvedWorkstream:m,onArchiveResolvedEntity:f,onEdit:g,onChangeOwner:h,onChangePlanningOwner:y,onChangePlanningIdentity:k,onArchive:v,onUnarchive:A,onCreateTaskInWorkstream:b,onCreateWorkstreamInInitiative:w,onOpenTaskById:R,onChangeTaskAssignee:N,taskReferences:j,onAssignTaskToWorkstream:E,onAssignInitiativeToWorkstream:S,onAttachTaskToWorkstreamByReference:L,onAttachWorkstreamToInitiativeByReference:_,onAddPlanningContextFile:T,onRemovePlanningContextFile:H,onUpdatePlanningContextCaption:q,parentInitiative:z=null,assigneeOptions:M,linkOptions:Z,showTaskCardStatusLabel:J=!1,taskArrangeMode:ee="execution",onTaskArrangeModeChange:te=()=>{},onReorderWorkstreamTasks:fe,onSetTaskStatus:Ie,hydrationState:$e,onRetryHydration:Ye}){const ye=ne.useId(),[ge,oe]=ne.useState(!1),[ie,me]=ne.useState(null),[W,V]=ne.useState(null),[B,D]=ne.useState(!1),[be,Se]=ne.useState(null),[K,Y]=ne.useState(!1),[G,ae]=ne.useState(!1),[_e,Oe]=ne.useState(!1),[Fe,st]=ne.useState(null),[ft,xe]=ne.useState(String(e.item.ownerId||"")),[ke,ve]=ne.useState(!1),{active:Ve}=uC(),Ne=String(Ve?.data?.current?.type||""),de=e.type==="workstream"&&Ne==="task-card",x=e.type==="initiative"&&Ne==="planning-workstream",le=e.type==="initiative"?"planning-initiative-target":"planning-workstream-target",{setNodeRef:Re,isOver:Je}=hw({id:`${le}:detail:${e.item.id}`,data:e.type==="initiative"?{type:le,initiativeId:e.item.id}:{type:le,workstreamId:e.item.id}}),X=e.type==="initiative"?"Workstreams":"Tasks",Ze=ne.useMemo(()=>{if(e.type!=="initiative")return[];const he=new Set(e.item.workstreams.map(Et=>Et.id)),Ke=(e.item.allWorkstreams||[]).filter(Et=>!!Et.isArchived&&!he.has(Et.id));return[...e.item.workstreams,...Ke]},[e.item,e.type]),re=ne.useMemo(()=>e.type!=="workstream"?[]:e.item.tasks||[],[e.item,e.type]),Ee=ne.useMemo(()=>new Map(M.filter(he=>!String(he.archivedAt||"").trim()).map(he=>[String(he.value||"").trim(),he])),[M]),je=t?Ze:Ze.filter(he=>!he.isArchived),Pe=ew(t?re:re.filter(he=>!he.isArchived),ee),Ce=e.type==="initiative"?je.length:Pe.length,Te=e.type==="initiative"?"Initiative":"Workstream",pe=e.type==="initiative"?ws(e.item):Ho(e.item),Me=Y_({entityType:e.type,isArchived:e.item.isArchived,taskCount:e.item.taskCount,completedTaskCount:e.item.completedTaskCount,archiveReady:e.item.archiveReady,activeWorkstreamCount:e.item.archiveActiveWorkstreamCount}),et=Me.mode==="archived"?`Unarchive ${Te.toLowerCase()}`:Me.mode==="blocked"?`Archive unavailable — active ${Me.remainingKind==="task"?"tasks":"workstreams"} remain`:Me.mode==="checking"?"Archive availability is still loading":`Archive ${Te.toLowerCase()}`;ne.useEffect(()=>{oe(!1),me(null),V(null),D(!1),ae(!1)},[e.item.id,e.type]),ne.useEffect(()=>{xe(String(e.item.ownerId||""))},[e.item.id,e.item.ownerId,e.type]);const Ue=ne.useCallback(async he=>{if(!h||ke||he===ft)return;const Ke=ft;xe(he),ve(!0);try{await h(he)}catch{xe(Ke)}finally{ve(!1)}},[ke,h,ft]),yt=ne.useCallback(async()=>{if(!(!f||_e)){Oe(!0);try{await f(e.item.id)&&ae(!1)}finally{Oe(!1)}}},[_e,e.item.id,f]),Le=e.type==="initiative"?!!_:!!L,mt=ne.useCallback(async he=>{if(ge)return;const Ke=e.type==="initiative"?_:L;if(Ke){oe(!0);try{await Ke(e.item.id,he.referenceLabel)}finally{oe(!1)}}},[e.item.id,e.type,ge,L,_]),kt=ne.useCallback(async he=>{if(!(!S||e.type!=="workstream"||B)){D(!0);try{await S(e.item.id,he.referenceLabel)}finally{D(!1)}}},[e.item.id,e.type,B,S]),He=e.type==="workstream"&&z?ws(z):"",rt=ne.useMemo(()=>new Set(e.type==="initiative"?Ze.map(he=>he.id):re.map(he=>he.id)),[Ze,e.type,re]),It=ne.useMemo(()=>(e.type==="initiative"?Z.workstreams:Z.tasks).filter(he=>!rt.has(he.id)),[e.type,Z.tasks,Z.workstreams,rt]),Xe=ne.useCallback(async()=>{if(!(!ie||B)){D(!0);try{if(ie.entityType==="workstream"){if(!S)return;const he=e.type==="initiative"?pe:He;if(await S?.(ie.id,null)===!1)return;V({entityType:ie.entityType,id:ie.id,message:`${ie.referenceLabel} removed from its initiative.`,onUndo:async()=>{if(!he)return;await S?.(ie.id,he)!==!1&&V(null)}})}else{if(!E||await E(ie.id,null)===!1)return;V({entityType:ie.entityType,id:ie.id,message:`${ie.referenceLabel} removed from this workstream.`,onUndo:async()=>{await E(ie.id,e.item.id)!==!1&&V(null)}})}me(null)}finally{D(!1)}}},[e.item.id,e.type,pe,B,S,E,He,ie]),wt=ne.useCallback(async()=>{if(!(!W||B)){D(!0);try{await W.onUndo()}finally{D(!1)}}},[B,W]),at=ne.useCallback((he,Ke)=>W?.entityType===he&&W.id===Ke?a.jsxs("div",{className:ze.relationshipRecovery,role:"status",children:[a.jsx("span",{children:W.message}),a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:B,onClick:()=>{wt()},children:B?"Restoring…":"Undo"})]}):null,[wt,B,W]),U=W&&!rt.has(W.id)?a.jsxs("div",{className:ze.relationshipRecovery,role:"status",children:[a.jsx("span",{children:W.message}),a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:B,onClick:()=>{wt()},children:B?"Restoring…":"Undo"})]}):null;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:ze.detailHero,children:[a.jsxs("div",{className:ze.detailTopRow,children:[a.jsxs("div",{className:ze.detailReferenceRow,children:[e.type==="workstream"?a.jsx(a.Fragment,{children:He?a.jsxs(a.Fragment,{children:[a.jsx(Dd,{label:He,entityType:"initiative",entityName:z?.title}),a.jsx("span",{className:P.taskHierarchyDivider,children:"/"}),r?null:a.jsx(Sg,{disabled:!S,onClick:()=>{me({entityType:"workstream",id:e.item.id,referenceLabel:pe,title:e.item.title,parentLabel:z?`${ws(z)} ${z.title}`.trim():He})},title:"Unlink workstream from initiative",ariaLabel:"Unlink workstream from initiative",children:a.jsx(Um,{size:14,"aria-hidden":"true"})})]}):null}):null,e.type==="workstream"&&!He&&!r?a.jsx(ty,{options:Z.initiatives,entityLabel:"initiative",onSelect:kt,disabled:!S||B,iconTrigger:!0,triggerTitle:"Link initiative"}):null,a.jsx(Dd,{label:pe||"Reference pending",entityType:e.type,entityName:e.item.title,pending:!pe})]}),a.jsx("div",{className:ze.detailTopActions,children:r?a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:r.onCancel,disabled:r.isSubmitting,children:"Cancel"}),a.jsx("button",{type:"submit",form:ye,className:"tf-button-primary tf-button-compact",disabled:r.isSubmitting,children:r.isSubmitting?"Saving…":"Save"})]}):a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:"tf-control-icon",disabled:Me.mode==="blocked"||Me.mode==="checking",onClick:()=>{Me.mode==="archived"?A?.():Me.mode==="empty"?v?.():Me.mode==="ready"&&ae(!0)},title:et,"aria-label":et,"aria-expanded":Me.mode==="ready"?G:void 0,children:Me.mode==="archived"?a.jsx($i,{size:14,"aria-hidden":"true"}):a.jsx(Pd,{size:14,"aria-hidden":"true"})}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:g,title:`Edit ${Te.toLowerCase()} details`,"aria-label":`Edit ${Te.toLowerCase()} details`,children:a.jsx(rC,{size:14,"aria-hidden":"true"})})]})})]}),G&&Me.mode==="ready"?a.jsx(tw,{entityType:e.type,title:e.item.title,activeTaskCount:e.item.archiveActiveTaskCount,activeWorkstreamCount:e.item.archiveActiveWorkstreamCount,busy:_e,onCancel:()=>ae(!1),onConfirm:()=>{yt()}}):null,e.type==="workstream"?at("workstream",e.item.id):null,r?a.jsx(rw,{editor:r.editor,draftTitle:r.draftTitle,draftDescription:r.draftDescription,draftOwner:r.draftOwner,draftInitiativeId:r.draftInitiativeId,assigneeOptions:M,initiativeLinkOptions:Z.initiatives,draftInitiativeSummary:r.draftInitiativeSummary,onChangeDraftTitle:r.onChangeDraftTitle,onChangeDraftDescription:r.onChangeDraftDescription,onChangeDraftOwner:r.onChangeDraftOwner,onChangeDraftInitiativeId:r.onChangeDraftInitiativeId,onCancel:r.onCancel,onSubmit:r.onSubmit,isSubmitting:r.isSubmitting,inline:!0,formId:ye}):a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:ze.detailTitleRow,children:[a.jsx(vp,{entityType:e.type,entityId:e.item.id,icon:e.item.icon,color:e.item.color,size:"detail",disabled:!!e.item.isArchived,onChange:k?he=>k(e.type,e.item.id,he):void 0}),a.jsx("h3",{className:ze.detailTitle,children:e.item.title})]}),a.jsx(jee,{description:e.item.description,label:Te,taskReferences:j,className:`${ze.detailDescription} ${P.appScrollbar} tf-scrollbar`.trim(),markdownClassName:ze.detailDescriptionMarkdown})]}),a.jsxs("div",{className:ze.detailOwnerField,children:[a.jsx("span",{className:ze.detailOwnerLabel,children:"Owner"}),a.jsx(rb,{value:ft,disabled:!h||ke,onChange:he=>{Ue(he)},ariaLabel:`${Te} owner`,options:M,className:`${tb.control} ${ze.ownerSelect}`})]}),e.item.taskCount>0?a.jsx(oT,{value:e.item.progressPercent,label:`${e.item.progressPercent}% resolved`,statusCounts:e.item.statusCounts}):a.jsx(nT,{}),a.jsx(iT,{item:e.item,workstreamCount:e.type==="initiative"?e.item.workstreamCount??e.item.workstreams.length:void 0,className:ze.detailSummaryMeta}),e.item.taskCount>0?a.jsx("span",{className:ze.passiveGuidance,children:"Lifetime progress includes archived tasks."}):null]}),a.jsxs("div",{ref:Re,className:`${ze.listCard} ${de||x?ze.sectionDropReady:""} ${Je?ze.sectionDropActive:""} ${de||x?ze.sectionDropMode:""}`.trim(),children:[a.jsxs("div",{className:ze.sectionHeaderRow,children:[a.jsxs("div",{className:ze.sectionTitle,children:[X," (",Ce,")"]}),a.jsx("div",{className:ze.headerActionGroup,children:e.type==="initiative"?a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create workstream in this initiative","aria-label":"Create workstream in this initiative",onClick:()=>w?.(e.item.id),children:a.jsx(di,{size:15})}):a.jsx("button",{type:"button",className:"tf-control-icon",title:"Create task in this workstream","aria-label":"Create task in this workstream",onClick:()=>b?.(e.item.id),children:a.jsx(di,{size:15})})})]}),a.jsx("div",{className:ze.linkPickerRow,children:a.jsx(ty,{options:It,entityLabel:e.type==="initiative"?"workstream":"task",onSelect:mt,disabled:!Le||ge})}),e.type==="workstream"?a.jsx(pte,{value:ee,onChange:te}):null,e.type==="initiative"?je.length>0?je.map(he=>{const Ke=Ho(he),Et=()=>c?.(he.id),vt=n===he.id,Bt=be===he.id,dr=async()=>{if(!(!m||K)){Y(!0);try{await m(he.id)&&Se(null)}finally{Y(!1)}}};return a.jsx("div",{className:`${ze.listItemButton} ${ze.detailCardButton}`.trim(),children:a.jsxs("div",{className:`${ze.listItem} ${ze.detailChildCard} ${vt?ze.detailChildCardSelected:""} ${he.isArchived?ze.detailChildCardArchived:""}`.trim(),children:[a.jsxs("div",{className:ze.detailChildCardTopRow,children:[a.jsxs("div",{className:ze.detailChildReferenceRow,children:[a.jsx(Sg,{disabled:!S,onClick:er=>{er.stopPropagation(),me({entityType:"workstream",id:he.id,referenceLabel:Ke,title:he.title,parentLabel:`${pe} ${e.item.title}`.trim()})},title:`Unlink ${Ke||he.title} from initiative`,ariaLabel:`Unlink ${Ke||he.title} from initiative`,children:a.jsx(Um,{size:14,"aria-hidden":"true"})}),Ke?a.jsx(Dd,{label:Ke,entityType:"workstream",entityName:he.title}):a.jsx("span",{"aria-hidden":"true"})]}),a.jsx("div",{className:ze.detailChildActions,onClick:er=>er.stopPropagation(),children:he.archiveReady&&!he.isArchived&&m?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>Se(he.id),title:"Archive completed workstream","aria-label":`Archive completed workstream ${he.title}`,"aria-expanded":Bt,children:a.jsx(Pd,{size:14,"aria-hidden":"true"})}):null})]}),at("workstream",he.id),Bt?a.jsx(tw,{entityType:"workstream",title:he.title,activeTaskCount:he.archiveActiveTaskCount,busy:K,onCancel:()=>Se(null),onConfirm:()=>{dr()}}):null,a.jsx("div",{role:"button",tabIndex:0,"aria-current":vt?"true":void 0,className:ze.listItemText,onClick:Et,onKeyDown:er=>{er.key!=="Enter"&&er.key!==" "||(er.preventDefault(),Et())},children:a.jsx(cT,{item:he,entityType:"workstream",ownerOption:he.ownerId&&Ee.has(he.ownerId)?dc(Ee.get(he.ownerId)):void 0,ownerOptions:M.map(dc),onChangeOwner:y?er=>y("workstream",he.id,er==="unassigned"?"":er):void 0,onChangeIdentity:k?er=>k("workstream",he.id,er):void 0})})]})},he.id)}):a.jsx("div",{className:ze.passiveGuidance,children:"No workstreams are linked to this initiative."}):Pe.length>0?a.jsx(wte,{tasks:Pe,mode:ee,onReorder:fe?he=>fe(e.item.id,lte(ew(re,"execution"),he)):void 0,children:he=>{const Ke=Ss(he)||he.id,Et=zo(he.status);return a.jsx("div",{className:`${ze.listItemButton} ${ze.detailCardButton}`.trim(),children:a.jsx(lT,{task:he,assigneeOption:he.assignee&&Ee.has(he.assignee)?dc(Ee.get(he.assignee)):void 0,assigneeOptions:M.map(dc),showStatusLabel:J,onOpen:R?()=>R(he.id):void 0,onAssigneeChange:N?vt=>N(he.id,vt):void 0,onStatusChange:Ie?vt=>Ie(he.id,vt):void 0,feedback:at("task",he.id),referenceAction:a.jsx(Sg,{disabled:!E,onClick:vt=>{vt.stopPropagation(),me({entityType:"task",id:he.id,referenceLabel:Ke,title:he.title,parentLabel:`${pe} ${e.item.title}`.trim()})},title:`Unlink ${Ke||he.title} from workstream`,ariaLabel:`Unlink ${Ke||he.title} from workstream`,children:a.jsx(Um,{size:14,"aria-hidden":"true"})}),actions:!he.isArchived&&(Et.value==="done"||Et.value==="cancelled")&&d?a.jsx("button",{type:"button",className:"tf-control-icon",disabled:Fe===he.id,onClick:async vt=>{vt.stopPropagation(),st(he.id);try{await d(he.id)}finally{st(null)}},title:"Archive task","aria-label":`Archive task ${Ke||he.title}`,children:a.jsx(Pd,{size:14,"aria-hidden":"true"})}):void 0})},he.id)}}):a.jsx("div",{className:ze.passiveGuidance,children:"No tasks are linked to this workstream."}),U]}),a.jsx("div",{className:ze.listCard,children:a.jsx(Eee,{entityType:e.type,entityId:e.item.id,referenceLabel:pe,workspaceId:s,attachments:e.item.attachments,readOnly:!!e.item.isArchived,onAddAttachment:he=>T?.(e.type,e.item.id,he),onRemoveAttachment:he=>H?.(e.type,e.item.id,he),onUpdateAttachmentCaption:(he,Ke)=>q?.(e.type,e.item.id,he,Ke)})}),a.jsx("div",{className:ze.listCard,children:a.jsx(Nee,{entityType:e.type,item:e.item,assigneeOptions:M.map(dc),currentActorId:i,taskReferences:j,parentInitiative:z,listClassName:ze.activityTimelineList,emptyClassName:ze.activityTimelineEmpty,hydrationState:$e,onRetryHydration:Ye})}),a.jsx(Tte,{item:ie,busy:B,theme:l,onCancel:()=>me(null),onConfirm:()=>{Xe()}})]})}function rw({editor:e,draftTitle:t,draftDescription:r,draftOwner:n,draftInitiativeId:s,draftIcon:i,draftColor:l,assigneeOptions:c,initiativeLinkOptions:d,draftInitiativeSummary:m,onChangeDraftTitle:f,onChangeDraftDescription:g,onChangeDraftOwner:h,onChangeDraftInitiativeId:y,onChangeDraftIcon:k,onChangeDraftColor:v,onCancel:A,onSubmit:b,isSubmitting:w,inline:R=!1,formId:N}){const j=e.entityType==="initiative"?"Initiative":"Workstream",E=ne.useId(),S=ne.useId(),L=ne.useId(),_=ne.useRef(null),[T,H]=ne.useState(null),q=w?e.mode==="create"?`Creating ${j}...`:`Saving ${j}...`:e.mode==="create"?`Create ${j}`:`Save ${j}`,z=ne.useCallback(Z=>{if(Z.preventDefault(),!t.trim()){H(`${j} title is required.`),_.current?.focus();return}H(null),b()},[t,j,b]),M=ne.useCallback(Z=>{!R||Z.key!=="Escape"||w||(Z.preventDefault(),A())},[R,w,A]);return a.jsxs("form",{id:N,className:`${ze.editorCard} ${R?ze.inlineEditorCard:""}`.trim(),onSubmit:z,onKeyDown:M,noValidate:!0,children:[e.mode==="create"&&k&&v?a.jsxs("div",{className:ze.editorIdentityField,children:[a.jsx(vp,{entityType:e.entityType,entityId:"create-preview",icon:i,color:l||"blue",size:"detail",onChange:Z=>{Object.prototype.hasOwnProperty.call(Z,"icon")&&k(Z.icon??null),Object.prototype.hasOwnProperty.call(Z,"color")&&v(Z.color??null)}}),a.jsx("span",{children:"Choose an icon and color"})]}):null,a.jsxs("div",{className:ze.editorField,children:[a.jsxs("label",{className:ze.editorLabel,htmlFor:E,children:[j," title"]}),a.jsx("input",{ref:_,id:E,"data-planning-editor-title":!0,className:P.input,disabled:w,required:!0,"aria-invalid":T?"true":void 0,"aria-describedby":T?S:void 0,value:t,onChange:Z=>{T&&H(null),f(Z.target.value)},placeholder:e.entityType==="initiative"?"Enter initiative title":"Enter workstream title"}),T?a.jsx("p",{id:S,className:"tf-text-error",children:T}):null]}),a.jsxs("div",{className:ze.editorField,children:[a.jsxs("label",{className:ze.editorLabel,htmlFor:L,children:[j," description"]}),a.jsx("textarea",{id:L,className:P.textarea,disabled:w,value:r,onChange:Z=>g(Z.target.value),placeholder:e.entityType==="initiative"?"Describe the broader outcome this initiative is meant to achieve.":"Describe the lane of work this workstream will coordinate.",rows:5})]}),e.entityType==="workstream"&&a.jsxs("div",{className:ze.editorField,children:[a.jsx("span",{className:ze.editorLabel,children:"Initiative"}),a.jsxs("div",{className:ze.editorRelationshipRow,children:[a.jsx(ty,{options:d,selectedId:m?.id||"",entityLabel:"initiative",disabled:w,onSelect:Z=>y(Z.referenceLabel)}),s.trim()?a.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:w,onClick:()=>y(""),children:"Remove"}):null]})]}),R?null:a.jsxs("div",{className:ze.editorField,children:[a.jsxs("span",{className:ze.editorLabel,children:[j," owner"]}),a.jsx(rb,{disabled:w,value:n,onChange:h,ariaLabel:`${j} owner`,options:c,className:ze.editorSelect})]}),R?null:a.jsxs("div",{className:ze.editorActions,children:[a.jsx("button",{type:"button",className:P.secondaryHeaderBtn,onClick:A,disabled:w,children:"Cancel"}),a.jsx("button",{type:"submit",className:P.primaryUpdateBtn,disabled:w,children:q})]})]})}function Ute({open:e,leftOffset:t=0,returnFocusRef:r,onWidthChange:n,initiatives:s,standaloneWorkstreams:i,planningLoadState:l,onRetryPlanning:c,taskScope:d,activeInitiativeId:m,activeWorkstreamId:f,navigatorSort:g,navigatorSortReady:h,onNavigatorSortChange:y,taskArrangeMode:k="execution",onTaskArrangeModeChange:v=()=>{},onReorderWorkstreamTasks:A,planningFavorites:b,onTogglePlanningFavorite:w,favoritesSectionCollapsed:R,initiativesSectionCollapsed:N,workstreamsSectionCollapsed:j,onToggleFavoritesSection:E,onToggleInitiativesSection:S,onToggleWorkstreamsSection:L,expandedInitiativeIds:_,detail:T,editor:H,secondaryEditor:q=null,secondaryPane:z,primaryHydrationState:M,secondaryHydrationState:Z,onRetryPrimaryHydration:J,onRetrySecondaryHydration:ee,currentWorkspaceId:te,currentOwnerId:fe,theme:Ie,assigneeOptions:$e,linkOptions:Ye,showTaskCardStatusLabel:ye=!1,draftInitiativeSummary:ge,draftTitle:oe,draftDescription:ie,draftOwner:me,draftInitiativeId:W,draftIcon:V=null,draftColor:B=null,onChangeDraftTitle:D,onChangeDraftDescription:be,onChangeDraftOwner:Se,onChangeDraftInitiativeId:K,onChangeDraftIcon:Y=()=>{},onChangeDraftColor:G=()=>{},onCollapseTreePane:ae,onExpandTreePane:_e,onCollapsePrimaryPane:Oe,onExpandPrimaryPane:Fe,onCollapseSecondaryPane:st,onExpandSecondaryPane:ft,onBackFromSecondary:xe,treeCollapsed:ke,primaryCollapsed:ve,secondaryCollapsed:Ve,onCancelEditor:Ne,onCancelSecondaryEditor:de,onSubmitEditor:x,isSubmittingEditor:le,onCreateInitiative:Re,onCreateWorkstream:Je,onToggleInitiative:X,onSelectInitiative:Ze,onSelectWorkstream:re,onOpenInitiativeDetails:Ee,onOpenWorkstreamDetails:je,onOpenNestedWorkstreamDetails:Pe,onEditInitiative:Ce,onEditWorkstream:Te,onChangePlanningOwner:pe,onChangePlanningIdentity:Me=()=>{},onChangeTaskAssignee:et,onArchiveInitiative:Ue,onUnarchiveInitiative:yt,onArchiveWorkstream:Le,onUnarchiveWorkstream:mt,onArchivePlanningTask:kt,onArchiveResolvedWorkstream:He,onArchiveResolvedInitiative:rt,onCreateTaskInWorkstream:It,onCreateWorkstreamInInitiative:Xe,onAssignInitiativeToWorkstream:wt,onOpenTaskById:at,onSetTaskStatus:U,taskReferences:he,onAssignTaskToWorkstream:Ke,onAttachTaskToWorkstreamByReference:Et,onAttachWorkstreamToInitiativeByReference:vt,onAddPlanningContextFile:Bt,onRemovePlanningContextFile:dr,onUpdatePlanningContextCaption:er}){const cr=H?.mode==="edit"&&T&&H.entityType===T.type&&H.targetId===T.item.id?H:null,Ot=q?.mode==="edit"&&z?.kind==="detail"&&q.entityType===z.detail.type&&q.targetId===z.detail.item.id?q:null,fr=H&&!cr?H:null,Ar=!!(T||fr),Lr=!!z,Wr=fr?.entityType||T?.type||null,De=Wr==="initiative",nt=Wr==="workstream",[pt,ut]=ne.useState(!1),[Tt,Xt]=ne.useState(!1),[Nt,Qt]=ne.useState(!1),[St,Kt]=ne.useState({initiative:!1,workstream:!1}),Ft=ne.useMemo(()=>{const xr=[...s.flatMap(Dr=>Dr.allWorkstreams||Dr.workstreams),...i];return s.filter(Dr=>!!Dr.isArchived).length+xr.filter(Dr=>!!Dr.isArchived).length+xr.reduce((Dr,kn)=>Dr+(kn.tasks||[]).filter(tn=>!!tn.isArchived).length,0)},[s,i]),{availableWidth:ir,layoutMode:sr}=Bte(t),ot=sr==="wide",or=ot&&ke,Nr=ot&&ve,ur=ot&&Ve,lr=fT(or,!0,De?Nr:!pt,!0,nt?Nr:Lr?ur:!Tt),u=sr!=="narrow"||!Ar&&!Lr,bt=Ar&&(ot||!Lr),gt=Lr,Ir=ot?lr:sr==="medium"?Zm+(bt||gt?mc:0):ir,Vt=Math.max(0,Math.min(Ir,ir)),Ur=Math.max(0,Vt-(u?Zm:0)),$r=fr?fr.entityType==="initiative"?fr.mode==="create"?"New Initiative":"Edit Initiative":fr.mode==="create"?"New Workstream":"Edit Workstream":T?.type==="initiative"?"Initiative":"Workstream",Tn=z?.kind==="editor"?z.editor.mode==="create"?"New Workstream":"Edit Workstream":"Workstream",an=fr?null:T,Qr=z?.kind==="detail"?z.detail:null,Ge=ne.useCallback(xr=>{Kt(Dr=>({...Dr,[xr]:!Dr[xr]}))},[]),Gr=ne.useCallback(xr=>{const Dr=String(xr.initiativeId||"").trim();return Dr&&s.find(kn=>kn.id===Dr)||null},[s]),yr=ne.useRef(null),Yt=ne.useRef(null),Zt=ne.useRef(null),Sn=ne.useRef(null),$t=ne.useRef(null),Ut=ne.useRef(e),Fr=ne.useRef(""),Wn=Ot?`secondary:inline-editor:${Ot.targetId}`:z?`secondary:${z.kind}:${z.kind==="detail"?z.detail.item.id:`${z.editor.mode}:${z.editor.entityType}:${z.editor.mode==="edit"?z.editor.targetId:""}`}`:cr?`primary:inline-editor:${cr.targetId}`:fr?`primary:editor:${fr.mode}:${fr.entityType}:${fr.mode==="edit"?fr.targetId:""}`:T?`primary:detail:${T.type}:${T.item.id}`:"tree";ne.useEffect(()=>{const xr=Ut.current;if(Ut.current=e,xr&&!e){r?.current?.focus(),Fr.current="";return}if(!e||xr&&Fr.current===Wn)return;Fr.current=Wn;const Dr=gt?Zt.current:bt?Yt.current:yr.current,kn=window.requestAnimationFrame(()=>{(Dr?.querySelector("[data-planning-editor-title]")||Dr?.querySelector("[data-planning-pane-heading]"))?.focus()});return()=>window.cancelAnimationFrame(kn)},[Wn,e,r,bt,gt]);const da=ne.useCallback(()=>{if(H){Ne();return}T?.type==="initiative"&&Ee(""),T?.type==="workstream"&&je("")},[T,H,Ne,Ee,je]),ua=ne.useCallback(xr=>({flex:`0 0 ${xr}px`,width:`${xr}px`,minWidth:`${xr}px`,maxWidth:`${xr}px`}),[]);ne.useEffect(()=>{n?.(Vt)},[Vt,n]),ne.useEffect(()=>{pt&&Sn.current?.querySelector("[data-planning-pane-heading]")?.focus()},[pt]),ne.useEffect(()=>{Tt&&$t.current?.querySelector("[data-planning-pane-heading]")?.focus()},[Tt]);const en=T?.type==="workstream"?T.item:null,sn=en?Gr(en):ge,on=!!(sn||String(en?.initiativeId||"").trim()),xn=sn?{title:sn.title,description:en?`${en.title} belongs to this initiative.`:"This workstream will belong to the selected initiative.",action:en?{label:"Open initiative",onClick:()=>Ee(sn.id)}:void 0}:en&&on?{title:"Initiative unavailable",description:`${en.title} is assigned to an initiative that is not available in the current planning data.`}:en?{title:"Not linked to an initiative"}:{title:"No initiative selected"},cn={title:"No workstream selected"};return a.jsx("aside",{className:ze.drawer,"aria-label":"Planning","aria-hidden":!e,inert:!e,"data-layout":sr,style:{position:"absolute",top:0,left:e?`${t}px`:`${t-Vt-24}px`,bottom:0,width:`${Vt}px`,minWidth:0,maxWidth:`calc(100vw - ${t}px)`,borderRight:"1px solid var(--border-color)",background:"var(--bg-secondary)",boxSizing:"border-box",display:"flex",flexDirection:"column",zIndex:35,overflow:"hidden",pointerEvents:e?"auto":"none",transition:"left 220ms cubic-bezier(0.4, 0, 0.2, 1)",willChange:"left"},children:a.jsxs("div",{className:ze.drawerBody,children:[u&&(or?a.jsx(jm,{label:"Planning",onExpand:_e}):a.jsxs("div",{ref:yr,"data-planning-pane":"tree",className:`${ze.paneShell} ${P.appScrollbar} tf-scrollbar ${ze.treePane} ${Ar&&!ve?ze.treePaneSplit:""}`.trim(),style:ua(sr==="narrow"?Vt:Zm),children:[a.jsxs("div",{className:ze.paneHeader,children:[a.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:"Planning"}),a.jsxs("div",{className:ze.headerActionGroup,children:[a.jsx(dv,{visible:Nt,disabled:d==="deleted"||Ft===0,disabledLabel:d==="deleted"?"Archive visibility unavailable in Trash":void 0,itemLabel:"planning items",onToggle:()=>Qt(xr=>!xr)}),ot?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:ae,"aria-label":"Collapse Planning pane",title:"Collapse Planning pane",children:a.jsx(vo,{size:16,"aria-hidden":"true"})}):null]})]}),a.jsx("div",{className:ze.paneContent,"aria-busy":l.status==="loading"||l.isRefreshing,children:a.jsx($te,{initiatives:s,standaloneWorkstreams:i,planningLoadState:l,taskScope:d,showArchivedPlanning:Nt,currentOwnerId:fe,assigneeOptions:$e,showTaskCardStatusLabel:ye,taskArrangeMode:k,activeInitiativeId:m,activeWorkstreamId:f,navigatorSort:g,navigatorSortReady:h,onNavigatorSortChange:y,planningFavorites:b,onTogglePlanningFavorite:w,favoritesSectionCollapsed:R,initiativesSectionCollapsed:N,workstreamsSectionCollapsed:j,onToggleFavoritesSection:E,onToggleInitiativesSection:S,onToggleWorkstreamsSection:L,expandedInitiativeIds:_,detail:T,secondaryPane:z,onCreateInitiative:Re,onCreateWorkstream:Je,onToggleInitiative:X,onSelectInitiative:Ze,onSelectWorkstream:re,onOpenInitiativeDetails:Ee,onOpenWorkstreamDetails:je,onOpenNestedWorkstreamDetails:Pe,onOpenTaskById:at,onSetTaskStatus:U,onChangePlanningOwner:pe,onChangePlanningIdentity:Me,onChangeTaskAssignee:et,onArchivePlanningTask:kt,onArchiveResolvedWorkstream:He,onArchiveResolvedInitiative:rt,linkOptions:Ye,onAssignInitiativeToWorkstream:wt,onRetryPlanning:c})})]})),ot&&!De&&(pt?a.jsx($A,{label:"Initiative",title:xn.title,description:xn.description,action:xn.action,onCollapse:()=>ut(!1),paneRef:Sn}):a.jsx(jm,{label:"Initiative",muted:!on,onExpand:()=>ut(!0)})),bt&&(Nr?a.jsx(jm,{label:Wr==="initiative"?"Initiative":"Workstream",onExpand:Fe}):a.jsxs("div",{ref:Yt,"data-planning-pane":"primary",className:`${ze.paneShell} ${P.appScrollbar} tf-scrollbar ${ze.detailPane}`.trim(),style:ua(ot?mc:Ur),children:[a.jsxs("div",{className:ze.paneHeader,children:[sr==="narrow"?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:da,"aria-label":"Back to Planning",title:"Back to Planning",children:a.jsx(vo,{size:16,"aria-hidden":"true"})}):null,a.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:$r}),a.jsxs("div",{className:ze.headerActionGroup,children:[an?a.jsx(dv,{visible:St[an.type],disabled:WA(an)===0,itemLabel:an.type==="initiative"?"workstreams":"tasks",onToggle:()=>Ge(an.type)}):null,ot?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:Oe,"aria-label":`Collapse ${$r} pane`,title:`Collapse ${$r} pane`,children:a.jsx(vo,{size:16,"aria-hidden":"true"})}):null]})]}),a.jsx("div",{className:ze.paneContent,"aria-busy":M?.status==="loading",children:fr?a.jsx(rw,{editor:fr,draftTitle:oe,draftDescription:ie,draftOwner:me,draftInitiativeId:W,draftIcon:V,draftColor:B,assigneeOptions:$e,initiativeLinkOptions:Ye.initiatives,draftInitiativeSummary:ge,onChangeDraftTitle:D,onChangeDraftDescription:be,onChangeDraftOwner:Se,onChangeDraftInitiativeId:K,onChangeDraftIcon:Y,onChangeDraftColor:G,onCancel:Ne,onSubmit:x,isSubmitting:le}):T?a.jsx(FA,{detail:T,showArchivedChildren:St[T.type],inlineEditor:cr?{editor:cr,draftTitle:oe,draftDescription:ie,draftOwner:me,draftInitiativeId:W,draftInitiativeSummary:ge,onChangeDraftTitle:D,onChangeDraftDescription:be,onChangeDraftOwner:Se,onChangeDraftInitiativeId:K,onCancel:Ne,onSubmit:x,isSubmitting:le}:null,selectedChildWorkstreamId:z?.kind==="detail"?z.detail.item.id:null,currentWorkspaceId:te,currentActorId:fe,theme:Ie,assigneeOptions:$e,linkOptions:Ye,showTaskCardStatusLabel:ye,taskArrangeMode:k,onTaskArrangeModeChange:v,onReorderWorkstreamTasks:A,hydrationState:M,onRetryHydration:J,onSetTaskStatus:T.type==="workstream"?U:void 0,onArchivePlanningTask:T.type==="workstream"?kt:void 0,onArchiveResolvedWorkstream:T.type==="initiative"?He:void 0,onArchiveResolvedEntity:T.type==="initiative"?rt:He,onOpenNestedWorkstreamDetails:T.type==="initiative"?Pe:void 0,onCreateTaskInWorkstream:T.type==="workstream"?It:void 0,onCreateWorkstreamInInitiative:T.type==="initiative"?Xe:void 0,onOpenTaskById:T.type==="workstream"?at:void 0,onChangeTaskAssignee:T.type==="workstream"?et:void 0,taskReferences:he,onAssignTaskToWorkstream:T.type==="workstream"?Ke:void 0,onAssignInitiativeToWorkstream:wt,onAttachTaskToWorkstreamByReference:T.type==="workstream"?Et:void 0,onAttachWorkstreamToInitiativeByReference:T.type==="initiative"?vt:void 0,parentInitiative:T.type==="workstream"?Gr(T.item):null,onEdit:()=>T.type==="initiative"?Ce(T.item.id):Te(T.item.id),onChangeOwner:xr=>pe(T.type,T.item.id,xr),onChangePlanningOwner:pe,onChangePlanningIdentity:Me,onArchive:()=>T.type==="initiative"?Ue(T.item.id):Le(T.item.id),onUnarchive:()=>T.type==="initiative"?yt(T.item.id):mt(T.item.id),onAddPlanningContextFile:Bt,onRemovePlanningContextFile:dr,onUpdatePlanningContextCaption:er}):null})]})),ot&&!nt&&!Lr&&(Tt?a.jsx($A,{label:"Workstream",title:cn.title,description:cn.description,action:cn.action,onCollapse:()=>Xt(!1),paneRef:$t}):a.jsx(jm,{label:"Workstream",muted:!0,onExpand:()=>Xt(!0)})),gt&&(ur?a.jsx(jm,{label:"Workstream",onExpand:ft}):a.jsxs("div",{ref:Zt,"data-planning-pane":"secondary",className:`${ze.paneShell} ${P.appScrollbar} tf-scrollbar ${ze.detailPane}`.trim(),style:ua(ot?mc:Ur),children:[a.jsxs("div",{className:ze.paneHeader,children:[ot?null:a.jsx("button",{type:"button",className:"tf-control-icon",onClick:Ot&&de||xe,"aria-label":Ot?"Cancel workstream editing":`Back to ${$r}`,title:Ot?"Cancel workstream editing":`Back to ${$r}`,children:a.jsx(vo,{size:16,"aria-hidden":"true"})}),a.jsx("h2",{className:ze.paneHeaderLabel,tabIndex:-1,"data-planning-pane-heading":!0,children:Tn}),a.jsxs("div",{className:ze.headerActionGroup,children:[Qr?a.jsx(dv,{visible:St.workstream,disabled:WA(Qr)===0,itemLabel:"tasks",onToggle:()=>Ge("workstream")}):null,ot?a.jsx("button",{type:"button",className:"tf-control-icon",onClick:st,"aria-label":`Collapse ${Tn} pane`,title:`Collapse ${Tn} pane`,children:a.jsx(vo,{size:16,"aria-hidden":"true"})}):null]})]}),a.jsx("div",{className:ze.paneContent,"aria-busy":Z?.status==="loading",children:z?.kind==="editor"?a.jsx(rw,{editor:z.editor,draftTitle:oe,draftDescription:ie,draftOwner:me,draftInitiativeId:W,draftIcon:V,draftColor:B,assigneeOptions:$e,initiativeLinkOptions:Ye.initiatives,draftInitiativeSummary:ge,onChangeDraftTitle:D,onChangeDraftDescription:be,onChangeDraftOwner:Se,onChangeDraftInitiativeId:K,onChangeDraftIcon:Y,onChangeDraftColor:G,onCancel:xe,onSubmit:x,isSubmitting:le}):z?a.jsx(FA,{detail:z.detail,showArchivedChildren:St.workstream,inlineEditor:Ot?{editor:Ot,draftTitle:oe,draftDescription:ie,draftOwner:me,draftInitiativeId:W,draftInitiativeSummary:ge,onChangeDraftTitle:D,onChangeDraftDescription:be,onChangeDraftOwner:Se,onChangeDraftInitiativeId:K,onCancel:de||xe,onSubmit:x,isSubmitting:le}:null,currentWorkspaceId:te,currentActorId:fe,theme:Ie,assigneeOptions:$e,linkOptions:Ye,showTaskCardStatusLabel:ye,taskArrangeMode:k,onTaskArrangeModeChange:v,onReorderWorkstreamTasks:A,hydrationState:Z,onRetryHydration:ee,onSetTaskStatus:U,onArchivePlanningTask:kt,onArchiveResolvedEntity:He,onCreateTaskInWorkstream:It,onOpenTaskById:at,onChangeTaskAssignee:et,taskReferences:he,onAssignTaskToWorkstream:Ke,onAssignInitiativeToWorkstream:wt,onAttachTaskToWorkstreamByReference:Et,parentInitiative:Gr(z.detail.item),onEdit:()=>Te(z.detail.item.id),onChangeOwner:xr=>pe("workstream",z.detail.item.id,xr),onChangePlanningOwner:pe,onChangePlanningIdentity:Me,onArchive:()=>Le(z.detail.item.id),onUnarchive:()=>mt(z.detail.item.id),onAddPlanningContextFile:Bt,onRemovePlanningContextFile:dr,onUpdatePlanningContextCaption:er}):null})]}))]})})}function zte(e,t,r){const n=String(t||"").trim();if(n)return e.some(l=>l.id===n)?{initiativeId:n,invalid:!1}:{initiativeId:null,invalid:!0};const s=r.trim();if(!s)return{initiativeId:null,invalid:!1};const i=Wv(e,s);return i?{initiativeId:i.id,invalid:!1}:{initiativeId:null,invalid:!0}}function Hte(e){return e.taskScope==="open"&&e.summaryCount>0&&(e.loadingTasks||e.activeTaskCount===0||!e.archiveHydrated)}const wd={tasks:"Tasks",planning:"Planning",docs:"Documents",annotate:"Image Notes",workflowManager:"Workflow Manager",taskforceAgents:"Taskforce Agents",aiProfiles:"AI Profiles"},Vte=["tasks","planning","docs","annotate","workflowManager","taskforceAgents","aiProfiles"];function Gte(e){const t=e?.featureAccess||{},r={tasks:{id:"tasks",label:wd.tasks,featureKey:null,enabled:!0,fallbackModuleId:"tasks"},planning:{id:"planning",label:wd.planning,featureKey:Yb,enabled:t[Yb]?.allowed??!1,fallbackModuleId:"tasks"},docs:{id:"docs",label:wd.docs,featureKey:vv,enabled:t[vv]?.allowed??!0,fallbackModuleId:"tasks"},annotate:{id:"annotate",label:wd.annotate,featureKey:kv,enabled:t[kv]?.allowed??!1,fallbackModuleId:"tasks"},workflowManager:{id:"workflowManager",label:wd.workflowManager,featureKey:Kb,enabled:t[Kb]?.allowed??!1,fallbackModuleId:"tasks"},taskforceAgents:{id:"taskforceAgents",label:wd.taskforceAgents,featureKey:zm,enabled:t[zm]?.allowed??!1,fallbackModuleId:"tasks"},aiProfiles:{id:"aiProfiles",label:wd.aiProfiles,featureKey:qb,enabled:t[qb]?.allowed??!1,fallbackModuleId:"tasks"}};return Vte.map(n=>r[n])}function Kte(e){switch(e){case"planning":return{mode:e,moduleId:"planning",layoutVariant:"planning-module",headerSections:[],primaryAction:null};case"docs":return{mode:e,moduleId:"docs",layoutVariant:"docs-minimal",headerSections:[],primaryAction:null};case"annotate":return{mode:e,moduleId:"annotate",layoutVariant:"annotated-module",headerSections:[],primaryAction:null};case"workflowManager":return{mode:e,moduleId:"workflowManager",layoutVariant:"workflow-manager-module",headerSections:[],primaryAction:null};case"taskforceAgents":return{mode:e,moduleId:"taskforceAgents",layoutVariant:"taskforce-agents-module",headerSections:[],primaryAction:null};case"aiProfiles":return{mode:e,moduleId:"aiProfiles",layoutVariant:"ai-profiles-module",headerSections:[],primaryAction:null};default:return{mode:"tasks",moduleId:"tasks",layoutVariant:"tasks-default",headerSections:["search","sort","divider-primary","grouping","divider-secondary","task-display-actions"],primaryAction:"add-task"}}}function UA(e,t){const r=e==="agents"?"aiProfiles":e,n=t.find(s=>s.id===r);return n?n.enabled?n.id:n.fallbackModuleId:"tasks"}const qte="_weekLabel_vet2o_1",Yte="_sectionTitle_vet2o_6",Zte="_calendarHeader_vet2o_11",Jte="_monthLabel_vet2o_18",Xte="_weekdayGrid_vet2o_23",Qte="_weekdayLabel_vet2o_30",ere="_calendarGrid_vet2o_36",tre="_calendarDay_vet2o_42",rre="_calendarDayDot_vet2o_55",nre="_jumpRow_vet2o_67",are="_displaySection_vet2o_73",sre="_toggleLabel_vet2o_79",ore="_expiredSummary_vet2o_87",ire="_actionButton_vet2o_95",is={weekLabel:qte,sectionTitle:Yte,calendarHeader:Zte,monthLabel:Jte,weekdayGrid:Xte,weekdayLabel:Qte,calendarGrid:ere,calendarDay:tre,calendarDayDot:rre,jumpRow:nre,displaySection:are,toggleLabel:sre,expiredSummary:ore,actionButton:ire},zA=["mon","tue","wed","thu","fri","sat","sun"],cre={mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat",sun:"Sun"};function Rd(e){const t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0");return`${t}-${r}-${n}`}function Fm(e){const t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)return null;const r=new Date(Number(t[1]),Number(t[2])-1,Number(t[3]));return Number.isNaN(r.getTime())?null:r}function nw(e,t){const r=e.getDay(),n=t==="sunday"?-r:r===0?-6:1-r,s=new Date(e);return s.setHours(0,0,0,0),s.setDate(s.getDate()+n),s}function lre(e,t){return t==="sunday"?{sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6}[e]:{mon:0,tue:1,wed:2,thu:3,fri:4,sat:5,sun:6}[e]}function mT(e,t){const r=new Date(e);return r.setDate(e.getDate()+t),r}function dre(e){const t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)return null;const r=new Date(Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3]))),n=r.getUTCDay()||7;r.setUTCDate(r.getUTCDate()+4-n);const s=new Date(Date.UTC(r.getUTCFullYear(),0,1)),i=Math.ceil(((r.getTime()-s.getTime())/864e5+1)/7);return`${r.getUTCFullYear()}-W${String(i).padStart(2,"0")}`}const aw=320;function ure({open:e,onClose:t,scheduleSelectedDate:r,setScheduleSelectedDate:n,scheduleCalendarMonth:s,setScheduleCalendarMonth:i,scheduleShowWeekends:l,setScheduleShowWeekends:c,scheduleShowBacklog:d,setScheduleShowBacklog:m,scheduleOnlyExpired:f,setScheduleOnlyExpired:g,expiredScheduledCount:h,overdueDueCount:y,expiredLeafCandidates:k,expiredRecoveryCandidates:v,onMoveExpiredToSelectedWeek:A,onMoveExpiredToBacklog:b,scheduleBulkBusy:w,globalWeekStartsOn:R,resolvedLocale:N,todayDateOnly:j,scheduleBaseTasks:E,scheduleWeekStart:S,scheduleWeekLabel:L}){const _=ne.useMemo(()=>{const[M,Z]=s.split("-"),J=Number(M),ee=Number(Z);if(!Number.isInteger(J)||!Number.isInteger(ee)||ee<1||ee>12){const te=Fm(r)||new Date;return new Date(te.getFullYear(),te.getMonth(),1)}return new Date(J,ee-1,1)},[s,r]),T=ne.useMemo(()=>Yg(_,{month:"long",year:"numeric"},N),[_,N]),H=ne.useMemo(()=>{const M=nw(_,R);return Array.from({length:42},(Z,J)=>mT(M,J))},[_,R]),q=ne.useMemo(()=>{const M=new Map;for(const Z of E){const J=Z.scheduledDate||"";if(!J)continue;const te=!(Z.status==="done"||Z.status==="cancelled")&&J<j,fe=M.get(J);fe?(fe.count+=1,te&&(fe.hasExpired=!0)):M.set(J,{count:1,hasExpired:te})}return M},[E,j]),z=ne.useMemo(()=>R==="sunday"?["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]:["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],[R]);return a.jsxs("aside",{className:`${P.appScrollbar} tf-scrollbar tf-sidebar-shell`,style:{transform:e?"translateX(0)":"translateX(108%)",pointerEvents:e?"auto":"none",transition:"transform 220ms cubic-bezier(0.4, 0, 0.2, 1)",willChange:"transform",width:`${aw}px`,minWidth:`${aw}px`},children:[a.jsxs("div",{className:"tf-sidebar-header",children:[a.jsxs("div",{className:"tf-sidebar-title",children:[a.jsx(H0,{size:16}),a.jsx("span",{children:"Schedule Controls"})]}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:t,title:"Hide Schedule Sidebar",children:a.jsx(Ld,{size:16})})]}),a.jsxs("div",{className:is.weekLabel,children:["Week of ",L]}),a.jsxs("div",{className:"tf-sidebar-section tf-surface-panel",children:[a.jsxs("div",{className:is.calendarHeader,children:[a.jsx("button",{className:"tf-control-icon",onClick:()=>{const M=new Date(_);M.setMonth(_.getMonth()-1),i(`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}`)},title:"Previous month",children:a.jsx(vo,{size:14})}),a.jsx("div",{className:is.monthLabel,children:T}),a.jsx("button",{className:"tf-control-icon",onClick:()=>{const M=new Date(_);M.setMonth(_.getMonth()+1),i(`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}`)},title:"Next month",children:a.jsx(Ld,{size:14})})]}),a.jsx("div",{className:is.weekdayGrid,children:z.map(M=>a.jsx("div",{className:is.weekdayLabel,children:M},M))}),a.jsx("div",{className:is.calendarGrid,children:H.map(M=>{const Z=Rd(M),J=M.getMonth()!==_.getMonth(),ee=nw(M,R),te=Rd(ee)===Rd(S),fe=Z===r,Ie=Z===j,$e=Z<j,Ye=q.get(Z),ye=!!Ye,ge=!!Ye?.hasExpired;return a.jsxs("button",{onClick:()=>{n(Z),i(`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}`)},className:is.calendarDay,style:{"--calendar-day-border":fe?"1px solid #2563eb":Ie?"1px solid rgba(245, 158, 11, 0.95)":"1px solid transparent","--calendar-day-background":fe?"rgba(59,130,246,0.22)":Ie?"rgba(245,158,11,0.16)":te?"rgba(59,130,246,0.18)":"transparent","--calendar-day-color":J?"var(--text-helper)":"var(--text-primary)","--calendar-day-font-weight":fe||Ie?700:500,"--calendar-day-opacity":$e?.42:1},title:`${Ie?`${Z} (Today)`:Z}`+(ye?` • ${Ye?.count} scheduled`:"")+(ge?" • includes expired":""),children:[M.getDate(),ye&&a.jsx("span",{className:is.calendarDayDot,style:{"--calendar-dot-background":ge?"#ef4444":"#3b82f6","--calendar-dot-opacity":J?.6:.95}})]},Z)})}),a.jsx("div",{className:is.jumpRow,children:a.jsx("button",{className:"tf-control-icon",onClick:()=>{const M=new Date;n(Rd(M)),i(`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}`)},title:"Jump to current week",children:"Today"})})]}),a.jsxs("div",{className:`tf-sidebar-section tf-surface-panel ${is.displaySection}`,children:[a.jsx("div",{className:is.sectionTitle,children:"Display"}),a.jsxs("label",{className:is.toggleLabel,children:[a.jsx("input",{type:"checkbox",checked:l,onChange:M=>c(M.target.checked)}),"Show weekends"]}),a.jsxs("label",{className:is.toggleLabel,children:[a.jsx("input",{type:"checkbox",checked:d,onChange:M=>m(M.target.checked)}),"Show backlog"]}),a.jsxs("label",{className:is.toggleLabel,children:[a.jsx("input",{type:"checkbox",checked:f,onChange:M=>g(M.target.checked)}),"Only expired/overdue"]})]}),h>0&&a.jsxs("div",{className:"tf-sidebar-section tf-surface-panel",children:[a.jsx("div",{className:is.sectionTitle,children:"Expired Tasks"}),a.jsxs("div",{className:is.expiredSummary,children:[a.jsxs("span",{children:[h," expired"]}),a.jsxs("span",{children:[y," overdue"]})]}),a.jsx("button",{className:`tf-control-icon ${is.actionButton}`,onClick:A,disabled:w||k.length===0,title:"Move expired leaf tasks to the selected week while keeping weekday alignment",children:w?"Working...":"Schedule to selected week"}),a.jsx("button",{className:`tf-control-icon ${is.actionButton}`,onClick:b,disabled:w||v.length===0,title:"Unschedule expired/overdue tasks back to backlog",children:w?"Working...":"Unschedule to backlog"})]})]})}const fre=[{value:"implementation-plan",label:"Plans"},{value:"review",label:"Reviews"},{value:"walkthrough",label:"Walkthroughs"},{value:"planning",label:"Planning"},{value:"other",label:"Other"}],mre=[{value:"attached",label:"Attached"},{value:"unattached",label:"Unattached"}];function pT(e,t){return e&&(t==="owner"||t==="admin")}function pre(e,t,r){return pT(e,t)&&r==="team"}function hre({isOpen:e,workspaceId:t,refreshKeys:r}){const[n,s]=o.useState([]),[i,l]=o.useState(!1),[c,d]=o.useState(null),m=o.useRef(null),f=o.useRef(null);o.useLayoutEffect(()=>{f.current=yre(m.current,f.current)},[n]);const g=o.useCallback(async()=>{const h=await fetch(`/api/taskforce/sync/events?workspace_id=${encodeURIComponent(t)}&limit=15`,{method:"GET",credentials:"include"});if(!h.ok)throw new Error(`Failed to load sync events (${h.status})`);const y=await h.json().catch(()=>({}));return Array.isArray(y?.events)?y.events.filter(k=>k&&typeof k=="object"):[]},[t]);return o.useEffect(()=>{if(!e)return;let h=!1;const y=n.length===0;return y&&l(!0),g().then(k=>{h||(f.current=gre(m.current),s(v=>{const A=v.length===0?k:TJ(v,k,15);return xJ(v,A)?v:A}),d(null))}).catch(k=>{if(h)return;const v=k instanceof Error&&k.message.trim().length>0?k.message.trim():"Unable to load recent sync events.";d(v),y&&s([])}).finally(()=>{h||y&&l(!1)}),()=>{h=!0}},[e,g,...r]),{syncRecentEvents:n,syncRecentEventsLoading:i,syncRecentEventsError:c,syncEventsListRef:m,loadRecentSyncEvents:g}}function gre(e){return e&&e.scrollTop>8?{scrollTop:e.scrollTop,scrollHeight:e.scrollHeight}:null}function yre(e,t){if(!t||!e)return null;const r=e.scrollHeight-t.scrollHeight;return e.scrollTop=t.scrollTop+Math.max(0,r),null}function kre({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:r,workspaceSyncRecommendedAction:n,formattedLastSyncTime:s,formattedLastPullTime:i,formattedLastPushTime:l,workspaceSyncDiagnostics:c,workspaceSyncPendingChanges:d,syncLastError:m,workspaceSyncPhase:f,referenceMismatchCount:g,syncRecentEvents:h,loadRecentSyncEvents:y,pushNotice:k,resetWorkspaceSyncCursorAndPull:v,workspaceSyncBusy:A,durableRepairQueueAvailable:b=!1}){const[w,R]=o.useState(!1),[N,j]=o.useState(!1),[E,S]=o.useState(!1),L=o.useCallback(async()=>{try{const H=h.length>0?h:await y(),q=OJ({currentWorkspaceId:e,syncStatusLabel:t,workspaceSyncSummary:r,workspaceSyncRecommendedAction:n,formattedLastSyncTime:s,formattedLastPullTime:i,formattedLastPushTime:l,workspaceSyncDiagnostics:c,workspaceSyncPendingChanges:d,syncLastError:m,syncStageLabel:H_(f,w,A),referenceMismatchCount:g,syncRecentEvents:H});await navigator.clipboard.writeText(q),S(!0),window.setTimeout(()=>{S(!1)},1800),k("Sync details copied to clipboard.","success")}catch{S(!1),k("Failed to copy sync details.","error")}},[e,i,l,s,y,k,g,m,h,t,c,f,d,n,r,A,w]),_=o.useCallback(async()=>{j(!1),R(!0);try{await v()}finally{R(!1)}},[v]),T=o.useCallback(()=>{if(!w){if(A&&!b){j(!0);return}_()}},[b,_,A,w]);return o.useEffect(()=>{N&&(A||w||_())},[_,A,w,N]),{workspaceSyncRepairBusy:w,workspaceSyncRepairQueued:N,workspaceSyncCopied:E,handleCopySyncDetails:L,handleQueueOrRunRepairSync:T}}function vre({canManageWorkspaceSync:e,workspaceCloudSyncEnabled:t,persistedToggleIntent:r=null,saveWorkspaceCloudSyncSettings:n}){const[s,i]=o.useState(!1),[l,c]=o.useState(!1),[d,m]=o.useState(!1),[f,g]=o.useState(null),[h,y]=o.useState(null),k=o.useRef(null),A=(h===null?null:h?"enabling":"disabling")||r;o.useEffect(()=>{h!==null&&h===t&&y(null)},[h,t]);const b=o.useCallback(async S=>{if(!e)return;for(g(null),y(S),m(!0);k.current;){const _=k.current;if(_.enabled===S)return _.promise;await _.promise}y(S),m(!0);let L;return L=(async()=>{try{const _=await n({enabled:S});_.success||(y(null),g(_.error||(S?"Failed to enable sync.":"Failed to disable sync.")))}catch(_){y(null),g(_ instanceof Error&&_.message.trim()?_.message:S?"Failed to enable sync.":"Failed to disable sync.")}finally{k.current?.promise===L&&(k.current=null,m(!1))}})(),k.current={enabled:S,promise:L},L},[e,n]),w=o.useCallback(async S=>{if(S&&!t){c(!0);return}await b(S)},[b,t]),R=o.useCallback(()=>{c(!1)},[]),N=o.useCallback(()=>{c(!1),b(!0)},[b]),j=o.useCallback(()=>{i(!0)},[]),E=o.useCallback(()=>{i(!1)},[]);return{showSyncStatusModal:s,showSyncEnableWarning:l,workspaceSyncToggleBusy:d,workspaceSyncError:f,syncControlBusy:d||A!==null,syncControlIntent:A,openSyncStatusModal:j,closeSyncStatusModal:E,handleWorkspaceSyncToggle:w,cancelSyncEnableWarning:R,confirmSyncEnableWarning:N}}const HA=ne.lazy(()=>Go(()=>import("./TaskSettings-Cv1mNhv_.js"),__vite__mapDeps([10,1,2,3,4,5,11])).then(e=>({default:e.TaskSettings}))),wre=ne.lazy(()=>Go(()=>import("./AnnotatedAttachmentWorkspace-BTM6nIg_.js"),__vite__mapDeps([12,1,4,13,2,14,3,5,15])).then(e=>({default:e.AnnotatedAttachmentWorkspaceShell}))),bre=ne.lazy(()=>Go(()=>import("./DocumentWorkspace-BB0qhdix.js"),__vite__mapDeps([16,1,13,2,14,3,4,5,17])).then(e=>({default:e.DocumentWorkspaceShell}))),VA=ne.lazy(()=>Go(()=>import("./TaskforceAgentsModule-gmH-PD2q.js"),__vite__mapDeps([18,1,19,2,3,4,5,20])).then(e=>({default:e.TaskforceAgentsModule}))),Sre=ne.lazy(()=>Go(()=>import("./WorkflowManagerModule-DbfnHJ-f.js"),__vite__mapDeps([21,1,2,3,4,5,22])).then(e=>({default:e.WorkflowManagerModule}))),Are=ne.lazy(()=>Go(()=>import("./AiProfilesModule-ByhYW5Xi.js"),__vite__mapDeps([23,1,19,2,3,4,5])).then(e=>({default:e.AiProfilesModule}))),Cre=ne.lazy(()=>Go(()=>import("./PlanningModule-pRPjR7v5.js"),__vite__mapDeps([24,1,2,3,4,5,25])).then(e=>({default:e.PlanningModule}))),Ire=ne.lazy(()=>Go(()=>import("./PlansPage-D86pZSSl.js"),__vite__mapDeps([26,1,2,5,3,4,27])).then(e=>({default:e.PlansPage})));function GA(e,t,r){const n=t.trim();if(!n)return e;const s={...e};return delete s[n],s[n]=r,Object.fromEntries(Object.entries(s).slice(-50))}const _re="image/png,image/jpeg,image/webp,image/gif",Tre=5*1024*1024,uv=56,xre=e=>e;function Rre(e,t){const r=pp(e);if(r)return Hb(r).label.toUpperCase();for(const n of t){const s=String(n||"").trim();if(!s)continue;const i=Aw(s);if(i)return Hb(i).label.toUpperCase();let l=s.toLowerCase();try{l=new URL(s.includes("://")?s:`https://${s}`).hostname.toLowerCase()}catch{l=s.toLowerCase()}if(!(l.includes("localhost")||l.includes("127.0.0.1")||l.includes("::1")))return l.toUpperCase()}return"UNKNOWN"}function Em(){return typeof performance<"u"?performance.now():Date.now()}function Pre(e){const n=fC(),s=mC(),i=o.useMemo(()=>new URLSearchParams(s.search),[s.search]),l=String(i.get("screen")||"").trim().toLowerCase()==="plans",c=o.useCallback(p=>{const I=new URLSearchParams(s.search);I.set("screen","plans");for(const[$,Ae]of Object.entries(p||{}))Ae==null||String(Ae).trim()===""?I.delete($):I.set($,String(Ae));n(`/?${I.toString()}${s.hash||""}`)},[s.hash,s.search,n]),d=o.useCallback(()=>{const p=new URLSearchParams(s.search);p.delete("screen"),p.delete("gate"),p.delete("checkout"),p.delete("planId"),p.delete("planVersionId"),p.delete("interval");const I=p.toString();n(`${s.pathname==="/"?"/":s.pathname}${I?`?${I}`:""}${s.hash||""}`)},[s.hash,s.pathname,s.search,n]),{activeTab:m,setActiveTab:f,activeCategories:g,groupBy:h,setGroupBy:y,activeWorkspaceModule:k,setActiveWorkspaceModule:v,emptyColumnMode:A,setEmptyColumnMode:b,zenMode:w,setZenMode:R,filterStatus:N,setFilterStatus:j,tasks:E,handleEdit:S,handleSubmit:L,resetForm:_,discardDescriptionImageDraft:T,handleUpdateTask:H,handleSetStatus:q,editingTaskId:z,loading:M,error:Z,title:J,setTitle:ee,setTitleDraft:te,description:fe,setDescription:Ie,setDescriptionDraft:$e,checklistItems:Ye,setChecklistItems:ye,category:ge,setCategory:oe,type:ie,setType:me,priority:W,setPriority:V,complexity:B,setComplexity:D,status:be,setStatus:Se,assignee:K,setAssignee:Y,scheduledDate:G,setScheduledDate:ae,dueDate:_e,setDueDate:Oe,workstreamInput:Fe,setWorkstreamInput:st,manualComplexityEnabled:ft,checklistDropdownEnabled:xe,showTaskCardStatusLabel:ke,showTaskCardDescription:ve,showTaskCardAttachments:Ve,showTaskCardChecklistProgress:Ne,showTaskCardLatestActivity:de,tintTaskCardActivityBackground:x,formTaxonomies:le,setFormTaxonomies:Re,comments:Je,newCommentText:X,setNewCommentText:Ze,attachments:re,setAttachments:Ee,attachmentsDirty:je,setAttachmentsDirty:Pe,descriptionImageUploadPending:Ce,descriptionImageDraftId:Te,registerDescriptionImageUpload:pe,descriptionFocused:Me,setDescriptionFocused:et,showMarkdownHelp:Ue,setShowMarkdownHelp:yt,handleAddComment:Le,handleSetWorkstreamForCurrentTask:mt,handleOpenTaskById:kt,taxonomies:He,activeTypes:rt,priorities:It,taxonomyDisplayLabels:Xe,copiedId:wt,handleCopyId:at,handleToggleInProgress:U,handleToggleComplete:he,handleToggleReview:Ke,handleToggleCancel:Et,handleArchiveTask:vt,handleDelete:Bt,handleUnarchive:dr,handleRestoreDeletedTask:er,handleRestoreSelectedDeletedTasks:cr,handlePermanentlyDeleteDeletedTask:Ot,handleEmptyDeletedTasks:fr,fetchTasks:Ar,searchQuery:Lr,setSearchQuery:Wr,filterCategories:De,setFilterCategories:nt,filterTypes:pt,setFilterTypes:ut,filterPriorities:Tt,setFilterPriorities:Xt,filterAssignees:Nt,setFilterAssignees:Qt,hasInitedFilters:St,assigneeOptions:Kt,taskScope:Ft,setTaskScope:ir,compressedCards:sr,setCompressedCards:ot,sortBy:or,setSortBy:Nr,clearFilters:ur,settingsModel:ra,configLoaded:wr,currentTheme:lr,setCurrentTheme:u,pathSaved:bt,saveSettings:gt,keyShortcut:Xr,setKeyShortcut:Ir,globalWeekStartsOn:Vt,locale:Ur,jsonBackupEnabled:$r,setJsonBackupEnabled:Tn,mcpHostRoot:an,setMcpHostRoot:Qr,settingsSection:Ge,setSettingsSection:Gr,runtimeMode:yr,workspaceSwitchingEnabled:Yt,cloudAuthConfigured:Zt,authRequiredForApi:Sn,authBlocked:$t,isAuthenticated:Ut,authUserId:Fr,authWorkspaceId:Wn,authUserEmail:da,authUserDisplayName:ua,authUserAvatarUrl:en,authSessionResolved:sn,realtimeSyncEnabled:on,realtimeSyncFlagSource:xn,workspaceCloudSyncEnabled:cn,workspaceSyncPhase:xr,workspaceSyncStatus:Dr,workspaceSyncSummary:kn,workspaceSyncRecommendedAction:tn,workspaceSyncBusy:ga,workspaceSyncPendingChanges:Mn,localCoordinatorStatus:mn,transferLocalCoordinatorOwnership:Rn,saveWorkspaceCloudSyncSettings:gn,pushNotice:lt,userGlobalSyncStatus:Ln,workspaceLastSuccessfulSyncAt:Wt,workspaceLastPullAt:ue,workspaceLastPushAt:it,workspaceLastErrorAt:_t,userGlobalSyncError:Pt,workspaceLastErrorMessage:rr,resetWorkspaceSyncCursorAndPull:mr,getWorkspaceSyncDiagnostics:dn,currentWorkspaceId:xt,currentWorkspaceRole:Rr,availableWorkspaces:Yr,switchWorkspace:ln,updateCurrentUserProfile:qn,resolveCloudAuthUrl:Kr=xre,logout:jr,fetchLoginMethods:Yn,unlinkLoginMethod:Ia,addPasswordToAccount:$n,changePassword:Cs,beginOAuthLogin:ya,beginOAuthLink:Bs,availableAuthProviders:eo,projectRoot:to,projectName:Zn,mcpScriptPath:Ws,serverHostRoot:na,showFolderBrowser:pi,setShowFolderBrowser:Jn,folders:hi,files:_a,currentBrowsePath:aa,fetchFolders:Ta,browserTarget:Ka,setBrowserTarget:ls,handleSelectPath:ds,handleAddPath:La,handleRemovePath:qa,handleUpdateCategory:xa,handleRemoveCategory:Ra,handleSaveCategory:Fn,handleUpdateCategoryIcon:us,handleUpdateCategoryColor:dt,handleSaveType:vr,handleRemoveType:Zr,handleUpdateTaxonomies:Cn,handleUpdatePriorities:Pn,pathValidation:ro,taskforceAgentId:Is,setTaskforceAgentId:$s,taskforceAgentConversationId:Pa,setTaskforceAgentConversationId:ka,taskforceAgentConversationByAgentId:jn,setTaskforceAgentConversationByAgentId:Er,uiStateReady:Oa,initiativeTemplates:Ya,fetchInitiativeTemplates:sa,createInitiativeFromTemplate:Un,uiNotice:zn,clearNotice:Za,clearTaskError:So,taskReturnTrail:gi,clearReturnToParentTask:_s,returnToPreviousTask:yi,tasksScrollRef:we,setTasksScrollPos:Ct,commentsEndRef:qt,autoSaveState:nr,unsavedModalOpen:br,setUnsavedModalOpen:yn,pendingNavigation:fa,handleNavigation:Xn,currentTask:pn,currentTaskWorkstream:fs,currentTaskInitiative:Ui,scheduleWarningPrompt:no,confirmScheduleWarning:zi,cancelScheduleWarning:Fs}=e,ar=s_(E,kt),Hn=Ur||TC();o.useEffect(()=>{const p=String(Zn||"").trim();document.title=p?`Taskforce - ${p}`:"Taskforce"},[Zn]);const En=()=>{yn(!1),m==="add"&&!z&&T(),fa?(m==="add"&&_(),fa()):(m==="add"&&_(),f("tasks"))},ms=async()=>{await L({preventDefault:()=>{}}),yn(!1),fa&&fa()},[In,ja]=o.useState(!1),[ao,Ts]=o.useState(!0),[Ba,Wa]=o.useState(!1),[va,$a]=o.useState(!0),[Sr,ki]=o.useState(Rd(new Date)),[ps,Ao]=o.useState(()=>{const p=new Date;return`${p.getFullYear()}-${String(p.getMonth()+1).padStart(2,"0")}`}),[Us,Ja]=o.useState(0),[wa,Fa]=o.useState(!1),[so,Ua]=o.useState(!1),[Xa,ba]=o.useState(!1),Ko=o.useRef(null),[Sa,pc]=o.useState(!0),[hs,vi]=o.useState(!0),[un,Hi]=o.useState(!0),[ma,zs]=o.useState(!0),[Ea,hc]=o.useState(!0),[gs,wi]=o.useState(!1),[qo,Co]=o.useState(null),Io=o.useRef(!1),gc=o.useRef(null),[Yo,ys]=o.useState(uv),[pa,oo]=o.useState(!1),[fn,_o]=o.useState(!1),[Qa,Qn]=o.useState(!1),[yc,Nl]=o.useState(!1),[tl,oa]=o.useState(!1),[Dl,bi]=o.useState(!1),[To,kc]=o.useState("default"),[Si,Zo]=o.useState("execution"),[xo,vc]=o.useState([]),[An,Jo]=o.useState(""),[Hs,F]=o.useState(""),[O,zt]=o.useState(new Set),[Mt,Rt]=o.useState(null),[ht,rn]=o.useState(null),[tr,Pr]=o.useState({}),[Dt,vn]=o.useState(null),[Vn,ia]=o.useState(null),[Ai,wc]=o.useState(""),[Ml,Ci]=o.useState(""),[Ll,Ro]=o.useState(""),[Xo,Qo]=o.useState(""),[bc,rl]=o.useState(null),[Sc,Po]=o.useState(null),[wp,Ii]=o.useState(!1),Ol=o.useRef({taskId:null,attachments:[]}),qr=o.useMemo(()=>Rd(new Date),[]),On=String(Fr||"").trim(),{taskHeaderQuickFilter:es,toggleTaskHeaderQuickFilter:bp,clearTaskHeaderQuickFilter:hf}=wJ({authUserId:On,workspaceId:xt,taskScope:Ft}),Sp=o.useRef(new Map),Ud=o.useRef(new Map),[gf,Ap]=o.useState(()=>fre.map(p=>p.value)),[yf,jo]=o.useState(()=>mre.map(p=>p.value)),[kf,Cp]=o.useState("updated"),[vf,Ip]=o.useState("desc"),[wf,_p]=o.useState([]),[bf,Tp]=o.useState(""),[Sf,xp]=o.useState(null),[Af,Rp]=o.useState({}),[zd,Pp]=o.useState(0),[ky,Hd]=o.useState(null),[vy,Vd]=o.useState(null),[Gd,Vi]=o.useState(null),[Cf,nl]=o.useState(null),[If,Kd]=o.useState({}),[_f,Bl]=o.useState(0),al=o.useRef(null),[xs,sl]=o.useState({}),ts=o.useRef(!1),Eo=o.useRef(null),No=o.useRef(null),qd=o.useRef(null),ol=o.useRef(new Set);o.useEffect(()=>{Ol.current={taskId:z||null,attachments:re}},[z,re]);const Yd=o.useCallback(p=>{const I=z||null,$=Ol.current,Ae=$.taskId===I?$.attachments:re,We=p(Ae);Ol.current={taskId:I,attachments:We},Ee(We),Pe(!0),I&&H(I,{attachments:We}).then(Ht=>{const Mr=Ol.current;Ht!==!1&&Mr.taskId===I&&Mr.attachments===We&&Pe(!1)}).catch(()=>{})},[re,z,H,Ee,Pe]),ei=o.useMemo(()=>{const p={},I=String(xt||"").trim();return yr==="cloud"&&I&&I!=="default"&&(p["x-taskforce-workspace-id"]=I),p},[yr,xt]),ti=o.useMemo(()=>lX({runtimeMode:yr,workspaceId:xt,userId:On}),[xt,On,yr]),Ac=o.useRef(ti),Zd=Ac.current===ti,Rs=Zd?Gd:null,Jd=Zd?Cf:null,Do=o.useMemo(()=>`taskforce:task-origin-workspace-module:${ti}`,[ti]),Xd=o.useMemo(()=>yr==="cloud"?sn:wr,[sn,wr,yr]),Mo=o.useRef(!1),Qd=o.useRef(!1),_i=o.useCallback(p=>{const I=String(p||"").trim();if(!(!I||typeof window>"u")){Mo.current=!0;try{window.sessionStorage.setItem(Do,I)}catch{}}},[Do]),Ti=o.useCallback(()=>{if(Mo.current=!1,!(typeof window>"u"))try{window.sessionStorage.removeItem(Do)}catch{}},[Do]);o.useEffect(()=>{Eo.current=Gd},[Gd]),o.useEffect(()=>{No.current=Cf},[Cf]),o.useEffect(()=>{Ac.current!==ti&&(Ac.current=ti,Eo.current=null,No.current=null,qd.current=null,Vi(null),nl(null))},[ti]);const Ps=o.useMemo(()=>CR(e.config?.appGates,e.config?.cloudEnvironment),[e.config?.appGates,e.config?.cloudEnvironment]),Gi=o.useMemo(()=>Gte({featureAccess:Ps}),[Ps]),_r=o.useMemo(()=>UA(k,Gi),[k,Gi]),Wl=Xa||_r==="planning";o.useEffect(()=>{Wl&&e.ensureArchiveHydrated(!0)},[Wl,e.ensureArchiveHydrated,xt]);const[io,$l]=o.useState(!1),[Cc,co]=o.useState(!1),[wy,Tf]=o.useState(null),[eu,Fl]=o.useState(null),Ul=o.useCallback(p=>{Fl(p)},[]),tu=o.useCallback(p=>{const I=String(p.agentId||"").trim(),$=String(p.conversationId||"").trim();$s(I),ka($),I&&Er(Ae=>{if($)return Ae[I]===$?Ae:{...Ae,[I]:$};if(!Ae[I])return Ae;const We={...Ae};return delete We[I],We})},[Er,ka,$s]),xi=Ps[vv]?.allowed??!1,Ic=Ps[kv]?.allowed??!1,zl=Ps[zm]?.allowed??!1,ru="Documents is not available in this build yet.",Hl="Annotate is not available in this build yet.",Lo=o.useCallback(p=>{if(m!=="add"){p();return}Xn(()=>{Ua(!1),_(),f("tasks"),p()})},[m,Xn,_,f]);o.useEffect(()=>{const p=I=>{const $=I,Ae=$.detail?.fsPath,We=String($.detail?.assetId||"").trim()||null;if(!(!Ae&&!We)){if($.preventDefault(),!xi){lt(ru,"error");return}Lo(()=>{_i($.detail?.taskId),Hd(Ae||null),Vd(We),v("docs")})}};return window.addEventListener("taskforce:open-markdown-document",p),()=>{window.removeEventListener("taskforce:open-markdown-document",p)}},[xi,ru,Lo,lt,_i,v]),o.useEffect(()=>{_r!==k&&v(_r)},[k,_r,v]),o.useEffect(()=>{_r==="docs"&&xi||(Hd(null),Vd(null))},[xi,_r]),o.useEffect(()=>{if(!Qd.current&&!(_r!=="docs"&&_r!=="annotate")&&(Qd.current=!0,!(Mo.current||typeof window>"u")))try{if(!String(window.sessionStorage.getItem(Do)||"").trim())return;window.sessionStorage.removeItem(Do),v("tasks")}catch{}},[_r,v,Do]),o.useEffect(()=>{Qd.current=!1,Mo.current=!1},[Do]);const by=o.useCallback(p=>{typeof p.scheduleShowWeekends=="boolean"&&ja(p.scheduleShowWeekends),typeof p.scheduleShowBacklog=="boolean"&&Ts(p.scheduleShowBacklog),typeof p.scheduleOnlyExpired=="boolean"&&Wa(p.scheduleOnlyExpired),typeof p.scheduleSidebarOpen=="boolean"&&$a(p.scheduleSidebarOpen),typeof p.scheduleSelectedDate=="string"&&ki(p.scheduleSelectedDate),typeof p.scheduleCalendarMonth=="string"&&Ao(p.scheduleCalendarMonth),typeof p.scheduleScrollLeft=="number"&&Ja(p.scheduleScrollLeft),typeof p.showFilters=="boolean"&&Fa(p.showFilters),Array.isArray(p.documentTypeFilters)&&Ap(p.documentTypeFilters),Array.isArray(p.documentAttachmentFilters)&&jo(p.documentAttachmentFilters),(p.documentSortField==="updated"||p.documentSortField==="reference"||p.documentSortField==="name"||p.documentSortField==="size"||p.documentSortField==="created")&&Cp(p.documentSortField),(p.documentSortOrder==="asc"||p.documentSortOrder==="desc")&&Ip(p.documentSortOrder),Array.isArray(p.documentPinnedDocIds)&&_p(p.documentPinnedDocIds),typeof p.documentSearchQuery=="string"&&Tp(p.documentSearchQuery),(typeof p.documentSelectedDocId=="string"||p.documentSelectedDocId===null)&&xp(p.documentSelectedDocId),Rp(p.documentScrollByDocId&&typeof p.documentScrollByDocId=="object"?p.documentScrollByDocId:{}),typeof p.documentListScrollTop=="number"&&Pp(p.documentListScrollTop),typeof p.planningDrawerOpen=="boolean"&&ba(p.planningDrawerOpen),typeof p.documentTrayOpen=="boolean"&&pc(p.documentTrayOpen),typeof p.imageTrayOpen=="boolean"&&vi(p.imageTrayOpen),typeof p.agentTrayOpen=="boolean"&&Hi(p.agentTrayOpen),typeof p.taskforceAgentRosterTrayOpen=="boolean"&&zs(p.taskforceAgentRosterTrayOpen),typeof p.taskforceAgentDrawerOpen=="boolean"&&$l(p.taskforceAgentDrawerOpen),typeof p.taskforceAgentPanelCollapsed=="boolean"&&co(p.taskforceAgentPanelCollapsed),typeof p.planningTreeCollapsed=="boolean"&&oo(p.planningTreeCollapsed),typeof p.planningPrimaryCollapsed=="boolean"&&_o(p.planningPrimaryCollapsed),typeof p.planningSecondaryCollapsed=="boolean"&&Qn(p.planningSecondaryCollapsed),Nl(!!p.planningFavoritesSectionCollapsed),oa(!!p.planningInitiativesSectionCollapsed),bi(!!p.planningWorkstreamsSectionCollapsed),(p.planningNavigatorSort==="default"||p.planningNavigatorSort==="title"||p.planningNavigatorSort==="owner"||p.planningNavigatorSort==="progress")&&kc(p.planningNavigatorSort),Zo(cte(p.planningTaskArrangeMode)),vc(Array.isArray(p.planningFavorites)?p.planningFavorites:[]),Array.isArray(p.planningExpandedInitiativeIds)&&zt(new Set(p.planningExpandedInitiativeIds)),p.planningDrawerDetail!==void 0&&Rt(p.planningDrawerDetail),(typeof p.planningNestedWorkstreamDetailId=="string"||p.planningNestedWorkstreamDetailId===null)&&rn(p.planningNestedWorkstreamDetailId);const I=p.annotatedTarget&&typeof p.annotatedTarget=="object"?p.annotatedTarget:null,$=I&&typeof p.annotatedSessionId=="string"?p.annotatedSessionId:null;v8({currentTarget:Eo.current,currentSessionId:No.current,lastHydratedIdentity:qd.current})&&(Eo.current=I,No.current=$,qd.current=m_(I,$),Vi(I),nl($)),Kd(p.annotatedViewportByContextKey&&typeof p.annotatedViewportByContextKey=="object"?p.annotatedViewportByContextKey:{})},[]),nu=o.useMemo(()=>({scheduleShowWeekends:In,scheduleShowBacklog:ao,scheduleOnlyExpired:Ba,scheduleSidebarOpen:va,scheduleSelectedDate:Sr,scheduleCalendarMonth:ps,scheduleScrollLeft:Us,showFilters:wa,documentTypeFilters:gf,documentAttachmentFilters:yf,documentSortField:kf,documentSortOrder:vf,documentPinnedDocIds:wf,documentSearchQuery:bf,documentSelectedDocId:Sf,documentScrollByDocId:Af,documentListScrollTop:zd,documentTrayOpen:Sa,imageTrayOpen:hs,agentTrayOpen:un,taskforceAgentRosterTrayOpen:ma,taskforceAgentDrawerOpen:io,taskforceAgentPanelCollapsed:Cc,planningDrawerOpen:Xa,planningTreeCollapsed:pa,planningPrimaryCollapsed:fn,planningSecondaryCollapsed:Qa,planningFavoritesSectionCollapsed:yc,planningInitiativesSectionCollapsed:tl,planningWorkstreamsSectionCollapsed:Dl,planningNavigatorSort:To,planningTaskArrangeMode:Si,planningFavorites:xo,planningExpandedInitiativeIds:Array.from(O),planningDrawerDetail:Mt,planningNestedWorkstreamDetailId:ht,annotatedTarget:Rs,annotatedSessionId:Jd,annotatedViewportByContextKey:If}),[In,ao,Ba,va,Sr,ps,Us,wa,gf,yf,kf,vf,wf,bf,Sf,Af,zd,Sa,hs,un,ma,io,Cc,Xa,pa,fn,Qa,yc,tl,Dl,To,Si,xo,O,Mt,ht,Rs,Jd,If]);o.useEffect(()=>{vc([])},[ti]);const{ready:au}=kX({currentWorkspaceId:xt,loadKey:ti,enabled:yr!=="cloud"||sn,headers:ei,remotePlanningFavoritesAuthoritative:!!On&&On!=="anonymous",useCloudProxy:yr==="local"&&!!On&&On!=="anonymous",snapshot:nu,onApplyState:by});o.useEffect(()=>{h==="schedule"&&$a(!0)},[h]);const{showArchive:_c,setShowArchive:Vl,fetchArchive:Sy,filteredArchive:xf}=e,Gl=o.useMemo(()=>xf.map(p=>({...p,isArchived:!0})),[xf]),ks=o.useMemo(()=>e.archivedTasks.map(p=>({...p,isArchived:!0})),[e.archivedTasks]),Ri=o.useMemo(()=>[...e.searchAgnosticTasks,...ks],[ks,e.searchAgnosticTasks]),jp=o.useCallback(p=>{const I=String(p||"").trim();if(!I)return"";const $=Ri.find(Ae=>Ae.id===I);return Ss($)||""},[Ri]),Rf=o.useCallback(p=>{const I=String(p||"").trim();if(!I)return"";const $=String(xs[I]||"").trim();if($)return $;for(const Ae of Ri)for(const We of Ae.attachments||[]){if(!We||typeof We!="object"||String(We.assetId||"").trim()!==I)continue;const Ht=cp({referenceNumber:typeof We.referenceNumber=="number"?We.referenceNumber:null,referenceLabel:String(We.referenceLabel||"").trim()||null});if(Ht)return Ht}return""},[Ri,xs]);o.useEffect(()=>{const p=I=>{const $=I,Ae=rA($.detail,Ri);if(Ae){if($.preventDefault(),!Ic){lt(Hl,"error");return}Lo(()=>{Eo.current=Ae;const We=String(Ae.sessionId||"").trim()||null;No.current=We,Vi(Ae),nl(We),Bl(Ht=>Ht+1),_i(Ae.taskId),v("annotate")})}};return window.addEventListener("taskforce:open-annotated-attachment",p),()=>{window.removeEventListener("taskforce:open-annotated-attachment",p)}},[Ri,Ic,Hl,Lo,lt,_i,v]),o.useEffect(()=>{if(!Rs)return;const p=rA(Rs,Ri);p&&(p.taskReferenceLabel===Rs.taskReferenceLabel&&p.imageReferenceLabel===Rs.imageReferenceLabel||Vi(p))},[Ri,Rs]),o.useEffect(()=>{const p=Eo.current,I=String(p?.assetId||"").trim();if(!I)return;const $=String(xs[I]||"").trim();$&&$!==String(p?.imageReferenceLabel||"").trim()&&Vi(Ae=>!Ae||String(Ae.assetId||"").trim()!==I?Ae:{...Ae,imageReferenceLabel:$})},[xs,Rs]),o.useEffect(()=>{if(!Xd)return;const I=String(Rs?.assetId||"").trim();if(!I||ol.current.has(I)||String(xs[I]||"").trim())return;let $=!1;ol.current.add(I);const Ae=String(xt||"default").trim()||"default",We=new URLSearchParams({workspaceId:Ae});return(async()=>{try{const Mr=await fetch(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(I)}?${We.toString()}`,{method:"GET",credentials:"include",headers:ei});if(!Mr.ok)return;const Hr=await Mr.json().catch(()=>({})),za=String(Hr?.target?.imageReferenceLabel||"").trim();if(!za||$)return;sl(bn=>bn[I]===za?bn:{...bn,[I]:za})}catch{}finally{ol.current.delete(I)}})(),()=>{$=!0}},[Xd,xs,xt,Rs,ei]);const Oo=o.useMemo(()=>e.deletedTasks.map(p=>({...p.taskSnapshot,isDeleted:!0,deletedRecordId:p.id,deletedAt:p.deletedAt,deletedExpiresAt:a_(p.deletedAt)})),[e.deletedTasks]),Ki=o.useMemo(()=>{const p=new Map;return e.deletedTasks.forEach(I=>{p.set(I.taskSnapshot.id,I)}),p},[e.deletedTasks]),su=o.useMemo(()=>{const p=Oo,I=yp(Lr),$={categories:g,types:rt,priorities:It,assigneeOptions:e.assigneeOptions,taxonomies:He},Ae=g.every(bn=>De.includes(bn.value)),We=rt.every(bn=>pt.includes(bn.value)),Ht=new Set(Tt.map(bn=>String(bn))),Mr=It.every(bn=>Ht.has(String(bn.value))),Hr=new Set(N.map(bn=>String(bn))),za=fc.every(bn=>Hr.has(String(bn.value)));return p.filter(bn=>{const Sl=Ug(bn,I,$),Bu=Ae||De.includes(bn.category),Wu=We||pt.includes(bn.type||wo),_h=Mr||Ht.has(String(bn.priority)),Th=za||Hr.has(String(bn.status)),xh=Nt.length===0||Nt.includes(bn.assignee||"unassigned");return Sl&&Bu&&Wu&&_h&&Th&&xh})},[g,rt,Oo,Nt,De,Tt,N,pt,It,Lr]),Kl=o.useMemo(()=>[...e.tasks,...ks,...Oo],[ks,Oo,e.tasks]),Pf=o.useMemo(()=>{const p=g.filter($=>!$.disabled).map($=>({value:$.value,label:$.label})),I=g.filter($=>$.disabled&&Kl.some(Ae=>Ae.category===$.value)).map($=>({value:$.value,label:`${$.label} (Legacy)`}));return[...p,...I]},[g,Kl]),jf=o.useMemo(()=>{const p=rt.filter($=>$.status!=="retired").map($=>({value:$.value,label:$.label})),I=rt.filter($=>$.status==="retired"&&Kl.some(Ae=>(Ae.type||wo)===$.value)).map($=>({value:$.value,label:`${$.label} (Retired)`}));return[...p,...I]},[rt,Kl]),Ef=o.useCallback(p=>es?p.filter(I=>bJ(I,es,On,qr)):p,[On,es,qr]),Tc=o.useMemo(()=>Ef(e.filteredTasks),[Ef,e.filteredTasks]),xc=o.useMemo(()=>Ft==="archived"?Gl:Ft==="deleted"?su:_c?[...Tc,...Gl]:Tc,[Gl,su,Tc,_c,Ft]),Nf=o.useMemo(()=>Ft==="open"?es?Tc:e.tasks.filter(p=>!p.isArchived):xc,[xc,e.tasks,Tc,es,Ft]),Ep=o.useMemo(()=>new Set(xc.map(p=>p.id)),[xc]),Df=o.useMemo(()=>Ft==="archived"?ks:Ft==="deleted"?Oo:_c?[...e.tasks,...ks]:e.tasks,[ks,Oo,e.tasks,_c,Ft]),Rc=o.useMemo(()=>{const p=new Map;for(const I of ks)p.set(I.id,I);for(const I of Oo)p.set(I.id,I);for(const I of e.tasks)p.set(I.id,I);return Array.from(p.values())},[ks,Oo,e.tasks]),Pc=o.useMemo(()=>{const p=new Map;return Rc.forEach(I=>p.set(I.id,I)),p},[Rc]),Mf=o.useMemo(()=>{const p=new Map;Kt.forEach(Ae=>{p.set(String(Ae.value),Ae.label)});const I=String(Fr||"").trim(),$=String(ua||da||"").trim();return I&&$&&p.set(I,$),p},[Kt,ua,da,Fr]),Jt=o.useMemo(()=>{const p=new Map;e.workspaceTaskRelationships.forEach(ct=>{if(ct.deletedAt||ct.kind!=="dependency")return;const zr=p.get(ct.sourceTaskId)||[];zr.push(ct.targetTaskId),p.set(ct.sourceTaskId,zr)});const I=QJ(e.tasks,ks),$=new Map(I.map(ct=>[ct.id,ct])),Ae=ct=>{const zr=p.get(ct)||[];if(zr.length===0)return"ready";let Bn=!1;for(const rc of zr){const nc=$.get(rc);if(!nc||zo(nc.status).value==="cancelled"){Bn=!0;continue}if(zo(nc.status).value!=="done")return"blocked"}return Bn?"invalid":"ready"},We=I,Ht=I,Mr=(ct,zr)=>({progressPercent:ct>0?Math.round(zr/ct*100):0,taskCount:ct,completedTaskCount:zr}),Hr=ct=>{const zr={task:0,"on-hold":0,"in-progress":0,review:0,done:0,cancelled:0};return ct.forEach(Bn=>{zr[zo(Bn.status).value]+=1}),zr},za=ct=>{const zr=Hr([]);return ct.forEach(Bn=>{Object.entries(Bn.statusCounts||{}).forEach(([rc,nc])=>{zr[rc]+=Number(nc)||0})}),zr},bn=Hte({taskScope:Ft,summaryCount:e.planningBootstrapTaskSummaries.length,loadingTasks:e.loadingTasks,activeTaskCount:e.tasks.length,archiveHydrated:e.archiveHydratedWorkspaceId===xt}),Sl=new Map,Bu=new Map,Wu=new Map;bn?e.planningBootstrapTaskSummaries.forEach(ct=>{const zr=(ct.tasks||[]).map(Bn=>({...Bn,prerequisiteTaskIds:p.get(Bn.id)||[],dependencyState:Ae(Bn.id)}));Sl.set(ct.workstreamId,{...ct,tasks:zr}),Bu.set(ct.workstreamId,zr),Wu.set(ct.workstreamId,Hr(zr))}):(We.forEach(ct=>{const zr=String(ct.workstreamId||"").trim();if(!zr)return;const Bn=Sl.get(zr)||{workstreamId:zr,taskCount:0,completedTaskCount:0,tasks:[]};Bn.taskCount+=1,(ct.status==="done"||ct.status==="cancelled")&&(Bn.completedTaskCount+=1);const rc=Wu.get(zr)||Hr([]);rc[zo(ct.status).value]+=1,Wu.set(zr,rc),Sl.set(zr,Bn)}),Ht.forEach(ct=>{const zr=String(ct.workstreamId||"").trim();if(!zr)return;const Bn=Bu.get(zr)||[];Bn.push({id:ct.id,referenceNumber:ct.referenceNumber??null,localReferenceNumber:ct.localReferenceNumber??null,referenceLabel:ct.referenceLabel,title:ct.title,createdAt:ct.createdAt,status:ct.status||null,priority:Number(ct.priority)||0,workstreamOrder:ct.workstreamOrder??null,prerequisiteTaskIds:p.get(ct.id)||[],dependencyState:Ae(ct.id),assignee:ct.assignee||null,attachmentCount:ct.attachmentCount??(Array.isArray(ct.attachments)?ct.attachments.length:0),isArchived:!!ct.isArchived}),Bu.set(zr,Bn)}));const _h=new Map,Th=new Map,xh=new Map,_k=new Map,JT=ct=>{const zr=Sl.get(ct.id),Bn=Bu.get(ct.id)||zr?.tasks||[],rc=Mr(zr?.taskCount||0,zr?.completedTaskCount||0),nc=eX({isArchived:!!ct.isArchived,tasks:Bn,dataReady:!bn}),Rh={id:ct.id,referenceNumber:ct.referenceNumber??null,title:ct.title,description:String(ct.description||"").trim()||void 0,ownerId:ct.ownerId?String(ct.ownerId):null,ownerLabel:ct.ownerId?Mf.get(String(ct.ownerId))||String(ct.ownerId):null,icon:ct.icon??null,color:ct.color??null,...rc,statusCounts:Wu.get(ct.id)||Hr([]),initiativeId:ct.initiativeId||null,commentCount:Array.isArray(ct.comments)?ct.comments.length:0,comments:Array.isArray(ct.comments)?ct.comments:[],activity:Array.isArray(ct.activity)?ct.activity:[],entityEvents:Array.isArray(ct.entityEvents)?ct.entityEvents:[],attachmentCount:Array.isArray(ct.attachments)?ct.attachments.length:0,attachments:Array.isArray(ct.attachments)?ct.attachments:[],isArchived:!!ct.isArchived,archiveReady:nc.archiveReady,archiveActiveTaskCount:nc.activeTaskCount,tasks:Bn};if(_h.set(ct.id,Bn.map(Al=>Al.id)),ct.initiativeId){Th.set(ct.id,ct.initiativeId);const Al=_k.get(ct.initiativeId)||[];Al.push(Rh),_k.set(ct.initiativeId,Al)}return Rh},Tk=e.workstreams.map(JT),XT=Tk.filter(ct=>Jg(Ft,!!ct.isArchived)),xk=e.initiatives.map(ct=>{const zr=_k.get(ct.id)||[],Bn=zr.filter(km=>Jg(Ft,!!km.isArchived)),rc=zr.reduce((km,Rk)=>km+Rk.taskCount,0),nc=zr.reduce((km,Rk)=>km+Rk.completedTaskCount,0),Rh=Mr(rc,nc),Al=tX({isArchived:!!ct.isArchived,workstreams:zr,dataReady:!bn});return{id:ct.id,referenceNumber:ct.referenceNumber??null,title:ct.title,description:String(ct.description||"").trim()||void 0,ownerId:ct.ownerId?String(ct.ownerId):null,ownerLabel:ct.ownerId?Mf.get(String(ct.ownerId))||String(ct.ownerId):null,icon:ct.icon??null,color:ct.color??null,...Rh,statusCounts:za(zr),workstreamCount:Bn.length,workstreams:Bn,allWorkstreams:zr,commentCount:Array.isArray(ct.comments)?ct.comments.length:0,comments:Array.isArray(ct.comments)?ct.comments:[],activity:Array.isArray(ct.activity)?ct.activity:[],entityEvents:Array.isArray(ct.entityEvents)?ct.entityEvents:[],attachmentCount:Array.isArray(ct.attachments)?ct.attachments.length:0,attachments:Array.isArray(ct.attachments)?ct.attachments:[],isArchived:!!ct.isArchived,archiveReady:Al.archiveReady,archiveActiveTaskCount:Al.activeTaskCount,archiveActiveWorkstreamCount:Al.activeWorkstreamCount}}),{initiatives:jb,standaloneWorkstreams:QT,initiativeById:e0,workstreamById:t0}=SJ(xk,XT,Ft),r0=Tk.filter(ct=>!ct.initiativeId);return jb.forEach(ct=>{xh.set(ct.id,ct.workstreams.flatMap(zr=>(zr.tasks||[]).map(Bn=>Bn.id)))}),{initiatives:jb,standaloneWorkstreams:QT,allInitiatives:xk,allStandaloneWorkstreams:r0,allInitiativeById:new Map(xk.map(ct=>[ct.id,ct])),allWorkstreamById:new Map(Tk.map(ct=>[ct.id,ct])),workstreamTaskIds:_h,workstreamInitiativeIds:Th,initiativeTaskIds:xh,workstreamById:t0,initiativeById:e0}},[ks,xt,e.archiveHydratedWorkspaceId,Mf,e.initiatives,e.loadingTasks,e.planningBootstrapTaskSummaries,e.workspaceTaskRelationships,e.tasks,e.workstreams,Ft]),Lf=o.useMemo(()=>Jt.initiatives.map(p=>{const I=ws(p);return{value:p.id,label:I||p.title}}),[Jt.initiatives]),ou=o.useMemo(()=>{const p=(We,Ht)=>We.title.localeCompare(Ht.title,void 0,{sensitivity:"base"}),I=Array.from(Jt.allInitiativeById.values()).filter(We=>!We.isArchived).map(We=>({id:We.id,referenceLabel:ws(We)||We.id,title:We.title,icon:We.icon,color:We.color,meta:`${We.workstreamCount||0} workstream${We.workstreamCount===1?"":"s"}`})).sort(p),$=Array.from(Jt.allWorkstreamById.values()).filter(We=>!We.isArchived).map(We=>({id:We.id,referenceLabel:Ho(We)||We.id,title:We.title,icon:We.icon,color:We.color,meta:We.initiativeId?`In ${Jt.allInitiativeById.get(We.initiativeId)?.title||"another initiative"}`:"Standalone workstream"})).sort(p),Ae=Rc.filter(We=>!We.isArchived&&!We.isDeleted).map(We=>({id:We.id,referenceLabel:Ss(We)||We.id,title:We.title,meta:We.workstreamId?`In ${Jt.allWorkstreamById.get(We.workstreamId)?.title||"another workstream"}`:"Unassigned to a workstream"})).sort(p);return{initiatives:I,workstreams:$,tasks:Ae}},[Rc,Jt.allInitiativeById,Jt.allWorkstreamById]),Of=o.useMemo(()=>{const I=(An?Jt.initiativeById.get(An)?.workstreams||[]:Jt.initiatives.flatMap(Ae=>Ae.workstreams)).map(Ae=>{const We=Ho(Ae);return{value:Ae.id,label:We||Ae.title}}),$=An?[]:Jt.standaloneWorkstreams.map(Ae=>{const We=Ho(Ae);return{value:Ae.id,label:We||Ae.title}});return[...I,...$]},[Jt.initiativeById,Jt.initiatives,Jt.standaloneWorkstreams,An]),iu=o.useMemo(()=>Hs?new Set(Jt.workstreamTaskIds.get(Hs)||[]):An?new Set(Jt.initiativeTaskIds.get(An)||[]):null,[Jt.initiativeTaskIds,Jt.workstreamTaskIds,An,Hs]),Bf=o.useMemo(()=>{if(!Mt)return null;if(Mt.type==="initiative"){const I=Jt.allInitiativeById.get(Mt.id);return I?{type:"initiative",item:I}:null}const p=Jt.allWorkstreamById.get(Mt.id);return p?{type:"workstream",item:p}:null},[Mt,Jt.allInitiativeById,Jt.allWorkstreamById]),cu=o.useMemo(()=>{if(!ht)return null;const p=Jt.allWorkstreamById.get(ht);return p?{type:"workstream",item:p}:null},[ht,Jt.allWorkstreamById]),Wf=o.useMemo(()=>Vn?.mode==="create"?{kind:"editor",editor:Vn}:cu?{kind:"detail",detail:cu}:null,[cu,Vn]),Np=Mt?tr[`${Mt.type}:${Mt.id}`]:void 0,Dp=ht?tr[`workstream:${ht}`]:void 0,Mp=fT(pa,!!(Bf||Dt),fn,!!Wf,Qa),[Ay,Cy]=o.useState(Mp),Iy=o.useMemo(()=>{if(!Xo.trim())return null;const p=Jt.allInitiativeById.get(Xo);return p||Wv(Jt.allInitiatives,Xo)},[Xo,Jt.allInitiativeById,Jt.allInitiatives]);o.useEffect(()=>{An&&!Jt.initiativeById.has(An)&&Jo(""),Hs&&!Jt.workstreamById.has(Hs)&&F("")},[Jt.initiativeById,Jt.workstreamById,An,Hs]);const Bo=o.useMemo(()=>h==="schedule"?Nf:xc,[h,xc,Nf]),$f=o.useMemo(()=>h!=="schedule"||!Ba?Bo:Bo.filter(p=>{if(p.status==="done"||p.status==="cancelled")return!1;const $=!!p.scheduledDate&&p.scheduledDate<qr,Ae=!!p.dueDate&&p.dueDate<qr;return $||Ae}),[h,Ba,Bo,qr]),Lp=o.useMemo(()=>AA($f,iu),[$f,iu]),Pi=o_(e.deletedTasks,Lp.map(p=>p.id),Ft==="deleted"),_y=o.useMemo(()=>AA(Df,iu),[Df,iu]),Ty=o.useMemo(()=>Array.from(Ep),[Ep]),xy=o.useCallback(p=>{ki(p);const I=Fm(p);I&&Ao(`${I.getFullYear()}-${String(I.getMonth()+1).padStart(2,"0")}`)},[]),Ry=o.useCallback(p=>{h==="schedule"&&Ja(p)},[h]),Py=o.useCallback(p=>{if(Ft==="deleted"){const I=Ki.get(p);if(!I)return;er(I.id,I.taskId);return}dr(p)},[Ki,er,dr,Ft]),Ff=o.useCallback(p=>{if(Ft==="deleted"){const I=Ki.get(p);if(!I||!window.confirm("Permanently delete this task? This cannot be undone."))return;Ot(I.id);return}Bt(p)},[Ki,Bt,Ot,Ft]),jc=o.useMemo(()=>h!=="schedule"?[]:Bo.filter(p=>{if(p.status==="done"||p.status==="cancelled")return!1;const $=!!p.scheduledDate&&p.scheduledDate<qr,Ae=!!p.dueDate&&p.dueDate<qr;return $||Ae}),[h,Bo,qr]),jy=o.useMemo(()=>h!=="schedule"?0:Bo.filter(p=>p.status==="done"||p.status==="cancelled"?!1:!!p.scheduledDate&&p.scheduledDate<qr).length,[h,Bo,qr]),Op=o.useMemo(()=>h!=="schedule"?0:Bo.filter(p=>p.status==="done"||p.status==="cancelled"?!1:!!p.dueDate&&p.dueDate<qr).length,[h,Bo,qr]),ql=o.useMemo(()=>!On||On==="anonymous"?0:E.filter(p=>p.status==="done"||p.status==="cancelled"?!1:String(p.assignee||"").trim()===On).length,[On,E]),ji=o.useMemo(()=>!On||On==="anonymous"?0:E.filter(p=>p.status==="done"||p.status==="cancelled"||String(p.assignee||"").trim()!==On?!1:!!p.dueDate&&p.dueDate<qr).length,[On,E,qr]),Bp=o.useMemo(()=>h!=="schedule"?[]:Bo.filter(p=>p.status==="done"||p.status==="cancelled"?!1:!!p.scheduledDate&&p.scheduledDate<qr),[h,Bo,qr]),il=jc,[Ec,Nc]=o.useState(!1),Wp=()=>{Xn(()=>{yi()||(m==="add"&&gi.length>0&&_s(),Ua(!1),m==="add"&&_(),f("tasks"))})};o.useEffect(()=>{m!=="add"&&Ua(!1)},[m]);const Yl=o.useCallback(async(p,I,$)=>{p.status===I&&!$?.allowSameStatus||await q(p,I)},[q]),cl=o.useCallback(async(p,I)=>{const $=Pc.get(p);if(!$){lt("Task details are still loading.","info");return}await Yl($,I),await e.fetchPlanningEntities()},[Yl,Pc,e.fetchPlanningEntities,lt]),Uf=o.useCallback(async(p,I)=>{await H(p,{assignee:I})!==!1&&await e.fetchPlanningEntities()},[H,e.fetchPlanningEntities]),qi=o.useCallback(async p=>{const I=Pc.get(p);return I?I.isArchived?!0:I.status!=="done"&&I.status!=="cancelled"?(lt("Only completed or cancelled tasks can be archived from Planning.","error"),!1):vt(I):(lt("Task details are still loading.","info"),!1)},[vt,Pc,lt]),$p=o.useCallback(async p=>{const I=await qi(p);return I&&(await e.fetchPlanningEntities(),lt("Task archived","success")),I},[qi,e.fetchPlanningEntities,lt]),Ei=o.useCallback(async p=>{const I=Jt.allWorkstreamById.get(p);if(!I?.archiveReady)return lt("This workstream is no longer ready to archive.","error"),!1;try{return await q_({workstream:I,archiveTask:qi,archiveWorkstream:e.archiveWorkstream})?(lt("Completed tasks and workstream archived","success"),!0):(lt("Workstream archive stopped safely. Resolve any remaining tasks and retry.","error"),!1)}catch($){return lt($ instanceof Error?`Workstream archive stopped safely: ${$.message}`:"Workstream archive stopped safely. Retry to archive the remaining items.","error"),!1}},[qi,Jt.allWorkstreamById,e.archiveWorkstream,lt]),zf=o.useCallback(async p=>{const I=Jt.allInitiativeById.get(p);if(!I?.archiveReady)return lt("This initiative is no longer ready to archive.","error"),!1;try{return await rX({initiativeId:I.id,workstreams:I.allWorkstreams||I.workstreams,archiveTask:qi,archiveWorkstream:e.archiveWorkstream,archiveInitiative:e.archiveInitiative})?(lt("Completed tasks, workstreams, and initiative archived","success"),!0):(lt("Initiative archive stopped safely. Resolve any remaining tasks and retry.","error"),!1)}catch($){return lt($ instanceof Error?`Initiative archive stopped safely: ${$.message}`:"Initiative archive stopped safely. Retry to archive the remaining items.","error"),!1}},[qi,Jt.allInitiativeById,e.archiveInitiative,e.archiveWorkstream,lt]),Yi=o.useCallback(async(p,I)=>{const $=p==="initiative"?Jt.allInitiativeById.get(I):Jt.allWorkstreamById.get(I);if(!$)return lt(`${p==="initiative"?"Initiative":"Workstream"} not found.`,"error"),!1;const Ae=Y_({entityType:p,isArchived:$.isArchived,taskCount:$.taskCount,completedTaskCount:$.completedTaskCount,archiveReady:$.archiveReady,activeWorkstreamCount:$.archiveActiveWorkstreamCount});if(Ae.mode==="archived")return!0;if(Ae.mode==="ready")return p==="initiative"?zf(I):Ei(I);if(Ae.mode!=="empty")return lt(Ae.mode==="blocked"?`Archive unavailable while active ${Ae.remainingKind==="task"?"tasks":"workstreams"} remain.`:"Archive availability is still loading.","error"),!1;try{return p==="initiative"?await e.archiveInitiative(I):await e.archiveWorkstream(I),lt(`${p==="initiative"?"Initiative":"Workstream"} archived`,"success"),!0}catch(We){return lt(We instanceof Error?We.message:`Failed to archive ${p}.`,"error"),!1}},[zf,Ei,Jt.allInitiativeById,Jt.allWorkstreamById,e.archiveInitiative,e.archiveWorkstream,lt]),Hf=o.useCallback(async(p,I)=>{try{return p==="initiative"?await e.unarchiveInitiative(I):await e.unarchiveWorkstream(I),lt(`${p==="initiative"?"Initiative":"Workstream"} unarchived`,"success"),!0}catch($){return lt($ instanceof Error?$.message:`Failed to unarchive ${p}.`,"error"),!1}},[e.unarchiveInitiative,e.unarchiveWorkstream,lt]),lu=o.useCallback((p,I)=>{_();const $=vJ(p,I,{categories:g});$.category&&oe($.category),$.type&&me($.type),typeof $.priority=="number"&&V($.priority),typeof $.complexity=="number"&&D($.complexity),$.assignee&&Y($.assignee),$.status&&Se($.status),$.scheduledDate&&ae($.scheduledDate),f("add")},[_,g,oe,me,V,D,Se,Y,ae,f]);ne.useEffect(()=>{N&&!N.includes("done")&&j(p=>[...p,"done"])},[]);const[Vf,ll]=o.useState(!1),[lo,Vs]=o.useState(!1),[ri,Ni]=o.useState(!1),dl=o.useRef(!1),[du,Zl]=o.useState(!1),[Jl,Gf]=o.useState(!1),[Fp,Kf]=o.useState(""),[Ey,qf]=o.useState(!1),[Ny,Up]=o.useState(!1),[Dy,Xl]=o.useState("members"),[uu,fu]=o.useState(null),[zp,mu]=o.useState("unknown"),[My,Yf]=o.useState(!1),[Ly,Ql]=o.useState(null),[Oy,uo]=o.useState(null),[Zf,Hp]=o.useState(!1),[Dc,By]=o.useState([]),[Wy,Jf]=o.useState(null),[js,ul]=o.useState(""),[fl,Wo]=o.useState("member"),[pu,$y]=o.useState("read-write"),[hu,ml]=o.useState(!1),[Fy,Xf]=o.useState(null),[Gs,Uy]=o.useState(0),[Vp,Gp]=o.useState(!1),[Kp,zy]=o.useState([]),[Hy,Vy]=o.useState(!1),[Gy,Ky]=o.useState(1),[Na,Qf]=o.useState(null),[qp,Yp]=o.useState(!1),[Zp,em]=o.useState(null),[Jp,gu]=o.useState(!1),[qy,Zi]=o.useState(null),[yu,ed]=o.useState(!1),[Yy,pl]=o.useState(null),[rs,ha]=o.useState("month"),[ku,Xp]=o.useState(""),[tm,hl]=o.useState(""),[ns,gl]=o.useState(null),[Qp,eh]=o.useState(!1),[Zy,rm]=o.useState(!1),[th,$o]=o.useState(null),[nm,wn]=o.useState(null),Mc=25,td=o.useRef(null),Es=o.useRef(null),Lc=o.useRef({billing:!1,teamManagement:!1}),ni=o.useRef(null);o.useEffect(()=>{ni.current=Na},[Na]),o.useEffect(()=>{if(!lo)return;const p=I=>{td.current?.contains(I.target)||Vs(!1)};return document.addEventListener("mousedown",p),()=>document.removeEventListener("mousedown",p)},[lo]);const rd=yr==="cloud"&&Yt&&Ut,Ji=Ut&&(yr==="cloud"||Zt),vu=yr==="local"&&Ut,Oc=mn?.phase==="ready"&&mn.snapshot?.state.ownershipMode==="server"?mn.snapshot.workspace?.runner?.checkpoint?.checkpoint.syncEnabled:null,fo=typeof Oc=="boolean"?Oc:cn,Di=mn?.activePriorityCommandType==="DisableSync"?"disabling":mn?.activeCommandType==="EnableSync"?"enabling":null,{showSyncStatusModal:rh,showSyncEnableWarning:yl,workspaceSyncError:nh,syncControlBusy:Jy,syncControlIntent:nd,openSyncStatusModal:am,closeSyncStatusModal:wu,handleWorkspaceSyncToggle:Xy,cancelSyncEnableWarning:Qy,confirmSyncEnableWarning:Xi}=vre({canManageWorkspaceSync:vu,workspaceCloudSyncEnabled:fo,persistedToggleIntent:Di,saveWorkspaceCloudSyncSettings:gn}),Mi=o.useMemo(()=>{const p=Yr.find(Ae=>Ae.id===xt),I=String(p?.name||"").trim();if(I)return I;if(yr==="local"){const Ae=String(Zn||"").trim();if(Ae)return Ae}return String(xt||"").trim()||"Workspace"},[Yr,xt,Zn,yr]),ad=pT(Ji,uu),kl=pre(Ji,uu,zp),bu=String(ua||"").trim(),Ks=String(en||"").trim(),Qi=String(da||"").trim(),vl=bu||Qi,ah=vl.length>0,sh=Qi.length>0,oh=o.useMemo(()=>JY({workspaceName:Mi,workspaceId:xt,accountLabel:vl||Qi,runtimeMode:yr}),[Qi,vl,xt,Mi,yr]),ih=(vl||Qi||"").trim(),sd=Ut&&sn&&ih.length>0?ih.charAt(0).toUpperCase():"",sm=Ks,ch=Ut&&sn&&sm.length>0,Su=String(tm||Ks).trim(),Au=String(Na?.planName||Na?.planId||"").trim(),tk=Au.length>0,ec=String(Na?.workspaceId||Wn||xt||"").trim(),lh=yr==="cloud"?"CLOUD":"LOCAL",od=e.config?.apiBaseUrl||"",dh=o.useMemo(()=>Rre(e.config?.cloudEnvironment,[String(e.config?.cloudBaseUrl||""),String(e.config?.cloudAuthBaseUrl||""),String(e.config?.apiBaseUrl||""),String(e.config?.baseUrl||"")]),[e.config?.cloudEnvironment,e.config?.cloudBaseUrl,e.config?.cloudAuthBaseUrl,e.config?.apiBaseUrl,e.config?.baseUrl]),Cu=Zt&&!sn;o.useEffect(()=>{ri&&!dl.current&&(Xp(bu),hl(Ks),gl(null),$o(null),wn(null)),dl.current=ri},[Ks,bu,ri]);const tc=o.useCallback(async p=>{const I=String(p||"").trim();if(!(!I||!Zt))try{await fetch(Kr("/api/taskforce/auth/profile/avatar/discard"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:I})})}catch{}},[Zt,Kr]),rk=o.useCallback(()=>{const p=ns;Ni(!1),Zl(!1),$o(null),wn(null),gl(null),hl(Ks),p&&tc(p)},[Ks,tc,ns]),om=o.useCallback(async p=>{if(!p||!Zt)return!1;if(!p.type.startsWith("image/"))return $o("Profile photo must be an image file."),wn(null),!1;eh(!0),$o(null),wn(null);try{const I=await XJ(p,{maxBytes:Tre});if(I.exceededLimit){const bn=p.type==="image/gif"?"Animated GIF profile photos must be 5 MB or smaller.":"Profile photo must be 5 MB or smaller.";throw new Error(bn)}const $=I.file,Ae=await fetch(Kr("/api/taskforce/auth/profile/avatar/init"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({originalName:$.name,mimeType:$.type,size:$.size})}),We=await Ae.json().catch(()=>({}));if(!Ae.ok||!We?.success||typeof We?.draftId!="string"||typeof We?.relativePath!="string")throw new Error(We?.error||"Failed to start avatar upload.");if(!(await fetch(Kr("/api/taskforce/auth/profile/avatar/upload"),{method:"POST",headers:{"Content-Type":$.type||"application/octet-stream","x-taskforce-avatar-draft-id":We.draftId},credentials:"include",body:$})).ok)throw new Error("Failed to upload avatar.");const Mr=await fetch(Kr("/api/taskforce/auth/profile/avatar/finalize"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:We.draftId,relativePath:We.relativePath})}),Hr=await Mr.json().catch(()=>({}));if(!Mr.ok||!Hr?.success||typeof Hr?.draftId!="string")throw new Error(Hr?.error||"Failed to finalize avatar upload.");const za=ns;return gl(Hr.draftId),hl(typeof Hr?.avatarUrl=="string"?Hr.avatarUrl:""),wn(null),za&&za!==Hr.draftId&&tc(za),!0}catch(I){return $o(I instanceof Error?I.message:"Failed to upload profile photo."),!1}finally{eh(!1)}},[Zt,tc,ns,Kr]),id=o.useCallback(()=>{if(!ns)return;const p=ns;gl(null),hl(Ks),wn(null),$o(null),tc(p)},[Ks,tc,ns]),Bc=o.useCallback(()=>{const p=ns;gl(null),hl(""),wn(Ks?"Profile photo will be removed when you save.":null),$o(null),p&&tc(p)},[Ks,tc,ns]),Iu=o.useCallback(async()=>{const p=ku.trim();if(!p){$o("Display name is required."),wn(null);return}rm(!0),$o(null),wn(null);const I=await qn({displayName:p,avatarDraftId:ns,clearAvatar:!ns&&!tm&&!!Ks});if(!I.success){$o(I.error||"Failed to update profile."),rm(!1);return}wn("Profile updated."),gl(null),hl(""),rm(!1),Zl(!1)},[Ks,ns,tm,ku,qn]),qs=o.useCallback(()=>{const p={},I=String(ec||"").trim();I&&(p["x-taskforce-workspace-id"]=I);const $=uu||Rr;return($==="owner"||$==="admin"||$==="member"||$==="read-only")&&(p["x-taskforce-workspace-role"]=$),p},[Rr,ec,uu]),uh=o.useCallback(p=>{const I=Ut,$=p==="account_menu"&&Ji;Es.current=Em(),Lc.current={billing:I,teamManagement:$},Cr("account_surface_opened",{surface:p,expectsBilling:I,expectsTeamManagement:$}),!I&&!$&&(Cr("account_surface_ready",{surface:p,durationMs:0,teamManagementVisible:!1,billingPlanId:null}),Es.current=null)},[Ji,Ut]),cd=o.useCallback(p=>{const I=Lc.current;if(I[p]=!1,I.billing||I.teamManagement)return;const $=Es.current;$!==null&&(Cr("account_surface_ready",{surface:ri?"account_settings":lo?"account_menu":"closed",durationMs:Math.round(Em()-$),teamManagementVisible:kl,billingPlanId:String(Na?.planId||"").trim()||null}),Es.current=null)},[Na?.planId,kl,lo,ri]),mo=o.useCallback(async p=>{const I=Kr(TA);if(!Ut)return Qf(null),em(null),fu(null),mu("unknown"),Yf(!1),Ql(null),xA(I,{identityKey:Fr}),cd("billing"),cd("teamManagement"),null;const $=Em();Yp(!0),em(null),Yf(Ji),Ql(null);try{const Ae=await WJ(I,{identityKey:Fr,force:p?.force===!0}),We=Ae?.workspaceRole==="owner"||Ae?.workspaceRole==="admin"||Ae?.workspaceRole==="member"||Ae?.workspaceRole==="read-only"?Ae.workspaceRole:null,Ht=Ae?.teamPlanMode==="team"||Ae?.teamPlanMode==="personal"?Ae.teamPlanMode:"unknown";return Qf(Ae),fu(We),mu(Ht),Ql(null),Cr("account_profile_summary_resolved",{durationMs:Math.round(Em()-$),planId:String(Ae?.planId||"").trim()||null,gate:String(Ae?.gate||"").trim()||null,teamManagementAllowed:Ae?.teamManagementAllowed===!0}),Ae}catch(Ae){const We=Ae instanceof Error?Ae.message:"Failed to load account summary.",Ht=!!ni.current;return em(We),Ht?Ql(null):(fu(null),mu("unknown"),Ql(We)),Cr("account_profile_summary_failed",{durationMs:Math.round(Em()-$),error:We,preservedSummary:Ht}),ni.current}finally{Yp(!1),Yf(!1),cd("billing"),cd("teamManagement")}},[Fr,Ji,Ut,cd,Kr]),nk=o.useCallback(p=>{Qf(p);const I=p?.workspaceRole==="owner"||p?.workspaceRole==="admin"||p?.workspaceRole==="member"||p?.workspaceRole==="read-only"?p.workspaceRole:null,$=p?.teamPlanMode==="team"||p?.teamPlanMode==="personal"?p.teamPlanMode:"unknown";fu(I),mu($)},[]),im=o.useMemo(()=>qv(Na).allowReturnToApp,[Na]),fh=o.useCallback(async()=>{const p=new URLSearchParams;p.set("screen","plans"),p.set("interval",rs);const I=String(Na?.planId||"").trim(),$=String(Na?.planVersionId||"").trim();I&&p.set("planId",I),$&&p.set("planVersionId",$),n(`/?${p.toString()}`)},[Na?.planId,Na?.planVersionId,rs,n]),mh=o.useCallback(async()=>{Zi(null),pl(null),gu(!0);try{const p=await fetch(Kr("/api/taskforce/billing/portal-session"),{method:"POST",credentials:"include"}),I=await p.json().catch(()=>({}));if(!p.ok){Zi(String(I?.error||"Failed to create portal session."));return}const $=String(I?.url||"").trim();if(!$){Zi("Portal session did not return a redirect URL.");return}window.location.assign($)}catch{Zi("Failed to open billing portal.")}finally{gu(!1)}},[Kr]),ak=o.useCallback(async()=>{Zi(null),pl(null),gu(!0);try{const p=String(Na?.planVersionId||"").trim();if(!p){Zi("No active plan version is linked to this account.");return}const I=await fetch(Kr("/api/taskforce/billing/subscription"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({planVersionId:p,interval:rs})}),$=await I.json().catch(()=>({}));if(!I.ok){Zi(String($?.error||"Failed to update subscription interval."));return}pl("Subscription updated."),xA(Kr(TA),{identityKey:Fr}),await mo()}catch{Zi("Failed to update subscription interval.")}finally{gu(!1)}},[Na?.planVersionId,Fr,rs,mo,Kr]);o.useEffect(()=>{!Ut||!sn||mo()},[sn,Ut,mo]),o.useEffect(()=>{!ri&&!lo||mo()},[mo,lo,ri]);const Wc=o.useCallback(async()=>{if(ad){Hp(!0),uo(null);try{const p=await fetch("/api/taskforce/admin/users",{method:"GET",credentials:"include",headers:qs()}),I=await p.json().catch(()=>({}));if(!p.ok){uo(I?.error||"Failed to load workspace users.");return}const $=Array.isArray(I?.users)?I.users:[],Ae={owner:0,admin:1,member:2,"read-only":3},We=$.map(Ht=>({userId:String(Ht?.userId||""),email:String(Ht?.email||""),displayName:typeof Ht?.displayName=="string"?Ht.displayName:null,role:Ht?.role==="owner"||Ht?.role==="admin"||Ht?.role==="member"||Ht?.role==="read-only"?Ht.role:"member",permissionMode:Ht?.permissionMode==="read-only"?"read-only":"read-write",status:String(Ht?.status||"active"),disabled:Ht?.disabled===!0}));We.sort((Ht,Mr)=>{const Hr=(Ae[Ht.role]??99)-(Ae[Mr.role]??99);return Hr!==0?Hr:(Ht.displayName||Ht.email).localeCompare(Mr.displayName||Mr.email,void 0,{sensitivity:"base"})}),By(We)}catch{uo("Failed to load workspace users.")}finally{Hp(!1)}}},[ad,qs]),$c=o.useCallback(async p=>{if(!ad)return;const I=Math.max(0,Math.floor(p));Gp(!0),uo(null);try{const $=I*Mc,Ae=await fetch(`/api/taskforce/admin/workspace-audit-logs?limit=${Mc}&offset=${$}`,{method:"GET",credentials:"include",headers:qs()}),We=await Ae.json().catch(()=>({}));if(!Ae.ok){uo(We?.error||"Failed to load workspace audit log.");return}const Ht=Array.isArray(We?.events)?We.events:[];zy(Ht.map(Hr=>({id:String(Hr?.id||""),action:String(Hr?.action||""),actorUserId:String(Hr?.actorUserId||""),actorRole:String(Hr?.actorRole||""),createdAt:String(Hr?.createdAt||Hr?.ts||"")}))),Uy(I);const Mr=Math.max(1,Number(We?.pages||1));Ky(Mr),Vy(I+1<Mr)}catch{uo("Failed to load workspace audit log.")}finally{Gp(!1)}},[ad,qs]),_u=o.useCallback(async()=>{await Promise.all([Wc(),$c(Gs)])},[Wc,$c,Gs]),cm=o.useCallback((p="login")=>{const I=`${s.pathname}${s.search}${s.hash}`,$=!I||I==="/login"||!I.startsWith("/")?"/":I;Vs(!1),Ni(!1),wu(),n(`/login?mode=${p}&next=${encodeURIComponent($)}`)},[wu,s.hash,s.pathname,s.search,n]),ld=o.useCallback(p=>{Vs(!1),qf(!1);const I=new URLSearchParams({step:"workspace"});p?.intent==="create-workspace"&&I.set("intent","create-workspace"),n(`/setup?${I.toString()}`,{replace:!0})},[n]),Tu=o.useCallback(async()=>{if(yu)return;if(ed(!0),!Ut){try{d()}finally{ed(!1)}return}const p=ni.current;if(p&&!qv(p).allowReturnToApp){ed(!1);return}d(),(async()=>{try{const I=await e.continueAfterCommercialOnboarding();if(!I.success){lt(I.error||"Unable to finish onboarding.","error"),I.destination==="login"&&n("/login",{replace:!0});return}I.destination==="setup"&&ld()}finally{ed(!1)}})()},[ni,d,Ut,n,ld,yu,e,lt]),lm=o.useCallback(()=>{if(l){Tu();return}Xn(()=>{Ti(),v("tasks"),ba(!1),Rt(null),rn(null),vn(null),Ua(!1),m==="add"&&_(),f("tasks"),(s.pathname!=="/"||s.search)&&n("/")})},[m,Ti,Xn,Tu,l,s.pathname,s.search,n,_,f,v]),wl=o.useCallback(p=>{bp(p),ir("open"),Vl(!1),v("tasks"),l&&d()},[d,l,v,Vl,ir,bp]),xu=o.useCallback(async p=>{if(!(!p||Jl)){if(gs&&!Io.current){Co(()=>()=>{xu(p)});return}Kf(""),Gf(!0);try{const I=await ln(p);if(!I.success){if(I.code==="WORKSPACE_NOT_FOUND"||I.code==="WORKSPACE_ID_REQUIRED"){ld();return}Kf(I.error||"Failed to switch workspace.");return}await Ar(!0),Vs(!1)}finally{Gf(!1)}}},[ln,Jl,Ar,ld,gs]),dm=o.useCallback(async()=>{Vs(!1),Up(!0),Xl("members"),((await mo())?.teamManagementAllowed??kl)&&(await Wc(),await $c(0))},[kl,mo,$c,Wc]),Fc=o.useCallback(async(p,I)=>{uo(null),Jf(p);try{const $=await I(),Ae=await $.json().catch(()=>({}));if(!$.ok){uo(Ae?.error||"Team management action failed.");return}await _u()}catch{uo("Team management action failed.")}finally{Jf(null)}},[_u]),um=o.useCallback(async()=>{const p=js.trim();if(p){ml(!0),uo(null),Xf(null);try{const I=await fetch("/api/taskforce/admin/users/invite",{method:"POST",headers:{"Content-Type":"application/json",...qs()},credentials:"include",body:JSON.stringify({workspaceId:ec,email:p,role:fl,permissionMode:fl==="member"?pu:"read-write"})}),$=await I.json().catch(()=>({}));if(!I.ok){uo($?.error||"Failed to send invite.");return}ul(""),$?.inviteEmailSent===!1?Xf(`Invite created, but email delivery failed${$?.inviteEmailError?`: ${String($.inviteEmailError)}`:"."}`):Xf("Invite sent."),await _u()}catch{uo("Failed to send invite.")}finally{ml(!1)}}},[xt,_u,qs,js,pu,fl]),Uc=o.useMemo(()=>Lr.trim().length>0,[Lr]),fm=o.useMemo(()=>Dc.filter(p=>p.status==="invited"),[Dc]),Ru=o.useMemo(()=>{const p=De.length!==g.length,I=pt.length!==rt.length,$=Tt.length!==It.length,Ae=N.length!==fc.length,We=Nt.length!==Kt.length,Ht=es!==null,Mr=An.length>0,Hr=Hs.length>0;return p||I||$||Ae||We||Ht||Mr||Hr},[g.length,rt.length,Kt.length,Nt.length,De.length,Tt.length,N.length,pt.length,It.length,An,Hs,es]),ph=_r,zc=o.useMemo(()=>Kte(ph),[ph]);o.useLayoutEffect(()=>{if(!io&&m!=="add")return;const p=()=>{const Ae=gc.current,We=Ae?Math.ceil(Ae.getBoundingClientRect().bottom):uv;ys(Math.max(uv,We))};p(),window.addEventListener("resize",p);const I=gc.current,$=typeof ResizeObserver<"u"?new ResizeObserver(p):null;return $&&I&&$.observe(I),()=>{window.removeEventListener("resize",p),$?.disconnect()}},[m,io]),o.useEffect(()=>{zl||$l(!1)},[zl]);const hh=zc.moduleId==="tasks"&&Ru,gh=Uc||Ru,yh=Ft==="archived"?ks.length:Ft==="deleted"?Oo.length:E.length,sk=Ft==="archived"?Gl.length:Ft==="deleted"?su.length:Tc.length,ok=gh?`${sk}/${yh}`:`${yh}`,Pu=gh?`${Ft.charAt(0).toUpperCase()+Ft.slice(1)} tasks matching current filters`:Ft==="deleted"?"Trash tasks — automatically deleted after 90 days":`${Ft.charAt(0).toUpperCase()+Ft.slice(1)} tasks`,ik=yr==="local"&&Ut,Li=o.useCallback(p=>{if(!p)return"Never";const I=new Date(p);return Number.isNaN(I.getTime())?"Never":I.toLocaleString()},[]),kh=o.useMemo(()=>Li(Wt),[Li,Wt]);o.useMemo(()=>Li(ue),[Li,ue]),o.useMemo(()=>Li(it),[Li,it]);const vh=nh||rr||Pt||"None",ai=dn(),dd=mn?.snapshot?.permits.recoveryObligations||0,ck=o.useMemo(()=>XZ({runtimeMode:yr,isAuthenticated:Ut,workspaceSyncStatus:Dr,workspaceCloudSyncEnabled:cn,workspaceSyncSummary:kn,workspaceSyncRecommendedAction:tn,workspaceSyncError:vh,coordinatorRecoveryObligations:dd,pushBlockedReason:ai.pushBlockedReason||null,pullBlockedReason:ai.pullBlockedReason||null,retryBlockedReason:ai.retryBlockedReason||null}),[yr,Ut,Dr,cn,kn,tn,vh,dd,ai.pushBlockedReason,ai.pullBlockedReason,ai.retryBlockedReason]),Da=o.useMemo(()=>ZZ(mn),[mn]),po=Da?.header||ck,ud=Da?Da.pendingLocalChanges:Mn,lk=Da?Da.lastPullAt:ue,dk=Da?Da.lastPushAt:it,uk=Da?Da.lastSyncedAt:Wt,wh=Li(lk),bh=Li(dk),Sh=Li(uk),Ah=Da?Da.busy:ga,mm=mn?.snapshot?.state.ownershipMode||null,ju=mm==="server"||mm==="browser-gateway"?mm:null,[C,se]=o.useState(!1),ce=mn?.phase!=="ready"||!mn.snapshot||mn.snapshot.state.transitionState!=="idle"||mn.snapshot.permits.active>0||dd>0,Q=o.useCallback(async()=>{if(!(!ju||C)){se(!0);try{const p=ju==="server"?"browser-gateway":"server";await Rn(p),lt(p==="server"?"The local Taskforce server now owns background synchronization.":"This browser now owns background synchronization.","success")}catch(p){lt(p instanceof Error&&p.message.trim()?p.message:"Sync ownership could not be transferred.","error")}finally{se(!1)}}},[ju,C,lt,Rn]),Be=po.lastError,[qe,tt]=o.useState(po.status),Gt=o.useMemo(()=>jJ(ai,mn?.phase==="ready"&&mn.snapshot?.state.ownershipMode==="server"?{recoveryObligations:dd,outbox:mn.snapshot.workspace?.outbox||null}:null),[dd,mn,ai]),pr=o.useMemo(()=>Da?.diagnostics||NJ(Gt),[Da,Gt]),{syncRecentEvents:Tr,syncRecentEventsLoading:Or,syncRecentEventsError:Br,syncEventsListRef:Gn,loadRecentSyncEvents:Ns}=hre({isOpen:rh,workspaceId:xt,refreshKeys:[it,ue,_t,Dr]}),ho=po.actionable&&Dr==="syncing"&&xr==="active"&&ud===0;o.useEffect(()=>{if(!ho){tt(po.status);return}const p=window.setTimeout(()=>{tt(po.status)},1200);return()=>window.clearTimeout(p)},[po.status,ho]);const Ys=o.useMemo(()=>DJ({syncRecentEvents:Tr,syncRecentEventsError:Br,syncRecentEventsLoading:Or}),[Tr,Br,Or]),pm=o.useMemo(()=>MJ(Tr),[Tr]),Ch=o.useMemo(()=>LJ(Tr),[Tr]),Hc=o.useMemo(()=>z_(qe),[qe]),bl=o.useMemo(()=>EJ(qe,fo),[fo,qe]),{workspaceSyncRepairBusy:fk,workspaceSyncRepairQueued:gT,workspaceSyncCopied:yT,handleCopySyncDetails:kT,handleQueueOrRunRepairSync:vT}=kre({currentWorkspaceId:xt,syncStatusLabel:Hc.label,workspaceSyncSummary:po.summary,workspaceSyncRecommendedAction:po.recommendedAction,formattedLastSyncTime:Sh,formattedLastPullTime:wh,formattedLastPushTime:bh,workspaceSyncDiagnostics:Gt,workspaceSyncPendingChanges:ud,syncLastError:Be,workspaceSyncPhase:xr,referenceMismatchCount:pm,syncRecentEvents:Tr,loadRecentSyncEvents:Ns,pushNotice:lt,resetWorkspaceSyncCursorAndPull:mr,workspaceSyncBusy:Ah,durableRepairQueueAvailable:ju==="server"}),wT=Da?Da.repairBusy:fk,bT=o.useMemo(()=>Da?.stage||H_(xr,fk,ga),[Da,ga,xr,fk]),nb=o.useMemo(()=>Fm(Sr)||new Date,[Sr]),fd=o.useMemo(()=>nw(nb,Vt),[nb,Vt]),Vc=o.useMemo(()=>{const p={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return zA.forEach(I=>{const $=lre(I,Vt);p[I]=Rd(mT(fd,$))}),p},[fd,Vt]),ab=o.useCallback(p=>{const I=Fm(p);if(!I)return Vc.mon;const $=I.getDay();return Vc[$===1?"mon":$===2?"tue":$===3?"wed":$===4?"thu":$===5?"fri":$===6?In?"sat":"fri":In?"sun":"fri"]||Vc.mon},[Vc,In]),ST=o.useCallback(async()=>{if(!(Ec||il.length===0)){Nc(!0);try{for(const p of il){const I=p.scheduledDate||p.dueDate||qr,$=ab(I);await H(p.id,{scheduledDate:$,scheduledWeekKey:dre($),orderInDay:null})}await Ar(!0)}finally{Nc(!1)}}},[Ec,il,qr,ab,H,Ar]),AT=o.useCallback(async()=>{if(!(Ec||jc.length===0)){Nc(!0);try{for(const p of jc)await H(p.id,{scheduledDate:null,scheduledWeekKey:null,orderInDay:null});await Ar(!0)}finally{Nc(!1)}}},[Ec,jc,H,Ar]),CT=o.useMemo(()=>Yg(fd,{month:"short",day:"numeric",year:"numeric"},Hn),[fd,Hn]),sb=o.useMemo(()=>{const $=(In?Vt==="sunday"?["sun","mon","tue","wed","thu","fri","sat"]:zA:["mon","tue","wed","thu","fri"]).map(We=>{const Ht=Fm(Vc[We])||fd,Mr=Vc[We],Hr=We==="sat"||We==="sun";return{value:We,label:`${cre[We]} ${Yg(Ht,{month:"short",day:"numeric"},Hn)}`,color:Hr?"#1e3a8a":"#3b82f6",icon:"Calendar",date:Mr,isPast:Mr<qr,isSelected:Mr===Sr,isWeekend:Hr}}),Ae=Bp.length>0;return[...ao?[{value:"backlog",label:"Backlog",color:"#64748b",icon:"Inbox"}]:[],...Ae?[{value:"expired",label:"Expired",color:"#ef4444",icon:"AlertTriangle"}]:[],...$]},[In,ao,Vc,fd,Bp.length,qr,Sr,Vt,Hn]),ob=o.useMemo(()=>{switch(h){case"category":return g;case"type":return(rt||[]).map(p=>({...p,icon:p.icon||Fg[p.value]?.icon,color:p.color||Fg[p.value]?.color}));case"priority":return It;case"complexity":return[{value:1,label:"Tiny",icon:"Gauge",color:"#10b981"},{value:2,label:"Low",icon:"Gauge",color:"#14b8a6"},{value:3,label:"Medium",icon:"Gauge",color:"#3b82f6"},{value:4,label:"High",icon:"Gauge",color:"#8b5cf6"},{value:5,label:"Epic",icon:"Gauge",color:"#d946ef"}];case"assignee":return Kt.map(p=>({value:p.value,label:p.label,icon:p.icon==="HelpCircle"?"Circle":p.icon,color:p.color}));case"status":return[...fc.filter(p=>p.value!=="done"&&p.value!=="cancelled"),{value:"completed",label:"Completed",icon:zo("done").icon,color:zo("done").color}];case"schedule":return sb;default:return g}},[h,g,rt,It,Kt,sb]),IT=a.jsxs("div",{className:hr.accountMenuWrap,ref:td,children:[a.jsx("button",{className:`tf-control-icon ${hr.avatarBtn}`,onClick:()=>{Vs(p=>{const I=!p;return I?uh("account_menu"):(Es.current=null,Lc.current={billing:!1,teamManagement:!1}),I})},title:Ut?"Account":"Account (Not signed in)","aria-label":Ut?"Account":"Account (Not signed in)","aria-haspopup":"menu","aria-expanded":lo,children:a.jsx("span",{className:hr.avatarBadge,"aria-hidden":"true",children:ch?a.jsx("img",{src:sm,alt:"",className:hr.avatarImage}):sd||a.jsx(tf,{size:14,className:hr.avatarIcon})})}),lo&&a.jsxs("div",{className:hr.accountMenu,role:"menu","aria-label":"Account menu",children:[a.jsxs("div",{className:hr.accountMenuSection,children:[a.jsx("div",{className:hr.accountMenuSectionLabel,children:"Account"}),a.jsx("div",{className:hr.accountMenuHint,children:Cu?"Checking sign-in status...":Ut?a.jsx(a.Fragment,{children:ah?a.jsx(a.Fragment,{children:a.jsxs("span",{className:hr.accountIdentityBlock,children:[a.jsx("span",{className:hr.accountIdentityEmail,children:vl}),sh&&bu&&a.jsxs("span",{className:hr.accountIdentityMetaLine,children:[a.jsx("span",{className:hr.accountIdentityMetaLabel,children:"Email"}),a.jsx("span",{className:hr.accountIdentityMetaValue,children:Qi})]}),qp?a.jsxs("span",{className:hr.accountIdentityMetaLine,children:[a.jsx("span",{className:hr.accountIdentityMetaLabel,children:"Subscription"}),a.jsx("span",{className:hr.accountIdentityMetaValue,children:"Loading…"})]}):tk?a.jsxs("button",{"aria-label":`Subscription ${Au}`,className:`${hr.accountIdentityMetaLine} ${hr.accountIdentityMetaAction}`,onClick:()=>{Vs(!1),c()},type:"button",children:[a.jsx("span",{className:hr.accountIdentityMetaLabel,children:"Subscription"}),a.jsx("span",{className:hr.accountIdentityMetaValue,children:Au})]}):Zp?a.jsxs("span",{className:hr.accountIdentityMetaLine,children:[a.jsx("span",{className:hr.accountIdentityMetaLabel,children:"Subscription"}),a.jsx("span",{className:hr.accountIdentityMetaValue,children:"Unavailable"})]}):null,a.jsxs("span",{className:hr.accountIdentityMetaLine,children:[a.jsx("span",{className:hr.accountIdentityMetaLabel,children:"Runtime"}),a.jsx("span",{className:hr.accountIdentityMetaValue,children:lh})]}),a.jsxs("span",{className:hr.accountIdentityMetaLine,children:[a.jsx("span",{className:hr.accountIdentityMetaLabel,children:"Environment"}),a.jsx("span",{className:hr.accountIdentityMetaValue,children:dh})]})]})}):"Signed in"}):"Not signed in"})]}),rd&&a.jsxs("div",{className:hr.accountMenuSection,children:[a.jsx("div",{className:hr.accountMenuSectionLabel,children:"Workspaces (Owned + Invited)"}),Yr.length===0&&a.jsx("div",{className:hr.accountMenuHint,children:"No workspaces found for this account yet."}),Yr.map(p=>a.jsxs("button",{className:`${hr.accountMenuItem} ${p.id===xt?hr.accountMenuItemActive:""}`,onClick:()=>xu(p.id),role:"menuitem",disabled:Jl||p.id===xt,title:p.description||p.name,children:[a.jsx(cc,{size:15}),a.jsxs("span",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:[a.jsx("span",{children:p.name}),a.jsx("span",{className:hr.accountMenuMeta,children:p.role})]})]},p.id)),a.jsxs("button",{className:hr.accountMenuItem,onClick:()=>{Kf(""),qf(!0),Vs(!1)},role:"menuitem",disabled:Jl,children:[a.jsx(di,{size:15}),"Create Workspace"]}),Fp&&a.jsx("div",{className:hr.accountMenuError,children:Fp})]}),My?a.jsx("div",{className:hr.accountMenuHint,children:"Resolving team management access..."}):kl?a.jsxs("button",{className:hr.accountMenuItem,onClick:()=>{dm()},role:"menuitem",children:[a.jsx(pg,{size:15}),"Team Management"]}):Ly?a.jsx("div",{className:hr.accountMenuHint,children:"Team Management unavailable right now."}):null,Ut&&a.jsxs("button",{className:hr.accountMenuItem,onClick:()=>{Vs(!1),uh("account_settings"),Ni(!0)},role:"menuitem",children:[a.jsx(Qm,{size:15}),"Account Settings"]}),a.jsxs("button",{className:hr.accountMenuItem,onClick:()=>{Vs(!1),ll(!0)},role:"menuitem",children:[a.jsx(Md,{size:15}),"Help & Support"]}),yr==="local"&&!Ut&&!Cu&&a.jsxs("button",{className:hr.accountMenuItem,onClick:()=>{cm("login")},role:"menuitem",children:[a.jsx(tf,{size:15}),"Sign In / Register"]}),Ut&&a.jsxs("button",{className:hr.accountMenuItem,onClick:async()=>{Vs(!1),await jr(),yr==="cloud"&&n("/login",{replace:!0})},role:"menuitem",children:[a.jsx(V0,{size:15}),"Sign Out"]})]})]}),ib=o.useCallback(()=>{b(p=>p==="show"?"collapse":p==="collapse"?"hide":"show")},[b]),cb=o.useCallback(()=>{_(),v("tasks"),f("add")},[_,f,v]),_T=o.useCallback(p=>{const I=e.workstreams.find($=>$.id===p);_(),st(Ho(I)||p),v("tasks"),f("add")},[e.workstreams,_,f,v,st]),lb=o.useCallback(p=>{ts.current=!1,Ii(!1),vn(p),_o(!1),ia(null),Qn(!1),wc(""),Ci(""),Ro(""),rl(null),Po(null);const I=p.entityType==="workstream"&&An&&Jt.initiativeById.get(An)||null;Qo(I?ws(I):""),rn(null)},[Jt.initiativeById,An]),db=o.useCallback((p,I)=>{ts.current=!1,Ii(!1),ia(p),Qn(!1),wc(""),Ci(""),Ro(""),rl(null),Po(null);const $=p.entityType==="workstream"&&((I?Jt.initiativeById.get(I):null)||An&&Jt.initiativeById.get(An))||null;Qo($?ws($):""),rn(null)},[Jt.initiativeById,An]),mk=o.useCallback(()=>{ts.current=!1,Ii(!1),vn(null),wc(""),Ci(""),Ro(""),rl(null),Po(null),Qo("")},[]),pk=o.useCallback(()=>{ts.current=!1,Ii(!1),ia(null),wc(""),Ci(""),Ro(""),rl(null),Po(null),Qo("")},[]),TT=o.useCallback(async()=>{const p=Vn||Dt;if(!p||ts.current)return;const I=Ai.trim();if(!I)return;ts.current=!0,Ii(!0);const $=!!Vn,Ae=Ll.trim()||null;try{if(p.entityType==="initiative")if(p.mode==="edit")await e.updateInitiative(p.targetId,{title:I,description:Ml.trim()||null}),Rt({type:"initiative",id:p.targetId}),lt("Initiative updated","success");else{const We=await e.createInitiative({title:I,description:Ml.trim()||null,ownerId:Ae,...bc||Sc?{icon:bc,color:Sc}:{}});Rt({type:"initiative",id:We.id}),rn(null),lt("Initiative created","success")}else{const We=zte(Jt.allInitiatives,p.mode==="create"?p.initiativeId:null,Xo);if(We.invalid){lt("Initiative not found by that reference.","error");return}const Ht={title:I,description:Ml.trim()||null,initiativeId:We.initiativeId,...p.mode==="create"?{ownerId:Ae}:{}};if(p.mode==="edit")await e.updateWorkstream(p.targetId,Ht),$?rn(p.targetId):(Rt({type:"workstream",id:p.targetId}),rn(null)),lt("Workstream updated","success");else{const Mr=await e.createWorkstream({...Ht,...bc||Sc?{icon:bc,color:Sc}:{}});$?rn(Mr.id):(Rt({type:"workstream",id:Mr.id}),rn(null)),lt("Workstream created","success")}}$?pk():mk()}catch(We){lt(We instanceof Error?We.message:"Failed to save planning item.","error")}finally{ts.current=!1,Ii(!1)}},[mk,pk,Ml,Xo,bc,Sc,Ll,Ai,Dt,Vn,Jt.allInitiatives,e,lt]),xT=o.useCallback(p=>{zt(I=>{const $=new Set(I);return $.has(p)?$.delete(p):$.add(p),$})},[]),RT=o.useCallback(p=>{Jo(I=>I===p?"":p),F("")},[]),PT=o.useCallback((p,I)=>{F($=>{const Ae=$===p?"":p;return Jo(Ae&&I||""),Ae})},[]),hm=o.useCallback(p=>{vn(null),ia(null),_o(!1),Qn(!1),Rt(p?{type:"initiative",id:p}:null),rn(null)},[]),gm=o.useCallback(p=>{vn(null),ia(null),_o(!1),Qn(!1),Rt(p?{type:"workstream",id:p}:null),rn(null)},[]),jT=o.useCallback(p=>{ia(null),Qn(!1),rn(p)},[]),ub=o.useCallback(p=>{if(p.kind==="initiative"||p.kind==="workstream"){const Ae=p.kind==="initiative"?e.initiatives.find(We=>We.referenceNumber===p.referenceNumber):e.workstreams.find(We=>We.referenceNumber===p.referenceNumber);if(!Ae){lt(`${p.token} could not be found.`,"error");return}Lo(()=>{v("planning"),ba(!0),p.kind==="initiative"?hm(Ae.id):gm(Ae.id)});return}const I=String(xt||"default").trim()||"default",$=Ae=>{ip(Ae,{ownerType:"task",ownerId:z,ownerReferenceLabel:Ss(pn),workspaceId:I})};i_(p,{workspaceId:I,headers:ei}).then($).catch(()=>{lt(`${p.token} could not be opened.`,"error")})},[pn,xt,z,Lo,hm,gm,e.initiatives,e.workstreams,lt,v,ei]),fb=o.useMemo(()=>({...ar,entityReferences:{resolve:yC,activate:ub}}),[ub,ar]);o.useEffect(()=>{const p=String(i.get(Wi.initiative)||"").trim(),I=String(i.get(Wi.workstream)||"").trim(),$=String(i.get(Wi.document)||"").trim(),Ae=String(i.get(Wi.image)||"").trim(),We=p?`initiative:${p}`:I?`workstream:${I}`:$?`document:${$}`:Ae?`image:${Ae}`:"";if(!We||al.current===We)return;if(p||I){const Hr=p?e.initiatives.find(za=>za.id===p):e.workstreams.find(za=>za.id===I);if(!Hr)return;al.current=We,Lo(()=>{v("planning"),ba(!0),p?hm(Hr.id):gm(Hr.id)});return}if($){if(!xi)return;al.current=We,Lo(()=>{Hd(null),Vd($),v("docs")});return}if(!Ic)return;al.current=We;const Ht=String(xt||"default").trim()||"default",Mr=new URLSearchParams({workspaceId:Ht});fetch(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(Ae)}?${Mr.toString()}`,{credentials:"include",headers:ei}).then(async Hr=>{if(!Hr.ok)throw new Error("Image not found");const za=await Hr.json();if(!za.target?.assetId||!za.target.path)throw new Error("Image target is unavailable");Lo(()=>{const bn=za.target;Eo.current=bn,No.current=null,Vi(bn),nl(null),Bl(Sl=>Sl+1),v("annotate")})}).catch(()=>{lt(`Image ${Ae} could not be opened.`,"error")})},[Ic,xt,xi,Lo,hm,gm,e.initiatives,e.workstreams,lt,i,v,ei]);const Eu=o.useCallback(async p=>{const I=`${p.type}:${p.id}`;Pr($=>({...$,[I]:{status:"loading",error:null}}));try{await e.fetchPlanningEntityDetail(p.type,p.id),Pr($=>({...$,[I]:{status:"ready",error:null}}))}catch($){Pr(Ae=>({...Ae,[I]:{status:"error",error:$ instanceof Error?$.message:"Failed to load the latest planning details."}}))}},[e.fetchPlanningEntityDetail]);o.useEffect(()=>{const p=new Map;if(Mt?.id&&p.set(`${Mt.type}:${Mt.id}`,Mt),ht&&p.set(`workstream:${ht}`,{type:"workstream",id:ht}),p.size!==0)for(const I of p.values())Eu(I)},[Eu,Mt?.id,Mt?.type,ht]);const hk=o.useCallback((p,I)=>{if(p==="workstream"&&I){db({mode:"create",entityType:"workstream",initiativeId:I},I);return}if(lb({mode:"create",entityType:p}),p==="workstream"){const $=(I?Jt.initiativeById.get(I):null)||(An?Jt.initiativeById.get(An):null)||null;Qo($?ws($):"")}},[lb,db,Jt.initiativeById,An]),mb=o.useCallback((p,I)=>{if(ts.current=!1,Ii(!1),p==="initiative"){const $=Jt.allInitiativeById.get(I);if(!$)return;ia(null),vn({mode:"edit",entityType:"initiative",targetId:I}),wc($.title),Ci($.description||""),Ro($.ownerId?String($.ownerId):""),Qo("");return}else{const $=Jt.allWorkstreamById.get(I);if(!$)return;const Ae=ht===I;Ae?(vn(null),ia({mode:"edit",entityType:"workstream",targetId:I})):(ia(null),vn({mode:"edit",entityType:"workstream",targetId:I})),wc($.title),Ci($.description||""),Ro($.ownerId?String($.ownerId):"");const We=$.initiativeId&&Jt.allInitiativeById.get($.initiativeId)||null;if(Qo(We?ws(We):""),Ae)return}rn(null)},[ht,Jt.allInitiativeById,Jt.allWorkstreamById]),gk=o.useCallback(async(p,I,$)=>{const Ae=$.trim()||null;try{p==="initiative"?await e.updateInitiative(I,{ownerId:Ae}):await e.updateWorkstream(I,{ownerId:Ae}),lt(`${p==="initiative"?"Initiative":"Workstream"} owner updated`,"success")}catch(We){throw lt(We instanceof Error?We.message:"Failed to update owner.","error"),We}},[e,lt]),yk=o.useCallback(async(p,I,$)=>{try{await e.updatePlanningIdentity(p,I,$)}catch(Ae){throw lt(Ae instanceof Error?Ae.message:"Failed to update visual identity.","error"),Ae}},[e.updatePlanningIdentity,lt]),Nu=o.useCallback(async(p,I)=>{const $=e.workstreams.find(Mr=>Mr.id===p);if(!$)return lt("Workstream not found.","error"),!1;const Ae=typeof I=="string"?I.trim():I===null?"":Xo.trim(),We=Ae.length===0?null:Wv(Jt.allInitiatives,Ae);if(Ae.length>0&&!We)return lt("Initiative not found by that reference.","error"),!1;const Ht=We?.id||null;if(($.initiativeId||null)===Ht)return lt(Ht?"Workstream already belongs to that initiative.":"Workstream is already standalone.","info"),!1;try{return await e.updateWorkstream(p,{initiativeId:Ht}),Qo(We?ws(We):""),lt(Ht?"Initiative set":"Initiative removed","success"),!0}catch{return lt("Failed to set initiative.","error"),!1}},[Xo,Jt.allInitiatives,e,lt]),Du=o.useCallback(async(p,I)=>{const $=Pc.get(p);if(!$)return lt("Task not found.","error"),!1;const Ae=I||null;if(Jt.initiativeById.has(p)||Jt.workstreamById.has(p))return lt("Only execution tasks can be moved into workstreams.","error"),!1;if(Ae&&!Jt.workstreamById.has(Ae))return lt("Workstream not found.","error"),!1;if(($.workstreamId||null)===Ae)return lt(Ae?"Task already belongs to that workstream.":"Task is already standalone.","info"),!1;try{return await e.handleUpdateTask(p,{workstreamId:Ae})===!1?!1:(await e.fetchPlanningEntities(),lt(Ae?"Workstream set":"Workstream removed","success"),!0)}catch{return lt("Failed to set workstream.","error"),!1}},[Pc,Jt.initiativeById,Jt.workstreamById,e,lt]),kk=o.useCallback(async(p,I)=>{const $=I.trim();if(!$)return lt("Enter a task reference.","error"),!1;const Ae=oy($),We=Rc.find(Ht=>Ht.id===$||Ss(Ht)===$||Ae!==null&&Ht.referenceNumber===Ae);return We?Du(We.id,p):(lt("Task not found by that reference.","error"),!1)},[Du,Rc,lt]),vk=o.useCallback(async(p,I)=>{const $=I.trim();if(!$)return lt("Enter a workstream reference.","error"),!1;const Ae=Jt.allInitiativeById.get(p);if(!Ae)return lt("Initiative not found.","error"),!1;const We=VI($),Ht=e.workstreams.find(Mr=>Mr.id===$||Ho(Mr)===$||We!==null&&Mr.referenceNumber===We);return Ht?Nu(Ht.id,ws(Ae)):(lt("Workstream not found by that reference.","error"),!1)},[Nu,Jt.allInitiativeById,e.workstreams,lt]),Mu=o.useCallback((p,I)=>{const $=`${p}:${I}`,Ae=Sp.current.get($);if(Ae)return Ae;const We=p==="initiative"?e.initiatives.find(Ht=>Ht.id===I):e.workstreams.find(Ht=>Ht.id===I);return Array.isArray(We?.attachments)?We.attachments:[]},[e.initiatives,e.workstreams]),Lu=o.useCallback((p,I,$)=>{const Ae=`${p}:${I}`;Sp.current.set(Ae,$);const Ht=(Ud.current.get(Ae)||Promise.resolve()).catch(()=>{}).then(()=>p==="initiative"?e.updateInitiative(I,{attachments:$}):e.updateWorkstream(I,{attachments:$}));Ud.current.set(Ae,Ht),Ht.catch(Mr=>{lt(Mr instanceof Error?Mr.message:"Failed to update planning context.","error")}).finally(()=>{Ud.current.get(Ae)===Ht&&Ud.current.delete(Ae)})},[e,lt]),wk=o.useCallback((p,I,$)=>{const Ae=Mu(p,I);Lu(p,I,[...Ae,$])},[Mu,Lu]),bk=o.useCallback((p,I,$)=>{const Ae=Mu(p,I);Lu(p,I,Ae.filter((We,Ht)=>Ht!==$))},[Mu,Lu]),Sk=o.useCallback((p,I,$,Ae)=>{const Ht=Mu(p,I).map((Mr,Hr)=>Hr!==$?Mr:typeof Mr=="string"?{path:Mr,caption:Ae,timestamp:new Date().toISOString()}:{...Mr,caption:Ae});Lu(p,I,Ht)},[Mu,Lu]),pb=o.useCallback(p=>{Jo(p),F("")},[]),hb=o.useCallback(p=>{F(p),Jo(p&&Jt.workstreamInitiativeIds.get(p)||"")},[Jt.workstreamInitiativeIds]),Ih=o.useCallback(p=>{const I=UA(p,Gi);if(I!==p){const $=Gi.find(Ae=>Ae.id===p)?.label||"That module";lt(`${$} is not available in this build yet.`,"error");return}if(_r==="workflowManager"&&I!=="workflowManager"&&gs&&!Io.current){Co(()=>()=>Ih(p));return}Ti(),v(I)},[Ti,lt,_r,v,gs,Gi]),gb=o.useCallback(()=>{if(_r==="tasks"&&Xa){ba(!1),Rt(null),rn(null),vn(null);return}if(_r!=="tasks"){v("tasks"),ba(!0);return}ba(p=>!p)},[Xa,_r,v]),yb=o.useCallback(()=>{if(_r!=="docs"){v("docs"),pc(!0);return}pc(p=>!p)},[_r,v]),kb=o.useCallback(()=>{if(_r!=="annotate"){v("annotate"),vi(!0);return}vi(p=>!p)},[_r,v]),vb=o.useCallback(()=>{if(_r!=="aiProfiles"){v("aiProfiles"),Hi(!0);return}Hi(p=>!p)},[_r,v]),wb=o.useCallback(()=>{if(_r!=="taskforceAgents"){v("taskforceAgents"),zs(!0);return}zs(p=>!p)},[_r,v]),bb=o.useCallback(()=>{if(_r!=="workflowManager"){v("workflowManager"),hc(!0);return}hc(p=>!p)},[_r,v]),ym=o.useCallback(()=>{$l(!1),Tf(null),Fl(null)},[]),Ak=o.useCallback(p=>{if(!Ps[zm]?.allowed){lt("Taskforce Agents are unavailable for this workspace.","error");return}const I=Ss(p)||p.id;Tf({taskId:p.id,taskReference:I,taskTitle:p.title}),co(!1),$l(!0),Ua(!1)},[lt,Ps]),Sb=o.useCallback(()=>{if(pn&&z){Ak(pn);return}if(!Ps[zm]?.allowed){lt("Taskforce Agents are unavailable for this workspace.","error");return}Tf(null),co(!1),$l(!0)},[pn,z,Ak,lt,Ps]),ET=o.useCallback(p=>{kt(p),Ua(!1)},[kt]),NT=o.useCallback(p=>{Ti(),v("tasks"),kt(p)},[Ti,kt,v]),DT=o.useCallback(p=>{Ti(),v("tasks"),kt(p)},[Ti,kt,v]),MT=o.useCallback((p,I)=>{const $=I?.sessionId??null;Eo.current=p,No.current=$,Vi(p),nl($),Bl(Ae=>Ae+1),v("annotate")},[v]),LT=o.useCallback(({target:p,sessionId:I})=>{Eo.current=p,No.current=I,Vi($=>!$&&!p||$&&p&&$.taskId===p.taskId&&$.taskReferenceLabel===p.taskReferenceLabel&&$.assetId===p.assetId&&$.imageReferenceLabel===p.imageReferenceLabel&&$.path===p.path&&$.displayName===p.displayName?$:p),nl($=>$===I?$:I)},[]),OT=o.useCallback((p,I)=>{const $=p.trim(),Ae=Math.max(0,Math.round(I));$&&Rp(We=>We[$]===Ae?We:GA(We,$,Ae))},[]),BT=o.useCallback(p=>{const I=Math.max(0,Math.round(p));Pp($=>$===I?$:I)},[]),WT=o.useCallback((p,I)=>{const $=p.trim();if(!$)return;const Ae={zoomLevel:Math.min(4,Math.max(.25,I.zoomLevel)),scrollLeft:Math.max(0,Math.round(I.scrollLeft)),scrollTop:Math.max(0,Math.round(I.scrollTop))};Kd(We=>{const Ht=We[$];return Ht&&Ht.zoomLevel===Ae.zoomLevel&&Ht.scrollLeft===Ae.scrollLeft&&Ht.scrollTop===Ae.scrollTop?We:GA(We,$,Ae)})},[]),Ab=o.useMemo(()=>[{value:"created",label:jt("standalone.sortCreated")},{value:"updated",label:jt("standalone.sortUpdated")},{value:"priority",label:jt("standalone.sortPriority")},{value:"complexity",label:jt("standalone.sortComplexity")},...YI(He,[...e.searchAgnosticTasks,...ks])],[ks,e.searchAgnosticTasks,He]),Cb=o.useMemo(()=>[{value:"status",label:jt("standalone.groupStatus")},{value:"category",label:jt("standalone.groupCategory")},{value:"type",label:jt("standalone.groupType")},{value:"priority",label:jt("standalone.groupPriority")},{value:"complexity",label:jt("standalone.groupComplexity")},{value:"assignee",label:jt("standalone.groupAssignee")},{value:"schedule",label:jt("standalone.groupSchedule")}],[]),Ib=o.useMemo(()=>Gi.filter(p=>p.enabled),[Gi]),_b=o.useMemo(()=>[{key:"empty-columns",icon:A==="show"?a.jsx(Nb,{size:16}):A==="collapse"?a.jsx(Db,{size:16}):a.jsx(iw,{size:16}),title:jt(A==="show"?"standalone.showEmptyColumns":A==="collapse"?"standalone.compressEmptyColumns":"standalone.hideEmptyColumns"),onClick:ib,active:A!=="show"},{key:"compressed-cards",icon:sr?a.jsx(G0,{size:16}):a.jsx(K0,{size:16}),title:jt(sr?"standalone.expandCards":"standalone.compressCards"),onClick:()=>ot(!sr),active:sr}],[sr,ib,A]),$T=o.useMemo(()=>zc.moduleId!=="tasks"?[]:[{key:"filter-toggle",icon:a.jsx(sC,{size:16}),title:jt("standalone.toggleFilters"),onClick:()=>Fa(!wa),active:wa,ariaExpanded:wa,ariaControls:"task-workspace-filters",className:hh?P.filterGlow:""}],[hh,Fa,wa,zc.moduleId]),FT=o.useMemo(()=>{const p=[];return zl&&p.push({key:"ask-agent",icon:a.jsx(Cd,{size:16}),title:io?"Close Taskforce Agent":"Ask Taskforce Agent",onClick:io?ym:Sb,active:io}),p},[ym,Sb,io,zl]),UT=o.useMemo(()=>a.jsx(AX,{id:"task-workspace-filters",categoryFilterOptions:Pf,typeFilterOptions:jf,priorities:It,taxonomyDisplayLabels:Xe,filterCategories:De,setFilterCategories:nt,filterTypes:pt,setFilterTypes:ut,filterPriorities:Tt,setFilterPriorities:Xt,filterStatus:N,setFilterStatus:j,filterAssignees:Nt,setFilterAssignees:Qt,assigneeOptions:Kt,initiativeFilterOptions:Lf,selectedInitiativeId:An,setSelectedInitiativeId:pb,workstreamFilterOptions:Of,selectedWorkstreamId:Hs,setSelectedWorkstreamId:hb,taskScope:Ft,setTaskScope:ir,showArchive:_c,setShowArchive:Vl,clearFiltersDisabled:!Uc&&!Ru&&or==="created"&&e.sortOrder==="desc",clearFilters:()=>{ur(),hf(),Jo(""),F("")}}),[Kt,Pf,ur,Nt,De,Tt,N,pt,Ru,Uc,pb,hb,Lf,It,e.sortOrder,An,Hs,Qt,nt,Xt,j,ut,Jo,F,Vl,ir,or,hf,_c,Ft,Xe,jf,Of]),zT=o.useMemo(()=>[{key:"zen-toggle",icon:a.jsx(q0,{size:16,fill:w?"currentColor":"none"}),title:jt(w?"standalone.exitZenMode":"standalone.enterZenMode"),onClick:()=>R(),active:w}],[R,w]),HT=o.useMemo(()=>({search:a.jsx(vX,{value:Lr,placeholder:jt("standalone.searchPlaceholder"),active:Uc,onChange:Wr,onClear:()=>Wr(""),clearTitle:jt("standalone.clearSearchTitle")}),sort:a.jsx(DA,{label:a.jsxs(a.Fragment,{children:[a.jsx(cw,{size:12})," ",jt("standalone.sortLabel")]}),value:or,options:Ab,onChange:p=>Nr(p),trailingAction:a.jsx("button",{className:`tf-control-icon ${P.sortDirectionBtn}`,onClick:()=>e.toggleSortOrder(),title:e.sortOrder==="desc"?jt("standalone.sortDirectionDescTitle"):jt("standalone.sortDirectionAscTitle"),children:e.sortOrder==="desc"?a.jsx(sw,{size:14}):a.jsx(JA,{size:14})})}),"divider-primary":a.jsx(MA,{}),grouping:a.jsx(DA,{label:a.jsxs(a.Fragment,{children:[a.jsx(Tg,{size:12})," ",jt("standalone.groupLabel")]}),value:h,options:Cb,onChange:p=>y(p)}),"divider-secondary":a.jsx(MA,{}),"task-display-actions":a.jsx(lg,{actions:_b})}),[h,Cb,Ih,Uc,e,Lr,y,Wr,Nr,or,Ab,_b,zc.moduleId]),VT=o.useMemo(()=>({"add-task":a.jsx(wX,{icon:a.jsx(di,{size:16}),label:jt("standalone.addTask"),onClick:cb}),"add-document":null}),[cb]),md=o.useMemo(()=>{const p=`${Jr.workspaceToolButton} tf-control-icon tf-control-icon-quiet`,I=`${p} tf-control-icon-active`,$={tasks:a.jsx(Q0,{size:18}),planning:a.jsx(Tg,{size:18}),docs:a.jsx(Xm,{size:18}),annotate:a.jsx(eC,{size:18}),workflowManager:a.jsx(Mb,{size:18}),taskforceAgents:a.jsx(Cd,{size:18}),aiProfiles:a.jsx(pg,{size:18})},Ae=_r==="planning"?a.jsx("span",{className:Jr.workspaceToolButton,"aria-hidden":"true"}):_r==="docs"?a.jsx("button",{type:"button",className:Sa?I:p,onClick:yb,title:Sa?"Collapse document tray":"Document tray","aria-label":Sa?"Collapse document tray":"Document tray",children:Sa?a.jsx(vo,{size:18}):a.jsx(cc,{size:18})}):_r==="annotate"?a.jsx("button",{type:"button",className:hs?I:p,onClick:kb,title:hs?"Collapse image tray":"Image tray","aria-label":hs?"Collapse image tray":"Image tray",children:hs?a.jsx(vo,{size:18}):a.jsx(cc,{size:18})}):_r==="aiProfiles"?a.jsx("button",{type:"button",className:un?I:p,onClick:vb,title:un?"Collapse AI Profile tray":"MCP settings tray","aria-label":un?"Collapse AI Profile tray":"MCP settings tray",children:un?a.jsx(vo,{size:18}):a.jsx(J0,{size:18})}):_r==="taskforceAgents"?a.jsx("button",{type:"button",className:ma?I:p,onClick:wb,title:ma?"Collapse builder library":"Builder library","aria-label":ma?"Collapse builder library":"Builder library",children:ma?a.jsx(vo,{size:18}):a.jsx(pg,{size:18})}):_r==="workflowManager"?a.jsx("button",{type:"button",className:Ea?I:p,onClick:bb,title:Ea?"Collapse workflow library":"Workflow library","aria-label":Ea?"Collapse workflow library":"Workflow library",children:Ea?a.jsx(vo,{size:18}):a.jsx(Mb,{size:18})}):a.jsx("button",{ref:Ko,type:"button",className:_r==="tasks"&&Xa?I:p,onClick:gb,title:_r==="tasks"&&Xa?"Collapse planning trays":"Planning","aria-label":_r==="tasks"&&Xa?"Collapse planning trays":"Planning",children:_r==="tasks"&&Xa?a.jsx(vo,{size:18}):a.jsx(X0,{size:18})});return a.jsxs("aside",{className:`${Jr.workspaceToolRail} ${Jr.workspaceToolRailLeft}`,"aria-label":"Workspace tools",children:[a.jsxs("div",{className:Jr.workspaceToolRailMain,children:[Ae&&a.jsxs(a.Fragment,{children:[Ae,a.jsx("div",{className:Jr.workspaceToolRailDivider})]}),Ib.map(We=>a.jsx("button",{type:"button",className:_r===We.id?I:p,onClick:()=>Ih(We.id),title:We.label,"aria-label":We.label,children:$[We.id]},We.id))]}),a.jsxs("div",{className:Jr.workspaceToolRailBottom,children:[a.jsx("div",{className:Jr.workspaceToolRailDivider}),a.jsx("button",{type:"button",className:m==="settings"?I:p,onClick:()=>{if(_r==="workflowManager"&&gs&&!Io.current){Co(()=>()=>{Gr("general"),f("settings")});return}Gr("general"),f("settings")},title:"Workspace Settings","aria-label":"Workspace Settings",children:a.jsx(Qm,{size:18})})]})]})},[m,un,Sa,vb,yb,kb,Ih,gb,wb,bb,hs,Xa,_r,Gr,f,ma,Ea,gs,Ib]),[Tb,GT]=o.useState(null),KT=o.useCallback(p=>{GT(p)},[]),xb=o.useCallback((p,I)=>Eu({type:p,id:I}),[Eu]),Rb=o.useCallback(async(p,I)=>{const $=I.title.trim();if(!$)throw new Error(`${p==="initiative"?"Initiative":"Workstream"} title is required.`);try{if(p==="initiative"){const We=await e.createInitiative({title:$,description:I.description?.trim()||null,ownerId:I.ownerId?.trim()||null,...I.icon||I.color?{icon:I.icon??null,color:I.color??null}:{}});return lt("Initiative created","success"),{id:We.id}}const Ae=await e.createWorkstream({title:$,description:I.description?.trim()||null,ownerId:I.ownerId?.trim()||null,initiativeId:I.initiativeId?.trim()||null,...I.icon||I.color?{icon:I.icon??null,color:I.color??null}:{}});return lt("Workstream created","success"),{id:Ae.id}}catch(Ae){throw lt(Ae instanceof Error?Ae.message:"Failed to create planning item.","error"),Ae}},[e.createInitiative,e.createWorkstream,lt]),Pb=o.useCallback(async(p,I,$)=>{const Ae=$.title.trim();if(!Ae)throw new Error(`${p==="initiative"?"Initiative":"Workstream"} title is required.`);try{const We={title:Ae,description:$.description?.trim()||null};if(p==="initiative"){await e.updateInitiative(I,We),lt("Initiative updated","success");return}await e.updateWorkstream(I,We),lt("Workstream updated","success")}catch(We){throw lt(We instanceof Error?We.message:"Failed to update planning item.","error"),We}},[e.updateInitiative,e.updateWorkstream,lt]),Ck=o.useCallback(async(p,I)=>{try{await e.reorderWorkstreamTasks(p,I)}catch($){throw lt($ instanceof Error?$.message:"Failed to reorder workstream tasks.","error"),$}},[e.reorderWorkstreamTasks,lt]),Ou=o.useMemo(()=>({initiatives:Jt.allInitiatives,standaloneWorkstreams:Jt.allStandaloneWorkstreams,assigneeOptions:Kt,currentOwnerId:On==="anonymous"?null:On,currentWorkspaceId:xt,theme:lr,taskReferences:ar,loadState:e.planningLoadState,hydrationStateByEntity:tr,hydrateEntity:xb,retry:()=>{e.fetchPlanningEntities()},openTask:kt,setTaskStatus:cl,setTaskAssignee:Uf,linkOptions:ou,assignWorkstreamToInitiative:Nu,assignTaskToWorkstream:Du,attachWorkstreamToInitiative:vk,attachTaskToWorkstream:kk,archiveEntity:Yi,unarchiveEntity:Hf,changeOwner:gk,changeIdentity:yk,createEntity:Rb,updateEntity:Pb,addContextFile:wk,removeContextFile:bk,updateContextCaption:Sk,showTaskCardStatusLabel:ke,taskArrangeMode:Si,setTaskArrangeMode:Zo,reorderWorkstreamTasks:Ck}),[xt,lr,gk,yk,Nu,Du,kk,vk,Yi,Hf,Rb,wk,kt,bk,cl,Uf,Sk,xb,Kt,On,Jt.allInitiatives,Jt.allStandaloneWorkstreams,ou,tr,e.fetchPlanningEntities,e.planningLoadState,ke,Si,Ck,ar,Pb]),qT=a.jsx(Ute,{open:Xa,leftOffset:56,returnFocusRef:Ko,theme:lr,initiatives:Ou.initiatives,standaloneWorkstreams:Ou.standaloneWorkstreams,planningLoadState:Ou.loadState,onRetryPlanning:Ou.retry,taskScope:Ft,activeInitiativeId:An,activeWorkstreamId:Hs,navigatorSort:To,navigatorSortReady:au,onNavigatorSortChange:kc,taskArrangeMode:Si,onTaskArrangeModeChange:Zo,onReorderWorkstreamTasks:Ck,planningFavorites:au?xo:[],onTogglePlanningFavorite:p=>{vc(I=>sX(I,p))},favoritesSectionCollapsed:yc,initiativesSectionCollapsed:tl,workstreamsSectionCollapsed:Dl,onToggleFavoritesSection:()=>Nl(p=>!p),onToggleInitiativesSection:()=>oa(p=>!p),onToggleWorkstreamsSection:()=>bi(p=>!p),expandedInitiativeIds:O,detail:Bf,editor:Dt,secondaryEditor:Vn,secondaryPane:Wf,primaryHydrationState:Np,secondaryHydrationState:Dp,onRetryPrimaryHydration:Mt?()=>{Eu(Mt)}:void 0,onRetrySecondaryHydration:ht?()=>{Eu({type:"workstream",id:ht})}:void 0,onWidthChange:Cy,currentWorkspaceId:xt,currentOwnerId:On==="anonymous"?"":On,linkOptions:ou,showTaskCardStatusLabel:ke,assigneeOptions:Kt.map(p=>({value:String(p.value),label:p.label,icon:p.icon,color:p.color,kind:p.kind,avatarUrl:p.avatarUrl??null,avatarRevision:p.avatarRevision??null,avatarUpdatedAt:p.avatarUpdatedAt??null,username:p.username??null,surfaceType:p.surfaceType??null,providerMetadata:p.providerMetadata??null,archivedAt:p.archivedAt??null})),draftInitiativeSummary:Iy,draftTitle:Ai,draftDescription:Ml,draftOwner:Ll,draftInitiativeId:Xo,draftIcon:bc,draftColor:Sc,onChangeDraftTitle:wc,onChangeDraftDescription:Ci,onChangeDraftOwner:Ro,onChangeDraftInitiativeId:Qo,onChangeDraftIcon:rl,onChangeDraftColor:Po,onCollapseTreePane:()=>oo(!0),onExpandTreePane:()=>oo(!1),onCollapsePrimaryPane:()=>_o(!0),onExpandPrimaryPane:()=>_o(!1),onCollapseSecondaryPane:()=>Qn(!0),onExpandSecondaryPane:()=>Qn(!1),onBackFromSecondary:()=>{ts.current=!1,Ii(!1),ia(null),rn(null)},treeCollapsed:pa,primaryCollapsed:fn,secondaryCollapsed:Qa,onCancelEditor:mk,onCancelSecondaryEditor:pk,onSubmitEditor:TT,isSubmittingEditor:wp,onCreateInitiative:()=>hk("initiative"),onCreateWorkstream:()=>hk("workstream"),onCreateTaskInWorkstream:_T,onCreateWorkstreamInInitiative:p=>hk("workstream",p),onAssignInitiativeToWorkstream:Nu,onOpenTaskById:Ou.openTask,onSetTaskStatus:cl,onChangeTaskAssignee:Uf,onArchivePlanningTask:$p,onArchiveResolvedWorkstream:Ei,onArchiveResolvedInitiative:zf,taskReferences:ar,onAssignTaskToWorkstream:Du,onAttachTaskToWorkstreamByReference:kk,onAttachWorkstreamToInitiativeByReference:vk,onAddPlanningContextFile:wk,onRemovePlanningContextFile:bk,onUpdatePlanningContextCaption:Sk,onToggleInitiative:xT,onSelectInitiative:RT,onSelectWorkstream:PT,onOpenInitiativeDetails:hm,onOpenWorkstreamDetails:gm,onOpenNestedWorkstreamDetails:jT,onEditInitiative:p=>mb("initiative",p),onEditWorkstream:p=>mb("workstream",p),onChangePlanningOwner:gk,onChangePlanningIdentity:yk,onArchiveInitiative:p=>{e.archiveInitiative(p).then(()=>{lt("Initiative archived","success")}).catch(I=>{lt(I instanceof Error?I.message:"Failed to archive initiative.","error")})},onUnarchiveInitiative:p=>{e.unarchiveInitiative(p).then(()=>{lt("Initiative unarchived","success")}).catch(I=>{lt(I instanceof Error?I.message:"Failed to unarchive initiative.","error")})},onArchiveWorkstream:p=>{e.archiveWorkstream(p).then(()=>{lt("Workstream archived","success")}).catch(I=>{lt(I instanceof Error?I.message:"Failed to archive workstream.","error")})},onUnarchiveWorkstream:p=>{e.unarchiveWorkstream(p).then(()=>{lt("Workstream unarchived","success")}).catch(I=>{lt(I instanceof Error?I.message:"Failed to unarchive workstream.","error")})}}),YT=zc.headerSections.map(p=>{const I=HT[p];return I?a.jsx(ne.Fragment,{children:I},p):null}).filter(Boolean),ZT=zc.primaryAction?VT[zc.primaryAction]:null,Ik=io?a.jsx("div",{className:`${P.taskforceAgentDrawerOverlay} ${Cc?P.taskforceAgentDrawerOverlayCollapsed:""}`.trim(),style:{top:`${Yo}px`},"data-theme":lr,"aria-label":"Taskforce Agent chat",children:a.jsx("aside",{className:Cc?`${Jr.workspaceToolRail} ${Jr.workspaceToolRailRight}`:P.taskforceAgentDrawerPanel,children:Cc?a.jsxs("div",{className:Jr.workspaceToolRailMain,children:[a.jsx("button",{type:"button",className:`${Jr.workspaceToolButton} tf-control-icon tf-control-icon-quiet tf-control-icon-active`,onClick:()=>co(!1),title:"Expand agent chat","aria-label":"Expand agent chat",children:a.jsx(Cd,{size:16})}),a.jsx("button",{type:"button",className:`${Jr.workspaceToolButton} tf-control-icon tf-control-icon-quiet`,onClick:ym,title:"Close agent chat","aria-label":"Close agent chat",children:a.jsx(fi,{size:16})})]}):a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:P.taskforceAgentDrawerHeader,children:[eu||a.jsxs("div",{className:P.taskforceAgentDrawerHeaderFallback,children:[a.jsx("span",{className:P.taskforceAgentDrawerFallbackAvatar,"aria-hidden":"true",children:a.jsx(Cd,{size:16})}),a.jsx("strong",{children:"Loading agent..."})]}),a.jsxs("div",{className:P.taskforceAgentDrawerHeaderActions,children:[a.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>co(!0),title:"Collapse agent chat","aria-label":"Collapse agent chat",children:a.jsx(Ld,{size:16})}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:ym,title:"Close agent chat","aria-label":"Close agent chat",children:a.jsx(fi,{size:16})})]})]}),a.jsx(o.Suspense,{fallback:a.jsx("div",{className:P.taskforceAgentDrawerLoading,children:a.jsx(ea,{size:18,className:P.spinner})}),children:a.jsx(VA,{workspaceId:xt,launchContext:wy,onClearLaunchContext:ym,onOpenTaskContext:ET,taskReferences:ar,surface:"taskDrawer",runtimeMode:yr,cloudAuthConfigured:Zt,authSessionResolved:sn,isAuthenticated:Ut,resolveCloudAuthUrl:Kr,theme:lr,rememberedAgentId:Is,rememberedConversationId:Pa,rememberedConversationByAgentId:jn,rememberedSelectionReady:Oa,onRememberSelection:tu,onRenderDrawerHeader:Ul})})]})})}):null;return a.jsxs("div",{className:`${Jr.standaloneWrapper} ${w?P.zenModeEnabled:""}`,"data-theme":lr,children:[a.jsx("div",{ref:gc,style:{flexShrink:0},children:a.jsx(nX,{projectName:Mi,currentWorkspaceId:xt,runtimeMode:yr,theme:lr,onBrandClick:lm,meta:a.jsxs(a.Fragment,{children:[a.jsx("span",{className:P.taskCountBadge,title:Pu,children:ok}),On&&On!=="anonymous"&&a.jsxs(a.Fragment,{children:[a.jsxs("button",{type:"button",className:`${P.taskCountBadge} ${P.taskCountBadgeButton} ${es==="assigned-to-me"?P.taskCountBadgeActive:""}`.trim(),onClick:()=>wl("assigned-to-me"),title:es==="assigned-to-me"?"Clear assigned-to-me quick filter":"Filter to my open tasks","aria-label":`${es==="assigned-to-me"?"Clear":"Apply"} assigned to me quick filter (${ql} task${ql===1?"":"s"})`,"aria-pressed":es==="assigned-to-me",children:[a.jsx(tf,{size:13,className:P.taskCountBadgeIcon,"aria-hidden":"true"}),ql]}),a.jsxs("button",{type:"button",className:`${P.taskCountBadge} ${P.taskCountBadgeButton} ${ji>0?P.taskCountBadgeAlert:""} ${es==="overdue"?P.taskCountBadgeActive:""}`.trim(),onClick:()=>wl("overdue"),title:es==="overdue"?"Clear my-overdue-tasks quick filter":"Filter to my overdue tasks","aria-label":`${es==="overdue"?"Clear":"Apply"} my overdue tasks quick filter (${ji} task${ji===1?"":"s"})`,"aria-pressed":es==="overdue",children:[a.jsx(Y0,{size:13,className:P.taskCountBadgeIcon,"aria-hidden":"true"}),ji]})]}),ik&&a.jsx("button",{className:"tf-control-icon",onClick:am,title:`Sync manager: ${bl.label} | Last success: ${kh}`,style:{marginLeft:"6px",height:"24px",width:"24px",padding:0,borderRadius:"999px",border:`1px solid ${bl.border}`,background:bl.background,color:bl.color,display:"inline-flex",alignItems:"center",justifyContent:"center"},children:bl.icon==="off"?a.jsx(Z0,{size:16}):a.jsx(oC,{size:16})})]}),actions:a.jsxs(a.Fragment,{children:[l&&a.jsxs(a.Fragment,{children:[Ut&&Na?.stripeCustomerId&&a.jsx("button",{className:"tf-control-icon",onClick:()=>{mh()},title:"Manage billing",disabled:Jp,children:"Manage billing"}),a.jsx("button",{className:"tf-control-icon",onClick:()=>{if(im){Tu();return}d()},title:im?"Continue to Taskforce":"Back",disabled:yu,children:im?"Take Me to Taskforce":"Back"})]}),!l&&a.jsxs(a.Fragment,{children:[YT,a.jsx(lg,{actions:$T}),ZT]}),a.jsx(lg,{actions:zT}),!l&&a.jsx(lg,{actions:FT}),IT]})})}),a.jsx(Zg,{notice:m==="add"?null:zn,onDismiss:Za}),a.jsx(j_,{theme:lr}),$t&&a.jsx("div",{className:Qe.authBlockedBanner,children:"Authentication required for this environment. Use the Account menu to sign in."}),a.jsx("div",{className:`${P.taskforceAssistantWorkspace} ${io?P.taskforceAssistantWorkspaceOpen:""} ${Cc?P.taskforceAssistantWorkspaceCollapsed:""}`.trim(),children:a.jsx("div",{className:P.taskforceAssistantWorkspaceContent,children:l?a.jsx("div",{className:`${Jr.standalonePage} ${Jr.standaloneContent} ${P.appScrollbar} tf-scrollbar`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflowY:"auto",overflowX:"hidden",scrollbarGutter:"stable",background:"var(--surface-page)"},children:a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(ea,{size:20,className:P.spinner})}),children:a.jsx(Ire,{...e,currentTheme:lr,projectName:Zn,currentWorkspaceId:xt,authUserId:Fr,apiBaseUrl:od,connectedEnvironmentSource:e.config?.cloudAuthBaseUrl||e.config?.apiBaseUrl||"",resolveCloudAuthUrl:Kr,embedded:!0,shellOwnsScroll:!0,onAccountProfileSummaryChange:nk,onContinueToTaskforce:Tu,continueBusy:yu})})}):_r==="planning"?a.jsxs("div",{className:`${Jr.standalonePage} ${Jr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(ea,{size:20,className:P.spinner})}),children:a.jsx(Cre,{model:Ou})})]}):_r==="docs"&&xi?a.jsxs("div",{className:`${Jr.standalonePage} ${Jr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(ea,{size:20,className:P.spinner})}),children:a.jsx(bre,{taskReferences:ar,tasks:E,runtimeMode:yr,workspaceId:xt,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",typeFilters:gf,attachmentFilters:yf,onTypeFiltersChange:Ap,onAttachmentFiltersChange:jo,sortField:kf,sortOrder:vf,onSortFieldChange:Cp,onSortOrderChange:Ip,pinnedDocIds:wf,onPinnedDocIdsChange:_p,searchQuery:bf,onSearchQueryChange:Tp,selectedDocId:Sf,onSelectedDocIdChange:xp,selectionReady:au,documentScrollByDocId:Af,onDocumentScrollChange:OT,documentListScrollTop:zd,onDocumentListScrollChange:BT,documentTrayOpen:Sa,onCloseDocumentTray:()=>pc(!1),requestedDocPath:ky,requestedDocAssetId:vy,onRequestedDocHandled:()=>{Hd(null),Vd(null)},onBackToTask:DT,enableTaskGeneration:!0})})]}):_r==="annotate"&&Ic?a.jsxs("div",{className:`${Jr.standalonePage} ${Jr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(ea,{size:20,className:P.spinner})}),children:a.jsx(wre,{runtimeMode:yr,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",workspaceId:xt,sessionLoadReady:Xd,requestedTarget:Rs,requestedSessionId:Jd,requestedOpenVersion:_f,imageTrayOpen:hs,onCloseImageTray:()=>vi(!1),resolveTaskReferenceLabel:jp,resolveImageReferenceLabel:Rf,onOpenTarget:MT,onContextChange:LT,viewportByContextKey:If,onViewportChange:WT,onBackToTask:NT})})]}):_r==="workflowManager"?a.jsxs("div",{className:`${Jr.standalonePage} ${Jr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(ea,{size:20,className:P.spinner})}),children:a.jsx(Sre,{workspaceId:xt,libraryTrayOpen:Ea,onCloseLibraryTray:()=>hc(!1),assigneeOptions:Kt,theme:lr,onUnsavedChangesChange:wi})})]}):_r==="taskforceAgents"?a.jsxs("div",{className:`${Jr.standalonePage} ${Jr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(ea,{size:20,className:P.spinner})}),children:a.jsx(VA,{workspaceId:xt,taskReferences:ar,agentRosterTrayOpen:ma,onCloseAgentRosterTray:()=>zs(!1),runtimeMode:yr,cloudAuthConfigured:Zt,authSessionResolved:sn,isAuthenticated:Ut,resolveCloudAuthUrl:Kr,theme:lr,rememberedAgentId:Is,rememberedConversationId:Pa,rememberedConversationByAgentId:jn,rememberedSelectionReady:Oa,onRememberSelection:tu})})]}):_r==="aiProfiles"?a.jsxs("div",{className:`${Jr.standalonePage} ${Jr.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[md,a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:a.jsx(ea,{size:20,className:P.spinner})}),children:a.jsx(Are,{workspaceId:xt,runtimeMode:yr,cloudAuthConfigured:Zt,authSessionResolved:sn,isAuthenticated:Ut,cloudAiProfileSeatUsage:Na?.aiProfileSeatUsage??null,agentTrayOpen:un,onCloseAgentTray:()=>Hi(!1),resolveCloudAuthUrl:Kr,theme:lr,onNotice:lt,mcpSettingsNode:a.jsx(HA,{settingsModel:{...ra,initialSection:"mcp",onOpenCloudAuth:cm},renderMode:"mcp-only"})})})]}):a.jsxs("div",{className:`${Jr.standalonePage} ${Jr.standaloneContent} `,style:{position:"relative",opacity:e.loadingTasks?.7:1,transition:"opacity 0.2s ease, padding 220ms cubic-bezier(0.4, 0, 0.2, 1)",display:"flex",flex:1,minHeight:0,paddingLeft:"56px"},children:[md,a.jsxs("div",{style:{position:"relative",width:"100%",minWidth:0,flex:1,minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[wa&&UT,a.jsxs("div",{style:{position:"relative",width:"100%",minWidth:0,flex:1,minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden",transition:"padding 220ms cubic-bezier(0.4, 0, 0.2, 1)",paddingLeft:Xa?`${Ay+6}px`:"6px",paddingRight:h==="schedule"&&va?`${aw}px`:0},children:[a.jsx("div",{ref:KT,style:{position:"absolute",top:0,right:0,bottom:0,left:"-56px",zIndex:35,pointerEvents:"none"}}),e.loadingTasks&&$f.length>0&&a.jsx("div",{className:P.boardRefreshIndicator,"aria-live":"polite","aria-label":"Refreshing tasks",children:a.jsx(ea,{size:14,className:P.spinner})}),Ft==="deleted"&&a.jsx(P_,{theme:lr,selectedRecords:Pi.selectedRecords,matchingCount:Pi.matchingRecords.length,allMatchingSelected:Pi.allMatchingSelected,someMatchingSelected:Pi.someMatchingSelected,fullTrashCount:e.deletedTasks.length,onSelectAllMatching:Pi.selectAllMatching,onClearSelection:Pi.clear,onRestore:cr,onEmptyEntireTrash:()=>{const p=e.deletedTasks.length;p>0&&window.confirm(`Permanently delete all ${p} tasks in Trash? Filters and selection do not limit this action. This cannot be undone.`)&&fr()}}),a.jsx(gJ,{tasks:Lp,allTasks:_y,columns:ob,groupBy:h,scheduleDates:Vc,searchQuery:Lr,filterCategories:De,filterTypes:pt,filterPriorities:Tt,filterStatus:N,filterAssignees:Nt,filtersReady:St,assigneeOptions:Kt,scheduleFilteredTaskIds:Ty,copiedId:wt,taxonomies:He,types:rt,priorities:It,workspaceId:xt,deletedTaskRecordByTaskId:Ki,selectedDeletedRecordIds:Pi.selectedIds,onDeletedSelectionChange:Pi.toggle,onUpdateTask:H,onTaskClick:S,taskReferences:fb,onCopyId:at,onToggleInProgress:U,onToggleReview:Ke,onToggleComplete:he,onToggleCancel:Et,onSetStatus:Yl,onArchiveTask:vt,onAddTaskToColumn:lu,showTaskCardStatusLabel:ke,showTaskCardDescription:yr!=="cloud"&&ve,showTaskCardAttachments:Ve,showTaskCardChecklistProgress:Ne,showTaskCardLatestActivity:de,tintTaskCardActivityBackground:x,onScheduleDaySelected:xy,persistedScrollLeft:h==="schedule"?Us:void 0,onScrollLeftChange:Ry,emptyColumnMode:A,categories:g,compressed:sr,readOnlyMode:Ft==="deleted"?"deleted":Ft==="archived"?"archived":null,recentlyChangedTaskIds:e.recentlyChangedTaskIds,sortBy:or,sortOrder:e.sortOrder,planningDropTargets:Tb?uc.createPortal(qT,Tb):null,onAssignTaskToWorkstream:Du,onAssignWorkstreamToInitiative:Nu,workstreams:e.workstreams,initiatives:e.initiatives,onUnarchive:Py,onDelete:Ff},`${h}-${ob.map(p=>String(p.value)).join("|")}-${Vc.mon}`),h==="schedule"&&!va&&a.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>{Rt(null),$a(!0)},title:"Show Schedule Sidebar",style:{position:"absolute",top:"10px",right:"10px",zIndex:20},children:a.jsx(vo,{size:16})}),h==="schedule"&&a.jsx(ure,{open:va,onClose:()=>$a(!1),scheduleSelectedDate:Sr,setScheduleSelectedDate:ki,scheduleCalendarMonth:ps,setScheduleCalendarMonth:Ao,scheduleShowWeekends:In,setScheduleShowWeekends:ja,scheduleShowBacklog:ao,setScheduleShowBacklog:Ts,scheduleOnlyExpired:Ba,setScheduleOnlyExpired:Wa,expiredScheduledCount:jy,overdueDueCount:Op,expiredLeafCandidates:il,expiredRecoveryCandidates:jc,onMoveExpiredToSelectedWeek:ST,onMoveExpiredToBacklog:AT,scheduleBulkBusy:Ec,globalWeekStartsOn:Vt,resolvedLocale:Hn,todayDateOnly:qr,scheduleBaseTasks:Nf,scheduleWeekStart:fd,scheduleWeekLabel:CT})]})]})]})})}),Ik&&typeof document<"u"?uc.createPortal(Ik,document.body):Ik,a.jsxs(Vo,{isOpen:m==="add",onClose:Wp,title:z?pn?.isDeleted?"Deleted Task":"Edit Task":"New Task",size:so?"full":"xl",theme:lr,className:`${P.taskforceTaskModalOverlay} ${io?P.taskforceModalWithAssistantPanel:""} ${Cc?P.taskforceModalWithAssistantPanelCollapsed:""}`.trim(),overlayStyle:{"--taskforce-task-modal-backdrop-top":`${Yo}px`,"--taskforce-task-modal-backdrop-left":"56px"},headerActions:a.jsxs(a.Fragment,{children:[z?null:a.jsxs("button",{type:"button",onClick:p=>L(p),disabled:M||!J.trim(),className:P.primaryUpdateBtn,title:jt("actionHeader.addTaskTitle"),children:[M?a.jsx(ea,{size:16,className:P.spinner}):a.jsx(di,{size:16}),jt("actionHeader.addTask")]}),a.jsx("button",{className:"tf-control-icon",onClick:()=>Ua(p=>!p),title:so?"Exit full screen":"Enter full screen","aria-label":so?"Exit full screen":"Enter full screen",children:so?a.jsx(Db,{size:18}):a.jsx(Nb,{size:18})})]}),draggable:!so,closeOnOverlayClick:!1,children:[a.jsxs("div",{className:P.taskNoticeAnchor,children:[a.jsx(R_,{editingTaskId:z,loading:M,submitDisabled:Ce,autoSaveState:nr,title:J,status:be,onStatusChange:Se,showCreateSubmit:!1,currentTask:pn,currentTaskWorkstream:fs,currentTaskInitiative:Ui,workstreams:e.workstreams,onWorkstreamInputChange:st,onSetWorkstreamForCurrentTask:mt,handleSubmit:L,handleCopyId:at,copiedId:wt,tasks:E,handleToggleInProgress:U,handleToggleReview:Ke,handleToggleComplete:he,handleToggleCancel:Et,handleSetStatus:Yl,handleArchiveTask:vt,handleUnarchiveTask:p=>{if(pn?.isDeleted){const I=Ki.get(p);if(!I)return;er(I.id,I.taskId);return}dr(p)},handleRestoreDeletedTask:pn?.deletedRecordId?p=>{const I=e.deletedTasks.find($=>$.id===p);er(p,I?.taskId)}:void 0,handlePermanentlyDeleteDeletedTask:pn?.deletedRecordId?p=>{window.confirm("Permanently delete this task? This cannot be undone.")&&(Ot(p),_(),f("tasks"))}:void 0,onAskAgent:Ak}),a.jsx(Zg,{notice:Z?{message:Z,tone:"error"}:zn,onDismiss:()=>{So(),Za()},placement:"task"})]}),a.jsx(x_,{editingTaskId:z,initialActivityEntryId:e.initialActivityEntryId,title:J,description:fe,checklistItems:Ye,category:ge,type:ie,priority:W,complexity:B,manualComplexityEnabled:ft,assignee:K,scheduledDate:G,dueDate:_e,formTaxonomies:le,onTaxonomyChange:(p,I)=>Re($=>({...$,[p]:I})),taxonomies:He,comments:Je,newCommentText:X,contextFiles:re,currentWorkspaceId:xt,descriptionImageDraftId:Te,currentActorId:Fr,apiBaseUrl:od,runtimeMode:yr,showImageReviews:!0,descriptionFocused:Me,showMarkdownHelp:Ue,checklistEnabled:xe,categories:g,types:rt,priorities:It,taxonomyDisplayLabels:Xe,assigneeOptions:Kt,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:wt,onTitleChange:ee,onTitleDraftChange:te,onDescriptionChange:Ie,onDescriptionDraftChange:$e,onChecklistItemsChange:ye,onCategoryChange:oe,onTypeChange:me,onPriorityChange:V,onComplexityChange:D,onAssigneeChange:Y,onScheduledDateChange:ae,onDueDateChange:Oe,onNewCommentTextChange:Ze,onDescriptionFocusedChange:et,onShowMarkdownHelpChange:yt,onOpenSettings:p=>{Gr(p),f("settings")},onSubmit:L,onDescriptionImageUploadStart:pe,commentsEndRef:qt,onAddComment:()=>Le(X),taskReferences:fb,onAddContextFile:p=>{Yd(I=>[...I,p])},onRemoveContextFile:async p=>{Yd(I=>I.filter(($,Ae)=>Ae!==p))},onUpdateContextCaption:(p,I)=>{Yd($=>$.map((Ae,We)=>We!==p?Ae:typeof Ae=="string"?{path:Ae,caption:I,timestamp:new Date().toISOString()}:{...Ae,caption:I}))},onSetCardCover:async p=>{if(!z)return;if(await H(z,{cardCoverAssetId:p})===!1)throw new Error("Unable to update the task card image.")},cardCoverDisabled:je,onOpenContextImage:p=>{ip(p,{ownerType:"task",ownerId:z,ownerReferenceLabel:Ss(pn),workspaceId:xt})},onCopyId:at,onToggleInProgress:U,onToggleReview:Ke,onToggleComplete:he,onToggleCancel:Et,onSetStatus:Yl,onArchiveTask:vt,onUnarchive:p=>{if(pn?.isDeleted){const I=Ki.get(p);if(!I)return;er(I.id,I.taskId);return}dr(p)},currentTask:pn})]}),a.jsx(Vo,{isOpen:m==="settings",onClose:Wp,title:"Settings",size:"xl",theme:lr,draggable:!0,isSettings:!0,closeOnOverlayClick:!1,children:a.jsx(o.Suspense,{fallback:a.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"2rem"},children:a.jsx(ea,{size:20,className:P.spinner})}),children:a.jsx(HA,{settingsModel:{...ra,onOpenCloudAuth:cm},onSectionChange:Gr})})}),a.jsx(QY,{prompt:no,theme:lr,onClose:Fs,onConfirm:zi}),a.jsx(eZ,{isOpen:yl,theme:lr,onClose:Qy,onConfirm:Xi}),a.jsx(XY,{isOpen:Vf,theme:lr,onClose:()=>ll(!1),supportMailtoHref:oh,onOpenSettings:()=>{ll(!1),f("settings"),Gr("general")}}),a.jsx(xY,{isOpen:ri,theme:lr,displayName:ku,email:Qi,avatarDisplayUrl:Su,accountBadgeInitial:sd,profileSaveBusy:Zy,profileAvatarBusy:Qp,profileSaveError:th,profileSaveNotice:nm,cloudAuthEnabled:Zt,availableAuthProviders:eo,billingLoading:qp,billingError:Zp,billingActionError:qy,billingNotice:Yy,billingActionBusy:Jp,billingIntervalChoice:rs,accountProfileSummary:Na,onClose:rk,onSaveProfile:()=>{Iu()},onDisplayNameChange:Xp,onOpenAvatarManager:()=>{$o(null),wn(null),Zl(!0)},onFetchLoginMethods:Yn,onUnlinkLoginMethod:Ia,onAddPassword:$n,onChangePassword:Cs,onLinkProvider:p=>Bs(p),onBillingIntervalChange:ha,onRefreshBilling:()=>{mo()},onUpdateInterval:()=>{ak()},onManageBilling:()=>{mh()},onOpenPlans:()=>{Ni(!1),fh()}}),a.jsx(ZY,{isOpen:du,theme:lr,title:"Edit Profile Photo",currentImageUrl:Su,fallbackInitial:sd,accept:_re,busy:Qp,hasPendingImage:!!ns,canRemove:!!Su,error:th,notice:nm,onClose:()=>Zl(!1),onApplyImage:om,onRemoveImage:Bc,onDiscardPendingImage:id}),a.jsx(eJ,{isOpen:Ny,theme:lr,teamPlanMode:zp,teamMgmtError:Oy,teamManagementTab:Dy,teamUsersLoading:Zf,teamUsers:Dc,teamActionBusyUserId:Wy,teamInviteFeedback:Fy,teamInviteEmail:js,teamInviteRole:fl,teamInvitePermissionMode:pu,teamInviteBusy:hu,pendingInvites:fm,teamAuditLoading:Vp,teamAuditEvents:Kp,teamAuditPage:Gs,teamAuditPages:Gy,teamAuditHasMore:Hy,onClose:()=>Up(!1),onOpenMembersTab:()=>{Xl("members"),Wc()},onOpenInvitesTab:()=>Xl("invites"),onOpenAuditTab:()=>{Xl("audit"),$c(Gs)},onMemberRoleChange:(p,I)=>{Fc(p,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(p)}/role`,{method:"PATCH",headers:{"Content-Type":"application/json",...qs()},credentials:"include",body:JSON.stringify({workspaceId:ec,role:I})}))},onMemberPermissionChange:(p,I)=>{Fc(p,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(p)}/permission-mode`,{method:"PATCH",headers:{"Content-Type":"application/json",...qs()},credentials:"include",body:JSON.stringify({workspaceId:ec,mode:I})}))},onToggleMemberDisabled:(p,I)=>{Fc(p,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(p)}/disable`,{method:"PATCH",headers:{"Content-Type":"application/json",...qs()},credentials:"include",body:JSON.stringify({workspaceId:ec,disabled:I})}))},onRevokeInvite:p=>{Fc(p,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(p)}/invite/revoke`,{method:"POST",headers:{"Content-Type":"application/json",...qs()},credentials:"include",body:JSON.stringify({workspaceId:ec})}))},onRemoveMember:p=>{Fc(p,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(p)}?workspaceId=${encodeURIComponent(ec)}`,{method:"DELETE",headers:qs(),credentials:"include"}))},onInviteEmailChange:ul,onInviteRoleChange:Wo,onInvitePermissionModeChange:$y,onSubmitInvite:()=>{um()},onLoadAuditPrevious:()=>{$c(Gs-1)},onLoadAuditNext:()=>{$c(Gs+1)}}),a.jsx($q,{isOpen:Ey,theme:lr,onClose:()=>qf(!1),onConfirm:()=>ld({intent:"create-workspace"})}),a.jsx(QZ,{isOpen:rh,theme:lr,currentWorkspaceLabel:Mi,syncStatus:qe,syncStatusMeta:Hc,workspaceCloudSyncEnabled:fo,syncControlBusy:Jy,syncControlIntent:nd,canManageWorkspaceSync:vu,workspaceSyncSummary:po.summary,workspaceSyncRecommendedAction:po.recommendedAction,workspaceSyncRepairBusy:wT,referenceMismatchCount:pm,syncStageLabel:bT,workspaceSyncPendingChanges:ud,incomingCloudChanges:Da?.incomingCloudChanges||"Unknown",formattedLastSyncTime:Sh,formattedLastPullTime:wh,formattedLastPushTime:bh,syncLastError:Be,activeReferenceMismatchSummaries:Ch,syncDiagnosticsSummary:pr,syncEventRows:Ys,syncEventsListRef:Gn,workspaceSyncRepairQueued:gT,workspaceSyncBusy:Ah,workspaceSyncCopied:yT,coordinatorOwnershipMode:ju,coordinatorOwnershipTransferBusy:C,coordinatorOwnershipTransferDisabled:ce,onClose:wu,onToggleWorkspaceSync:p=>{Xy(p)},onRepairSync:vT,onCopyReport:()=>{kT()},onTransferCoordinatorOwnership:()=>{Q()}}),a.jsx(aJ,{isOpen:!!qo,onKeepEditing:()=>Co(null),onDiscard:()=>{const p=qo;Co(null),Io.current=!0,p?.(),window.setTimeout(()=>{Io.current=!1},0)},theme:lr}),br&&uc.createPortal(a.jsx("div",{className:`${gr.overlay} ${gr.unsavedOverlay}`,style:{zIndex:2e3},children:a.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${gr.modal} ${gr.unsavedModal}`,"data-theme":lr,children:[a.jsx("div",{className:`tf-modal-header ${gr.unsavedHeader}`,children:a.jsxs("div",{className:`tf-modal-title ${gr.unsavedTitle}`,children:[a.jsx(Od,{size:20}),"Unsaved Changes"]})}),a.jsx("div",{className:`${gr.form} ${gr.unsavedContent}`,children:a.jsx("p",{className:gr.unsavedText,children:"You have unsaved changes. Would you like to save them?"})}),a.jsxs("div",{className:`${gr.formActions} ${gr.unsavedActions}`,children:[a.jsx("button",{className:P.cancelBtn,onClick:()=>yn(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),a.jsx("button",{className:P.destructiveBtn,onClick:En,title:"Discard unsaved changes and leave",children:"Discard"}),a.jsxs("button",{className:P.submitBtn,onClick:ms,disabled:M,title:"Save changes and leave",children:[M?a.jsx(ea,{size:16,className:P.spinner}):a.jsx(tC,{size:16}),"Save"]})]})]})}),document.body),pi&&uc.createPortal(a.jsx("div",{className:Dn.overlay,children:a.jsxs("div",{className:Dn.browser,children:[a.jsxs("div",{className:Dn.header,children:[a.jsxs("div",{className:Dn.pathInfo,children:[a.jsx(cc,{size:14}),a.jsx("span",{children:aa||"Project Root"})]}),a.jsxs("div",{className:Dn.actions,children:[aa&&a.jsx("button",{className:P.helpLink,onClick:()=>{const p=aa.split("/").filter(Boolean);p.pop(),Ta(p.length?p.join("/")+"/":"")},children:"Back"}),a.jsx("button",{className:P.helpLink,onClick:()=>Jn(!1),children:"Close"})]})]}),a.jsxs("div",{className:Dn.list,children:[Ka&&typeof Ka=="object"&&a.jsxs("div",{className:`${Dn.item} ${Dn.itemFile} ${Dn.itemCurrent}`,onClick:()=>ds(aa),children:[a.jsx(Fi,{size:14})," Select Current: ./",aa||"(root)"]}),hi.map(p=>a.jsxs("div",{className:Dn.item,onClick:()=>Ta(aa+p+"/"),children:[a.jsx(cc,{size:14})," ",p,"/"]},p)),_a.map(p=>a.jsxs("div",{className:`${Dn.item} ${Dn.itemFile}`,onClick:()=>ds(aa+p),children:[a.jsx(Xm,{size:14})," ",p]},p)),hi.length===0&&_a.length===0&&a.jsx("div",{className:`${Dn.item} ${Dn.empty}`,children:"No items found"})]})]})}),document.body)]})}function jre(e){const t=e.setupState,r=e.runtimeMode,n=e.isAuthenticated,s=!!(t&&r==="cloud"&&n&&t.globalSetupState==="missing"),i=!!(t&&r==="local"&&t.globalSetupState==="missing"),l=!!(t&&r==="cloud"&&n&&t.workspaceSetupState==="missing"),c=!!(t&&r==="local"&&t.workspaceSetupState==="missing"),d=!!(t&&(t.forceSetup||t.forceGlobalSetup||t.forceWorkspaceSetup||s||l||i||c));if(!d)return{setupGateActive:!1,needsGlobalSetup:!1,needsWorkspaceSetup:!1,hasSetupReadError:!1,phase:"ready"};const m=!!(t&&(t.forceSetup||t.forceGlobalSetup||s||i)),f=!!(t&&(t.forceSetup||t.forceWorkspaceSetup||l||c)),g=!!(m&&t?.globalSetupState==="missing"),h=!!(f&&t?.workspaceSetupState==="missing"),y=!!(m&&t?.globalSetupState==="unreadable"),k=!!(f&&t?.workspaceSetupState==="unreadable"),v=y||k;return{setupGateActive:d,needsGlobalSetup:g,needsWorkspaceSetup:h,hasSetupReadError:v,phase:v?"setup-read-error":g?"needs-global-setup":h?"needs-workspace-setup":"ready"}}const fv="/taskforce/assets/taskforce-BxLPokNB.png";function KA(e){return{categories:!!e?.categories?.length,types:!!e?.types?.length,priorities:!!e?.priorities?.length}}function mv(e){return(Array.isArray(e)?e:[]).map(t=>String(t.label||t.value||"").trim()).filter(Boolean).join(", ")}function pv(e={}){const t=new URLSearchParams;t.set("screen","plans");for(const[r,n]of Object.entries(e)){const s=String(n||"").trim();s&&t.set(r,s)}return`/?${t.toString()}`}function bd(e,t){const r=String(t||"").trim();if(!r.startsWith("/")||r==="/")return e;try{const n=new URL(e,"https://taskforce.local");return n.searchParams.set("next",r),`${n.pathname}${n.search}${n.hash}`}catch{return e}}function qA({config:e={},initialTaskId:t,initialActivityEntryId:r,onTaskCountChange:n,onHeaderMouseDown:s,isDragging:i,onClose:l,mode:c="standalone"}){const d=mC(),m=o.useMemo(()=>new URLSearchParams(d.search),[d.search]),f=String(m.get(Wi.workspaceId)||"").trim()||void 0,g=String(t||m.get(Wi.task)||"").trim()||void 0,h=String(r||m.get(Wi.activity)||m.get(Wi.comment)||"").trim()||void 0,y=String(m.get("planId")||"").trim(),k=String(m.get("planVersionId")||"").trim(),v=String(m.get("interval")||"").trim(),A=d.pathname==="/pricing",b=d.pathname==="/plans",w=d.pathname==="/"&&String(m.get("screen")||"").trim().toLowerCase()==="plans",R=pv(),N=pv({gate:"plan_selection_required"}),j=fC(),[E,S]=o.useState(""),[L,_]=o.useState(""),[T,H]=o.useState(""),[q,z]=o.useState(""),[M,Z]=o.useState("login"),[J,ee]=o.useState(""),[te,fe]=o.useState(!1),[Ie,$e]=o.useState(null),[Ye,ye]=o.useState(null),[ge,oe]=o.useState(null),[ie,me]=o.useState(!1),[W,V]=o.useState(""),[B,D]=o.useState(""),[be,Se]=o.useState(null),[K,Y]=o.useState(null),[G,ae]=o.useState("unknown"),[_e,Oe]=o.useState(!1),[Fe,st]=o.useState([]),[ft,xe]=o.useState(null),[ke,ve]=o.useState(null),[Ve,Ne]=o.useState(null),[de,x]=o.useState(!1),[le,Re]=o.useState(0),[Je,X]=o.useState(0),[Ze,re]=o.useState(()=>Date.now()),[Ee,je]=o.useState("core"),[Pe,Ce]=o.useState(!1),[Te,pe]=o.useState(null),[Me,et]=o.useState(null),[Ue,yt]=o.useState(""),[Le,mt]=o.useState(""),[kt,He]=o.useState("local"),[rt,It]=o.useState("details"),[Xe,wt]=o.useState([]),[at,U]=o.useState(""),[he,Ke]=o.useState(!1),[Et,vt]=o.useState(null),[Bt,dr]=o.useState(!1),[er,cr]=o.useState(null),[Ot,fr]=o.useState(!1),Ar=o.useRef(!1),Lr=o.useMemo(()=>KI(),[]),[Wr,De]=o.useState(Lr),[nt,pt]=o.useState(()=>Lr.find(we=>we.isDefaultStarter)?.id||Lr[0]?.id||""),[ut,Tt]=o.useState(()=>KA(Lr.find(we=>we.isDefaultStarter)||Lr[0]||null)),[Xt,Nt]=o.useState(!1),[Qt,St]=o.useState(null),[Kt,Ft]=o.useState(!1),[ir,sr]=o.useState(null),[ot,or]=o.useState(!1),Nr=WD({config:e,initialTaskId:g,initialActivityEntryId:h,requestedWorkspaceId:f,onTaskCountChange:n,onClose:l}),{runtimeMode:ur,workspaceSwitchingEnabled:ra,currentWorkspaceId:wr,cloudAuthConfigured:lr,authRequiredForApi:u,authBlocked:bt,isAuthenticated:gt,hasBetaAccess:Xr,authSessionResolved:Ir,setupState:Vt,runtimeCapabilities:Ur,refreshSetupContext:$r,retryBootstrapChecks:Tn,createWorkspace:an,saveWorkspaceProfile:Qr,fetchWorkspaces:Ge,applyWorkspaceSyncStateSnapshot:Gr,workspaceCloudSyncEnabled:yr,workspaceSyncPhase:Yt,workspaceSyncSetupIntent:Zt,workspaceSyncSummary:Sn,workspaceSyncRecommendedAction:$t,workspaceSyncBusy:Ut,workspaceLastErrorMessage:Fr,retryWorkspaceCloudSync:Wn,settingsModel:da,fetchTasks:ua,bootstrapState:en,loginWithCredentials:sn,beginOAuthLogin:on,availableAuthProviders:xn,registerWithCredentials:cn,requestEmailVerification:xr,confirmEmailVerification:Dr,requestPasswordReset:kn,confirmPasswordReset:tn,inspectInviteAcceptance:ga,acceptInviteWithToken:Mn,joinInviteWithToken:mn,authUserEmail:Rn,currentTheme:gn,logout:lt}=Nr,Ln=o.useCallback(async(we,Ct)=>{const qt=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:we,stateKey:"workspace-sync",patch:Ct})}),nr=await qt.json().catch(()=>({}));if(!qt.ok||nr?.success===!1)throw new Error(nr?.error||`Failed to configure workspace sync (${qt.status})`);return nr},[]),Wt=o.useMemo(()=>Wr.find(we=>we.id===nt)||Wr.find(we=>we.isDefaultStarter)||Wr[0]||null,[nt,Wr]);gC(gn);const ue=Qv,it=o.useMemo(()=>{const we=String(e.cloudAuthBaseUrl||e.apiBaseUrl||"").trim();return we?we.replace(/\/+$/,""):""},[e.apiBaseUrl,e.cloudAuthBaseUrl]),_t=ur==="cloud"||Ur?.runtimeMode==="cloud",Pt=!_t&&lr&&!!it,rr=typeof window<"u"&&/^app\./i.test(window.location.hostname),mr=ur==="cloud"&&u,dn=ur==="cloud"&&bt,xt=d.pathname==="/login",Rr=d.pathname==="/setup",Yr=d.pathname==="/coming-soon",ln="/setup?step=workspace&source=cloud&postAuth=select-cloud-workspace",qn=!_t&&kt==="cloud",Kr=qn&&Pt,jr=o.useMemo(()=>{if(er)return er;if(Zt!=="attach-cloud-import")return null;const we=String(wr||"").trim();if(!we||we.toLowerCase()==="default")return null;const Ct=Xe.find(qt=>qt.id===we);return{workspaceId:we,name:Ct?.name||we}},[Xe,wr,er,Zt]),Yn=!!(jr&&wr===jr.workspaceId),Ia=!!(jr&&Yn&&Yt==="error"),$n=!!(jr&&Yn&&yr&&Yt==="active"&&!Ut),Cs=o.useMemo(()=>{if(!jr)return[];const we=Pe?"In progress":"Complete",Ct=Ia?"Needs attention":Ut||Yt==="attach-cloud"?"In progress":Yt==="active"?"Complete":"Waiting",qt=Ot?"In progress":$n?"Ready":"Waiting";return[`Connect workspace: ${we}`,`Import cloud data: ${Ct}`,`Open local workspace: ${qt}`]},[jr,Pe,Ia,Ut,Yt,Ot,$n]),ya=rr?(!gt||bt)&&!A&&!b&&!w:(mr&&!gt||dn)&&!A&&!b&&!w,Bs=ur==="cloud"&>&&!Xr&&!A&&!b&&!w,eo=ur==="cloud"&>&&Ir&&ir?.canAccessApp===!1&&ir?.canAccessPlans!==!1&&!A&&!b&&!w,to=ur==="cloud"&>&&(!Ir||!ot),Zn=lr,Ws=o.useMemo(()=>{switch(M){case"register":return"Create Account | Taskforce";case"verify":return"Verify Email | Taskforce";case"forgot":return"Reset Password | Taskforce";case"reset":return"Set New Password | Taskforce";case"invite":return"Accept Invite | Taskforce";default:return"Sign In | Taskforce"}},[M]),na=o.useMemo(()=>String(new URLSearchParams(d.search).get("step")||"").trim().toLowerCase(),[d.search]),pi=o.useMemo(()=>String(new URLSearchParams(d.search).get("intent")||"").trim().toLowerCase(),[d.search]),Jn=Rr&&na==="workspace"&&pi==="create-workspace",hi=c!=="widget"&&en.authPending&&!xt&&!Rr&&!A&&!b&&!w&&(ur==="cloud"||rr),_a=o.useMemo(()=>jre({setupState:Vt?{globalSetupState:Vt.globalSetupState,workspaceSetupState:Vt.workspaceSetupState,runtimeMode:Vt.runtimeMode,workspaceId:Vt.workspaceId,mode:Vt.mode,forceSetup:Vt.forceSetup,forceGlobalSetup:Vt.forceGlobalSetup,forceWorkspaceSetup:Vt.forceWorkspaceSetup}:null,runtimeMode:ur,isAuthenticated:gt}),[Vt,ur,gt]),aa=_a.setupGateActive,Ta=_a.needsGlobalSetup,Ka=_a.needsWorkspaceSetup,ls=_a.hasSetupReadError,ds=c!=="widget"&&en.auth.resolved&&!ya&&!Bs&&!A&&!b&&!w&&!xt&&en.appPending&&(Rr||ur==="cloud"||rr),La=ur==="cloud"&&ie&&!w,qa=en.subtitle,xa=Jn||Rr&&!!jr||Rr&&aa&&(ls||Ta||Ka),Ra=o.useMemo(()=>hi?"auth-bootstrap":La||ds?"app-bootstrap":xt?"login":ya&&!xt?"login-redirect":Yr&&Bs?"coming-soon":xa?"guided-setup":"app",[Yr,xt,Bs,ya,La,hi,ds,xa]),Fn=o.useCallback((we,Ct,qt)=>{const nr=String(we||"").trim().toLowerCase(),br=String(Ct||"").trim().toLowerCase();return!!(!nr||nr==="system default workspace"||br&&nr===br)},[]);o.useEffect(()=>{const we=Vt?.mode==="operations"?"operations":"core";je(we)},[Vt?.mode]),o.useEffect(()=>{if(ur!=="cloud"||!gt){sr(null),or(!1);return}if(!Ir){sr(null),or(!1);return}sr(null),or(!1);let we=!1;return(async()=>{try{const Ct=await fetch("/api/taskforce/account/access-status",{method:"GET",credentials:"include"}),qt=await Ct.json().catch(()=>({}));if(we)return;if(!Ct.ok){sr(null),or(!0);return}const nr=String(qt?.gate||"").trim().toLowerCase();if(nr!=="ok"&&nr!=="plan_selection_required"&&nr!=="checkout_pending"&&nr!=="misconfigured"&&nr!=="missing_entitlement"){sr(null),or(!0);return}sr({gate:nr,canAccessApp:qt?.canAccessApp===!0,canAccessPlans:qt?.canAccessPlans!==!1,message:typeof qt?.message=="string"?qt.message:null}),or(!0)}catch{we||(sr(null),or(!0))}})(),()=>{we=!0}},[Ir,gt,ur,d.pathname,d.search]),o.useEffect(()=>{if(Jn){yt(""),mt("");return}if(!Vt)return;const we=String(Vt.workspace?.name||"").trim(),Ct=String(Vt.suggestedWorkspaceName||"").trim(),qt=Fn(we,Vt.workspaceId,Vt.workspace?.description)?Ct:we;yt(qt||Ct||we),mt(String(Vt.workspace?.description||""))},[Vt?.workspace?.name,Vt?.workspace?.description,Vt?.suggestedWorkspaceName,Vt?.workspaceId,Jn,Fn]),o.useEffect(()=>{if(!Rr||na!=="workspace")return;if(It("details"),jr&&Pt){He("cloud"),dr(!1);return}if(String(new URLSearchParams(d.search).get("source")||"").trim().toLowerCase()==="cloud"&&Pt){He("cloud"),dr(!1);return}He("local")},[jr,Pt,Rr,d.search,na]);const us=o.useCallback(async()=>{if(!Pt||!gt){wt([]),U("");return}Ke(!0),vt(null);try{const we=await fetch(`${it}/api/taskforce/workspaces`,{method:"GET",credentials:"include"}),Ct=await we.json().catch(()=>({}));if(!we.ok||Ct?.success===!1){wt([]),U(""),vt(Ct?.error||`Failed to load cloud projects (${we.status})`);return}const qt=Array.isArray(Ct?.workspaces)?Ct.workspaces.map(nr=>({id:String(nr?.id||"").trim(),name:String(nr?.name||nr?.id||"").trim(),description:typeof nr?.description=="string"?nr.description:null})).filter(nr=>nr.id.length>0):[];wt(qt),U(nr=>nr&&qt.some(br=>br.id===nr)?nr:qt[0]?.id||"")}catch{wt([]),U(""),vt("Failed to load cloud projects.")}finally{Ke(!1)}},[Pt,gt,it]);o.useEffect(()=>{kt==="cloud"&&us()},[us,kt]),o.useEffect(()=>{if(!Rr||na!=="workspace"||kt==="cloud")return;let we=!1;return Nt(!0),St(null),fetch("/api/taskforce/taxonomy-library",{method:"GET",credentials:"include"}).then(async Ct=>{if(!Ct.ok)throw new Error(`Failed to load setup libraries (${Ct.status})`);const qt=await Ct.json().catch(()=>({})),nr=Array.isArray(qt?.packs)?qt.packs:[];we||nr.length===0||(De(nr),pt(br=>nr.some(yn=>yn.id===br)?br:nr.find(yn=>yn.isDefaultStarter)?.id||nr[0]?.id||""))}).catch(Ct=>{we||(De(Lr),St(Ct instanceof Error?Ct.message:"Failed to load setup libraries."))}).finally(()=>{we||Nt(!1)}),()=>{we=!0}},[Lr,Rr,na,kt]),o.useEffect(()=>{Tt(KA(Wt))},[nt,Wt]),o.useEffect(()=>{kt==="cloud"&&It("details")},[kt]),o.useEffect(()=>{Kr||(cr(null),fr(!1),Ar.current=!1)},[Kr]),o.useEffect(()=>{!Ia||!jr||(et(null),pe(Fr||`Failed to import "${jr.name}" from cloud. Retry import to continue.`))},[jr,Ia,Fr]),o.useEffect(()=>{if(!$n||!jr||Ar.current)return;let we=!1;return Ar.current=!0,fr(!0),pe(null),et(`Workspace import complete. Opening ${jr.name}...`),(async()=>{try{if(await $r(),await Promise.all([Ge(),ua(!0)]),we)return;await Ln(jr.workspaceId,{setupIntent:null}),Gr({enabled:yr,phase:Yt,setupIntent:null}),cr(null),j("/",{replace:!0})}catch{if(we)return;et(null),pe(`Imported "${jr.name}" but failed to finish opening it.`),fr(!1),Ar.current=!1}})(),()=>{we=!0}},[jr,Gr,ua,Ge,$n,j,Ln,$r]);const dt=o.useMemo(()=>{const we=new URLSearchParams(d.search).get("next")||"/";if(we.startsWith("/"))return we==="/login"?"/":we;try{const Ct=new URL(we),qt=Ct.hostname.toLowerCase(),nr=qt==="localhost"||qt==="127.0.0.1"||qt==="::1",br=qt==="taskforcehq.ai"||qt.endsWith(".taskforcehq.ai");if((Ct.protocol==="http:"||Ct.protocol==="https:")&&(nr||br))return Ct.toString()}catch{return"/"}return"/"},[d.search]),vr=o.useMemo(()=>dt.startsWith("/")?dt:"/",[dt]),Zr=o.useCallback((we,Ct)=>{if(we){if(we.startsWith("/")){j(we,{replace:Ct?.replace===!0});return}typeof window<"u"&&(Ct?.replace===!0?window.location.replace(we):window.location.assign(we))}},[j]),Cn=o.useMemo(()=>{try{const we=new URL(vr,"https://taskforce.local");return we.pathname==="/setup"&&we.searchParams.get("step")==="workspace"&&we.searchParams.get("source")==="cloud"&&we.searchParams.get("postAuth")==="select-cloud-workspace"}catch{return!1}},[vr]),Pn=o.useCallback((we=dt)=>{const Ct=Cn?ln:"/setup?step=workspace";return Cn?Ct:bd(Ct,we)},[dt,Cn]),ro=v==="year"?"year":"month",Is=o.useCallback(we=>!!(we?.planSelectionRequired||we?.checkoutPending||we?.commercialState==="pending_plan_selection"||we?.commercialState==="checkout_pending"),[]),$s=o.useCallback(we=>we?.planSelectionRequired||we?.commercialState==="pending_plan_selection"?bd(N,dt):we?.checkoutPending||we?.commercialState==="checkout_pending"?bd(pv({gate:"checkout_pending",checkout:k?"start":null,planId:y||null,planVersionId:k||null,interval:k?ro:null}),dt):dt,[dt,N,ro,y,k]),Pa=o.useMemo(()=>{const we=String(new URLSearchParams(d.search).get("mode")||"").trim().toLowerCase();return we==="register"?Zn?"register":"login":we==="verify"||we==="forgot"||we==="reset"||we==="invite"?we:"login"},[Zn,d.search]),ka=o.useMemo(()=>String(new URLSearchParams(d.search).get("token")||"").trim(),[d.search]),jn=o.useCallback(we=>{const Ct=new URLSearchParams(d.search),qt=we==="register"&&!Zn?"login":we;qt==="login"?Ct.delete("mode"):Ct.set("mode",qt);const nr=Ct.toString();j(`/login${nr?`?${nr}`:""}`,{replace:!0})},[Zn,d.search,j]);o.useEffect(()=>{xt&&(Z(Pa),Pa==="verify"&&ka&&ee(ka),Pa==="reset"&&ka&&V(ka),Pa==="invite"&&ka&&D(ka))},[xt,Pa,ka]),o.useEffect(()=>{M!=="verify"&&(xt&&Pa==="verify"||(fe(!1),$e(null),ye(null)))},[M,xt,Pa]),o.useEffect(()=>{M==="register"||M==="reset"||M==="invite"&&_e||z("")},[M,_e]),o.useEffect(()=>{if(!ge||!gt||!ge.commercialOnboardingGate&&(!Ir||to))return;const we=!ge.commercialOnboardingGate&&ge.workspaceSetupRequired?Pn():ge.path,Ct=`${d.pathname}${d.search}${d.hash||""}`;if(we.startsWith("/")){Ct!==we&&j(we,{replace:!0});return}Zr(we,{replace:!0})},[Ir,to,gt,d.hash,d.pathname,d.search,j,Zr,ge,Pn]),o.useEffect(()=>{if(!ie||!Ir)return;if(!gt){me(!1),oe(null);return}if(ot&&ir?.canAccessApp===!0){S(""),_(""),H(""),z(""),oe(null),me(!1);return}const we=ge?.commercialOnboardingGate?ge.path:N,Ct=`${d.pathname}${d.search}${d.hash||""}`;if(we.startsWith("/")){Ct!==we&&j(we,{replace:!0});return}Zr(we,{replace:!0})},[ir?.canAccessApp,ot,Ir,ie,gt,d.hash,d.pathname,d.search,j,Zr,ge,N]),o.useEffect(()=>{if(!ge||!gt)return;const we=!ge.commercialOnboardingGate&&ge.workspaceSetupRequired?Pn():ge.path;`${d.pathname}${d.search}${d.hash||""}`===we&&(ge.commercialOnboardingGate||(S(""),_(""),H(""),z(""),oe(null)))},[d.hash,d.pathname,d.search,gt,ge,Pn,ur]),o.useEffect(()=>{xt&&(document.title=Ws)},[Ws,xt]),o.useEffect(()=>{if(!xt||M!=="invite"||!B.trim())return;let we=!0;return(async()=>{const Ct=await ga(B);if(we)if(Ct.success){Se(Ct.email||null),Y(Ct.workspaceId||null),Oe(Ct.passwordRequired===!0);const qt=(Ct.availableMethods||[]).filter(yn=>yn==="google"||yn==="github"||yn==="apple");st(Ct.inviteeState==="pending_setup"?qt:[]);const nr=!!(gt&&Rn&&Ct.email&&Rn.trim().toLowerCase()===Ct.email.trim().toLowerCase()),br=Ct.passwordRequired===!0?"new_user":nr?"existing_user_ready":"existing_user_signed_out";ae(br),xe(br==="new_user"?"Create your account password to join this workspace.":br==="existing_user_ready"?"Invite ready. Confirm to join this workspace.":"Sign in with the invited account to join this workspace."),ve(null),Ne(null)}else Se(null),Y(null),ae("invalid"),Oe(!1),st([]),ve(zn(Ct)),Ne(Ct.code||Ct.state||null)})(),()=>{we=!1}},[xt,M,B,ga,gt,Rn]),o.useEffect(()=>{M==="invite"&&G==="existing_user_signed_out"&&be&&S(we=>we.trim()?we:be)},[M,G,be]),o.useEffect(()=>{if(!(le>Date.now()||Je>Date.now()))return;const Ct=window.setInterval(()=>re(Date.now()),1e3);return()=>window.clearInterval(Ct)},[le,Je]);const Er=Math.max(0,Math.ceil((le-Ze)/1e3)),Oa=Math.max(0,Math.ceil((Je-Ze)/1e3)),Ya=Er>0,sa=Oa>0,Un=o.useMemo(()=>N_(),[]),zn=we=>{const Ct=we.error||"Request failed.",qt=we.code||we.state;return qt?`[${qt}] ${Ct}`:Ct},Za=we=>we?.deliveryAttempted===!1?we?.intro||"If that account exists and still needs verification, we sent an email.":we?.emailSent===!1?`Verification email failed to send. ${we?.emailError||"Try Resend Verification again."}`:"Verification email resent.",So=we=>we?.deliveryAttempted===!1?"If that account exists, we sent password reset instructions.":we?.emailSent===!1?`Password reset email failed to send. ${we?.emailError||"Try again in a minute."}`:"Password reset instructions sent.";o.useEffect(()=>{if(c==="widget"||xt&&de)return;const we=`${d.pathname}${d.search}${d.hash||""}`,Ct=Rr?dt:we,qt=ur==="cloud"&>&&ot&&ir?.canAccessApp===!1&&ir?.canAccessPlans!==!1;if(en.workspace.pending&&!qt)return;if(Bs){Yr||j("/coming-soon",{replace:!0});return}if(Yr&&!Bs){j("/",{replace:!0});return}if(ya){if(!xt){const br=`${d.pathname}${d.search}${d.hash}`;j(`/login?next=${encodeURIComponent(br||"/")}`,{replace:!0});return}return}else{const br=xt&&M==="invite"&&B.trim().length>0;if(xt&>&&!br&&(!!ge||en.workspace.pending||M==="register"||M==="verify"||!en.config.loaded||to))return;xt&>&&!br&&Zr(dt,{replace:!0})}if(!(xt&&!gt||ge&>||xt&>&&(M==="register"||M==="verify"||M==="invite"&&B.trim().length>0))&&!ie&&!w){if(eo){if(!w){const br=encodeURIComponent(String(ir?.gate||"plan_selection_required"));j(bd(`/?screen=plans&gate=${br}`,we),{replace:!0})}return}if(jr){Rr&&na==="workspace"&&new URLSearchParams(d.search).get("source")==="cloud"||j(ln,{replace:!0});return}if(!(w&&to)&&!(w&&ur==="cloud"&&ot&&ir?.canAccessApp===!1&&ir?.canAccessPlans!==!1)){if(aa){if(ls){(!Rr||na!=="error")&&j(bd("/setup?step=error",Ct),{replace:!0});return}if(Ta){(!Rr||na!=="global")&&j(bd("/setup?step=global",Ct),{replace:!0});return}if(Ka){(!Rr||na!=="workspace")&&j(Pn(Ct),{replace:!0});return}Rr&&Zr(dt,{replace:!0});return}Rr&&Vt&&!Jn&&Zr(dt,{replace:!0})}}},[c,ya,Bs,eo,xt,Rr,Yr,b,w,ir,ir?.gate,ot,M,ie,to,aa,Vt,ls,Jn,jr,Ta,Ka,na,en,ur,de,gt,ot,B,d.pathname,d.search,d.hash,j,Zr,vr,dt,ge,ln]),o.useEffect(()=>{if(c==="widget"||ur!=="local"||!en.config.loaded||xt||Rr)return;const we=String(wr||"").trim().toLowerCase();if(!we||we==="default"){const Ct=`${d.pathname}${d.search}${d.hash||""}`;j(bd("/setup?step=workspace",Ct),{replace:!0})}},[c,ur,en.config.loaded,xt,Rr,wr,d.hash,d.pathname,d.search,j]);const gi=o.useCallback(async()=>{Ft(!0);try{await Tn()}finally{Ft(!1)}},[Tn]),_s=o.useCallback(async()=>{await lt(),j("/login",{replace:!0})},[lt,j]);if(c==="widget")return a.jsx(uK,{...Nr,initialActivityEntryId:h,onHeaderMouseDown:s,isDragging:i,onClose:l});if(A){const we=new URLSearchParams(d.search);return we.set("screen","plans"),a.jsx(Bb,{to:`/?${we.toString()}${d.hash||""}`,replace:!0})}if(b){const we=new URLSearchParams(d.search);return we.set("screen","plans"),a.jsx(Bb,{to:`/?${we.toString()}${d.hash||""}`,replace:!0})}if(Ra==="auth-bootstrap")return a.jsx("div",{className:Jr.standaloneWrapper,"data-theme":gn,children:a.jsx("div",{className:Qe.loginView,children:a.jsxs("div",{className:Qe.loginCard,children:[a.jsxs("div",{className:Qe.authBrandRow,children:[a.jsx("img",{src:ue,alt:"Taskforce",className:Qe.loginLogo}),a.jsx("h1",{className:Qe.loginTitle,children:"Loading Taskforce"})]}),a.jsx("p",{className:Qe.loginSubtitle,children:"Checking your session..."})]})})});if(Ra==="app-bootstrap")return a.jsx("div",{className:Jr.standaloneWrapper,"data-theme":gn,children:a.jsx("div",{className:Qe.loginView,children:a.jsxs("div",{className:Qe.loginCard,children:[a.jsxs("div",{className:Qe.authBrandRow,children:[a.jsx("img",{src:ue,alt:"Taskforce",className:Qe.loginLogo}),a.jsx("h1",{className:Qe.loginTitle,children:"Loading Taskforce"})]}),a.jsx("p",{className:Qe.loginSubtitle,children:qa}),en.stalled&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:Qe.loginError,children:en.error||"Startup checks timed out."}),a.jsx("button",{className:P.submitBtn,disabled:Kt,onClick:gi,children:Kt?"Retrying...":"Retry checks"}),_t&&a.jsx("button",{className:P.cancelBtn,disabled:Kt,onClick:_s,children:"Go to sign-in"})]})]})})});const yi=async()=>{if(x(!0),xe(null),ve(null),Ne(null),M==="register"&&!L.trim()){ve("Display name is required."),x(!1);return}if(M==="register"||M==="reset"||M==="invite"&&_e){const Ct=Jv(T,{email:E,displayName:L});if(!Ct.ok){ve(Ct.message||"Password does not meet the password policy."),Ne(Ct.code||null),x(!1);return}if(T!==q){ve("Passwords do not match."),Ne("PASSWORD_CONFIRMATION_MISMATCH"),x(!1);return}}let we={success:!1};if(M==="login"?we=await sn(E,T):M==="register"?we=await cn(E,T,{displayName:L,planId:y||void 0,planVersionId:k||void 0,interval:v||void 0}):M==="verify"?we=await Dr(J):M==="forgot"?we=await kn(E):M==="reset"?we=await tn(W,T):M==="invite"&&(G==="existing_user_signed_out"?we=await sn(E,T):we=_e?await Mn(B,T):await mn(B)),we.success)if(M==="register"){const Ct=$s(we),qt=Is(we);we.verificationRequired?(fe(!!we.workspaceSetupRequired),$e(qt?String(we.commercialState||"").trim()||(we.planSelectionRequired?"pending_plan_selection":"checkout_pending"):null),ye(Ct),we.verificationToken&&ee(we.verificationToken),Re(Date.now()+3e4),jn("verify"),xe(we.emailSent===!1?`Account created, but verification email failed to send. ${we.emailError||"Try Resend Verification again."}`:"Account created. Check your email for verification instructions.")):(me(qt),oe({path:Ct,workspaceSetupRequired:!!we.workspaceSetupRequired,commercialOnboardingGate:qt}))}else if(M==="verify"){await Tn();const Ct=Ie==="pending_plan_selection"||Ie==="checkout_pending";me(Ct),oe({path:Ye||dt,workspaceSetupRequired:te,commercialOnboardingGate:Ct})}else if(M==="forgot"){const Ct=we.deliveryAttempted===!0&&we.emailSent===!1;we.resetToken&&V(we.resetToken),xe(So(we)),Ct||(X(Date.now()+3e4),jn("reset"))}else if(M==="reset")jn("login"),xe("Password updated. Sign in with your new password.");else if(M==="invite"){if(G==="existing_user_signed_out"){const Ct=String(be||"").trim().toLowerCase(),qt=E.trim().toLowerCase();if(Ct&&qt===Ct){Z("invite"),ae("existing_user_ready"),H(""),z(""),xe("Signed in. Review the invite details to continue."),ve(null),Ne(null),x(!1);return}Ct&&S(be||""),ae("existing_user_signed_out"),H(""),z(""),xe(Ct?`Signed in, but this invite is for ${be}. Sign in with that account to continue.`:"Signed in, but this invite requires the invited account. Sign in with that account to continue."),ve("Sign in with the invited account to join this workspace."),Ne("INVITE_ACCOUNT_MISMATCH"),x(!1);return}if(we.workspaceSetupRequired){j(Pn(),{replace:!0}),x(!1);return}Zr(dt,{replace:!0})}else if(M==="login"){if(B.trim()){Z("invite"),H(""),z(""),xe("Signed in. Review the invite details to continue."),x(!1);return}if(we.workspaceSetupRequired){j(Pn(),{replace:!0}),x(!1);return}S(""),_(""),H(""),z(""),Zr(dt,{replace:!0})}else S(""),_(""),H(""),z(""),Zr(dt,{replace:!0});else{if(M==="register"&&(we.code==="SIGNUP_PLAN_NOT_ENABLED"||we.code==="SIGNUP_PLAN_VERSION_NOT_FOUND"||we.code==="SIGNUP_PLAN_VERSION_REQUIRED")){j(N,{replace:!0}),x(!1);return}if(ve(zn(we)),Ne(we.code||null),M==="login"&&(we.code==="WORKSPACE_NOT_FOUND"||we.code==="WORKSPACE_ID_REQUIRED")){j("/setup?step=workspace",{replace:!0}),x(!1);return}if(M==="login"&&we.code==="EMAIL_NOT_VERIFIED"&&E.trim()){const Ct=await xr(E);Ct.success&&(Re(Date.now()+3e4),jn("verify"),Ct.verificationToken&&ee(Ct.verificationToken),xe(Za({...Ct,intro:"If that account exists and still needs verification, we sent an email."})),ve(null),Ne(null))}M==="register"&&we.code==="EMAIL_ALREADY_EXISTS_UNVERIFIED"&&E.trim()&&(Re(Date.now()+3e4),jn("verify"),we.verificationToken&&ee(we.verificationToken),xe(we.emailSent===!1?`This email already has an unverified account, but verification email delivery failed. ${we.emailError||"Try Resend Verification again."}`:"This email already has an unverified account. Check your email for verification instructions."),ve(null),Ne(null))}x(!1)};if(Ra==="login")return a.jsx("div",{className:Jr.standaloneWrapper,"data-theme":gn,children:a.jsx("div",{className:Qe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${fv})`},children:a.jsxs("form",{className:Qe.loginCard,onSubmit:we=>{we.preventDefault(),yi()},children:[!_t&&!ya&&a.jsx("button",{type:"button",className:Qe.loginCloseBtn,"aria-label":"Close sign in","data-testid":"auth-close-button",onClick:()=>j(vr,{replace:!0}),children:"×"}),a.jsxs("div",{className:Qe.authBrandRow,children:[a.jsx("img",{src:ue,alt:"Taskforce",className:Qe.loginLogo}),a.jsxs("h1",{className:Qe.loginTitle,children:["TASKFORCE ",a.jsx("span",{className:Qe.loginTitleAccent,children:"HQ"})]})]}),a.jsxs("p",{className:Qe.loginSubtitle,children:[M==="login"&&"Sign in with your account credentials.",M==="register"&&"Create your Taskforce account.",M==="verify"&&"Enter your verification token.",M==="forgot"&&"Request a password reset link.",M==="reset"&&"Set a new password using your reset token.",M==="invite"&&(G==="existing_user_ready"?`You've been invited to join ${K||"this workspace"}.`:G==="existing_user_signed_out"?"Sign in to join this workspace.":"Create your account to join this workspace.")]}),(M==="login"||M==="register"||M==="verify"||M==="forgot"||M==="invite"&&G==="existing_user_signed_out")&&a.jsxs("label",{className:Qe.loginField,children:[a.jsx("span",{className:Qe.loginFieldLabel,children:"Email"}),a.jsx("input",{className:`${P.input} ${Qe.loginInput}`,type:"email",value:E,placeholder:"Email",autoComplete:"email","data-testid":"auth-email-input",onChange:we=>S(we.target.value)})]}),M==="register"&&a.jsxs("label",{className:Qe.loginField,children:[a.jsx("span",{className:Qe.loginFieldLabel,children:"Display name"}),a.jsx("input",{className:`${P.input} ${Qe.loginInput}`,type:"text",value:L,placeholder:"Display name",autoComplete:"nickname","data-testid":"auth-display-name-input",onChange:we=>_(we.target.value)})]}),(M==="login"||M==="register"||M==="reset"||M==="invite"&&(_e||G==="existing_user_signed_out"))&&a.jsxs("div",{className:Qe.loginField,children:[a.jsx("label",{className:Qe.loginFieldLabel,htmlFor:"auth-password-input",children:M==="reset"?"New password":M==="invite"&&_e?"Create password":"Password"}),a.jsx(ef,{id:"auth-password-input",className:`${P.input} ${Qe.loginInput}`,value:T,placeholder:M==="reset"?"New password":M==="invite"&&_e?"Create password":"Password",autoComplete:M==="register"||M==="reset"||M==="invite"&&_e?"new-password":"current-password",visibilityLabel:M==="reset"||M==="invite"&&_e?"new password":"password","data-testid":"auth-password-input",visibilityToggleTestId:"auth-password-visibility-toggle",onChange:we=>H(we.target.value)},`${M}-${_e?"new":"current"}`)]}),(M==="register"||M==="reset"||M==="invite"&&_e)&&a.jsxs("div",{className:Qe.loginField,children:[a.jsx("label",{className:Qe.loginFieldLabel,htmlFor:"auth-confirm-password-input",children:"Confirm password"}),a.jsx(ef,{id:"auth-confirm-password-input",className:`${P.input} ${Qe.loginInput}`,value:q,placeholder:"Confirm password",autoComplete:"new-password",visibilityLabel:"confirm password","data-testid":"auth-confirm-password-input",visibilityToggleTestId:"auth-confirm-password-visibility-toggle",onChange:we=>z(we.target.value)},`${M}-confirm`)]}),(M==="register"||M==="reset"||M==="invite"&&_e)&&a.jsx("p",{className:Qe.loginSubtitle,children:Un.join(" ")}),M==="verify"&&a.jsxs("label",{className:Qe.loginField,children:[a.jsx("span",{className:Qe.loginFieldLabel,children:"Verification token"}),a.jsx("input",{className:`${P.input} ${Qe.loginInput}`,type:"text",value:J,placeholder:"Verification token",autoComplete:"one-time-code","data-testid":"auth-verification-token-input",onChange:we=>ee(we.target.value)})]}),M==="reset"&&a.jsxs("label",{className:Qe.loginField,children:[a.jsx("span",{className:Qe.loginFieldLabel,children:"Reset token"}),a.jsx("input",{className:`${P.input} ${Qe.loginInput}`,type:"text",value:W,placeholder:"Reset token",autoComplete:"one-time-code","data-testid":"auth-reset-token-input",onChange:we=>V(we.target.value)})]}),M==="invite"&&a.jsxs(a.Fragment,{children:[a.jsxs("label",{className:Qe.loginField,children:[a.jsx("span",{className:Qe.loginFieldLabel,children:"Invite token"}),a.jsx("input",{className:`${P.input} ${Qe.loginInput}`,type:"text",value:B,placeholder:"Invite token","data-testid":"auth-invite-token-input",onChange:we=>D(we.target.value)})]}),be&&a.jsxs("p",{className:Qe.loginSubtitle,children:["Invite for: ",a.jsx("strong",{children:be}),K?` · Workspace: ${K}`:""]})]}),ft&&a.jsx("p",{className:Qe.loginSubtitle,children:ft}),ke&&a.jsx("p",{className:Qe.loginError,role:"alert",children:ke}),M==="login"&&Ve==="EMAIL_NOT_VERIFIED"&&E.trim()&&a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de||Ya,onClick:async()=>{x(!0),xe(null);const we=await xr(E);we.success?(Re(Date.now()+3e4),jn("verify"),we.verificationToken&&ee(we.verificationToken),xe(Za(we)),ve(null),Ne(null)):ve(zn(we)),x(!1)},children:Ya?`Resend in ${Er}s`:"Resend Verification Email"}),a.jsx("div",{className:Qe.authPrimaryActions,role:"group","aria-label":"Primary authentication action",children:a.jsx("button",{type:"submit",className:`${P.submitBtn} ${Qe.loginPrimaryBtn}`,disabled:de||M==="forgot"&&sa,"data-testid":"auth-submit-button",children:de?"Working...":M==="login"?"Sign In":M==="register"?"Create Account":M==="verify"?"Verify Email":M==="forgot"?sa?`Retry in ${Oa}s`:"Send Reset Link":M==="reset"?"Reset Password":G==="existing_user_signed_out"?"Sign In to Continue":_e?"Create Account and Join":"Join Workspace"})}),(M==="login"||M==="register")&&xn.length>0&&a.jsxs("div",{className:Qe.oauthProviders,children:[a.jsx("div",{className:Qe.oauthDivider,children:a.jsx("span",{children:"or continue with"})}),a.jsxs("div",{className:Qe.oauthButtons,children:[xn.includes("google")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:de,onClick:()=>on("google",dt),"aria-label":"Continue with Google",children:"Google"}),xn.includes("github")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:de,onClick:()=>on("github",dt),"aria-label":"Continue with GitHub",children:"GitHub"}),xn.includes("apple")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:de,onClick:()=>on("apple",dt),"aria-label":"Continue with Apple",children:"Apple"})]})]}),M==="invite"&&G==="new_user"&&Fe.length>0&&a.jsxs("div",{className:Qe.oauthProviders,children:[a.jsx("div",{className:Qe.oauthDivider,children:a.jsx("span",{children:"or join with"})}),a.jsxs("div",{className:Qe.oauthButtons,children:[Fe.includes("google")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:de,onClick:()=>on("google","/",B),"aria-label":"Join with Google",children:"Google"}),Fe.includes("github")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:de,onClick:()=>on("github","/",B),"aria-label":"Join with GitHub",children:"GitHub"}),Fe.includes("apple")&&a.jsx("button",{type:"button",className:Qe.oauthButton,disabled:de,onClick:()=>on("apple","/",B),"aria-label":"Join with Apple",children:"Apple"})]})]}),M==="register"&&a.jsxs("p",{className:Qe.registerConsent,children:["By creating an account, you agree to the"," ",a.jsx("a",{className:Qe.registerConsentLink,href:"https://taskforcehq.ai/legal/terms/",target:"_blank",rel:"noopener noreferrer",children:"Terms of Service"})," ","and acknowledge the"," ",a.jsx("a",{className:Qe.registerConsentLink,href:"https://taskforcehq.ai/legal/privacy/",target:"_blank",rel:"noopener noreferrer",children:"Privacy Policy"}),"."]}),a.jsxs("div",{className:Qe.authSecondaryActions,role:"group","aria-label":"Authentication navigation",children:[Zn&&(M==="login"||M==="register")&&a.jsxs("p",{className:Qe.authModeSwitch,children:[M==="login"?"Need an account?":"Already have an account?"," ",a.jsx("button",{type:"button",className:Qe.authModeSwitchLink,disabled:de,"data-testid":"auth-switch-mode-button",onClick:()=>{ve(null),Ne(null),xe(null),jn(M==="login"?"register":"login")},children:M==="login"?"Register":"Sign In"})]}),a.jsxs("div",{className:Qe.authModeLinks,children:[(M==="login"||M==="register")&&a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de||sa,"data-testid":"auth-forgot-password-button",onClick:()=>{ve(null),Ne(null),xe(null),jn("forgot")},children:sa?`Forgot Password (${Oa}s)`:"Forgot Password"}),a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de||Ya,"data-testid":"auth-resend-verification-button",onClick:()=>{ve(null),Ne(null),xe(null),jn("verify")},children:Ya?`Resend Verification (${Er}s)`:"Resend Verification"}),a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de,"data-testid":"auth-accept-invite-button",onClick:()=>{ve(null),Ne(null),xe(null),jn("invite")},children:"Accept Invite"})]}),M!=="login"&&M!=="register"&&a.jsxs(a.Fragment,{children:[M==="verify"&&a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de||Ya||!E.trim(),"data-testid":"auth-resend-verification-button",onClick:async()=>{x(!0),xe(null),ve(null),Ne(null);const we=await xr(E);we.success?(Re(Date.now()+3e4),we.verificationToken&&ee(we.verificationToken),xe(Za(we))):ve(zn(we)),x(!1)},children:Ya?`Resend Verification (${Er}s)`:"Resend Verification"}),a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de,"data-testid":"auth-return-sign-in-button",onClick:()=>{ve(null),Ne(null),xe(null),jn("login")},children:M==="verify"?"Back to Sign In":"Sign In"}),Zn&&M!=="verify"&&a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de,"data-testid":"auth-return-register-button",onClick:()=>{ve(null),Ne(null),xe(null),jn("register")},children:"Register"}),M==="reset"&&a.jsx("button",{type:"button",className:Qe.authModeLink,disabled:de||sa,"data-testid":"auth-return-forgot-password-button",onClick:()=>{ve(null),Ne(null),xe(null),jn("forgot")},children:sa?`Forgot Password (${Oa}s)`:"Forgot Password"})]})]})]})]})})});if(Ra==="login-redirect")return a.jsx("div",{className:Jr.standaloneWrapper,"data-theme":gn,children:a.jsx("div",{className:Qe.loginView,children:a.jsxs("div",{className:Qe.loginCard,children:[a.jsxs("div",{className:Qe.authBrandRow,children:[a.jsx("img",{src:ue,alt:"Taskforce",className:Qe.loginLogo}),a.jsx("h1",{className:Qe.loginTitle,children:"Loading Taskforce"})]}),a.jsx("p",{className:Qe.loginSubtitle,children:"Redirecting to sign in..."})]})})});if(Ra==="coming-soon")return a.jsx("div",{className:Jr.standaloneWrapper,"data-theme":gn,children:a.jsx("div",{className:Qe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${fv})`},children:a.jsxs("div",{className:Qe.loginCard,children:[a.jsxs("div",{className:Qe.authBrandRow,children:[a.jsx("img",{src:ue,alt:"Taskforce",className:Qe.loginLogo}),a.jsx("h1",{className:Qe.loginTitle,children:"Beta Access"})]}),a.jsx("p",{className:Qe.loginSubtitle,children:"You are signed in, but your account does not have beta access yet."}),a.jsx("p",{className:Qe.loginSubtitle,children:"You will see the full app as soon as beta access is enabled."}),a.jsx("button",{className:P.cancelBtn,onClick:async()=>{await Nr.logout(),j("/login",{replace:!0})},children:"Sign Out"})]})})});if(Ra==="guided-setup"){const we=!Jn&&(ls||na==="error"),Ct=!Jn&&!we&&(Ta||na==="global"),qt=jt(we?"setup.headingCheckFailed":Ct?"setup.headingGlobalRequired":"setup.headingWorkspaceRequired"),nr=we?jt("setup.subtitleUnreadable"):Ct?jt("setup.subtitleGlobalRequired"):null,br="Workspace",yn=_t||kt!=="cloud",fa=yn&&rt==="details",Xn=yn&&rt==="library",pn=!_t&&Pt&&fa&&!jr,fs=Ur?.runtimeMode==="cloud"?oC:ex,Ui=Wt?mv(Wt.categories):"",no=Wt?mv(Wt.types):"",zi=Wt?mv(Wt.priorities):"",Fs=Pe?jt("setup.saving"):qn?jr?Ia?"Retry Import":"Importing Workspace...":"Connect Workspace":fa?"Continue":Xn?"Create Workspace":"Connect Workspace";return a.jsx("div",{className:Jr.standaloneWrapper,"data-theme":gn,children:a.jsx("div",{className:Qe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${fv})`},children:a.jsxs("div",{className:Qe.loginCard,children:[a.jsxs("div",{className:Qe.setupHeaderRow,children:[a.jsxs("div",{className:Qe.authBrandRow,children:[a.jsx("img",{src:ue,alt:"Taskforce",className:Qe.loginLogo}),a.jsxs("h1",{className:Qe.loginTitle,children:["TASKFORCE ",a.jsx("span",{className:Qe.loginTitleAccent,children:"HQ"})]})]}),Ur&&a.jsx("span",{className:Qe.runtimeIconBadge,title:Ur.runtimeMode==="cloud"?"Cloud runtime":"Local runtime","aria-label":Ur.runtimeMode==="cloud"?"Cloud runtime":"Local runtime",children:ne.createElement(fs,{size:16,"aria-hidden":!0})})]}),a.jsx("p",{className:Qe.loginSubtitle,children:a.jsx("strong",{children:qt})}),nr?a.jsx("p",{className:Qe.loginSubtitle,children:nr}):null,Me&&a.jsx("p",{className:Qe.loginSubtitle,children:Me}),Te&&a.jsx("p",{className:Qe.loginError,children:Te}),Ct&&a.jsxs("div",{className:Qe.optionGrid,children:[a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"setup-mode",value:"core",checked:Ee==="core",onChange:()=>je("core"),disabled:Pe}),a.jsx("span",{children:jt("setup.coreModeOption",{workspaceLabel:br})})]}),a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"setup-mode",value:"operations",checked:Ee==="operations",onChange:()=>je("operations"),disabled:Pe}),a.jsx("span",{children:jt("setup.operationsModeOption")})]})]}),!we&&!Ct&&a.jsxs("div",{className:Qe.optionGrid,children:[pn&&a.jsxs("div",{className:Qe.optionGroup,children:[a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"workspace-setup-source",value:"local",checked:kt==="local",onChange:()=>He("local"),disabled:Pe}),a.jsxs("span",{children:["Create new local ",br.toLowerCase()]})]}),a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"radio",name:"workspace-setup-source",value:"cloud",checked:kt==="cloud",onChange:()=>He("cloud"),disabled:Pe}),a.jsxs("span",{children:["Sync existing cloud ",br.toLowerCase()]})]})]}),qn?a.jsxs("div",{className:Qe.optionGroup,children:[!jr&&!Pt&&a.jsx("p",{className:Qe.loginError,children:"Cloud workspace sync is unavailable right now. Switch back to local setup or refresh runtime configuration."}),!jr&&Pt&&!gt&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:Qe.inlineHint,children:"Sign in to choose one of your cloud projects."}),a.jsxs("div",{className:Qe.actionRowEnd,children:[a.jsx("button",{className:P.cancelBtn,disabled:Pe,onClick:()=>{j(`/login?mode=login&next=${encodeURIComponent(ln)}`,{replace:!0})},children:"Sign In"}),Zn&&a.jsx("button",{className:P.submitBtn,disabled:Pe,onClick:()=>{j(`/login?mode=register&next=${encodeURIComponent(ln)}`,{replace:!0})},children:"Register"})]})]}),!jr&&Pt&>&&a.jsxs(a.Fragment,{children:[a.jsxs("select",{className:P.input,value:at,onChange:ar=>U(ar.target.value),disabled:Pe||he||Xe.length===0,children:[Xe.length===0&&a.jsx("option",{value:"",children:he?"Loading cloud projects...":"No cloud projects found"}),Xe.map(ar=>a.jsxs("option",{value:ar.id,children:[ar.name," (",ar.id,")"]},ar.id))]}),a.jsx("div",{className:Qe.actionRowEnd,children:a.jsx("button",{className:P.cancelBtn,disabled:Pe||he,onClick:()=>{us()},children:"Refresh Cloud Projects"})}),Et&&a.jsx("p",{className:Qe.loginError,children:Et})]}),jr&&a.jsxs(a.Fragment,{children:[a.jsxs("p",{className:Qe.inlineHint,children:['Importing "',jr.name,'" from cloud into local.']}),a.jsx("div",{className:Qe.optionGroup,children:Cs.map(ar=>a.jsx("p",{className:Qe.inlineHint,children:ar},ar))}),a.jsx("p",{className:Qe.inlineHint,children:Ot?"Finishing setup and opening your workspace.":Sn||"Pulling tasks, taxonomies, and settings into local."}),!Ot&&$t&&a.jsx("p",{className:Qe.inlineHint,children:$t})]})]}):a.jsxs(a.Fragment,{children:[fa&&a.jsxs(a.Fragment,{children:[a.jsx("p",{className:Qe.loginSubtitle,children:"Workspace name"}),a.jsx("input",{className:P.input,type:"text",value:Ue,placeholder:"Workspace name",onChange:ar=>yt(ar.target.value),disabled:Pe}),a.jsx("p",{className:Qe.loginSubtitle,children:"Workspace description"}),a.jsx("textarea",{className:P.textarea,value:Le,placeholder:"Workspace description (optional)",onChange:ar=>mt(ar.target.value),disabled:Pe,rows:4})]}),Xn&&a.jsxs("div",{className:Qe.optionGroup,children:[a.jsx("p",{className:Qe.loginSubtitle,children:"What are you working on?"}),a.jsxs("select",{className:P.input,value:nt,onChange:ar=>pt(ar.target.value),disabled:Pe||Xt||Wr.length===0,children:[Wr.length===0&&a.jsx("option",{value:"",children:Xt?"Loading setup options...":"No setup options available"}),Wr.map(ar=>a.jsx("option",{value:ar.id,children:ar.label},ar.id))]}),Wt?a.jsx(a.Fragment,{children:Wt.description?a.jsx("p",{className:Qe.inlineHint,children:Wt.description}):null}):null,a.jsxs("div",{className:Qe.optionGroup,children:[a.jsx("p",{className:Qe.loginSubtitle,children:"Apply Setup Sections"}),a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:ut.categories,onChange:()=>Tt(ar=>({...ar,categories:!ar.categories})),disabled:Pe||!Wt?.categories.length}),a.jsx("span",{children:"Categories"})]}),Ui?a.jsx("p",{className:Qe.inlineHint,children:Ui}):null,a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:ut.types,onChange:()=>Tt(ar=>({...ar,types:!ar.types})),disabled:Pe||!Wt?.types.length}),a.jsx("span",{children:"Task Types"})]}),no?a.jsx("p",{className:Qe.inlineHint,children:no}):null,a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:ut.priorities,onChange:()=>Tt(ar=>({...ar,priorities:!ar.priorities})),disabled:Pe||!Wt?.priorities.length}),a.jsx("span",{children:"Priorities"})]}),zi?a.jsx("p",{className:Qe.inlineHint,children:zi}):null]}),Xt?a.jsx("p",{className:Qe.inlineHint,children:"Loading setup options…"}):null,Qt?a.jsx("p",{className:Qe.loginError,children:Qt}):null]}),!_t&&Pt&>&&fa&&a.jsxs("div",{className:Qe.optionGroup,children:[a.jsxs("label",{className:`${Qe.authModeLink} ${Qe.optionRow}`,children:[a.jsx("input",{type:"checkbox",checked:Bt,onChange:ar=>dr(ar.target.checked),disabled:Pe}),a.jsx("span",{children:"Sync to cloud after setup"})]}),a.jsx("p",{className:Qe.inlineHint,children:"When enabled, this project will connect to cloud sync as soon as setup finishes."})]})]})]}),a.jsxs("div",{className:Qe.authModeLinks,children:[Xn?a.jsx("button",{className:P.cancelBtn,onClick:()=>{pe(null),et(null),It("details")},children:"Back"}):Jn?a.jsx("button",{className:P.cancelBtn,onClick:()=>{pe(null),et(null),j("/",{replace:!0})},children:"Cancel"}):ur==="cloud"?a.jsx("button",{className:P.cancelBtn,onClick:async()=>{await Nr.logout(),j("/login",{replace:!0})},children:jt("setup.signOut")}):null,Ct?a.jsx("button",{className:P.submitBtn,disabled:Pe||Kr&&!!jr&&!Ia,onClick:async()=>{Ce(!0),et(null),pe(null);try{const ar=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:Ee}})}),Hn=await ar.json().catch(()=>({}));!ar.ok||Hn?.success===!1?pe(Hn?.error||jt("setup.saveFailedWithStatus",{status:ar.status})):(et(jt("setup.globalSetupSaved")),await $r())}catch{pe(jt("setup.saveFailed"))}finally{Ce(!1)}},children:jt(Pe?"setup.saving":"setup.saveGlobalSetup")}):we?a.jsx("button",{className:P.submitBtn,disabled:Pe,onClick:$r,children:jt("setup.retrySetupCheck")}):a.jsx("button",{className:P.submitBtn,disabled:Pe||Kr&&!jr&&!gt,onClick:async()=>{if(Kr&&jr){if(!Ia)return;Ce(!0),et(`Retrying import for ${jr.name}...`),pe(null);try{await Wn()}catch{et(null),pe(`Failed to retry import for "${jr.name}".`)}finally{Ce(!1)}return}if(qn){if(!Pt){pe("Cloud workspace sync is unavailable right now."),Ce(!1);return}if(!gt){pe("Sign in is required before syncing a cloud project."),Ce(!1);return}const ar=Xe.find(ms=>ms.id===at);if(!ar){pe("Select a cloud project to sync."),Ce(!1);return}const Hn=await Qr({workspaceId:ar.id,name:ar.name||ar.id,description:ar.description||void 0});if(!Hn.success){pe(Hn.error||jt("setup.saveWorkspaceFailed")),Ce(!1);return}const En=String(Hn.workspaceId||ar.id||"").trim();if(!En){pe("Failed to resolve workspace id for sync setup."),Ce(!1);return}try{await Ln(En,{version:2,enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null,lastErrorMessage:null})}catch(ms){pe(ms instanceof Error?ms.message:"Failed to configure workspace sync."),Ce(!1);return}Gr({enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null}),await $r(),cr({workspaceId:En,name:ar.name||ar.id}),fr(!1),et(`Importing ${ar.name||ar.id} from cloud...`),Ce(!1);return}if(fa){if(!Ue.trim()){pe("Workspace name is required before continuing.");return}pe(null),et(null),It("library");return}Ce(!0),et(null),pe(null);{const ar=Jn||Vt?.workspaceSetupState==="missing",Hn=Jn||ra&&ar,En=Hn?await an(Ue,Le||void 0):null,ms=Hn?null:await Qr({workspaceId:ar?void 0:Vt?.workspaceId,name:Ue,description:Le}),In=En||ms;if(In?.success){const ja=String(En?.workspace?.id||ms?.workspaceId||Vt?.workspaceId||"").trim();if(!ja){pe("Failed to resolve workspace id for setup."),Ce(!1);return}if(!!Wt&&(ut.categories||ut.types||ut.priorities)&&Wt){const $a=await da.onApplySystemTaxonomyPack({pack:Wt,sections:ut,remapExistingValuesToDefault:!0,workspaceIdOverride:ja});if(!$a?.success){pe($a?.error||"Failed to apply setup library."),Ce(!1);return}}const Ts=!!(!_t&&Bt&&Pt&>),Wa=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:ja,stateKey:"workspace-sync",patch:{version:2,enabled:Ts,phase:Ts?"provision-local":"idle",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null}})}),va=await Wa.json().catch(()=>({}));if(!Wa.ok||va?.success===!1){pe(va?.error||`Failed to configure workspace sync (${Wa.status})`),Ce(!1);return}Gr({enabled:Ts,phase:Ts?"provision-local":"idle",setupIntent:null,pullCursor:null}),et(Ts?`${br} setup saved. Cloud sync enabled.`:jt("setup.workspaceSetupSaved",{workspaceLabel:br})),Jn&&(await $r(),await ua(!0),Zr(dt,{replace:!0}))}else{if(In?.code==="WORKSPACE_LIMIT_REACHED"){Ce(!1),j(R,{replace:!0});return}pe(In?.error||jt("setup.saveWorkspaceFailed"))}}Ce(!1)},children:Fs})]})]})})})}return a.jsx(Pre,{...Nr,initialActivityEntryId:h,onHeaderMouseDown:s,isDragging:i,onClose:l})}function Ere(e){return cx()?a.jsx(qA,{...e}):a.jsx(lx,{children:a.jsx(qA,{...e})})}const hT={},YA="STAGING_MARKER_2026_02_24";typeof window<"u"&&(window.__TASKFORCE_BUILD_MARKER=YA,console.info(`[Taskforce] Build marker: ${YA}`));function Nre(){if(typeof window<"u"){const t=window.location.hostname.toLowerCase();if(t==="localhost"||t==="127.0.0.1"||t==="::1")return}return Cw(hT).apiBaseUrl||void 0}function Dre(e){const t=Cw(hT),r=t.cloudAuthBaseUrl;if(r)if(typeof window<"u"){const n=window.location.hostname.toLowerCase(),s=n==="localhost"||n==="127.0.0.1"||n==="::1",i="".trim().toLowerCase()==="true";if(!s&&!i)try{const l=new URL(r,window.location.origin);if(l.origin!==window.location.origin)console.warn(`[Taskforce] Ignoring cross-origin cloud auth base in hosted runtime: ${l.origin}`);else return r}catch{}else return r}else return r;if(t.baseUrl)return t.baseUrl;if(e)return e}function Mre(){const e=Nre(),t=Dre(e);return a.jsx(dx,{children:a.jsx(Ere,{mode:"standalone",config:{apiEndpoint:"/api/taskforce/task",apiBaseUrl:e,cloudAuthBaseUrl:t}})})}n0.createRoot(document.getElementById("root")).render(a.jsx(ne.StrictMode,{children:a.jsx(Mre,{})}));export{_N as $,Qre as A,Pv as B,jv as C,rf as D,II as E,Yre as F,_I as G,Zs as H,df as I,Mw as J,HP as K,xI as L,Vo as M,UP as N,Zre as O,Xre as P,RI as Q,Zw as R,Lw as S,ui as T,Rv as U,Jre as V,Kq as W,ZY as X,f9 as Y,v_ as Z,ZV as _,ay as a,h_ as a$,CI as a0,XJ as a1,YV as a2,nne as a3,ane as a4,sne as a5,one as a6,ine as a7,LC as a8,np as a9,Ss as aA,lT as aB,lte as aC,Tte as aD,vp as aE,tb as aF,Dd as aG,cT as aH,Y_ as aI,tw as aJ,jee as aK,Eee as aL,Nee as aM,vY as aN,Aw as aO,qv as aP,TA as aQ,xA as aR,WJ as aS,nX as aT,SC as aU,Yg as aV,Hre as aW,zre as aX,Pg as aY,Kv as aZ,Km as a_,MC as aa,pf as ab,aJ as ac,gI as ad,hI as ae,qre as af,u9 as ag,q1 as ah,Vre as ai,rne as aj,Y8 as ak,Gre as al,Kre as am,dT as an,cy as ao,hp as ap,Mte as aq,ew as ar,rb as as,BA as at,ty as au,Sg as av,Ho as aw,ws as ax,pte as ay,wte as az,wo as b,ip as b0,f_ as b1,u_ as b2,y8 as b3,k8 as b4,G9 as b5,qV as b6,$P as b7,iR as c,dp as d,vx as e,GR as f,tne as g,Cr as h,nf as i,I8 as j,fre as k,KI as l,mre as m,Kz as n,Sd as o,nN as p,ene as q,ta as r,Wm as s,P as t,_8 as u,OG as v,py as w,VR as x,xv as y,FN as z};
|