@taskforcehq/taskforce 0.3.329 → 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 +290 -45
- package/dist/components/features/AiProfilesModule.js +3 -5
- package/dist/components/features/TaskSettings.js +70 -14
- package/dist/components/features/TaskforceAgentsModule.d.ts +1 -2
- package/dist/components/features/TaskforceAgentsModule.js +586 -116
- 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/taskforceAgentAssignments/AgentBehaviorAssignments.js +15 -24
- package/dist/components/features/taskforceAgentEditorModel.d.ts +2 -1
- package/dist/components/features/taskforceAgentEditorModel.js +3 -1
- package/dist/components/features/workflowManager/workflowManagerApi.d.ts +1 -1
- package/dist/components/features/workflowManager/workflowManagerApi.js +3 -0
- package/dist/components/task/TaskWorkflowAssignmentField.js +68 -10
- package/dist/components/views/StandaloneLayout.js +27 -26
- 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 +48 -1
- package/dist/core/McpTokenService.d.ts +23 -1
- package/dist/core/McpTokenService.js +93 -10
- 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 +32 -0
- package/dist/core/Taskforce.js +125 -4
- package/dist/core/types.d.ts +8 -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/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/useSyncOrchestrator.d.ts +3 -0
- package/dist/hooks/useSyncOrchestrator.js +111 -2
- package/dist/hooks/useTaskData.d.ts +31 -1
- package/dist/hooks/useTaskData.js +29 -7
- package/dist/hooks/useTaskMutations.d.ts +3 -1
- package/dist/hooks/useTaskMutations.js +46 -12
- package/dist/hooks/useTaskforce.d.ts +2 -0
- package/dist/hooks/useTaskforce.js +11 -2
- package/dist/mcp/clientRegistry.d.ts +2 -2
- package/dist/mcp/clientRegistry.js +1 -1
- package/dist/mcp/documentAssetRegistrar.js +9 -6
- 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 +384 -97
- package/dist/mcp/taskPlanningRegistrar.js +23 -4
- 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 +415 -0
- package/dist/runtime/appGates.d.ts +2 -1
- package/dist/runtime/appGates.js +7 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.js +108 -11
- package/dist/server/localDatabaseIdentity.js +4 -1
- package/dist/server/localServiceLease.js +2 -1
- package/dist/server/localServiceSessions.d.ts +14 -17
- package/dist/server/localServiceSessions.js +308 -94
- package/dist/server/localWorkspaceSyncServerRuntime.js +12 -14
- package/dist/server/routes/admin.d.ts +4 -0
- package/dist/server/routes/admin.js +112 -3
- package/dist/server/routes/agents.d.ts +7 -0
- package/dist/server/routes/agents.js +277 -24
- package/dist/server/routes/billing.js +5 -1
- package/dist/server/routes/durableTaskHttpRouters.d.ts +2 -0
- 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 +136 -40
- package/dist/server/routes/modelConnections.d.ts +24 -0
- package/dist/server/routes/modelConnections.js +205 -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 +5 -1
- package/dist/server/routes/syncPushRoutes.d.ts +1 -0
- package/dist/server/routes/syncPushRoutes.js +1 -0
- package/dist/server/routes/syncV3FeedRoutes.js +10 -1
- package/dist/server/routes/syncV3OperationRoutes.js +35 -9
- package/dist/server/routes/tasks.js +21 -2
- package/dist/server/routes/workflows.js +9 -1
- package/dist/server/routes.js +59 -0
- package/dist/services/codexAppServerModelGateway.d.ts +54 -5
- package/dist/services/codexAppServerModelGateway.js +246 -21
- 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 +1 -1
- package/dist/services/taskforceAgentMcpBridge.js +7 -24
- 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 -9
- package/dist/shared/taskforceAgentModels.js +7 -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 +4 -0
- package/dist/storage/postgresAdapter.js +11 -0
- package/dist/storage/postgresWorker.js +9 -1
- package/dist/storage/postgresWorkerProtocol.d.ts +1 -0
- package/dist/storage/taskforceAgentConnectionBindingStore.d.ts +31 -0
- package/dist/storage/taskforceAgentConnectionBindingStore.js +84 -0
- package/dist/sync/coordinator/localSyncExecutionPermitStore.js +60 -29
- package/dist/sync/coordinator/localWorkspaceSyncPendingV2PushProgress.d.ts +10 -0
- package/dist/sync/coordinator/localWorkspaceSyncPendingV2PushProgress.js +29 -0
- 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/workspaceSyncEngineLifecyclePolicy.js +6 -6
- 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/workspaceSyncEngineRuntime.d.ts +1 -0
- package/dist/sync/engine/workspaceSyncEngineRuntime.js +1 -0
- package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.js +112 -38
- package/dist/sync/engine/workspaceSyncEngineServerSnapshotReader.js +6 -0
- package/dist/sync/engine/workspaceSyncEngineTransfers.js +3 -1
- 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 +15 -0
- package/dist/sync/syncService.js +83 -18
- package/dist/sync/taskforceAgentSyncAuthorization.d.ts +16 -0
- package/dist/sync/taskforceAgentSyncAuthorization.js +20 -0
- package/dist/sync/v3/combinedFeedCapability.js +4 -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.js +3 -0
- package/dist/sync/v3/durableTaskChecklistMutationRouter.d.ts +2 -1
- package/dist/sync/v3/durableTaskChecklistMutationRouter.js +58 -15
- package/dist/sync/v3/durableTaskCommentMutationRouter.js +3 -0
- package/dist/sync/v3/durableTaskHttpRootMutationRouter.d.ts +1 -1
- package/dist/sync/v3/durableTaskHttpRootMutationRouter.js +10 -0
- 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/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/localTaskStatusOutboxService.d.ts +8 -0
- package/dist/sync/v3/localTaskStatusOutboxService.js +219 -12
- package/dist/sync/v3/syncDurabilityStore.d.ts +34 -0
- package/dist/sync/v3/syncDurabilityStore.js +168 -2
- package/dist/sync/v3/taskChecklistMutationService.d.ts +11 -0
- package/dist/sync/v3/taskChecklistMutationService.js +44 -1
- package/dist/sync/v3/taskStatusMutationService.d.ts +29 -1
- package/dist/sync/v3/taskStatusMutationService.js +119 -3
- package/dist/sync/v3/workflowAssignmentSync.d.ts +5 -0
- package/dist/sync/v3/workflowAssignmentSync.js +27 -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/workspaceSyncV3CloudOperationHandler.d.ts +1 -0
- package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.js +9 -2
- package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.d.ts +7 -0
- package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.js +44 -32
- package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.d.ts +9 -5
- package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.js +54 -38
- package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.d.ts +10 -0
- package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.js +70 -31
- package/dist/sync/v3/workspaceSyncV3CombinedWireContract.d.ts +2 -1
- package/dist/sync/v3/workspaceSyncV3CombinedWireContract.js +16 -0
- package/dist/sync/v3/workspaceSyncV3CoverageRegistry.js +6 -0
- package/dist/sync/v3/workspaceSyncV3OperationProtocol.d.ts +3 -0
- package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.d.ts +5 -0
- package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.js +36 -2
- package/dist/sync/v3/workspaceSyncV3RepairSnapshotRetentionService.d.ts +17 -0
- package/dist/sync/v3/workspaceSyncV3RepairSnapshotRetentionService.js +64 -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/workspaceRepair.d.ts +5 -2
- package/dist/sync/workspaceRepair.js +161 -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/ui/assets/AiIdentityRosterCard-OcSz1PkK.js +1 -0
- package/dist/ui/assets/AiProfilesModule-ByhYW5Xi.js +1 -0
- package/dist/ui/assets/{AnnotatedAttachmentWorkspace-B68Wg-RV.js → AnnotatedAttachmentWorkspace-BTM6nIg_.js} +1 -1
- package/dist/ui/assets/{AssetTraySortControl-C8Rztyal.js → AssetTraySortControl-DabEG8L4.js} +1 -1
- package/dist/ui/assets/{ContextAttachmentManager-Cj3c7X9y.js → ContextAttachmentManager-Coa8yVGM.js} +1 -1
- package/dist/ui/assets/{DocumentWorkspace-B5uvzems.js → DocumentWorkspace-BB0qhdix.js} +1 -1
- package/dist/ui/assets/{EntityActivityTimeline-BVFvCB5R.js → EntityActivityTimeline-CZ8x4UJE.js} +1 -1
- package/dist/ui/assets/{PlanningModule-B5DWQOGz.js → PlanningModule-pRPjR7v5.js} +1 -1
- package/dist/ui/assets/{PlansPage-AY4cGWco.js → PlansPage-D86pZSSl.js} +1 -1
- package/dist/ui/assets/{TaskContextUpload-DZxTVesW.js → TaskContextUpload-BVIkU9yT.js} +1 -1
- 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-DEr5di_r.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-D9Lpw-j4.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/taskEvents.d.ts +2 -0
- package/dist/utils/workspaceSyncPresentation.d.ts +1 -1
- package/dist/utils/workspaceSyncPresentation.js +23 -17
- package/package.json +22 -4
- package/dist/ui/assets/AiIdentityRosterCard-BZM4aQnM.js +0 -1
- package/dist/ui/assets/AiProfilesModule-BbAEWtHH.js +0 -1
- package/dist/ui/assets/TaskSettings-BeWAuyZj.js +0 -12
- package/dist/ui/assets/TaskforceAgentsModule-BifCYtjR.js +0 -21
- package/dist/ui/assets/TaskforceAgentsModule-D6IC0S7Q.css +0 -1
- package/dist/ui/assets/index-I5zhdtgt.js +0 -7
- package/dist/ui/assets/index-VRFsx3wz.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};
|