@taskforcehq/taskforce 0.3.305 → 0.3.306
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 +295 -89
- package/dist/TaskforceCore.js +215 -43
- package/dist/TaskforceCore.test.js +433 -28
- package/dist/assets/fonts/CourierPrime-Bold.woff2 +0 -0
- package/dist/assets/fonts/CourierPrime-BoldItalic.woff2 +0 -0
- package/dist/assets/fonts/CourierPrime-Italic.woff2 +0 -0
- package/dist/assets/fonts/CourierPrime-Regular.woff2 +0 -0
- package/dist/assets/fonts/Noir_medium.woff2 +0 -0
- package/dist/assets/fonts/Noir_regular.woff2 +0 -0
- package/dist/assets/fonts/RussoOne-Regular.woff2 +0 -0
- package/dist/assets/fonts/SpecialElite-Regular.woff2 +0 -0
- package/dist/compat/workspaceSyncCompat.js +46 -2
- package/dist/compat/workspaceSyncCompat.test.js +38 -1
- package/dist/components/context/ContextAttachmentManager.d.ts +14 -0
- package/dist/components/context/ContextAttachmentManager.js +549 -0
- package/dist/components/features/AgentsModule.d.ts +10 -1
- package/dist/components/features/AgentsModule.js +260 -15
- package/dist/components/features/AgentsModule.test.js +255 -5
- package/dist/components/features/DocumentViewer.d.ts +5 -1
- package/dist/components/features/DocumentViewer.js +60 -3
- package/dist/components/features/DocumentWorkspace.js +1 -1
- package/dist/components/features/DocumentWorkspace.test.js +33 -0
- package/dist/components/features/documentWorkspaceModel.d.ts +1 -1
- package/dist/components/task/TaskCard.js +19 -28
- package/dist/components/task/TaskCard.test.js +38 -3
- package/dist/components/task/TaskContextUpload.js +4 -526
- package/dist/components/task/TaskForm.js +85 -90
- package/dist/components/task/TaskForm.test.js +110 -8
- package/dist/components/task/TaskKanban.d.ts +2 -1
- package/dist/components/task/TaskKanban.js +94 -13
- package/dist/components/task/TaskKanban.test.js +36 -0
- package/dist/components/ui/EditableAvatarButton.d.ts +18 -0
- package/dist/components/ui/EditableAvatarButton.js +18 -0
- package/dist/components/views/PlanComparisonPage.d.ts +9 -1
- package/dist/components/views/PlanComparisonPage.js +70 -14
- package/dist/components/views/PlanComparisonPage.test.js +238 -0
- package/dist/components/views/PlansPage.js +127 -36
- package/dist/components/views/PlansPage.test.js +294 -12
- package/dist/components/views/StandaloneLayout.js +283 -533
- package/dist/components/views/panels/PlanningDrawer.d.ts +8 -1
- package/dist/components/views/panels/PlanningDrawer.js +18 -11
- package/dist/components/views/panels/PlanningDrawer.test.d.ts +1 -0
- package/dist/components/views/panels/PlanningDrawer.test.js +141 -0
- package/dist/components/views/planningScope.d.ts +20 -0
- package/dist/components/views/planningScope.js +25 -0
- package/dist/components/views/planningScope.test.d.ts +1 -0
- package/dist/components/views/planningScope.test.js +60 -0
- package/dist/components/views/standalone/modals/AccountHubModal.d.ts +26 -1
- package/dist/components/views/standalone/modals/AccountHubModal.js +76 -2
- package/dist/components/views/standalone/modals/AccountHubModal.test.js +20 -3
- package/dist/components/views/standalone/modals/AvatarImageManagerModal.d.ts +20 -0
- package/dist/components/views/standalone/modals/AvatarImageManagerModal.js +127 -0
- package/dist/components/views/standalone/modals/EditProfileModal.d.ts +2 -9
- package/dist/components/views/standalone/modals/EditProfileModal.js +3 -2
- package/dist/components/views/standalone/modals/SyncEnableWarningModal.d.ts +9 -0
- package/dist/components/views/standalone/modals/SyncEnableWarningModal.js +6 -0
- package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.d.ts +1 -0
- package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.js +24 -0
- package/dist/components/views/standalone/modals/SyncStatusModal.d.ts +2 -1
- package/dist/components/views/standalone/modals/SyncStatusModal.js +2 -2
- package/dist/core/AiProfileService.d.ts +39 -2
- package/dist/core/AiProfileService.js +639 -73
- package/dist/core/AiProfileService.test.js +19 -1
- package/dist/core/AiProfiles.test.js +566 -7
- package/dist/core/AttachmentLinkService.js +57 -15
- package/dist/core/AuthIdentityService.d.ts +107 -0
- package/dist/core/AuthIdentityService.js +284 -0
- package/dist/core/AuthTokenService.d.ts +4 -0
- package/dist/core/AuthTokenService.js +34 -6
- package/dist/core/AuthTokenService.test.js +3 -3
- package/dist/core/EntitlementsPolicy.test.js +2 -2
- package/dist/core/GlobalSettingsService.js +115 -6
- package/dist/core/PlanEntitlementService.d.ts +23 -2
- package/dist/core/PlanEntitlementService.js +343 -57
- package/dist/core/PlanFeatureCatalog.test.d.ts +1 -0
- package/dist/core/PlanFeatureCatalog.test.js +84 -0
- package/dist/core/PlanVersionPolicy.test.js +35 -2
- package/dist/core/PlanningEntities.test.js +52 -0
- package/dist/core/SignupMonetizationSettings.test.js +199 -27
- package/dist/core/SyncReconciliationService.js +2 -65
- package/dist/core/SystemAdmin.test.js +42 -42
- package/dist/core/TaskAttachmentsCanonical.test.js +51 -1
- package/dist/core/Taskforce.d.ts +225 -14
- package/dist/core/Taskforce.js +765 -192
- package/dist/core/Taskforce.listTasksSlim.test.d.ts +1 -0
- package/dist/core/Taskforce.listTasksSlim.test.js +91 -0
- package/dist/core/UserProfileAvatarDrafts.test.js +30 -3
- package/dist/core/WorkspaceLifecycleService.js +0 -5
- package/dist/core/WorkspacePermissions.test.js +25 -1
- package/dist/core/WorkspacePlanMode.test.js +117 -16
- package/dist/core/shared.d.ts +1 -1
- package/dist/core/shared.js +5 -1
- package/dist/core/types.d.ts +68 -2
- package/dist/hooks/auth/useTaskforceAuthBootstrap.js +26 -1
- package/dist/hooks/sync/bootstrap.js +2 -0
- package/dist/hooks/sync/controlPlane.d.ts +37 -0
- package/dist/hooks/sync/controlPlane.js +78 -0
- package/dist/hooks/sync/controlPlane.test.d.ts +1 -0
- package/dist/hooks/sync/controlPlane.test.js +121 -0
- package/dist/hooks/sync/lifecyclePolicy.d.ts +45 -0
- package/dist/hooks/sync/lifecyclePolicy.js +93 -0
- package/dist/hooks/sync/lifecyclePolicy.test.d.ts +1 -0
- package/dist/hooks/sync/lifecyclePolicy.test.js +124 -0
- package/dist/hooks/sync/orchestratorShared.d.ts +10 -1
- package/dist/hooks/sync/orchestratorShared.js +68 -47
- package/dist/hooks/sync/orchestratorShared.test.js +50 -1
- package/dist/hooks/sync/pullLifecycle.d.ts +31 -0
- package/dist/hooks/sync/pullLifecycle.js +24 -0
- package/dist/hooks/sync/pullLifecycle.test.d.ts +1 -0
- package/dist/hooks/sync/pullLifecycle.test.js +80 -0
- package/dist/hooks/sync/recovery.d.ts +16 -2
- package/dist/hooks/sync/recovery.js +171 -53
- package/dist/hooks/sync/recovery.test.d.ts +1 -0
- package/dist/hooks/sync/recovery.test.js +292 -0
- package/dist/hooks/sync/transfers.d.ts +15 -3
- package/dist/hooks/sync/transfers.js +179 -62
- package/dist/hooks/sync/transfers.test.d.ts +1 -0
- package/dist/hooks/sync/transfers.test.js +396 -0
- package/dist/hooks/sync/useRecentSyncEvents.d.ts +21 -0
- package/dist/hooks/sync/useRecentSyncEvents.js +92 -0
- package/dist/hooks/sync/useRecentSyncEvents.test.d.ts +1 -0
- package/dist/hooks/sync/useRecentSyncEvents.test.js +124 -0
- package/dist/hooks/sync/useSyncStatusActions.d.ts +30 -0
- package/dist/hooks/sync/useSyncStatusActions.js +88 -0
- package/dist/hooks/sync/useSyncStatusActions.test.d.ts +1 -0
- package/dist/hooks/sync/useSyncStatusActions.test.js +133 -0
- package/dist/hooks/sync/useSyncStatusControls.d.ts +25 -0
- package/dist/hooks/sync/useSyncStatusControls.js +60 -0
- package/dist/hooks/sync/useSyncStatusControls.test.d.ts +1 -0
- package/dist/hooks/sync/useSyncStatusControls.test.js +88 -0
- package/dist/hooks/useSyncOrchestrator.aiProfiles.test.js +12 -0
- package/dist/hooks/useSyncOrchestrator.d.ts +9 -2
- package/dist/hooks/useSyncOrchestrator.js +359 -178
- package/dist/hooks/useSyncOrchestrator.retry-closure.test.js +407 -0
- package/dist/hooks/useTaskData.js +8 -3
- package/dist/hooks/useTaskData.test.js +45 -0
- package/dist/hooks/useTaskforce.d.ts +60 -2
- package/dist/hooks/useTaskforce.js +549 -240
- package/dist/hooks/useTaskforce.runtime-routing.test.d.ts +1 -0
- package/dist/hooks/useTaskforce.runtime-routing.test.js +152 -0
- package/dist/hooks/useTaskforce.sync-behavior.test.js +2380 -212
- package/dist/hooks/useWorkspaceSyncController.d.ts +1 -0
- package/dist/hooks/useWorkspaceSyncController.js +6 -1
- package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.d.ts +16 -0
- package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.js +316 -35
- package/dist/localization/locales/en-US.d.ts +0 -1
- package/dist/localization/locales/en-US.js +0 -1
- package/dist/localization/locales/es-419.js +0 -1
- package/dist/localization/locales/pt-BR.js +0 -1
- package/dist/mcp/documentAssetRegistrar.js +3 -3
- package/dist/mcp/runtime.d.ts +2 -0
- package/dist/mcp/runtime.js +131 -64
- package/dist/mcp/runtime.test.js +291 -12
- package/dist/migrations/taskSchemaMigrations.d.ts +1 -1
- package/dist/migrations/taskSchemaMigrations.js +171 -61
- package/dist/migrations/taskSchemaMigrations.test.js +15 -0
- package/dist/resources/templates/workflow-sources/workflowDocs.mjs +6 -6
- package/dist/resources/templates/workflows/collaborate.yaml +1 -1
- package/dist/resources/templates/workflows/evaluate.yaml +2 -2
- package/dist/resources/templates/workflows/plan.yaml +1 -1
- package/dist/resources/templates/workflows/review.yaml +2 -2
- package/dist/server/annotatedAttachmentsRoutes.test.js +3 -3
- package/dist/server/auth/providers/apple.d.ts +33 -0
- package/dist/server/auth/providers/apple.js +82 -0
- package/dist/server/auth/providers/appleClientSecret.d.ts +37 -0
- package/dist/server/auth/providers/appleClientSecret.js +65 -0
- package/dist/server/auth/providers/github.d.ts +26 -0
- package/dist/server/auth/providers/github.js +86 -0
- package/dist/server/auth/providers/google.d.ts +21 -0
- package/dist/server/auth/providers/google.js +56 -0
- package/dist/server/auth/providers/types.d.ts +21 -0
- package/dist/server/auth/providers/types.js +1 -0
- package/dist/server/auth.d.ts +2 -0
- package/dist/server/auth.js +6 -3
- package/dist/server/documentReviewRoutes.test.js +36 -3
- package/dist/server/index.cookieProxy.test.js +1 -0
- package/dist/server/index.d.ts +12 -0
- package/dist/server/index.js +120 -9
- package/dist/server/index.rateLimit.test.js +3 -0
- package/dist/server/index.test.js +106 -3
- package/dist/server/routes/admin.d.ts +3 -0
- package/dist/server/routes/admin.js +272 -19
- package/dist/server/routes/auth.d.ts +15 -2
- package/dist/server/routes/auth.js +994 -57
- package/dist/server/routes/authSupport.d.ts +1 -1
- package/dist/server/routes/authSupport.js +1 -1
- package/dist/server/routes/billing.js +361 -35
- package/dist/server/routes/billing.test.js +592 -12
- package/dist/server/routes/documents.d.ts +1 -0
- package/dist/server/routes/documents.js +172 -70
- package/dist/server/routes/shared.d.ts +28 -2
- package/dist/server/routes/shared.js +69 -4
- package/dist/server/routes/sync.integration.test.js +437 -39
- package/dist/server/routes/sync.js +61 -605
- package/dist/server/routes/syncAuxRoutes.d.ts +15 -0
- package/dist/server/routes/syncAuxRoutes.js +91 -0
- package/dist/server/routes/syncAuxRoutes.test.d.ts +1 -0
- package/dist/server/routes/syncAuxRoutes.test.js +158 -0
- package/dist/server/routes/syncPullApplyRoutes.d.ts +36 -0
- package/dist/server/routes/syncPullApplyRoutes.js +204 -0
- package/dist/server/routes/syncPushRoutes.d.ts +24 -0
- package/dist/server/routes/syncPushRoutes.js +212 -0
- package/dist/server/routes/syncRouteGuards.d.ts +36 -0
- package/dist/server/routes/syncRouteGuards.js +67 -0
- package/dist/server/routes/syncRouteGuards.test.d.ts +1 -0
- package/dist/server/routes/syncRouteGuards.test.js +94 -0
- package/dist/server/routes/syncRouteTypes.d.ts +13 -0
- package/dist/server/routes/syncRouteTypes.js +1 -0
- package/dist/server/routes/syncSnapshotRoutes.d.ts +66 -0
- package/dist/server/routes/syncSnapshotRoutes.js +180 -0
- package/dist/server/routes/tasks.js +43 -1
- package/dist/server/routes/workspaces.js +36 -5
- package/dist/server/routes.js +60 -3
- package/dist/server/routes.test.js +1824 -171
- package/dist/services/workflowExportSnapshots.test.js +2 -0
- package/dist/shared/aiProfileSeatScope.d.ts +5 -0
- package/dist/shared/aiProfileSeatScope.js +21 -0
- package/dist/shared/passwordPolicy.d.ts +13 -0
- package/dist/shared/passwordPolicy.js +84 -0
- package/dist/shared/passwordPolicy.test.d.ts +1 -0
- package/dist/shared/passwordPolicy.test.js +34 -0
- package/dist/storage/workspaceAssetStore.d.ts +15 -3
- package/dist/storage/workspaceAssetStore.js +132 -44
- package/dist/storage/workspaceAssetStore.test.js +93 -6
- package/dist/styles/fonts.css +70 -0
- package/dist/sync/collaborationSyncPayload.d.ts +6 -1
- package/dist/sync/collaborationSyncPayload.js +17 -11
- package/dist/sync/collaborationSyncPayload.test.js +13 -1
- package/dist/sync/contentSyncState.d.ts +4 -8
- package/dist/sync/contentSyncState.js +17 -70
- package/dist/sync/syncApplyHandlers.d.ts +7 -0
- package/dist/sync/syncApplyHandlers.js +28 -13
- package/dist/sync/syncApplyHandlers.test.js +70 -3
- package/dist/sync/syncFieldSemantics.d.ts +12 -0
- package/dist/sync/syncFieldSemantics.js +55 -0
- package/dist/sync/syncResourceAdapters.d.ts +44 -0
- package/dist/sync/syncResourceAdapters.js +77 -0
- package/dist/sync/syncService.d.ts +5 -0
- package/dist/sync/syncService.js +52 -0
- package/dist/sync/syncService.test.js +57 -3
- package/dist/sync/taskSyncChangeKey.d.ts +2 -0
- package/dist/sync/taskSyncChangeKey.js +143 -0
- package/dist/sync/taskSyncPayload.js +3 -8
- package/dist/sync/workspacePullFeed.js +4 -3
- package/dist/sync/workspacePullFeed.test.js +43 -0
- package/dist/sync/workspaceRepair.js +5 -2
- package/dist/sync/workspaceSyncModel.d.ts +45 -0
- package/dist/sync/workspaceSyncModel.js +183 -28
- package/dist/sync/workspaceSyncModel.test.js +291 -12
- package/dist/sync/workspaceSyncState.d.ts +17 -0
- package/dist/sync/workspaceSyncState.js +2 -1
- package/dist/sync/workspaceSyncSurface.js +3 -8
- package/dist/types.d.ts +17 -0
- package/dist/ui/assets/AgentsModule-DrLawwNl.js +1 -0
- package/dist/ui/assets/{AnnotatedAttachmentWorkspace-BG6P_GVW.js → AnnotatedAttachmentWorkspace-Z9_whf7F.js} +1 -1
- package/dist/ui/assets/CourierPrime-Bold-BuLj_dpw.woff2 +0 -0
- package/dist/ui/assets/CourierPrime-BoldItalic-BrK2pUkZ.woff2 +0 -0
- package/dist/ui/assets/CourierPrime-Italic-DFUZK5Ey.woff2 +0 -0
- package/dist/ui/assets/CourierPrime-Regular-BsKphzVf.woff2 +0 -0
- package/dist/ui/assets/DocumentWorkspace-B03MaSkw.js +252 -0
- package/dist/ui/assets/DocumentWorkspace-Dhdso07p.css +1 -0
- package/dist/ui/assets/{InitiativesModule-Dhm7M8e7.js → InitiativesModule-9E6ParrY.js} +1 -1
- package/dist/ui/assets/Noir_medium-bxQwKGzB.woff2 +0 -0
- package/dist/ui/assets/Noir_regular-ojf2kxlG.woff2 +0 -0
- package/dist/ui/assets/PlansPage-CvfnMiWq.css +1 -0
- package/dist/ui/assets/PlansPage-DRXscYxH.js +1 -0
- package/dist/ui/assets/RussoOne-Regular-Cu_qq_qC.woff2 +0 -0
- package/dist/ui/assets/SpecialElite-Regular-Di6gSvAS.woff2 +0 -0
- package/dist/ui/assets/{TaskSettings-ln0aF7xc.js → TaskSettings-DZX4jk7e.js} +1 -1
- package/dist/ui/assets/{WorkflowsModule-BcS4afRn.js → WorkflowsModule-BA7jcEpH.js} +1 -1
- package/dist/ui/assets/index-9eT8e0Lu.css +1 -0
- package/dist/ui/assets/index-C6k75jr8.js +6 -0
- package/dist/ui/assets/{vendor-icons-BSUaRwF8.js → vendor-icons-DuEd_65c.js} +1 -1
- package/dist/ui/fonts/CourierPrime-Bold.ttf +0 -0
- package/dist/ui/fonts/CourierPrime-Bold.woff2 +0 -0
- package/dist/ui/fonts/CourierPrime-BoldItalic.ttf +0 -0
- package/dist/ui/fonts/CourierPrime-BoldItalic.woff2 +0 -0
- package/dist/ui/fonts/CourierPrime-Italic.ttf +0 -0
- package/dist/ui/fonts/CourierPrime-Italic.woff2 +0 -0
- package/dist/ui/fonts/CourierPrime-Regular.ttf +0 -0
- package/dist/ui/fonts/CourierPrime-Regular.woff2 +0 -0
- package/dist/ui/fonts/Noir_medium.otf +0 -0
- package/dist/ui/fonts/Noir_medium.woff2 +0 -0
- package/dist/ui/fonts/Noir_regular.otf +0 -0
- package/dist/ui/fonts/Noir_regular.woff2 +0 -0
- package/dist/ui/fonts/RussoOne-Regular.woff2 +0 -0
- package/dist/ui/fonts/SpecialElite-Regular.ttf +0 -0
- package/dist/ui/fonts/SpecialElite-Regular.woff2 +0 -0
- package/dist/ui/index.html +3 -3
- package/dist/utils/accountProfileSummaryCache.d.ts +5 -0
- package/dist/utils/assignees.d.ts +2 -0
- package/dist/utils/assignees.js +2 -0
- package/dist/utils/avatarUpload.d.ts +27 -0
- package/dist/utils/avatarUpload.js +132 -0
- package/dist/utils/avatarUpload.test.d.ts +1 -0
- package/dist/utils/avatarUpload.test.js +40 -0
- package/dist/utils/bootstrapTrace.d.ts +7 -0
- package/dist/utils/bootstrapTrace.js +29 -0
- package/dist/utils/commercialLifecyclePresentation.js +3 -0
- package/dist/utils/contextAssetEvents.d.ts +2 -0
- package/dist/utils/syncEventDetails.d.ts +3 -0
- package/dist/utils/syncEventDetails.js +64 -0
- package/dist/utils/syncEventDetails.test.d.ts +1 -0
- package/dist/utils/syncEventDetails.test.js +23 -0
- package/dist/utils/syncEventPresentation.d.ts +15 -0
- package/dist/utils/syncEventPresentation.js +129 -0
- package/dist/utils/syncEventPresentation.test.d.ts +1 -0
- package/dist/utils/syncEventPresentation.test.js +64 -0
- package/dist/utils/syncStatusPresentation.d.ts +72 -0
- package/dist/utils/syncStatusPresentation.js +217 -0
- package/dist/utils/syncStatusPresentation.test.d.ts +1 -0
- package/dist/utils/syncStatusPresentation.test.js +164 -0
- package/dist/utils/taskActivity.d.ts +2 -0
- package/dist/utils/taskActivity.js +228 -22
- package/dist/utils/taskActivity.test.js +119 -8
- package/dist/utils/workspaceSyncPresentation.d.ts +4 -0
- package/dist/utils/workspaceSyncPresentation.js +68 -2
- package/dist/utils/workspaceSyncPresentation.test.js +36 -1
- package/package.json +3 -2
- package/scripts/export-sqlite-to-postgres.mjs +7 -9
- package/scripts/run-e2e-realtime.sh +17 -3
- package/scripts/run-smoke.sh +17 -5
- package/scripts/run-soak.sh +17 -5
- package/src/resources/templates/workflow-sources/workflowDocs.mjs +6 -6
- package/src/resources/templates/workflows/collaborate.yaml +1 -1
- package/src/resources/templates/workflows/evaluate.yaml +2 -2
- package/src/resources/templates/workflows/plan.yaml +1 -1
- package/src/resources/templates/workflows/review.yaml +2 -2
- package/dist/ui/assets/AgentsModule-N2MnQBZk.js +0 -1
- package/dist/ui/assets/DocumentWorkspace-B3nV_Gc5.css +0 -1
- package/dist/ui/assets/DocumentWorkspace-DRbDMwh8.js +0 -252
- package/dist/ui/assets/PlansPage-C2dd2n1X.css +0 -1
- package/dist/ui/assets/PlansPage-Cq0zXj3I.js +0 -1
- package/dist/ui/assets/RussoOne-Regular-C3BxZIj7.ttf +0 -0
- package/dist/ui/assets/index-C2-OXZV7.css +0 -1
- package/dist/ui/assets/index-DcSI5F86.js +0 -6
- package/scripts/migrate-planning-model.ts +0 -233
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TaskSettings-ln0aF7xc.js","assets/vendor-react-CKJs5o3c.js","assets/vendor-icons-BSUaRwF8.js","assets/vendor-markdown-BUxTU7dS.js","assets/vendor-dnd-DRzYolkg.js","assets/vendor-router-BbWMxlnO.js","assets/TaskSettings-CnIBL_Eb.css","assets/AnnotatedAttachmentWorkspace-BG6P_GVW.js","assets/AnnotatedAttachmentWorkspace-BaS2VwIr.css","assets/DocumentWorkspace-DRbDMwh8.js","assets/DocumentWorkspace-B3nV_Gc5.css","assets/WorkflowsModule-BcS4afRn.js","assets/AgentsModule-N2MnQBZk.js","assets/InitiativesModule-Dhm7M8e7.js","assets/PlansPage-Cq0zXj3I.js","assets/PlansPage-C2dd2n1X.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as a,j as t,R as ut,a as bi,b as vg}from"./vendor-react-CKJs5o3c.js";import{I as ns,C as xi,a as Vl,b as io,c as Bl,F as Sg,A as wg,R as uu,T as $l,L as Em,d as _i,e as bg,X as Ii,f as xf,g as _f,h as Ea,i as Ac,j as dm,k as Tc,P as xg,D as Ip,l as _g,B as ru,U as Lo,m as Cg,S as Ag,n as Ss,G as Tg,o as Ig,p as Cf,q as Ng,r as Dm,s as Af,t as jg,u as Rg,v as xc,w as Tf,x as Eg,y as If,z as Dg,E as Pg,H as Mg,M as Np,J as jp,K as Lg,N as Bg,Z as Wg,O as Fg,Q as Og,V as $g,W as Ug,Y as Nf,_ as zg,$ as Hg,a0 as Gg,a1 as Vg}from"./vendor-icons-BSUaRwF8.js";import{M as Zg,r as qg,a as Kg}from"./vendor-markdown-BUxTU7dS.js";import{u as jf,a as Pm,b as Yg,D as Rf,c as Jg,S as Ef,v as Df,P as Pf,d as Mf,C as qm,e as Xg,p as Qg,f as Rp,s as ey,K as ty,g as Zl,h as ny,i as _u,j as ay}from"./vendor-dnd-DRzYolkg.js";import{u as Lf,a as Bf,b as ry,M as sy,N as Ep,B as oy}from"./vendor-router-BbWMxlnO.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const c of o)if(c.type==="childList")for(const i of c.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function r(o){const c={};return o.integrity&&(c.integrity=o.integrity),o.referrerPolicy&&(c.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?c.credentials="include":o.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function s(o){if(o.ep)return;o.ep=!0;const c=r(o);fetch(o.href,c)}})();const _c="default",Cu="General",jr="task",iy=2,cy=[{value:_c,label:Cu,icon:"Inbox"}],Wf=[{value:jr,label:"Task",icon:"CheckSquare",color:"blue-500"}],ly=[{value:iy,label:"Medium",color:"blue-500",icon:"Minus"}];function dy(){return cy.map(e=>({...e}))}function uy(){return Wf.map(e=>({...e}))}function my(e){const n=String(e||"").trim().toLowerCase();return Wf.find(r=>r.value===n)}function Ff(){return ly.map(e=>({...e}))}const py="default",fy=[{value:py,label:"Default",color:"slate-500",icon:"Circle"},{value:"evaluate",label:"Evaluate",color:"amber-500",icon:"Search"},{value:"collaborate",label:"Collaborate",color:"blue-500",icon:"Users"},{value:"plan",label:"Plan",color:"teal-500",icon:"FileText"},{value:"review",label:"Review",color:"violet-500",icon:"Microscope"}];function Of(){return fy.map(e=>({...e}))}const hy={categories:dy(),types:uy(),priorities:Ff(),approaches:Of(),taxonomies:[],apiEndpoint:"/api/taskforce/task",apiBaseUrl:void 0,cloudAuthBaseUrl:void 0,cloudMcpBaseUrl:void 0,wsBaseUrl:void 0,position:"bottom-right",offsetY:70,theme:"dark",shortcut:"Alt+T",manualComplexityEnabled:!1,checklistDropdownEnabled:!0,showTaskCardStatusLabel:!0},gy=["light","dawn","dark","midnight"],mu="dark",yy=[{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"}],ky=new Set(gy),vy=new Set(yy.filter(e=>e.family==="light").map(e=>e.id));function Sy(e){return typeof e=="string"&&ky.has(e)}function vc(e){if(typeof e!="string")return null;const n=e.trim().toLowerCase();return Sy(n)?n:null}function $f(e){const n=vc(e);return n!==null&&vy.has(n)}function Mm(e){const n=typeof e=="number"?e:Number(e);if(!Number.isFinite(n))return null;const r=Math.floor(n);return r>0?r:null}function Ic(e,n){const r=Mm(typeof n=="object"&&n!==null?n.referenceNumber:n);return r?`${e}${r}`:""}function Km(e,n){const r=String(e||"").trim(),s=String(n||"").trim();if(!r||!s)return null;const o=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),c=s.match(new RegExp(`^${o}(\\d+)$`,"i"));return c?Mm(c[1]):null}function ql(e,n){return n?typeof n.referenceLabel=="string"&&n.referenceLabel.trim().length>0?n.referenceLabel.trim():Ic(e,n.referenceNumber):""}const Ym="T-",Dp="LT-";function wy(e){return Ic(Ym,e)}function Uf(e){return typeof e=="number"||e===null||e===void 0?Ic(Dp,e):Ic(Dp,{referenceNumber:e.localReferenceNumber??null})}function zf(e){return Km(Ym,e)}function Es(e){if(!e)return"";if(typeof e.referenceLabel=="string"&&e.referenceLabel.trim().length>0)return e.referenceLabel.trim();const n=ql(Ym,e);return n||Uf(e.localReferenceNumber)}function by(e){return!e?.referenceNumber&&!!e?.localReferenceNumber}function Hf(e){return{label:Es(e),isProvisional:by(e)}}Ff();const xy={low:1,medium:2,high:3,critical:4,"on-hold":1},_y={1:"low",2:"medium",3:"high",4:"critical",5:"critical"};function Cy(e){const n=String(e||"").trim().toLowerCase();return n==="blocked"||n==="on hold"||n==="on-hold"?"on-hold":n==="task"||n==="on-hold"||n==="in-progress"||n==="review"||n==="done"||n==="cancelled"?n:"task"}function pu(e){if(typeof e=="number"&&Number.isFinite(e))return Math.max(1,Math.round(e));const n=Number(e);return Number.isFinite(n)?Math.max(1,Math.round(n)):xy[String(e||"").trim().toLowerCase()]??2}function Ay(e,n){return _y[String(e)]||n}function co(e){const n=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:n&&n>0?Math.floor(n):null,localReferenceNumber:r&&r>0?Math.floor(r):null,referenceLabel:typeof e.referenceLabel=="string"&&e.referenceLabel.trim().length>0?e.referenceLabel.trim():n?wy(n):Uf(r),assignee:(()=>{const s=String(e.assignee||"").trim(),o=s.toLowerCase();return o==="agent"||o==="ai"?"agent":!s||o==="user"||o==="human"||o==="unassigned"||o==="none"||o==="null"?"unassigned":s})(),category:typeof e.category=="string"?e.category:e.category?.value||"default",type:(typeof e.type=="string"?e.type:e.type?.label||"task").toLowerCase(),priority:pu(e.priority),complexity:typeof e.complexity=="number"?e.complexity:3,status:Cy(e.status)}}function Ty(e,n,r){if(!e||typeof e!="object")return{tasks:n,archivedTasks:r};const s=co(e),o=String(s.id||"").trim();if(!o)return{tasks:n,archivedTasks:r};const c=!!s.isArchived,i=c?{...s,isArchived:!0}:{...s,isArchived:!1},u=x=>[...x].sort((S,y)=>{const k=Date.parse(String(S.updatedAt||S.createdAt||"")),w=Date.parse(String(y.updatedAt||y.createdAt||""));if(Number.isFinite(k)&&Number.isFinite(w)&&k!==w)return w-k;if(Number.isFinite(k)!==Number.isFinite(w))return Number.isFinite(w)?1:-1;const P=Date.parse(String(y.createdAt||""))-Date.parse(String(S.createdAt||""));return Number.isFinite(P)&&P!==0?P:String(S.id).localeCompare(String(y.id))}),h=n.filter(x=>x.id!==o),v=r.filter(x=>x.id!==o);return c?v.push(i):h.push(i),{tasks:u(h),archivedTasks:u(v)}}function Iy(e,n){if(!n.length||!e.length)return[];const r=new Set(n.map(o=>Number(o.value))),s=Array.from(new Set(e.map(o=>Number(o)).filter(o=>Number.isFinite(o)&&r.has(o))));return s.length>0?s:n.map(o=>Number(o.value))}function um(e,n){return n.some(r=>String(r)===String(e))}function Ny(e,n){if(!e.length||!n.length)return e;const r=new Set(n.map(o=>o.value)),s=Array.from(new Set(e.filter(o=>r.has(o))));return s.length>0?s:n.map(o=>o.value)}const jy={taskForm:{commentsSectionTitle:"Activity & Comments",hideComments:"Hide Comments",showComments:"Show Comments",noComments:"No comments yet. Start the conversation!",you:"You",commentPlaceholder:"Type a comment...",scheduledLabel:"Scheduled:",dueLabel:"Due:",createdLabel:"Created:",updatedLabel:"Updated:",completedLabel:"Completed:",emptyValue:"—",parentCannotSchedule:"Parent tasks cannot be scheduled. Schedule leaf tasks instead.",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",groupApproach:"Workflow",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 / Tutorial",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"}},Ry={taskForm:{commentsSectionTitle:"Actividad y comentarios",hideComments:"Ocultar comentarios",showComments:"Mostrar comentarios",noComments:"Aun no hay comentarios. Inicia la conversacion.",you:"Tu",commentPlaceholder:"Escribe un comentario...",scheduledLabel:"Programado:",dueLabel:"Vence:",createdLabel:"Creado:",updatedLabel:"Actualizado:",completedLabel:"Completado:",emptyValue:"—",parentCannotSchedule:"Las tareas padre no se pueden programar. Programa tareas hoja en su lugar.",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",groupApproach:"Flujo de trabajo",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 / Tutorial",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"}},Ey={taskForm:{commentsSectionTitle:"Atividade e comentarios",hideComments:"Ocultar comentarios",showComments:"Mostrar comentarios",noComments:"Ainda nao ha comentarios. Inicie a conversa.",you:"Voce",commentPlaceholder:"Digite um comentario...",scheduledLabel:"Agendado:",dueLabel:"Vencimento:",createdLabel:"Criado:",updatedLabel:"Atualizado:",completedLabel:"Concluido:",emptyValue:"—",parentCannotSchedule:"Tarefas pai nao podem ser agendadas. Agende as tarefas folha.",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",groupApproach:"Fluxo de trabalho",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 / Tutorial",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"}},Gf=["en-US","es-419","pt-BR"],fu="en-US",mm={"en-US":jy,"es-419":Ry,"pt-BR":Ey},Vf={en:"en-US",es:"es-419",pt:"pt-BR"};let Ci=fu;function Dy(e){return e.split(".").filter(Boolean)}function pm(e,n){let r=e;for(const s of n){if(!r||typeof r!="object")return;r=r[s]}return typeof r=="string"?r:void 0}function Zf(e){if(!e)return fu;const n=Gf.find(s=>s.toLowerCase()===e.toLowerCase());if(n)return n;const r=e.split("-")[0]?.toLowerCase()||"";return Vf[r]||fu}function fm(e,n){return n?e.replace(/\{([^}]+)\}/g,(r,s)=>{const o=n[s];return o==null?"":String(o)}):e}function qf(){return Ci}function Py(){return[...Gf]}function Kf(e){const n=Zf(e);return Ci=n,n}function My(e){const n=typeof navigator<"u"?navigator.language:null;return Ci=Zf(n),Ci}function Le(e,n){const r=Dy(e),s=pm(mm[Ci],r);if(s)return fm(s,n);const o=Ci.split("-")[0]?.toLowerCase()||"",c=Vf[o];if(c&&c!==Ci){const u=pm(mm[c],r);if(u)return fm(u,n)}const i=pm(mm[fu],r);return i?fm(i,n):e}const Ly="default",Fo="bootstrap";function By(e){let n=2166136261;for(let r=0;r<e.length;r+=1)n^=e.charCodeAt(r),n=Math.imul(n,16777619);return(n>>>0).toString(16).padStart(8,"0")}function Jm(e){const n=String(e||"").trim().toLowerCase();return n?`${(n.replace(/[^a-z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"")||"project").slice(0,56)}-${By(n)}`:Fo}function Yf(e){const n=String(e||"").trim().toLowerCase();if(!n)return Fo;const r=n.replace(/[^a-z0-9._-]/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"");return r?r.slice(0,96):Fo}function Jf(e){const n=String(e||"").trim();return n?Jm(n):Fo}function Wy(e){return(e.runtimeMode==="cloud"?"cloud":"local")==="cloud"?Fo:Jf(e.projectRoot)}function Fy(e){if((e.runtimeMode==="cloud"?"cloud":"local")==="cloud"){const r=String(e.workspaceId||"").trim();return r&&!Xm(r)?Jm(`cloud-workspace:${r}`):Fo}return Jf(e.projectRoot)}function Xm(e){return String(e||"").trim().toLowerCase()===Ly}const Oy={local:{runtimeMode:"local",authSource:"cloud",workspaceMode:"single-local",workspaceSwitchingEnabled:!1},cloud:{runtimeMode:"cloud",authSource:"cloud",workspaceMode:"multi-cloud",workspaceSwitchingEnabled:!0}};function $y(e){return String(e||"").trim().toLowerCase()==="cloud"?"cloud":"local"}function Uy(e){return Oy[$y(e)]}const Ul={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 Au(e){const n=String(e||"").trim().toLowerCase();return n==="production"||n==="staging"||n==="performance"?n:null}function zy(e){return Au(e)||"production"}function Pp(e){return Ul[zy(String(e||""))]}function Hy(e){const n=String(e||"").trim().toLowerCase();if(!n)return null;for(const[r,s]of Object.entries(Ul))if(new URL(s.appBaseUrl).hostname.toLowerCase()===n||new URL(s.mcpBaseUrl).hostname.toLowerCase()===n)return r;return null}function Qm(e){const n=String(e||"").trim();if(!n)return null;try{return Hy(new URL(n).hostname)}catch{return null}}function Gy(e){const n=Qm(e);return n?Ul[n].mcpBaseUrl:null}function gi(e,n){return String(e[n]||"").trim()}function Mp(e,n,r){e.push(n),r?.(n)}function Vy(e,n){const r=[],s=gi(e,"ENV"),o=Au(s);if(o)return Mp(r,`[Taskforce compat] ENV=${s} is deprecated; set TASKFORCE_CLOUD_ENVIRONMENT=${o} instead.`,n),{cloudEnvironment:o,warnings:r};const c=[{key:"TASKFORCE_CLOUD_PROXY_BASE_URL",value:gi(e,"TASKFORCE_CLOUD_PROXY_BASE_URL")},{key:"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL",value:gi(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")},{key:"VITE_TASKFORCE_CLOUD_MCP_BASE_URL",value:gi(e,"VITE_TASKFORCE_CLOUD_MCP_BASE_URL")},{key:"VITE_TASKFORCE_API_BASE_URL",value:gi(e,"VITE_TASKFORCE_API_BASE_URL")},{key:"VITE_TASKFORCE_BASE_URL",value:gi(e,"VITE_TASKFORCE_BASE_URL")},{key:"TASKFORCE_BASE_URL",value:gi(e,"TASKFORCE_BASE_URL")}];for(const i of c){if(!i.value)continue;const u=Qm(i.value);if(u)return Mp(r,`[Taskforce compat] ${i.key} is being used to infer TASKFORCE_CLOUD_ENVIRONMENT=${u}. Set TASKFORCE_CLOUD_ENVIRONMENT explicitly.`,n),{cloudEnvironment:u,warnings:r}}return{cloudEnvironment:null,warnings:r}}function js(e,n){return String(e[n]||"").trim()}function Zy(e){return e.toLowerCase()==="cloud"?"cloud":"local"}function yc(e){return String(e||"").trim().replace(/\/+$/,"")}function qy(e){return String(e||"").trim().replace(/\/+$/,"")}function ao(...e){for(const n of e)if(String(n||"").trim())return String(n||"").trim();return""}function Ky(e,n={}){const r=[],s=N=>{r.push(N),n.onWarning?.(N)},o=Zy(js(e,"TASKFORCE_RUNTIME_MODE")),c=Au(js(e,"TASKFORCE_CLOUD_ENVIRONMENT")),i=c?{cloudEnvironment:c}:Vy(e,s),u=c||i.cloudEnvironment,h=yc(String(n.requestBaseUrl||"")),v=yc(ao(js(e,"VITE_TASKFORCE_BASE_URL"),js(e,"TASKFORCE_BASE_URL"))),x=yc(js(e,"VITE_TASKFORCE_API_BASE_URL")),S=yc(js(e,"VITE_TASKFORCE_CLOUD_AUTH_BASE_URL")),y=yc(ao(js(e,"VITE_TASKFORCE_CLOUD_MCP_BASE_URL"),js(e,"TASKFORCE_CLOUD_MCP_BASE_URL"))),k=yc(js(e,"TASKFORCE_CLOUD_PROXY_BASE_URL")),w=qy(js(e,"VITE_TASKFORCE_WS_BASE_URL")),P=u?Ul[u].appBaseUrl:"",b=u?Ul[u].mcpBaseUrl:"",j=ao(k,S,x,v,P),F=ao(y,b,j),B=ao(h,v,x,S,j),se=ao(h,x,v,j),K=ao(S,v,x,j),te=o==="local"?ao(w,h,x,v,k,S,P,j):ao(h,w,se,B,j);return{runtimeMode:o,cloudEnvironment:u,cloudBaseUrl:j,cloudMcpBaseUrl:F,baseUrl:B,apiBaseUrl:se,cloudAuthBaseUrl:K,wsBaseUrl:te,cloudAuthViaLocalProxy:o==="local"||!!k,warnings:r}}function ep(e){return Ky({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})}const hu="unassigned",Xf="agent",Yy="user",Jy=/^[0-9a-f]{8,}$/i;function Qf(e){const n=String(e||"").trim().toLowerCase();return n===Xf||n==="ai"||n.startsWith("ai-profile-")}function eh(e){const n=String(e||"").trim().toLowerCase();return!n||n===hu||n==="none"||n==="null"||n===Yy}function gu(e){return Qf(e)?"agent":eh(e)?"unassigned":"member"}function Xy(e){const n=String(e.displayName||"").trim(),r=String(e.email||"").trim().toLowerCase();return n||r||String(e.userId||"").trim()||"Workspace member"}function Wo(){return[{value:hu,label:"Unassigned",icon:"HelpCircle",color:"var(--text-secondary)",kind:"unassigned"}]}function Qy(e){const n=new Map;for(const r of e){const s=String(r.userId||"").trim();s&&n.set(s,{value:s,label:Xy(r),icon:"User",color:"#22c55e",kind:"member"})}return zl(Array.from(n.values()))}function zl(e){const n=new Map;for(const s of Wo())n.set(s.value,s);for(const s of Array.isArray(e)?e:[]){const o=String(s?.value||"").trim();!o||o===hu||o===Xf||n.set(o,{value:o,label:String(s.label||o).trim()||o,icon:String(s.icon||(s.kind==="agent"?"Bot":"User")),color:String(s.color||(s.kind==="agent"?"#8b5cf6":"#22c55e")),kind:s.kind==="agent"?"agent":"member"})}const r=[hu];return Array.from(n.values()).sort((s,o)=>{const c=r.indexOf(s.value),i=r.indexOf(o.value);return c>=0||i>=0?c<0?1:i<0?-1:c-i:s.label.localeCompare(o.label,void 0,{sensitivity:"base"})})}function ek(e,n){const r=String(n||"").trim();if(!r||e.some(c=>c.value===r))return e;const s=r.replace(/^ai-profile-/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ").trim(),o=s?s.split(" ").map(c=>c.charAt(0).toUpperCase()+c.slice(1)).join(" "):r;if(gu(r)==="agent"){const c=String(r).toLowerCase().startsWith("ai-profile-")&&s.split(" ").every(i=>Jy.test(i));return zl([...e,{value:r,label:c?"AI":o||"AI",icon:"Bot",color:"#8b5cf6",kind:"agent"}])}return gu(r)==="member"?zl([...e,{value:r,label:o||r,icon:"User",color:"#22c55e",kind:"member"}]):e}function th(e){const n=Array.isArray(e)?e.filter(Boolean):[];return zl(n)}function Si(e,n){const r=String(e||"").trim(),o=th(n).find(c=>c.value===r);return o?o.label:Qf(r)?"AI":eh(r)?"Unassigned":r||"Unassigned"}const nh="taskforce.workspaceContext.v2",tk="taskforce.uiState.app.v1",nk="taskforce.bootstrapDebug.v1",Lp=5e3,qd=new Map;function ak(){if(typeof window>"u")return!1;try{const e=String(window.localStorage.getItem(nk)||"").trim().toLowerCase();return e==="1"||e==="true"||e==="on"||e==="yes"}catch{return!1}}function On(e,n){if(!ak())return;console.info("[Taskforce Bootstrap]",e,n&&typeof n=="object"?n:{})}function rk(e,n){const r=String(e).trim()||"default";return`${String(n).trim()||"default"}::${r}`}async function tp(e){const n=String(e.stateKey||"default").trim()||"default",r=String(e.workspaceId||"").trim(),s=e.patch&&typeof e.patch=="object"?e.patch:{},o=JSON.stringify(s),c=rk(n,r||"default"),i=Date.now(),u=qd.get(c);if(u&&u.serializedPatch===o){if(u.status==="success"&&e.skipIfUnchanged!==!1)return On("ui_state_persist_skipped",{stateKey:n,workspaceId:r||"default",reason:"unchanged"}),{skipped:!0,reason:"unchanged"};if(e.respectFailureCooldown!==!1&&u.retryAfter>i)return On("ui_state_persist_skipped",{stateKey:n,workspaceId:r||"default",reason:"cooldown",retryAfterMs:u.retryAfter-i}),{skipped:!0,reason:"cooldown"}}try{const h=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json",...e.headers||{}},credentials:"include",body:JSON.stringify({stateKey:n,...r?{workspaceId:r}:{},patch:s})}),v=await h.json().catch(()=>({}));if(h.ok&&v?.success!==!1)return qd.set(c,{serializedPatch:o,status:"success",retryAfter:0}),{skipped:!1,response:h,payload:v};if(qd.set(c,{serializedPatch:o,status:"failure",retryAfter:i+(e.failureRetryMs??Lp)}),On("ui_state_persist_failed",{stateKey:n,workspaceId:r||"default",status:h.status,error:String(v?.error||"")}),e.throwOnError)throw new Error(String(v?.error||`Failed to persist UI state (${h.status})`));return{skipped:!1,response:h,payload:v}}catch(h){if(qd.set(c,{serializedPatch:o,status:"failure",retryAfter:i+(e.failureRetryMs??Lp)}),On("ui_state_persist_failed",{stateKey:n,workspaceId:r||"default",error:h instanceof Error?h.message:String(h)}),e.throwOnError)throw h;return{skipped:!1,payload:null}}}function np(e){const n=Jm(e);return`${nh}.${n}`}function ah(e){const n=Yf(e);return`${nh}.${n}`}function Lm(e){if(typeof window>"u")return"";try{const n=np(e),r=String(window.localStorage.getItem(n)||"").trim();if(r&&r.length<=120&&!/\s/.test(r))return r;const s=ah(e),o=String(window.localStorage.getItem(s)||"").trim();return o&&o.length<=120&&!/\s/.test(o)?(window.localStorage.setItem(n,o),o):""}catch{return""}}function sk(e,n){if(typeof window>"u")return;const r=String(e||"").trim();try{if(!r||Xm(r))return;const s=np(n),o=String(window.localStorage.getItem(s)||"").trim();if(!r&&o&&o.toLowerCase()!=="default")return;window.localStorage.setItem(s,r)}catch{}}function Bp(e){if(!(typeof window>"u"))try{window.localStorage.removeItem(np(e)),window.localStorage.removeItem(ah(e))}catch{}}function rh(e){const n=Yf(e);return`${tk}.${n}`}function Wp(e){if(typeof window>"u")return null;try{const n=window.localStorage.getItem(rh(e));if(!n)return null;const r=JSON.parse(n);return r&&typeof r=="object"?r:null}catch{return null}}function ok(e,n){if(!(typeof window>"u"))try{window.localStorage.setItem(rh(n),JSON.stringify(e))}catch{}}const Bm="taskforce.localMutationActorUserId.v1";function sh(e){return typeof e=="string"?e.trim().replace(/\/+$/,""):""}function ik(e){const n=String(e||"").trim().toLowerCase();return n==="localhost"||n==="127.0.0.1"||n==="::1"||n==="[::1]"}function Dl(e){if(!(typeof window>"u"))try{const n=String(e||"").trim();if(!n||n==="anonymous"){window.sessionStorage.removeItem(Bm);return}window.sessionStorage.setItem(Bm,n)}catch{}}function ap(){if(typeof window>"u")return"";try{return String(window.sessionStorage.getItem(Bm)||"").trim()}catch{return""}}function ck(e,n){if(typeof window>"u"||!e.startsWith("/api/taskforce/")||!ik(window.location.hostname))return!1;try{return new URL(n,window.location.origin).origin===window.location.origin}catch{return e.startsWith("/")}}function lk(e,n,r){if(!ck(e,n))return r;const s=ap();if(!s)return r;const o=new Headers(r?.headers||void 0);return o.has("x-taskforce-user-id")||o.set("x-taskforce-user-id",s),{...r,headers:o}}function dk(e,n){if(!e.startsWith("/"))return e;const r=sh(n);return r?`${r}${e}`:e}async function hm(e,n,r){const s=dk(e,r),o=sh(r).length>0,c=lk(e,s,n),i=typeof performance<"u"?performance.now():Date.now();try{const u=await fetch(s,c);if(!(o&&s!==e&&e.startsWith("/api/taskforce/")&&(u.status===401||u.status===403)))return u;On("taskforce_api_auth_fallback_retry",{path:e,primaryUrl:s,fallbackUrl:e,status:u.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-i)});try{const v=await fetch(e,c);return On("taskforce_api_auth_fallback_completed",{path:e,primaryUrl:s,fallbackUrl:e,primaryStatus:u.status,fallbackStatus:v.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-i)}),v}catch{return On("taskforce_api_auth_fallback_failed",{path:e,primaryUrl:s,fallbackUrl:e,status:u.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-i)}),u}}catch(u){if(!o||!e.startsWith("/"))throw u;On("taskforce_api_network_fallback_retry",{path:e,primaryUrl:s,fallbackUrl:e,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-i),error:u instanceof Error?u.message:String(u)});const h=await fetch(e,c);return On("taskforce_api_network_fallback_completed",{path:e,primaryUrl:s,fallbackUrl:e,fallbackStatus:h.status,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-i)}),h}}function uk(e){const n=Number(e?.status);return Number.isFinite(n)&&n>0?Math.floor(n):0}async function jc(e){try{const n=await e,r=await n.text().catch(()=>"");let s={};if(r)try{s=JSON.parse(r)}catch{s={error:!n.ok&&n.statusText?`${n.status} ${n.statusText}`:r.slice(0,400)}}else!n.ok&&n.statusText&&(s={error:`${n.status} ${n.statusText}`});const o=n.headers.get("retry-after");let c;if(o){const i=Number.parseInt(o,10);if(Number.isFinite(i)&&i>0)c=i*1e3;else{const u=Date.parse(o);if(Number.isFinite(u)){const h=u-Date.now();h>0&&(c=h)}}}return{ok:n.ok,status:n.status,data:s,retryAfterMs:c}}catch(n){return{ok:!1,status:uk(n),data:{}}}}async function mk(e){return jc(fetch(e("/api/taskforce/sync/user-settings"),{method:"GET",credentials:"include"}))}async function pk(e,n){return jc(fetch(e("/api/taskforce/sync/user-settings"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(n)}))}async function Fp(e,n){return jc(fetch(e("/api/taskforce/sync/workspace/handshake"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:n})}))}async function fk(e,n){return jc(fetch(e("/api/taskforce/sync/workspace/provision"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(n)}))}async function hk(e,n){const r=new URLSearchParams({limit:String(n.limit),workspaceId:n.workspaceId});n.cursor&&r.set("cursor",n.cursor),n.repairMode===!0&&r.set("repair","1");const s=e("/api/taskforce/sync/workspace/pull"),o=s.includes("?")?"&":"?";return jc(fetch(`${s}${o}${r.toString()}`,{method:"GET",credentials:"include"}))}async function gk(e,n){return jc(fetch(e("/api/taskforce/sync/workspace/push"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({...n,...n.repairMode===!0?{repair:!0}:{}})}))}async function Wm(e,n,r){const s=JSON.stringify({workspaceId:e,changes:n,workspaceMembers:Array.isArray(r?.workspaceMembers)?r.workspaceMembers:void 0,...r?.repairMode===!0?{repair:!0}:{},bootstrapSnapshot:r?.bootstrapSnapshot?{currentAnnotatedAttachmentSessionIds:Array.isArray(r.bootstrapSnapshot.currentAnnotatedAttachmentSessionIds)?r.bootstrapSnapshot.currentAnnotatedAttachmentSessionIds:[]}:void 0}),o="/api/taskforce/sync/workspace/apply-local",c=[];try{const i=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-workspace-id":e},credentials:"include",body:s});if(i.ok){const v=await i.json().catch(()=>({}));return{ok:!0,status:i.status,data:v,failures:c}}const u=await i.text().catch(()=>"");let h={};if(u)try{h=JSON.parse(u)}catch{h={error:u.slice(0,400)}}else i.statusText&&(h={error:`${i.status} ${i.statusText}`});return c.push(`${o}:${i.status}`),{ok:!1,status:i.status,data:h,failures:c}}catch{c.push(`${o}:network`)}return{ok:!1,status:0,data:{},failures:c}}const Fm="V1:AESGCM:",rp="AES-GCM",yk=12;async function oh(e){const n=Buffer.from(e,"base64");if(n.length!==32)throw new Error("Encryption key must be exactly 32 bytes (256-bit).");return crypto.subtle.importKey("raw",n,{name:rp},!1,["encrypt","decrypt"])}async function Op(e,n){if(!e)return e;const r=crypto.getRandomValues(new Uint8Array(yk)),s=await oh(n),c=new TextEncoder().encode(e),i=await crypto.subtle.encrypt({name:rp,iv:r},s,c),u=Buffer.from(i).toString("base64"),h=Buffer.from(r).toString("base64");return`${Fm}${h}:${u}`}async function $p(e,n){if(!e||!e.startsWith(Fm))return e;const r=e.slice(Fm.length),[s,o]=r.split(":");if(!s||!o)throw new Error("Malformed encrypted document payload.");const c=Buffer.from(s,"base64"),i=Buffer.from(o,"base64"),u=await oh(n);try{const h=await crypto.subtle.decrypt({name:rp,iv:c},u,i);return new TextDecoder("utf-8").decode(h)}catch(h){throw new Error(`Failed to decrypt document: ${h.message}`)}}var Sc={};function Ds(e){return e&&typeof e=="object"?e:{}}function lo(e){const n=Number(e||0);return n===0||n===429||n>=500}function kk(e,n){const r=String(e.code||"").trim().toUpperCase(),s=String(e.error||"").trim();return r==="WORKSPACE_ID_ALREADY_EXISTS"||s.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.":s||`Workspace provisioning failed (${n})`}async function vk(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{let n=await Fp(e.resolveCloudAuthUrl,e.workspaceId);if(n.ok)return{success:!0,provisioned:!1};const r=Ds(n.data);if(n.status===401)return{success:!1,statusCode:401,transient:!1,error:String(r.error||"Authentication required for workspace sync.")};if(n.status===429)return{success:!1,statusCode:429,retryAfterMs:n.retryAfterMs,transient:!0,error:String(r.error||"Workspace sync rate limited. Please retry later.")};if(n.status===409&&r.code==="WORKSPACE_ID_MISMATCH"){if(e.allowProvisionOnMismatch===!1)return{success:!1,statusCode:409,transient:!1,error:String(r.error||"Selected cloud workspace could not be attached to this local workspace.")};const s=await fk(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,name:e.workspaceName||e.workspaceId});if(!s.ok){const o=Ds(s.data);return{success:!1,statusCode:s.status,error:kk(o,s.status)}}if(n=await Fp(e.resolveCloudAuthUrl,e.workspaceId),!n.ok){const o=Ds(n.data);return n.status===401?{success:!1,statusCode:401,transient:!1,error:String(o.error||"Authentication required for workspace sync.")}:n.status===429?{success:!1,statusCode:429,retryAfterMs:n.retryAfterMs,transient:!0,error:String(o.error||"Workspace sync rate limited. Please retry later.")}:{success:!1,statusCode:n.status,transient:lo(n.status),error:String(o.error||`Workspace sync handshake failed (${n.status})`)}}return{success:!0,provisioned:!0}}return{success:!1,statusCode:n.status,transient:lo(n.status),error:String(r.error||`Workspace sync handshake failed (${n.status})`)}}catch{return{success:!1,statusCode:0,transient:!0,error:"Failed to validate workspace sync access."}}}async function Sk(e,n){const r=JSON.stringify([e,n]);try{const s=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(r));return Array.from(new Uint8Array(s)).map(o=>o.toString(16).padStart(2,"0")).join("")}catch{let s=2166136261;for(let c=0;c<r.length;c+=1)s^=r.charCodeAt(c),s=Math.imul(s,16777619);const o=(s>>>0).toString(16).padStart(8,"0");return`${e}:fallback:${o}`}}async function wk(e){const n=e.payload.changes.length,r=e.payload.deleteTaskIds.size,s=await Sk(e.workspaceId,e.payload.changes);let o=0,c=e.payload.changes;if(typeof process<"u"&&Sc?.TASKFORCE_SYNC_KEY){const S=Sc.TASKFORCE_SYNC_KEY,y=[];for(const k of c)k.op==="document-upsert"&&typeof k.content=="string"?y.push({...k,content:await Op(k.content,S)}):k.op==="asset-upsert"&&typeof k.contentBase64=="string"&&k.contentBase64.length>0?y.push({...k,contentBase64:await Op(k.contentBase64,S)}):y.push(k);c=y}const i=async()=>{const S=Date.now(),y=await gk(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,idempotencyKey:s,changes:c,repairMode:e.repairMode===!0});return o+=Date.now()-S,y};let u=await i();if(!u.ok&&(u.status===403||u.status===409)&&(await e.ensureCloudWorkspaceReadyForSync()).success&&(u=await i()),!u.ok){const S=Ds(u.data);return{success:!1,status:u.status,error:typeof S.error=="string"?S.error:void 0,code:typeof S.code=="string"?S.code:void 0,retryAfterMs:u.retryAfterMs,transient:lo(u.status),requestMs:o,changeCount:n,deleteCount:r,currentTaskIds:e.payload.currentTaskIds,deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,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,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:new Map,emittedEventIds:[],appliedTaskUpserts:[]}}const h=Ds(u.data),v=Array.isArray(h.emittedEventIds)?Array.from(new Set(h.emittedEventIds.map(S=>String(S||"").trim()).filter(Boolean))):[],x=Array.isArray(h.appliedTaskUpserts)?h.appliedTaskUpserts.map(S=>{const y=S&&typeof S=="object"?S:{},k=y.task&&typeof y.task=="object"?y.task:null,w=String(k?.id||"").trim();return!k||!w?null:{archived:y.archived===!0,task:k}}).filter(S=>!!S):[];return{success:!0,syncedAt:new Date().toISOString(),requestMs:o,changeCount:n,deleteCount:r,currentTaskIds:e.payload.currentTaskIds,deleteTaskIds:e.payload.deleteTaskIds,currentInitiativeIds:e.payload.currentInitiativeIds,currentInitiativeWatermarks:e.payload.currentInitiativeWatermarks,currentWorkstreamIds:e.payload.currentWorkstreamIds,currentWorkstreamWatermarks:e.payload.currentWorkstreamWatermarks,currentAiProfileIds:e.payload.currentAiProfileIds,currentAiProfileWatermarks:e.payload.currentAiProfileWatermarks,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,currentTaskEventWatermarks:e.payload.currentTaskEventWatermarks,pushedWatermarks:e.payload.pushedWatermarks,emittedEventIds:v,appliedTaskUpserts:x}}async function bk(e){let n=e.cursor,r=!0,s=0,o=0,c=0,i=0;const u=new Set;let h=!1,v=!1,x=!1;const S=new Set,y=new Set,k=new Set;let w=null;const P=Number.isFinite(Number(e.maxPages))?Math.max(1,Math.floor(Number(e.maxPages))):20;try{for(;r&&s<P;){const b=async()=>{const N=Date.now(),fe=await hk(e.resolveCloudAuthUrl,{workspaceId:e.workspaceId,cursor:n,limit:e.bootstrap?500:200,repairMode:e.repairMode===!0});return c+=Date.now()-N,fe};let j=await b();if(!j.ok&&j.status===403&&e.ensureCloudWorkspaceReadyForSync&&(await e.ensureCloudWorkspaceReadyForSync()).success&&(j=await b()),!j.ok)return{success:!1,kind:"pull_http",status:j.status,retryAfterMs:j.retryAfterMs,transient:lo(j.status),cursor:n,pages:s,appliedChanges:o,pullRequestMs:c,applyMs:i,pulledDeleteTaskIds:u,pulledActiveUpserts:h,pulledArchivedUpserts:v,pulledTaskEventUpserts:x,documentDecryptFailures:Array.from(S),serverDiagnostics:null};const F=j.data||{},B=Array.isArray(F?.changes)?F.changes:[],se=F?.diagnostics&&typeof F.diagnostics=="object"?F.diagnostics:null;w=se;const K=Array.isArray(F?.workspaceMembers),te=K?F.workspaceMembers:void 0;for(const N of B){if(N.op==="upsert"){N?.archived===!0||N?.task?.isArchived===!0?v=!0:h=!0;continue}if(N.op==="annotated-attachment-session-upsert"){const $=String(N?.session?.id||"").trim();$&&k.add($);continue}if(N.op==="task-event-upsert"){x=!0;continue}if(N.op==="document-upsert"){if(typeof N.content=="string"&&typeof process<"u"&&Sc?.TASKFORCE_SYNC_KEY)try{N.content=await $p(N.content,Sc.TASKFORCE_SYNC_KEY)}catch{const $=String(N.path||"").trim();$&&S.add($)}continue}if(N.op==="asset-upsert"){if(typeof N.contentBase64=="string"&&typeof process<"u"&&Sc?.TASKFORCE_SYNC_KEY)try{N.contentBase64=await $p(N.contentBase64,Sc.TASKFORCE_SYNC_KEY)}catch{const $=String(N.path||"").trim();$&&S.add($)}continue}if(N.op!=="delete")continue;const fe=String(N.taskId||"").trim();fe&&u.add(fe)}if(e.onPagePulled&&e.onPagePulled(),B.length>0||K){const N=Date.now(),fe=await Wm(e.workspaceId,B,{...K?{workspaceMembers:te}:{},repairMode:e.repairMode===!0}),$=fe.failures;if(!fe.ok){i+=Date.now()-N;const de=Ds(fe.data);if($.some(E=>E.endsWith(":401")))return{success:!1,kind:"apply_auth",status:401,transient:!1,failures:$,cursor:n,pages:s,appliedChanges:o,pullRequestMs:c,applyMs:i,pulledDeleteTaskIds:u,pulledActiveUpserts:h,pulledArchivedUpserts:v,pulledTaskEventUpserts:x,documentDecryptFailures:Array.from(S),serverDiagnostics:se};const Y=$.some(E=>{if(E.endsWith(":network"))return!0;const z=E.split(":").pop()||"",Z=Number.parseInt(z,10);return Number.isFinite(Z)&&(Z===429||Z>=500)});return{success:!1,kind:"apply_all_candidates",status:fe.status||void 0,transient:Y,error:String(de.error||"").trim()||void 0,failures:$,hasTransientApplyFailure:Y,cursor:n,pages:s,appliedChanges:o,pullRequestMs:c,applyMs:i,pulledDeleteTaskIds:u,pulledActiveUpserts:h,pulledArchivedUpserts:v,pulledTaskEventUpserts:x,documentDecryptFailures:Array.from(S),emittedEventIds:Array.from(y),serverDiagnostics:w}}const q=Ds(fe.data);if(q.success===!1)return i+=Date.now()-N,{success:!1,kind:"apply_payload",transient:!1,error:String(q.error||"Workspace sync apply failed."),cursor:n,pages:s,appliedChanges:o,pullRequestMs:c,applyMs:i,pulledDeleteTaskIds:u,pulledActiveUpserts:h,pulledArchivedUpserts:v,pulledTaskEventUpserts:x,documentDecryptFailures:Array.from(S),emittedEventIds:Array.from(y),serverDiagnostics:w};if(i+=Date.now()-N,o+=B.length,Array.isArray(q.emittedEventIds))for(const de of q.emittedEventIds)y.add(String(de));e.onChangesApplied&&e.onChangesApplied(B.length)}F&&"nextCursor"in F&&(F.nextCursor===null||typeof F.nextCursor=="string")&&(n=F.nextCursor),r=!!F?.hasMore,s+=1}if(e.bootstrap){const b=Date.now(),j=await Wm(e.workspaceId,[],{bootstrapSnapshot:{currentAnnotatedAttachmentSessionIds:Array.from(k)}}),F=j.failures;if(!j.ok){i+=Date.now()-b;const B=Ds(j.data);if(F.some(te=>te.endsWith(":401")))return{success:!1,kind:"apply_auth",status:401,transient:!1,failures:F,cursor:n,pages:s,appliedChanges:o,pullRequestMs:c,applyMs:i,pulledDeleteTaskIds:u,pulledActiveUpserts:h,pulledArchivedUpserts:v,pulledTaskEventUpserts:x,documentDecryptFailures:Array.from(S),emittedEventIds:Array.from(y),serverDiagnostics:w};const K=F.some(te=>{if(te.endsWith(":network"))return!0;const N=te.split(":").pop()||"",fe=Number.parseInt(N,10);return Number.isFinite(fe)&&(fe===429||fe>=500)});return{success:!1,kind:"apply_all_candidates",status:j.status||void 0,transient:K,error:String(B.error||"").trim()||void 0,failures:F,hasTransientApplyFailure:K,cursor:n,pages:s,appliedChanges:o,pullRequestMs:c,applyMs:i,pulledDeleteTaskIds:u,pulledActiveUpserts:h,pulledArchivedUpserts:v,pulledTaskEventUpserts:x,documentDecryptFailures:Array.from(S),emittedEventIds:Array.from(y),serverDiagnostics:w}}i+=Date.now()-b}return{success:!0,syncedAt:new Date().toISOString(),cursor:n||null,pages:s,appliedChanges:o,pullRequestMs:c,applyMs:i,pulledDeleteTaskIds:u,pulledActiveUpserts:h,pulledArchivedUpserts:v,pulledTaskEventUpserts:x,documentDecryptFailures:Array.from(S),emittedEventIds:Array.from(y),serverDiagnostics:w}}catch(b){return{success:!1,kind:"exception",status:0,transient:!0,error:String(b?.message||b||"Workspace sync pull failed unexpectedly."),cursor:n||null,pages:s,appliedChanges:o,pullRequestMs:c,applyMs:i,pulledDeleteTaskIds:u,pulledActiveUpserts:h,pulledArchivedUpserts:v,pulledTaskEventUpserts:x,documentDecryptFailures:Array.from(S),emittedEventIds:Array.from(y),serverDiagnostics:null}}}async function xk(e){const n=await mk(e.resolveCloudAuthUrl);if(!n.ok){const y=Number(n.status||0);return{success:!1,error:`Sync pull failed (${n.status})`,statusCode:n.status,retryAfterMs:n.retryAfterMs,transient:lo(y)}}const r=Ds(n.data),s=r.settings&&typeof r.settings=="object"?r.settings:{},o=typeof r.updatedAt=="string"&&r.updatedAt.trim().length>0?r.updatedAt.trim():null,c=e.getLocalUpdatedAt(e.userId),i=c?Date.parse(c):NaN,u=o?Date.parse(o):NaN;if(!c&&e.preferCloudOnFirstSync&&Number.isFinite(u))return await e.applyRemoteSettings(s),{success:!0,mode:"pulled",updatedAt:o};if(Number.isFinite(u)&&(!Number.isFinite(i)||u>i))return await e.applyRemoteSettings(s),{success:!0,mode:"pulled",updatedAt:o};const h=c||new Date().toISOString(),v=await pk(e.resolveCloudAuthUrl,{settings:e.buildLocalSettings(),updatedAt:h});if(!v.ok){const y=Number(v.status||0);return{success:!1,error:`Sync push failed (${v.status})`,statusCode:v.status,retryAfterMs:v.retryAfterMs,transient:lo(y)}}const x=Ds(v.data);return{success:!0,mode:"pushed",updatedAt:typeof x.updatedAt=="string"&&x.updatedAt.trim().length>0?x.updatedAt.trim():h}}function _k(e){const n=Math.max(1,Math.floor(Number(e)||1)),r=Math.min(12e4,1500*2**Math.max(0,n-1)),s=Math.floor(r*(.15*Math.random()));return r+s}const Ck=["chat_app","ide","coding_tool","agent","other"],DL=["chat_app","ide","coding_tool","agent","other","unclassified"],Ak={chat_app:"Chat app",ide:"IDE",coding_tool:"Coding tool",agent:"Agent",other:"Other"},Tk={chat_app:"Chat Apps",ide:"IDEs",coding_tool:"Coding Tools",agent:"Agents",other:"Other",unclassified:"Unclassified"};function Ik(e){return typeof e=="string"&&Ck.includes(e)}function ih(e){if(typeof e!="string")return null;const n=e.trim();return Ik(n)?n:null}function PL(e){return Ak[e]}function ML(e){return e??"unclassified"}function LL(e){return Tk[e]}function Kd(e){if(e==null)return;const n=String(e).trim();return n.length>0?n:void 0}function Yd(e){if(e===void 0)return;if(e===null)return null;const n=String(e).trim();return n.length>0?n:null}function Nk(e){return typeof e=="boolean"?e:void 0}function Jd(e,n){if(e===void 0)return;if(e===null||e==="")return n?.nullable?null:void 0;const r=typeof e=="number"?e:Number(e);if(!Number.isFinite(r))return n?.nullable?null:void 0;const s=Math.floor(r);return Number.isFinite(n?.min)&&s<Number(n?.min)?n?.nullable?null:void 0:s}function jk(e){if(!e||typeof e!="object"||Array.isArray(e))return;const r=Object.entries(e).reduce((s,[o,c])=>Array.isArray(c)?(s[o]=c.map(i=>String(i??"")),s):(c==null||(s[o]=String(c)),s),{});return Object.keys(r).length>0?r:{}}function Rk(e){return Array.isArray(e)?e:void 0}function Ek(e){return Array.isArray(e)?e:void 0}function Dk(e){return Array.isArray(e)?e:void 0}function Pk(e){const n=e&&typeof e=="object"?e:{};return{id:String(n.id||"").trim(),title:String(n.title||"").trim(),description:n.description===void 0?void 0:n.description||null,status:String(n.status||"task").trim()||"task",priority:Jd(n.priority,{min:1})??void 0,complexity:Jd(n.complexity,{min:1,nullable:!0}),type:String(n.type||"").trim(),category:String(n.category||"").trim(),approach:Kd(n.approach),canceledReason:n.canceledReason===void 0?void 0:n.canceledReason||null,createdAt:String(n.createdAt||"").trim(),updatedAt:Kd(n.updatedAt),completedAt:n.completedAt===void 0?void 0:n.completedAt||null,isArchived:Nk(n.isArchived),taxonomies:jk(n.taxonomies),createdBy:Kd(n.createdBy),assignee:Kd(n.assignee),scheduledDate:Yd(n.scheduledDate),dueDate:Yd(n.dueDate),scheduledWeekKey:Yd(n.scheduledWeekKey),orderInDay:Jd(n.orderInDay,{min:0,nullable:!0}),workstreamId:Yd(n.workstreamId),referenceNumber:Jd(n.referenceNumber,{min:1,nullable:!0}),comments:Rk(n.comments),attachments:Ek(n.attachments),checklistItems:Dk(n.checklistItems)}}function Up(e){return Pk(e)}function Mk(e){return[...e].sort((n,r)=>{const s=String(n?.createdAt||"").trim(),o=String(r?.createdAt||"").trim(),c=s.localeCompare(o);return c!==0?c:String(n?.id||"").trim().localeCompare(String(r?.id||"").trim())})}function zp(e){return[...e].sort((n,r)=>{const s=String(n?.id||"").trim(),o=String(r?.id||"").trim();return s.localeCompare(o)})}function Lk(e){const n=new Date().toISOString(),r=new Set(Array.from(e.pendingDeletedTaskIds).map(l=>String(l||"").trim()).filter(l=>l.length>0)),s=new Map(Array.from(e.pendingDeletedTaskWatermarks||new Map).map(([l,rt])=>[String(l||"").trim(),String(rt||"").trim()]).filter(([l,rt])=>l.length>0&&Number.isFinite(Date.parse(rt)))),o=e.lastPushedWatermarks,c=l=>{if((l?.referenceNumber===void 0||l?.referenceNumber===null)&&Number.isFinite(Number(l?.localReferenceNumber))||!o||o.size===0)return!0;const rt=String(l?.id||"").trim();if(!rt)return!1;const At=String(l?.updatedAt||l?.createdAt||"").trim();return o.get(rt)!==At},i=zp(e.tasks||[]),u=zp(e.archivedTasks||[]),h=new Map,v=i.filter(l=>!r.has(String(l?.id||"").trim())&&c(l)).map(l=>{const rt=String(l?.id||"").trim(),At=String(l?.updatedAt||l?.createdAt||"").trim();return rt&&h.set(rt,At),{op:"upsert",archived:!1,task:Up(l)}}),x=u.filter(l=>!r.has(String(l?.id||"").trim())&&c(l)).map(l=>{const rt=String(l?.id||"").trim(),At=String(l?.updatedAt||l?.createdAt||"").trim();return rt&&h.set(rt,At),{op:"upsert",archived:!0,task:Up(l)}}),S=new Set;for(const l of e.tasks||[]){const rt=String(l?.id||"").trim();rt&&S.add(rt)}for(const l of e.archivedTasks||[]){const rt=String(l?.id||"").trim();rt&&S.add(rt)}const y=Array.from(e.lastPushedTaskIds).filter(l=>!S.has(l)).map(l=>({op:"delete",taskId:l,deletedAt:s.get(l)||n})),k=Array.from(r).map(l=>({op:"delete",taskId:l,deletedAt:s.get(l)||n})),w=new Set([...y.map(l=>String(l.taskId)),...k.map(l=>String(l.taskId))]),P=new Set((Array.isArray(e.initiatives)?e.initiatives:[]).map(l=>String(l?.id||"").trim()).filter(l=>l.length>0)),b=new Map((Array.isArray(e.initiatives)?e.initiatives:[]).map(l=>[String(l?.id||"").trim(),String(l?.updatedAt||l?.createdAt||"").trim()]).filter(([l])=>l.length>0)),j=e.lastPushedInitiativeWatermarks,F=!j||j.size===0,B=(Array.isArray(e.initiatives)?e.initiatives:[]).map(l=>({op:"initiative-upsert",initiative:{id:String(l?.id||"").trim(),referenceNumber:Number.isFinite(Number(l?.referenceNumber))?Math.max(1,Math.floor(Number(l.referenceNumber))):null,referenceLabel:typeof l?.referenceLabel=="string"&&l.referenceLabel.trim().length>0?l.referenceLabel.trim():void 0,title:String(l?.title||"").trim(),description:typeof l?.description=="string"?l.description:null,ownerId:typeof l?.ownerId=="string"&&l.ownerId.trim().length>0?l.ownerId.trim():null,createdAt:String(l?.createdAt||"").trim(),updatedAt:String(l?.updatedAt||l?.createdAt||"").trim(),order:Number.isFinite(Number(l?.order))?Math.floor(Number(l.order)):null,isArchived:!!l?.isArchived}})).filter(l=>l.initiative.id.length>0).filter(l=>F?!0:j.get(l.initiative.id)!==l.initiative.updatedAt),se=new Set((Array.isArray(e.workstreams)?e.workstreams:[]).map(l=>String(l?.id||"").trim()).filter(l=>l.length>0)),K=new Map((Array.isArray(e.workstreams)?e.workstreams:[]).map(l=>[String(l?.id||"").trim(),String(l?.updatedAt||l?.createdAt||"").trim()]).filter(([l])=>l.length>0)),te=e.lastPushedWorkstreamWatermarks,N=!te||te.size===0,fe=(Array.isArray(e.workstreams)?e.workstreams:[]).map(l=>({op:"workstream-upsert",workstream:{id:String(l?.id||"").trim(),referenceNumber:Number.isFinite(Number(l?.referenceNumber))?Math.max(1,Math.floor(Number(l.referenceNumber))):null,referenceLabel:typeof l?.referenceLabel=="string"&&l.referenceLabel.trim().length>0?l.referenceLabel.trim():void 0,initiativeId:typeof l?.initiativeId=="string"&&l.initiativeId.trim().length>0?l.initiativeId.trim():null,title:String(l?.title||"").trim(),description:typeof l?.description=="string"?l.description:null,ownerId:typeof l?.ownerId=="string"&&l.ownerId.trim().length>0?l.ownerId.trim():null,createdAt:String(l?.createdAt||"").trim(),updatedAt:String(l?.updatedAt||l?.createdAt||"").trim(),order:Number.isFinite(Number(l?.order))?Math.floor(Number(l.order)):null,isArchived:!!l?.isArchived}})).filter(l=>l.workstream.id.length>0).filter(l=>N?!0:te.get(l.workstream.id)!==l.workstream.updatedAt),$=new Set((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(l=>String(l?.id||"").trim()).filter(l=>l.length>0)),q=new Map((Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(l=>[String(l?.id||"").trim(),String(l?.updatedAt||l?.createdAt||"").trim()]).filter(([l])=>l.length>0)),de=e.lastPushedAiProfileWatermarks,ue=!de||de.size===0,Y=(Array.isArray(e.aiProfiles)?e.aiProfiles:[]).map(l=>({op:"ai-profile-upsert",profile:{id:String(l.id||"").trim(),workspaceId:String(l.workspaceId||"").trim(),profileToken:String(l.profileToken||"").trim(),name:String(l.name||"").trim(),username:String(l.username||"").trim(),icon:String(l.icon||"Bot").trim()||"Bot",color:String(l.color||"#8b5cf6").trim()||"#8b5cf6",description:typeof l.description=="string"&&l.description.trim()||null,role:typeof l.role=="string"&&l.role.trim()||null,provider:typeof l.provider=="string"&&l.provider.trim()||null,model:typeof l.model=="string"&&l.model.trim()||null,surfaceType:ih(l.surfaceType),providerMetadata:l.providerMetadata&&typeof l.providerMetadata=="object"&&!Array.isArray(l.providerMetadata)?l.providerMetadata:null,createdAt:String(l.createdAt||"").trim(),updatedAt:String(l.updatedAt||l.createdAt||"").trim(),lastActiveAt:typeof l.lastActiveAt=="string"&&l.lastActiveAt.trim().length>0?l.lastActiveAt.trim():null}})).filter(l=>l.profile.id.length>0&&l.profile.workspaceId.length>0).filter(l=>ue?!0:de.get(l.profile.id)!==l.profile.updatedAt),E=new Set((Array.isArray(e.documents)?e.documents:[]).map(l=>String(l?.path||"").trim()).filter(l=>l.length>0)),z=new Set(Array.from(e.lastPushedDocumentPaths||new Set).map(l=>String(l||"").trim()).filter(l=>l.length>0&&!E.has(l))),Z=new Map((Array.isArray(e.documents)?e.documents:[]).map(l=>[String(l?.path||"").trim(),String(l?.updatedAt||"").trim()]).filter(([l])=>l.length>0)),me=e.lastPushedDocumentWatermarks,G=!me||me.size===0,Ae=(Array.isArray(e.documents)?e.documents:[]).map(l=>({op:"document-upsert",path:String(l.path||"").trim(),updatedAt:String(l.updatedAt||"").trim(),content:typeof l.content=="string"?l.content:"",assetId:typeof l.assetId=="string"&&l.assetId.trim().length>0?l.assetId.trim():void 0,documentId:typeof l.documentId=="string"&&l.documentId.trim().length>0?l.documentId.trim():null,referenceNumber:Number.isFinite(Number(l.referenceNumber))?Math.max(1,Math.floor(Number(l.referenceNumber))):null,version:Number.isFinite(Number(l.version))?Math.max(1,Math.floor(Number(l.version))):null,taskId:typeof l.taskId=="string"&&l.taskId.trim().length>0?l.taskId.trim():null,logicalName:typeof l.logicalName=="string"&&l.logicalName.trim().length>0?l.logicalName.trim():null,caption:typeof l.caption=="string"&&l.caption.trim().length>0?l.caption.trim():null,originalFilename:typeof l.originalFilename=="string"&&l.originalFilename.trim().length>0?l.originalFilename.trim():null,linkRole:l.linkRole==="reference"?"reference":"attachment"})).filter(l=>l.path.length>0).filter(l=>G?!0:me.get(l.path)!==l.updatedAt),he=new Set((Array.isArray(e.assets)?e.assets:[]).map(l=>String(l?.path||"").trim()).filter(l=>l.length>0)),Ce=new Set(Array.from(e.lastPushedAssetPaths||new Set).map(l=>String(l||"").trim()).filter(l=>l.length>0&&!he.has(l))),le=new Map((Array.isArray(e.assets)?e.assets:[]).map(l=>[String(l?.path||"").trim(),String(l?.updatedAt||"").trim()]).filter(([l])=>l.length>0)),be=e.lastPushedAssetWatermarks,Ie=!be||be.size===0,Ne=(Array.isArray(e.assets)?e.assets:[]).map(l=>({op:"asset-upsert",path:String(l.path||"").trim(),updatedAt:String(l.updatedAt||"").trim(),contentBase64:typeof l.contentBase64=="string"?l.contentBase64:"",assetId:typeof l.assetId=="string"&&l.assetId.trim().length>0?l.assetId.trim():void 0,kind:l.kind==="image"?"image":"file",mimeType:typeof l.mimeType=="string"&&l.mimeType.trim().length>0?l.mimeType.trim():"application/octet-stream",referenceNumber:Number.isFinite(Number(l.referenceNumber))?Math.max(1,Math.floor(Number(l.referenceNumber))):null,taskId:typeof l.taskId=="string"&&l.taskId.trim().length>0?l.taskId.trim():null,logicalName:typeof l.logicalName=="string"&&l.logicalName.trim().length>0?l.logicalName.trim():null,caption:typeof l.caption=="string"&&l.caption.trim().length>0?l.caption.trim():null,originalFilename:typeof l.originalFilename=="string"&&l.originalFilename.trim().length>0?l.originalFilename.trim():null,linkRole:l.linkRole==="reference"?"reference":l.linkRole==="image"?"image":"attachment"})).filter(l=>l.path.length>0&&l.contentBase64.length>0).filter(l=>Ie?!0:be.get(l.path)!==l.updatedAt),Fe=Array.isArray(e.documentReviewSessions)?e.documentReviewSessions:[],D=new Set(Fe.filter(l=>String(l?.deletedAt||"").trim().length===0).map(l=>String(l?.id||"").trim()).filter(l=>l.length>0)),I=new Set([...Array.from(e.lastPushedDocumentReviewSessionIds||new Set).map(l=>String(l||"").trim()).filter(l=>l.length>0&&!D.has(l)),...Fe.filter(l=>String(l?.deletedAt||"").trim().length>0).map(l=>String(l?.id||"").trim()).filter(l=>l.length>0)]),p=new Map(Fe.map(l=>[String(l?.id||"").trim(),String(l?.updatedAt||l?.createdAt||"").trim()]).filter(([l])=>l.length>0)),A=e.lastPushedDocumentReviewSessionWatermarks,_=!A||A.size===0,M=Fe.map(l=>({op:"document-review-session-upsert",session:{id:String(l.id||"").trim(),assetId:String(l.assetId||"").trim(),documentId:typeof l.documentId=="string"&&l.documentId.trim().length>0?l.documentId.trim():null,documentVersion:Number.isFinite(Number(l.documentVersion))?Math.max(1,Math.floor(Number(l.documentVersion))):null,title:typeof l.title=="string"&&l.title.trim().length>0?l.title.trim():null,status:l.status==="resolved"?"resolved":"open",comments:[],createdByActorId:typeof l.createdByActorId=="string"&&l.createdByActorId.trim().length>0?l.createdByActorId.trim():null,updatedByActorId:typeof l.updatedByActorId=="string"&&l.updatedByActorId.trim().length>0?l.updatedByActorId.trim():null,createdAt:String(l.createdAt||"").trim(),updatedAt:String(l.updatedAt||l.createdAt||"").trim(),deletedAt:typeof l.deletedAt=="string"&&l.deletedAt.trim().length>0?l.deletedAt.trim():null}})).filter(l=>l.session.id.length>0&&l.session.assetId.length>0&&!l.session.deletedAt).filter(l=>_?!0:A.get(l.session.id)!==l.session.updatedAt),H=Array.isArray(e.documentReviewComments)?e.documentReviewComments:[],R=new Set(H.filter(l=>String(l?.deletedAt||"").trim().length===0).map(l=>String(l?.id||"").trim()).filter(l=>l.length>0)),re=new Set([...Array.from(e.lastPushedDocumentReviewCommentIds||new Set).map(l=>String(l||"").trim()).filter(l=>l.length>0&&!R.has(l)),...H.filter(l=>String(l?.deletedAt||"").trim().length>0).map(l=>String(l?.id||"").trim()).filter(l=>l.length>0)]),V=new Map(H.map(l=>[String(l?.id||"").trim(),String(l?.updatedAt||l?.createdAt||"").trim()]).filter(([l])=>l.length>0)),ie=e.lastPushedDocumentReviewCommentWatermarks,W=!ie||ie.size===0,Q=H.map(l=>({op:"document-review-comment-upsert",comment:{id:String(l.id||"").trim(),sessionId:String(l.sessionId||"").trim(),body:String(l.body||"").trim(),anchor:l.anchor??null,order:Number.isFinite(Number(l.order))?Math.max(0,Math.floor(Number(l.order))):0,authorActorId:typeof l.authorActorId=="string"&&l.authorActorId.trim().length>0?l.authorActorId.trim():null,createdAt:String(l.createdAt||"").trim(),updatedAt:String(l.updatedAt||l.createdAt||"").trim(),deletedAt:typeof l.deletedAt=="string"&&l.deletedAt.trim().length>0?l.deletedAt.trim():null}})).filter(l=>l.comment.id.length>0&&l.comment.sessionId.length>0&&!l.comment.deletedAt).filter(l=>W?!0:ie.get(l.comment.id)!==l.comment.updatedAt),ge=Array.isArray(e.annotatedAttachmentSessions)?e.annotatedAttachmentSessions:[],Me=new Set(ge.filter(l=>String(l?.deletedAt||"").trim().length===0).map(l=>String(l?.id||"").trim()).filter(l=>l.length>0)),ye=new Set([...Array.from(e.lastPushedAnnotatedAttachmentSessionIds||new Set).map(l=>String(l||"").trim()).filter(l=>l.length>0&&!Me.has(l)),...ge.filter(l=>String(l?.deletedAt||"").trim().length>0).map(l=>String(l?.id||"").trim()).filter(l=>l.length>0)]),Ue=new Map(ge.map(l=>[String(l?.id||"").trim(),String(l?.updatedAt||l?.createdAt||"").trim()]).filter(([l])=>l.length>0)),pt=e.lastPushedAnnotatedAttachmentSessionWatermarks,Ye=!pt||pt.size===0,bt=ge.map(l=>({op:"annotated-attachment-session-upsert",session:{id:String(l.id||"").trim(),workspaceId:String(l.workspaceId||"").trim(),taskId:String(l.taskId||"").trim(),baseImageAssetId:String(l.baseImageAssetId||"").trim(),title:typeof l.title=="string"&&l.title.trim().length>0?l.title.trim():null,globalInstruction:typeof l.globalInstruction=="string"&&l.globalInstruction.trim().length>0?l.globalInstruction.trim():null,annotations:Array.isArray(l.annotations)?l.annotations:[],createdByActorId:typeof l.createdByActorId=="string"&&l.createdByActorId.trim().length>0?l.createdByActorId.trim():null,updatedByActorId:typeof l.updatedByActorId=="string"&&l.updatedByActorId.trim().length>0?l.updatedByActorId.trim():null,createdAt:String(l.createdAt||"").trim(),updatedAt:String(l.updatedAt||l.createdAt||"").trim(),deletedAt:typeof l.deletedAt=="string"&&l.deletedAt.trim().length>0?l.deletedAt.trim():null}})).filter(l=>l.session.id.length>0&&l.session.workspaceId.length>0&&l.session.baseImageAssetId.length>0&&!l.session.deletedAt).filter(l=>Ye?!0:pt.get(l.session.id)!==l.session.updatedAt),qe=Mk(Array.isArray(e.taskEvents)?e.taskEvents:[]),Qe=new Map(qe.map(l=>[String(l?.id||"").trim(),String(l?.createdAt||"").trim()]).filter(([l])=>l.length>0)),$e=e.lastPushedTaskEventWatermarks,He=!$e||$e.size===0,ee=qe.map(l=>({op:"task-event-upsert",event:{id:String(l.id||"").trim(),taskId:String(l.taskId||"").trim(),workspaceId:String(l.workspaceId||"").trim(),action:String(l.action||"").trim(),actor:String(l.actor||"system").trim()||"system",actorType:l.actorType==="ai"||l.actorType==="human"||l.actorType==="system"?l.actorType:"system",details:l.details&&typeof l.details=="object"&&!Array.isArray(l.details)?l.details:{},createdAt:String(l.createdAt||"").trim()}})).filter(l=>l.event.id.length>0&&l.event.taskId.length>0&&l.event.workspaceId.length>0&&l.event.action.length>0&&Number.isFinite(Date.parse(l.event.createdAt))).filter(l=>He?!0:$e.get(l.event.id)!==l.event.createdAt);return{changes:[...B,...fe,...e.taxonomyState&&typeof e.taxonomyState=="object"?[{op:"taxonomy-upsert",taxonomyState:e.taxonomyState,updatedAt:n}]:Array.isArray(e.taxonomies)?[{op:"taxonomy-upsert",taxonomies:e.taxonomies,updatedAt:n}]:[],...Y,...Ae,...Array.from(z).map(l=>({op:"document-delete",path:l,deletedAt:n})),...Ne,...Array.from(Ce).map(l=>({op:"asset-delete",path:l,deletedAt:n})),...M,...Array.from(I).map(l=>({op:"document-review-session-delete",sessionId:l,deletedAt:n})),...Q,...Array.from(re).map(l=>({op:"document-review-comment-delete",commentId:l,deletedAt:n})),...bt,...Array.from(ye).map(l=>({op:"annotated-attachment-session-delete",sessionId:l,deletedAt:n})),...ee,...v,...x,...Array.from(w).map(l=>({op:"delete",taskId:l,deletedAt:s.get(l)||n}))],currentTaskIds:new Set(Array.from(S).filter(l=>!r.has(l))),deleteTaskIds:w,currentInitiativeIds:P,currentInitiativeWatermarks:b,currentWorkstreamIds:se,currentWorkstreamWatermarks:K,currentAiProfileIds:$,currentAiProfileWatermarks:q,currentDocumentPaths:E,deleteDocumentPaths:z,currentDocumentWatermarks:Z,currentAssetPaths:he,deleteAssetPaths:Ce,currentAssetWatermarks:le,currentDocumentReviewSessionIds:D,deleteDocumentReviewSessionIds:I,currentDocumentReviewSessionWatermarks:p,currentDocumentReviewCommentIds:R,deleteDocumentReviewCommentIds:re,currentDocumentReviewCommentWatermarks:V,currentAnnotatedAttachmentSessionIds:Me,deleteAnnotatedAttachmentSessionIds:ye,currentAnnotatedAttachmentSessionWatermarks:Ue,currentTaskEventWatermarks:Qe,pushedWatermarks:h}}function Bk(e){const n=(e.tasks||[]).map(i=>`${i.id}:${i.updatedAt||i.createdAt||""}:${i.status}`).sort(),r=(e.archivedTasks||[]).map(i=>`${i.id}:${i.updatedAt||i.createdAt||""}:${i.status}`).sort(),s=e.pendingDeletedTaskIds?Array.from(e.pendingDeletedTaskIds).sort():[],o=(e.initiatives||[]).map(i=>({id:String(i.id||"").trim(),updatedAt:String(i.updatedAt||i.createdAt||"").trim(),title:String(i.title||"").trim(),ownerId:typeof i.ownerId=="string"?i.ownerId.trim():"",isArchived:!!i.isArchived})).filter(i=>i.id.length>0).sort((i,u)=>i.id.localeCompare(u.id)),c=(e.workstreams||[]).map(i=>({id:String(i.id||"").trim(),updatedAt:String(i.updatedAt||i.createdAt||"").trim(),initiativeId:typeof i.initiativeId=="string"?i.initiativeId.trim():"",title:String(i.title||"").trim(),ownerId:typeof i.ownerId=="string"?i.ownerId.trim():"",isArchived:!!i.isArchived})).filter(i=>i.id.length>0).sort((i,u)=>i.id.localeCompare(u.id));return JSON.stringify({workspaceId:e.workspaceId,initiatives:o,workstreams:c,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(i=>({id:String(i.id||"").trim(),updatedAt:String(i.updatedAt||i.createdAt||"").trim(),name:String(i.name||"").trim(),username:String(i.username||"").trim()})).filter(i=>i.id.length>0).sort((i,u)=>i.id.localeCompare(u.id)):[],taskEvents:Array.isArray(e.taskEvents)?e.taskEvents.map(i=>({id:String(i.id||"").trim(),taskId:String(i.taskId||"").trim(),action:String(i.action||"").trim(),actor:String(i.actor||"").trim(),actorType:i.actorType==="ai"||i.actorType==="human"||i.actorType==="system"?i.actorType:"system",createdAt:String(i.createdAt||"").trim()})).filter(i=>i.id.length>0&&i.taskId.length>0).sort((i,u)=>i.id.localeCompare(u.id)):[],documents:Array.isArray(e.documents)?e.documents.map(i=>({path:String(i.path||"").trim(),updatedAt:String(i.updatedAt||"").trim(),length:typeof i.content=="string"?i.content.length:0})).filter(i=>i.path.length>0).sort((i,u)=>i.path.localeCompare(u.path)):[],assets:Array.isArray(e.assets)?e.assets.map(i=>({path:String(i.path||"").trim(),updatedAt:String(i.updatedAt||"").trim(),length:typeof i.contentBase64=="string"?i.contentBase64.length:0,kind:i.kind==="image"?"image":"file"})).filter(i=>i.path.length>0).sort((i,u)=>i.path.localeCompare(u.path)):[],documentReviewSessions:Array.isArray(e.documentReviewSessions)?e.documentReviewSessions.map(i=>({id:String(i.id||"").trim(),updatedAt:String(i.updatedAt||i.createdAt||"").trim(),assetId:String(i.assetId||"").trim(),status:i.status==="resolved"?"resolved":"open",deletedAt:String(i.deletedAt||"").trim(),commentCount:Array.isArray(i.comments)?i.comments.length:0})).filter(i=>i.id.length>0).sort((i,u)=>i.id.localeCompare(u.id)):[],documentReviewComments:Array.isArray(e.documentReviewComments)?e.documentReviewComments.map(i=>({id:String(i.id||"").trim(),sessionId:String(i.sessionId||"").trim(),updatedAt:String(i.updatedAt||i.createdAt||"").trim(),deletedAt:String(i.deletedAt||"").trim(),bodyLength:String(i.body||"").length})).filter(i=>i.id.length>0).sort((i,u)=>i.id.localeCompare(u.id)):[],annotatedAttachmentSessions:Array.isArray(e.annotatedAttachmentSessions)?e.annotatedAttachmentSessions.map(i=>({id:String(i.id||"").trim(),updatedAt:String(i.updatedAt||i.createdAt||"").trim(),taskId:String(i.taskId||"").trim(),baseImageAssetId:String(i.baseImageAssetId||"").trim(),deletedAt:String(i.deletedAt||"").trim(),annotationCount:Array.isArray(i.annotations)?i.annotations.length:0})).filter(i=>i.id.length>0).sort((i,u)=>i.id.localeCompare(u.id)):[],active:n,archived:r,pendingDeletes:s})}function su(){return{version:2,enabled:!1,phase:"idle",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null,lastErrorMessage:null}}function Mo(e){const n=String(e||"").trim();return n.length>0?n:null}function Hp(e){return String(e||"").trim().toLowerCase()==="attach-cloud-import"?"attach-cloud-import":null}function Wk(e,n){if(!!!(e.enabled??e.cloudSyncEnabled))return"idle";const s=String(e.phase||"").trim().toLowerCase();if(s==="idle"||s==="provision-local"||s==="attach-cloud"||s==="active"||s==="error")return s;const o=String(e.bootstrapMode||"").trim().toLowerCase();if(o==="provision-local"||o==="attach-cloud")return o;const c=String(e.sourceOfTruth||"").trim().toLowerCase();return e.onboardingCompleted?"active":c==="cloud"?n.lastPullAt?"active":"attach-cloud":c==="local"?n.lastPullAt||n.lastPushAt?"active":"provision-local":(n.lastPullAt||n.lastPushAt,"active")}function Fk(e){const n=su();if(!e||typeof e!="object")return{state:n,changed:!1};const r=e,s=r.lastErrorMessage,o=typeof s=="string"&&s.trim().length>0?s:null,c={version:2,enabled:!!(r.enabled??r.cloudSyncEnabled),phase:"idle",setupIntent:Hp(r.setupIntent),pullCursor:Mo(r.pullCursor),lastPullAt:Mo(r.lastPullAt),lastPushAt:Mo(r.lastPushAt),lastSyncedAt:Mo(r.lastSyncedAt),lastErrorMessage:o};c.phase=Wk(r,c),c.enabled||(c.phase="idle",c.pullCursor=null);const u=Number(r.version||0)!==2||!!(r.enabled??r.cloudSyncEnabled)!==c.enabled||String(r.phase||"").trim()!==c.phase||Hp(r.setupIntent)!==c.setupIntent||Mo(r.pullCursor)!==c.pullCursor||Mo(r.lastPullAt)!==c.lastPullAt||Mo(r.lastPushAt)!==c.lastPushAt||Mo(r.lastSyncedAt)!==c.lastSyncedAt||o!==c.lastErrorMessage;return{state:c,changed:u}}const Ok="taskforce.sync.lease.v1",$k="taskforce.sync.lease.v1",Uk=2500,zk=9e3;function Nl(e){const n=String(e||"").trim();return n.length>0&&n.toLowerCase()!=="default"}function Xd(e){const n=String(e||"").trim();return n.length>0?n:null}function gm(e){return`${Ok}.${e}`}function Hk(e){if(!e)return null;try{const n=JSON.parse(e),r=String(n?.ownerId||"").trim(),s=String(n?.workspaceId||"").trim(),o=String(n?.operation||"").trim(),c=String(n?.heartbeatAt||"").trim(),i=String(n?.expiresAt||"").trim();return!r||!s||!c||!i||o!=="pull"&&o!=="push"&&o!=="repair"?null:{ownerId:r,workspaceId:s,operation:o,heartbeatAt:c,expiresAt:i}}catch{return null}}function Gk(e,n,r,s){return{ownerId:e,workspaceId:n,operation:r,heartbeatAt:new Date(s).toISOString(),expiresAt:new Date(s+zk).toISOString()}}function Vk(e,n=Date.now()){if(!e)return!0;const r=Date.parse(e.expiresAt);return!Number.isFinite(r)||r<=n}function ym(e,n){const r={...e,...n,version:2,phase:n.phase||e.phase,setupIntent:n.setupIntent===void 0?e.setupIntent??null:n.setupIntent??null,pullCursor:n.pullCursor===void 0?e.pullCursor:Xd(n.pullCursor),lastPullAt:n.lastPullAt===void 0?e.lastPullAt:Xd(n.lastPullAt),lastPushAt:n.lastPushAt===void 0?e.lastPushAt:Xd(n.lastPushAt),lastSyncedAt:n.lastSyncedAt===void 0?e.lastSyncedAt:Xd(n.lastSyncedAt),lastErrorMessage:n.lastErrorMessage===void 0?e.lastErrorMessage:n.lastErrorMessage??null};return r.enabled||(r.phase="idle",r.setupIntent=null,r.pullCursor=null),r}function Zk(e){const{currentWorkspaceId:n,setWorkspaceCloudSyncEnabled:r,setWorkspaceSyncPhase:s,setWorkspaceSyncSetupIntent:o,setWorkspaceLastPullAt:c,setWorkspaceLastPushAt:i,setWorkspaceLastErrorMessage:u}=e,[h,v]=a.useState(null),x=a.useRef(null),S=a.useRef(null),y=a.useRef(0),k=a.useRef(!1),w=a.useRef(!1),P=a.useRef(""),b=a.useRef(""),j=a.useRef(new Set),F=a.useRef(new Set),B=a.useRef(new Map),se=a.useRef(null),K=a.useRef(su()),te=a.useRef(""),N=a.useRef(null),fe=a.useRef(null),$=a.useRef(null),q=a.useRef(null);if(!te.current){const D=Date.now().toString(36),I=Math.random().toString(36).slice(2,10);te.current=`sync-lease-${D}-${I}`}const de=a.useCallback(()=>{y.current=0,S.current=null,x.current!==null&&typeof window<"u"&&(window.clearTimeout(x.current),x.current=null),v(null)},[]),ue=a.useCallback((D,I)=>{if(typeof window>"u")return;const p=Math.max(1,y.current+1);y.current=p;const A=_k(p),_=Number(I?.minDelayMs),M=Number.isFinite(_)&&_>0?Math.max(A,Math.floor(_)):A,H=Date.now()+M;S.current=H,v(new Date(H).toISOString()),x.current!==null&&window.clearTimeout(x.current),x.current=window.setTimeout(()=>{x.current=null,S.current=null,v(null),D()},M)},[]),Y=a.useCallback(()=>{const D=S.current;return typeof D=="number"&&Number.isFinite(D)&&D>Date.now()},[]),E=a.useCallback(D=>{if(typeof window>"u")return null;const I=String(D||"").trim();return Nl(I)?Hk(window.localStorage.getItem(gm(I))):null},[]),z=a.useCallback(D=>{const I=String(D||"").trim();if(I)try{q.current?.postMessage({workspaceId:I})}catch{}},[]),Z=a.useCallback((D,I)=>{if(typeof window>"u")return null;const p=String(D||"").trim();if(!Nl(p))return null;const A=Gk(te.current,p,I,Date.now());try{window.localStorage.setItem(gm(p),JSON.stringify(A))}catch{return null}return z(p),A},[z]),me=a.useCallback(()=>{$.current!==null&&typeof window<"u"&&(window.clearInterval($.current),$.current=null)},[]),G=a.useCallback((D,I)=>{if(typeof window>"u")return;const p=String(D||N.current||"").trim();if(!p)return;const A=E(p),_=A?.ownerId===te.current;if(!(!I?.force&&A&&!_)){me();try{window.localStorage.removeItem(gm(p))}catch{}N.current=null,fe.current=null,z(p)}},[z,E,me]),Ae=a.useCallback((D,I)=>{typeof window>"u"||(me(),$.current=window.setInterval(()=>{const p=String(N.current||"").trim(),A=fe.current;if(!p||!A){me();return}if(E(p)?.ownerId!==te.current){me(),N.current=null,fe.current=null;return}Z(p,A)},Uk),N.current=D,fe.current=I)},[E,me,Z]),he=a.useCallback(async(D,I)=>{if(typeof window>"u")return!0;const p=String(D||"").trim();if(!Nl(p))return!1;const A=E(p);if(A?.ownerId===te.current)return Z(p,I)?(Ae(p,I),!0):!1;if(A&&!Vk(A)||!Z(p,I))return!1;const H=E(p);return!H||H.ownerId!==te.current?!1:(Ae(p,I),!0)},[E,Ae,Z]),Ce=a.useCallback(D=>{G(D,{force:!0})},[G]),le=a.useCallback(D=>{const I=K.current,p=ym(I,{enabled:!!D.enabled,phase:D.phase||I.phase,setupIntent:D.setupIntent,pullCursor:D.pullCursor,lastPullAt:D.lastPullAt,lastPushAt:D.lastPushAt,lastSyncedAt:D.lastSyncedAt,lastErrorMessage:D.lastErrorMessage});K.current=p,se.current=p.pullCursor,r(p.enabled),s(p.phase),o(p.setupIntent??null),c(p.lastPullAt),i(p.lastPushAt),u(p.lastErrorMessage??null)},[r,s,o,c,i,u]),be=a.useCallback(D=>{const I=ym(K.current,D);return le(I),I},[le]),Ie=a.useCallback(async D=>{const I=ym(K.current,D);K.current=I,se.current=I.pullCursor;const p=await tp({workspaceId:n,stateKey:"workspace-sync",patch:I,throwOnError:!0,respectFailureCooldown:!1}),A=p.response,_=p.payload;if(p.skipped)return le(I),I;if(!A)throw new Error("Failed to persist workspace sync state (missing response)");if(!A.ok||_?.success===!1)throw new Error(_?.error||`Failed to persist workspace sync state (${A.status})`);return le(I),I},[le,n]),Ne=a.useCallback(async()=>{if(!Nl(n)){const D=su();K.current=D,le(D);return}try{const D=await fetch(`/api/taskforce/ui-state?key=workspace-sync&workspaceId=${encodeURIComponent(n)}`,{method:"GET",credentials:"include"});if(!D.ok)return;const I=await D.json().catch(()=>({})),p=Fk(I?.state&&typeof I.state=="object"?I.state:null);K.current=p.state,le(p.state),p.changed&&Ie(p.state)}catch{}},[le,n,Ie]),Fe=a.useCallback(async(D,I)=>{if(!Nl(n))return{success:!1,error:"Workspace setup is required before enabling sync."};try{if(!D.enabled)return await Ie({enabled:!1,phase:"idle",setupIntent:null,pullCursor:null}),{success:!0};if(!I.isAuthenticated)return{success:!1,error:"Sign in is required before enabling workspace sync."};if(!I.cloudAuthConfigured)return{success:!1,error:"Cloud authentication endpoint is not configured."};const p=await I.ensureCloudWorkspaceReadyForSync();return p.success?(await Ie({enabled:!0,phase:p.provisioned?"provision-local":"attach-cloud",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null}),{success:!0}):{success:!1,error:p.error||"Workspace sync handshake failed."}}catch{return{success:!1,error:"Failed to save workspace sync settings."}}},[n,Ie]);return a.useEffect(()=>{P.current="",b.current="",j.current=new Set,F.current=new Set,B.current=new Map,se.current=null,K.current=su(),k.current=!1,w.current=!1,G(),de()},[de,n,G]),a.useEffect(()=>{if(typeof window>"u"||typeof BroadcastChannel>"u")return;const D=new BroadcastChannel($k);return q.current=D,()=>{D.close(),q.current===D&&(q.current=null)}},[]),a.useEffect(()=>()=>{x.current!==null&&typeof window<"u"&&(window.clearTimeout(x.current),x.current=null),G()},[G]),{workspaceRetryAt:h,isWorkspaceRetryPending:Y,workspacePushInFlightRef:k,workspacePullInFlightRef:w,workspaceLastPushedSignatureRef:P,workspacePendingSignatureRef:b,workspaceLastPushedTaskIdsRef:j,workspaceDeletedTaskIdsRef:F,workspaceDeletedTaskWatermarksRef:B,workspacePullCursorRef:se,clearWorkspaceRetry:de,scheduleWorkspaceRetry:ue,persistWorkspaceSyncPatch:Ie,applyWorkspaceSyncPatchLocally:be,loadWorkspaceSyncState:Ne,applyWorkspaceSyncStateSnapshot:le,saveWorkspaceCloudSyncSettings:Fe,acquireWorkspaceSyncLease:he,releaseWorkspaceSyncLease:G,forceClearWorkspaceSyncLease:Ce,readWorkspaceSyncLease:E}}class qk{constructor(n=2048){this.maxSeenEventIds=n}seenEventIds=new Set;seenEventIdQueue=[];activeEpoch="";lastSeq=null;telemetry={accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0};process(n){const r=typeof n.eventId=="string"?n.eventId.trim():"";if(r&&this.seenEventIds.has(r))return this.telemetry.duplicateDiscarded+=1,{accepted:!1,reason:"duplicate",shouldRecover:!1};const s=typeof n.serverEpoch=="string"?n.serverEpoch.trim():"",o=Number(n.seq);if(!(s.length>0&&Number.isFinite(o)&&o>=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 i=Math.floor(o);if(this.activeEpoch&&this.activeEpoch!==s)return this.activeEpoch=s,this.lastSeq=i,r&&this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1};if(!this.activeEpoch)return this.activeEpoch=s,this.lastSeq=i,r&&this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1};const u=this.lastSeq;if(typeof u=="number"){if(i<=u){this.telemetry.outOfOrderDiscarded+=i===u?0:1,this.telemetry.duplicateDiscarded+=i===u?1:0;const h=i<u;return h&&(this.telemetry.recoveryTriggered+=1),{accepted:!1,reason:i===u?"duplicate":"out-of-order",shouldRecover:h}}if(i>u+1)return this.telemetry.outOfOrderDiscarded+=1,this.telemetry.recoveryTriggered+=1,{accepted:!1,reason:"out-of-order",shouldRecover:!0}}return this.lastSeq=i,r&&this.rememberEventId(r),this.telemetry.accepted+=1,{accepted:!0,shouldRecover:!1}}getTelemetry(){return{...this.telemetry}}rememberEventId(n){for(this.seenEventIds.add(n),this.seenEventIdQueue.push(n);this.seenEventIdQueue.length>this.maxSeenEventIds;){const r=this.seenEventIdQueue.shift();r&&this.seenEventIds.delete(r)}}}function ch(e){const{enabled:n,workspaceId:r,websocketUrl:s,reconnectBaseMs:o=400,reconnectMaxMs:c=1e4,degradeAfterAttempts:i=5,replayLimit:u=200,onSignal:h,onTelemetry:v,userId:x}=e,[S,y]=a.useState("degraded-fallback"),k=a.useRef(null),w=a.useRef(null),P=a.useRef(0),b=a.useRef(""),j=a.useRef(!1),F=a.useRef(null),B=a.useRef(null),se=a.useRef(new qk),K=a.useRef(h),te=a.useRef(v);a.useEffect(()=>{K.current=h},[h]),a.useEffect(()=>{te.current=v},[v]);const[N,fe]=a.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),$=a.useMemo(()=>String(r||"").trim(),[r]),q=a.useMemo(()=>String(s||"").trim(),[s]);return a.useEffect(()=>{let de=!1;const ue=()=>{w.current!==null&&(window.clearTimeout(w.current),w.current=null)},Y=()=>{const le=k.current;if(k.current=null,le)try{le.close()}catch{}},E=le=>le==="taskforce:replay-gap"||le==="taskforce:replay-reset"?4:le==="taskforce:mutation"||le==="taskforce:replay"?3:1,z=le=>{const be=B.current;if(be){const Ie=E(be.type),Ne=E(le.type);if(Ne<Ie||Ne===Ie&&be.eventId&&!le.eventId)return}B.current=le,F.current!==null&&window.clearTimeout(F.current),F.current=window.setTimeout(()=>{F.current=null;const Ie=K.current;if(!B.current||typeof Ie!="function")return;const Ne=B.current;B.current=null,Ie(Ne)},80)},Z=le=>{try{const be=JSON.parse(String(le.data||""));return!be||typeof be!="object"?null:be}catch{return null}},me=le=>{const be=typeof le.serverEpoch=="string"?le.serverEpoch.trim():"",Ie=Number(le.seq);!be||!Number.isFinite(Ie)||Ie<0||(b.current=`${be}:${Math.floor(Ie)}`,j.current=!1)},G=()=>{const le=se.current.getTelemetry();fe(le);const be=te.current;typeof be=="function"&&be(le)},Ae=le=>{const be={type:"taskforce:replay",workspaceId:$,limit:u},Ie=b.current;Ie&&(be.cursor=Ie),le.send(JSON.stringify(be))},he=()=>{if(!n||de)return;ue(),P.current+=1;const le=P.current,be=Math.max(50,Math.floor(o)),Ie=Math.max(be,Math.floor(c)),Ne=Math.min(Ie,be*Math.pow(2,Math.max(0,le-1)));y(le>=i?"degraded-fallback":"reconnecting"),w.current=window.setTimeout(()=>{de||(w.current=null,Ce())},Ne)},Ce=()=>{if(!n||de||!$||!q)return;Y();let le;try{le=new WebSocket(q)}catch{he();return}k.current=le,le.addEventListener("open",()=>{P.current=0,y("connected"),le.send(JSON.stringify({type:"taskforce:subscribe",workspaceId:$,userId:x||void 0})),Ae(le)}),le.addEventListener("message",be=>{const Ie=Z(be);if(!Ie||typeof Ie.type!="string")return;const Ne=typeof Ie.workspaceId=="string"?Ie.workspaceId.trim():$;if(!(!Ne||Ne!==$)){if(Ie.type==="taskforce:update"){z({type:"taskforce:update",workspaceId:$,eventId:typeof Ie.eventId=="string"?Ie.eventId.trim():void 0});return}if(Ie.type==="taskforce:mutation"){const Fe=se.current.process({eventId:Ie.eventId,serverEpoch:Ie.serverEpoch,seq:Ie.seq});if(!Fe.accepted){G(),Fe.shouldRecover&&(b.current="",j.current||(j.current=!0,z({type:"taskforce:replay-gap",workspaceId:$})));return}me(Ie),G(),z({type:Ie.type,workspaceId:$,eventId:typeof Ie.eventId=="string"?Ie.eventId.trim():void 0});return}if(Ie.type==="taskforce:replay"){const Fe=Array.isArray(Ie.events)?Ie.events:[];let D=0;for(const I of Fe)se.current.process({eventId:I.eventId,serverEpoch:I.serverEpoch,seq:I.seq}).accepted&&(D+=1,me(I));j.current=!1,G(),(D>0||Ie.truncated===!0)&&z({type:"taskforce:replay",workspaceId:$}),Ie.truncated===!0&&Ae(le);return}if(Ie.type==="taskforce:replay-gap"||Ie.type==="taskforce:replay-reset"){if(b.current="",j.current)return;j.current=!0,z({type:Ie.type,workspaceId:$})}}}),le.addEventListener("close",be=>{if(k.current===le&&(k.current=null),!de&&n){const Ie=Number(be?.code||0),Ne=String(be?.reason||"").trim();console.warn(`[Taskforce] Realtime socket closed workspace=${$} user=${String(x||"anonymous").trim()||"anonymous"} code=${Ie}${Ne?` reason=${Ne}`:""}`)}he()}),le.addEventListener("error",()=>{try{le.close()}catch{}})};return!n||!$||!q?(y("degraded-fallback"),ue(),Y(),()=>{ue(),Y()}):(y("reconnecting"),Ce(),()=>{de=!0,ue(),F.current!==null&&(window.clearTimeout(F.current),F.current=null),B.current=null,Y()})},[n,$,q,o,c,i,u,x]),{connectionState:S,telemetry:N}}const Om="taskforce:context-assets-mutated";function Kk(e){typeof window>"u"||typeof window.dispatchEvent!="function"||window.dispatchEvent(new CustomEvent(Om,{detail:e}))}const lh="taskforce.userGlobalSyncMeta.v1",Yk="taskforce.syncDebug.v1",Jk=12e4,dh="taskforce.syncWatermarks.v3",Xk=300*1e3,Gp="Another local window is already syncing this workspace. Wait a few seconds, or press Repair in that window.";function Bo(e){const n=String(e||"").trim();return n.length>0&&n.toLowerCase()!=="default"}function Qk(){if(typeof window>"u")return!1;try{const e=String(window.localStorage.getItem(Yk)||"").trim().toLowerCase();return e==="1"||e==="true"||e==="on"||e==="yes"}catch{return!1}}function er(e,n){if(!Qk())return;console.info("[Taskforce Sync]",e,n&&typeof n=="object"?n:{})}function ev(e){const n=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",description:typeof e?.description=="string"&&e.description.trim().length>0?e.description.trim():null,role:typeof e?.role=="string"&&e.role.trim().length>0?e.role.trim():null,provider:typeof e?.provider=="string"&&e.provider.trim().length>0?e.provider.trim():null,model:typeof e?.model=="string"&&e.model.trim().length>0?e.model.trim():null,surfaceType:ih(e?.surfaceType??e?.surface_type),providerMetadata:n&&typeof n=="object"&&!Array.isArray(n)?n:null,createdAt:String(e?.createdAt||e?.created_at||"").trim(),updatedAt:String(e?.updatedAt||e?.updated_at||e?.createdAt||e?.created_at||"").trim(),lastActiveAt:typeof e?.lastActiveAt=="string"&&e.lastActiveAt.trim().length>0?e.lastActiveAt.trim():typeof e?.last_active_at=="string"&&e.last_active_at.trim().length>0?e.last_active_at.trim():null}}function Vp(){if(typeof window>"u")return{};try{const e=window.localStorage.getItem(lh);if(!e)return{};const n=JSON.parse(e);return n&&typeof n=="object"?n:{}}catch{return{}}}function tv(e){if(!(typeof window>"u"))try{window.localStorage.setItem(lh,JSON.stringify(e))}catch{}}function nv(e){try{return JSON.stringify(e&&typeof e=="object"?e:null)}catch{return"null"}}function av(e){return e.flatMap(n=>{const r=String(n?.id||"").trim();return!r||!Array.isArray(n?.comments)?[]:n.comments.map(s=>({id:String(s?.id||"").trim(),sessionId:r,body:String(s?.body||""),anchor:s?.anchor??null,order:Number.isFinite(Number(s?.order))?Math.max(0,Math.floor(Number(s.order))):0,authorActorId:typeof s?.authorActorId=="string"&&s.authorActorId.trim().length>0?s.authorActorId.trim():null,createdAt:String(s?.createdAt||"").trim(),updatedAt:String(s?.updatedAt||s?.createdAt||"").trim(),deletedAt:typeof s?.deletedAt=="string"&&s.deletedAt.trim().length>0?s.deletedAt.trim():null})).filter(s=>s.id.length>0&&s.sessionId.length>0)})}function Qd(e,n){const r=new Map;for(const s of[...e||[],...n||[]]){const o=Array.isArray(s?.taskEvents)?s.taskEvents:[];for(const c of o){const i=String(c?.id||"").trim(),u=String(c?.taskId||s?.id||"").trim(),h=String(c?.workspaceId||"").trim(),v=String(c?.createdAt||"").trim();if(!i||!u||!h||!v)continue;const x={id:i,taskId:u,workspaceId:h,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:v},S=r.get(i);(!S||x.createdAt>S.createdAt)&&r.set(i,x)}}return Array.from(r.values()).sort((s,o)=>s.createdAt!==o.createdAt?s.createdAt.localeCompare(o.createdAt):s.id.localeCompare(o.id))}function rv(e,n){if(typeof window>"u")return null;try{const r=`${dh}.${e}`,s=window.localStorage.getItem(r);if(!s)return null;const o=JSON.parse(s);if(!o||o.v!==2&&o.v!==3&&o.v!==4&&o.v!==5&&o.v!==6&&o.v!==7&&o.v!==8)return null;const c=typeof o.taxonomyStateFingerprint=="string"?o.taxonomyStateFingerprint:"";return{taskWatermarks:!n||!c||c===n?new Map(Array.isArray(o.taskWatermarks)?o.taskWatermarks:[]):new Map,initiativeWatermarks:new Map(Array.isArray(o.initiativeWatermarks)?o.initiativeWatermarks:[]),workstreamWatermarks:new Map(Array.isArray(o.workstreamWatermarks)?o.workstreamWatermarks:[]),documentWatermarks:new Map(Array.isArray(o.documentWatermarks)?o.documentWatermarks:[]),assetWatermarks:new Map(Array.isArray(o.assetWatermarks)?o.assetWatermarks:[]),documentReviewSessionWatermarks:new Map(Array.isArray(o.documentReviewSessionWatermarks)?o.documentReviewSessionWatermarks:[]),documentReviewCommentWatermarks:new Map(Array.isArray(o.documentReviewCommentWatermarks)?o.documentReviewCommentWatermarks:[]),annotatedAttachmentSessionWatermarks:new Map(Array.isArray(o.annotatedAttachmentSessionWatermarks)?o.annotatedAttachmentSessionWatermarks:[]),taskEventWatermarks:new Map(Array.isArray(o.taskEventWatermarks)?o.taskEventWatermarks:[])}}catch{return null}}function uh(e,n){if(!(typeof window>"u"))try{const r=`${dh}.${e}`;window.localStorage.setItem(r,JSON.stringify({v:8,savedAt:new Date().toISOString(),taskWatermarks:Array.from(n.taskWatermarks.entries()),initiativeWatermarks:Array.from(n.initiativeWatermarks.entries()),workstreamWatermarks:Array.from(n.workstreamWatermarks.entries()),documentWatermarks:Array.from(n.documentWatermarks.entries()),assetWatermarks:Array.from(n.assetWatermarks.entries()),documentReviewSessionWatermarks:Array.from(n.documentReviewSessionWatermarks.entries()),documentReviewCommentWatermarks:Array.from(n.documentReviewCommentWatermarks.entries()),annotatedAttachmentSessionWatermarks:Array.from(n.annotatedAttachmentSessionWatermarks.entries()),taskEventWatermarks:Array.from(n.taskEventWatermarks.entries()),taxonomyStateFingerprint:typeof n.taxonomyStateFingerprint=="string"?n.taxonomyStateFingerprint:""}))}catch{}}function sv({currentWorkspaceId:e,workspaceSyncPhase:n,clearWorkspaceRetry:r,setWorkspaceSyncBusy:s,setUserGlobalSyncStatus:o,setUserGlobalSyncError:c,setWorkspaceLastErrorMessage:i,setWorkspaceLastErrorAt:u,reportSyncEvent:h,setAuthBlocked:v,setIsAuthenticated:x,checkAuthSession:S,ensureCloudWorkspaceReadyForSync:y,scheduleWorkspaceSyncRetry:k,persistWorkspaceSyncPatchSafely:w}){const P=async(j,F)=>{r(),s(!1),o("error");const B="Session expired. Sign in again to resume cloud sync.";c(B),i(B),u(new Date().toISOString()),h(e,{eventType:j==="handshake"?"handshake":j,status:"error",statusCode:F,errorMessage:B}),v(!0),x(!1),await S()};return{handleSyncAuthFailure:P,ensureWorkspaceSyncReady:async()=>{if(!Bo(e)){const B="Workspace sync blocked: local workspace ID is unresolved.";return i(B),u(new Date().toISOString()),c(B),o("error"),!1}const j=await y();if(j.success)return!0;if(j.statusCode===401)return await P("handshake",401),!1;const F=j.error||"Workspace sync handshake failed.";return i(F),u(new Date().toISOString()),c(F),o("error"),h(e,{eventType:"handshake",status:"error",statusCode:j.statusCode,errorMessage:F}),j.transient||lo(j.statusCode)?k(j.retryAfterMs):(n==="active"||n==="attach-cloud"||n==="provision-local")&&w({phase:"error",lastErrorMessage:F}),!1}}}function ov({workspaceSyncPhase:e,lastBootstrapPhaseRef:n,bootstrapPhaseStartedAtRef:r,bootstrapLastProgressAtRef:s}){if(e==="attach-cloud"||e==="provision-local"){n.current=e,r.current===null&&(r.current=Date.now()),s.current=null;return}r.current=null,s.current=null}function iv({currentWorkspaceId:e,workspaceCloudSyncEnabled:n,workspaceSyncPhase:r,workspacePullInFlightRef:s,workspacePushInFlightRef:o,bootstrapPhaseStartedAtRef:c,bootstrapLastProgressAtRef:i,setWorkspaceLastErrorMessage:u,setWorkspaceLastErrorAt:h,setUserGlobalSyncStatus:v,setUserGlobalSyncError:x,setWorkspaceSyncBusy:S,persistWorkspaceSyncPatchSafely:y}){if(!n||r!=="attach-cloud"&&r!=="provision-local")return;const k=window.setInterval(()=>{if(r!=="attach-cloud"&&r!=="provision-local"||s.current||o.current)return;const w=Math.max(c.current??0,i.current??0);if(w>0&&Date.now()-w<Jk)return;const b=`Workspace sync ${r==="attach-cloud"?"initial cloud pull":"initial cloud upload"} stalled. Press Repair to restart sync for this workspace.`;u(b),h(new Date().toISOString()),v("error"),x(b),S(!1),y({phase:"error",lastErrorMessage:b}),er("workspace_sync_bootstrap_timeout",{workspaceId:e,phase:r})},1e4);return()=>window.clearInterval(k)}function cv(e){const{workspaceSyncPhase:n,lastBootstrapPhase:r,workspaceLastPullAt:s}=e;return n==="provision-local"?"provision-local":n==="attach-cloud"?"attach-cloud":r==="provision-local"||r==="attach-cloud"?r:s?"attach-cloud":"provision-local"}function lv({cloudAuthConfigured:e,runtimeMode:n,workspaceCloudSyncEnabled:r,workspaceSyncPhase:s,workspacePullInFlightRef:o,realtimePullDebounceRef:c,realtimeSuppressedEventIdsRef:i,clearWorkspaceRetry:u,isWorkspaceRetryPending:h,pullWorkspaceChangesFromCloud:v}){return{handleRealtimeSignal:k=>{if(!e||n!=="local"||!r||s==="provision-local")return;const w=String(k?.eventId||"").trim();w&&i.current.delete(w)||o.current||(h()&&u(),c.current!==null&&window.clearTimeout(c.current),c.current=window.setTimeout(()=>{c.current=null,v()},180))},recordSuppressedEventIds:(k,w)=>{const P=w?.queueRef,b=Number.isFinite(w?.maxQueueSize)?Math.max(1,Number(w?.maxQueueSize)):2048,j=Number.isFinite(w?.ttlMs)?Math.max(0,Number(w?.ttlMs)):null;for(const F of k){const B=String(F||"").trim();!B||i.current.has(B)||(i.current.add(B),P&&P.current.push(B),j!==null&&window.setTimeout(()=>{i.current.delete(B)},j))}if(P)for(;P.current.length>b;){const F=P.current.shift();F&&i.current.delete(F)}},clearRealtimePullDebounce:()=>{c.current!==null&&(window.clearTimeout(c.current),c.current=null)}}}function dv({currentWorkspaceId:e,taxonomyStateFingerprint:n,workspaceCloudSyncEnabled:r,workspaceSyncPhase:s,workspaceLastPullAt:o,lastBootstrapPhaseRef:c,workspaceRepairModeRef:i,workspaceForceFullAiProfilePushRef:u,workspaceStartupRepairRanRef:h,workspaceStartupFullReconcileRanRef:v,workspaceFullReconcileInFlightRef:x,workspacePullCursorRef:S,workspaceAttachBootstrapBaselineSignatureRef:y,workspaceCaptureAttachBootstrapBaselineRef:k,workspacePendingSignatureRef:w,workspaceLastPushedSignatureRef:P,workspaceLastPushedWatermarksRef:b,workspaceLastPushedInitiativeIdsRef:j,workspaceLastPushedInitiativeWatermarksRef:F,workspaceLastPushedWorkstreamIdsRef:B,workspaceLastPushedWorkstreamWatermarksRef:se,workspaceLastPushedAiProfileIdsRef:K,workspaceLastPushedAiProfileWatermarksRef:te,workspaceLastPushedDocumentPathsRef:N,workspaceLastPushedDocumentWatermarksRef:fe,workspaceLastPushedAssetPathsRef:$,workspaceLastPushedAssetWatermarksRef:q,workspaceLastPushedDocumentReviewSessionIdsRef:de,workspaceLastPushedDocumentReviewSessionWatermarksRef:ue,workspaceLastPushedDocumentReviewCommentIdsRef:Y,workspaceLastPushedDocumentReviewCommentWatermarksRef:E,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:z,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:Z,workspaceLastPushedTaskEventWatermarksRef:me,bootstrapPhaseStartedAtRef:G,bootstrapLastProgressAtRef:Ae,acquireWorkspaceSyncLease:he,releaseWorkspaceSyncLease:Ce,forceClearWorkspaceSyncLease:le,clearWorkspaceRetry:be,clearWorkspaceIssue:Ie,reportWorkspaceWindowContention:Ne,persistWorkspaceSyncPatch:Fe,buildWorkspaceSyncSignature:D,pullWorkspaceChangesFromCloud:I,pushWorkspaceChangesToCloud:p,cloudAuthConfigured:A,runtimeMode:_,isAuthenticated:M,checkAuthSession:H}){return{retryWorkspaceCloudSync:async()=>{if(be(),!A||_!=="local"||!r||!M&&!await H())return!1;if(u.current=!0,s==="provision-local"){const W=D();return W?p(W,{forceAllAiProfiles:!0}):!1}const V=await I();if(s==="attach-cloud")return V;const ie=D();if(ie){w.current=ie;const W=await p(ie,{forceAllAiProfiles:u.current===!0});return V||W}return V},resetWorkspaceSyncCursorAndPull:async()=>{if(!await he(e,"repair")&&(le(e),!await he(e,"repair"))){Ne("repair");return}be(),Ie(),G.current=null,Ae.current=null,S.current=null,y.current="",k.current=!1,w.current="",P.current="",b.current=new Map,j.current=new Set,F.current=new Map,B.current=new Set,se.current=new Map,K.current=new Set,te.current=new Map,N.current=new Set,fe.current=new Map,$.current=new Set,q.current=new Map,de.current=new Set,ue.current=new Map,Y.current=new Set,E.current=new Map,z.current=new Set,Z.current=new Map,me.current=new Map,u.current=!1,h.current=!1,v.current=!1,x.current=!1,uh(e,{taskWatermarks:new Map,initiativeWatermarks:new Map,workstreamWatermarks:new Map,documentWatermarks:new Map,assetWatermarks:new Map,documentReviewSessionWatermarks:new Map,documentReviewCommentWatermarks:new Map,annotatedAttachmentSessionWatermarks:new Map,taskEventWatermarks:new Map,taxonomyStateFingerprint:n});try{if(!r)return;i.current=!0;const ie=cv({workspaceSyncPhase:s,lastBootstrapPhase:c.current,workspaceLastPullAt:o});if(await Fe({phase:ie,pullCursor:null,lastErrorMessage:null}),ie==="provision-local"){const W=D();if(!W)return;await p(W,{forceAllAiProfiles:!0,repairMode:!0});return}await I({repairMode:!0})}finally{i.current=!1,Ce(e)}}}}function uv({cloudAuthConfigured:e,runtimeMode:n,workspaceCloudSyncEnabled:r,currentWorkspaceId:s,workspaceSyncPhase:o,taxonomyStateFingerprint:c,isAuthenticated:i,checkAuthSession:u,resolveCloudAuthUrl:h,ensureCloudWorkspaceReadyForSync:v,ensureWorkspaceSyncReady:x,handleSyncAuthFailure:S,clearWorkspaceRetry:y,clearWorkspaceIssue:k,isWorkspaceRetryPending:w,scheduleWorkspaceSyncRetry:P,persistWorkspaceSyncPatchSafely:b,persistWorkspaceSyncPatchBestEffort:j,reportSyncEvent:F,acquireWorkspaceSyncLease:B,releaseWorkspaceSyncLease:se,reportWorkspaceWindowContention:K,refreshWorkspaceSyncMarkdownDocumentsSnapshot:te,refreshWorkspaceSyncAiProfilesSnapshot:N,refreshWorkspaceSyncAssetsSnapshot:fe,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:$,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:q,refreshLocalWorkspaceTaskCollections:de,buildWorkspaceSyncPayload:ue,buildWorkspaceSyncSignature:Y,seedWorkspaceSnapshotPushBaseline:E,shouldSuppressAttachBootstrapPush:z,recordSuppressedEventIds:Z,workspaceRepairModeRef:me,workspaceForceFullAiProfilePushRef:G,workspacePushInFlightRef:Ae,workspacePullInFlightRef:he,workspaceLastPushedSignatureRef:Ce,workspacePendingSignatureRef:le,workspaceLastPushedTaskIdsRef:be,workspaceDeletedTaskIdsRef:Ie,workspaceDeletedTaskWatermarksRef:Ne,workspacePullCursorRef:Fe,workspaceLastPushedWatermarksRef:D,workspaceLastPushedInitiativeIdsRef:I,workspaceLastPushedInitiativeWatermarksRef:p,workspaceLastPushedWorkstreamIdsRef:A,workspaceLastPushedWorkstreamWatermarksRef:_,workspaceLastPushedAiProfileIdsRef:M,workspaceLastPushedAiProfileWatermarksRef:H,workspaceLastPushedDocumentPathsRef:R,workspaceLastPushedDocumentWatermarksRef:re,workspaceLastPushedAssetPathsRef:V,workspaceLastPushedAssetWatermarksRef:ie,workspaceLastPushedDocumentReviewSessionIdsRef:W,workspaceLastPushedDocumentReviewSessionWatermarksRef:Q,workspaceLastPushedDocumentReviewCommentIdsRef:ge,workspaceLastPushedDocumentReviewCommentWatermarksRef:Me,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:ye,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:Ue,workspaceLastPushedTaskEventWatermarksRef:pt,workspaceCaptureAttachBootstrapBaselineRef:Ye,workspaceStartupFullReconcileRanRef:bt,workspaceFullReconcileInFlightRef:qe,bootstrapLastProgressAtRef:Qe,realtimeSuppressedEventQueueRef:$e,setWorkspaceSyncBusy:He,setUserGlobalSyncStatus:ee,setUserGlobalSyncError:Be,setWorkspaceLastErrorMessage:l,setWorkspaceLastErrorAt:rt,setWorkspaceLastPullAt:At,setWorkspaceLastPushAt:jt,setWorkspaceSyncPendingChanges:It,setTasks:tt,setArchivedTasks:xt}){const Ve=async(ze,at)=>{if(!e||n!=="local"||!r||!Bo(s))return!1;if(me.current===!0&&at?.repairMode!==!0||o==="attach-cloud")return le.current=ze,!1;if(!i&&!await u()||z(ze))return!1;if(Ae.current||he.current)return le.current=ze,!1;if(!await B(s,"push"))return le.current=ze,K("push"),!1;Ae.current=!0,He(!0),ee("syncing"),Be(null);const Rt=Date.now(),ot=at?.forceAllAiProfiles===!0||G.current===!0;try{if(await te(),await N(),await fe(),await $(),!await x())return!1;const ve=ue({forceAllAiProfiles:ot});It(ve.changes.length);const Re=await wk({resolveCloudAuthUrl:h,workspaceId:s,payload:ve,ensureCloudWorkspaceReadyForSync:v,repairMode:at?.repairMode===!0||me.current===!0});if(!Re.success){if(Re.status===401)return await S("push",401),!1;let Oe=Re.error?`Workspace sync push failed (${Re.status||0}): ${Re.error}`:`Workspace sync push failed (${Re.status||0})`;return Re.status===413&&(Oe="Workspace sync failed because the payload is too large. This usually happens when one or more attachments exceed the project limit."),ee("error"),Be(Oe),l(Oe),rt(new Date().toISOString()),F(s,{eventType:"push",status:"error",statusCode:Re.status,errorMessage:Oe,requestMs:Re.requestMs}),le.current=ze,Re.transient||lo(Re.status)?P(Re.retryAfterMs):o==="active"&&b({phase:"error",lastErrorMessage:Oe}),!1}Ce.current=ze,be.current=Re.currentTaskIds,I.current=new Set(Re.currentInitiativeIds),p.current=new Map(Re.currentInitiativeWatermarks),A.current=new Set(Re.currentWorkstreamIds),_.current=new Map(Re.currentWorkstreamWatermarks),M.current=new Set(Re.currentAiProfileIds),H.current=new Map(Re.currentAiProfileWatermarks),R.current=new Set(Re.currentDocumentPaths),re.current=new Map(Re.currentDocumentWatermarks),V.current=new Set(Re.currentAssetPaths),ie.current=new Map(Re.currentAssetWatermarks),W.current=new Set(Re.currentDocumentReviewSessionIds),Q.current=new Map(Re.currentDocumentReviewSessionWatermarks),ge.current=new Set(Re.currentDocumentReviewCommentIds),Me.current=new Map(Re.currentDocumentReviewCommentWatermarks),ye.current=new Set(Re.currentAnnotatedAttachmentSessionIds),Ue.current=new Map(Re.currentAnnotatedAttachmentSessionWatermarks),pt.current=new Map(Re.currentTaskEventWatermarks),ot&&(G.current=!1);for(const[Oe,kt]of Re.pushedWatermarks)D.current.set(Oe,kt);if(Re.deleteTaskIds.size>0)for(const Oe of Re.deleteTaskIds)Ie.current.delete(Oe),Ne.current.delete(Oe),D.current.delete(Oe);if(uh(s,{taskWatermarks:D.current,initiativeWatermarks:p.current,workstreamWatermarks:_.current,documentWatermarks:re.current,assetWatermarks:ie.current,documentReviewSessionWatermarks:Q.current,documentReviewCommentWatermarks:Me.current,annotatedAttachmentSessionWatermarks:Ue.current,taskEventWatermarks:pt.current,taxonomyStateFingerprint:c}),Array.isArray(Re.emittedEventIds)&&Re.emittedEventIds.length>0&&Z(Re.emittedEventIds,{queueRef:$e,maxQueueSize:2048}),Array.isArray(Re.appliedTaskUpserts)&&Re.appliedTaskUpserts.length>0){const Oe=await Wm(s,Re.appliedTaskUpserts.map(kt=>({op:"upsert",archived:kt.archived===!0,task:kt.task})));if(Oe.ok){for(const kt of Re.appliedTaskUpserts){const J=String(kt?.task?.id||"").trim(),Se=String(kt?.task?.updatedAt||kt?.task?.createdAt||"").trim();!J||!Se||D.current.set(J,Se)}try{await de()}catch{er("push_local_task_refresh_failed",{workspaceId:s,taskCount:Re.appliedTaskUpserts.length})}}else er("push_local_task_apply_failed",{workspaceId:s,taskCount:Re.appliedTaskUpserts.length,status:Oe.status,failures:Oe.failures})}y(),k();const vt=Re.syncedAt||new Date().toISOString();return Ce.current=Y(),jt(vt),It(0),ee("idle"),b({phase:"active",lastPushAt:vt,lastSyncedAt:vt,lastErrorMessage:null}),F(s,{eventType:o==="provision-local"?"bootstrap":"push",status:"success",changeCount:Re.changeCount,requestMs:Re.requestMs}),!0}catch(ke){const ve="Workspace sync push failed.";return ee("error"),Be(ve),l(ve),rt(new Date().toISOString()),le.current=ze,P(),F(s,{eventType:"push",status:"error",errorMessage:`${ve} ${String(ke?.message||"").trim()}`.trim()}),er("push_failed_exception",{workspaceId:s,elapsedMs:Date.now()-Rt}),!1}finally{Ae.current=!1,He(he.current),se(s);const ke=le.current,ve=Y();ke&&ve&&ve!==Ce.current&&!he.current&&!w()&&(le.current="",window.setTimeout(()=>{Ve(ve)},120))}},ct=async ze=>{if(!e||n!=="local"||!r||!Bo(s)||me.current===!0&&ze?.repairMode!==!0||o==="provision-local"||w()||!i&&!await u()||he.current||Ae.current)return!1;if(!await B(s,"pull"))return K("pull"),!1;he.current=!0,He(!0),ee("syncing"),Be(null);const Nt=Date.now();try{if(!await x())return!1;const ot=o==="attach-cloud",ke=ot||ze?.forceCursorNull===!0?null:Fe.current,ve=await bk({resolveCloudAuthUrl:h,workspaceId:s,cursor:ke,bootstrap:ot,ensureCloudWorkspaceReadyForSync:v,maxPages:20,repairMode:ze?.repairMode===!0||me.current===!0,onPagePulled:()=>{Qe.current=Date.now()},onChangesApplied:()=>{Qe.current=Date.now()}});if(!ve.success){if(ve.kind==="pull_http"&&ve.status===401)return await S("pull",401),!1;if(ve.kind==="apply_auth")return await S("apply",401),!1;let kt=ve.kind==="apply_payload"||ve.kind==="apply_all_candidates"||ve.kind==="exception"?String(ve.error||"Workspace sync apply failed."):`Workspace sync pull failed (${ve.status||0})`;return ve.status===413&&(kt="Local sync failed because the downloaded payload is too large. This usually happens when the workspace contains massive attachments."),ee("error"),Be(kt),l(kt),rt(new Date().toISOString()),F(s,{eventType:ve.kind?.startsWith("apply")?"apply":"pull",status:"error",statusCode:ve.status,errorMessage:kt,requestMs:ve.pullRequestMs,details:{pages:ve.pages,applyMs:ve.applyMs,...ve.serverDiagnostics?{serverPullDiagnostics:ve.serverDiagnostics}:{}}}),ve.transient||ve.hasTransientApplyFailure||lo(ve.status)?P(ve.retryAfterMs):b({phase:"error",lastErrorMessage:kt}),!1}Array.isArray(ve.emittedEventIds)&&Z(ve.emittedEventIds,{ttlMs:6e4}),ve.pulledDeleteTaskIds.size>0&&(tt(kt=>kt.filter(J=>!ve.pulledDeleteTaskIds.has(String(J.id||"")))),xt(kt=>kt.filter(J=>!ve.pulledDeleteTaskIds.has(String(J.id||"")))));const Re=Array.isArray(ve.documentDecryptFailures)?ve.documentDecryptFailures.filter(kt=>String(kt||"").trim().length>0):[];if(Re.length>0&&er("pull_document_decrypt_failures",{workspaceId:s,failureCount:Re.length}),Fe.current=ve.cursor||null,ve.appliedChanges>0&&(ve.pulledActiveUpserts||ve.pulledArchivedUpserts||ve.pulledTaskEventUpserts))try{await de()}catch{er("pull_local_refresh_failed",{workspaceId:s,appliedChanges:ve.appliedChanges})}y(),k();const vt=ve.syncedAt||new Date().toISOString();if(At(vt),It(0),ee("idle"),o==="attach-cloud"&&(Ye.current=!0,le.current=""),await j({phase:"active",pullCursor:Fe.current,lastPullAt:vt,lastSyncedAt:vt,lastErrorMessage:null}),F(s,{eventType:o==="attach-cloud"?"bootstrap":"pull",status:"success",changeCount:ve.appliedChanges,requestMs:ve.pullRequestMs,details:{pages:ve.pages,applyMs:ve.applyMs,...ve.serverDiagnostics?{serverPullDiagnostics:ve.serverDiagnostics}:{}}}),o==="attach-cloud")return await te(),await fe(),await $(),await q(),E(),!0;!ze?.forceCursorNull&&!ot&&!bt.current&&(bt.current=!0,window.setTimeout(()=>{qe.current||(qe.current=!0,ct({forceCursorNull:!0}).finally(()=>{qe.current=!1}))},250));const Oe=le.current||Y();return Oe&&Oe!==Ce.current&&(le.current="",window.setTimeout(()=>{Ve(Oe)},120)),!0}catch(Rt){const ot=String(Rt?.message||"").trim(),ke=ot?`Workspace sync pull failed. ${ot}`:"Workspace sync pull failed.";return ee("error"),Be(ke),l(ke),rt(new Date().toISOString()),P(),F(s,{eventType:"pull",status:"error",errorMessage:ke,requestMs:Date.now()-Nt}),er("pull_failed_exception",{workspaceId:s,elapsedMs:Date.now()-Nt,error:ot||null}),!1}finally{he.current=!1,He(Ae.current),se(s)}};return{pushWorkspaceChangesToCloud:Ve,pullWorkspaceChangesFromCloud:ct}}function mv(e,n,r,s,o){return e?n==="provision-local"?r?"Uploading this workspace to cloud for the first time.":"Preparing the first upload to cloud.":n==="attach-cloud"?r?"Pulling the cloud workspace into this device.":"Waiting for the first cloud pull into this device.":s?"Sync hit a temporary problem and will retry automatically.":o?"Sync needs attention before it can continue.":r?"Sync is currently running.":"Sync is healthy.":"Sync is turned off for this workspace."}function pv(e,n,r,s){return e?n==="provision-local"?"Keep this window open while the first upload finishes. If it seems stalled, press Sync.":n==="attach-cloud"?"Keep this window open for the first cloud pull. If it does not move, press Repair.":r?"Wait for the automatic retry, or press Sync to retry now.":s?"Press Sync to retry. If the same error keeps returning, press Repair.":"No action needed.":"Turn on sync when you are ready to back up this workspace."}const Zp={documents:!1,aiProfiles:!1,assets:!1,documentReviewSessions:!1,annotatedAttachmentSessions:!1};function fv(e){const{currentWorkspaceId:n,cloudAuthConfigured:r,runtimeMode:s,authSessionResolved:o,isAuthenticated:c,authUserId:i,projectName:u,resolveCloudAuthUrl:h,resolveWebSocketUrl:v,realtimeSyncEnabled:x,tasks:S,archivedTasks:y,deletedTasks:k=[],initiatives:w,workstreams:P,taxonomies:b,taxonomyState:j,setupState:F,globalTheme:B,locale:se,globalWeekStartsOn:K,themeUseGlobalDefault:te,setTasks:N,setArchivedTasks:fe,setAuthBlocked:$,setIsAuthenticated:q,checkAuthSession:de,setGlobalTheme:ue,setCurrentTheme:Y,setSetupState:E,setLocale:z,setGlobalWeekStartsOn:Z,fetchPlanningEntities:me}=e,G=a.useMemo(()=>nv(j),[j]),[Ae,he]=a.useState("disconnected"),[Ce,le]=a.useState(null),[be,Ie]=a.useState(null),[Ne,Fe]=a.useState(null),[D,I]=a.useState(null),[p,A]=a.useState(null),[_,M]=a.useState(!1),[H,R]=a.useState("idle"),[re,V]=a.useState(null),[ie,W]=a.useState(!1),[Q,ge]=a.useState(0),[Me,ye]=a.useState([]),[Ue,pt]=a.useState(""),Ye=a.useRef(S||[]),bt=a.useRef(y||[]),qe=a.useRef(w||[]),Qe=a.useRef(P||[]),$e=a.useRef([]),[He,ee]=a.useState([]),[Be,l]=a.useState(""),[rt,At]=a.useState(null),[jt,It]=a.useState(null),[tt,xt]=a.useState(0),[Ve,ct]=a.useState(null),ze=a.useRef([]),[at,Nt]=a.useState([]),[Rt,ot]=a.useState(""),ke=a.useRef([]),[ve,Re]=a.useState([]),[vt,Oe]=a.useState(""),kt=a.useRef([]),J=a.useRef([]),[Se,Ee]=a.useState([]),[Te,Ze]=a.useState(""),nt=a.useRef([]),[St,dt]=a.useState(Zp),[Et,Ut]=a.useState("degraded-fallback"),[Ht,un]=a.useState({accepted:0,duplicateDiscarded:0,outOfOrderDiscarded:0,invalidDiscarded:0,recoveryTriggered:0}),Zt=a.useRef(!1),Gt=a.useRef(null),ln=a.useRef(0),Zn=a.useRef(!1),nn=a.useRef(new Set),Dt=a.useRef(""),En=a.useRef(""),Dn=a.useRef(""),mn=a.useRef(""),rn=a.useRef(""),ae=a.useRef(""),xe=a.useRef(!1),We=a.useRef(null),wt=a.useRef(new Set),ft=a.useRef([]),Bt=a.useRef(()=>Promise.resolve(!1)),Vt=a.useRef(async()=>{}),en=a.useRef(null),Mt=a.useRef(null),Ln=a.useRef("idle"),qt=a.useCallback(()=>{Gt.current!==null&&(window.clearTimeout(Gt.current),Gt.current=null)},[]),Da=a.useCallback(C=>{if(typeof window>"u")return;qt();const _e=Math.max(1,Math.floor(ln.current)+1);ln.current=_e;const it=1500*2**Math.max(0,_e-1),Ct=Number.isFinite(Number(C))?Math.max(0,Math.floor(Number(C))):0,U=Math.max(Math.min(12e4,it),Ct);Gt.current=window.setTimeout(()=>{Gt.current=null,Vt.current({preferCloudOnFirstSync:!1})},U)},[qt]);a.useEffect(()=>{En.current="",Dn.current="",mn.current="",rn.current="",ae.current="",Fa.current="",Ot.current=!1,ye([]),pt(""),ze.current=[],ee([]),l(""),Nt([]),ot(""),kt.current=[],J.current=[],Re([]),Oe(""),nt.current=[],Ee([]),Ze(""),dt(Zp),A(null),I(null),ge(0),wt.current=new Set,ft.current=[],Un.current=new Map,ta.current=new Set,yr.current=new Map,gt.current=new Set,zn.current=new Map,Hn.current=new Set,sn.current=new Map,hn.current=new Set,an.current=new Map,qn.current=new Set,La.current=new Map,na.current=new Set,Sn.current=new Map,kr.current=new Set,tn.current=new Map,nr.current=new Set,Xt.current=new Map,pn.current=new Map,nr.current=new Set,Xt.current=new Map,pn.current=new Map,Wn.current=!1,br.current=!1;const C=rv(n,G);C&&(Un.current=C.taskWatermarks,yr.current=C.initiativeWatermarks,zn.current=C.workstreamWatermarks,an.current=C.documentWatermarks,La.current=C.assetWatermarks,Sn.current=C.documentReviewSessionWatermarks,tn.current=C.documentReviewCommentWatermarks,Xt.current=C.annotatedAttachmentSessionWatermarks,pn.current=C.taskEventWatermarks)},[n,G]);const zt=a.useCallback(C=>{dt(_e=>_e[C]?_e:{..._e,[C]:!0})},[]),yn=Object.values(St).every(Boolean),{workspaceRetryAt:Cn,isWorkspaceRetryPending:kn,workspacePushInFlightRef:Ft,workspacePullInFlightRef:Bn,workspaceLastPushedSignatureRef:Mn,workspacePendingSignatureRef:$n,workspaceLastPushedTaskIdsRef:_a,workspaceDeletedTaskIdsRef:Tt,workspaceDeletedTaskWatermarksRef:Jt,workspacePullCursorRef:Pa,clearWorkspaceRetry:In,scheduleWorkspaceRetry:Ma,persistWorkspaceSyncPatch:gr,applyWorkspaceSyncPatchLocally:sa,loadWorkspaceSyncState:Ur,applyWorkspaceSyncStateSnapshot:Ca,saveWorkspaceCloudSyncSettings:tr,acquireWorkspaceSyncLease:Xn,releaseWorkspaceSyncLease:Qn,forceClearWorkspaceSyncLease:ea}=Zk({currentWorkspaceId:n,setWorkspaceCloudSyncEnabled:M,setWorkspaceSyncPhase:R,setWorkspaceSyncSetupIntent:V,setWorkspaceLastPullAt:Ie,setWorkspaceLastPushAt:Fe,setWorkspaceLastErrorMessage:A}),Rr=a.useCallback(C=>{(C.phase==="attach-cloud"||C.phase==="provision-local")&&(Ln.current=C.phase,en.current===null&&(en.current=Date.now()),Mt.current=null),Ca(C)},[Ca]),Un=a.useRef(new Map),ta=a.useRef(new Set),yr=a.useRef(new Map),gt=a.useRef(new Set),zn=a.useRef(new Map),Hn=a.useRef(new Set),sn=a.useRef(new Map),hn=a.useRef(new Set),an=a.useRef(new Map),qn=a.useRef(new Set),La=a.useRef(new Map),na=a.useRef(new Set),Sn=a.useRef(new Map),kr=a.useRef(new Set),tn=a.useRef(new Map),nr=a.useRef(new Set),Xt=a.useRef(new Map),pn=a.useRef(new Map),Ba=a.useRef(!1),Wn=a.useRef(!1),Wa=a.useRef(!1),Fa=a.useRef(""),Ot=a.useRef(!1),vr=3e4,Oa=x?3e4:15e3,Er=Math.max(3e4,Oa),zr=a.useMemo(()=>{const C=be?Date.parse(be):NaN,_e=Ne?Date.parse(Ne):NaN;return Number.isFinite(C)&&Number.isFinite(_e)?C>=_e?be:Ne:Number.isFinite(C)?be:Number.isFinite(_e)?Ne:null},[be,Ne]),$a=a.useMemo(()=>_?ie||H==="provision-local"||H==="attach-cloud"?"syncing":Cn||p||H==="error"?"attention":"healthy":"off",[_,ie,H,Cn,p]),Ua=a.useMemo(()=>mv(_,H,ie,Cn,p),[_,H,ie,Cn,p]),pa=a.useMemo(()=>pv(_,H,Cn,p),[_,H,Cn,p]),Aa=a.useCallback(C=>{const _e=String(C||"").trim();if(!_e)return null;const Ct=Vp()[_e]?.updatedAt;return typeof Ct=="string"&&Ct.trim().length>0?Ct.trim():null},[]),ar=a.useCallback((C,_e)=>{const it=String(C||"").trim(),Ct=String(_e||"").trim();if(!it||!Ct)return;const U=Vp();U[it]={updatedAt:Ct},tv(U)},[]),Fn=a.useCallback(()=>{const C=F?.mode==="operations"?"operations":"core";return{theme:B,operatingMode:C,localization:{locale:se,weekStartsOn:K}}},[B,F?.mode,se,K]),Hr=a.useCallback(async C=>{if(!(!C||typeof C!="object")){Zn.current=!0;try{const _e={},it=vc(C.theme);if(it&&(ue(it),te&&Y(it),_e.theme=it),(C.operatingMode==="core"||C.operatingMode==="operations")&&(E(Ct=>Ct&&{...Ct,mode:C.operatingMode}),_e.setup={mode:C.operatingMode}),C.localization&&typeof C.localization=="object"){const Ct={};if(typeof C.localization.locale=="string"&&C.localization.locale.trim().length>0){const je=Kf(C.localization.locale.trim());z(je)}const U=String(C.localization.weekStartsOn||"").trim().toLowerCase();(U==="sunday"||U==="monday")&&(Z(U),Ct.weekStartsOn=U),Object.keys(Ct).length>0&&(_e.schedulePreferences=Ct)}Object.keys(_e).length>0&&await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify(_e)})}finally{Zn.current=!1}}},[te,ue,Y,E,z,Z]),An=a.useCallback(async C=>{const _e=C?.preferCloudOnFirstSync!==!1;if(!r)return;if(s!=="local"||!c){qt(),ln.current=0,he("disconnected");return}const it=String(i||"").trim();if(!it||it==="anonymous"){qt(),ln.current=0,he("disconnected");return}if(!Zt.current){he("syncing"),le(null),Zt.current=!0;try{const Ct=await xk({resolveCloudAuthUrl:h,userId:it,preferCloudOnFirstSync:_e,getLocalUpdatedAt:Aa,buildLocalSettings:Fn,applyRemoteSettings:Hr});if(!Ct.success){he("error"),Ct.transient?(le(Ct.error||"Sync failed temporarily. Retrying automatically."),Da(Ct.retryAfterMs)):(qt(),ln.current=0,le(Ct.error||"Sync failed."));return}qt(),ln.current=0;const U=String(Ct.updatedAt||"").trim()||new Date().toISOString();ar(it,U),he("idle"),le(null),nn.current.add(it),Ct.mode==="pulled"&&(Dt.current="")}catch{he("error"),le("Sync failed temporarily. Retrying automatically."),Da()}finally{Zt.current=!1}}},[r,s,c,i,h,Aa,Fn,Hr,ar,qt,Da]);a.useEffect(()=>{Vt.current=An},[An]),a.useEffect(()=>()=>{qt()},[qt]);const Sr=a.useCallback(()=>{A(null),I(null)},[]),rr=a.useCallback(C=>{A(Gp),I(new Date().toISOString()),he("error"),le(Gp),er("workspace_sync_window_contention",{workspaceId:n,operation:C})},[n]),sr=a.useCallback(async C=>{try{return await gr(C)}catch{return sa(C)}},[sa,gr]),oa=a.useCallback(C=>{sr(C).catch(()=>{})},[sr]),wr=a.useCallback(C=>{Ma(()=>Bt.current(),{minDelayMs:C})},[Ma]);a.useEffect(()=>{ov({workspaceSyncPhase:H,lastBootstrapPhaseRef:Ln,bootstrapPhaseStartedAtRef:en,bootstrapLastProgressAtRef:Mt})},[H]),a.useEffect(()=>iv({currentWorkspaceId:n,workspaceCloudSyncEnabled:_,workspaceSyncPhase:H,workspacePullInFlightRef:Bn,workspacePushInFlightRef:Ft,bootstrapPhaseStartedAtRef:en,bootstrapLastProgressAtRef:Mt,setWorkspaceLastErrorMessage:C=>A(C),setWorkspaceLastErrorAt:C=>I(C),setUserGlobalSyncStatus:he,setUserGlobalSyncError:C=>le(C),setWorkspaceSyncBusy:W,persistWorkspaceSyncPatchSafely:oa}),[n,_,H,oa,Bn,Ft]);const Ta=a.useCallback(async()=>vk({cloudAuthConfigured:r,runtimeMode:s,isAuthenticated:c,resolveCloudAuthUrl:h,workspaceId:n,workspaceName:u||n,allowProvisionOnMismatch:H!=="attach-cloud"}),[r,s,c,h,n,u,H]);a.useEffect(()=>{Ye.current=S||[]},[S]),a.useEffect(()=>{bt.current=y||[]},[y]),a.useEffect(()=>{Jt.current=new Map((k||[]).map(C=>[String(C?.taskId||"").trim(),String(C?.deletedAt||"").trim()]).filter(([C,_e])=>C.length>0&&Number.isFinite(Date.parse(_e))))},[k,Jt]),a.useEffect(()=>{qe.current=w||[]},[w]),a.useEffect(()=>{Qe.current=P||[]},[P]);const Gr=a.useRef(!1),br=a.useRef(!1),or=a.useCallback(C=>{const _e=C?.forceAllAiProfiles===!0;return Lk({tasks:Ye.current,archivedTasks:bt.current,taskEvents:Qd(Ye.current,bt.current),lastPushedTaskIds:_a.current,pendingDeletedTaskIds:Tt.current,pendingDeletedTaskWatermarks:Jt.current,initiatives:qe.current,workstreams:Qe.current,taxonomies:b||[],taxonomyState:j,lastPushedInitiativeIds:ta.current,lastPushedInitiativeWatermarks:yr.current,lastPushedWorkstreamIds:gt.current,lastPushedWorkstreamWatermarks:zn.current,aiProfiles:ze.current,lastPushedAiProfileIds:_e?new Set:Hn.current,lastPushedAiProfileWatermarks:_e?new Map:sn.current,documents:$e.current,assets:ke.current,documentReviewSessions:kt.current,documentReviewComments:J.current,annotatedAttachmentSessions:nt.current,lastPushedDocumentPaths:hn.current,lastPushedDocumentWatermarks:an.current,lastPushedAssetPaths:qn.current,lastPushedAssetWatermarks:La.current,lastPushedDocumentReviewSessionIds:na.current,lastPushedDocumentReviewSessionWatermarks:Sn.current,lastPushedDocumentReviewCommentIds:kr.current,lastPushedDocumentReviewCommentWatermarks:tn.current,lastPushedAnnotatedAttachmentSessionIds:nr.current,lastPushedAnnotatedAttachmentSessionWatermarks:Xt.current,lastPushedTaskEventWatermarks:pn.current,lastPushedWatermarks:Un.current})},[b,j]),Vr=a.useCallback((C,_e)=>{s==="local"&&fetch("/api/taskforce/sync/events",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({..._e,workspaceId:C})}).catch(it=>{er("sync_event_post_failed",{workspaceId:C,eventType:_e.eventType,status:_e.status,error:String(it?.message||it||"")})})},[s]),Pn=a.useCallback(()=>Bk({workspaceId:n,tasks:Ye.current,archivedTasks:bt.current,taskEvents:Qd(Ye.current,bt.current),pendingDeletedTaskIds:Tt.current,initiatives:qe.current,workstreams:Qe.current,taxonomies:b||[],aiProfiles:ze.current,documents:$e.current,assets:ke.current,documentReviewSessions:kt.current,documentReviewComments:J.current,annotatedAttachmentSessions:nt.current}),[n,b,j]),ir=a.useMemo(()=>JSON.stringify({tasks:(S||[]).map(C=>({id:String(C.id||"").trim(),updatedAt:String(C.updatedAt||C.createdAt||"").trim(),status:String(C.status||"").trim(),referenceNumber:C.referenceNumber??null,localReferenceNumber:C.localReferenceNumber??null})).sort((C,_e)=>C.id.localeCompare(_e.id)),archivedTasks:(y||[]).map(C=>({id:String(C.id||"").trim(),updatedAt:String(C.updatedAt||C.createdAt||"").trim(),status:String(C.status||"").trim(),referenceNumber:C.referenceNumber??null,localReferenceNumber:C.localReferenceNumber??null})).sort((C,_e)=>C.id.localeCompare(_e.id)),initiatives:(w||[]).map(C=>({id:String(C.id||"").trim(),updatedAt:String(C.updatedAt||C.createdAt||"").trim(),isArchived:!!C.isArchived})).sort((C,_e)=>C.id.localeCompare(_e.id)),workstreams:(P||[]).map(C=>({id:String(C.id||"").trim(),updatedAt:String(C.updatedAt||C.createdAt||"").trim(),initiativeId:typeof C.initiativeId=="string"?C.initiativeId.trim():"",isArchived:!!C.isArchived})).sort((C,_e)=>C.id.localeCompare(_e.id)),taskEvents:Qd(S||[],y||[]).map(C=>({id:String(C.id||"").trim(),taskId:String(C.taskId||"").trim(),createdAt:String(C.createdAt||"").trim(),action:String(C.action||"").trim()})).sort((C,_e)=>C.id.localeCompare(_e.id)),taxonomies:Array.isArray(b)?b:[],taxonomyState:j&&typeof j=="object"?j:null}),[S,y,w,P,b,j]),Ia=a.useMemo(()=>{const C=[];for(const _e of S||[]){const it=Array.isArray(_e.attachments)?_e.attachments.length:0;it>0&&C.push(`${_e.id}:${it}`)}return C.join("|")},[S]),ia=a.useCallback(C=>{if(!C)return!1;if(Ot.current)return Ot.current=!1,Fa.current=C,Mn.current=C,ge(0),!0;const _e=Fa.current;return _e?C===_e?(Mn.current=C,ge(0),!0):(Fa.current="",!1):!1},[]),fa=a.useCallback(async()=>{if(s==="local"&&Bo(n)&&!(r&&(!o||!c)))try{const C=await fetch(`/api/taskforce/sync/workspace/documents?workspaceId=${encodeURIComponent(n)}`,{method:"GET",credentials:"include"});if(!C.ok)return;const _e=await C.json().catch(()=>({})),it=Array.isArray(_e?.documents)?_e.documents.map(U=>({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,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"})).filter(U=>U.path.length>0):[],Ct=typeof _e?.fingerprint=="string"?_e.fingerprint:JSON.stringify(it.map(U=>`${U.path}:${U.updatedAt}:${U.content.length}`).sort());if(Ct===En.current)return;En.current=Ct,$e.current=it,ye(it),pt(Ct)}catch(C){er("documents_snapshot_refresh_failed",{workspaceId:n,error:String(C?.message||C||"")})}finally{zt("documents")}},[s,n,r,o,c,zt]),za=a.useCallback(async()=>{if(s!=="local"){ct("runtime-not-local");return}if(!Bo(n)){ct("workspace-id-invalid");return}if(r&&(!o||!c)){ct(o?"auth-required":"auth-unresolved");return}ct(null);try{const C=await fetch(`/api/taskforce/sync/workspace/ai-profiles?workspaceId=${encodeURIComponent(n)}`,{method:"GET",credentials:"include"});if(!C.ok){It(`HTTP ${C.status}`),At(new Date().toISOString());return}const _e=await C.json().catch(()=>({})),it=Array.isArray(_e?.aiProfiles)?_e.aiProfiles:[];xt(it.length);const Ct=Array.isArray(_e?.aiProfiles)?_e.aiProfiles.map(je=>ev(je)).filter(je=>je.id.length>0&&je.workspaceId.length>0):[];It(null),At(new Date().toISOString());const U=typeof _e?.fingerprint=="string"?_e.fingerprint:JSON.stringify(Ct.map(je=>`${je.id}:${je.updatedAt}:${je.name}:${je.username}`).sort());if(U===Dn.current)return;Dn.current=U,ze.current=Ct,ee(Ct),l(U)}catch(C){It(String(C?.message||C||"unknown-error")),At(new Date().toISOString()),er("ai_profiles_snapshot_refresh_failed",{workspaceId:n,error:String(C?.message||C||"")})}finally{zt("aiProfiles")}},[s,n,r,o,c,zt]),De=a.useCallback(async()=>{if(s==="local"&&Bo(n)&&!(r&&(!o||!c)))try{const C=await fetch(`/api/taskforce/sync/workspace/assets?workspaceId=${encodeURIComponent(n)}`,{method:"GET",credentials:"include"});if(!C.ok)return;const _e=await C.json().catch(()=>({})),it=Array.isArray(_e?.assets)?_e.assets.map(U=>({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,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"})).filter(U=>U.path.length>0&&U.contentBase64.length>0):[],Ct=typeof _e?.fingerprint=="string"?_e.fingerprint:JSON.stringify(it.map(U=>`${U.path}:${U.updatedAt}:${U.contentBase64.length}`).sort());if(Ct===mn.current)return;mn.current=Ct,ke.current=it,Nt(it),ot(Ct)}catch(C){er("assets_snapshot_refresh_failed",{workspaceId:n,error:String(C?.message||C||"")})}finally{zt("assets")}},[s,n,r,o,c,zt]),_t=a.useCallback(async()=>{if(s==="local"&&Bo(n)&&!(r&&(!o||!c)))try{const C=await fetch(`/api/taskforce/sync/workspace/document-reviews?workspaceId=${encodeURIComponent(n)}`,{method:"GET",credentials:"include"});if(!C.ok)return;const _e=await C.json().catch(()=>({})),it=Array.isArray(_e?.sessions)?_e.sessions.map(je=>({id:String(je?.id||"").trim(),assetId:String(je?.assetId||"").trim(),documentId:typeof je?.documentId=="string"&&je.documentId.trim().length>0?je.documentId.trim():null,documentVersion:Number.isFinite(Number(je?.documentVersion))?Math.max(1,Math.floor(Number(je.documentVersion))):null,title:typeof je?.title=="string"&&je.title.trim().length>0?je.title.trim():null,status:je?.status==="resolved"?"resolved":"open",comments:Array.isArray(je?.comments)?je.comments:[],createdByActorId:typeof je?.createdByActorId=="string"&&je.createdByActorId.trim().length>0?je.createdByActorId.trim():null,updatedByActorId:typeof je?.updatedByActorId=="string"&&je.updatedByActorId.trim().length>0?je.updatedByActorId.trim():null,createdAt:String(je?.createdAt||"").trim(),updatedAt:String(je?.updatedAt||je?.createdAt||"").trim(),deletedAt:typeof je?.deletedAt=="string"&&je.deletedAt.trim().length>0?je.deletedAt.trim():null})).filter(je=>je.id.length>0&&je.assetId.length>0):[],Ct=Array.isArray(_e?.comments)?_e.comments.map(je=>({id:String(je?.id||"").trim(),sessionId:String(je?.sessionId||"").trim(),body:typeof je?.body=="string"?je.body:"",anchor:je?.anchor??null,order:Number.isFinite(Number(je?.order))?Math.max(0,Math.floor(Number(je.order))):0,authorActorId:typeof je?.authorActorId=="string"&&je.authorActorId.trim().length>0?je.authorActorId.trim():null,createdAt:String(je?.createdAt||"").trim(),updatedAt:String(je?.updatedAt||je?.createdAt||"").trim(),deletedAt:typeof je?.deletedAt=="string"&&je.deletedAt.trim().length>0?je.deletedAt.trim():null})).filter(je=>je.id.length>0&&je.sessionId.length>0):av(it),U=typeof _e?.fingerprint=="string"?_e.fingerprint:JSON.stringify([...it.map(je=>`${je.id}:${je.updatedAt}:${je.status}:${je.deletedAt||""}:${je.comments.length}`).sort(),...Ct.map(je=>`${je.id}:${je.sessionId}:${je.updatedAt}:${je.deletedAt||""}`).sort()]);if(U===rn.current)return;rn.current=U,kt.current=it,J.current=Ct,Re(it),Oe(U)}catch(C){er("document_review_sessions_snapshot_refresh_failed",{workspaceId:n,error:String(C?.message||C||"")})}finally{zt("documentReviewSessions")}},[s,n,r,o,c,zt]),on=a.useCallback(async()=>{if(s==="local"&&Bo(n)&&!(r&&(!o||!c)))try{const C=await fetch(`/api/taskforce/sync/workspace/annotated-attachments?workspaceId=${encodeURIComponent(n)}`,{method:"GET",credentials:"include"});if(!C.ok)return;const _e=await C.json().catch(()=>({})),it=Array.isArray(_e?.sessions)?_e.sessions.map(U=>({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.id.length>0&&U.workspaceId.length>0&&U.taskId.length>0&&U.baseImageAssetId.length>0):[],Ct=typeof _e?.fingerprint=="string"?_e.fingerprint:JSON.stringify(it.map(U=>`${U.id}:${U.updatedAt}:${U.taskId}:${U.baseImageAssetId}:${U.annotations.length}:${U.deletedAt||""}`).sort());if(Ct===ae.current)return;ae.current=Ct,nt.current=it,Ee(it),Ze(Ct)}catch(C){er("annotated_attachment_sessions_snapshot_refresh_failed",{workspaceId:n,error:String(C?.message||C||"")})}finally{zt("annotatedAttachmentSessions")}},[s,n,r,o,c,zt]),Nn=a.useCallback(()=>{hn.current=new Set($e.current.map(C=>String(C?.path||"").trim()).filter(C=>C.length>0)),an.current=new Map($e.current.map(C=>[String(C?.path||"").trim(),String(C?.updatedAt||"").trim()]).filter(([C])=>C.length>0)),qn.current=new Set(ke.current.map(C=>String(C?.path||"").trim()).filter(C=>C.length>0)),La.current=new Map(ke.current.map(C=>[String(C?.path||"").trim(),String(C?.updatedAt||"").trim()]).filter(([C])=>C.length>0)),na.current=new Set(kt.current.map(C=>String(C?.id||"").trim()).filter(C=>C.length>0)),Sn.current=new Map(kt.current.map(C=>[String(C?.id||"").trim(),String(C?.updatedAt||C?.createdAt||"").trim()]).filter(([C])=>C.length>0)),kr.current=new Set(J.current.map(C=>String(C?.id||"").trim()).filter(C=>C.length>0)),tn.current=new Map(J.current.map(C=>[String(C?.id||"").trim(),String(C?.updatedAt||C?.createdAt||"").trim()]).filter(([C])=>C.length>0)),nr.current=new Set(nt.current.map(C=>String(C?.id||"").trim()).filter(C=>C.length>0)),Xt.current=new Map(nt.current.map(C=>[String(C?.id||"").trim(),String(C?.updatedAt||C?.createdAt||"").trim()]).filter(([C])=>C.length>0)),pn.current=new Map(Qd(Ye.current,bt.current).map(C=>[String(C?.id||"").trim(),String(C?.createdAt||"").trim()]).filter(([C])=>C.length>0))},[]),Na=a.useCallback(async()=>{const[C,_e]=await Promise.all([fetch("/api/taskforce/tasks",{method:"GET",credentials:"include"}),fetch("/api/taskforce/archive",{method:"GET",credentials:"include"})]);if(C.ok){const it=await C.json().catch(()=>({})),Ct=Array.isArray(it?.tasks)?it.tasks.map(U=>co(U)):[];N(Ct)}if(_e.ok){const it=await _e.json().catch(()=>({})),Ct=Array.isArray(it?.archived)?it.archived.map(U=>({...co(U),isArchived:!0})):[];fe(Ct)}await me().catch(()=>{er("refresh_planning_entities_failed",{workspaceId:n})})},[n,me,fe,N]),{handleSyncAuthFailure:xr,ensureWorkspaceSyncReady:Ha}=a.useMemo(()=>sv({currentWorkspaceId:n,workspaceSyncPhase:H,clearWorkspaceRetry:In,setWorkspaceSyncBusy:W,setUserGlobalSyncStatus:he,setUserGlobalSyncError:C=>le(C),setWorkspaceLastErrorMessage:C=>A(C),setWorkspaceLastErrorAt:C=>I(C),reportSyncEvent:Vr,setAuthBlocked:$,setIsAuthenticated:q,checkAuthSession:de,ensureCloudWorkspaceReadyForSync:Ta,scheduleWorkspaceSyncRetry:wr,persistWorkspaceSyncPatchSafely:oa}),[n,H,In,Vr,$,q,de,Ta,wr,oa]),Dr=a.useMemo(()=>uv({cloudAuthConfigured:r,runtimeMode:s,workspaceCloudSyncEnabled:_,currentWorkspaceId:n,workspaceSyncPhase:H,taxonomyStateFingerprint:G,isAuthenticated:c,checkAuthSession:de,resolveCloudAuthUrl:h,ensureCloudWorkspaceReadyForSync:Ta,ensureWorkspaceSyncReady:Ha,handleSyncAuthFailure:xr,clearWorkspaceRetry:In,clearWorkspaceIssue:Sr,isWorkspaceRetryPending:kn,scheduleWorkspaceSyncRetry:wr,persistWorkspaceSyncPatchSafely:oa,persistWorkspaceSyncPatchBestEffort:sr,reportSyncEvent:Vr,acquireWorkspaceSyncLease:Xn,releaseWorkspaceSyncLease:Qn,reportWorkspaceWindowContention:rr,refreshWorkspaceSyncMarkdownDocumentsSnapshot:fa,refreshWorkspaceSyncAiProfilesSnapshot:za,refreshWorkspaceSyncAssetsSnapshot:De,refreshWorkspaceSyncDocumentReviewSessionsSnapshot:_t,refreshWorkspaceSyncAnnotatedAttachmentSessionsSnapshot:on,refreshLocalWorkspaceTaskCollections:Na,buildWorkspaceSyncPayload:or,buildWorkspaceSyncSignature:Pn,seedWorkspaceSnapshotPushBaseline:Nn,shouldSuppressAttachBootstrapPush:ia,recordSuppressedEventIds:(...C)=>Kt.current.recordSuppressedEventIds(...C),workspaceRepairModeRef:Wa,workspaceForceFullAiProfilePushRef:Gr,workspacePushInFlightRef:Ft,workspacePullInFlightRef:Bn,workspaceLastPushedSignatureRef:Mn,workspacePendingSignatureRef:$n,workspaceLastPushedTaskIdsRef:_a,workspaceDeletedTaskIdsRef:Tt,workspaceDeletedTaskWatermarksRef:Jt,workspacePullCursorRef:Pa,workspaceLastPushedWatermarksRef:Un,workspaceLastPushedInitiativeIdsRef:ta,workspaceLastPushedInitiativeWatermarksRef:yr,workspaceLastPushedWorkstreamIdsRef:gt,workspaceLastPushedWorkstreamWatermarksRef:zn,workspaceLastPushedAiProfileIdsRef:Hn,workspaceLastPushedAiProfileWatermarksRef:sn,workspaceLastPushedDocumentPathsRef:hn,workspaceLastPushedDocumentWatermarksRef:an,workspaceLastPushedAssetPathsRef:qn,workspaceLastPushedAssetWatermarksRef:La,workspaceLastPushedDocumentReviewSessionIdsRef:na,workspaceLastPushedDocumentReviewSessionWatermarksRef:Sn,workspaceLastPushedDocumentReviewCommentIdsRef:kr,workspaceLastPushedDocumentReviewCommentWatermarksRef:tn,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:nr,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:Xt,workspaceLastPushedTaskEventWatermarksRef:pn,workspaceCaptureAttachBootstrapBaselineRef:Ot,workspaceStartupFullReconcileRanRef:Wn,workspaceFullReconcileInFlightRef:br,bootstrapLastProgressAtRef:Mt,realtimeSuppressedEventQueueRef:ft,setWorkspaceSyncBusy:W,setUserGlobalSyncStatus:he,setUserGlobalSyncError:le,setWorkspaceLastErrorMessage:A,setWorkspaceLastErrorAt:I,setWorkspaceLastPullAt:Ie,setWorkspaceLastPushAt:Fe,setWorkspaceSyncPendingChanges:ge,setTasks:N,setArchivedTasks:fe}),[r,s,_,n,H,G,c,de,h,Ta,Ha,xr,In,Sr,wr,oa,sr,Vr,Xn,Qn,rr,fa,za,De,_t,on,Na,or,Pn,Nn,ia,N,fe]),{pushWorkspaceChangesToCloud:ha,pullWorkspaceChangesFromCloud:ga}=Dr,Kt=a.useRef({handleRealtimeSignal:()=>{},recordSuppressedEventIds:()=>{},clearRealtimePullDebounce:()=>{}}),cr=a.useMemo(()=>lv({cloudAuthConfigured:r,runtimeMode:s,workspaceCloudSyncEnabled:_,workspaceSyncPhase:H,workspacePullInFlightRef:Bn,realtimePullDebounceRef:We,realtimeSuppressedEventIdsRef:wt,clearWorkspaceRetry:In,isWorkspaceRetryPending:kn,pullWorkspaceChangesFromCloud:ga}),[r,s,_,H,In,kn,ga]);Kt.current=cr;const ws=v("/taskforce-ws"),O=String(i||"").trim(),$t=ch({enabled:!!(x&&r&&s==="local"&&_&&o&&c&&O&&O!=="anonymous"&&ws),workspaceId:n,websocketUrl:ws,onSignal:cr.handleRealtimeSignal,onTelemetry:un,userId:O||void 0});a.useEffect(()=>{Ut($t.connectionState)},[$t.connectionState]),a.useEffect(()=>()=>cr.clearRealtimePullDebounce(),[cr]);const Pt=a.useCallback(async C=>tr(C,{cloudAuthConfigured:r,isAuthenticated:c,ensureCloudWorkspaceReadyForSync:Ta}),[tr,r,c,Ta]),Kn=a.useCallback(async()=>{await An({preferCloudOnFirstSync:!1})},[An]),Ga=a.useMemo(()=>dv({currentWorkspaceId:n,taxonomyStateFingerprint:G,workspaceCloudSyncEnabled:_,workspaceSyncPhase:H,workspaceLastPullAt:be,lastBootstrapPhaseRef:Ln,workspaceRepairModeRef:Wa,workspaceForceFullAiProfilePushRef:Gr,workspaceStartupRepairRanRef:Ba,workspaceStartupFullReconcileRanRef:Wn,workspaceFullReconcileInFlightRef:br,workspacePullCursorRef:Pa,workspaceAttachBootstrapBaselineSignatureRef:Fa,workspaceCaptureAttachBootstrapBaselineRef:Ot,workspacePendingSignatureRef:$n,workspaceLastPushedSignatureRef:Mn,workspaceLastPushedWatermarksRef:Un,workspaceLastPushedInitiativeIdsRef:ta,workspaceLastPushedInitiativeWatermarksRef:yr,workspaceLastPushedWorkstreamIdsRef:gt,workspaceLastPushedWorkstreamWatermarksRef:zn,workspaceLastPushedAiProfileIdsRef:Hn,workspaceLastPushedAiProfileWatermarksRef:sn,workspaceLastPushedDocumentPathsRef:hn,workspaceLastPushedDocumentWatermarksRef:an,workspaceLastPushedAssetPathsRef:qn,workspaceLastPushedAssetWatermarksRef:La,workspaceLastPushedDocumentReviewSessionIdsRef:na,workspaceLastPushedDocumentReviewSessionWatermarksRef:Sn,workspaceLastPushedDocumentReviewCommentIdsRef:kr,workspaceLastPushedDocumentReviewCommentWatermarksRef:tn,workspaceLastPushedAnnotatedAttachmentSessionIdsRef:nr,workspaceLastPushedAnnotatedAttachmentSessionWatermarksRef:Xt,workspaceLastPushedTaskEventWatermarksRef:pn,bootstrapPhaseStartedAtRef:en,bootstrapLastProgressAtRef:Mt,acquireWorkspaceSyncLease:Xn,releaseWorkspaceSyncLease:Qn,forceClearWorkspaceSyncLease:ea,clearWorkspaceRetry:In,clearWorkspaceIssue:Sr,reportWorkspaceWindowContention:rr,persistWorkspaceSyncPatch:gr,buildWorkspaceSyncSignature:Pn,pullWorkspaceChangesFromCloud:ga,pushWorkspaceChangesToCloud:ha,cloudAuthConfigured:r,runtimeMode:s,isAuthenticated:c,checkAuthSession:de}),[n,G,_,H,be,Xn,Qn,ea,In,Sr,rr,gr,Pn,ga,ha,r,s,c,de]),{retryWorkspaceCloudSync:Gn,resetWorkspaceSyncCursorAndPull:ja}=Ga,Va=a.useCallback(()=>({workspaceId:n,enabled:_,phase:H,status:$a,summary:Ua,lastSuccessfulSyncAt:zr,lastPullAt:be,lastPushAt:Ne,lastErrorAt:D,pendingChanges:Q,lastErrorMessage:p,recommendedAction:pa,documentSnapshotCount:Me.length,aiProfileSnapshotCount:He.length,aiProfileSnapshotRawCount:tt,aiProfileSnapshotLastFetchAt:rt,aiProfileSnapshotLastFetchError:jt,aiProfileSnapshotLastSkipReason:Ve,assetSnapshotCount:at.length,documentReviewSessionSnapshotCount:ve.length,documentReviewSessionSnapshotFingerprint:vt,annotatedAttachmentSessionSnapshotCount:Se.length,annotatedAttachmentSessionSnapshotFingerprint:Te,lastPushedAiProfileCount:Hn.current.size,lastPushedAiProfileWatermarkCount:sn.current.size,forceFullAiProfilePushQueued:Gr.current===!0}),[n,_,H,$a,Ua,zr,be,Ne,D,Q,p,pa,Me.length,He.length,tt,rt,jt,Ve,at.length,ve.length,vt,Se.length,Te]);a.useEffect(()=>{Bt.current=Gn},[Gn]);const Zr=a.useCallback(()=>{fa(),De()},[fa,De]);return a.useEffect(()=>{if(!r||s!=="local"||!_||!o||!c)return;fa(),za(),De(),_t(),on();const C=ca=>{const wn=ca.detail;(String(wn?.workspaceId||"").trim()||"default")===n&&Zr()};window.addEventListener(Om,C);const _e=window.setInterval(()=>{fa()},vr),it=window.setInterval(()=>{za()},vr),Ct=window.setInterval(()=>{De()},vr),U=window.setInterval(()=>{_t()},vr),je=window.setInterval(()=>{on()},vr);return()=>{window.removeEventListener(Om,C),window.clearInterval(_e),window.clearInterval(it),window.clearInterval(Ct),window.clearInterval(U),window.clearInterval(je)}},[r,s,_,o,c,n,Zr,fa,za,De,_t,on,vr]),a.useEffect(()=>{!r||s!=="local"||!_||!o||!c||Ia&&Zr()},[r,s,_,o,c,Ia,Zr]),a.useEffect(()=>{if(!r||s!=="local"||!_||!o||H==="attach-cloud"||!yn)return;const C=Pn();if(ia(C)||!C||C===Mn.current)return;const _e=or();if(ge(_e.changes.length),Ft.current||Bn.current){$n.current=C;return}const it=window.setTimeout(()=>{ha(C)},1500);return()=>window.clearTimeout(it)},[r,s,_,o,H,yn,Pn,ia,or,ir,Be,Ue,Rt,vt,Te,ha,Ft,Bn]),a.useEffect(()=>{if(!r||s!=="local"||!_||!o||H!=="active"||!yn)return;const C=window.setInterval(()=>{if(Ft.current||Bn.current||kn())return;const _e=$n.current||Pn();if(!_e||_e===Mn.current)return;const it=or();ge(it.changes.length),it.changes.length!==0&&ha(_e)},Er);return()=>window.clearInterval(C)},[r,s,_,o,H,yn,Pn,or,ha,kn,Er]),a.useEffect(()=>{r&&s==="local"&&_||(In(),W(!1))},[r,s,_,In]),a.useEffect(()=>{if(!r||s!=="local"||!_||!o||H==="provision-local"||H==="error"||kn())return;(H==="attach-cloud"||!be)&&ga();const _e=window.setInterval(()=>{ga()},Oa);return()=>{window.clearInterval(_e)}},[r,s,_,o,H,be,kn,ga,Oa]),a.useEffect(()=>{if(!r||s!=="local"||!_||!o||!c||H!=="active")return;const C=window.setInterval(()=>{br.current||(br.current=!0,ga({forceCursorNull:!0}).finally(()=>{br.current=!1}))},Xk);return()=>window.clearInterval(C)},[r,s,_,o,c,H,ga]),a.useEffect(()=>{s!=="local"||!c||!i||i==="anonymous"||An({preferCloudOnFirstSync:!0})},[s,c,i,An]),a.useEffect(()=>{if(s!=="local"||!c||!i||i==="anonymous"||!nn.current.has(i)||Zn.current)return;const C=Fn(),_e=JSON.stringify(C);if(!Dt.current){Dt.current=_e;return}if(_e===Dt.current)return;Dt.current=_e,ar(i,new Date().toISOString());const it=window.setTimeout(()=>{An({preferCloudOnFirstSync:!1})},350);return()=>window.clearTimeout(it)},[s,c,i,Fn,ar,An]),a.useEffect(()=>{!r||s!=="local"||!_||!o||!c||H==="provision-local"||H==="attach-cloud"||Ba.current||(Ba.current=!0,fetch("/api/taskforce/sync/workspace/repair-startup",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:n})}).then(async C=>{if(!C.ok)return;const _e=await C.json().catch(()=>({}));_e?.applied>0&&(er("startup_repair_applied",{workspaceId:n,applied:_e.applied,skipped:_e.skipped,failed:_e.failed}),fa(),za(),De(),_t())}).catch(()=>{}))},[r,s,_,o,c,H,n,fa,za,De,_t]),{userGlobalSyncStatus:Ae,setUserGlobalSyncStatus:he,userGlobalSyncError:Ce,setUserGlobalSyncError:le,workspaceLastPullAt:be,workspaceLastPushAt:Ne,workspaceLastErrorAt:D,workspaceLastErrorMessage:p,workspaceLastSuccessfulSyncAt:zr,workspaceCloudSyncEnabled:_,workspaceSyncPhase:H,workspaceSyncSetupIntent:re,workspaceSyncStatus:$a,workspaceSyncSummary:Ua,workspaceSyncRecommendedAction:pa,workspaceSyncBusy:ie,workspaceSyncPendingChanges:Q,syncInFlightRef:xe,workspaceRetryAt:Cn,isWorkspaceRetryPending:kn,workspacePushInFlightRef:Ft,workspacePullInFlightRef:Bn,workspaceLastPushedSignatureRef:Mn,workspacePendingSignatureRef:$n,workspaceLastPushedTaskIdsRef:_a,workspaceDeletedTaskIdsRef:Tt,workspaceDeletedTaskWatermarksRef:Jt,workspacePullCursorRef:Pa,clearWorkspaceRetry:In,persistWorkspaceSyncPatch:gr,loadWorkspaceSyncState:Ur,applyWorkspaceSyncStateSnapshot:Rr,syncUserGlobalSettings:An,buildWorkspaceSyncSignature:Pn,pushWorkspaceChangesToCloud:ha,pullWorkspaceChangesFromCloud:ga,saveWorkspaceCloudSyncSettings:Pt,retryUserGlobalSettingsSync:Kn,retryWorkspaceCloudSync:Gn,resetWorkspaceSyncCursorAndPull:ja,getWorkspaceSyncDiagnostics:Va}}function hv(e,n){return typeof n=="number"&&Number.isFinite(n)&&n>0?n:e==="error"?3600:2600}function gv(){const[e,n]=a.useState(null),r=a.useRef(null),s=a.useCallback(()=>{r.current!==null&&(window.clearTimeout(r.current),r.current=null),n(null)},[]),o=a.useCallback((c,i="info",u)=>{if(!c)return;r.current!==null&&(window.clearTimeout(r.current),r.current=null),n({message:c,tone:i,ttlMs:u});const h=hv(i,u);r.current=window.setTimeout(()=>{r.current=null,n(null)},h)},[]);return a.useEffect(()=>()=>{r.current!==null&&(window.clearTimeout(r.current),r.current=null)},[]),{uiNotice:e,pushNotice:o,clearNotice:s}}function yv({storagePath:e,shouldDeferProtectedApiCalls:n,shouldBlockProtectedApiCalls:r}){const[s,o]=a.useState("antigravity"),[c,i]=a.useState([]),[u,h]=a.useState(".agent/workflows"),[v,x]=a.useState(null),[S,y]=a.useState(null),k=a.useRef(null),w=n||r;a.useEffect(()=>{const F=c.find(B=>B.id===s);F&&h(F.directory)},[s,c]);const P=a.useCallback(()=>{typeof window>"u"||(k.current!==null&&window.clearTimeout(k.current),k.current=window.setTimeout(()=>{k.current=null,y(null)},5e3))},[]),b=a.useCallback(async()=>{if(w)return;const F=await fetch("/api/taskforce/environments");if(!F.ok)return;const B=await F.json().catch(()=>({}));B.environments&&i(B.environments)},[w]),j=a.useCallback(async(F,B)=>{x("workflows"),y(null);try{const K=await(await fetch("/api/taskforce/export-resources",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"workflows",environment:F,workflowNames:B,variables:{STORAGE_PATH:e.replace(/\/$/,"")||".Taskforce"}})})).json();K.success?y({type:"success",message:`Successfully exported ${K.count} workflows to ${F}`}):y({type:"error",message:K.error||"Export failed"})}catch{y({type:"error",message:"Network error exporting workflows"})}finally{x(null),P()}},[P,e]);return a.useEffect(()=>()=>{k.current!==null&&typeof window<"u"&&(window.clearTimeout(k.current),k.current=null)},[]),{exportEnvironment:s,setExportEnvironment:o,availableEnvironments:c,loadAvailableEnvironments:b,exportWorkflowsPath:u,setExportWorkflowsPath:h,exportingResource:v,exportResult:S,handleExportWorkflows:j}}function kv(e){const{resolveCloudAuthUrl:n,currentWorkspaceId:r,normalizedCloudAuthBaseUrl:s,normalizedCloudMcpBaseUrl:o,mergedConfig:c,availableWorkspaces:i,currentTheme:u,configLoaded:h,globalTheme:v,themeUseGlobalDefault:x,keyShortcut:S,jsonBackupEnabled:y,globalJsonBackupEnabled:k,globalWeekStartsOn:w,locale:P,supportedLocales:b,jsonBackupUseGlobalDefault:j,manualComplexityEnabled:F,checklistDropdownEnabled:B,showTaskCardStatusLabel:se,exportWorkflowsPath:K,exportingResource:te,exportResult:N,pathSaved:fe,settingsSection:$,exportEnvironment:q,setupState:de,buildInfo:ue,saveSetupMode:Y,saveWorkspaceProfile:E,setCurrentTheme:z,handleSaveTheme:Z,handleSaveGlobalTheme:me,setKeyShortcut:G,handleJsonBackupEnabledChange:Ae,handleSaveGlobalJsonBackupEnabled:he,handleSaveGlobalWeekStartsOn:Ce,handleSaveLocale:le,handleManualComplexityEnabledChange:be,handleChecklistDropdownEnabledChange:Ie,handleShowTaskCardStatusLabelChange:Ne,handleResetProjectToGlobal:Fe,handleSaveSettings:D,setExportWorkflowsPath:I,setExportEnvironment:p,availableWorkflows:A,initiativeTemplates:_,availableEnvironments:M,fetchWorkflows:H,fetchInitiativeTemplates:R,createInitiativeFromTemplate:re,fetchWorkflowTemplate:V,fetchWorkflowOverrideNames:ie,saveWorkflowTemplateDraft:W,resetWorkflowTemplateDraft:Q,handleExportWorkflows:ge,setShowFolderBrowser:Me,setBrowserTarget:ye,fetchFolders:Ue,activeCategories:pt,pathValidation:Ye,taxonomyDisplayLabels:bt,handleUpdateCategory:qe,handleRemoveCategory:Qe,handleSaveCategory:$e,handleAddPath:He,handleRemovePath:ee,handleUpdateCategoryIcon:Be,handleUpdateCategoryColor:l,activeTypes:rt,handleSaveType:At,handleRemoveType:jt,handleUpdateType:It,taxonomies:tt,handleUpdateTaxonomies:xt,priorities:Ve,handleUpdatePriorities:ct,analyzeSystemTaxonomyPack:ze,handleApplySystemTaxonomyPack:at,handleUpdateTaxonomyDisplayLabels:Nt,projectRoot:Rt,projectName:ot,mcpHostRoot:ke,serverHostRoot:ve,mcpScriptPath:Re,tenantId:vt,runtimeMode:Oe,workspaceSwitchingEnabled:kt,deleteWorkspace:J,setMcpHostRoot:Se,isAuthenticated:Ee}=e,Te=a.useCallback(async(nt,St)=>{const dt=n(nt),Et=new Headers(St?.headers||void 0);if(nt.startsWith("/api/taskforce/settings/mcp/")){const Ht=String(r||"").trim();Ht&&Ht!=="default"&&!Et.has("x-taskforce-workspace-id")&&Et.set("x-taskforce-workspace-id",Ht)}const Ut={...St,headers:Et,credentials:St?.credentials??"include"};if(typeof window<"u"&&/^https?:\/\//i.test(dt))try{new URL(dt,window.location.origin).origin!==window.location.origin&&Ut.mode===void 0&&(Ut.mode="cors")}catch{}return fetch(dt,Ut)},[r,n]),Ze=i.find(nt=>nt.id===r);return{fetchCloudAuthApi:Te,currentTheme:u,configLoaded:h,globalTheme:v,themeUseGlobalDefault:x,keyShortcut:S,jsonBackupEnabled:y,globalJsonBackupEnabled:k,globalWeekStartsOn:w,locale:P,supportedLocales:b,jsonBackupUseGlobalDefault:j,manualComplexityEnabled:F,checklistDropdownEnabled:B,showTaskCardStatusLabel:se,exportWorkflowsPath:K,exportingResource:te,exportResult:N,pathSaved:fe,initialSection:$,exportEnvironment:q,setupState:de,buildInfo:ue,onSaveSetupMode:Y,onSaveWorkspaceProfile:E,onThemeChange:z,onSaveTheme:Z,onSaveGlobalTheme:me,onKeyShortcutChange:G,onJsonBackupEnabledChange:Ae,onSaveGlobalJsonBackupEnabled:he,onSaveGlobalWeekStartsOn:Ce,onSaveLocale:le,onManualComplexityEnabledChange:be,onChecklistDropdownEnabledChange:Ie,onShowTaskCardStatusLabelChange:Ne,onResetProjectToGlobal:Fe,onSaveSettings:D,onExportWorkflowsPathChange:I,onExportEnvironmentChange:p,availableWorkflows:A,initiativeTemplates:_,availableEnvironments:M,onRefreshWorkflows:H,onRefreshInitiativeTemplates:R,onCreateInitiativeFromTemplate:re,onFetchWorkflowTemplate:V,onFetchWorkflowOverrideNames:ie,onSaveWorkflowTemplateDraft:W,onResetWorkflowTemplateDraft:Q,onExportWorkflows:ge,onShowFolderBrowserChange:Me,onBrowserTargetChange:ye,onFetchFolders:Ue,categories:pt,pathValidation:Ye,taxonomyDisplayLabels:bt,onUpdateCategory:qe,onRemoveCategory:Qe,onSaveCategory:$e,onAddPath:He,onRemovePath:ee,onUpdateCategoryIcon:Be,onUpdateCategoryColor:l,types:rt,onSaveType:At,onRemoveType:jt,onUpdateType:It,taxonomies:tt,onUpdateTaxonomies:xt,priorities:Ve,onUpdatePriorities:ct,onAnalyzeSystemTaxonomyPack:ze,onApplySystemTaxonomyPack:at,onUpdateTaxonomyDisplayLabels:Nt,projectRoot:Rt,projectName:ot,mcpHostRoot:ke,serverHostRoot:ve,mcpScriptPath:Re,tenantId:vt,workspaceId:r,runtimeMode:Oe,cloudAuthBaseUrl:s||c.cloudAuthBaseUrl,cloudMcpBaseUrl:o||void 0,workspaceSwitchingEnabled:kt,currentWorkspaceRole:Ze?.role||"member",currentWorkspaceName:String(Ze?.name||""),onDeleteWorkspace:J,onMcpHostRootChange:Se,isAuthenticated:Ee}}function vv(e){const{keyShortcut:n,themeUseGlobalDefault:r,runtimeMode:s,jsonBackupUseGlobalDefault:o,globalTheme:c,globalJsonBackupEnabled:i,setCurrentTheme:u,setThemeUseGlobalDefault:h,setGlobalTheme:v,setJsonBackupEnabled:x,setJsonBackupUseGlobalDefault:S,setGlobalJsonBackupEnabled:y,setGlobalWeekStartsOn:k,setLocale:w,setManualComplexityEnabled:P,setChecklistDropdownEnabled:b,setShowTaskCardStatusLabel:j,setShowChecklist:F}=e,B=a.useCallback(async()=>{try{const E=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shortcut:n})});if(!E.ok)throw new Error(`Failed to save global settings (${E.status})`);return!0}catch{return console.error("[Taskforce] Failed to save shortcut"),!1}},[n]),se=a.useCallback(async E=>{u(E),h(!1);try{const z=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:E})});if(!z.ok)throw new Error(`Failed to save config (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project theme"),!1}},[u,h]),K=a.useCallback(async E=>{v(E),r&&u(E);try{const z=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:E})});if(!z.ok)throw new Error(`Failed to save global settings (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global theme"),!1}},[v,r,u]),te=a.useCallback(async E=>{if(s==="cloud")return x(!1),S(!1),!1;x(E),S(!1);try{const z=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:E})});if(!z.ok)throw new Error(`Failed to save config (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save project backup setting"),!1}},[s,x,S]),N=a.useCallback(async E=>{if(s==="cloud")return y(!1),o&&x(!1),!1;y(E),o&&x(E);try{const z=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonBackupEnabled:E})});if(!z.ok)throw new Error(`Failed to save global settings (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save global backup setting"),!1}},[s,y,o,x]),fe=a.useCallback(async E=>{k(E);try{const z=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({schedulePreferences:{weekStartsOn:E}})});if(!z.ok)throw new Error(`Failed to save global settings (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save regional week start setting"),!1}},[k]),$=a.useCallback(async E=>{const z=Kf(E);return w(z),!0},[w]),q=a.useCallback(async E=>{P(E);try{const z=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({manualComplexityEnabled:E})});if(!z.ok)throw new Error(`Failed to save config (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save manual complexity setting"),!1}},[P]),de=a.useCallback(async E=>{b(E),E||F(!1);try{const z=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({checklistDropdownEnabled:E})});if(!z.ok)throw new Error(`Failed to save config (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save checklist dropdown setting"),!1}},[b,F]),ue=a.useCallback(async E=>{j(E);try{const z=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({showTaskCardStatusLabel:E})});if(!z.ok)throw new Error(`Failed to save config (${z.status})`);return!0}catch{return console.error("[Taskforce] Failed to save task card status label setting"),!1}},[j]),Y=a.useCallback(async()=>{h(!0),S(!0),u(c),x(i),P(!1),b(!0),j(!0),F(!1);try{const E=await fetch("/api/taskforce/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({theme:null,jsonBackupEnabled:null,manualComplexityEnabled:null,checklistDropdownEnabled:null,showTaskCardStatusLabel:null})});if(!E.ok)throw new Error(`Failed to save config (${E.status})`);return!0}catch{return console.error("[Taskforce] Failed to reset project settings"),!1}},[h,S,u,c,x,i,P,b,j,F]);return{handleSaveSettings:B,handleSaveTheme:se,handleSaveGlobalTheme:K,handleJsonBackupEnabledChange:te,handleSaveGlobalJsonBackupEnabled:N,handleSaveGlobalWeekStartsOn:fe,handleSaveLocale:$,handleManualComplexityEnabledChange:q,handleChecklistDropdownEnabledChange:de,handleShowTaskCardStatusLabelChange:ue,handleResetProjectToGlobal:Y}}function Sv(e){const{activeCategories:n,activeTab:r,activeTypes:s,archivedTasks:o,browserTarget:c,category:i,configLoaded:u,customCategories:h,refreshTaskCollections:v,fetchTasks:x,filterCategories:S,getCategoryPaths:y,normalizePath:k,pathValidation:w,setBrowserTarget:P,setCategory:b,setCustomCategories:j,setCustomTypes:F,setFilterCategories:B,setPathValidation:se,setPriorities:K,setShowFolderBrowser:te,setTaxonomies:N,tasks:fe}=e,$=a.useCallback(async(I,p)=>{const A=await I.json().catch(()=>({}));return String(A?.error||p)},[]),q=a.useCallback(()=>[...fe,...o],[o,fe]),de=a.useCallback(I=>I.priorities.find(p=>p.value===2)?.value||I.priorities[0]?.value||2,[]),ue=a.useCallback(async I=>{if(I.length!==0)try{const p=await fetch("/api/taskforce/validate-paths",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({paths:I})});if(p.ok){const A=await p.json();se(_=>({..._,...A.results}))}}catch(p){console.error("[Taskforce] Failed to validate paths:",p)}},[se]);a.useEffect(()=>{if(r!=="settings"||!u)return;const I=[];n.forEach(A=>{y(A).forEach(M=>{I.includes(M)||I.push(M)})});const p=I.filter(A=>!w[A]);p.length>0&&ue(p)},[n,r,u,y,w,ue]);const Y=a.useCallback(async(I,p)=>{if(u){j(A=>(A.length>0?A:n).map(M=>M.value===I.value?I:M)),p&&p!==I.label&&(i===p&&b(I.label),S.includes(p)&&B(A=>A.map(_=>_===p?I.label:_)));try{const M={categories:(h.length>0?h:n).map(H=>H.value===I.value?I:H)};p&&p!==I.label&&(M.reassignFrom=p,M.reassignTo=I.label),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(M)}),p&&await x()}catch(A){console.error("[Taskforce] Failed to update category",A)}}},[n,i,u,h,x,S,b,j,B]),E=a.useCallback(async I=>{if(!u)return;const p=I.trim().toLowerCase().replace(/\s+/g,"-");if(n.some(_=>_.value===p))return;const A={value:p,label:I.trim(),color:"blue-200",icon:"Folder"};j(_=>[..._.length>0?_:n,A]);try{const M=[...h.length>0?h:n,A];await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({categories:M})})}catch(_){console.error("[Taskforce] Failed to create category",_)}},[n,u,h,j]),z=a.useCallback((I,p)=>{if(!p.trim())return;const A=n.find(R=>R.value===I);if(!A)return;const _=y(A),M=p.trim();if(_.includes(M))return;const H=[..._,M];Y({...A,path:void 0,paths:H}),ue(H)},[n,y,Y,ue]),Z=a.useCallback((I,p)=>{const A=n.find(_=>_.value===I);A&&Y({...A,icon:p})},[n,Y]),me=a.useCallback((I,p)=>{const A=n.find(_=>_.value===I);A&&Y({...A,color:p})},[n,Y]),G=a.useCallback((I,p)=>{const A=n.find(H=>H.value===I);if(!A)return;const M=y(A).filter(H=>H!==p);Y({...A,path:void 0,paths:M})},[n,y,Y]),Ae=a.useCallback(I=>{const p=k(I);if(c&&typeof c=="object"&&c.type==="category"){const A=n.find(_=>_.value===c.value);if(A){const _=y(A);if(!_.includes(p)){const M=[..._,p];Y({...A,path:void 0,paths:M})}}}te(!1),P(null)},[n,c,y,Y,k,P,te]),he=a.useCallback(async I=>{if(!u)return;const p=_c,A=n.find(R=>R.value===p),_=A?{...A}:{value:p,label:Cu,icon:"Inbox"},M=_.label,H=n.find(R=>R.value===I);j(R=>{let V=(R.length>0?R:n).filter(ie=>ie.value!==I);return V.some(ie=>ie.value===p)||(V=[_,...V]),V}),H&&((i===H.label||i===H.value)&&b(p),(S.includes(H.label)||S.includes(H.value))&&B(R=>{const re=R.filter(V=>V!==H.label&&V!==H.value);return re.includes(p)?re:[...re,p]}));try{let R=(h.length>0?h:n).filter(re=>re.value!==I);R.some(re=>re.value===p)||(R=[_,...R]),await fetch("/api/taskforce/categories",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({categories:R,reassignFrom:H?.label||I,reassignTo:M})}),await x()}catch(R){console.error("[Taskforce] Failed to remove category",R)}},[n,i,u,h,x,S,b,j,B]),Ce=a.useCallback(async I=>{if(!I.trim())return;const p=I.trim().toLowerCase().replace(/\s+/g,"-");if(s.some(_=>_.value===p))return;const A=[...s,{value:p,label:I.trim(),status:"active"}];F(A);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:A})})}catch(_){console.error("Failed to save type",_)}},[s,F]),le=a.useCallback(async I=>{const p=s.map(A=>A.value===I?{...A,status:"retired"}:A);F(p);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:p})}),await x()}catch(A){console.error("Failed to save type",A)}},[s,x,F]),be=a.useCallback(async(I,p)=>{const A=s.find(R=>R.value===I);if(!A)return;const _=typeof p.label=="string"?p.label.trim():A.label;if(!_)return;const M=s.map(R=>R.value===I?{...R,...p,label:_}:R);if(JSON.stringify(M)!==JSON.stringify(s)){F(M);try{await fetch("/api/taskforce/types",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({types:M})})}catch(R){console.error("Failed to update type",R)}}},[s,F]),Ie=a.useCallback(async I=>{if(u){N(I);try{await fetch("/api/taskforce/taxonomies",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taxonomies:I})})}catch(p){console.error("[Taskforce] Failed to save taxonomies",p)}}},[u,N]),Ne=a.useCallback(async I=>{if(u){K(I);try{await fetch("/api/taskforce/priorities",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({priorities:I})})}catch(p){console.error("[Taskforce] Failed to save priorities",p)}}},[u,K]),Fe=a.useCallback(I=>{const p=q(),A=new Set(I.categories.map(V=>V.value)),_=new Set(I.types.map(V=>V.value)),M=new Set(I.priorities.map(V=>Number(V.value))),H=Array.from(new Set(p.map(V=>String(V.category||"").trim()).filter(V=>V.length>0&&!A.has(V)))).sort(),R=Array.from(new Set(p.map(V=>String(V.type||"").trim()).filter(V=>V.length>0&&!_.has(V)))).sort(),re=Array.from(new Set(p.map(V=>Number(V.priority)).filter(V=>Number.isFinite(V)&&V>0&&!M.has(V)))).sort((V,ie)=>V-ie);return{unmatchedCategoryValues:H,unmatchedTypeValues:R,incompatiblePriorityValues:re}},[q]),D=a.useCallback(async I=>{if(!u)return{success:!1,error:"Settings are still loading."};const{pack:p,sections:A,remapExistingValuesToDefault:_,workspaceIdOverride:M}=I,H=String(M||"").trim(),R=H.length>0,re=R?[]:q(),V=W=>{if(!H)return W;const Q=W.includes("?")?"&":"?";return`${W}${Q}workspaceId=${encodeURIComponent(H)}`},ie=()=>{const W={"Content-Type":"application/json"};return H&&(W["x-taskforce-workspace-id"]=H),W};try{if(A.categories){const W=new Set(p.categories.map(Me=>Me.value)),Q=_?[...p.categories]:[...p.categories,...n.filter(Me=>!W.has(Me.value)).map(Me=>({...Me,disabled:!0}))];R||j(Q);const ge=await fetch(V("/api/taskforce/categories"),{method:"POST",headers:ie(),body:JSON.stringify({categories:Q})});if(!ge.ok)return{success:!1,error:await $(ge,"Failed to apply category library pack.")}}if(A.types){const W=new Set(p.types.map(ye=>ye.value)),Q=p.types.find(ye=>ye.value===jr)?.value||p.types[0]?.value||jr;if(_){const ye=re.filter(Ue=>Ue.type&&!W.has(String(Ue.type))).map(Ue=>({id:Ue.id,type:Q}));if(ye.length>0){const Ue=await fetch(V("/api/taskforce/bulk-update-fields"),{method:"POST",headers:ie(),body:JSON.stringify({updates:ye})});if(!Ue.ok)return{success:!1,error:await $(Ue,"Failed to remap task types to the pack default.")}}}const ge=_?[...p.types]:[...p.types,...s.filter(ye=>!W.has(ye.value)).map(ye=>({...ye,status:"retired"}))];R||F(ge);const Me=await fetch(V("/api/taskforce/types"),{method:"POST",headers:ie(),body:JSON.stringify({types:ge})});if(!Me.ok)return{success:!1,error:await $(Me,"Failed to apply task type library pack.")}}if(A.priorities){const W=new Set(p.priorities.map(ye=>ye.value)),Q=Array.from(new Set(re.map(ye=>Number(ye.priority)).filter(ye=>Number.isFinite(ye)&&ye>0&&!W.has(ye)))).sort((ye,Ue)=>ye-Ue);if(Q.length>0&&!_)return{success:!1,error:`This workspace still uses priority levels ${Q.join(", ")}. Enable "Remap unmatched existing values to default" to replace them before applying this pack.`};if(Q.length>0){const ye=de(p),Ue=re.filter(pt=>Q.includes(Number(pt.priority))).map(pt=>({id:pt.id,priority:ye}));if(Ue.length>0){const pt=await fetch(V("/api/taskforce/bulk-update-fields"),{method:"POST",headers:ie(),body:JSON.stringify({updates:Ue})});if(!pt.ok)return{success:!1,error:await $(pt,"Failed to remap task priorities to the pack default.")}}}const ge=p.priorities.map(ye=>({...ye,value:Number(ye.value)}));R||K(ge);const Me=await fetch(V("/api/taskforce/priorities"),{method:"POST",headers:ie(),body:JSON.stringify({priorities:ge})});if(!Me.ok)return{success:!1,error:await $(Me,"Failed to apply priority library pack.")}}return R||await v({isSilent:!0}),{success:!0}}catch(W){return console.error("[Taskforce] Failed to apply system taxonomy pack",W),{success:!1,error:W instanceof Error?W.message:"Failed to apply system taxonomy pack."}}},[n,s,u,q,de,$,v,j,F,K]);return{getCategoryPaths:y,validatePaths:ue,handleUpdateCategory:Y,handleSaveCategory:E,handleAddPath:z,handleUpdateCategoryIcon:Z,handleUpdateCategoryColor:me,handleRemovePath:G,handleSelectPath:Ae,handleRemoveCategory:he,handleSaveType:Ce,handleRemoveType:le,handleUpdateType:be,handleUpdateTaxonomies:Ie,handleUpdatePriorities:Ne,analyzeSystemTaxonomyPack:Fe,handleApplySystemTaxonomyPack:D}}function wv({shouldDeferProtectedApiCalls:e,shouldBlockProtectedApiCalls:n}){const[r,s]=a.useState([]),[o,c]=a.useState([]),i=e||n,u=a.useCallback(async()=>{if(!i)try{const k=await fetch("/api/taskforce/workflow-templates");if(k.ok){const w=await k.json();s(w.templates||[])}}catch{}},[i]),h=a.useCallback(async()=>{if(i)return[];try{const k=await fetch("/api/taskforce/initiative-templates");if(!k.ok)return[];const w=await k.json(),P=Array.isArray(w?.templates)?w.templates:[];return c(P),P}catch{return[]}},[i]),v=a.useCallback(async k=>{if(!k||i)return null;const w=[`/api/taskforce/workflow-template/${encodeURIComponent(k)}`,`/api/taskforce/workflow-templates/${encodeURIComponent(k)}`];try{for(const P of w){const b=await fetch(P);if(!b.ok)continue;const j=await b.json();if(j?.template)return j.template}return null}catch{return null}},[i]),x=a.useCallback(async()=>{if(i)return[];try{const k=await fetch("/api/taskforce/workflow-editor/overrides");if(!k.ok)return[];const w=await k.json();return Array.isArray(w?.names)?w.names:[]}catch{return[]}},[i]),S=a.useCallback(async(k,w)=>{try{const P=await fetch("/api/taskforce/workflow-editor/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:k,draft:w})}),b=await P.json().catch(()=>({}));return!P.ok||!b.success?{success:!1,error:b.error||`Save failed (${P.status})`}:(u(),{success:!0})}catch(P){return{success:!1,error:P.message}}},[u]),y=a.useCallback(async k=>{try{const w=await fetch(`/api/taskforce/workflow-editor/reset/${encodeURIComponent(k)}`,{method:"POST"}),P=await w.json().catch(()=>({}));return!w.ok||!P.success?{success:!1,error:P.error||`Reset failed (${w.status})`}:(u(),{success:!0})}catch(w){return{success:!1,error:w.message}}},[u]);return{availableWorkflows:r,initiativeTemplates:o,fetchWorkflows:u,fetchInitiativeTemplates:h,fetchWorkflowTemplate:v,fetchWorkflowOverrideNames:x,saveWorkflowTemplateDraft:S,resetWorkflowTemplateDraft:y}}function bv(){const[e,n]=a.useState(!1),r=a.useCallback(async()=>{if(!document.fullscreenElement){try{await document.documentElement.requestFullscreen(),n(!0)}catch(s){console.error(`Error attempting to enable full-screen mode: ${s}`)}return}document.exitFullscreen&&(await document.exitFullscreen(),n(!1))},[]);return a.useEffect(()=>{const s=()=>{n(!!document.fullscreenElement)};return document.addEventListener("fullscreenchange",s),()=>document.removeEventListener("fullscreenchange",s)},[]),{zenMode:e,setZenModeState:n,toggleZenMode:r}}async function xv(e,n,r){if(e.current){n.current=!0;return}e.current=!0;try{do n.current=!1,await r();while(n.current)}finally{e.current=!1}}function _v({tasks:e,archivedTasks:n,setTasks:r,setArchivedTasks:s,setLoadingTasks:o,getCurrentWorkspaceId:c,workspaceResetKey:i,shouldDeferProtectedApiCalls:u,shouldBlockProtectedApiCalls:h,handleUnauthorized:v,authRequiredForApi:x}){const S=a.useRef(new Map),y=a.useRef(!1),k=a.useRef([]),w=a.useRef([]),P=a.useRef(!1),b=a.useRef(!1),j=a.useRef(null),F=a.useRef(null);a.useEffect(()=>{k.current=e},[e]),a.useEffect(()=>{w.current=n},[n]);const B=a.useCallback(E=>`${E.updatedAt||E.createdAt||""}|${E.status}|${E.priority}|${E.title}`,[]),se=a.useCallback((E,z)=>z.aborted?E===z.reason?!0:E instanceof DOMException?E.name==="AbortError":String(E?.name||"").toLowerCase()==="aborterror":!1,[]),[K,te]=a.useState([]),N=a.useRef(new Map),fe=a.useCallback(E=>{!E.length||typeof window>"u"||(te(z=>Array.from(new Set([...z,...E]))),E.forEach(z=>{const Z=N.current.get(z);Z&&window.clearTimeout(Z);const me=window.setTimeout(()=>{N.current.delete(z),te(G=>G.filter(Ae=>Ae!==z))},4e3);N.current.set(z,me)}))},[]);a.useEffect(()=>()=>{typeof window>"u"||(N.current.forEach(E=>window.clearTimeout(E)),N.current.clear())},[]),a.useEffect(()=>{S.current=new Map,y.current=!1,P.current=!1,b.current=!1,j.current?.abort("workspace-reset"),j.current=null,F.current?.abort("workspace-reset"),F.current=null,typeof window<"u"&&(N.current.forEach(E=>window.clearTimeout(E)),N.current.clear()),te([])},[i]);const $=a.useCallback(async(E=!1,z)=>{if(!(z?.ignoreAuthGuard===!0)&&(u||h))return;E||o(!0);const me=String(c()||"").trim();j.current?.abort("superseded");const G=new AbortController;j.current=G;try{const Ae=await fetch("/api/taskforce/tasks",{signal:G.signal});if(Ae.status===401){v(),r([]),E||o(!1);return}if(Ae.ok){const Ce=((await Ae.json()).tasks||[]).map(Ne=>co(Ne));if(String(c()||"").trim()!==me)return;const be=new Map,Ie=[];for(const Ne of Ce){const Fe=B(Ne);if(be.set(Ne.id,Fe),!y.current)continue;const D=S.current.get(Ne.id);(!D||D!==Fe)&&Ie.push(Ne.id)}S.current=be,y.current?fe(Ie):y.current=!0,r(Ce)}}catch(Ae){if(se(Ae,G.signal))return;console.error("[Taskforce] Failed to fetch tasks:",Ae)}finally{const Ae=j.current===G;Ae&&(j.current=null),!E&&Ae&&o(!1)}},[B,c,fe,v,r,o,x,u,h]),q=a.useCallback(async(E=!1,z)=>{if(!(z?.ignoreAuthGuard===!0)&&(u||h))return;const me=String(c()||"").trim();F.current?.abort("superseded");const G=new AbortController;F.current=G;try{const Ae=await fetch("/api/taskforce/archive",{signal:G.signal});if(Ae.ok){const he=await Ae.json();if(String(c()||"").trim()!==me)return;const le=(he.archived||[]).map(be=>({...co(be),isArchived:!0}));s(le)}}catch(Ae){if(se(Ae,G.signal))return;console.error("[Taskforce] Failed to fetch archive:",Ae)}finally{F.current===G&&(F.current=null)}},[c,se,s,u,h]),de=a.useCallback(async E=>{const z=E?.isSilent!==!1,Z=E?.ignoreAuthGuard===!0;await Promise.all([$(z,{ignoreAuthGuard:Z}),q(z,{ignoreAuthGuard:Z})])},[q,$]),ue=a.useCallback(async()=>{await xv(P,b,async()=>{await de({isSilent:!0})})},[de]),Y=a.useCallback(E=>{const z=Ty(E,k.current,w.current);k.current=z.tasks,w.current=z.archivedTasks,r(z.tasks),s(z.archivedTasks)},[r,s]);return{tasksRef:k,archivedTasksRef:w,recentlyChangedTaskIds:K,markRecentlyChangedTasks:fe,fetchTasks:$,fetchArchive:q,refreshTaskCollections:de,refreshTaskCollectionsFromInvalidation:ue,mergeTaskFromServer:Y,getTaskRevisionKey:B}}function Cv(e){const{editingTaskId:n,relationshipTasks:r,initiatives:s=[],workstreams:o=[],supplementalTasks:c=[],setComments:i}=e,u=a.useMemo(()=>{if(c.length===0)return r;const S=new Map;return r.forEach(y=>S.set(y.id,y)),c.forEach(y=>S.set(y.id,y)),Array.from(S.values())},[r,c]),h=a.useMemo(()=>{if(n)return u.find(S=>S.id===n)},[u,n]);a.useEffect(()=>{n&&i(h?.comments||[])},[n,h?.id,h?.updatedAt,h?.comments,i]);const v=a.useMemo(()=>{if(h?.workstreamId)return o.find(S=>S.id===h.workstreamId)},[h,o]),x=a.useMemo(()=>{if(v?.initiativeId)return s.find(S=>S.id===v.initiativeId)},[v,s]);return{currentTask:h,currentTaskWorkstream:v,currentTaskInitiative:x}}const sp="WS-",op="IN-";function so(e){return Ic(sp,e)}function mh(e){return Km(sp,e)}function yu(e){return ql(sp,e)}function vs(e){return Ic(op,e)}function Av(e){return Km(op,e)}function ph(e){return ql(op,e)}function km(e,n){const r=String(n||"").trim();if(!r)return null;const s=Av(r);return e.find(o=>o.id===r||vs(o)===r||s!==null&&o.referenceNumber===s)||null}function Tv(e){const n={};return e.forEach(r=>{const s=r.defaultValue;if(s!=null){if(Array.isArray(s)){s.length>0&&(n[r.id]=s.map(o=>typeof o=="number"?o:String(o)));return}n[r.id]=typeof s=="number"?s:String(s)}}),n}function Iv(e,n){return e.filter(r=>{const s=n[r.id],o=Array.isArray(s)?s.length>0:s!=null&&s!=="";return r.status==="retired"&&!o?!1:r.formEnabled!==!1||r.isRequired===!0||o})}function Nv(e){const{activeCategories:n,activeTypes:r,activeTab:s,attachments:o,checklistItems:c,comments:i,description:u,editingTaskId:h,flushPendingAutoSave:v,getPreferredCategoryValue:x,lastUsedCategory:S,newCommentText:y,relationshipTasks:k,workstreams:w,showArchive:P,taxonomies:b,setActiveTab:j,setApproach:F,setAssignee:B,setAttachments:se,setAttachmentsDirty:K,setCategory:te,setChecklistItems:N,setComments:fe,setComplexity:$,setDescription:q,setDueDate:de,setEditingTaskId:ue,setError:Y,setFormTaxonomies:E,setIsOpen:z,setNewCommentText:Z,setPendingNavigation:me,setWorkstreamInput:G,setPriority:Ae,setScheduledDate:he,setShowArchive:Ce,setStatus:le,setTaskReturnTrail:be,setTitle:Ie,setType:Ne,setUnsavedModalOpen:Fe,taskReturnTrail:D,title:I}=e,p=a.useCallback(()=>r.find(Q=>String(Q.value||"").trim().length>0)?.value||jr,[r]),A=a.useCallback(Q=>{if(h){v(),Q();return}if(!(I.trim()!==""||u.trim()!==""||c.length>0||y.trim()!==""||i.length>0||o.length>0)){Q();return}me(()=>Q),Fe(!0)},[o,i.length,u,h,v,c,y,me,Fe,I]),_=a.useCallback(()=>{z(!1)},[z]),M=a.useCallback(()=>{ue(null),Ie(""),q("");const Q=S,ge=n.some(Me=>Me.label===Q||Me.value===Q);if(Q&&ge){const Me=n.find(ye=>ye.label===Q||ye.value===Q);te(Me?.value||Q)}else te(x(n));Ne(p()),Ae(2),$(3),le("task"),F("default"),B("unassigned"),he(""),de(""),G(""),N([]),E(Tv(b)),fe([]),Z(""),se([]),K(!1),Y("")},[n,x,p,S,F,B,se,K,te,N,fe,$,q,de,ue,Y,E,Z,Ae,he,le,Ie,Ne,b]),H=a.useCallback(Q=>{const ge=Q.trim();if(!ge)return null;const Me=zf(ge);if(Me){const pt=k.find(Ye=>Ye.referenceNumber===Me);if(pt)return pt}const ye=k.find(pt=>pt.id===ge);if(ye)return ye;const Ue=k.find(pt=>Es(pt)===ge);return Ue||null},[k]),R=a.useCallback(Q=>{const ge=Q.trim();if(!ge)return null;const Me=ge.toLowerCase(),ye=mh(ge);if(ye){const Ye=w.find(bt=>bt.referenceNumber===ye);if(Ye)return Ye}const Ue=w.find(Ye=>Ye.id===ge);if(Ue)return Ue;const pt=w.find(Ye=>Ye.title.trim().toLowerCase()===Me);return pt||null},[w]),re=a.useCallback((Q,ge)=>{ge?.preserveReturnTrail||be([]),ue(Q.id),Ie(Q.title),q(Q.description||""),te(Q.category||x(n)),Ne(Q.type||p()),Ae(typeof Q.priority=="number"?Q.priority:2),$(typeof Q.complexity=="number"?Q.complexity:3),le(Q.status||"task"),F(Q.approach||"default"),B(Q.assignee||"unassigned"),he(Q.scheduledDate||""),de(Q.dueDate||"");const Me=Q.workstreamId&&w.find(ye=>ye.id===Q.workstreamId)||null;G(Me?so(Me)||Me.id:""),N(Q.checklistItems||[]),fe(Q.comments||[]),E(Q.taxonomies||{}),Q.taxonomies?.approach&&F(Q.taxonomies.approach),se(Q.attachments||[]),K(!1),j("add")},[n,x,p,j,F,B,se,K,te,N,fe,$,q,de,ue,E,Ae,he,le,be,Ie,Ne,w]),V=a.useCallback(Q=>{const ge=k.find(Me=>Me.id===Q);ge&&(s==="add"&&h&&h!==ge.id&&be(Me=>Me[Me.length-1]===h?Me:[...Me,h]),ge.isArchived&&!P&&Ce(!0),re(ge,{preserveReturnTrail:!0}))},[s,h,re,k,Ce,be,P]),ie=a.useCallback(()=>{if(s!=="add"||!h||D.length===0)return!1;const Q=[...D];for(;Q.length>0;){const ge=Q.pop();if(!ge)continue;const Me=k.find(ye=>ye.id===ge);if(Me)return Me.isArchived&&!P&&Ce(!0),be(Q),re(Me,{preserveReturnTrail:!0}),!0}return be([]),!1},[s,h,re,k,Ce,be,P,D]),W=a.useCallback(()=>{be([])},[be]);return{handleNavigation:A,handleClose:_,resetForm:M,resolveTaskIdInput:H,resolveWorkstreamIdInput:R,handleEdit:re,handleOpenTaskById:V,returnToPreviousTask:ie,clearReturnToParentTask:W}}function jv(e){return e.map(n=>({...n}))}function Rv(e){return e.map(n=>({...n}))}function Ev(e){return e.map(n=>({...n}))}const Dv={id:"software-development",label:"Software Development",description:"A software-oriented starter pack with developer-focused work types and a 4-level priority scale.",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"}]},Pv=[{id:"general",label:"General",description:"A neutral starter pack for broad project and AI collaboration workflows.",isDefaultStarter:!0,categories:[{value:_c,label:Cu,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"}]},Dv];function fh(){return Pv.map(e=>({...e,categories:jv(e.categories),types:Rv(e.types),priorities:Ev(e.priorities)}))}const wc=[{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:"ScanSearch",color:"violet-500"},{value:"done",label:"Done",shortLabel:"Done",icon:"SquareCheck",color:"green-500"},{value:"cancelled",label:"Cancelled",shortLabel:"Cancelled",icon:"Ban",color:"red-500"}],oo=wc.map(({value:e,label:n,icon:r,color:s})=>({value:e,label:n,icon:r,color:s}));function Wl(e){const n=String(e||"task").trim().toLowerCase();return n==="completed"?wc.find(r=>r.value==="done")||wc[0]:wc.find(r=>r.value===n)||wc[0]}const hh=["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","Bot","Cloud","Kanban","Infinity","Monitor","Smartphone","History","Brain","Calendar","Play","Pause","Sparkles","Check","Ban","Circle","CheckCircle","Wind","Github","Square","SquareCheck","CheckSquare","Package","AlertCircle","Lightbulb","ScanSearch","Inbox","HelpCircle","Gauge","FileCode","ArrowDown","Minus","ArrowUp","AlertTriangle","CircleQuestionMark","TriangleAlert"],Ai=hh.reduce((e,n)=>(e[n]=ns[n]||xi,e),{}),BL=hh,ku=Object.fromEntries(fh().flatMap(e=>e.types).filter(e=>e.icon&&e.color).reduce((e,n)=>(e.some(([r])=>r===n.value)||e.push([n.value,{icon:n.icon,color:n.color}]),e),[])),Mv={PDF:"red-500",DOC:"blue-500",DOCX:"blue-500",CSV:"teal-500",JSON:"amber-500",TXT:"violet-200",MD:"violet-200"},qp={"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"},WL=["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 ma(e){if(e)return qp[e]?qp[e]:e}function Lv(e){const n=String(e||"").trim().toLowerCase();return ma(ku[n]?.color)||ma("violet-200")||"#9c7aeb"}function FL(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 Bv(e){const n=String(e||"").trim().toUpperCase();return ma(Mv[n])||"var(--text-muted)"}function Wv(e,n){const r=e.taxonomies?.[n];return r==null||r===""?!1:Array.isArray(r)?r.some(s=>String(s).trim().length>0):String(r).trim().length>0}function Kl(e,n){const r=e.filter(o=>o.status!=="retired"),s=e.filter(o=>o.status==="retired"&&n.some(c=>Wv(c,o.id)));return[...r,...s.filter(o=>!r.some(c=>c.id===o.id))]}function gh(e,n=[]){return Kl(e,n).filter(r=>r.sortEnabled===!0).map(r=>({value:`taxonomy:${r.id}`,label:r.status==="retired"?`${r.label} (Retired)`:r.label}))}function Kp(e,n){const r=e.taxonomies?.[n.id];if(r==null||r==="")return null;const s=Array.isArray(r)?r.map(o=>String(o)):[String(r)];for(let o=0;o<n.options.length;o+=1)if(s.includes(String(n.options[o]?.value)))return o;return null}function yi(e,n){return new Date(n.createdAt).getTime()-new Date(e.createdAt).getTime()}function vu(e,n,r,s,o=[]){let c=0;if(r==="created")return c=yi(e,n),s==="desc"?c:-c;if(r==="updated"){const i=e.updatedAt||e.createdAt,u=n.updatedAt||n.createdAt;return c=new Date(u).getTime()-new Date(i).getTime(),s==="desc"?c:-c}if(r==="priority"){const i=pu(e.priority),u=pu(n.priority);return c=i!==u?u-i:yi(e,n),s==="desc"?c:-c}if(r==="complexity"){const i=typeof e.complexity=="number"?e.complexity:3,u=typeof n.complexity=="number"?n.complexity:3;return c=i!==u?u-i:yi(e,n),s==="desc"?c:-c}if(r.startsWith("taxonomy:")){const i=r.slice(9),u=o.find(x=>x.id===i);if(!u)return c=yi(e,n),s==="desc"?c:-c;const h=Kp(e,u),v=Kp(n,u);return h===null&&v===null?yi(e,n):h===null?1:v===null?-1:h!==v?s==="desc"?v-h:h-v:yi(e,n)}return c=yi(e,n),s==="desc"?c:-c}function Fv(e,n,r){const s=e.taxonomies?.[n];return s==null||s===""?!1:Array.isArray(s)?s.some(o=>String(o)===String(r)):String(s)===String(r)}function ip(e,n){const r=e.options.filter(o=>o.status!=="retired"),s=e.options.filter(o=>o.status==="retired"&&n.some(c=>Fv(c,e.id,o.value)));return[...r,...s.filter(o=>!r.some(c=>String(c.value)===String(o.value)))]}function Ov({tasks:e,archivedTasks:n,activeCategories:r,activeTypes:s,priorities:o,taxonomies:c,configLoaded:i,referenceDataLoaded:u,assigneeOptionsLoaded:h,assigneeOptions:v}){const x=a.useMemo(()=>th(v),[v]),S=a.useMemo(()=>Kl(c,[...e,...n]).filter(R=>R.filterEnabled!==!1).map(R=>({...R,options:ip(R,[...e,...n])})),[n,e,c]),y=a.useMemo(()=>x.map(R=>R.value),[x]),[k,w]=a.useState(""),[P,b]=a.useState([]),[j,F]=a.useState([]),[B,se]=a.useState([]),[K,te]=a.useState(!1),[N,fe]=a.useState(oo.map(R=>R.value)),[$,q]=a.useState(y),[de,ue]=a.useState(!0),[Y,E]=a.useState({}),[z,Z]=a.useState("created"),[me,G]=a.useState("desc"),Ae=a.useCallback(()=>{G(R=>R==="asc"?"desc":"asc")},[]),[he,Ce]=a.useState("category"),[le,be]=a.useState("show"),[Ie,Ne]=a.useState({}),Fe=a.useCallback((R,re)=>re.length===0?!0:re.every(V=>R.includes(V)),[]),D=a.useCallback((R,re)=>R.length===re.length&&R.every((V,ie)=>V===re[ie]),[]);a.useEffect(()=>{he==="approach"&&Ce("status")},[he]),a.useEffect(()=>{if(!(!i||!u)&&h&&!K&&r.length>0&&s.length>0&&o.length>0){b(r.map(re=>re.value)),F(o.map(re=>re.value)),se(s.map(re=>re.value)),q(y),ue(!0);const R={};S.forEach(re=>{R[re.id]=re.options.map(V=>V.value)}),E(R),te(!0)}},[i,u,h,r,s,o,S,K,y]),a.useEffect(()=>{if(!K||!h)return;const R=new Set(y),re=$.filter(W=>R.has(W)),V=de?y:re.length>0||$.length===0?re:y;(V.length!==$.length||V.some((W,Q)=>W!==$[Q]))&&q(V)},[y,$,de,K,h]),a.useEffect(()=>{if(!K||!h)return;const R=$.filter(V=>y.includes(V)),re=y.length>0&&y.every(V=>R.includes(V));re!==de&&ue(re)},[y,$,de,K,h]),a.useEffect(()=>{if(!i||!u||!K||r.length===0)return;const R=Ny(P,r);(R.length!==P.length||R.some((V,ie)=>V!==P[ie]))&&b(R)},[i,u,r,K,P]),a.useEffect(()=>{if(!i||!u||!K||o.length===0||j.length===0)return;const R=Iy(j,o),re=Array.from(new Set(j.map(ie=>Number(ie)).filter(ie=>Number.isFinite(ie))));(R.length!==re.length||R.some((ie,W)=>ie!==re[W]))&&F(R)},[i,u,K,o,j]),a.useEffect(()=>{if(!i||!u||!K||s.length===0)return;const R=new Set(s.map(ie=>ie.value)),re=B.filter(ie=>R.has(ie)),V=re.length>0||B.length===0?re:s.map(ie=>ie.value);D(V,B)||se(V)},[s,i,B,K,D,u]),a.useEffect(()=>{if(!i||!u||!K)return;const R={};S.forEach(Q=>{const ge=Q.options.map(Ue=>Ue.value);if(ge.length===0)return;const Me=Array.isArray(Y[Q.id])?Y[Q.id]:[],ye=Me.filter(Ue=>ge.includes(Ue));R[Q.id]=ye.length>0||Me.length===0?ye:ge});const re=Object.keys(Y).sort(),V=Object.keys(R).sort(),ie=re.length!==V.length||re.some((Q,ge)=>Q!==V[ge]),W=V.some(Q=>!D(Y[Q]||[],R[Q]||[]));(ie||W)&&E(R)},[i,Y,S,K,D,u]);const I=a.useCallback(()=>{w(""),b(r.map(re=>re.value)),F(o.map(re=>re.value)),se(s.map(re=>re.value)),fe(oo.map(re=>re.value)),q(y),ue(!0);const R={};S.forEach(re=>{R[re.id]=re.options.map(V=>V.value)}),E(R),Z("created"),G("desc")},[r,o,s,S,y]),p=a.useCallback(R=>{q(re=>{const V=typeof R=="function"?R(re):R,ie=Array.from(new Set(V.filter(Q=>typeof Q=="string"&&Q.trim().length>0))),W=y.length>0&&y.every(Q=>ie.includes(Q));return ue(W),ie})},[y]),A=a.useMemo(()=>{const R=Fe(P,r.map(W=>W.value)),re=Fe(B,s.map(W=>W.value)),V=Fe(Array.from(new Set(j.map(W=>Number(W)).filter(W=>Number.isFinite(W)))),o.map(W=>Number(W.value)).filter(W=>Number.isFinite(W))),ie=Fe(N,oo.map(W=>W.value));return e.filter(W=>{const Q=Es(W).toLowerCase(),ge=W.title.toLowerCase().includes(k.toLowerCase())||(W.description?.toLowerCase()||"").includes(k.toLowerCase())||W.id.toLowerCase().includes(k.toLowerCase())||Q.includes(k.toLowerCase()),Me=!K||R||P.includes(W.category),ye=!K||V||um(W.priority,j),Ue=!K||re||B.includes(W.type||jr),pt=!K||ie||N.includes(W.status),Ye=!K||de||$.includes(W.assignee||"unassigned"),bt=Object.entries(Y).every(([qe,Qe])=>{const $e=S.find(Be=>Be.id===qe);if(!$e)return!0;const He=$e?.options.every(Be=>Qe.includes(Be.value))??!0;if(He)return!0;const ee=W.taxonomies?.[qe];return ee?Array.isArray(ee)?ee.some(Be=>Qe.includes(Be)):Qe.includes(ee):He||Qe.includes("")});return ge&&Me&&ye&&Ue&&pt&&Ye&&bt}).sort((W,Q)=>vu(W,Q,z,me,c))},[e,n,k,P,j,B,N,$,de,Y,z,me,K,S,r,s,o,Fe,c]),_=a.useMemo(()=>{const R=Fe(P,r.map(W=>W.value)),re=Fe(B,s.map(W=>W.value)),V=Fe(Array.from(new Set(j.map(W=>Number(W)).filter(W=>Number.isFinite(W)))),o.map(W=>Number(W.value)).filter(W=>Number.isFinite(W))),ie=Fe(N,oo.map(W=>W.value));return e.filter(W=>{const Q=!K||R||P.includes(W.category),ge=!K||V||um(W.priority,j),Me=!K||re||B.includes(W.type||jr),ye=!K||ie||N.includes(W.status),Ue=!K||de||$.includes(W.assignee||"unassigned"),pt=Object.entries(Y).every(([Ye,bt])=>{const qe=S.find(He=>He.id===Ye);if(!qe)return!0;const Qe=qe?.options.every(He=>bt.includes(He.value))??!0;if(Qe)return!0;const $e=W.taxonomies?.[Ye];return $e?Array.isArray($e)?$e.some(He=>bt.includes(He)):bt.includes($e):Qe||bt.includes("")});return Q&&ge&&Me&&ye&&Ue&&pt})},[e,n,P,j,B,N,$,de,Y,K,S,r,s,o,Fe]),M=a.useMemo(()=>{const R=r.every(ie=>P.includes(ie.value)),re=Fe(B,s.map(ie=>ie.value)),V=Fe(Array.from(new Set(j.map(ie=>Number(ie)).filter(ie=>Number.isFinite(ie)))),o.map(ie=>Number(ie.value)).filter(ie=>Number.isFinite(ie)));return n.filter(ie=>{const W=Es(ie).toLowerCase(),Q=ie.title.toLowerCase().includes(k.toLowerCase())||(ie.description?.toLowerCase()||"").includes(k.toLowerCase())||ie.id.toLowerCase().includes(k.toLowerCase())||W.includes(k.toLowerCase()),ge=!K||R||P.includes(ie.category),Me=!K||V||um(ie.priority,j),ye=!K||re||B.includes(ie.type||jr),Ue=!K||de||$.includes(ie.assignee||"unassigned"),pt=Object.entries(Y).every(([Ye,bt])=>{const qe=S.find(He=>He.id===Ye);if(!qe)return!0;const Qe=qe?.options.every(He=>bt.includes(He.value))??!0;if(Qe)return!0;const $e=ie.taxonomies?.[Ye];return $e?Array.isArray($e)?$e.some(He=>bt.includes(He)):bt.includes($e):Qe||bt.includes("")});return Q&&ge&&Me&&ye&&Ue&&pt}).sort((ie,W)=>vu(ie,W,z,me,c))},[n,k,P,j,B,$,de,Y,z,me,K,r,s,o,S,Fe,c]),H=a.useMemo(()=>{const R={};return A.forEach(re=>{const V=r.find(W=>W.value===re.category),ie=V?V.label:re.category||"General";R[ie]||(R[ie]=[]),R[ie].push(re)}),R},[A,r]);return{searchQuery:k,setSearchQuery:w,filterCategories:P,setFilterCategories:b,filterPriorities:j,setFilterPriorities:F,filterTypes:B,setFilterTypes:se,filterStatus:N,setFilterStatus:fe,filterAssignees:$,setFilterAssignees:p,filterAssigneesAllSelected:de,setFilterAssigneesAllSelected:ue,filterTaxonomies:Y,setFilterTaxonomies:E,hasInitedFilters:K,setHasInitedFilters:te,sortBy:z,setSortBy:Z,sortOrder:me,setSortOrder:G,toggleSortOrder:Ae,groupBy:he,setGroupBy:Ce,emptyColumnMode:le,setEmptyColumnMode:be,collapsedCategories:Ie,setCollapsedCategories:Ne,clearFilters:I,filteredTasks:A,searchAgnosticTasks:_,filteredArchive:M,groupedTasks:H}}const $v=Ov;function Uv(e){const{activeCategories:n,activeTab:r,apiEndpoint:s,approach:o,assignee:c,attachments:i,attachmentsDirty:u,category:h,checklistItems:v,comments:x,complexity:S,description:y,dueDate:k,editingTaskId:w,fetchTasks:P,formTaxonomies:b,getPreferredCategoryValue:j,mergeTaskFromServer:F,workstreamInput:B,priority:se,pushNotice:K,queueWorkspaceSyncFromAuthoritativeTaskState:te,relationshipTasks:N,resetForm:fe,resolveWorkstreamIdInput:$,scheduledDate:q,setActiveTab:de,setAttachmentsDirty:ue,setComments:Y,setError:E,setLastUsedCategory:z,setLoading:Z,setNewCommentText:me,status:G,title:Ae,taxonomies:he,type:Ce}=e,[le,be]=a.useState(null),[Ie,Ne]=a.useState("idle"),[Fe,D]=a.useState(null),I=a.useRef(null),p=a.useCallback(()=>JSON.stringify({title:Ae.trim(),description:y||"",category:typeof h=="string"?h:h.label||j(n),type:typeof Ce=="string"?Ce:Ce.label||jr,priority:Number(se),complexity:Number(S)||3,approach:o||"default",assignee:c||"agent",scheduledDate:q||"",dueDate:k||"",workstreamInput:B.trim(),checklistItems:v,comments:x,taxonomies:b,attachments:i}),[n,o,c,i,h,v,x,S,y,k,b,j,se,q,Ae,Ce,B]),A=a.useCallback(()=>{I.current!==null&&(window.clearTimeout(I.current),I.current=null)},[]),_=a.useCallback(async W=>{const Q=W?.quiet??!1,ge=W?.source??"manual";if(!Ae.trim())return E("Title is required"),w&&Ne(ge==="autosave"?"error":"idle"),!1;const Me=he.filter(ye=>ye.isRequired).filter(ye=>{const Ue=b[ye.id];return Array.isArray(Ue)?Ue.filter(pt=>String(pt).trim().length>0).length===0:typeof Ue!="string"&&typeof Ue!="number"||String(Ue).trim().length===0}).map(ye=>ye.label);if(Me.length>0)return E(`Required taxonomy values are missing: ${Me.join(", ")}`),w&&Ne(ge==="autosave"?"error":"idle"),!1;if(w&&N.find(Ue=>Ue.id===w)?.isArchived)return E("Archived tasks are read-only. Unarchive first to make changes."),Ne(ge==="autosave"?"error":"idle"),!1;Z(!0),E(""),w&&Ne("saving");try{const ye=w?`/api/taskforce/task/${w}`:s.replace("/api/dev/task","/api/taskforce/task").replace("/api/taskforce/task","/api/taskforce/task"),Ue=w?"PATCH":"POST",pt=typeof h=="string"?h:h.label||j(n),Ye=typeof Ce=="string"?Ce:Ce.label||jr,bt=B.trim()?$(B):null,qe={title:Ae,description:y||null,category:pt||j(n),type:Ye,priority:se,complexity:Number(S)||3,status:w?void 0:G,completedAt:w?void 0:G==="done"?new Date().toISOString():null,approach:o||"default",assignee:c||"agent",scheduledDate:q||null,dueDate:k||null,workstreamId:B.trim()?bt?.id||B.trim():null,checklistItems:v,comments:x,taxonomies:b,...w?{}:{createdAt:new Date().toISOString(),createdBy:"user"}};(!w||u)&&(qe.attachments=i),w&&(qe.saveSource=ge);const Qe=await fetch(ye,{method:Ue,headers:{"Content-Type":"application/json"},body:JSON.stringify(qe)});if(!Qe.ok){const ee=(await Qe.json()).message||`Failed to ${w?"update":"save"} task`;return E(ee),Q||K(ee,"error"),Z(!1),w&&Ne("error"),!1}const $e=await Qe.json().catch(()=>null);return w&&$e&&typeof $e=="object"&&(F($e),te()),z(pt),ue(!1),Z(!1),w&&Ne("saved"),!0}catch{return E("Failed to connect to server"),Q||K("Failed to connect to server","error"),Z(!1),w&&Ne("error"),!1}},[n,s,o,c,i,u,h,v,x,S,y,k,w,b,j,F,B,se,K,te,$,ue,E,z,Z,q,G,Ae,he,Ce]),M=a.useCallback(async()=>{await _({source:"manual"})&&(w||K("Task added successfully","success"),r==="add"&&!w&&(fe(),de("tasks"),await P()))},[r,w,P,K,fe,_,de]);a.useEffect(()=>{if(A(),!w){D(null),Ne("idle");return}D(p()),Ne("idle")},[A,w]);const H=a.useCallback(async()=>{if(A(),!w||Fe===null)return;const W=p();if(W===Fe||!Ae.trim()||k&&q&&k<q)return;await _({quiet:!0,source:"autosave"})&&D(W)},[p,A,k,w,Fe,_,q,Ae]);a.useEffect(()=>{if(!w||Fe===null)return;const W=p();if(W!==Fe){if(!Ae.trim()){Ne("idle");return}if(k&&q&&k<q){Ne("error");return}return Ne(Q=>Q==="error"?"error":"idle"),A(),I.current=window.setTimeout(async()=>{await _({quiet:!0,source:"autosave"})&&D(W)},700),()=>{A()}}},[p,A,k,w,Fe,_,q,Ae]);const R=a.useCallback(async W=>{if(W.preventDefault(),k&&q&&k<q){be({dueDate:k,scheduledDate:q});return}await M()},[k,M,q]),re=a.useCallback(async()=>{be(null),await M()},[M]),V=a.useCallback(()=>{be(null)},[]),ie=a.useCallback(async W=>{if(!w||!W.trim())return;const Q=W.trim();try{const ge=await fetch(`/api/taskforce/task/${w}/comment`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:Q,author:"user"})});if(!ge.ok){const Ue=(await ge.json().catch(()=>({}))).error||"Failed to add comment.";E(Ue),K(Ue,"error");return}const Me=await ge.json().catch(()=>null);if(me(""),Me&&typeof Me=="object"){const ye=co(Me);Y(ye.comments||[]),F(Me),D(p()),Ne("saved")}else await P(!0);te()}catch(ge){console.error("Failed to add comment",ge),E("Failed to add comment."),K("Failed to add comment.","error")}},[w,P,p,F,K,te,Y,E,me]);return{autoSaveState:Ie,flushAutoSave:H,scheduleWarningPrompt:le,saveTask:_,handleSubmit:R,confirmScheduleWarning:re,cancelScheduleWarning:V,handleAddComment:ie}}function zv(e){const{editingTaskId:n,fetchTasks:r,mergeTaskFromServer:s,workstreamInput:o,pushNotice:c,queueWorkspaceSyncFromAuthoritativeTaskState:i,relationshipTasks:u,resolveWorkstreamIdInput:h,setError:v}=e;return{handleSetWorkstreamForCurrentTask:a.useCallback(async S=>{if(!n)return;const y=u.find(b=>b.id===n);if(!y)return;const k=typeof S=="string"?S.trim():S===null?"":o.trim(),w=k?h(k):null,P=k.length>0?w?.id||k:null;if((y.workstreamId||null)===P){c(P?"Task already belongs to that workstream.":"Task is already standalone.","info");return}try{const b=await fetch(`/api/taskforce/task/${n}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({workstreamId:P})});if(!b.ok){const B=(await b.json().catch(()=>({}))).error||"Failed to set workstream.";v(B),c(B,"error");return}v(""),c(P?"Workstream set":"Workstream removed","info");const j=await b.json().catch(()=>null);j?(s(j),i()):(await r(!0),i())}catch{v("Failed to set workstream."),c("Failed to set workstream.","error")}},[n,r,s,o,c,i,u,h,v])}}function Hv({tasks:e,archivedTasks:n,editingTaskId:r,setTasks:s,setArchivedTasks:o,setDeletedTasks:c,setError:i,resetForm:u,setActiveTab:h,fetchTasks:v,fetchArchive:x,fetchDeletedTasks:S,mergeTaskFromServer:y,pushNotice:k,cloudAuthConfigured:w,runtimeMode:P,isAuthenticated:b,workspaceCloudSyncEnabled:j,buildWorkspaceSyncSignature:F,pushWorkspaceChangesToCloud:B,workspacePendingSignatureRef:se,workspaceDeletedTaskIdsRef:K,workspaceDeletedTaskWatermarksRef:te}){const[N,fe]=a.useState(null),$=a.useRef(null),q=a.useRef(null),de=a.useRef(null);a.useEffect(()=>()=>{typeof window>"u"||(q.current!==null&&(window.clearTimeout(q.current),q.current=null),de.current=null)},[]);const ue=a.useCallback((D=0)=>{if(!(w&&P==="local"&&b&&j)||typeof window>"u")return;const I=Math.max(0,D),p=Date.now()+I,A=de.current;if(q.current!==null){if(I<=0||A!==null&&A>=p)return;window.clearTimeout(q.current),q.current=null}de.current=p,q.current=window.setTimeout(()=>{q.current=null,de.current=null;const _=F();_&&(se.current=_,B(_))},I)},[w,P,b,j,F,se,B]),Y=a.useCallback(async(D,I)=>{let p=await fetch(`/api/taskforce/deleted${D}`,I);return p.status===404&&(p=await fetch(`/api/taskforce/trash${D}`,I)),p},[]),E=async(D,I=!1,p={})=>{if(!p.skipConfirm&&!confirm("Move this task to Trash? You can restore it later."))return!1;const A=I||n.some(_=>_.id===D);try{const _=await fetch(`/api/taskforce/task/${D}`,{method:"DELETE"});if(!_.ok){const re=(await _.json().catch(()=>({}))).error||"Failed to delete task.";return i(re),k(re,"error"),!1}const M=await _.json().catch(()=>({})),H=M?.deleted&&typeof M.deleted=="object"&&M.deleted.taskSnapshot?{...M.deleted,taskSnapshot:co(M.deleted.taskSnapshot)}:null;if(window.location.search.includes(D)){const R=new URL(window.location.href);R.searchParams.delete("task"),window.history.pushState({},"",R.toString())}if(A?o(R=>R.filter(re=>re.id!==D)):s(R=>R.filter(re=>re.id!==D)),H){c(re=>[H,...re.filter(V=>V.taskId!==D)]);const R=String(H.deletedAt||"").trim();Number.isFinite(Date.parse(R))&&te.current.set(D,R)}else await S(!0),te.current.set(D,new Date().toISOString());if(K.current.add(D),w&&P==="local"&&b&&j){const R=F();se.current=R,B(R)}return r===D&&(u(),h("tasks")),i(""),k("Task moved to Trash.","info"),!0}catch(_){return console.error("Failed to delete task:",_),i("Failed to delete task."),k("Failed to delete task.","error"),!1}},z=a.useCallback(async D=>{try{const I=await Y(`/${D}/restore`,{method:"POST"});if(!I.ok){const M=(await I.json().catch(()=>({}))).error||"Failed to restore deleted task.";return i(M),k(M,"error"),null}const p=await I.json().catch(()=>null);p?y(p):await v(!0),c(_=>_.filter(M=>M.id!==D&&M.taskId!==D));const A=String(p?.id||"").trim();return K.current.delete(D),te.current.delete(D),A&&(K.current.delete(A),te.current.delete(A)),ue(),i(""),k("Task restored from Trash.","info"),p?co(p):null}catch(I){return console.error("Failed to restore deleted task:",I),i("Failed to restore deleted task."),k("Failed to restore deleted task.","error"),null}},[v,y,k,ue,Y,c,i]),Z=a.useCallback(async D=>{try{const I=await Y(`/${D}`,{method:"DELETE"});if(!I.ok){const A=(await I.json().catch(()=>({}))).error||"Failed to permanently delete deleted task.";return i(A),k(A,"error"),!1}return c(p=>p.filter(A=>A.id!==D&&A.taskId!==D)),ue(),i(""),k("Deleted task permanently removed.","info"),!0}catch(I){return console.error("Failed to permanently delete deleted task:",I),i("Failed to permanently delete deleted task."),k("Failed to permanently delete deleted task.","error"),!1}},[k,ue,Y,c,i]),me=a.useCallback(async()=>{try{const D=await Y("/empty",{method:"POST"});if(!D.ok){const _=(await D.json().catch(()=>({}))).error||"Failed to permanently delete deleted tasks.";return i(_),k(_,"error"),null}const I=await D.json().catch(()=>({})),p=Number(I?.deleted||0);return c([]),ue(),i(""),k(p===1?"Deleted task permanently removed.":`${p} deleted tasks permanently removed.`,"info"),p}catch(D){return console.error("Failed to empty deleted tasks:",D),i("Failed to permanently delete deleted tasks."),k("Failed to permanently delete deleted tasks.","error"),null}},[k,ue,Y,c,i]),G=a.useCallback(async(D,I)=>{const p=e,A=n;s(_=>_.map(M=>M.id===D?{...M,...I}:M)),o(_=>_.map(M=>M.id===D?{...M,...I}:M));try{const _=await fetch(`/api/taskforce/task/${D}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(I)});if(!_.ok){const R=(await _.json().catch(()=>({}))).error||`Failed to update task ${D}.`;i(R),k(R,"error"),s(p),o(A);return}const M=await _.json().catch(()=>null);y(M),ue(I.attachments!==void 0?150:0),i("")}catch(_){console.error("Failed to update task",_);const M=`Failed to update task ${D}.`;i(M),k(M,"error"),s(p),o(A)}},[e,n,k,y,ue]);return{copiedId:N,handleDelete:E,handleUpdateTask:G,handleToggleComplete:async D=>{const I=D.status==="done"?"task":"done",p=I==="done"?new Date().toISOString():void 0,A={status:I,completedAt:p,completed:I==="done",inProgress:!1,readyForReview:!1,cancelled:!1},_=e,M=n;s(H=>H.map(R=>R.id===D.id?{...R,...A}:R)),o(H=>H.map(R=>R.id===D.id?{...R,...A}:R));try{const H=await fetch(`/api/taskforce/task/${D.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:I,completedAt:p})});if(!H.ok){const V=(await H.json().catch(()=>({}))).error||"Failed to update task status.";i(V),k(V,"error"),s(_),o(M);return}const R=await H.json().catch(()=>null);R?(y(R),ue()):(await v(!0),ue()),i("")}catch(H){console.error("Failed to toggle complete",H),i("Failed to update task status."),k("Failed to update task status.","error"),s(_),o(M)}},handleToggleCancel:async D=>{const I=D.status==="cancelled"?"task":"cancelled";try{const p=await fetch(`/api/taskforce/task/${D.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:I})});if(!p.ok){const M=(await p.json().catch(()=>({}))).error||"Failed to update task status.";i(M),k(M,"error"),await v(!0);return}const A=await p.json().catch(()=>null);A?(y(A),ue()):(await v(!0),ue()),i("")}catch(p){console.error("Failed to toggle cancel",p),i("Failed to update task status."),k("Failed to update task status.","error"),v()}},handleToggleInProgress:async D=>{const I=D.status==="in-progress"?"task":"in-progress";s(p=>p.map(A=>A.id===D.id?{...A,status:I}:A));try{const p=await fetch(`/api/taskforce/task/${D.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:I})});if(!p.ok){await v(!0);return}const A=await p.json().catch(()=>null);y(A),ue()}catch{v()}},handleToggleReview:async D=>{const I=D.status==="review"?"task":"review";s(p=>p.map(A=>A.id===D.id?{...A,status:I}:A));try{const p=await fetch(`/api/taskforce/task/${D.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:I})});if(!p.ok){await v(!0);return}const A=await p.json().catch(()=>null);y(A),ue()}catch{v()}},handleArchiveTask:async D=>{try{const p=D.status==="cancelled"?"cancel":"complete",A=await fetch(`/api/taskforce/task/${D.id}/${p}`,{method:"POST"});if(A.ok){const _=await A.json().catch(()=>null),M=[];if(_&&typeof _=="object"&&M.push(_),M.length>0){for(const R of M)y(R);ue()}else x();const H=new Set(M.map(R=>String(R?.id||"").trim()).filter(R=>R.length>0));r&&H.has(r)&&(u(),h("tasks"))}else{const M=(await A.json().catch(()=>({}))).error||"Failed to archive task.";i(M),k(M,"error")}}catch(I){console.error("Failed to archive",I),i("Failed to archive task."),k("Failed to archive task.","error")}},handleBulkArchive:async()=>{const D=e.filter(I=>I.status==="done"||I.status==="cancelled");if(D.length!==0&&confirm(`Archive ${D.length} completed/cancelled tasks?`))try{const I=await fetch("/api/taskforce/bulk-archive",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:D.map(p=>p.id)})});if(I.ok){const p=await I.json(),A=Array.isArray(p?.results?.archived)?p.results.archived:[];if(A.length>0){for(const _ of A)y(_);ue()}else s(_=>_.filter(M=>!["done","cancelled"].includes(M.status))),x();k(`${p.archived||D.length} tasks archived`,"info"),i("")}else{const A=(await I.json().catch(()=>({}))).error||"Failed to bulk archive tasks.";i(A),k(A,"error")}}catch(I){console.error("Failed to bulk archive",I),i("Failed to bulk archive tasks."),k("Failed to bulk archive tasks.","error")}},handleUnarchive:async D=>{try{const I=await fetch(`/api/taskforce/task/${D}/unarchive`,{method:"POST"});if(I.ok){const p=await I.json().catch(()=>null);p?(y(p),ue()):(o(A=>A.filter(_=>_.id!==D)),await v(!0),ue()),i(""),k("Task restored from archive.","info")}}catch(I){console.error("Failed to unarchive",I),i("Failed to unarchive task."),k("Failed to unarchive task.","error")}},handleRestoreDeletedTask:z,handlePermanentlyDeleteDeletedTask:Z,handleEmptyDeletedTasks:me,handleCopyId:(D,I)=>{D.stopPropagation(),navigator.clipboard.writeText(I),fe(I),$.current!==null&&window.clearTimeout($.current),$.current=window.setTimeout(()=>{$.current=null,fe(null)},2e3)},queueWorkspaceSyncFromAuthoritativeTaskState:ue}}const Gv=Hv;function eu(e){return e==="/api/taskforce/auth/runtime-config"||e==="/api/taskforce/sync/workspace/apply-local"||e==="/api/taskforce/sync/workspace/repair-startup"}function Vv(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 Zv({currentWorkspaceIdRef:e,resolveApiUrl:n,runtimeMode:r}){a.useEffect(()=>{if(typeof window>"u"||typeof window.fetch!="function")return;const s=window.fetch.bind(window),o=c=>{if(typeof c=="string")return r!=="cloud"?c:c.startsWith("/api/taskforce")&&!eu(c)?n(c):c;if(c instanceof URL)return r!=="cloud"?c:c.origin===window.location.origin&&c.pathname.startsWith("/api/taskforce")?eu(c.pathname)?c:new URL(n(`${c.pathname}${c.search}${c.hash}`)):c;if(typeof Request<"u"&&c instanceof Request){if(r!=="cloud")return c;const i=new URL(c.url,window.location.origin);if(i.origin===window.location.origin&&i.pathname.startsWith("/api/taskforce"))return eu(i.pathname)?c:n(`${i.pathname}${i.search}${i.hash}`)}return c};return window.fetch=((c,i)=>{const u=o(c),h=Vv(u);if(!!!(h&&h.pathname.startsWith("/api/taskforce")&&!eu(h.pathname)))return s(u,i);const x=String(e.current||"").trim();if(typeof Request<"u"&&u instanceof Request){const y=new Headers(u.headers);i?.headers&&new Headers(i.headers).forEach((P,b)=>y.set(b,P)),x&&x!=="default"&&!y.has("x-taskforce-workspace-id")&&(y.set("x-taskforce-workspace-id",x),y.set("x-taskforce-workspace-authoritative","1"));const k=new Request(u,{...i,headers:y});return s(k)}const S=new Headers(i?.headers);return x&&x!=="default"&&!S.has("x-taskforce-workspace-id")&&(S.set("x-taskforce-workspace-id",x),S.set("x-taskforce-workspace-authoritative","1")),s(u,{...i,headers:S})}),()=>{window.fetch=s}},[e,n,r])}function qv({runtimeConfigReady:e,shouldProbeCloudAuth:n,authSessionResolved:r,resolveCloudAuthUrl:s,authOnlyCloudMode:o,authRequiredError:c,runtimeMode:i,workspaceSelectionScope:u,markBootstrapPhase:h,markBootstrapStalled:v,setRuntimeMode:x,setAuthRequiredForApi:S,setIsAuthenticated:y,setAuthUserId:k,setAuthWorkspaceId:w,setAuthUserEmail:P,setAuthUserDisplayName:b,setAuthUserAvatarUrl:j,setUserGlobalSyncStatus:F,setUserGlobalSyncError:B,setHasBetaAccess:se,setAvailableWorkspaces:K,setHydratedWorkspaceRole:te,setAssigneeOptions:N,setAuthBlocked:fe,setAuthSessionResolved:$,setError:q,applyResolvedWorkspaceId:de,readPersistedWorkspaceId:ue,authSessionRequestRef:Y,authSessionEpochRef:E,authSessionLastCheckedAtRef:z,authSessionLastResultRef:Z,isLoopbackHost:me,setAuthStateReadyRefs:G}){const Ae=a.useCallback(async Ce=>{const le=Ce?.force===!0;if(h("auth"),!e)return Z.current;if(!n)return x("local"),S(!1),y(!1),k("anonymous"),w(""),Dl(null),P(""),b(""),j(""),F("disconnected"),B(null),se(!0),K([]),te(null),N(Wo()),fe(!1),$(!0),G(!1,!0,!1),Z.current=!1,z.current=Date.now(),!1;const be=s("/api/taskforce/auth/session"),Ie=Date.now();if(!le&&Y.current)return Y.current;if(!le&&r&&Ie-z.current<1500)return Z.current;const Ne=++E.current;let Fe=null;return Fe=(async()=>{const D=new AbortController,I=typeof window<"u"?window.setTimeout(()=>D.abort(),8e3):null,p=()=>E.current!==Ne;try{const A=await fetch(be,{method:"GET",credentials:"include",mode:"cors",signal:D.signal});if(p())return Z.current;if(A.status===429)return $(!0),G(Z.current,!0,!1),Z.current;if(!A.ok)return p()?Z.current:(me&&Dl(null),$(!0),G(!1,!0,!1),Z.current=!1,!1);const _=await A.json();if(p())return Z.current;const M=!!_.authRequiredForApi,H=!!_.authenticated,R=H?_.betaAccess!==!1:!0,re=typeof _.workspaceId=="string"&&_.workspaceId.trim().length>0?_.workspaceId.trim():"",V=typeof _.userId=="string"&&_.userId.trim().length>0?_.userId.trim():"anonymous",ie=typeof _.email=="string"&&_.email.trim().length>0?_.email.trim().toLowerCase():"",W=typeof _.displayName=="string"?_.displayName.trim():"",Q=typeof _.avatarUrl=="string"?_.avatarUrl.trim():"",ge=i==="local",Me=i==="local"||o,ye=o||ge?!1:M;return S(ye),y(H),k(H?V:"anonymous"),w(H?re:""),me&&Dl(H?V:null),P(H?ie:""),b(H?W:""),j(H?Q:""),H&&q(Ue=>Ue===c?"":Ue),F(H?"idle":"disconnected"),B(null),se(R),Me||de(re||ue(u)||"default",{preserveNonDefaultDefault:!0}),fe(o||ge?!1:M&&!H),$(!0),G(H,!0,ye),Z.current=H,H&&h("ready"),H}catch{return p()||(me&&Dl(null),$(!0),G(!1,!0,!1),Z.current=!1,v("Unable to verify your session.")),Z.current}finally{I!==null&&typeof window<"u"&&window.clearTimeout(I),p()||(z.current=Date.now()),Fe&&Y.current===Fe&&(Y.current=null)}})(),Y.current=Fe,Fe},[e,n,r,s,o,c,i,u,h,v,x,S,y,k,w,P,b,j,F,B,se,K,te,N,fe,$,q,de,ue,Y,E,z,Z,me,G]),he=i==="local"&&me&&n?ap():"";return a.useEffect(()=>{he&&(y(!0),$(!0),k(he),G(!0,!0,!1),Z.current=!0)},[he,$,G,k,y,Z]),a.useEffect(()=>{if(i!=="local"||!n||typeof window>"u")return;const Ce=()=>{Ae()},le=()=>{document.visibilityState==="visible"&&Ce()};window.addEventListener("focus",Ce),window.addEventListener("online",Ce),document.addEventListener("visibilitychange",le);const be=window.setInterval(Ce,3e4);return()=>{window.removeEventListener("focus",Ce),window.removeEventListener("online",Ce),document.removeEventListener("visibilitychange",le),window.clearInterval(be)}},[i,n,Ae]),{checkAuthSession:Ae}}function Kv(e){const n=e.runtimeMode==="cloud",r=!!(e.shouldGateProtectedApiCalls&&n&&!e.authSessionResolved),s=!!(e.shouldGateProtectedApiCalls&&n&&e.authSessionResolved&&e.authRequiredForApi&&!e.isAuthenticated);return{shouldDeferProtectedApiCalls:r,shouldBlockProtectedApiCalls:s,canCallProtectedApi:!(r||s)}}function Yv(e){return!!(!e.isOpen||!e.canCallProtectedApi||e.authBlocked||e.authRequiredForApi&&!e.isAuthenticated)}function Jv(e){return!!(e.shouldGateProtectedApiCalls&&!e.authSessionResolved||e.authRequiredForApi&&!e.isAuthenticated)}function Yp(e){if(!Array.isArray(e))return;const n=e.filter(r=>typeof r=="string"&&r.trim().length>0).map(r=>r.trim());return n.length>0?n:void 0}function Xv(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const n=e;return Array.isArray(n.categories)||Array.isArray(n.types)||Array.isArray(n.priorities)||Array.isArray(n.taxonomies)||!!n.displayLabels&&typeof n.displayLabels=="object"&&!Array.isArray(n.displayLabels)}function Qv(e){const n=e||{};return{categories:Array.isArray(n.categories)?n.categories.map(s=>typeof s=="string"?{value:s.toLowerCase().replace(/\s+/g,"-"),label:s}:s):[],types:Array.isArray(n.types)?n.types.map(s=>({...my(s.value),...s,aliases:Array.isArray(s.aliases)?s.aliases.filter(c=>typeof c=="string"&&c.trim().length>0).map(c=>c.trim()):void 0,status:s.status==="retired"?"retired":"active"})):[],priorities:Array.isArray(n.priorities)?n.priorities:[],taxonomies:Array.isArray(n.taxonomies)?n.taxonomies.map(s=>({...s,aliases:Yp(s.aliases),options:Array.isArray(s.options)?s.options.map(o=>({...o,aliases:Yp(o.aliases),status:o.status==="retired"?"retired":"active"})):[],status:s.status==="retired"?"retired":"active",formEnabled:s.formEnabled!==!1,filterEnabled:s.filterEnabled!==!1,sortEnabled:s.sortEnabled===!0})):[],displayLabels:{category:typeof n.displayLabels?.category=="string"&&n.displayLabels.category.trim().length>0?n.displayLabels.category.trim():void 0,type:typeof n.displayLabels?.type=="string"&&n.displayLabels.type.trim().length>0?n.displayLabels.type.trim():void 0,priority:typeof n.displayLabels?.priority=="string"&&n.displayLabels.priority.trim().length>0?n.displayLabels.priority.trim():void 0}}}function eS(e){const{shouldDeferProtectedApiCalls:n,shouldBlockProtectedApiCalls:r,getWorkspaceRequestState:s,isWorkspaceRequestStale:o,isWorkspaceEpochStale:c,isAbortError:i,isBootstrapTimeoutError:u,fetchWithTimeout:h,handleUnauthorized:v,applyBootstrapConfig:x,loadPersistedUiState:S,fetchBuildInfo:y,markBootstrapPhase:k,markBootstrapStalled:w,fetchWorkflows:P,fetchInitiativeTemplates:b,loadAvailableEnvironments:j,setReferenceDataLoaded:F,setCustomCategories:B,setCustomTypes:se,setPriorities:K,setTaxonomies:te,setTaxonomyDisplayLabels:N,setConfigLoaded:fe,hasLoadedUiStateRef:$,currentWorkspaceIdRef:q,referenceDataRequestRef:de,referenceDataAbortRef:ue,bootstrapConfigAbortRef:Y,workspaceListAbortRef:E,assigneeOptionsAbortRef:z,workspaceListHydratedRef:Z,setAvailableWorkspaces:me,runtimeMode:G,applyResolvedWorkspaceId:Ae,workspaceSwitchingEnabled:he,authSessionResolved:Ce,isAuthenticated:le,authUserId:be,setHydratedWorkspaceRole:Ie,setAssigneeOptions:Ne,setAssigneeOptionsLoaded:Fe,commitCurrentWorkspaceId:D,currentWorkspaceId:I,workspaceSelectionScope:p,abortWorkspaceScopedRequests:A,setWorkspaceBootstrapPending:_,checkAuthSession:M,lastConfigRefreshKeyRef:H,lastAssigneeOptionsLoadKeyRef:R,lastWorkspaceSyncStateLoadKeyRef:re,lastTaskSurfaceLoadKeyRef:V,lastSettingsSurfaceLoadKeyRef:ie,isOpen:W,activeTab:Q,showArchive:ge,taskScope:Me,settingsSection:ye,fetchTasks:Ue,fetchArchive:pt,fetchPlanningEntities:Ye,refreshTaskCollections:bt,loadWorkspaceSyncState:qe,archiveBootstrapTimerRef:Qe,hasBootstrappedDataRef:$e}=e,He=a.useCallback(async tt=>{const xt=tt?.ignoreAuthGuard===!0,Ve=tt?.force===!0;if(!xt&&(n||r))return;const ct=s();if(!Ve&&de.current?.workspaceId===ct.workspaceId){await de.current.promise;return}F(!1);const ze=new AbortController;ue.current=ze;const at=(async()=>{await Promise.allSettled([(async()=>{const Nt=await fetch("/api/taskforce/taxonomy-state",{signal:ze.signal});if(!Nt.ok)return;const Rt=await Nt.json().catch(()=>({}));if(!Xv(Rt)){const[ke,ve,Re,vt]=await Promise.all([fetch("/api/taskforce/categories",{signal:ze.signal}),fetch("/api/taskforce/types",{signal:ze.signal}),fetch("/api/taskforce/priorities",{signal:ze.signal}),fetch("/api/taskforce/taxonomies",{signal:ze.signal})]),[Oe,kt,J,Se]=await Promise.all([ke.ok?ke.json().catch(()=>({})):Promise.resolve({}),ve.ok?ve.json().catch(()=>({})):Promise.resolve({}),Re.ok?Re.json().catch(()=>({})):Promise.resolve({}),vt.ok?vt.json().catch(()=>({})):Promise.resolve({})]);Rt.categories=Oe.categories,Rt.types=kt.types,Rt.priorities=J.priorities,Rt.taxonomies=Se.taxonomies}const ot=Qv(Rt);o(ct)||(ot.categories.length>0&&B(ot.categories),ot.types.length>0&&se(ot.types),ot.priorities.length>0&&K(ot.priorities),te(ot.taxonomies),N(ot.displayLabels||{}))})(),P(),b(),j()]),!o(ct)&&F(!0)})();de.current={workspaceId:ct.workspaceId,promise:at};try{await at}finally{de.current?.promise===at&&(de.current=null),ue.current===ze&&(ue.current=null)}},[b,P,s,o,j,ue,de,B,se,K,F,te,N,r,n]),ee=a.useCallback(async tt=>{if(!(tt?.ignoreAuthGuard===!0)&&(n||r))return;k("config");const Ve=s(),ct=new AbortController;Y.current=ct;try{const ze=await h("/api/taskforce/config",void 0,12e3,{signal:ct.signal});if(c(Ve))return;if(ze.status===401){v(),fe(!0);return}let at="";if(ze.ok){const Nt=await ze.json();if(c(Ve))return;at=typeof Nt?.workspaceId=="string"&&Nt.workspaceId.trim().length>0?Nt.workspaceId.trim():"",x(Nt)}if(c(Ve)){const Nt=String(q.current||"default").trim()||"default";if(!at||Nt!==at)return}if($.current||($.current=!0,await S(at||Ve.workspaceId)),c(Ve)){const Nt=String(q.current||"default").trim()||"default";if(!at||Nt!==at)return}fe(!0),k("ready"),y()}catch(ze){if(i(ze)||c(Ve))return;$.current||($.current=!0,await S(Ve.workspaceId)),w(u(ze)?"Startup checks timed out.":"Unable to finish startup checks."),fe(!0)}finally{Y.current===ct&&(Y.current=null)}},[x,Y,q,y,h,s,v,$,i,u,c,S,k,w,fe,r,n]),Be=a.useCallback(async tt=>{await ee(tt),await He(tt)},[ee,He]),l=a.useCallback(async()=>{if(!he)return me([]),Z.current=!1,{success:!0,workspaces:[]};const tt=s(),xt=new AbortController;E.current=xt;try{const Ve=await h("/api/taskforce/workspaces",{method:"GET",credentials:"include"},12e3,{signal:xt.signal});if(c(tt))return{success:!1,error:"Workspace changed while loading workspaces."};if(Ve.status===401)return me([]),Z.current=!1,{success:!1,error:"Authentication required."};const ct=await Ve.json().catch(()=>({}));if(c(tt))return{success:!1,error:"Workspace changed while loading workspaces."};if(!Ve.ok||ct?.success===!1)return me([]),Z.current=!1,{success:!1,error:ct?.error||`Failed to load workspaces (${Ve.status})`};const ze=Array.isArray(ct?.workspaces)?ct.workspaces.map(at=>({id:String(at?.id||"").trim(),name:String(at?.name||"").trim(),role:String(at?.role||"member").trim().toLowerCase(),slug:typeof at?.slug=="string"?at.slug:null,description:typeof at?.description=="string"?at.description:null,status:typeof at?.status=="string"?at.status:"",betaAccess:at?.betaAccess===!0})).filter(at=>at.id&&at.name):[];return me(ze),Z.current=!0,G!=="local"&&typeof ct?.currentWorkspaceId=="string"&&ct.currentWorkspaceId.trim().length>0&&Ae(ct.currentWorkspaceId.trim(),{preserveNonDefaultDefault:!0}),{success:!0,workspaces:ze}}catch(Ve){return u(Ve)&&w("Startup checks timed out."),me([]),Z.current=!1,{success:!1,error:i(Ve)?"Workspace list request aborted.":"Failed to load workspaces."}}finally{E.current===xt&&(E.current=null)}},[Ae,h,s,i,u,c,w,G,me,E,Z,he]),rt=a.useCallback(async()=>{const tt=s(),xt=new AbortController;z.current=xt,Fe(!1);try{const[Ve,ct]=await Promise.all([h("/api/taskforce/workspace/assignee-options",{method:"GET",credentials:"include"},12e3,{signal:xt.signal}),Ce&&le?h("/api/taskforce/auth/workspace-members",{method:"GET",credentials:"include"},12e3,{signal:xt.signal}).catch(()=>null):Promise.resolve(null)]);if(o(tt))return{success:!1,error:"Workspace changed while loading assignee options."};if(Ve.status===401)return Ne(Wo()),Fe(!0),{success:!1,error:"Authentication required."};const ze=await Ve.json().catch(()=>({}));if(o(tt))return{success:!1,error:"Workspace changed while loading assignee options."};if(!Ve.ok)return Ne(Wo()),Fe(!0),{success:!1,error:ze?.error||`Failed to load assignee options (${Ve.status})`};const at=Array.isArray(ze?.assignees)?ze.assignees:[],Nt=at.map(ve=>{const Re=String(ve?.value||"").trim(),vt=String(ve?.kind||"").trim().toLowerCase();return Re?vt==="agent"||vt==="ai"?{value:Re,label:String(ve?.label||Re).trim()||Re,icon:String(ve?.icon||"Bot"),color:String(ve?.color||"#8b5cf6"),kind:"agent"}:vt==="member"||vt==="human"?{value:Re,label:String(ve?.label||Re).trim()||Re,icon:String(ve?.icon||"User"),color:String(ve?.color||"#22c55e"),kind:"member"}:null:null}).filter(Boolean),Rt=at.map(ve=>({userId:String(ve?.userId||"").trim(),email:String(ve?.email||"").trim().toLowerCase(),displayName:typeof ve?.displayName=="string"?ve.displayName:null})).filter(ve=>ve.userId);let ot=Rt;if(ct?.ok){const ve=await ct.json().catch(()=>({})),Re=Array.isArray(ve?.users)?ve.users:[],vt=String(be||"").trim(),Oe=Re.find(Se=>String(Se?.userId||"").trim()===vt),kt=String(Oe?.role||"").trim().toLowerCase();kt==="owner"||kt==="admin"||kt==="member"||kt==="read-only"?Ie(kt):!he&&Re.length===0&&Ie(null);const J=Re.map(Se=>({userId:String(Se?.userId||"").trim(),email:String(Se?.email||"").trim().toLowerCase(),displayName:typeof Se?.displayName=="string"?Se.displayName:null})).filter(Se=>Se.userId);ot=Array.from(new Map([...Rt,...J].map(Se=>[Se.userId,Se])).values())}else!he&&!Rt.length&&Ie(null);const ke=zl([...Nt,...Qy(ot).filter(ve=>ve.kind==="member")]);return o(tt)?{success:!1,error:"Workspace changed while loading assignee options."}:(Ne(ke),Fe(!0),{success:!0})}catch(Ve){return o(tt)||(Ne(Wo()),Fe(!0)),{success:!1,error:i(Ve)?"Assignee options request aborted.":"Failed to load assignee options."}}finally{z.current===xt&&(z.current=null)}},[z,Ce,be,h,s,i,le,o,Ne,Fe,Ie,he]),At=a.useCallback(async(tt,xt)=>{if(!he)return{success:!1,error:"Workspace switching is unavailable in local mode.",code:"WORKSPACE_SWITCHING_DISABLED"};const Ve=String(tt||"").trim();if(!Ve)return{success:!1,error:"workspaceId is required."};try{const ct=await fetch("/api/taskforce/session/workspace",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:Ve})}),ze=await ct.json().catch(()=>({}));if(!ct.ok||ze?.success===!1)return{success:!1,error:ze?.error||`Failed to switch workspace (${ct.status})`,code:ze?.code};D(Ve,{clearExplicitSelection:!1}),A(),_(!0),k("workspace");const at=await M({force:!0});return xt?.hydrate===!1?await l():(H.current=`${G}:${Ve}:${p}`,R.current=`${G}:${at?"auth":"guest"}:${Ve}`,re.current=Ve,W&&Q==="tasks"&&(V.current=`${Ve}:${Q}:${ge?"archive":"active"}:${Me}`),W&&Q==="settings"&&(ie.current=`${Ve}:${Q}:${ye}`),await Promise.all([Be(),l(),bt({isSilent:!1}),rt(),qe()])),{success:!0}}catch{return{success:!1,error:"Failed to switch workspace."}}finally{_(!1)}},[A,Q,M,D,rt,Be,l,W,R,H,ie,V,re,qe,k,bt,G,ye,_,ge,Me,p,he]),jt=a.useCallback(async tt=>{k("workspace"),_(!0);try{if(!he){const ot=String(I||"").trim()||"default";return D(ot),{success:!0,workspaceSetupRequired:!1,workspaceId:ot}}const xt=String(tt?.preferredWorkspaceId||"").trim(),Ve=Lm(p),ct=await l();if(!ct.success)return{success:!1,workspaceSetupRequired:!1,error:ct.error||"Failed to load workspaces after authentication."};const ze=Array.isArray(ct.workspaces)?ct.workspaces:[];if(ze.length===0)return D("default"),{success:!0,workspaceSetupRequired:!0};const at=new Set(ze.map(ot=>String(ot.id||"").trim()).filter(Boolean)),Nt=(xt&&at.has(xt)?xt:"")||(Ve&&at.has(Ve)?Ve:"")||String(ze[0]?.id||"").trim();if(!Nt)return D("default"),{success:!0,workspaceSetupRequired:!0};if(String(q.current||"").trim()!==Nt){const ot=await At(Nt,{hydrate:!1});if(!ot.success)return{success:!1,workspaceSetupRequired:!1,error:ot.error||"Failed to set workspace after authentication.",code:ot.code}}else D(Nt);return{success:!0,workspaceSetupRequired:!1,workspaceId:Nt}}catch{return w("Unable to resolve workspace access."),{success:!1,workspaceSetupRequired:!1,error:"Failed to resolve workspace access."}}finally{_(!1)}},[D,I,q,l,k,w,_,At,p,he]),It=a.useCallback(async()=>{k("auth");const tt=await M({force:!0});if(he&&tt){const xt=await jt();if(!xt.success||xt.workspaceSetupRequired){await Be({ignoreAuthGuard:!0});return}}await Be({ignoreAuthGuard:!0})},[M,Be,k,jt,he]);return a.useEffect(()=>{!n&&!r&&!$e.current&&($e.current=!0,(async()=>{if(G==="cloud"&&Ce&&le){const tt=await jt();if(!tt.success||tt.workspaceSetupRequired){await ee(),He();return}}await ee(),await Promise.all([Ue(!1),He(),Ye()]),typeof window<"u"&&(Qe.current!==null&&window.clearTimeout(Qe.current),Qe.current=window.setTimeout(()=>{Qe.current=null,pt(!0).then(()=>On("bootstrap_archive_loaded_deferred",{}))},1500))})())},[Qe,Ce,pt,ee,Ye,He,Ue,$e,le,jt,G,r,n]),a.useEffect(()=>{if(n||r||p==="bootstrap"||!$e.current)return;const tt=`${G}:${I}:${p}`;H.current!==tt&&(H.current=tt,Be())},[I,Be,$e,H,G,r,n,p]),a.useEffect(()=>{if(n||r)return;const tt=I;re.current!==tt&&(re.current=tt,qe())},[I,re,qe,r,n]),a.useEffect(()=>{if(G!=="cloud"||!Ce||!le){G!=="cloud"&&me([]),Z.current=!1;return}!$e.current||Z.current||l()},[Ce,l,$e,le,G,me,Z]),{fetchReferenceData:He,fetchBootstrapConfig:ee,fetchConfig:Be,fetchWorkspaces:l,fetchAssigneeOptions:rt,switchWorkspace:At,resolveWorkspaceAfterAuth:jt,retryBootstrapChecks:It}}function tS({isOpen:e,authBlocked:n,authRequiredForApi:r,isAuthenticated:s,canCallProtectedApi:o,shouldGateProtectedApiCalls:c,authSessionResolvedRef:i,authRequiredForApiRef:u,isAuthenticatedRef:h,dataVersionRef:v,refreshTaskCollectionsForDataVersion:x}){a.useEffect(()=>{if(typeof window>"u"||typeof document>"u"||Yv({isOpen:e,authBlocked:n,authRequiredForApi:r,isAuthenticated:s,canCallProtectedApi:o}))return;let S=!1;const y=async()=>{if(!(S||document.visibilityState!=="visible")&&!Jv({shouldGateProtectedApiCalls:c,authSessionResolved:i.current,authRequiredForApi:u.current,isAuthenticated:h.current}))try{const P=await fetch("/api/taskforce/data-version");if(!P.ok)return;const b=await P.json(),j=Number(b?.dataVersion);if(!Number.isFinite(j))return;if(v.current===null){v.current=j;return}j!==v.current&&(v.current=j,await x())}catch{}},k=()=>{document.visibilityState==="visible"&&y()},w=window.setInterval(()=>{y()},3e3);return document.addEventListener("visibilitychange",k),y(),()=>{S=!0,window.clearInterval(w),document.removeEventListener("visibilitychange",k)}},[e,n,r,s,o,c,i,u,h,v,x])}const nS={},ro=ep(nS),vm=(()=>{const e=ro.baseUrl,n=ro.cloudAuthBaseUrl;if(n)return n;const r=ro.apiBaseUrl;return r||e||"https://app.taskforcehq.ai"})(),Sm=12e3;function aS({config:e={},initialTaskId:n,onTaskCountChange:r,onClose:s}){const o={...hy,...e},{categories:c,types:i,apiEndpoint:u,apiBaseUrl:h,cloudAuthBaseUrl:v,cloudMcpBaseUrl:x,wsBaseUrl:S,shortcut:y}=o,k=typeof window<"u"?String(window.location.hostname||"").trim().toLowerCase():"",w=k==="localhost"||k==="127.0.0.1"||k==="::1",P=typeof window<"u"&&!w,[b,j]=a.useState({cloudEnvironment:"",cloudBaseUrl:"",cloudMcpBaseUrl:"",baseUrl:"",apiBaseUrl:"",cloudAuthBaseUrl:"",wsBaseUrl:"",cloudAuthViaLocalProxy:!1,authSource:"",workspaceMode:"",workspaceSwitchingEnabled:null}),[F,B]=a.useState(!1),se=a.useCallback(f=>typeof f=="string"?f.trim().replace(/\/+$/,""):"",[]);a.useEffect(()=>{if(typeof window>"u"){B(!0);return}let f=!1;return(async()=>{try{const L=await fetch("/api/taskforce/auth/runtime-config",{method:"GET",credentials:"include"});if(!L.ok)return;const X=await L.json().catch(()=>({})),oe=X?.config&&typeof X.config=="object"?X.config:{};if(f)return;const Ge=String(oe.runtimeMode||"").trim().toLowerCase()==="cloud"?"cloud":"local",et=String(oe.workspaceMode||"").trim(),_n=et==="single-local"||et==="multi-cloud"?et:Ge==="cloud"?"multi-cloud":"single-local";j({cloudEnvironment:typeof oe.cloudEnvironment=="string"?String(oe.cloudEnvironment).trim().toLowerCase():"",cloudBaseUrl:se(oe.cloudBaseUrl),cloudMcpBaseUrl:se(oe.cloudMcpBaseUrl),baseUrl:se(oe.baseUrl),apiBaseUrl:se(oe.apiBaseUrl),cloudAuthBaseUrl:se(oe.cloudAuthBaseUrl),wsBaseUrl:se(oe.wsBaseUrl),cloudAuthViaLocalProxy:!!oe.cloudAuthViaLocalProxy,authSource:"cloud",workspaceMode:_n,workspaceSwitchingEnabled:typeof oe.workspaceSwitchingEnabled=="boolean"?!!oe.workspaceSwitchingEnabled:_n==="multi-cloud"})}catch{}finally{f||B(!0)}})(),()=>{f=!0}},[se]);const K=typeof window>"u"?"":w?vm:"",te=se(ro.baseUrl),N=se(ro.apiBaseUrl),fe=se(ro.cloudBaseUrl),$=se(ro.cloudMcpBaseUrl),q=se(ro.cloudAuthBaseUrl),de=se(ro.wsBaseUrl),ue=se(h),Y=se(v),E=se(x),z=ue||N||te,Z=b.apiBaseUrl||b.baseUrl,me=z||Z||"",G=Y||q||te,Ae=b.cloudAuthBaseUrl||b.baseUrl,Ce=((w?Ae||G:G||Ae)||me||K).trim().replace(/\/+$/,""),le=se(Gy(b.cloudMcpBaseUrl||b.cloudAuthBaseUrl||b.cloudBaseUrl||E||Y||$||q||fe||Ce)),be=(b.cloudMcpBaseUrl||E||le||b.cloudBaseUrl||$||fe||Ce||K).trim().replace(/\/+$/,""),Ie=!P&&!!Ce&&!me,Ne=F&&(!!(Ce||me)||P),Fe=Ne&&!Ie,D=!!(Ce||me||P),I=P?"cloud":"local",p=I==="local"&&w&&D?ap():"",A=p.length>0,_=a.useCallback(f=>!f||/^https?:\/\//i.test(f)||!me||!f.startsWith("/")?f:`${me}${f}`,[me]),M=a.useCallback(f=>{if(!f||/^https?:\/\//i.test(f)||!f.startsWith("/"))return f;const L=f.startsWith("/api/taskforce/auth/")||f.startsWith("/api/taskforce/account/")||f.startsWith("/api/taskforce/billing/")||f.startsWith("/api/taskforce/sync/")||f.startsWith("/api/taskforce/settings/mcp/");if(!P&&L&&(!F||b.cloudAuthViaLocalProxy||b.workspaceMode==="multi-cloud"))return f;const X=Ce||me;if(X){const oe=`${X}${f}`;if(typeof window<"u"&&!P&&L)try{if(new URL(oe,window.location.origin).origin===window.location.origin)return`${vm}${f}`}catch{return`${vm}${f}`}return oe}return f},[F,b.cloudAuthViaLocalProxy,b.workspaceMode,Ce,me,P]),H=a.useCallback(f=>{const L=String(f||"").trim()||"/taskforce-ws",X=L.startsWith("/")?L:`/${L}`,oe=String(S||b.wsBaseUrl||de||me||"").trim().replace(/\/+$/,""),Xe=typeof window<"u"?window.location.origin:"",Ge=oe||Xe;if(!Ge)return"";try{const et=new URL(X,Ge);return et.protocol==="https:"&&(et.protocol="wss:"),et.protocol==="http:"&&(et.protocol="ws:"),et.toString()}catch{return""}},[S,b.wsBaseUrl,de,me]),[R,re]=a.useState("tasks"),[V,ie]=a.useState(!1),[W,Q]=a.useState(!1),[ge,Me]=a.useState("open"),[ye,Ue]=a.useState(vc(o.theme)||mu),[pt,Ye]=a.useState(vc(o.theme)||mu),[bt,qe]=a.useState(!0),[Qe]=a.useState(".taskforce"),$e=!1,[He,ee]=a.useState(!1),[Be,l]=a.useState([]),[rt,At]=a.useState([]),[jt,It]=a.useState(""),[tt,xt]=a.useState(null),[Ve,ct]=a.useState(null),[ze,at]=a.useState(""),[Nt,Rt]=a.useState(""),ot=a.useMemo(()=>Wy({projectRoot:ze,runtimeMode:I}),[ze,I]),[ke,ve]=a.useState(""),[Re,vt]=a.useState(""),[Oe,kt]=a.useState(()=>I),J=Uy(Oe),Se=b.workspaceMode==="single-local"||b.workspaceMode==="multi-cloud"?b.workspaceMode:J.workspaceMode,Ee=typeof b.workspaceSwitchingEnabled=="boolean"?b.workspaceSwitchingEnabled:J.workspaceSwitchingEnabled,[Te,Ze]=a.useState(!1),[nt,St]=a.useState(!1),[dt,Et]=a.useState(A),[Ut,Ht]=a.useState(A?p:"anonymous"),[un,Zt]=a.useState(""),[Gt,ln]=a.useState(""),[Zn,nn]=a.useState(""),[Dt,En]=a.useState(""),[Dn,mn]=a.useState(!0),[rn,ae]=a.useState(null),[xe,We]=a.useState(()=>{if(I==="local")return"default";const f=Lm(ot);return f&&f.toLowerCase()!=="default"?f:"default"}),wt=a.useMemo(()=>Fy({projectRoot:ze,runtimeMode:Oe,workspaceId:xe}),[ze,Oe,xe]),[ft,Bt]=a.useState([]),[Vt,en]=a.useState(()=>Wo()),[Mt,Ln]=a.useState(!1),[qt,Da]=a.useState(A),[zt,yn]=a.useState("idle"),[Cn,kn]=a.useState(null),[Ft,Bn]=a.useState(null),Mn=a.useRef(null),$n=a.useRef(0),_a=a.useRef(0),Tt=a.useRef(A),Jt=a.useRef(xe),Pa=a.useRef(null),In=a.useRef(0),[Ma,gr]=a.useState(0),sa=a.useRef(null),Ur=a.useRef(null),Ca=a.useRef(null),tr=a.useRef(null),Xn=a.useRef(null),Qn=a.useRef(null),ea=a.useCallback((f,L)=>{const X=String(f||"").trim();if(!X)return;const oe=String(Jt.current||"").trim();oe&&oe!==X&&(In.current+=1,gr(In.current)),Jt.current=X,L?.clearExplicitSelection!==!1&&(Pa.current=null),We(X)},[]);a.useEffect(()=>{Jt.current=xe},[xe]);const Rr=a.useCallback(f=>{const L=String(f||"").trim();L&&We(()=>{const X=String(Pa.current||"").trim();let oe=L;return X&&X!==L&&(oe=X),Jt.current=oe,oe})},[]),Un=a.useCallback(()=>({workspaceId:String(Jt.current||"default").trim()||"default",epoch:In.current}),[]),ta=a.useCallback(f=>(String(Jt.current||"default").trim()||"default")!==f.workspaceId||In.current!==f.epoch,[]),yr=a.useCallback(f=>In.current!==f.epoch,[]),gt=a.useCallback(f=>f instanceof DOMException?f.name==="AbortError":String(f?.name||"").toLowerCase()==="aborterror",[]),zn=a.useCallback(()=>{[sa,Ur,Ca,tr,Xn,Qn].forEach(f=>{f.current?.abort("workspace-transition"),f.current=null}),rc.current=null},[]),Hn=a.useMemo(()=>Kv({shouldGateProtectedApiCalls:Fe,runtimeMode:Oe,authSessionResolved:qt,authRequiredForApi:Te,isAuthenticated:dt}),[Fe,Oe,qt,Te,dt]),sn=Hn.shouldDeferProtectedApiCalls,hn=Hn.shouldBlockProtectedApiCalls,[an,qn]=a.useState(null),[La,na]=a.useState(null),[Sn,kr]=a.useState(!1),[tn,nr]=a.useState("unknown"),[Xt,pn]=a.useState(null),[Ba,Wn]=a.useState(o.shortcut||"Alt+T"),[Wa,Fa]=a.useState(o.priorities||[]),[Ot]=a.useState(Of()),[vr,Oa]=a.useState(""),[Er,zr]=a.useState(!1),[$a,Ua]=a.useState(!1),[pa,Aa]=a.useState(!0),[ar,Fn]=a.useState(()=>My()),Hr=a.useMemo(()=>Py(),[]),[An,Sr]=a.useState(()=>{try{return(Intl.DateTimeFormat().resolvedOptions().locale||"").toLowerCase().startsWith("en-us")?"sunday":"monday"}catch{return"monday"}}),[rr,sr]=a.useState(!1),[oa,wr]=a.useState(!0),[Ta,Gr]=a.useState(!0),[br,or]=a.useState(""),[Vr,Pn]=a.useState(null);Zv({currentWorkspaceIdRef:Jt,resolveApiUrl:_,runtimeMode:Oe});const{availableWorkflows:ir,initiativeTemplates:Ia,fetchWorkflows:ia,fetchInitiativeTemplates:fa,fetchWorkflowTemplate:za,fetchWorkflowOverrideNames:De,saveWorkflowTemplateDraft:_t,resetWorkflowTemplateDraft:on}=wv({shouldDeferProtectedApiCalls:sn,shouldBlockProtectedApiCalls:hn}),{zenMode:Nn,setZenModeState:Na,toggleZenMode:xr}=bv(),{exportEnvironment:Ha,setExportEnvironment:Dr,availableEnvironments:ha,loadAvailableEnvironments:ga,exportWorkflowsPath:Kt,setExportWorkflowsPath:cr,exportingResource:ws,exportResult:O,handleExportWorkflows:Je}=yv({storagePath:Qe,shouldDeferProtectedApiCalls:sn,shouldBlockProtectedApiCalls:hn}),[$t,Pt]=a.useState(!1),[Kn,Ga]=a.useState(null),{uiNotice:Gn,pushNotice:ja,clearNotice:Va}=gv(),[Zr,C]=a.useState([]),_e=a.useRef(null),[it,Ct]=a.useState(0),U=a.useCallback(f=>!f||!ze?f:f.startsWith(ze)?f.slice(ze.length).replace(/^[/\\]+/,""):f,[ze]),[je,ca]=a.useState([]),[wn,_r]=a.useState([]),[Za,mo]=a.useState([]),[qa,po]=a.useState([]),[Cr,qr]=a.useState([]),[bs,as]=a.useState(!1),[Ka,Rc]=a.useState(null),[Ec,Dc]=a.useState(!1),[Ps,Ni]=a.useState([]),[la,ji]=a.useState(!1),[Ms,Pc]=a.useState({}),Ar=a.useRef({authSessionResolved:!1,configLoaded:!1,workspaceBootstrapPending:!1});a.useEffect(()=>{Ar.current={authSessionResolved:qt,configLoaded:la,workspaceBootstrapPending:Mt}},[qt,la,Mt]);const Ls=a.useCallback(f=>{yn(f),f!=="ready"&&(kn(null),Bn(Date.now()))},[]),Bs=a.useCallback(f=>{const L=Ar.current;L.authSessionResolved&&L.configLoaded&&!L.workspaceBootstrapPending||(yn("stalled"),kn(f),Bn(X=>X??Date.now()))},[]),$o=a.useCallback(async(f,L,X=Sm,oe)=>{const Xe=new AbortController,Ge=oe?.signal,et=Number(X)>0?Number(X):Sm,_n=typeof window<"u"?window.setTimeout(()=>Xe.abort("bootstrap-timeout"),et):null,jn=()=>{Xe.abort(Ge?.reason||"external-abort")};Ge&&(Ge.aborted?jn():Ge.addEventListener("abort",jn,{once:!0}));try{return await fetch(f,{...L||{},signal:Xe.signal})}catch(ra){if(ra instanceof DOMException?ra.name==="AbortError":String(ra?.name||"").toLowerCase()==="aborterror"){const Wr=new Error(`Startup checks timed out after ${et}ms.`);throw Wr.name="BootstrapTimeoutError",Wr}throw ra}finally{Ge&&Ge.removeEventListener("abort",jn),_n!==null&&typeof window<"u"&&window.clearTimeout(_n)}},[]),fo=a.useCallback(f=>String(f?.name||"")==="BootstrapTimeoutError",[]),[rs,Uo]=a.useState([]),[lr,bn]=a.useState({}),[Ya,Tr]=a.useState(o.taxonomies||[]),gn=a.useMemo(()=>(Ps.length>0?Ps:c||[]).map(L=>typeof L=="string"?{value:L.toLowerCase().replace(/\s+/g,"-"),label:L}:L).sort((L,X)=>L.label.localeCompare(X.label)),[Ps,c]),Mc=a.useMemo(()=>({categories:gn,types:rs,priorities:Wa,taxonomies:Ya,displayLabels:lr}),[gn,rs,Wa,Ya,lr]);a.useMemo(()=>gn.filter(f=>!f.disabled),[gn]);const ss=a.useCallback(f=>f.find(X=>X.value==="default"||X.value==="general"||X.label==="General"||X.value==="Taskforce"||X.label==="Taskforce")?.value||f[0]?.value||"default",[]),aa=rs.length>0?rs:i,[Kr,ho]=a.useState(!1),[ya,dr]=a.useState(""),os="Authentication required. Sign in to continue.",[Ws,Yr]=a.useState(!1),[Fs,is]=a.useState(!1),Jr=a.useCallback(()=>{St(Oe==="cloud"),Et(!1),ln(""),nn(""),En(""),dr(os)},[os,Oe]),{recentlyChangedTaskIds:Os,fetchTasks:Ri,fetchArchive:xs,refreshTaskCollections:Xr,refreshTaskCollectionsFromInvalidation:Qr,mergeTaskFromServer:cs}=_v({tasks:je,archivedTasks:wn,setTasks:ca,setArchivedTasks:_r,setLoadingTasks:as,getCurrentWorkspaceId:()=>Jt.current,workspaceResetKey:`${xe}:${Ma}`,shouldDeferProtectedApiCalls:sn,shouldBlockProtectedApiCalls:hn,handleUnauthorized:Jr,authRequiredForApi:Te});a.useEffect(()=>{Ma!==0&&(zn(),rc.current=null,ri.current="",_o.current="",Vs.current="",Co.current="",fs.current="",si.current="",Ao(!1),Yr(!1),en(Wo()),is(!1),qr([]),ca([]),_r([]),mo([]),po([]),as(!1),ua.current!==null&&typeof window<"u"&&(window.clearTimeout(ua.current),ua.current=null),Ja.current!==null&&typeof window<"u"&&(window.clearTimeout(Ja.current),Ja.current=null))},[zn,_r,as,ca,Ma]);const Ir=a.useCallback(async(f=!1,L)=>{if(!(L?.ignoreAuthGuard===!0)&&(sn||hn))return;f||as(!0);const oe=Un(),Xe=new AbortController;Xn.current=Xe;try{let Ge=await fetch("/api/taskforce/deleted",{signal:Xe.signal});if(Ge.status===404&&(Ge=await fetch("/api/taskforce/trash",{signal:Xe.signal})),Ge.status===401){Jr(),qr([]);return}if(Ge.status===404){qr([]);return}if(Ge.ok){const et=await Ge.json();if(ta(oe))return;const _n=Array.isArray(et?.deleted)?et.deleted.map(jn=>{const ra=jn?.taskSnapshot&&typeof jn.taskSnapshot=="object"?co(jn.taskSnapshot):null;return ra?{...jn,taskSnapshot:ra}:null}).filter(jn=>!!jn):[];qr(_n)}}catch(Ge){if(gt(Ge))return;console.error("[Taskforce] Failed to fetch deleted tasks:",Ge)}finally{Xn.current===Xe&&(Xn.current=null),f||as(!1)}},[Un,Jr,gt,ta,sn,hn]),Qt=a.useCallback(async f=>{if(!(f?.ignoreAuthGuard===!0)&&(sn||hn))return;const X=Un(),oe=new AbortController;Qn.current=oe;try{const[Xe,Ge]=await Promise.all([fetch("/api/taskforce/initiatives",{signal:oe.signal}),fetch("/api/taskforce/workstreams",{signal:oe.signal})]);if(Xe.status===401||Ge.status===401){Jr(),mo([]),po([]);return}const[et,_n]=await Promise.all([Xe.ok?Xe.json().catch(()=>[]):[],Ge.ok?Ge.json().catch(()=>[]):[]]);if(ta(X))return;mo(Array.isArray(et)?et.filter(jn=>!!(jn&&typeof jn=="object"&&typeof jn.id=="string")):[]),po(Array.isArray(_n)?_n.filter(jn=>!!(jn&&typeof jn=="object"&&typeof jn.id=="string")):[])}catch(Xe){if(gt(Xe))return;console.error("[Taskforce] Failed to fetch planning entities:",Xe)}finally{Qn.current===oe&&(Qn.current=null)}},[Un,Jr,gt,ta,sn,hn]),fn=a.useCallback(async(f=!1,L)=>{await Ri(f,L)},[Ri]),ls=a.useCallback(async(f=!1,L)=>{await xs(f,L)},[xs]),zo=a.useCallback(async f=>{const L=f?.isSilent!==!1,X=f?.ignoreAuthGuard===!0;await Promise.all([Xr({isSilent:L,ignoreAuthGuard:X}),Ir(L,{ignoreAuthGuard:X}),Qt({ignoreAuthGuard:X})])},[Ir,Qt,Xr]),Ho=a.useCallback(async()=>{await Qr(),await Ir(!0),await Qt()},[Ir,Qt,Qr]),Ei=a.useRef(()=>{}),ka=a.useRef(()=>{}),_s=a.useRef(async()=>!1),vn=a.useCallback(f=>_s.current(f),[]),{userGlobalSyncStatus:Go,setUserGlobalSyncStatus:Yl,userGlobalSyncError:Jl,setUserGlobalSyncError:$s,workspaceLastPullAt:Iu,workspaceLastPushAt:Xl,workspaceLastErrorAt:Ql,workspaceLastErrorMessage:ed,workspaceLastSuccessfulSyncAt:Lc,workspaceCloudSyncEnabled:Vo,workspaceSyncPhase:Bc,workspaceSyncSetupIntent:go,workspaceSyncStatus:Zo,workspaceSyncSummary:Di,workspaceSyncRecommendedAction:Wc,workspaceSyncBusy:Pi,workspaceSyncPendingChanges:Us,workspacePendingSignatureRef:Yn,workspaceDeletedTaskIdsRef:qo,workspaceDeletedTaskWatermarksRef:Fc,loadWorkspaceSyncState:Mi,applyWorkspaceSyncStateSnapshot:td,syncUserGlobalSettings:ur,buildWorkspaceSyncSignature:nd,pushWorkspaceChangesToCloud:ad,saveWorkspaceCloudSyncSettings:rd,retryUserGlobalSettingsSync:Li,retryWorkspaceCloudSync:va,resetWorkspaceSyncCursorAndPull:es,getWorkspaceSyncDiagnostics:Oc}=fv({currentWorkspaceId:xe,cloudAuthConfigured:D,runtimeMode:Oe,authSessionResolved:qt,isAuthenticated:dt,authUserId:Ut,projectName:Nt,resolveCloudAuthUrl:M,resolveWebSocketUrl:H,realtimeSyncEnabled:Sn,tasks:je,archivedTasks:wn,deletedTasks:Cr,initiatives:Za,workstreams:qa,taxonomies:Ya,taxonomyState:Ws?Mc:void 0,setupState:an,globalTheme:pt,locale:ar,globalWeekStartsOn:An,themeUseGlobalDefault:bt,setTasks:ca,setArchivedTasks:_r,setAuthBlocked:St,setIsAuthenticated:Et,checkAuthSession:vn,setGlobalTheme:Ye,setCurrentTheme:Ue,setSetupState:qn,setLocale:Fn,setGlobalWeekStartsOn:Sr,fetchPlanningEntities:Qt}),$c=a.useCallback((f=aa)=>f.find(L=>String(L.value||"").trim().length>0)?.value||jr,[aa]),[da,ds]=a.useState(()=>ss(gn)),[yo,ko]=a.useState(()=>$c(aa)),[Uc,zc]=a.useState(2),[zs,Bi]=a.useState(3),[sd,Wi]=a.useState("task"),[Ko,Yo]=a.useState("default"),[Fi,ht]=a.useState("unassigned"),[Hc,Gc]=a.useState(""),[us,Vc]=a.useState(""),[Jo,Zc]=a.useState(""),[qc,od]=a.useState(""),[mr,Vn]=a.useState(""),[vo,id]=a.useState([]),[Kc,Hs]=a.useState([]),[cd,Yc]=a.useState(""),[Pr,ld]=a.useState({}),dd=a.useRef(null),[Oi,So]=a.useState(!1),[ms,Xo]=a.useState("");a.useEffect(()=>{if(Ka)return;const f=String(yo||"").trim();aa.some(X=>String(X.value||"").trim()===f)||ko($c(aa))},[aa,Ka,$c,yo]);const{searchQuery:$i,setSearchQuery:Ui,filterCategories:zi,setFilterCategories:Jc,filterPriorities:wo,setFilterPriorities:ps,filterTypes:Ra,setFilterTypes:bo,filterStatus:Gs,setFilterStatus:Hi,filterAssignees:Qo,setFilterAssignees:Gi,filterAssigneesAllSelected:Vi,setFilterAssigneesAllSelected:Nu,filterTaxonomies:Zi,setFilterTaxonomies:Xc,hasInitedFilters:Qc,setHasInitedFilters:Cs,sortBy:qi,setSortBy:Ki,sortOrder:Yi,setSortOrder:ud,toggleSortOrder:el,groupBy:Sa,setGroupBy:tl,emptyColumnMode:Ji,setEmptyColumnMode:nl,collapsedCategories:al,setCollapsedCategories:md,clearFilters:rl,filteredTasks:sl,searchAgnosticTasks:Xi,filteredArchive:pd,groupedTasks:fd}=$v({tasks:je,archivedTasks:wn,activeCategories:gn,activeTypes:aa,priorities:Wa,taxonomies:Ya,configLoaded:la,referenceDataLoaded:Ws,assigneeOptionsLoaded:Fs,assigneeOptions:Vt});Ei.current=Yl,ka.current=$s;const{checkAuthSession:ol}=qv({runtimeConfigReady:F,shouldProbeCloudAuth:Ne,authSessionResolved:qt,resolveCloudAuthUrl:M,authOnlyCloudMode:Ie,authRequiredError:os,runtimeMode:Oe,workspaceSelectionScope:ot,markBootstrapPhase:Ls,markBootstrapStalled:Bs,setRuntimeMode:kt,setAuthRequiredForApi:Ze,setIsAuthenticated:Et,setAuthUserId:Ht,setAuthWorkspaceId:Zt,setAuthUserEmail:ln,setAuthUserDisplayName:nn,setAuthUserAvatarUrl:En,setUserGlobalSyncStatus:f=>Ei.current(f),setUserGlobalSyncError:f=>ka.current(f),setHasBetaAccess:mn,setAvailableWorkspaces:Bt,setHydratedWorkspaceRole:ae,setAssigneeOptions:en,setAuthBlocked:St,setAuthSessionResolved:Da,setError:dr,applyResolvedWorkspaceId:Rr,readPersistedWorkspaceId:Lm,authSessionRequestRef:Mn,authSessionEpochRef:$n,authSessionLastCheckedAtRef:_a,authSessionLastResultRef:Tt,isLoopbackHost:w,setAuthStateReadyRefs:(f,L,X)=>{nc.current=L,ac.current=X,xo.current=f}});_s.current=ol;const[il,ei]=a.useState("tasks"),[ju,hd]=a.useState(!1),[Ru,ti]=a.useState(!1),[Qi,ec]=a.useState(!1),[tc,ni]=a.useState([]),[gd,ai]=a.useState(!1),Eu=a.useRef(null),ua=a.useRef(null),Ja=a.useRef(null),pr=a.useRef(!1),nc=a.useRef(qt),ac=a.useRef(Te),xo=a.useRef(dt),cl=a.useRef(!1),ri=a.useRef(""),_o=a.useRef(""),Vs=a.useRef(""),Co=a.useRef(""),fs=a.useRef(""),si=a.useRef(""),oi=a.useRef(!1),rc=a.useRef(null),sc=a.useRef(!1),Zs=a.useRef(!1),[yd,Ao]=a.useState(!1),{handleSaveSettings:qs,handleSaveTheme:Du,handleSaveGlobalTheme:Pu,handleJsonBackupEnabledChange:kd,handleSaveGlobalJsonBackupEnabled:Mu,handleSaveGlobalWeekStartsOn:Lu,handleSaveLocale:vd,handleManualComplexityEnabledChange:Bu,handleChecklistDropdownEnabledChange:Wu,handleShowTaskCardStatusLabelChange:Fu,handleResetProjectToGlobal:wa}=vv({keyShortcut:Ba,themeUseGlobalDefault:bt,runtimeMode:Oe,jsonBackupUseGlobalDefault:pa,globalTheme:pt,globalJsonBackupEnabled:$a,setCurrentTheme:Ue,setThemeUseGlobalDefault:qe,setGlobalTheme:Ye,setJsonBackupEnabled:zr,setJsonBackupUseGlobalDefault:Aa,setGlobalJsonBackupEnabled:Ua,setGlobalWeekStartsOn:Sr,setLocale:Fn,setManualComplexityEnabled:sr,setChecklistDropdownEnabled:wr,setShowTaskCardStatusLabel:Gr,setShowChecklist:So});a.useEffect(()=>{Oe==="cloud"&&ot!==Fo&&sk(xe,ot)},[Oe,xe,ot]),a.useEffect(()=>{nc.current=qt,ac.current=Te,xo.current=dt},[qt,Te,dt]);const ii=a.useCallback(f=>{if(!f)return;const L=Array.isArray(f.filterCategories)||Array.isArray(f.filterPriorities)||Array.isArray(f.filterTypes)||Array.isArray(f.filterStatus)||Array.isArray(f.filterAssignees)||typeof f.filterAssigneesAllSelected=="boolean"||f.filterTaxonomies&&typeof f.filterTaxonomies=="object";typeof f.activeWorkspaceModule=="string"?ei(f.activeWorkspaceModule):f.groupBy==="docs"&&ei("docs"),f.groupBy&&f.groupBy!=="docs"&&tl(f.groupBy),(f.emptyColumnMode==="show"||f.emptyColumnMode==="collapse"||f.emptyColumnMode==="hide")&&nl(f.emptyColumnMode),typeof f.zenMode=="boolean"&&Na(f.zenMode),typeof f.searchQuery=="string"&&Ui(f.searchQuery),Array.isArray(f.filterCategories)&&Jc(f.filterCategories),Array.isArray(f.filterPriorities)&&ps(f.filterPriorities),Array.isArray(f.filterTypes)&&bo(f.filterTypes),Array.isArray(f.filterStatus)&&Hi(f.filterStatus),Array.isArray(f.filterAssignees)&&Gi(f.filterAssignees),typeof f.filterAssigneesAllSelected=="boolean"&&Nu(f.filterAssigneesAllSelected),f.filterTaxonomies&&typeof f.filterTaxonomies=="object"&&Xc(f.filterTaxonomies),(f.sortBy==="created"||f.sortBy==="priority"||f.sortBy==="updated"||f.sortBy==="complexity")&&Ki(f.sortBy),(f.sortOrder==="asc"||f.sortOrder==="desc")&&ud(f.sortOrder),typeof f.hasInitedFilters=="boolean"?Cs(f.hasInitedFilters):L&&Cs(!0),typeof f.showChecklist=="boolean"&&So(f.showChecklist),typeof f.lastCategory=="string"&&Xo(f.lastCategory),typeof f.exportEnvironment=="string"&&f.exportEnvironment.trim().length>0&&Dr(f.exportEnvironment.trim())},[]),oc=a.useCallback(async f=>{const L=String(f||Jt.current||xe||"default").trim()||"default",X=`${Oe}:${wt}:${L}`;try{const oe=await fetch(`/api/taskforce/ui-state?key=app&workspaceId=${encodeURIComponent(L)}`,{method:"GET",credentials:"include"}),Xe=oe.ok?await oe.json().catch(()=>({})):{},Ge=Xe?.state&&typeof Xe.state=="object"?Xe.state:null,et=Wp(wt),_n=Ge||et?{...et||{},...Ge||{}}:null;if(Jt.current!==L)return;ii(_n),ri.current=X}catch{const oe=Wp(wt);Jt.current===L&&(ii(oe),ri.current=X)}finally{if(Jt.current!==L)return;oi.current=!0,Ao(!0)}},[ii,xe,Oe,wt]);a.useEffect(()=>{const f=`${Oe}:${wt}:${xe}`;cl.current&&ri.current!==f&&(Ao(!1),oc(xe))},[xe,oc,Oe,wt]),a.useEffect(()=>{if(!yd)return;if(oi.current){oi.current=!1;return}const f={groupBy:Sa,activeWorkspaceModule:il,emptyColumnMode:Ji,zenMode:Nn,searchQuery:$i,filterCategories:zi,filterPriorities:wo,filterTypes:Ra,filterStatus:Gs,filterAssignees:Qo,filterAssigneesAllSelected:Vi,filterTaxonomies:Zi,sortBy:qi,sortOrder:Yi,hasInitedFilters:Qc,showChecklist:Oi,lastCategory:ms||"",exportEnvironment:Ha};ok(f,wt);const L=window.setTimeout(async()=>{try{await tp({stateKey:"app",workspaceId:Jt.current,patch:f})}catch{}},250);return()=>window.clearTimeout(L)},[yd,Sa,il,Ji,Nn,$i,zi,wo,Ra,Gs,Qo,Vi,Zi,qi,Yi,Qc,Oi,ms,Ha,wt]);const Sd=a.useCallback(f=>{const L=f.runtimeMode==="cloud"?"cloud":"local",X=!!f.authRequiredForApi,oe=typeof f.userId=="string"&&f.userId.trim().length>0?f.userId.trim():"anonymous",Xe=L==="cloud"&&oe!=="anonymous",Ge=Xe||xo.current,et=nc.current;if(kt(L),Ze(X),Xe&&(Et(!0),Ht(oe),St(!1),et||Da(!0)),typeof f.workspaceId=="string"&&f.workspaceId.trim().length>0){const Vd=f.workspaceId.trim();L==="local"?ea(Vd):Rr(Vd)}St(L==="cloud"&&X?!Ge:!1),f.setupState&&typeof f.setupState=="object"?qn(f.setupState):qn(null),f.runtimeCapabilities&&typeof f.runtimeCapabilities=="object"?na(f.runtimeCapabilities):na(null),kr(!!f.realtimeSyncEnabled);const _n=String(f.realtimeSyncFlagSource||"").trim().toLowerCase();nr(_n==="env"||_n==="settings"||_n==="default"?_n:"unknown"),typeof f.shortcut=="string"&&f.shortcut.trim().length>0&&Wn(f.shortcut);const jn=vc(f.theme);jn&&Ue(jn);const ra=vc(f.globalTheme);ra&&Ye(ra),typeof f.themeUseGlobalDefault=="boolean"&&qe(f.themeUseGlobalDefault);const Jn=f.runtimeMode==="cloud"?"cloud":"local";typeof f.projectRoot=="string"?at(f.projectRoot):Jn==="cloud"&&at(""),typeof f.tenantId=="string"?vt(f.tenantId.trim()):Jn==="cloud"&&vt("");const Wr=Jn==="cloud"?String(f.projectName||"").trim():f.projectName||f.paths?.projectName||"";(String(Wr||"").trim().length>0||Jn==="cloud")&&Rt(Wr),typeof f.mcpScript=="string"?ve(f.mcpScript):Jn==="cloud"&&ve(""),typeof f.hostRoot=="string"?or(f.hostRoot):Jn==="cloud"&&or(""),typeof f.jsonBackupEnabled=="boolean"&&zr(f.jsonBackupEnabled),typeof f.globalJsonBackupEnabled=="boolean"&&Ua(f.globalJsonBackupEnabled),typeof f.jsonBackupUseGlobalDefault=="boolean"&&Aa(f.jsonBackupUseGlobalDefault);const Ns=f?.schedulePreferences?.weekStartsOn;(Ns==="sunday"||Ns==="monday")&&Sr(Ns),typeof f.manualComplexityEnabled=="boolean"&&sr(f.manualComplexityEnabled),typeof f.checklistDropdownEnabled=="boolean"?wr(f.checklistDropdownEnabled):wr(!0),typeof f.showTaskCardStatusLabel=="boolean"?Gr(f.showTaskCardStatusLabel):Gr(!0)},[Rr,ea]),wd=a.useCallback(async()=>{const f=typeof performance<"u"?performance.now():Date.now();try{const L=await $o("/api/taskforce/version",void 0,Sm);if(!L.ok)return;const X=await L.json().catch(()=>({}));X?.build&&typeof X.build=="object"&&pn({version:String(X.build.version||""),gitSha:X.build.gitSha?String(X.build.gitSha):null,buildTime:X.build.buildTime?String(X.build.buildTime):null,deployId:X.build.deployId?String(X.build.deployId):null}),On("build_info_loaded",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-f)})}catch(L){fo(L)&&Bs("Startup checks timed out.")}},[$o,fo,Bs]),{fetchReferenceData:hs,fetchBootstrapConfig:ci,fetchConfig:xn,fetchWorkspaces:Ks,fetchAssigneeOptions:ts,switchWorkspace:As,resolveWorkspaceAfterAuth:fr,retryBootstrapChecks:Ou}=eS({shouldDeferProtectedApiCalls:sn,shouldBlockProtectedApiCalls:hn,getWorkspaceRequestState:Un,isWorkspaceRequestStale:ta,isWorkspaceEpochStale:yr,isAbortError:gt,isBootstrapTimeoutError:fo,fetchWithTimeout:$o,handleUnauthorized:Jr,applyBootstrapConfig:Sd,loadPersistedUiState:oc,fetchBuildInfo:wd,markBootstrapPhase:Ls,markBootstrapStalled:Bs,fetchWorkflows:ia,fetchInitiativeTemplates:fa,loadAvailableEnvironments:ga,setReferenceDataLoaded:Yr,setCustomCategories:Ni,setCustomTypes:Uo,setPriorities:Fa,setTaxonomies:Tr,setTaxonomyDisplayLabels:bn,setConfigLoaded:ji,hasLoadedUiStateRef:cl,currentWorkspaceIdRef:Jt,referenceDataRequestRef:rc,referenceDataAbortRef:Ur,bootstrapConfigAbortRef:sa,workspaceListAbortRef:Ca,assigneeOptionsAbortRef:tr,workspaceListHydratedRef:sc,setAvailableWorkspaces:Bt,runtimeMode:Oe,applyResolvedWorkspaceId:Rr,workspaceSwitchingEnabled:Ee,authSessionResolved:qt,isAuthenticated:dt,authUserId:Ut,setHydratedWorkspaceRole:ae,setAssigneeOptions:en,setAssigneeOptionsLoaded:is,commitCurrentWorkspaceId:(f,L)=>{Pa.current=f,ea(f,L),L?.clearExplicitSelection!==!1&&(Pa.current=null)},currentWorkspaceId:xe,workspaceSelectionScope:ot,abortWorkspaceScopedRequests:zn,setWorkspaceBootstrapPending:Ln,checkAuthSession:vn,lastConfigRefreshKeyRef:Vs,lastAssigneeOptionsLoadKeyRef:_o,lastWorkspaceSyncStateLoadKeyRef:Co,lastTaskSurfaceLoadKeyRef:fs,lastSettingsSurfaceLoadKeyRef:si,isOpen:V,activeTab:R,showArchive:W,taskScope:ge,settingsSection:Ve,fetchTasks:fn,fetchArchive:ls,fetchPlanningEntities:Qt,refreshTaskCollections:zo,loadWorkspaceSyncState:Mi,archiveBootstrapTimerRef:Ja,hasBootstrappedDataRef:Zs}),Ys=a.useCallback(async()=>{await vn(),await xn()},[vn,xn]);a.useEffect(()=>{if(!la||Mt)return;const f=`${Oe}:${dt?"auth":"guest"}:${xe}`;Fs&&_o.current===f||(_o.current=f,ts())},[Fs,la,xe,ts,dt,Oe,Mt]);const li=a.useMemo(()=>Ee?ft.find(L=>L.id===xe)?.role??null:rn,[ft,xe,rn,Ee]);a.useEffect(()=>{dt||ae(null)},[dt]);const $u=a.useCallback(async()=>{if(kn(null),Ls("auth"),!await vn({force:!0}))return await xn({ignoreAuthGuard:!0}),{success:!1,destination:"login",error:"Sign in required.",code:"AUTH_REQUIRED"};if(Ee){const L=await fr();if(!L.success)return await xn({ignoreAuthGuard:!0}),{success:!1,destination:"app",error:L.error||"Unable to resolve workspace after plan selection.",code:L.code};if(L.workspaceSetupRequired)return await xn({ignoreAuthGuard:!0}),{success:!0,destination:"setup"}}return await ci(),await Promise.all([fn(!0,{ignoreAuthGuard:!0}),hs(),Qt()]),{success:!0,destination:"app"}},[vn,ci,xn,Qt,hs,fn,Ls,fr,Ee]),ll=a.useCallback(async(f,L)=>{if(!Ee)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const X=String(f||"").trim();if(!X)return{success:!1,error:"Workspace name is required."};try{const oe=await fetch("/api/taskforce/workspaces",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({name:X,description:typeof L=="string"?L:void 0})}),Xe=await oe.json().catch(()=>({}));if(!oe.ok||Xe?.success===!1)return{success:!1,error:Xe?.error||`Failed to create workspace (${oe.status})`,code:Xe?.code};const Ge=Xe?.workspace;if(await Ks(),Ge?.id){const et=await As(Ge.id);if(!et.success)return{success:!1,error:et.error||"Workspace created but failed to activate.",code:et.code}}return{success:!0,workspace:Ge}}catch{return{success:!1,error:"Failed to create workspace."}}},[Ks,As,Ee]),dl=a.useCallback(async f=>{if(!Ee)return{success:!1,error:"Workspace management is unavailable in local mode.",code:"WORKSPACE_MANAGEMENT_DISABLED"};const L=String(f||"").trim();if(!L)return{success:!1,error:"workspaceId is required.",code:"WORKSPACE_ID_REQUIRED"};try{const X=await fetch(`/api/taskforce/workspaces/${encodeURIComponent(L)}`,{method:"DELETE",credentials:"include"}),oe=await X.json().catch(()=>({}));if(!X.ok||oe?.success===!1)return{success:!1,error:oe?.error||`Failed to delete workspace (${X.status})`,code:oe?.code};await vn({force:!0}),await Promise.all([xn(),Ks()]);const Xe=typeof oe?.nextWorkspaceId=="string"?oe.nextWorkspaceId.trim():"";return Xe&&ea(Xe),{success:!0,nextWorkspaceId:Xe||void 0,workspaceSetupRequired:oe?.workspaceSetupRequired===!0,cleanupWarnings:Array.isArray(oe?.cleanupWarnings)?oe.cleanupWarnings.map(Ge=>String(Ge||"")):[]}}catch{return{success:!1,error:"Failed to delete workspace."}}},[vn,ea,xn,Ks,Ee]),ul=a.useCallback(async f=>{const L=f==="operations"?"operations":"core";try{const X=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:L}})}),oe=await X.json().catch(()=>({}));return!X.ok||oe?.success===!1?!1:(await Ys(),!0)}catch{return!1}},[Ys]),Js=a.useCallback(async f=>{const L=String(f?.name||"").trim(),X=typeof f?.workspaceId=="string"?f.workspaceId.trim():"";if(!L)return{success:!1,error:"Workspace name is required.",code:"WORKSPACE_NAME_REQUIRED"};try{const oe=await fetch("/api/taskforce/workspace-profile",{method:"POST",headers:{"Content-Type":"application/json","x-taskforce-runtime-mode":Oe},credentials:"include",body:JSON.stringify({workspaceId:X&&X!=="default"?X:void 0,name:L,description:typeof f.description=="string"?f.description:void 0,allowCreate:!0})}),Xe=await oe.json().catch(()=>({}));if(!oe.ok||Xe?.success===!1)return{success:!1,error:Xe?.error||`Failed to save workspace (${oe.status})`,code:Xe?.code};const Ge=String(Xe?.workspace?.id||"").trim();if(Ge&&(ea(Ge),await new Promise(et=>window.setTimeout(et,0)),Oe==="cloud"&&dt&&Ge!==xe)){const et=await As(Ge);if(!et.success)return{success:!1,error:et.error||"Workspace saved but failed to activate session workspace.",code:"WORKSPACE_SWITCH_FAILED"}}return await Ys(),{success:!0,workspaceId:Ge||void 0}}catch{return{success:!1,error:"Failed to save workspace profile."}}},[ea,Ys,Oe,dt,xe,As]),hr=a.useCallback(async(f,L)=>{if(!D)return{success:!1,error:"Cloud auth endpoint is not configured."};const X=f.trim().toLowerCase(),oe=L;if(!X||!oe)return{success:!1,error:"Email and password are required."};try{const Xe=await fetch(M("/api/taskforce/auth/login"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:X,password:oe})}),Ge=await Xe.json().catch(()=>({}));if(!Xe.ok||!Ge?.success)return{success:!1,error:Ge?.error||"Sign in failed.",code:Ge?.code};dr(""),await vn({force:!0});const et=await fr();return et.success?et.workspaceSetupRequired?(await xn({ignoreAuthGuard:!0}),{success:!0,workspaceSetupRequired:!0}):(await Promise.all([xn({ignoreAuthGuard:!0}),fn(!0,{ignoreAuthGuard:!0})]),ur({preferCloudOnFirstSync:!0}),{success:!0}):{success:!1,error:et.error||"Unable to resolve workspace after sign in.",code:et.code}}catch{return{success:!1,error:"Sign in failed."}}},[vn,xn,fn,fr,ur,M,D]),To=a.useCallback(async(f,L,X)=>{if(!D)return{success:!1,error:"Cloud auth endpoint is not configured."};const oe=f.trim().toLowerCase(),Xe=L;if(!oe||!Xe)return{success:!1,error:"Email and password are required."};try{const Ge=await fetch(M("/api/taskforce/auth/register"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:oe,password:Xe,...typeof X?.displayName=="string"&&X.displayName.trim()?{displayName:X.displayName.trim()}:{},...typeof X?.planId=="string"&&X.planId.trim()?{planId:X.planId.trim()}:{},...typeof X?.planVersionId=="string"&&X.planVersionId.trim()?{planVersionId:X.planVersionId.trim()}:{},...typeof X?.interval=="string"&&X.interval.trim()?{interval:X.interval.trim()}:{}})}),et=await Ge.json().catch(()=>({}));if(!Ge.ok||!et?.success)return{success:!1,error:et?.error||"Create account failed.",code:et?.code,verificationRequired:!!et?.verificationRequired,verificationToken:typeof et?.verificationToken=="string"?et.verificationToken:void 0,emailSent:et?.emailSent!==!1,emailError:typeof et?.emailError=="string"?et.emailError:void 0};const _n=et?.planSelectionRequired===!0,jn=et?.checkoutPending===!0,ra=typeof et?.commercialState=="string"?et.commercialState:null,Jn=!!et?.verificationRequired;if(!Jn){dr(""),await vn({force:!0});const Wr=await fr();if(!Wr.success)return{success:!1,error:Wr.error||"Unable to resolve workspace after registration.",code:Wr.code};const Ns=!!(_n||jn||ra==="pending_plan_selection"||ra==="checkout_pending");return Wr.workspaceSetupRequired||Ns?await xn({ignoreAuthGuard:!0}):(await Promise.all([xn({ignoreAuthGuard:!0}),fn(!0,{ignoreAuthGuard:!0})]),ur({preferCloudOnFirstSync:!0})),{success:!0,workspaceSetupRequired:Wr.workspaceSetupRequired,planSelectionRequired:_n,checkoutPending:jn,commercialState:ra,verificationRequired:Jn,verificationToken:typeof et?.verificationToken=="string"?et.verificationToken:void 0,emailSent:et?.emailSent!==!1,emailError:typeof et?.emailError=="string"?et.emailError:void 0}}return{success:!0,workspaceSetupRequired:!!et?.workspaceSetupRequired,planSelectionRequired:_n,checkoutPending:jn,commercialState:ra,verificationRequired:Jn,verificationToken:typeof et?.verificationToken=="string"?et.verificationToken:void 0,emailSent:et?.emailSent!==!1,emailError:typeof et?.emailError=="string"?et.emailError:void 0}}catch{return{success:!1,error:"Create account failed."}}},[vn,xn,fn,fr,ur,M,D]),Uu=a.useCallback(async f=>{if(!D)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=String(f.displayName||"").trim(),X=typeof f.avatarDraftId=="string"?f.avatarDraftId.trim():"",oe=f.clearAvatar===!0;if(!L)return{success:!1,error:"Display name is required."};try{const Xe=await fetch(M("/api/taskforce/auth/profile"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({displayName:L,...X?{avatarDraftId:X}:{},...oe?{clearAvatar:!0}:{}})}),Ge=await Xe.json().catch(()=>({}));if(!Xe.ok||!Ge?.success)return{success:!1,error:Ge?.error||"Failed to update profile.",code:Ge?.code};const et={userId:typeof Ge?.profile?.userId=="string"?Ge.profile.userId:Ut,email:typeof Ge?.profile?.email=="string"?Ge.profile.email:Gt,displayName:typeof Ge?.profile?.displayName=="string"?Ge.profile.displayName:null,avatarUrl:typeof Ge?.profile?.avatarUrl=="string"?Ge.profile.avatarUrl:null};return nn(et.displayName||""),En(et.avatarUrl||""),{success:!0,profile:et}}catch{return{success:!1,error:"Failed to update profile."}}},[M,D,Gt,Ut]),bd=a.useCallback(async f=>{if(!D)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=f.trim().toLowerCase();if(!L)return{success:!1,error:"Email is required."};try{const X=await fetch(M("/api/taskforce/auth/verify-email/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:L})}),oe=await X.json().catch(()=>({}));return!X.ok||!oe?.success?{success:!1,error:oe?.error||"Failed to request verification email.",code:oe?.code}:{success:!0,verificationToken:oe?.verificationToken??null,emailSent:oe?.emailSent!==!1,deliveryAttempted:oe?.deliveryAttempted===!0||typeof oe?.verificationToken=="string"&&oe.verificationToken.trim().length>0,emailError:typeof oe?.emailError=="string"?oe.emailError:void 0}}catch{return{success:!1,error:"Failed to request verification email."}}},[M,D]),zu=a.useCallback(async f=>{if(!D)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=f.trim();if(!L)return{success:!1,error:"Token is required."};try{const X=await fetch(M("/api/taskforce/auth/verify-email/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:L})}),oe=await X.json().catch(()=>({}));return!X.ok||!oe?.success?{success:!1,error:oe?.error||"Verification failed.",code:oe?.code}:{success:!0}}catch{return{success:!1,error:"Verification failed."}}},[M,D]),ml=a.useCallback(async f=>{if(!D)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=f.trim().toLowerCase();if(!L)return{success:!1,error:"Email is required."};try{const X=await fetch(M("/api/taskforce/auth/password-reset/request"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({email:L})}),oe=await X.json().catch(()=>({}));return!X.ok||!oe?.success?{success:!1,error:oe?.error||"Failed to request password reset.",code:oe?.code}:{success:!0,resetToken:oe?.resetToken??null,emailSent:oe?.emailSent!==!1,deliveryAttempted:oe?.deliveryAttempted===!0||typeof oe?.resetToken=="string"&&oe.resetToken.trim().length>0,emailError:typeof oe?.emailError=="string"?oe.emailError:void 0}}catch{return{success:!1,error:"Failed to request password reset."}}},[M,D]),Hu=a.useCallback(async(f,L)=>{if(!D)return{success:!1,error:"Cloud auth endpoint is not configured."};const X=f.trim(),oe=L;if(!X||!oe)return{success:!1,error:"Token and password are required."};try{const Xe=await fetch(M("/api/taskforce/auth/password-reset/confirm"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:X,password:oe})}),Ge=await Xe.json().catch(()=>({}));return!Xe.ok||!Ge?.success?{success:!1,error:Ge?.error||"Failed to reset password.",code:Ge?.code}:{success:!0}}catch{return{success:!1,error:"Failed to reset password."}}},[M,D]),Mr=a.useCallback(async f=>{if(!D)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=f.trim();if(!L)return{success:!1,error:"Token is required."};try{const X=await fetch(M("/api/taskforce/auth/invite/inspect"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:L})}),oe=await X.json().catch(()=>({}));return!X.ok||!oe?.success?{success:!1,error:oe?.error||"Invite inspection failed.",code:oe?.code,state:oe?.state}:{success:!0,state:oe?.state,email:typeof oe?.email=="string"?oe.email:void 0,workspaceId:typeof oe?.workspaceId=="string"?oe.workspaceId:void 0,inviteeKind:oe?.inviteeKind==="existing_user"?"existing_user":"new_user",passwordRequired:oe?.passwordRequired===!0}}catch{return{success:!1,error:"Invite inspection failed."}}},[M,D]),Gu=a.useCallback(async(f,L)=>{if(!D)return{success:!1,error:"Cloud auth endpoint is not configured."};const X=f.trim(),oe=L;if(!X||!oe)return{success:!1,error:"Token and password are required."};try{const Xe=await fetch(M("/api/taskforce/auth/invite/accept"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:X,password:oe})}),Ge=await Xe.json().catch(()=>({}));if(!Xe.ok||!Ge?.success)return{success:!1,error:Ge?.error||"Invite acceptance failed.",code:Ge?.code};dr(""),await vn({force:!0});const et=typeof Ge?.workspaceId=="string"?Ge.workspaceId:null,_n=await fr({preferredWorkspaceId:et});return _n.success?_n.workspaceSetupRequired?{success:!0,workspaceSetupRequired:!0}:(await Promise.all([xn({ignoreAuthGuard:!0}),fn(!0,{ignoreAuthGuard:!0})]),ur({preferCloudOnFirstSync:!0}),{success:!0}):{success:!1,error:_n.error||"Unable to resolve workspace after invite acceptance.",code:_n.code}}catch{return{success:!1,error:"Invite acceptance failed."}}},[vn,xn,fn,fr,ur,M,D]),Lr=a.useCallback(async f=>{if(!D)return{success:!1,error:"Cloud auth endpoint is not configured."};const L=f.trim();if(!L)return{success:!1,error:"Token is required."};try{const X=await fetch(M("/api/taskforce/auth/invite/join"),{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:L})}),oe=await X.json().catch(()=>({}));if(!X.ok||!oe?.success)return{success:!1,error:oe?.error||"Invite join failed.",code:oe?.code};dr(""),await vn({force:!0});const Xe=typeof oe?.workspaceId=="string"?oe.workspaceId:null,Ge=await fr({preferredWorkspaceId:Xe});return Ge.success?Ge.workspaceSetupRequired?{success:!0,workspaceSetupRequired:!0}:(await Promise.all([xn({ignoreAuthGuard:!0}),fn(!0,{ignoreAuthGuard:!0})]),ur({preferCloudOnFirstSync:!0}),{success:!0}):{success:!1,error:Ge.error||"Unable to resolve workspace after invite join.",code:Ge.code}}catch{return{success:!1,error:"Invite join failed."}}},[vn,xn,fn,fr,ur,M,D]),pl=a.useCallback(()=>{zn(),rc.current=null,ri.current="",_o.current="",Vs.current="",Co.current="",fs.current="",si.current="",Ao(!1),Yr(!1),en(Wo()),is(!1),qr([]),ca([]),_r([]),mo([]),po([]),as(!1),ua.current!==null&&typeof window<"u"&&(window.clearTimeout(ua.current),ua.current=null),Ja.current!==null&&typeof window<"u"&&(window.clearTimeout(Ja.current),Ja.current=null)},[zn,_r,ca]),xd=a.useCallback(async()=>{try{D&&await fetch(M("/api/taskforce/auth/logout"),{method:"POST",credentials:"include"})}catch{}finally{if(zn(),$n.current+=1,Mn.current=null,Tt.current=!1,_a.current=Date.now(),Et(!1),Da(!0),Ht("anonymous"),Zt(""),Dl(null),ln(""),nn(""),En(""),Yl("disconnected"),$s(null),mn(!0),Rt(""),ji(!1),Yr(!1),qn(null),yn("idle"),kn(null),cl.current=!1,Oe!=="local"&&Bp(ot),St(Oe==="cloud"&&Te),ea("default"),Bt([]),sc.current=!1,ae(null),Oe==="local"){await Promise.allSettled([xn({ignoreAuthGuard:!0}),fn(!0,{ignoreAuthGuard:!0}),Qt({ignoreAuthGuard:!0}),hs({ignoreAuthGuard:!0,force:!0})]);return}Zs.current=!1,pl()}},[zn,Te,Bp,ea,M,D,ot,Oe,xn,Qt,hs,fn,pl]),di=a.useCallback(async f=>{try{const L=await fetch("/api/taskforce/initiative-templates/create",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)}),X=await L.json().catch(()=>({}));return!L.ok||!X?.success?{success:!1,error:X?.error||`Create failed (${L.status})`}:(await fn(!0),{success:!0,result:X?.results})}catch(L){return{success:!1,error:L.message}}},[fn]),ui=a.useCallback(async f=>{const L=await fetch("/api/taskforce/initiative",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f||{})}),X=await L.json().catch(()=>({}));if(!L.ok)throw new Error(X?.error||`Failed to create initiative (${L.status})`);return await Qt(),X},[Qt]),fl=a.useCallback(async(f,L)=>{const X=await fetch(`/api/taskforce/initiative/${encodeURIComponent(f)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(L||{})}),oe=await X.json().catch(()=>({}));if(!X.ok)throw new Error(oe?.error||`Failed to update initiative (${X.status})`);return await Qt(),oe},[Qt]),hl=a.useCallback(async f=>{const L=await fetch(`/api/taskforce/initiative/${encodeURIComponent(f)}/archive`,{method:"POST"}),X=await L.json().catch(()=>({}));if(!L.ok)throw new Error(X?.error||`Failed to archive initiative (${L.status})`);return await Qt(),X},[Qt]),Vu=a.useCallback(async f=>{const L=await fetch(`/api/taskforce/initiative/${encodeURIComponent(f)}/unarchive`,{method:"POST"}),X=await L.json().catch(()=>({}));if(!L.ok)throw new Error(X?.error||`Failed to unarchive initiative (${L.status})`);return await Qt(),X},[Qt]),Io=a.useCallback(async f=>{const L=await fetch("/api/taskforce/workstream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f||{})}),X=await L.json().catch(()=>({}));if(!L.ok)throw new Error(X?.error||`Failed to create workstream (${L.status})`);return await Qt(),X},[Qt]),ic=a.useCallback(async(f,L)=>{const X=await fetch(`/api/taskforce/workstream/${encodeURIComponent(f)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(L||{})}),oe=await X.json().catch(()=>({}));if(!X.ok)throw new Error(oe?.error||`Failed to update workstream (${X.status})`);return await Qt(),oe},[Qt]),_d=a.useCallback(async f=>{const L=await fetch(`/api/taskforce/workstream/${encodeURIComponent(f)}/archive`,{method:"POST"}),X=await L.json().catch(()=>({}));if(!L.ok)throw new Error(X?.error||`Failed to archive workstream (${L.status})`);return await Qt(),X},[Qt]),Cd=a.useCallback(async f=>{const L=await fetch(`/api/taskforce/workstream/${encodeURIComponent(f)}/unarchive`,{method:"POST"}),X=await L.json().catch(()=>({}));if(!L.ok)throw new Error(X?.error||`Failed to unarchive workstream (${L.status})`);return await Qt(),X},[Qt]),Ad=a.useRef(!1);a.useEffect(()=>{ie(!0),!Ad.current&&(Ad.current=!0,vn())},[vn]),a.useEffect(()=>{F&&vn()},[F,vn]),a.useEffect(()=>{if(Oe!=="local"||!Ne||typeof window>"u")return;const f=()=>{vn()},L=()=>{document.visibilityState==="visible"&&f()};window.addEventListener("focus",f),window.addEventListener("online",f),document.addEventListener("visibilitychange",L);const X=window.setInterval(f,3e4);return()=>{window.removeEventListener("focus",f),window.removeEventListener("online",f),document.removeEventListener("visibilitychange",L),window.clearInterval(X)}},[Oe,Ne,vn]),a.useEffect(()=>{sn||hn||Zs.current||(Zs.current=!0,(async()=>{if(Oe==="cloud"&&qt&&dt){const f=await fr();if(!f.success||f.workspaceSetupRequired){await ci(),hs();return}}await ci(),await Promise.all([(async()=>{const f=typeof performance<"u"?performance.now():Date.now();await fn(!1),On("bootstrap_tasks_loaded",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-f)})})(),hs(),Qt()]),typeof window<"u"&&(Ja.current!==null&&window.clearTimeout(Ja.current),Ja.current=window.setTimeout(()=>{Ja.current=null;const f=typeof performance<"u"?performance.now():Date.now();ls(!0).then(()=>{On("bootstrap_archive_loaded_deferred",{durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-f)})})},1500))})())},[sn,hn,Oe,qt,dt,fr,ci,fn,ls,hs,Qt]),a.useEffect(()=>{if(sn||hn||Mt||ot===Fo||!Zs.current)return;const f=`${Oe}:${xe}:${ot}`;Vs.current!==f&&(Vs.current=f,xn())},[xe,sn,hn,Mt,Oe,ot,xn]),a.useEffect(()=>{if(sn||hn||Mt)return;const f=xe;Co.current!==f&&(Co.current=f,Mi())},[sn,hn,xe,Mi,Mt]),a.useEffect(()=>{if(Oe!=="cloud"||!qt||!dt){Oe!=="cloud"&&Bt([]),sc.current=!1;return}Mt||!Zs.current||sc.current||Ks()},[Oe,qt,dt,Ks,Mt]),a.useEffect(()=>{r&&r(je.length)},[je.length,r]),a.useEffect(()=>{if(n&&je.length>0){const f=je.find(L=>L.id.endsWith(n)||L.id===n);f&&(Od(f),Eo("add"))}},[n,je]);const mi=a.useRef(!1);a.useEffect(()=>{if(!la)return;if(!mi.current&&gn.length>0){mi.current=!0;const L=ms,X=gn.some(oe=>oe.label===L||oe.value===L);if(L&&X){const oe=gn.find(Xe=>Xe.label===L||Xe.value===L);ds(oe?.value||L)}else ds(ss(gn));return}const f=gn.some(L=>L.value===da);gn.length>0&&!f&&ds(ss(gn))},[la,gn,da,ss,ms]),a.useEffect(()=>{if(!la||gn.length===0)return;const f=oe=>!gn.some(Xe=>Xe.value===oe.category),L=je.some(f),X=wn.some(f);if(L||X){const oe=ss(gn);L&&ca(Xe=>Xe.map(Ge=>f(Ge)?{...Ge,category:oe}:Ge)),X&&_r(Xe=>Xe.map(Ge=>f(Ge)?{...Ge,category:oe}:Ge))}},[la,gn,je,wn,ss]),a.useEffect(()=>()=>{Ja.current!==null&&typeof window<"u"&&(window.clearTimeout(Ja.current),Ja.current=null),ua.current!==null&&typeof window<"u"&&(window.clearTimeout(ua.current),ua.current=null)},[]),a.useEffect(()=>{},[zo]);const No=a.useCallback(async()=>{await Ho()},[Ho]),jo=String(xe||"").trim(),Xa=String(Ut||"").trim(),Ro=H("/taskforce-ws"),cc=!!(D&&Oe==="cloud"&&qt&&dt&&Xa&&Xa!=="anonymous"&&jo&&!Xm(jo)&&Ro),Td=a.useCallback(()=>{Oe==="cloud"&&(Ho(),!(typeof window>"u")&&(ua.current!==null&&window.clearTimeout(ua.current),ua.current=window.setTimeout(()=>{ua.current=null,Ho()},250)))},[Oe,Ho]);ch({enabled:cc,workspaceId:jo,websocketUrl:Ro,onSignal:Td,userId:Xa||void 0}),tS({isOpen:V,authBlocked:nt,authRequiredForApi:Te,isAuthenticated:dt,canCallProtectedApi:Hn.canCallProtectedApi,shouldGateProtectedApiCalls:Fe,authSessionResolvedRef:nc,authRequiredForApiRef:ac,isAuthenticatedRef:xo,dataVersionRef:Eu,refreshTaskCollectionsForDataVersion:No});const lc=a.useMemo(()=>{const f=new Map;for(const L of wn)f.set(L.id,L);for(const L of je)f.set(L.id,L);return Array.from(f.values())},[je,wn]),Id=a.useMemo(()=>Cr.map(f=>({...f.taskSnapshot,isDeleted:!0,deletedRecordId:f.id})),[Cr]);a.useEffect(()=>{if(!(sn||hn)&&V&&!Mt){if(R==="tasks"){const f=`${xe}:${R}:${W?"archive":"active"}:${ge}`;if(!pr.current){pr.current=!0,fs.current=f;return}if(fs.current===f)return;fs.current=f,fn(),(W||ge==="archived")&&ls(!0),ge==="deleted"&&Ir();return}if(R==="settings"){const f=`${xe}:${R}:${Ve}`;if(si.current===f)return;si.current=f,xn(),(Ve==="commands"||Ve==="resources")&&ia()}}},[xe,V,R,Ve,W,ge,fn,ls,Ir,xn,ia,sn,hn,Mt]);const Zu=a.useCallback(async(f="")=>{try{const L=await fetch(`/api/taskforce/folders?path=${encodeURIComponent(f)}`);if(L.ok){const X=await L.json();l(X.folders||[]),At(X.files||[]),It(f)}}catch(L){console.error("[Taskforce] Failed to fetch folders:",L)}},[]),dc=a.useCallback(f=>{const L=[];if(f.path&&L.push(f.path),f.paths&&f.paths.length>0)for(const X of f.paths)L.includes(X)||L.push(X);return L},[]),{validatePaths:Nd,handleUpdateCategory:jd,handleSaveCategory:Rd,handleAddPath:uc,handleUpdateCategoryIcon:Ed,handleUpdateCategoryColor:gs,handleRemovePath:Dd,handleSelectPath:Pd,handleRemoveCategory:Md,handleSaveType:gl,handleRemoveType:ys,handleUpdateType:Ld,handleUpdateTaxonomies:Bd,handleUpdatePriorities:Wd,analyzeSystemTaxonomyPack:qu,handleApplySystemTaxonomyPack:Ku}=Sv({activeCategories:gn,activeTab:R,activeTypes:aa,archivedTasks:wn,browserTarget:tt,category:da,configLoaded:la,customCategories:Ps,refreshTaskCollections:zo,fetchTasks:fn,filterCategories:zi,getCategoryPaths:dc,normalizePath:U,pathValidation:Ms,setBrowserTarget:xt,setCategory:ds,setCustomCategories:Ni,setCustomTypes:Uo,setFilterCategories:Jc,setPathValidation:Pc,setPriorities:Fa,setShowFolderBrowser:ee,setTaxonomies:Tr,tasks:je}),Nr=a.useCallback(async f=>{const L=lr,X={...L,...f};bn(X);try{const oe=await fetch("/api/taskforce/taxonomy-display-labels",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({displayLabels:f})});if(!oe.ok)throw new Error(`Failed to save taxonomy display labels (${oe.status})`);const Xe=await oe.json().catch(()=>({}));Xe?.displayLabels&&typeof Xe.displayLabels=="object"&&bn({...X,...Xe.displayLabels})}catch(oe){console.error("[Taskforce] Failed to update taxonomy display labels",oe),bn(L)}},[lr]),Eo=a.useCallback(f=>{R==="tasks"&&_e.current&&Ct(_e.current.scrollTop),re(f)},[R]),Do=a.useRef(async()=>{}),{handleNavigation:Br,handleClose:Yu,resetForm:pi,resolveWorkstreamIdInput:Fd,handleEdit:Od,handleOpenTaskById:Ju,returnToPreviousTask:fi,clearReturnToParentTask:Xs}=Nv({activeCategories:gn,activeTypes:aa,activeTab:R,attachments:tc,checklistItems:vo,comments:Kc,description:mr,editingTaskId:Ka,flushPendingAutoSave:()=>Do.current(),getPreferredCategoryValue:ss,lastUsedCategory:ms,newCommentText:cd,relationshipTasks:lc,workstreams:qa,showArchive:W,taxonomies:Ya,setActiveTab:Eo,setApproach:Yo,setAssignee:ht,setAttachments:ni,setAttachmentsDirty:ai,setCategory:ds,setChecklistItems:id,setComments:Hs,setComplexity:Bi,setDescription:Vn,setDueDate:Vc,setEditingTaskId:Rc,setError:dr,setFormTaxonomies:ld,setIsOpen:ie,setNewCommentText:Yc,setPendingNavigation:Ga,setWorkstreamInput:Zc,setPriority:zc,setScheduledDate:Gc,setShowArchive:Q,setStatus:Wi,setTaskReturnTrail:C,setTitle:od,setType:ko,setUnsavedModalOpen:Pt,taskReturnTrail:Zr,title:qc}),{copiedId:mc,handleDelete:pc,handleUpdateTask:Qs,handleToggleComplete:fc,handleToggleCancel:yl,handleToggleInProgress:hc,handleToggleReview:eo,handleArchiveTask:kl,handleBulkArchive:vl,handleUnarchive:Xu,handleRestoreDeletedTask:Sl,handlePermanentlyDeleteDeletedTask:$d,handleEmptyDeletedTasks:Ud,handleCopyId:Ts,queueWorkspaceSyncFromAuthoritativeTaskState:wl}=Gv({tasks:je,archivedTasks:wn,editingTaskId:Ka,setTasks:ca,setArchivedTasks:_r,setDeletedTasks:qr,setError:dr,resetForm:pi,setActiveTab:Eo,fetchTasks:fn,fetchArchive:ls,fetchDeletedTasks:Ir,mergeTaskFromServer:cs,pushNotice:ja,cloudAuthConfigured:D,runtimeMode:Oe,isAuthenticated:dt,workspaceCloudSyncEnabled:Vo,buildWorkspaceSyncSignature:nd,pushWorkspaceChangesToCloud:ad,workspacePendingSignatureRef:Yn,workspaceDeletedTaskIdsRef:qo,workspaceDeletedTaskWatermarksRef:Fc}),{autoSaveState:zd,flushAutoSave:bl,scheduleWarningPrompt:Qu,handleSubmit:xl,confirmScheduleWarning:em,cancelScheduleWarning:tm,handleAddComment:Po}=Uv({activeCategories:gn,activeTab:R,apiEndpoint:u,approach:Ko,assignee:Fi,attachments:tc,attachmentsDirty:gd,category:da,checklistItems:vo,comments:Kc,complexity:zs,description:mr,dueDate:us,editingTaskId:Ka,fetchTasks:fn,formTaxonomies:Pr,getPreferredCategoryValue:ss,mergeTaskFromServer:cs,workstreamInput:Jo,priority:Uc,pushNotice:ja,queueWorkspaceSyncFromAuthoritativeTaskState:wl,relationshipTasks:lc,resetForm:pi,resolveWorkstreamIdInput:Fd,scheduledDate:Hc,setActiveTab:Eo,setAttachmentsDirty:ai,setComments:Hs,setError:dr,setLastUsedCategory:Xo,setLoading:ho,setNewCommentText:Yc,status:sd,title:qc,taxonomies:Ya,type:yo});a.useEffect(()=>{Do.current=bl},[bl]);const{handleSetWorkstreamForCurrentTask:gc}=zv({editingTaskId:Ka,mergeTaskFromServer:cs,workstreamInput:Jo,pushNotice:ja,queueWorkspaceSyncFromAuthoritativeTaskState:wl,relationshipTasks:lc,resolveWorkstreamIdInput:Fd,setError:dr,fetchTasks:fn}),{currentTask:_l,currentTaskWorkstream:Cl,currentTaskInitiative:Hd}=Cv({editingTaskId:Ka,relationshipTasks:lc,initiatives:Za,workstreams:qa,supplementalTasks:Id,setComments:Hs}),Is=kv({resolveCloudAuthUrl:M,currentWorkspaceId:xe,normalizedCloudAuthBaseUrl:Ce,normalizedCloudMcpBaseUrl:be,mergedConfig:o,availableWorkspaces:ft,currentTheme:ye,configLoaded:la,globalTheme:pt,themeUseGlobalDefault:bt,keyShortcut:Ba,jsonBackupEnabled:Er,globalJsonBackupEnabled:$a,globalWeekStartsOn:An,locale:ar,supportedLocales:Hr,jsonBackupUseGlobalDefault:pa,manualComplexityEnabled:rr,checklistDropdownEnabled:oa,showTaskCardStatusLabel:Ta,exportWorkflowsPath:Kt,exportingResource:ws,exportResult:O,pathSaved:$e,settingsSection:Ve,exportEnvironment:Ha,setupState:an,buildInfo:Xt,saveSetupMode:ul,saveWorkspaceProfile:Js,setCurrentTheme:Ue,handleSaveTheme:Du,handleSaveGlobalTheme:Pu,setKeyShortcut:Wn,handleJsonBackupEnabledChange:kd,handleSaveGlobalJsonBackupEnabled:Mu,handleSaveGlobalWeekStartsOn:Lu,handleSaveLocale:vd,handleManualComplexityEnabledChange:Bu,handleChecklistDropdownEnabledChange:Wu,handleShowTaskCardStatusLabelChange:Fu,handleResetProjectToGlobal:wa,handleSaveSettings:qs,setExportWorkflowsPath:cr,setExportEnvironment:Dr,availableWorkflows:ir,initiativeTemplates:Ia,availableEnvironments:ha,fetchWorkflows:ia,fetchInitiativeTemplates:fa,createInitiativeFromTemplate:di,fetchWorkflowTemplate:za,fetchWorkflowOverrideNames:De,saveWorkflowTemplateDraft:_t,resetWorkflowTemplateDraft:on,handleExportWorkflows:Je,setShowFolderBrowser:ee,setBrowserTarget:xt,fetchFolders:Zu,activeCategories:gn,pathValidation:Ms,taxonomyDisplayLabels:lr,handleUpdateCategory:jd,handleRemoveCategory:Md,handleSaveCategory:Rd,handleAddPath:uc,handleRemovePath:Dd,handleUpdateCategoryIcon:Ed,handleUpdateCategoryColor:gs,activeTypes:aa,handleSaveType:gl,handleRemoveType:ys,handleUpdateType:Ld,taxonomies:Ya,handleUpdateTaxonomies:Bd,priorities:Wa,handleUpdatePriorities:Wd,analyzeSystemTaxonomyPack:qu,handleApplySystemTaxonomyPack:Ku,handleUpdateTaxonomyDisplayLabels:Nr,projectRoot:ze,projectName:Nt,mcpHostRoot:vr,serverHostRoot:br,mcpScriptPath:ke,tenantId:Re,runtimeMode:Oe,workspaceSwitchingEnabled:Ee,deleteWorkspace:dl,setMcpHostRoot:Oa,isAuthenticated:dt});a.useEffect(()=>{typeof window<"u"&&(window.__TASKFORCE_DEBUG__={tasks:je,archivedTasks:wn,runtimeMode:Oe,currentWorkspaceId:xe,isAuthenticated:dt,workspaceCloudSyncEnabled:Vo,realtimeSyncEnabled:Sn,fetchTasks:fn,fetchArchive:ls,retryWorkspaceCloudSync:va,resetWorkspaceSyncCursorAndPull:es,getSyncDiagnostics:Oc,__dispatch:{handleUpdateTask:Qs,handleToggleComplete:fc,handleArchiveTask:kl,handleToggleCancel:yl,handleToggleInProgress:hc,handleToggleReview:eo,handleSubmit:xl,handleDelete:pc}})},[je,wn,Oe,xe,dt,Vo,Sn,fn,ls,va,es,Oc,Qs,fc,kl,yl,hc,eo,xl,pc]);const Al=Gn&&Gn.tone!=="error"?{message:Gn.message,type:"info"}:null,Gd=String(S||b.wsBaseUrl||me||"").trim().replace(/\/+$/,"");return{config:{...o,cloudEnvironment:b.cloudEnvironment||o.cloudEnvironment||"",apiBaseUrl:me||o.apiBaseUrl,cloudAuthBaseUrl:Ce||o.cloudAuthBaseUrl,wsBaseUrl:Gd||o.wsBaseUrl},isOpen:V,setIsOpen:ie,activeTab:R,setActiveTab:Eo,currentTheme:ye,setCurrentTheme:Ue,configLoaded:la,storagePath:Qe,saveSettings:qs,pathSaved:$e,keyShortcut:Ba,setKeyShortcut:Wn,globalWeekStartsOn:An,locale:ar,supportedLocales:Hr,saveLocale:vd,jsonBackupEnabled:Er,setJsonBackupEnabled:zr,manualComplexityEnabled:rr,checklistDropdownEnabled:oa,showTaskCardStatusLabel:Ta,setManualComplexityEnabled:sr,mcpHostRoot:vr,setMcpHostRoot:Oa,settingsSection:Ve,setSettingsSection:ct,runtimeMode:Oe,workspaceMode:Se,workspaceSwitchingEnabled:Ee,cloudAuthConfigured:D,authRequiredForApi:Te,authBlocked:nt,isAuthenticated:dt,authUserId:Ut,authUserEmail:Gt,authUserDisplayName:Zn,authUserAvatarUrl:Dt,authWorkspaceId:un,userGlobalSyncStatus:Go,workspaceLastPullAt:Iu,workspaceLastPushAt:Xl,workspaceLastErrorAt:Ql,userGlobalSyncError:Jl,workspaceLastErrorMessage:ed,workspaceLastSuccessfulSyncAt:Lc,workspaceSyncPhase:Bc,workspaceSyncSetupIntent:go,workspaceSyncStatus:Zo,workspaceSyncSummary:Di,workspaceSyncRecommendedAction:Wc,workspaceSyncBusy:Pi,workspaceSyncPendingChanges:Us,retryUserGlobalSettingsSync:Li,retryWorkspaceCloudSync:va,resetWorkspaceSyncCursorAndPull:es,getWorkspaceSyncDiagnostics:Oc,hasBetaAccess:Dn,realtimeSyncEnabled:Sn,realtimeSyncFlagSource:tn,currentWorkspaceId:xe,currentWorkspaceRole:li,availableWorkspaces:ft,assigneeOptions:Vt,workspaceCloudSyncEnabled:Vo,saveWorkspaceCloudSyncSettings:rd,applyWorkspaceSyncStateSnapshot:td,authSessionResolved:qt,workspaceBootstrapPending:Mt,bootstrapPhase:zt,bootstrapError:Cn,bootstrapStartedAt:Ft,setupState:an,runtimeCapabilities:La,refreshSetupContext:Ys,retryBootstrapChecks:Ou,continueAfterCommercialOnboarding:$u,saveWorkspaceProfile:Js,fetchWorkspaces:Ks,createWorkspace:ll,deleteWorkspace:dl,switchWorkspace:As,loginWithCredentials:hr,registerWithCredentials:To,updateCurrentUserProfile:Uu,requestEmailVerification:bd,confirmEmailVerification:zu,requestPasswordReset:ml,confirmPasswordReset:Hu,inspectInviteAcceptance:Mr,acceptInviteWithToken:Gu,joinInviteWithToken:Lr,logout:xd,showFolderBrowser:He,setShowFolderBrowser:ee,folders:Be,files:rt,currentBrowsePath:jt,fetchFolders:Zu,browserTarget:tt,setBrowserTarget:xt,groupBy:Sa,setGroupBy:tl,activeWorkspaceModule:il,setActiveWorkspaceModule:ei,emptyColumnMode:Ji,setEmptyColumnMode:nl,zenMode:Nn,setZenMode:xr,handleSelectPath:Pd,handleAddPath:uc,handleRemovePath:Dd,tasks:je,loadingTasks:bs,archivedTasks:wn,initiatives:Za,workstreams:qa,deletedTasks:Cr,activeCategories:gn,activeTypes:aa,priorities:Wa,taxonomyDisplayLabels:lr,approaches:Ot,taxonomies:Ya,searchQuery:$i,setSearchQuery:Ui,filterCategories:zi,setFilterCategories:Jc,filterTypes:Ra,setFilterTypes:bo,filterPriorities:wo,setFilterPriorities:ps,filterStatus:Gs,setFilterStatus:Hi,filterAssignees:Qo,setFilterAssignees:Gi,filterTaxonomies:Zi,setFilterTaxonomies:Xc,sortBy:qi,setSortBy:Ki,sortOrder:Yi,setSortOrder:ud,toggleSortOrder:el,showArchive:W,setShowArchive:Q,taskScope:ge,setTaskScope:Me,clearFilters:rl,filteredTasks:sl,searchAgnosticTasks:Xi,filteredArchive:pd,groupedTasks:fd,collapsedCategories:al,setCollapsedCategories:md,fetchTasks:fn,fetchArchive:ls,fetchDeletedTasks:Ir,fetchPlanningEntities:Qt,fetchAssigneeOptions:ts,createInitiative:ui,updateInitiative:fl,archiveInitiative:hl,unarchiveInitiative:Vu,createWorkstream:Io,updateWorkstream:ic,archiveWorkstream:_d,unarchiveWorkstream:Cd,handleEdit:Od,handleDelete:pc,handleCopyId:Ts,handleToggleComplete:fc,handleToggleCancel:yl,handleToggleInProgress:hc,handleToggleReview:eo,handleArchiveTask:kl,handleBulkArchive:vl,handleUnarchive:Xu,handleRestoreDeletedTask:Sl,handlePermanentlyDeleteDeletedTask:$d,handleEmptyDeletedTasks:Ud,handleUpdateTask:Qs,editingTaskId:Ka,loading:Kr,error:ya,title:qc,setTitle:od,description:mr,setDescription:Vn,checklistItems:vo,setChecklistItems:id,category:da,setCategory:ds,type:yo,setType:ko,priority:Uc,setPriority:zc,complexity:zs,setComplexity:Bi,status:sd,setStatus:Wi,approach:Ko,setApproach:Yo,assignee:Fi,setAssignee:ht,scheduledDate:Hc,setScheduledDate:Gc,dueDate:us,setDueDate:Vc,workstreamInput:Jo,setWorkstreamInput:Zc,formTaxonomies:Pr,setFormTaxonomies:ld,comments:Kc,newCommentText:cd,setNewCommentText:Yc,attachments:tc,setAttachments:ni,attachmentsDirty:gd,setAttachmentsDirty:ai,descriptionFocused:Ru,setDescriptionFocused:ti,showMarkdownHelp:Ec,setShowMarkdownHelp:Dc,showChecklist:Oi,setShowChecklist:So,showComments:ju,setShowComments:hd,isCapturingScreenshot:Qi,setIsCapturingScreenshot:ec,handleSubmit:xl,resetForm:pi,handleAddComment:Po,handleSetWorkstreamForCurrentTask:gc,handleOpenTaskById:Ju,returnToPreviousTask:fi,autoSaveState:zd,unsavedModalOpen:$t,setUnsavedModalOpen:Pt,pendingNavigation:Kn,handleNavigation:Br,handleClose:Yu,uiNotice:Gn,pushNotice:ja,clearNotice:Va,successBanner:Al,taskReturnTrail:Zr,clearReturnToParentTask:Xs,copiedId:mc,recentlyChangedTaskIds:Os,scheduleWarningPrompt:Qu,confirmScheduleWarning:em,cancelScheduleWarning:tm,tasksScrollRef:_e,setTasksScrollPos:Ct,exportEnvironment:Ha,setExportEnvironment:Dr,exportWorkflowsPath:Kt,setExportWorkflowsPath:cr,exportResult:O,exportingResource:ws,handleUpdateCategory:jd,handleRemoveCategory:Md,handleSaveCategory:Rd,handleUpdateCategoryIcon:Ed,handleUpdateCategoryColor:gs,handleSaveType:gl,handleRemoveType:ys,handleUpdateType:Ld,handleUpdateTaxonomies:Bd,handleUpdatePriorities:Wd,handleUpdateTaxonomyDisplayLabels:Nr,pathValidation:Ms,validatePaths:Nd,getCategoryPaths:dc,customCategories:Ps,setCustomCategories:Ni,projectRoot:ze,projectName:Nt,mcpScriptPath:ke,serverHostRoot:br,commentsEndRef:dd,currentTask:_l,currentTaskWorkstream:Cl,currentTaskInitiative:Hd,availableWorkflows:ir,initiativeTemplates:Ia,availableEnvironments:ha,fetchWorkflows:ia,fetchInitiativeTemplates:fa,createInitiativeFromTemplate:di,fetchWorkflowTemplate:za,fetchWorkflowOverrideNames:De,saveWorkflowTemplateDraft:_t,resetWorkflowTemplateDraft:on,onExportWorkflows:Je,settingsModel:Is}}const rS="modulepreload",sS=function(e){return"/taskforce/"+e},Jp={},Oo=function(n,r,s){let o=Promise.resolve();if(r&&r.length>0){let h=function(v){return Promise.all(v.map(x=>Promise.resolve(x).then(S=>({status:"fulfilled",value:S}),S=>({status:"rejected",reason:S}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),u=i?.nonce||i?.getAttribute("nonce");o=h(r.map(v=>{if(v=sS(v),v in Jp)return;Jp[v]=!0;const x=v.endsWith(".css"),S=x?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${v}"]${S}`))return;const y=document.createElement("link");if(y.rel=x?"stylesheet":rS,x||(y.as="script"),y.crossOrigin="",y.href=v,u&&y.setAttribute("nonce",u),document.head.appendChild(y),x)return new Promise((k,w)=>{y.addEventListener("load",k),y.addEventListener("error",()=>w(new Error(`Unable to preload CSS for ${v}`)))})}))}function c(i){const u=new Event("vite:preloadError",{cancelable:!0});if(u.payload=i,window.dispatchEvent(u),!u.defaultPrevented)throw i}return o.then(i=>{for(const u of i||[])u.status==="rejected"&&c(u.reason);return n().catch(c)})},oS="_filterGlow_1xvit_13",iS="_floatingButton_1xvit_23",cS="_badge_1xvit_54",lS="_configBadge_1xvit_71",dS="_configBadgeActive_1xvit_81",uS="_configBadgeRevoked_1xvit_87",mS="_configBadgeExpired_1xvit_93",pS="_header_1xvit_103",fS="_headerTitle_1xvit_118",hS="_brandIcon_1xvit_135",gS="_brandCloudSuffix_1xvit_141",yS="_projectSlash_1xvit_146",kS="_projectName_1xvit_153",vS="_taskCountBadge_1xvit_172",SS="_taskCountBadgeIcon_1xvit_189",wS="_taskCountBadgeAlert_1xvit_193",bS="_headerActions_1xvit_199",xS="_sortDirectionBtn_1xvit_206",_S="_sortDirectionBtnWidget_1xvit_213",CS="_form_1xvit_221",AS="_topRow_1xvit_233",TS="_field_1xvit_239",IS="_labelRow_1xvit_245",NS="_label_1xvit_245",jS="_manageLink_1xvit_259",RS="_input_1xvit_278",ES="_select_1xvit_279",DS="_textarea_1xvit_280",PS="_taskIdInlineLink_1xvit_314",MS="_readOnly_1xvit_333",LS="_selectWithConfig_1xvit_341",BS="_configBtn_1xvit_351",WS="_configBtnActive_1xvit_381",FS="_hasPath_1xvit_389",OS="_pathIndicator_1xvit_394",$S="_formActions_1xvit_400",US="_hasCancel_1xvit_407",zS="_submitBtn_1xvit_411",HS="_cancelBtn_1xvit_427",GS="_successMessage_1xvit_459",VS="_successIcon_1xvit_465",ZS="_spinner_1xvit_485",qS="_spin_1xvit_485",KS="_boardRefreshIndicator_1xvit_489",YS="_destructiveBtn_1xvit_519",JS="_warningBtn_1xvit_542",XS="_viewTab_1xvit_565",QS="_deleteBtn_1xvit_576",ew="_loading_1xvit_586",tw="_emptyState_1xvit_592",nw="_taskList_1xvit_602",aw="_taskIdBadge_1xvit_608",rw="_taskIdBadgeLabel_1xvit_630",sw="_copiedId_1xvit_649",ow="_highlight_1xvit_655",iw="_modal_1xvit_667",cw="_priorityEmoji_1xvit_675",lw="_metaItem_1xvit_679",dw="_taskFormDateInput_1xvit_693",uw="_metaBadge_1xvit_703",mw="_complexityPill_1xvit_718",pw="_complexityDots_1xvit_722",fw="_dot_1xvit_728",hw="_dotFilled_1xvit_736",gw="_typePill_1xvit_742",yw="_type_bug_1xvit_746",kw="_type_feature_1xvit_750",vw="_type_chore_1xvit_754",Sw="_type_refactor_1xvit_758",ww="_type_documentation_1xvit_762",bw="_type_research_1xvit_766",xw="_type_security_1xvit_774",_w="_approachPill_1xvit_779",Cw="_approach_evaluate_1xvit_784",Aw="_approach_collaborate_1xvit_790",Tw="_approach_plan_1xvit_796",Iw="_approachActive_1xvit_802",Nw="_statusActionsGroup_1xvit_807",jw="_statusActionsGroupCompact_1xvit_813",Rw="_statusSelectWrap_1xvit_817",Ew="_statusTaxonomyDropdownWrap_1xvit_823",Dw="_statusTaxonomyDropdown_1xvit_823",Pw="_statusTaxonomyDropdownCompact_1xvit_831",Mw="_statusTaxonomyDropdownIconOnly_1xvit_835",Lw="_taxonomyDropdownButton_1xvit_840",Bw="_taxonomyDropdownButtonContent_1xvit_857",Ww="_statusTaxonomyDropdownIconOnlyPanel_1xvit_861",Fw="_actionBtn_1xvit_867",Ow="_startWorkBtn_1xvit_891",$w="_workingBtn_1xvit_900",Uw="_pulse_1xvit_1",zw="_reviewBtn_1xvit_906",Hw="_reviewActiveBtn_1xvit_916",Gw="_reviewPill_1xvit_922",Vw="_archiveTaskBtn_1xvit_929",Zw="_bulkArchiveBtn_1xvit_938",qw="_bulkDeleteBtn_1xvit_960",Kw="_completeBtn_1xvit_1001",Yw="_completeActiveBtn_1xvit_1011",Jw="_deleteActiveBtn_1xvit_1017",Xw="_disabledBtn_1xvit_1023",Qw="_archiveList_1xvit_1030",eb="_archiveHeader_1xvit_1038",tb="_settingsTab_1xvit_1049",nb="_settingsTabs_1xvit_1061",ab="_settingsLayout_1xvit_1075",rb="_settingsSidebar_1xvit_1082",sb="_settingsSidebarHeader_1xvit_1092",ob="_settingsSidebarNav_1xvit_1101",ib="_settingsSidebarBtn_1xvit_1110",cb="_settingsSidebarBtnActive_1xvit_1134",lb="_settingsSidebarGroup_1xvit_1141",db="_settingsSidebarGroupBtn_1xvit_1147",ub="_settingsSidebarGroupLabel_1xvit_1151",mb="_settingsSidebarGroupChevron_1xvit_1155",pb="_settingsSidebarSubnav_1xvit_1161",fb="_settingsSidebarSubBtn_1xvit_1168",hb="_appScrollbar_1xvit_1191",gb="_settingsTabBtn_1xvit_1195",yb="_settingsTabBtnActive_1xvit_1221",kb="_settingsContent_1xvit_1227",vb="_settingsToast_1xvit_1275",Sb="_settingsToastSuccess_1xvit_1292",wb="_settingsToastError_1xvit_1298",bb="_inputWithPrefix_1xvit_1304",xb="_pathHint_1xvit_1311",_b="_settingGroup_1xvit_1324",Cb="_settingTitle_1xvit_1330",Ab="_settingTitleRow_1xvit_1339",Tb="_settingTitleActionBtn_1xvit_1346",Ib="_themeOptions_1xvit_1366",Nb="_buttonGrid_1xvit_1371",jb="_themeBtn_1xvit_1383",Rb="_activeTheme_1xvit_1407",Eb="_pathInputGroup_1xvit_1415",Db="_saveSettingsBtn_1xvit_1424",Pb="_shortcutInputWrapper_1xvit_1445",Mb="_inputIcon_1xvit_1450",Lb="_settingHelper_1xvit_1459",Bb="_browseBtn_1xvit_1466",Wb="_inlineCategoryManager_1xvit_1485",Fb="_categoryManager_1xvit_1496",Ob="_categoryList_1xvit_1502",$b="_categoryChip_1xvit_1514",Ub="_categoryChipLabel_1xvit_1527",zb="_chipActionBtn_1xvit_1535",Hb="_removeCategoryBtn_1xvit_1555",Gb="_addCategoryForm_1xvit_1575",Vb="_addCategoryBtn_1xvit_1580",Zb="_filesList_1xvit_1605",qb="_helpLink_1xvit_1632",Kb="_inlineCode_1xvit_1653",Yb="_codeBlock_1xvit_1664",Jb="_taskChildrenSummaryBadges_1xvit_1688",Xb="_taskChildrenProgressBar_1xvit_1696",Qb="_taskChildrenProgressBarSegmentDone_1xvit_1707",ex="_taskChildrenProgressBarSegmentReview_1xvit_1713",tx="_taskChildrenProgressBarSegmentInProgress_1xvit_1719",nx="_taskChildrenProgressBarSegmentBlocked_1xvit_1725",ax="_taskChildrenProgressText_1xvit_1731",rx="_taskChildUnlinkBtn_1xvit_1740",sx="_aboutText_1xvit_1758",ox="_versionInfo_1xvit_1765",ix="_filterBar_1xvit_1773",cx="_kanbanHintText_1xvit_1787",lx="_searchContainer_1xvit_1793",dx="_searchIcon_1xvit_1800",ux="_searchInput_1xvit_1808",mx="_searchActive_1xvit_1834",px="_searchCount_1xvit_1839",fx="_clearSearchBtn_1xvit_1855",hx="_filterRow_1xvit_1877",gx="_sortLabel_1xvit_1883",yx="_archiveToggle_1xvit_1891",kx="_filterContainer_1xvit_1928",vx="_filterButton_1xvit_1933",Sx="_filterActive_1xvit_1958",wx="_filterDropdown_1xvit_1964",bx="_filterOption_1xvit_1979",xx="_filterDivider_1xvit_2009",_x="_filterSelect_1xvit_2015",Cx="_filterToggleBtn_1xvit_2056",Ax="_inProgressToggle_1xvit_2078",Tx="_activeInProgress_1xvit_2096",Ix="_activeFilter_1xvit_2105",Nx="_resetFiltersBtn_1xvit_2115",jx="_categoryChip_disabled_1xvit_2148",Rx="_categoryVisibilityToggle_1xvit_2158",Ex="_editCategoryInput_1xvit_2171",Dx="_categoryChipActionBtn_1xvit_2182",Px="_categoryChipActionBtn_active_1xvit_2200",Mx="_categoryGroup_1xvit_2205",Lx="_categoryHeader_1xvit_2213",Bx="_categoryTitle_1xvit_2227",Wx="_categoryCount_1xvit_2237",Fx="_categoryItems_1xvit_2243",Ox="_priorityItem_low_1xvit_2252",$x="_priorityItem_medium_1xvit_2256",Ux="_priorityItem_high_1xvit_2260",zx="_priorityItem_critical_1xvit_2264",Hx="_priorityPill_low_1xvit_2268",Gx="_priorityPill_medium_1xvit_2274",Vx="_priorityPill_high_1xvit_2280",Zx="_priorityPill_critical_1xvit_2286",qx="_selectPriority_low_1xvit_2301",Kx="_selectPriority_medium_1xvit_2306",Yx="_selectPriority_high_1xvit_2311",Jx="_selectPriority_critical_1xvit_2316",Xx="_levelSelect_1xvit_2325",Qx="_levelOption_1xvit_2338",e_="_levelOptionFilled_1xvit_2355",t_="_levelOption_priority_low_1xvit_2362",n_="_levelOption_priority_medium_1xvit_2367",a_="_levelOption_priority_high_1xvit_2372",r_="_levelOption_priority_critical_1xvit_2377",s_="_levelOption_complexity_tiny_1xvit_2384",o_="_levelOption_complexity_low_1xvit_2389",i_="_levelOption_complexity_medium_1xvit_2394",c_="_levelOption_complexity_high_1xvit_2399",l_="_levelOption_complexity_epic_1xvit_2404",d_="_levelOptionActive_1xvit_2411",u_="_levelOptionSelected_1xvit_2416",m_="_levelLabel_1xvit_2424",p_="_fadeIn_1xvit_1",f_="_closeConfigBtn_1xvit_2449",h_="_configItem_1xvit_2471",g_="_settingsLabel_1xvit_2477",y_="_settingsHint_1xvit_2486",k_="_pathList_1xvit_2493",v_="_pathChip_1xvit_2500",S_="_pathValid_1xvit_2513",w_="_pathInvalid_1xvit_2518",b_="_pathValidIcon_1xvit_2523",x_="_pathInvalidIcon_1xvit_2528",__="_pathText_1xvit_2533",C_="_removePathBtn_1xvit_2540",A_="_pathCount_1xvit_2562",T_="_specialistSection_1xvit_2585",I_="_toggleHeading_1xvit_2593",N_="_dropdownList_1xvit_2633",j_="_specialistBadge_1xvit_2642",R_="_iconGrid_1xvit_2672",E_="_iconPickerBtn_1xvit_2683",D_="_iconPickerBtnActive_1xvit_2702",P_="_categorySubConfig_1xvit_2709",M_="_colorPickerRow_1xvit_2717",L_="_colorPickerGrid_1xvit_2723",B_="_colorSwatch_1xvit_2730",W_="_colorSwatchActive_1xvit_2749",F_="_categoryChipIcon_1xvit_2755",O_="_fieldIconWrapper_1xvit_2760",$_="_fieldIcon_1xvit_2760",U_="_field_dynamic_1xvit_2782",z_="_fieldIcon_dynamic_1xvit_2788",H_="_categoryTitleIcon_1xvit_2792",G_="_editActionsHeader_1xvit_2798",V_="_editActionsGroup_1xvit_2807",Z_="_urlInputGroup_1xvit_2814",q_="_iconBtn_1xvit_2827",K_="_stickyActionHeader_1xvit_2848",Y_="_taskHierarchyHeader_1xvit_2865",J_="_taskHierarchyBadgeRow_1xvit_2872",X_="_taskHierarchyDivider_1xvit_2880",Q_="_taskHierarchyMeta_1xvit_2886",eC="_taskHierarchyAddBtn_1xvit_2899",tC="_taskHierarchyEditor_1xvit_2905",nC="_taskHierarchyInput_1xvit_2912",aC="_taskSaveStatus_1xvit_2921",rC="_taskSaveStatusCenter_1xvit_2932",sC="_taskSaveStatusError_1xvit_2940",oC="_headerSuccessFeedback_1xvit_2944",iC="_slideInUp_1xvit_1",cC="_successCheck_1xvit_2956",lC="_scaleIn_1xvit_1",dC="_primaryUpdateBtn_1xvit_2992",uC="_secondaryHeaderBtn_1xvit_3020",mC="_secondaryHeaderBtnDestructive_1xvit_3041",pC="_commentSection_1xvit_3054",fC="_attachmentCaptureContainer_1xvit_3090",hC="_capturePrompt_1xvit_3098",gC="_previewContainer_1xvit_3112",yC="_previewHeader_1xvit_3118",kC="_attachmentCapturePreview_1xvit_3128",vC="_actions_1xvit_3135",SC="_primaryButton_1xvit_3141",wC="_secondaryButton_1xvit_3156",bC="_iconButton_1xvit_3171",xC="_attachmentGrid_1xvit_3193",_C="_attachmentCard_1xvit_3200",CC="_attachmentPreviewContainer_1xvit_3214",AC="_contextFileLink_1xvit_3235",TC="_attachmentActions_1xvit_3261",IC="_attachmentActionBtn_1xvit_3275",NC="_attachmentCaptionInput_1xvit_3297",jC="_hiddenInput_1xvit_3315",RC="_contextUploadPanel_1xvit_3319",EC="_contextUploadActions_1xvit_3327",DC="_contextDropzone_1xvit_3335",PC="_contextDropzoneActive_1xvit_3351",MC="_contextDropzonePulse_1xvit_1",LC="_contextLinkRow_1xvit_3359",BC="_contextNotice_1xvit_3365",WC="_documentAttachmentList_1xvit_3371",FC="_documentAttachmentItem_1xvit_3378",OC="_documentAttachmentRow_1xvit_3385",$C="_documentAttachmentLink_1xvit_3393",UC="_documentAttachmentMain_1xvit_3407",zC="_documentAttachmentText_1xvit_3414",HC="_documentAttachmentIcon_1xvit_3422",GC="_documentAttachmentName_1xvit_3433",VC="_documentAttachmentType_1xvit_3442",ZC="_documentAttachmentActions_1xvit_3455",qC="_documentAttachmentActionBtn_1xvit_3461",KC="_documentAttachmentCaptionInput_1xvit_3482",YC="_brokenImage_1xvit_3510",JC="_brokenImagePlaceholder_1xvit_3518",XC="_regionOverlay_1xvit_3532",QC="_selectionBox_1xvit_3543",eA="_exportRow_1xvit_3551",tA="_exportItem_1xvit_3556",nA="_taxonomyDrillDown_1xvit_3565",aA="_drillDownList_1xvit_3575",rA="_drillDownSection_1xvit_3583",sA="_drillDownSectionHeader_1xvit_3589",oA="_drillDownSectionTitle_1xvit_3596",iA="_drillDownItem_1xvit_3605",cA="_drillDownItemDimmed_1xvit_3627",lA="_drillDownItemActive_1xvit_3635",dA="_drillDownItemInfo_1xvit_3640",uA="_drillDownItemText_1xvit_3646",mA="_drillDownItemLabel_1xvit_3651",pA="_drillDownItemSubtext_1xvit_3656",fA="_addTaxonomyBtnSmall_1xvit_3661",hA="_taxonomyDetailView_1xvit_3683",gA="_slideIn_1xvit_1",yA="_detailHeader_1xvit_3703",kA="_detailTitle_1xvit_3712",vA="_detailContent_1xvit_3719",SA="_createOverlay_1xvit_3726",wA="_createDialog_1xvit_3738",bA="_zoomIn_1xvit_1",xA="_dialogActions_1xvit_3766",_A="_settingsGroup_1xvit_3784",CA="_settingsItem_1xvit_3790",AA="_settingLabelGroup_1xvit_3796",TA="_settingLabel_1xvit_3796",IA="_settingDescription_1xvit_3808",NA="_settingInput_1xvit_3815",jA="_codeBlockWrapper_1xvit_3838",RA="_codeHeader_1xvit_3847",EA="_codeHeaderActions_1xvit_3858",DA="_codeLabel_1xvit_3865",PA="_codeHeaderDescription_1xvit_3873",MA="_mcpTokenCardBody_1xvit_3881",LA="_mcpTokenFormGrid_1xvit_3889",BA="_mcpTokenOutputWrap_1xvit_3896",WA="_mcpTokenValueField_1xvit_3903",FA="_mcpTokenValueText_1xvit_3913",OA="_mcpTokenActionRow_1xvit_3926",$A="_copyBtn_1xvit_3947",UA="_copyBtnActive_1xvit_3968",zA="_copyBtnNeutralActive_1xvit_3974",HA="_headerDivider_1xvit_3992",GA="_groupByContainer_1xvit_3998",VA="_groupByLabel_1xvit_4006",ZA="_groupBySelect_1xvit_4011",qA="_viewSwitcher_1xvit_4033",KA="_selectWithIcon_1xvit_4041",YA="_marginBottom16_1xvit_4045",JA="_headerDraggable_1xvit_4050",XA="_headerDragging_1xvit_4054",QA="_filterSelectSort_1xvit_4062",eT="_archiveRow_1xvit_4066",tT="_taskScopeToggle_1xvit_4072",nT="_taskScopeTabs_1xvit_4080",aT="_taskScopeTab_1xvit_4080",rT="_taskScopeTabActive_1xvit_4113",sT="_taskToolbarAction_1xvit_4125",oT="_overlayHighZ_1xvit_4141",iT="_savedText_1xvit_4151",cT="_shortcutInput_1xvit_1445",lT="_saveSettingsBtnWrapper_1xvit_4159",dT="_marginBottom12_1xvit_4163",uT="_exportRowGrid_1xvit_4167",mT="_settingSubtitleCustom_1xvit_4172",pT="_capitalize_1xvit_4178",fT="_marginTop12_1xvit_4182",hT="_marginTop16_1xvit_4186",gT="_labelGroupFlex_1xvit_4190",yT="_codeBlockWrapperCustom_1xvit_4196",kT="_kanbanWrapper_1xvit_4202",vT="_kanbanContainer_1xvit_4210",ST="_kanbanTopScroll_1xvit_4232",wT="_kanbanTopScrollSpacer_1xvit_4241",bT="_kanbanColumn_1xvit_4245",xT="_kanbanColumnSticky_1xvit_4261",_T="_kanbanColumnCollapsed_1xvit_4267",CT="_kanbanColumnPast_1xvit_4272",AT="_kanbanColumnSelectedDay_1xvit_4277",TT="_kanbanHeader_1xvit_4284",IT="_kanbanCount_1xvit_4294",NT="_kanbanHeaderDraggable_1xvit_4314",jT="_kanbanHeaderPanning_1xvit_4318",RT="_kanbanQuickAdd_1xvit_4322",ET="_kanbanColorDot_1xvit_4343",DT="_kanbanDroppable_1xvit_4355",PT="_kanbanDroppableScroll_1xvit_4364",MT="_kanbanEmpty_1xvit_4374",LT="_kanbanCard_1xvit_4384",BT="_kanbanCardWrapper_1xvit_4394",WT="_taxonomyDropdownActive_1xvit_4402",FT="_kanbanCardWrapperRaised_1xvit_4406",OT="_kanbanCardTitle_1xvit_4410",$T="_kanbanBadges_1xvit_4414",UT="_kanbanBadge_1xvit_4414",zT="_headerFlex_1xvit_4430",HT="_marginBottom8_1xvit_4437",GT="_marginBottom20_1xvit_4441",VT="_configPanel_1xvit_4445",ZT="_configPanelLarge_1xvit_4454",qT="_subLabelBlock_1xvit_4458",KT="_subLabelBlock12_1xvit_4465",YT="_flexBetween_1xvit_4469",JT="_flexBetweenCenter_1xvit_4476",XT="_deleteBtnSmall_1xvit_4481",QT="_deleteBtnMedium_1xvit_4487",eI="_trashIcon_1xvit_4494",tI="_gridConfig_1xvit_4498",nI="_flexColGap4_1xvit_4505",aI="_flexColGap4Center_1xvit_4511",rI="_flex1_1xvit_4518",sI="_flexCol_1xvit_4505",oI="_flexGrow1_1xvit_4528",iI="_inputLabel_1xvit_4532",cI="_inputLabelBlock_1xvit_4536",lI="_checkboxInput_1xvit_4542",dI="_configDividerMargin_1xvit_4548",uI="_configDividerMargin24_1xvit_4553",mI="_pathListMargin_1xvit_4558",pI="_cancelBtnRed_1xvit_4562",fI="_code_1xvit_1664",hI="_workflowList_1xvit_4589",gI="_workflowActions_1xvit_4597",yI="_textBtn_1xvit_4606",kI="_workflowGrid_1xvit_4620",vI="_checkboxLabel_1xvit_4628",SI="_checkboxSmall_1xvit_4642",wI="_docWorkspace_1xvit_4661",bI="_docIndexPanel_1xvit_4670",xI="_docSpinning_1xvit_4682",_I="_docSpin_1xvit_4682",CI="_docViewerPanel_1xvit_4693",AI="_docViewerEmpty_1xvit_4701",TI="_marginTop24_1xvit_4716",II="_settingSubTitle_1xvit_4720",NI="_dangerBtn_1xvit_4729",jI="_aiProfilesExplorer_1xvit_4745",RI="_aiProfilesListPane_1xvit_4753",EI="_aiProfilesList_1xvit_4753",DI="_aiProfilesSection_1xvit_4786",PI="_aiProfilesSectionHeader_1xvit_4792",MI="_aiProfileGroup_1xvit_4800",LI="_aiProfileGroupSelected_1xvit_4820",BI="_aiProfileGroupDuplicate_1xvit_4828",WI="_aiProfileGroupHeader_1xvit_4833",FI="_aiProfileName_1xvit_4841",OI="_aiProfileMetaRow_1xvit_4846",$I="_aiProfileSurfaceBadge_1xvit_4856",UI="_aiProfileDuplicateBadge_1xvit_4866",zI="_aiProfileMergeSection_1xvit_4878",HI="_aiProfileMergeRow_1xvit_4885",GI="_aiProfileIdChip_1xvit_4892",VI="_aiProfileKeepBadge_1xvit_4904",ZI="_aiProfileMergeActions_1xvit_4918",qI="_aiProfileDetailPane_1xvit_4925",KI="_aiProfileDetailCard_1xvit_4931",YI="_aiProfileDetailHero_1xvit_4941",JI="_aiProfileDetailIcon_1xvit_4947",XI="_aiProfileDetailHeading_1xvit_4961",QI="_aiProfileDetailTitleRow_1xvit_4966",eN="_aiProfileDetailTitle_1xvit_4966",tN="_aiProfileDetailMetaRow_1xvit_4981",nN="_aiProfileDetailHandle_1xvit_4989",aN="_aiProfileDetailSectionBadge_1xvit_4994",rN="_aiProfileDetailLinkedCount_1xvit_5008",sN="_aiProfileDetailDescription_1xvit_5013",oN="_aiProfileDetailGrid_1xvit_5020",iN="_aiProfileDetailStat_1xvit_5027",cN="_aiProfileDetailStatLabel_1xvit_5040",lN="_aiProfileDetailStatValue_1xvit_5050",dN="_aiProfileInstanceSection_1xvit_5057",uN="_aiProfileInstanceSectionHeader_1xvit_5063",mN="_aiProfileInstanceList_1xvit_5073",pN="_aiProfileInstanceCard_1xvit_5079",fN="_aiProfileInstanceTopRow_1xvit_5091",hN="_aiProfileInstanceName_1xvit_5098",gN="_aiProfileInstanceMeta_1xvit_5105",m={filterGlow:oS,floatingButton:iS,badge:cS,configBadge:lS,configBadgeActive:dS,configBadgeRevoked:uS,configBadgeExpired:mS,header:pS,headerTitle:fS,brandIcon:hS,brandCloudSuffix:gS,projectSlash:yS,projectName:kS,taskCountBadge:vS,taskCountBadgeIcon:SS,taskCountBadgeAlert:wS,headerActions:bS,sortDirectionBtn:xS,sortDirectionBtnWidget:_S,form:CS,topRow:AS,field:TS,labelRow:IS,label:NS,manageLink:jS,input:RS,select:ES,textarea:DS,taskIdInlineLink:PS,readOnly:MS,selectWithConfig:LS,configBtn:BS,configBtnActive:WS,hasPath:FS,pathIndicator:OS,formActions:$S,hasCancel:US,submitBtn:zS,cancelBtn:HS,successMessage:GS,successIcon:VS,spinner:ZS,spin:qS,boardRefreshIndicator:KS,destructiveBtn:YS,warningBtn:JS,viewTab:XS,deleteBtn:QS,loading:ew,emptyState:tw,taskList:nw,taskIdBadge:aw,taskIdBadgeLabel:rw,copiedId:sw,highlight:ow,modal:iw,priorityEmoji:cw,metaItem:lw,taskFormDateInput:dw,metaBadge:uw,complexityPill:mw,complexityDots:pw,dot:fw,dotFilled:hw,typePill:gw,type_bug:yw,type_feature:kw,type_chore:vw,type_refactor:Sw,type_documentation:ww,type_research:bw,"type_ui-ux":"_type_ui-ux_1xvit_770",type_security:xw,approachPill:_w,approach_evaluate:Cw,approach_collaborate:Aw,approach_plan:Tw,approachActive:Iw,statusActionsGroup:Nw,statusActionsGroupCompact:jw,statusSelectWrap:Rw,statusTaxonomyDropdownWrap:Ew,statusTaxonomyDropdown:Dw,statusTaxonomyDropdownCompact:Pw,statusTaxonomyDropdownIconOnly:Mw,taxonomyDropdownButton:Lw,taxonomyDropdownButtonContent:Bw,statusTaxonomyDropdownIconOnlyPanel:Ww,actionBtn:Fw,startWorkBtn:Ow,workingBtn:$w,pulse:Uw,reviewBtn:zw,reviewActiveBtn:Hw,reviewPill:Gw,archiveTaskBtn:Vw,bulkArchiveBtn:Zw,bulkDeleteBtn:qw,completeBtn:Kw,completeActiveBtn:Yw,deleteActiveBtn:Jw,disabledBtn:Xw,archiveList:Qw,archiveHeader:eb,settingsTab:tb,settingsTabs:nb,settingsLayout:ab,settingsSidebar:rb,settingsSidebarHeader:sb,settingsSidebarNav:ob,settingsSidebarBtn:ib,settingsSidebarBtnActive:cb,settingsSidebarGroup:lb,settingsSidebarGroupBtn:db,settingsSidebarGroupLabel:ub,settingsSidebarGroupChevron:mb,settingsSidebarSubnav:pb,settingsSidebarSubBtn:fb,appScrollbar:hb,settingsTabBtn:gb,settingsTabBtnActive:yb,settingsContent:kb,settingsToast:vb,settingsToastSuccess:Sb,settingsToastError:wb,inputWithPrefix:bb,pathHint:xb,settingGroup:_b,settingTitle:Cb,settingTitleRow:Ab,settingTitleActionBtn:Tb,themeOptions:Ib,buttonGrid:Nb,themeBtn:jb,activeTheme:Rb,pathInputGroup:Eb,saveSettingsBtn:Db,shortcutInputWrapper:Pb,inputIcon:Mb,settingHelper:Lb,browseBtn:Bb,inlineCategoryManager:Wb,categoryManager:Fb,categoryList:Ob,categoryChip:$b,categoryChipLabel:Ub,chipActionBtn:zb,removeCategoryBtn:Hb,addCategoryForm:Gb,addCategoryBtn:Vb,filesList:Zb,helpLink:qb,inlineCode:Kb,codeBlock:Yb,taskChildrenSummaryBadges:Jb,taskChildrenProgressBar:Xb,taskChildrenProgressBarSegmentDone:Qb,taskChildrenProgressBarSegmentReview:ex,taskChildrenProgressBarSegmentInProgress:tx,taskChildrenProgressBarSegmentBlocked:nx,taskChildrenProgressText:ax,taskChildUnlinkBtn:rx,aboutText:sx,versionInfo:ox,filterBar:ix,kanbanHintText:cx,searchContainer:lx,searchIcon:dx,searchInput:ux,searchActive:mx,searchCount:px,clearSearchBtn:fx,filterRow:hx,sortLabel:gx,archiveToggle:yx,filterContainer:kx,filterButton:vx,filterActive:Sx,filterDropdown:wx,filterOption:bx,filterDivider:xx,filterSelect:_x,filterToggleBtn:Cx,inProgressToggle:Ax,activeInProgress:Tx,activeFilter:Ix,resetFiltersBtn:Nx,categoryChip_disabled:jx,categoryVisibilityToggle:Rx,editCategoryInput:Ex,categoryChipActionBtn:Dx,categoryChipActionBtn_active:Px,categoryGroup:Mx,categoryHeader:Lx,categoryTitle:Bx,categoryCount:Wx,categoryItems:Fx,priorityItem_low:Ox,priorityItem_medium:$x,priorityItem_high:Ux,priorityItem_critical:zx,priorityPill_low:Hx,priorityPill_medium:Gx,priorityPill_high:Vx,priorityPill_critical:Zx,selectPriority_low:qx,selectPriority_medium:Kx,selectPriority_high:Yx,selectPriority_critical:Jx,"critical-glow":"_critical-glow_1xvit_1",levelSelect:Xx,levelOption:Qx,levelOptionFilled:e_,levelOption_priority_low:t_,levelOption_priority_medium:n_,levelOption_priority_high:a_,levelOption_priority_critical:r_,levelOption_complexity_tiny:s_,levelOption_complexity_low:o_,levelOption_complexity_medium:i_,levelOption_complexity_high:c_,levelOption_complexity_epic:l_,levelOptionActive:d_,levelOptionSelected:u_,levelLabel:m_,fadeIn:p_,closeConfigBtn:f_,configItem:h_,settingsLabel:g_,settingsHint:y_,pathList:k_,pathChip:v_,pathValid:S_,pathInvalid:w_,pathValidIcon:b_,pathInvalidIcon:x_,pathText:__,removePathBtn:C_,pathCount:A_,specialistSection:T_,toggleHeading:I_,dropdownList:N_,specialistBadge:j_,iconGrid:R_,iconPickerBtn:E_,iconPickerBtnActive:D_,categorySubConfig:P_,colorPickerRow:M_,colorPickerGrid:L_,colorSwatch:B_,colorSwatchActive:W_,categoryChipIcon:F_,fieldIconWrapper:O_,fieldIcon:$_,field_dynamic:U_,fieldIcon_dynamic:z_,categoryTitleIcon:H_,editActionsHeader:G_,editActionsGroup:V_,urlInputGroup:Z_,iconBtn:q_,stickyActionHeader:K_,taskHierarchyHeader:Y_,taskHierarchyBadgeRow:J_,taskHierarchyDivider:X_,taskHierarchyMeta:Q_,taskHierarchyAddBtn:eC,taskHierarchyEditor:tC,taskHierarchyInput:nC,taskSaveStatus:aC,taskSaveStatusCenter:rC,taskSaveStatusError:sC,headerSuccessFeedback:oC,slideInUp:iC,successCheck:cC,scaleIn:lC,primaryUpdateBtn:dC,secondaryHeaderBtn:uC,secondaryHeaderBtnDestructive:mC,commentSection:pC,attachmentCaptureContainer:fC,capturePrompt:hC,previewContainer:gC,previewHeader:yC,attachmentCapturePreview:kC,actions:vC,primaryButton:SC,secondaryButton:wC,iconButton:bC,attachmentGrid:xC,attachmentCard:_C,attachmentPreviewContainer:CC,contextFileLink:AC,attachmentActions:TC,attachmentActionBtn:IC,attachmentCaptionInput:NC,hiddenInput:jC,contextUploadPanel:RC,contextUploadActions:EC,contextDropzone:DC,contextDropzoneActive:PC,contextDropzonePulse:MC,contextLinkRow:LC,contextNotice:BC,documentAttachmentList:WC,documentAttachmentItem:FC,documentAttachmentRow:OC,documentAttachmentLink:$C,documentAttachmentMain:UC,documentAttachmentText:zC,documentAttachmentIcon:HC,documentAttachmentName:GC,documentAttachmentType:VC,documentAttachmentActions:ZC,documentAttachmentActionBtn:qC,documentAttachmentCaptionInput:KC,brokenImage:YC,brokenImagePlaceholder:JC,regionOverlay:XC,selectionBox:QC,exportRow:eA,exportItem:tA,taxonomyDrillDown:nA,drillDownList:aA,drillDownSection:rA,drillDownSectionHeader:sA,drillDownSectionTitle:oA,drillDownItem:iA,drillDownItemDimmed:cA,drillDownItemActive:lA,drillDownItemInfo:dA,drillDownItemText:uA,drillDownItemLabel:mA,drillDownItemSubtext:pA,addTaxonomyBtnSmall:fA,taxonomyDetailView:hA,slideIn:gA,detailHeader:yA,detailTitle:kA,detailContent:vA,createOverlay:SA,createDialog:wA,zoomIn:bA,dialogActions:xA,settingsGroup:_A,settingsItem:CA,settingLabelGroup:AA,settingLabel:TA,settingDescription:IA,settingInput:NA,codeBlockWrapper:jA,codeHeader:RA,codeHeaderActions:EA,codeLabel:DA,codeHeaderDescription:PA,mcpTokenCardBody:MA,mcpTokenFormGrid:LA,mcpTokenOutputWrap:BA,mcpTokenValueField:WA,mcpTokenValueText:FA,mcpTokenActionRow:OA,copyBtn:$A,copyBtnActive:UA,copyBtnNeutralActive:zA,headerDivider:HA,groupByContainer:GA,groupByLabel:VA,groupBySelect:ZA,viewSwitcher:qA,selectWithIcon:KA,marginBottom16:YA,headerDraggable:JA,headerDragging:XA,filterSelectSort:QA,archiveRow:eT,taskScopeToggle:tT,taskScopeTabs:nT,taskScopeTab:aT,taskScopeTabActive:rT,taskToolbarAction:sT,overlayHighZ:oT,savedText:iT,shortcutInput:cT,saveSettingsBtnWrapper:lT,marginBottom12:dT,exportRowGrid:uT,settingSubtitleCustom:mT,capitalize:pT,marginTop12:fT,marginTop16:hT,labelGroupFlex:gT,codeBlockWrapperCustom:yT,kanbanWrapper:kT,kanbanContainer:vT,kanbanTopScroll:ST,kanbanTopScrollSpacer:wT,kanbanColumn:bT,kanbanColumnSticky:xT,kanbanColumnCollapsed:_T,kanbanColumnPast:CT,kanbanColumnSelectedDay:AT,kanbanHeader:TT,kanbanCount:IT,kanbanHeaderDraggable:NT,kanbanHeaderPanning:jT,kanbanQuickAdd:RT,kanbanColorDot:ET,kanbanDroppable:DT,kanbanDroppableScroll:PT,kanbanEmpty:MT,kanbanCard:LT,kanbanCardWrapper:BT,taxonomyDropdownActive:WT,kanbanCardWrapperRaised:FT,kanbanCardTitle:OT,kanbanBadges:$T,kanbanBadge:UT,headerFlex:zT,marginBottom8:HT,marginBottom20:GT,configPanel:VT,configPanelLarge:ZT,subLabelBlock:qT,subLabelBlock12:KT,flexBetween:YT,flexBetweenCenter:JT,deleteBtnSmall:XT,deleteBtnMedium:QT,trashIcon:eI,gridConfig:tI,flexColGap4:nI,flexColGap4Center:aI,flex1:rI,flexCol:sI,flexGrow1:oI,inputLabel:iI,inputLabelBlock:cI,checkboxInput:lI,configDividerMargin:dI,configDividerMargin24:uI,pathListMargin:mI,cancelBtnRed:pI,code:fI,workflowList:hI,workflowActions:gI,textBtn:yI,workflowGrid:kI,checkboxLabel:vI,checkboxSmall:SI,docWorkspace:wI,docIndexPanel:bI,docSpinning:xI,docSpin:_I,docViewerPanel:CI,docViewerEmpty:AI,marginTop24:TI,settingSubTitle:II,dangerBtn:NI,aiProfilesExplorer:jI,aiProfilesListPane:RI,aiProfilesList:EI,aiProfilesSection:DI,aiProfilesSectionHeader:PI,aiProfileGroup:MI,aiProfileGroupSelected:LI,aiProfileGroupDuplicate:BI,aiProfileGroupHeader:WI,aiProfileName:FI,aiProfileMetaRow:OI,aiProfileSurfaceBadge:$I,aiProfileDuplicateBadge:UI,aiProfileMergeSection:zI,aiProfileMergeRow:HI,aiProfileIdChip:GI,aiProfileKeepBadge:VI,aiProfileMergeActions:ZI,aiProfileDetailPane:qI,aiProfileDetailCard:KI,aiProfileDetailHero:YI,aiProfileDetailIcon:JI,aiProfileDetailHeading:XI,aiProfileDetailTitleRow:QI,aiProfileDetailTitle:eN,aiProfileDetailMetaRow:tN,aiProfileDetailHandle:nN,aiProfileDetailSectionBadge:aN,aiProfileDetailLinkedCount:rN,aiProfileDetailDescription:sN,aiProfileDetailGrid:oN,aiProfileDetailStat:iN,aiProfileDetailStatLabel:cN,aiProfileDetailStatValue:lN,aiProfileInstanceSection:dN,aiProfileInstanceSectionHeader:uN,aiProfileInstanceList:mN,aiProfileInstanceCard:pN,aiProfileInstanceTopRow:fN,aiProfileInstanceName:hN,aiProfileInstanceMeta:gN},yN="_standaloneWrapper_1mq9f_1",kN="_standalonePage_1mq9f_11",vN="_standaloneHeader_1mq9f_21",SN="_standaloneTitle_1mq9f_27",wN="_standaloneContent_1mq9f_31",bN="_workspaceToolRail_1mq9f_37",xN="_workspaceToolRailMain_1mq9f_54",_N="_workspaceToolRailBottom_1mq9f_62",CN="_workspaceToolRailDivider_1mq9f_72",AN="_workspaceToolButton_1mq9f_79",TN="_workspaceToolButtonActive_1mq9f_99",IN="_headerTitleWidget_1mq9f_123",dn={standaloneWrapper:yN,standalonePage:kN,standaloneHeader:vN,standaloneTitle:SN,standaloneContent:wN,workspaceToolRail:bN,workspaceToolRailMain:xN,workspaceToolRailBottom:_N,workspaceToolRailDivider:CN,workspaceToolButton:AN,workspaceToolButtonActive:TN,headerTitleWidget:IN},NN="_overlay_11v7l_1",jN="_browser_11v7l_16",RN="_header_11v7l_27",EN="_pathInfo_11v7l_36",DN="_actions_11v7l_52",PN="_list_11v7l_57",MN="_item_11v7l_63",LN="_itemCurrent_11v7l_80",BN="_itemFile_11v7l_86",WN="_empty_11v7l_90",Rn={overlay:NN,browser:jN,header:RN,pathInfo:EN,actions:DN,list:PN,item:MN,itemCurrent:LN,itemFile:BN,empty:WN},FN="_overlay_1kzy4_2",ON="_overlayHighZ_1kzy4_15",$N="_modal_1kzy4_20",UN="_draggableModal_1kzy4_46",zN="_draggableHeader_1kzy4_53",HN="_headerActions_1kzy4_61",GN="_modalContent_1kzy4_69",VN="_form_1kzy4_80",ZN="_formActions_1kzy4_91",qN="_modalFooter_1kzy4_98",KN="_modalSizeSm_1kzy4_104",YN="_modalSizeMd_1kzy4_108",JN="_modalSizeMdWide_1kzy4_112",XN="_modalSizeLg_1kzy4_116",QN="_modalSizeXl_1kzy4_120",ej="_modalSizeFull_1kzy4_124",tj="_settingsViewModal_1kzy4_129",nj="_unsavedOverlay_1kzy4_148",aj="_unsavedModal_1kzy4_153",rj="_unsavedHeader_1kzy4_159",sj="_unsavedTitle_1kzy4_164",oj="_unsavedContent_1kzy4_168",ij="_unsavedText_1kzy4_172",cj="_unsavedActions_1kzy4_177",yt={overlay:FN,overlayHighZ:ON,modal:$N,draggableModal:UN,draggableHeader:zN,headerActions:HN,modalContent:GN,form:VN,formActions:ZN,modalFooter:qN,modalSizeSm:KN,modalSizeMd:YN,modalSizeMdWide:JN,modalSizeLg:XN,modalSizeXl:QN,modalSizeFull:ej,settingsViewModal:tj,unsavedOverlay:nj,unsavedModal:aj,unsavedHeader:rj,unsavedTitle:sj,unsavedContent:oj,unsavedText:ij,unsavedActions:cj};function lj(e){const n=e.charAt(0).toUpperCase()+e.slice(1).toLowerCase(),r={Category:"Categories",Priority:"Priorities",Status:"Statuses"};return r[n]?r[n]:`${e}s`}function vi({label:e,options:n,selected:r,onChange:s,variant:o="label",containerStyle:c}){const[i,u]=a.useState(!1),h=a.useRef(null);a.useEffect(()=>{const b=j=>{h.current&&!h.current.contains(j.target)&&u(!1)};return document.addEventListener("mousedown",b),()=>document.removeEventListener("mousedown",b)},[]);const v=b=>{r.includes(b)?s(r.filter(j=>j!==b)):s([...r,b])},x=n.length>0&&n.every(b=>{const j=o==="label"?b.label:b.value;return r.includes(j)}),S=!n.some(b=>{const j=o==="label"?b.label:b.value;return r.includes(j)}),y=()=>{s(x?[]:n.map(b=>o==="label"?b.label:b.value))},k=n.filter(b=>{const j=o==="label"?b.label:b.value;return r.includes(j)}).length,w=lj(e),P=x?`All ${w}`:S?`No ${w}`:k===1?`1 ${e}`:`${k} ${w}`;return t.jsxs("div",{className:m.filterContainer,ref:h,style:c,children:[t.jsxs("button",{className:`${m.filterButton} ${x?"":m.filterActive}`,onClick:()=>u(!i),title:`Filter by ${e}`,children:[t.jsx("span",{children:P}),t.jsx(Vl,{size:14,style:{transform:i?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),i&&t.jsxs("div",{className:`${m.filterDropdown} ${m.appScrollbar} tf-scrollbar`,children:[t.jsxs("div",{className:m.filterOption,onClick:y,children:[t.jsx("input",{type:"checkbox",checked:x,onChange:()=>{}}),t.jsx("span",{style:{fontWeight:600},children:"Toggle All"})]}),t.jsx("div",{className:m.filterDivider}),n.map(b=>{const j=o==="label"?b.label:b.value,F=r.includes(j);return t.jsxs("div",{className:m.filterOption,onClick:()=>v(j),children:[t.jsx("input",{type:"checkbox",checked:F,onChange:()=>{}}),t.jsx("span",{children:b.label})]},b.value)})]})]})}const dj="_taskItem_x943c_1",uj="_compressed_x943c_20",mj="_taskHeader_x943c_25",pj="_taskReferenceCluster_x943c_30",fj="_taskMeta_x943c_34",hj="_taskTitle_x943c_40",gj="_taskItemRecentlyChanged_x943c_67",yj="_inProgress_x943c_128",kj="_onHold_x943c_139",vj="_readyForReview_x943c_150",Sj="_completed_x943c_161",wj="_cancelled_x943c_172",bj="_archived_x943c_183",xj="_taskContent_x943c_193",_j="_kanbanCardOverlay_x943c_202",Cj="_taskReferenceText_x943c_241",Aj="_taskReferenceDivider_x943c_250",Tj="_taskActions_x943c_257",Ij="_taskMetaCompact_x943c_282",Nj="_taskMetaRow_x943c_289",jj="_taskMetaBadgeGroup_x943c_297",Rj="_taskDescription_x943c_303",Ej="_taskLatestComment_x943c_362",Dj="_taskCancellationReason_x943c_383",Pj="_archiveBadge_x943c_537",Mj="_attachmentThumbnails_x943c_542",Lj="_attachmentImageRow_x943c_549",Bj="_attachmentDocumentList_x943c_556",Wj="_attachmentThumbnail_x943c_542",Fj="_contextDocThumb_x943c_589",Oj="_contextDocMain_x943c_615",$j="_contextDocText_x943c_622",Uj="_contextDocIcon_x943c_630",zj="_contextDocName_x943c_641",Hj="_contextDocType_x943c_651",Gj="_taskSpecialists_x943c_663",Vj="_taxonomiesList_x943c_672",Yt={taskItem:dj,compressed:uj,taskHeader:mj,taskReferenceCluster:pj,taskMeta:fj,taskTitle:hj,taskItemRecentlyChanged:gj,inProgress:yj,onHold:kj,readyForReview:vj,completed:Sj,cancelled:wj,archived:bj,taskContent:xj,kanbanCardOverlay:_j,taskReferenceText:Cj,taskReferenceDivider:Aj,taskActions:Tj,taskMetaCompact:Ij,taskMetaRow:Nj,taskMetaBadgeGroup:jj,taskDescription:Rj,taskLatestComment:Ej,taskCancellationReason:Dj,archiveBadge:Pj,attachmentThumbnails:Mj,attachmentImageRow:Lj,attachmentDocumentList:Bj,attachmentThumbnail:Wj,contextDocThumb:Fj,contextDocMain:Oj,contextDocText:$j,contextDocIcon:Uj,contextDocName:zj,contextDocType:Hj,taskSpecialists:Gj,taxonomiesList:Vj},$m=({children:e,className:n,onTaskIdClick:r})=>{if(!e)return null;const s=i=>ut.Children.toArray(i).some(h=>ut.isValidElement(h)?String(h.props?.className||"").includes("task-list-item"):!1),o=/\b(task-\d{10,}-[a-z0-9]+)\b/gi,c=i=>{if(!r)return i;if(typeof i=="string"){const v=Array.from(i.matchAll(o));if(!v.length)return i;const x=[];let S=0;for(let y=0;y<v.length;y+=1){const k=v[y],w=k[1],P=k.index??-1;P<S||(P>S&&x.push(i.slice(S,P)),x.push(t.jsx("button",{type:"button",className:m.taskIdInlineLink,onClick:b=>{b.preventDefault(),b.stopPropagation(),r(w)},children:w},`${w}-${P}-${y}`)),S=P+w.length)}return S<i.length&&x.push(i.slice(S)),x}if(Array.isArray(i))return i.map(c);if(!ut.isValidElement(i))return i;const u=typeof i.type=="string"?i.type:"";if(u==="code"||u==="pre"||u==="a")return i;const h=i.props?.children;return h===void 0?i:ut.cloneElement(i,{},ut.Children.map(h,c))};return t.jsx("div",{className:n,children:t.jsx(Zg,{remarkPlugins:[qg,Kg],components:{p:({children:i})=>t.jsx("p",{children:c(i)}),ul:({children:i})=>t.jsx("ul",{style:s(i)?{paddingLeft:0}:void 0,children:i}),li:({children:i,className:u})=>{const h=String(u||"").includes("task-list-item");return t.jsx("li",{className:u,style:h?{listStyle:"none"}:void 0,children:c(i)})},input:({type:i,checked:u})=>i!=="checkbox"?t.jsx("input",{type:i,checked:u,readOnly:!0}):t.jsx("input",{type:"checkbox",checked:!!u,readOnly:!0,style:{cursor:"default",marginRight:8}}),code:({children:i,className:u,...h})=>{const v=String(i||"").replace(/\n$/,"");return/language-(\w+)/.test(u||"")||v.includes(`
|
|
3
|
-
`)?t.jsx("pre",{className:m.codeBlock,children:t.jsx("code",{className:u,...h,children:v})}):t.jsx("code",{className:m.inlineCode,...h,children:v})}},children:e})})};function yh({label:e,title:n,ariaLabel:r,copied:s=!1,disabled:o=!1,className:c="",onClick:i,children:u}){return t.jsxs("button",{type:"button",className:`${m.taskIdBadge} ${s?m.copiedId:""} ${c}`.trim(),onClick:i,disabled:o,title:n,"aria-label":r,children:[s?t.jsx(io,{size:13}):t.jsx(Bl,{size:13}),t.jsx("span",{className:m.taskIdBadgeLabel,children:u??e})]})}function ou({copied:e,disabled:n=!1,label:r,onClick:s,title:o="Copy task reference",ariaLabel:c,className:i=""}){return t.jsx(yh,{copied:e,disabled:n,label:"",onClick:s,title:o,ariaLabel:c,className:i,children:r})}const Zj=(e,n=10)=>{const r=ku[e?.toLowerCase()]||{icon:"FileCode"},s=ns[r.icon]||Sg;return t.jsx(s,{size:n})},tu=(e,n)=>{if(!e)return null;if(!n.trim())return e;const r=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),s=e.split(new RegExp(`(${r})`,"gi"));return t.jsx(t.Fragment,{children:s.map((o,c)=>o.toLowerCase()===n.toLowerCase()?t.jsx("mark",{className:m.highlight,children:o},c):o)})};function Hl(e){return e.trim().replace(/\\/g,"/")}function kh(e){return e.split("?")[0].split("#")[0]}function Tu(e){return typeof e=="string"?e:String(e.path||"").trim()}function vh(e){const r=kh(Hl(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 Sh(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?Hl(r):null}catch{return null}}function qj(e,n){const r=(n||(typeof e=="string"?"":e.fsPath||"")).trim();if(r)return Hl(r);const s=Tu(e),o=Sh(s);return o?Hl(o):null}function Kj(e,n){const r=String(typeof e=="string"?"":e.assetId||"").trim();if(r)return r;const s=Tu(e);return vh(s)}function Yj(e,n){const r=Tu(e);return vh(r)?!0:[(n||(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(),Sh(r)||"",r].some(o=>{if(!o)return!1;const c=kh(Hl(o)).toLowerCase();return c.endsWith(".md")||c.endsWith(".markdown")})}function Um(e,n){const r=Tu(e),s=qj(e,n);if(!s||!Yj(e,s))return!1;const o=Kj(e),c=new CustomEvent("taskforce:open-markdown-document",{detail:{path:r,fsPath:s,...o?{assetId:o}:{}},cancelable:!0});return!window.dispatchEvent(c)}const Jj="I-";function wh(e){return ql(Jj,e)}function Xj(e){return e.trim().replace(/\\/g,"/")}function bh(e){return typeof e=="string"?e:String(e.path||"").trim()}function Qj(e){return/\.(png|jpe?g|webp)(\?|#|$)/i.test(e)}function e1(e){return typeof e=="string"?Xj(e).split("/").pop()||"Image attachment":String(e.caption||e.displayName||e.originalFilename||e.fsPath||e.path.split("/").pop()||"Image attachment").trim()}function xh(e,n){if(typeof e=="string")return!1;const r=String(e.assetId||"").trim(),s=bh(e);return!!(r&&s&&Qj(s))}function zm(e,n){if(!xh(e))return!1;const r=e,s=String(n?.taskId||r.taskId||"").trim(),o=String(n?.taskReferenceLabel||"").trim(),c=String(r.assetId||"").trim(),i=wh(r),u=bh(e),h=new CustomEvent("taskforce:open-annotated-attachment",{detail:{...s?{taskId:s}:{},...o?{taskReferenceLabel:o}:{},assetId:c,...i?{imageReferenceLabel:i}:{},path:u,displayName:e1(e)},cancelable:!0});return!window.dispatchEvent(h)}function Xp(e,n){if(!e)return null;const r=String(e.taskId||"").trim(),s=String(e.assetId||"").trim(),o=String(e.path||"").trim(),c=String(e.displayName||"").trim()||"Image attachment";if(!s||!o)return null;const i=String(e.taskReferenceLabel||"").trim(),u=r?n.find(v=>v.id===r):void 0,h=r?i||Es(u)||r:void 0;return{...r?{taskId:r}:{},...h?{taskReferenceLabel:h}:{},assetId:s,imageReferenceLabel:String(e.imageReferenceLabel||"").trim()||void 0,path:o,displayName:c}}function Su(e){const n=String(e||"").trim().replace(/\\/g,"/");if(!n)return"";const r=n.split("/").filter(Boolean);return r[r.length-1]||""}function cp(e){const n=String(e||"").trim(),r=n.lastIndexOf(".");return r<=0?{stem:n,ext:""}:{stem:n.slice(0,r),ext:n.slice(r)}}function _h(e,n){const r=String(e||"").trim(),s=String(n||"").trim();return r?s&&r.startsWith(`${s}-`)?r.slice(s.length+1):r.replace(/^asset-[a-z0-9-]+-/i,""):""}function t1(e){return String(e||"").replace(/-\d{13,}$/g,"").replace(/[_-]+/g," ").replace(/\s+/g," ").trim()}function Qp(e,n){const{stem:r,ext:s}=cp(Su(e)),o=_h(r,n),c=t1(o||r);return c?`${c}${s}`:Su(e)||"Untitled document"}function wm(e,n){const r=String(e||"").trim();if(!r)return!0;const s=Su(r),{stem:o}=cp(s),c=String(n||"").trim();if(c&&o.toLowerCase()===c.toLowerCase())return!0;const i=_h(o,n);return i?i!==o:!0}function n1(e){const n=String(e.logicalName||"").trim();if(n&&!wm(n,e.assetId))return n;const r=String(e.displayName||"").trim();if(r&&!wm(r,e.assetId))return r;const s=String(e.title||"").trim();if(s&&!wm(s,e.assetId))return s;const o=String(e.originalFilename||"").trim();if(o)return Qp(o,e.assetId);const c=String(e.fsPath||"").trim();return c?Qp(c,e.assetId):"Untitled document"}function a1(e){return n1(e)}function r1(e){const n=a1(e),r=String(e.originalFilename||e.fsPath||"").trim(),s=cp(Su(r)).ext;return s?n.toLowerCase().endsWith(s.toLowerCase())?n:`${n}${s}`:n}const s1="_taxonomyDropdown_tt12a_1",o1="_taxonomyDropdownActive_tt12a_6",i1="_taxonomyDropdownButton_tt12a_11",c1="_taxonomyDropdownOpen_tt12a_50",l1="_taxonomyDropdownButtonContent_tt12a_56",d1="_taxonomyDropdownIcon_tt12a_64",u1="_taxonomyDropdownLabel_tt12a_72",m1="_taxonomyDropdownChevron_tt12a_81",p1="_taxonomyDropdownChevronOpen_tt12a_87",f1="_taxonomyDropdownPanel_tt12a_91",h1="_taxonomyDropdownPanelPortal_tt12a_110",g1="_taxonomyDropdownOption_tt12a_129",y1="_taxonomyDropdownOptionHighlighted_tt12a_157",k1="_taxonomyDropdownOptionSelected_tt12a_163",Qa={taxonomyDropdown:s1,taxonomyDropdownActive:o1,taxonomyDropdownButton:i1,taxonomyDropdownOpen:c1,taxonomyDropdownButtonContent:l1,taxonomyDropdownIcon:d1,taxonomyDropdownLabel:u1,taxonomyDropdownChevron:m1,taxonomyDropdownChevronOpen:p1,taxonomyDropdownPanel:f1,taxonomyDropdownPanelPortal:h1,taxonomyDropdownOption:g1,taxonomyDropdownOptionHighlighted:y1,taxonomyDropdownOptionSelected:k1};function Pl({value:e,options:n,onChange:r,placeholder:s="Select...",required:o=!1,disabled:c=!1,className:i="",ariaLabelledBy:u,ariaLabel:h,hideSelectedLabel:v=!1,hideChevron:x=!1,panelClassName:S="",portalPanel:y=!1,panelMinWidth:k}){const[w,P]=a.useState(!1),[b,j]=a.useState(-1),[F,B]=a.useState({}),se=a.useRef(null),K=a.useRef(null),te=a.useRef(null),N=n.find(Y=>String(Y.value)===String(e));a.useEffect(()=>{if(!w)return;const Y=E=>{const z=E.target,Z=!!se.current?.contains(z),me=!!te.current?.contains(z);!Z&&!me&&(P(!1),j(-1))};return document.addEventListener("mousedown",Y),()=>document.removeEventListener("mousedown",Y)},[w]),a.useEffect(()=>{if(!w)j(-1);else{const Y=n.findIndex(E=>String(E.value)===String(e));j(Y>=0?Y:0)}},[w,n,e]),a.useEffect(()=>{if(!w||!y)return;const Y=()=>{const E=K.current;if(!E)return;const z=E.getBoundingClientRect(),Z=Math.max(k||0,z.width),me=Math.max(8,z.right-Z),G=z.bottom;B({position:"fixed",top:G,left:me,minWidth:Z,zIndex:2e3})};return Y(),window.addEventListener("resize",Y),window.addEventListener("scroll",Y,!0),()=>{window.removeEventListener("resize",Y),window.removeEventListener("scroll",Y,!0)}},[w,y,k]);const fe=()=>{c||P(!w)},$=Y=>{r(Y.value),P(!1),K.current?.focus()},q=Y=>{if(!c)switch(Y.key){case"Enter":case" ":Y.preventDefault(),w?b>=0&&$(n[b]):P(!0);break;case"Escape":Y.preventDefault(),P(!1),K.current?.focus();break;case"ArrowDown":Y.preventDefault(),w?j(E=>E<n.length-1?E+1:0):P(!0);break;case"ArrowUp":Y.preventDefault(),w?j(E=>E>0?E-1:n.length-1):P(!0);break;case"Home":Y.preventDefault(),w&&j(0);break;case"End":Y.preventDefault(),w&&j(n.length-1);break;case"Tab":P(!1);break}},de=(Y,E)=>{const z=Y.icon&&ns[Y.icon]?ns[Y.icon]:xi,Z=Y.color?ma(Y.color):"var(--text-secondary)",me=E?.hideLabel===!0;return t.jsxs(t.Fragment,{children:[t.jsx("span",{className:`taxonomyDropdownIcon ${Qa.taxonomyDropdownIcon}`,style:{color:Z},children:t.jsx(z,{size:16})}),!me&&t.jsx("span",{className:`taxonomyDropdownLabel ${Qa.taxonomyDropdownLabel}`,children:Y.label})]})},ue=w?t.jsx("div",{ref:te,id:`taxonomy-listbox-${s.replace(/\s+/g,"-")}`,className:`taxonomyDropdownPanel ${Qa.taxonomyDropdownPanel} ${y?Qa.taxonomyDropdownPanelPortal:""} ${S}`,role:"listbox","aria-labelledby":u,"aria-label":h,style:y?F:void 0,children:n.map((Y,E)=>{const z=String(Y.value)===String(e),Z=E===b;return t.jsx("div",{className:`taxonomyDropdownOption ${Qa.taxonomyDropdownOption} ${z?`taxonomyDropdownOptionSelected ${Qa.taxonomyDropdownOptionSelected}`:""} ${Z?`taxonomyDropdownOptionHighlighted ${Qa.taxonomyDropdownOptionHighlighted}`:""}`,role:"option","aria-selected":z,onClick:()=>$(Y),onMouseEnter:()=>j(E),style:(()=>{const me=Y.color,G=ma(me),Ae=!G||G.startsWith("var("),he=Ae?"#8b5cf6":G,Ce=Ae?"20":"30",le=Ae?"05":"10";return{"--option-color":G||"var(--text-primary)","--option-border":`${he}${Ce}`,"--option-bg":`${he}${le}`}})(),children:de(Y)},String(Y.value))})}):null;return t.jsxs("div",{ref:se,className:`taxonomyDropdown ${Qa.taxonomyDropdown} ${w?`taxonomyDropdownActive ${Qa.taxonomyDropdownActive}`:""} ${i}`,children:[t.jsxs("button",{ref:K,type:"button",className:`taxonomyDropdownButton ${Qa.taxonomyDropdownButton} ${w?`taxonomyDropdownOpen ${Qa.taxonomyDropdownOpen}`:""}`,onClick:fe,onKeyDown:q,disabled:c,role:"combobox","aria-haspopup":"listbox","aria-expanded":w,"aria-controls":`taxonomy-listbox-${s.replace(/\s+/g,"-")}`,"aria-labelledby":u,"aria-label":h,style:(()=>{if(!N)return{};const Y=N.color,E=ma(Y),z=!E||E.startsWith("var("),Z=z?"#8b5cf6":E,me=z?"30":"50",G=z?"05":"10";return{"--field-color":E||"var(--text-primary)","--field-border":`${Z}${me}`,"--field-bg":`${Z}${G}`}})(),children:[t.jsx("span",{className:`taxonomyDropdownButtonContent ${Qa.taxonomyDropdownButtonContent}`,children:N?de(N,{hideLabel:v}):t.jsxs(t.Fragment,{children:[t.jsx("span",{className:`taxonomyDropdownIcon ${Qa.taxonomyDropdownIcon}`,children:t.jsx(xi,{size:16})}),t.jsx("span",{className:`taxonomyDropdownLabel ${Qa.taxonomyDropdownLabel}`,children:s})]})}),!x&&t.jsx(Vl,{size:16,className:`taxonomyDropdownChevron ${Qa.taxonomyDropdownChevron} ${w?`taxonomyDropdownChevronOpen ${Qa.taxonomyDropdownChevronOpen}`:""}`})]}),y?ue?bi.createPortal(ue,document.body):null:ue]})}function Ch({task:e,disabled:n=!1,actionDisabled:r,statusDisabled:s,compressed:o=!1,shortLabels:c=!1,showLabel:i=!0,onSetStatus:u,onArchiveTask:h,onUnarchiveTask:v,archiveActionMode:x="auto"}){const S=e?.status||"task",k=x==="auto"?!!e&&(S==="done"||S==="cancelled")?"archive":"none":x,w=r??n,P=s??n,b=wc.map(j=>({...j,label:(o||c)&&j.shortLabel||j.label}));return t.jsxs("div",{className:`${m.statusActionsGroup} ${o?m.statusActionsGroupCompact:""}`,children:[k==="archive"&&t.jsx("button",{type:"button",className:`${m.actionBtn} ${m.archiveTaskBtn}`,onClick:()=>e&&!w&&h?.(e),disabled:w,title:"Archive Now","aria-label":"Archive task",children:t.jsx(wg,{size:o?12:16})}),k==="unarchive"&&t.jsx("button",{type:"button",className:`${m.actionBtn} ${m.archiveTaskBtn}`,onClick:()=>e&&!w&&v?.(e),disabled:w,title:"Unarchive task","aria-label":"Unarchive task",children:t.jsx(uu,{size:o?12:16})}),t.jsx("div",{className:`${m.statusSelectWrap} ${m.statusTaxonomyDropdownWrap}`,children:t.jsx(Pl,{value:S,options:b,disabled:P||!e,ariaLabel:"Status",hideSelectedLabel:!i,hideChevron:!i,className:`${m.statusTaxonomyDropdown} ${o?m.statusTaxonomyDropdownCompact:""} ${i?"":m.statusTaxonomyDropdownIconOnly}`,panelClassName:i?"":m.statusTaxonomyDropdownIconOnlyPanel,portalPanel:!i,panelMinWidth:i?void 0:144,onChange:j=>{e&&u?.(e,j)}})})]})}function v1(e){return e==="title"?"TITLE":e==="description"?"DESCRIPTION":e==="assignee"?"ASSIGNED TO":e==="workstreamId"?"WORKSTREAM":e==="initiativeId"?"INITIATIVE":e}function $r(e,n,r){const s=r?.(n,e);if(typeof s=="string")return s;if(e==null||e==="")return"none";if(Array.isArray(e)){const o=e.map(c=>$r(c,n,r)).filter(Boolean);return o.length>0?o.join(", "):"none"}return typeof e=="object"?"updated":String(e)}function ef(e){return Array.isArray(e)?e.map((n,r)=>{const s=n&&typeof n=="object"?n:{},o=Number(s.order);return{id:String(s.id||"").trim(),title:String(s.title||"").trim(),isCompleted:!!s.isCompleted,order:Number.isFinite(o)?o:r}}):[]}function S1(e){const n=ef(e?.from),r=ef(e?.to),s=new Map(n.map(i=>[i.id||i.title,i])),o=new Map(r.map(i=>[i.id||i.title,i]));for(const[i,u]of o.entries()){const h=s.get(i);if(!h)return u.title?`Checklist item added: ${u.title}`:"Checklist item added";if(h.isCompleted!==u.isCompleted)return u.title?u.isCompleted?`Checklist item completed: ${u.title}`:`Checklist item reopened: ${u.title}`:u.isCompleted?"Checklist item completed":"Checklist item reopened"}for(const[i,u]of s.entries())if(!o.has(i))return u.title?`Checklist item removed: ${u.title}`:"Checklist item removed";return n.length===r.length&&n.every(i=>o.has(i.id||i.title))&&n.some((u,h)=>{const v=r[h];return(u.id||u.title)!==(v?.id||v?.title)})?"Checklist reordered":"Checklist updated"}function Ah(e,n,r){if(e==="checklistItems")return S1(n);const s=v1(e);if(e==="title")return`${s}: updated`;if(e==="description"){const o=$r(n?.from,e,r)!=="none",c=$r(n?.to,e,r)!=="none";return!o&&c?`${s}: added`:o&&!c?`${s}: cleared`:`${s}: updated`}return`${s}: ${$r(n?.from,e,r)} -> ${$r(n?.to,e,r)}`}function Th(e,n){const r=e.details?.changes||{},s=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: ${$r(r.status.from,"status",n)} -> ${$r(r.status.to,"status",n)}`;if(e.action==="task-schedule-changed")return r.scheduledDate?`Scheduled: ${$r(r.scheduledDate.from,"scheduledDate",n)} -> ${$r(r.scheduledDate.to,"scheduledDate",n)}`:r.dueDate?`Due: ${$r(r.dueDate.from,"dueDate",n)} -> ${$r(r.dueDate.to,"dueDate",n)}`:"Schedule updated";if(e.action==="task-relationship-changed"&&r.workstreamId)return`Workstream: ${$r(r.workstreamId.from,"workstreamId",n)} -> ${$r(r.workstreamId.to,"workstreamId",n)}`;if(e.action==="task-attachments-changed")return"Attachments updated";if(s.length===1){const o=s[0],c=r[o];return Ah(o,c,n)}return s.length>1?`${s.length} fields updated`:"Task updated"}function w1(e){const n=Array.isArray(e.activity)&&e.activity.length>0?e.activity:Array.isArray(e.comments)?e.comments.map(r=>({id:`comment:${r.id}`,type:"comment",timestamp:r.timestamp,comment:r})):[];return n.length===0?null:[...n].sort((r,s)=>{const o=Date.parse(String(r.timestamp||"")),c=Date.parse(String(s.timestamp||""));return Number.isFinite(o)&&Number.isFinite(c)&&o!==c?c-o:String(s.id||"").localeCompare(String(r.id||""))})[0]||null}function b1(e,n){return e?e.type==="comment"?e.comment.text:Th(e.event,n):""}const{MessageSquare:x1,User:_1,Bot:C1,Gauge:A1,ClipboardList:T1,HelpCircle:tf,File:I1}=ns,N1=({task:e,searchQuery:n="",copiedId:r=null,taxonomies:s=[],types:o=[],priorities:c=[],categories:i=[],assigneeOptions:u=[],taskWorkstream:h=null,taskInitiative:v=null,isOverlay:x=!1,isArchived:S=!1,readOnlyMode:y=null,isRecentlyChanged:k=!1,onClick:w,onCopyId:P,onToggleInProgress:b,onToggleReview:j,onToggleComplete:F,onToggleCancel:B,onSetStatus:se,onArchiveTask:K,onUnarchive:te,onDelete:N,deleteActionTitle:fe,onOpenTaskById:$,compressed:q=!1,showStatusLabel:de=!0})=>{const ue=Hf(e),Y=ue.label||(ue.isProvisional?"Pending":""),E=ue.isProvisional,z=!!ue.label,Z=yu(h)||h?.id||"",me=ph(v)||v?.id||"",G=c.find(ee=>String(ee.value)===String(e.priority)),Ae=G?G.label.toLowerCase().replace(/\s+/g,"-"):String(e.priority),he=i.find(ee=>ee.value===e.category||ee.label===e.category),Ce=typeof e.complexity=="number"?e.complexity:Number(e.complexity??3),le=Number.isFinite(Ce)?Math.max(1,Math.min(5,Math.round(Ce))):3,be={1:"Tiny",2:"Low",3:"Mid",4:"High",5:"Epic"},Ie={1:"tiny",2:"low",3:"medium",4:"high",5:"epic"},Ne=be[le],Fe=`var(--complexity-${Ie[le]})`,D=Ay(e.priority,Ae),I=!!m[`priorityItem_${D}`],p=gu(e.assignee),A=Si(e.assignee,u),_=ut.useMemo(()=>w1(e),[e]),M=y||(e.isDeleted?"deleted":S?"archived":null),H=M!==null,R=ut.useCallback((ee,Be)=>{const l=String(Be||"").trim();if(l){if(ee==="assignee")return Si(l,u);if(ee==="workstreamId"&&l===h?.id)return Z||h.id;if(ee==="initiativeId"&&l===v?.id)return me||v.id}},[u,me,v,h,Z]),re=ut.useMemo(()=>b1(_,R),[R,_]),V=Array.isArray(e.activity)&&e.activity.length>0?e.activity.length:e.comments?.length||0,ie=[Yt.taskItem,e.status==="on-hold"?Yt.onHold:"",e.status==="in-progress"?Yt.inProgress:"",e.status==="review"?Yt.readyForReview:"",e.status==="done"?Yt.completed:"",e.status==="cancelled"?Yt.cancelled:"",k?Yt.taskItemRecentlyChanged:"",m[`priorityItem_${D}`]||"",x?Yt.kanbanCardOverlay:"",S?Yt.archived:"",q?Yt.compressed:""].filter(Boolean).join(" "),W=ma(G?.color),Q=o.find(ee=>ee.value===e.type),ge=ma(Q?.color)||Lv(e.type),Me=ee=>{const Be=typeof ee=="string"?ee:ee.path,l=typeof ee=="string"?"":(ee.fsPath||"").trim(),rt=typeof ee=="string"?"":(ee.displayName||"").trim(),At=typeof ee=="string"?"":(ee.originalFilename||"").trim(),jt=typeof ee=="string"?"":(ee.caption||"").trim();return[l,At,rt,jt,Be].some(tt=>/\.(png|jpe?g|webp|gif)(\?|#|$)/i.test(tt))},ye=ee=>{const Be=typeof ee=="string"?ee:ee.path,l=Be.includes("/api/taskforce/documents/"),rt=typeof ee=="string"?"":(ee.displayName||"").trim();if(l&&typeof ee!="string")return r1({displayName:ee.displayName,originalFilename:ee.originalFilename,fsPath:ee.fsPath,assetId:ee.assetId||null});const At=typeof ee=="string"?"":(ee.caption||"").trim();if(At)return At;if(rt)return rt;const jt=typeof ee=="string"?"":(ee.originalFilename||"").trim();return jt||Be.split("?")[0].split("#")[0].split("/").pop()||"Context file"},Ue=ee=>{const Be=typeof ee=="string"?ee:ee.path,l=typeof ee=="string"?"":(ee.fsPath||"").trim(),rt=typeof ee=="string"?"":(ee.caption||"").trim(),At=typeof ee=="string"?"":(ee.originalFilename||"").trim(),jt=[];if(l&&jt.push(l),At&&jt.push(At),rt&&jt.push(rt),Be.includes("/api/taskforce/context-link?path="))try{const tt=new URL(Be,"http://localhost").searchParams.get("path");tt&&jt.push(tt)}catch{}jt.push(Be);for(const It of jt){const xt=It.split("?")[0].split("#")[0].split("/").pop()||"",Ve=xt.lastIndexOf(".");if(Ve<=0||Ve===xt.length-1)continue;const ct=xt.slice(Ve+1);if(ct)return ct.slice(0,5).toUpperCase()}return"FILE"},pt={"--task-change-glow-color":W||`var(--priority-${D})`,...W?{borderLeftColor:W,[`--priority-${D}`]:W}:{},...!I&&W?{borderLeft:`4px solid ${W}`}:{}},Ye=ee=>ee.replace(/\b\w/g,Be=>Be.toUpperCase()),bt=Kl(s,[e]),qe=e.checklistItems||[],Qe=qe.length,$e=Qe>0?qe.filter(ee=>ee.isCompleted).length:0,He=(ee,Be)=>{ee.stopPropagation(),P?.(ee,Be)};return t.jsxs("div",{className:ie,onClick:()=>w?.(e),style:pt,"data-task-card":"true",children:[t.jsxs("div",{className:Yt.taskHeader,children:[t.jsxs("div",{className:Yt.taskReferenceCluster,children:[v?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:Yt.taskReferenceText,children:me}),t.jsx("span",{className:Yt.taskReferenceDivider,children:"/"})]}):null,h?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:Yt.taskReferenceText,children:Z}),t.jsx("span",{className:Yt.taskReferenceDivider,children:"/"})]}):null,Y?t.jsx(ou,{copied:z&&r===ue.label,onClick:ee=>He(ee,ue.label),disabled:!z,title:z?"Copy task reference":"Task reference pending sync",className:S?Yt.archiveBadge:"",label:tu(Y,n)}):null,E?t.jsx("span",{className:m.taskHierarchyMeta,title:"Temporary local reference until cloud sync assigns the final task number.",children:"Pending sync"}):null]}),t.jsx("div",{className:Yt.taskActions,onClick:ee=>ee.stopPropagation(),children:H?te||N?t.jsxs(t.Fragment,{children:[te&&t.jsx("button",{type:"button",className:m.actionBtn,onClick:()=>te(e.id),title:M==="deleted"?"Restore deleted task":"Restore archived task",children:t.jsx(uu,{size:16})}),N&&t.jsx("button",{type:"button",className:`${m.actionBtn} ${m.deleteBtn}`,onClick:()=>N(e.id),title:fe||(M==="deleted"?"Delete Permanently":"Move to Trash"),children:t.jsx($l,{size:16})})]}):null:t.jsx(Ch,{task:e,compressed:q,shortLabels:!0,showLabel:de,onSetStatus:(ee,Be)=>{if(se){se(ee,Be);return}if(Be==="in-progress"){b?.(ee);return}if(Be==="review"){j?.(ee);return}if(Be==="done"){F?.(ee);return}Be==="cancelled"&&B?.(ee)},onArchiveTask:K})})]}),t.jsxs("div",{className:Yt.taskContent,children:[H&&t.jsx("div",{className:`${Yt.taskMeta} ${Yt.taskMetaCompact}`}),t.jsxs("div",{children:[t.jsxs("div",{className:Yt.taskTitle,style:q?{fontSize:"13px",lineHeight:"1.4"}:{},children:[M==="archived"&&"✓ ",M==="deleted"&&"Deleted: ",tu(e.title,n)]}),e.description&&!H&&!q&&t.jsx("div",{className:Yt.taskDescription,children:t.jsx($m,{onTaskIdClick:$,children:e.description})})]}),e.attachments&&e.attachments.length>0&&!H&&!q&&t.jsxs("div",{className:Yt.attachmentThumbnails,children:[t.jsx("div",{className:Yt.attachmentImageRow,children:(e.attachments||[]).map((ee,Be)=>{const l=typeof ee=="string"?ee:ee.path;return Me(ee)?t.jsx("div",{className:Yt.attachmentThumbnail,onClick:rt=>{rt.stopPropagation(),!zm(typeof ee=="string"?{path:l}:ee,{taskId:e.id,taskReferenceLabel:Y})&&window.open(l,"_blank")},children:t.jsx("img",{src:l,alt:`Attachment ${Be}`})},Be):null})}),t.jsx("div",{className:Yt.attachmentDocumentList,children:(e.attachments||[]).map((ee,Be)=>{const l=typeof ee=="string"?ee:ee.path,rt=typeof ee=="string"?void 0:ee.fsPath,At=ye(ee);if(Me(ee))return null;const jt=Ue(ee);return t.jsxs("button",{type:"button",className:Yt.contextDocThumb,onClick:It=>{It.stopPropagation(),!Um(ee,rt)&&window.open(l,"_blank")},title:At,style:{"--context-doc-accent":Bv(jt)},children:[t.jsxs("span",{className:Yt.contextDocMain,children:[t.jsx("span",{className:Yt.contextDocIcon,"aria-hidden":"true",children:t.jsx(I1,{size:13})}),t.jsx("span",{className:Yt.contextDocText,children:t.jsx("span",{className:Yt.contextDocName,children:At})})]}),t.jsx("span",{className:Yt.contextDocType,children:jt})]},Be)})})]}),e.status==="cancelled"&&e.canceledReason&&!q&&t.jsxs("div",{className:Yt.taskCancellationReason,children:[t.jsx("strong",{children:"Cancellation Reason:"})," ",tu(e.canceledReason,n)]}),re&&!H&&!q&&t.jsxs("div",{className:Yt.taskLatestComment,children:[t.jsx("strong",{children:"Latest Activity:"})," ",tu(re.length>120?re.substring(0,120)+"...":re,n)]}),!H&&bt.length>0&&!q&&t.jsx("div",{className:`${Yt.taskSpecialists} ${Yt.taxonomiesList}`,children:bt.map(ee=>{const Be=e.taxonomies?.[ee.id];return Be?(Array.isArray(Be)?Be:[Be]).map(rt=>{const At=ee.options.find(Ve=>Ve.value===rt);if(!At)return null;const jt=ns[At.icon||"Layers"]||Em,It=ma(At.color)||"var(--text-primary)",tt=ee.status==="retired"?`${ee.label} (Retired)`:ee.label,xt=At.status==="retired"?`${At.label} (Retired)`:At.label;return t.jsx("span",{className:m.specialistBadge,style:{borderColor:`${It}50`,backgroundColor:`${It}15`,color:It},title:`${tt}: ${Ye(xt)}`,children:t.jsx(jt,{size:10})},`${ee.id}-${rt}`)}):null})}),t.jsx("div",{className:Yt.taskMeta,children:H?t.jsx("span",{children:e.category}):t.jsx(t.Fragment,{children:t.jsxs("div",{className:Yt.taskMetaRow,style:q?{marginBottom:0}:void 0,children:[t.jsxs("div",{className:Yt.taskMetaBadgeGroup,children:[(()=>{const ee=ma(he?.color),Be=he?.icon||"Folder",l=ns[Be]||_i;return t.jsx("span",{className:m.metaBadge,title:Ye(e.category),style:{color:ee||"var(--text-secondary)",backgroundColor:ee?`${ee}15`:"var(--bg-tertiary)",borderColor:ee?`${ee}40`:"transparent"},children:t.jsx(l,{size:14})})})(),t.jsx("span",{className:`${m.metaBadge} ${m[`type_${e.type}`]||""}`,title:Ye(e.type||jr),style:{color:`var(--type-color, ${ge})`,backgroundColor:`color-mix(in srgb, var(--type-color, ${ge}), transparent 90%)`,borderColor:`color-mix(in srgb, var(--type-color, ${ge}), transparent 75%)`},children:Q?.icon?(()=>{const ee=ns[Q.icon]||tf;return t.jsx(ee,{size:14})})():Zj(e.type,14)}),G&&t.jsx("span",{className:m.metaBadge,style:{color:W||"var(--text-secondary)",backgroundColor:W?`${W}15`:"var(--bg-tertiary)",borderColor:W?`${W}40`:"var(--border-color)"},title:`${G.label}`,children:(()=>{const ee=G.icon||"AlertCircle",Be=ns[ee]||bg;return t.jsx(Be,{size:14})})()}),V>0&&t.jsxs("span",{className:m.metaBadge,title:`${V} activity items`,style:{color:"var(--text-muted)",backgroundColor:"var(--bg-tertiary)",borderColor:"var(--border-primary)",gap:"4px",padding:"0 8px"},children:[t.jsx(x1,{size:14}),t.jsx("span",{children:V})]}),Qe>0&&t.jsxs("span",{className:m.metaBadge,title:`${$e}/${Qe} checklist items complete`,style:{color:"var(--text-muted)",backgroundColor:"var(--bg-tertiary)",borderColor:"var(--border-primary)",gap:"4px",padding:"0 8px"},children:[t.jsx(T1,{size:14}),t.jsx("span",{children:`${$e}/${Qe}`})]})]}),t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[t.jsxs("span",{className:m.metaBadge,title:`AI-estimated complexity: ${Ne} (${le}/5)`,style:{color:Fe,backgroundColor:`color-mix(in srgb, ${Fe}, transparent 88%)`,borderColor:`color-mix(in srgb, ${Fe}, transparent 72%)`,gap:"4px",padding:"0 8px"},children:[t.jsx(A1,{size:14}),!q&&t.jsx("span",{children:Ne})]}),t.jsx("span",{className:m.metaBadge,title:`Assigned to: ${A}`,"aria-label":p==="unassigned"?"Unassigned":`Assigned to ${A}`,style:{backgroundColor:p==="agent"?"color-mix(in srgb, var(--color-violet-500, #8b5cf6), transparent 88%)":p==="member"?"color-mix(in srgb, var(--color-green-500, #22c55e), transparent 88%)":"color-mix(in srgb, var(--text-secondary, #888), transparent 88%)",padding:"0 8px",color:p==="agent"?"var(--color-violet-500, #8b5cf6)":p==="member"?"var(--color-green-500, #22c55e)":"var(--text-secondary, #888)",borderColor:p==="agent"?"color-mix(in srgb, var(--color-violet-500, #8b5cf6), transparent 72%)":p==="member"?"color-mix(in srgb, var(--color-green-500, #22c55e), transparent 72%)":"color-mix(in srgb, var(--text-secondary, #888), transparent 70%)",display:"flex",alignItems:"center"},children:p==="agent"?t.jsx(C1,{size:q?14:16}):p==="member"?t.jsx(_1,{size:q?14:16}):t.jsx(tf,{size:q?14:16})})]})]})})})]})]})},Gl=ut.memo(N1),wu="168px";function Ih(){return t.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:"var(--text-secondary)",marginRight:"4px"},children:Le("standalone.filtersCaps")})}function wi({label:e,options:n,selected:r,onChange:s,variant:o="label"}){return t.jsx(vi,{label:e,options:n,selected:r,onChange:s,variant:o,containerStyle:{flex:`0 0 ${wu}`,maxWidth:wu}})}function Nh({onClick:e}){return t.jsxs("button",{onClick:e,style:{background:"none",border:"none",color:"var(--text-secondary)",cursor:"pointer",fontSize:"12px",display:"flex",alignItems:"center",gap:"4px"},children:[t.jsx(Ii,{size:12})," ",Le("standalone.clearFilters")]})}function nf({label:e,options:n,selected:r,onChange:s,allLabel:o,title:c}){const[i,u]=ut.useState(!1),h=ut.useRef(null),v=n.find(y=>y.value===r),x=v?.selectedLabel||v?.label||o;ut.useEffect(()=>{const y=k=>{h.current&&!h.current.contains(k.target)&&u(!1)};return document.addEventListener("mousedown",y),()=>document.removeEventListener("mousedown",y)},[]);const S=y=>{s(y),u(!1)};return t.jsxs("div",{className:m.filterContainer,ref:h,style:{flex:`0 0 ${wu}`,maxWidth:wu},children:[t.jsxs("button",{type:"button",className:`${m.filterButton} ${r?m.filterActive:""}`,onClick:()=>u(y=>!y),title:c||`Filter by ${e}`,"aria-haspopup":"listbox","aria-expanded":i,children:[t.jsx("span",{children:x}),t.jsx(Vl,{size:14,style:{transform:i?"rotate(180deg)":"none",transition:"transform 0.2s",opacity:.5}})]}),i&&t.jsxs("div",{className:`${m.filterDropdown} ${m.appScrollbar} tf-scrollbar`,role:"listbox","aria-label":e,children:[t.jsxs("button",{type:"button",className:m.filterOption,onClick:()=>S(""),"aria-selected":!r,children:[t.jsx(io,{size:14,style:{opacity:r?0:1}}),t.jsx("span",{style:{fontWeight:r?500:600},children:o})]}),t.jsx("div",{className:m.filterDivider}),n.map(y=>{const k=y.value===r;return t.jsxs("button",{type:"button",className:m.filterOption,onClick:()=>S(y.value),"aria-selected":k,children:[t.jsx(io,{size:14,style:{opacity:k?1:0}}),t.jsx("span",{style:{fontWeight:k?600:500},children:y.label})]},y.value)})]})]})}function jh({scope:e,onScopeChange:n,className:r,labelClassName:s}){return t.jsxs("div",{className:r,children:[t.jsx("span",{className:s,children:"Scope"}),t.jsx("div",{className:m.taskScopeTabs,role:"tablist","aria-label":"Task scope",children:[{value:"open",label:"Open"},{value:"archived",label:"Archived"},{value:"deleted",label:"Deleted"}].map(o=>{const c=e===o.value;return t.jsx("button",{type:"button",className:`${m.taskScopeTab} ${c?m.taskScopeTabActive:""}`,onClick:()=>n(o.value),role:"tab","aria-selected":c,"aria-pressed":c,title:`Show ${o.label.toLowerCase()} tasks`,children:o.label},o.value)})})]})}function Rh({onClick:e,disabled:n=!1,className:r,title:s="Permanently delete all deleted tasks",children:o="Delete All Permanently"}){return t.jsxs("button",{type:"button",className:r,onClick:e,disabled:n,title:s,children:[t.jsx($l,{size:14}),o]})}const{Search:af,ClipboardList:j1,ChevronRight:R1,ChevronDown:E1,Folder:D1,Archive:P1,RotateCcw:M1,X:L1,Plus:B1,ArrowUpDown:W1,Trash2:F1}=ns,Eh=a.forwardRef((e,n)=>{const{tasks:r,archivedTasks:s,categories:o,types:c,priorities:i,taxonomyDisplayLabels:u,assigneeOptions:h=[],workstreams:v=[],initiatives:x=[],searchQuery:S,filterCategories:y,filterTypes:k,filterPriorities:w,filterStatus:P,filterAssignees:b=[],filterTaxonomies:j,sortBy:F,sortOrder:B,showArchive:se,taskScope:K,collapsedCategories:te,loadingTasks:N,filteredTasks:fe,filteredArchive:$,groupedTasks:q,filteredDeletedTasks:de=[],groupedDeletedTasks:ue={},copiedId:Y,recentlyChangedTaskIds:E=[],showTaskCardStatusLabel:z=!0,onSearchChange:Z,onFilterCategoriesChange:me,onFilterTypesChange:G,onFilterPrioritiesChange:Ae,onFilterStatusChange:he,onFilterAssigneesChange:Ce,onTaxonomyFilterChange:le,onSortByChange:be,onSortOrderChange:Ie,onShowArchiveChange:Ne,onTaskScopeChange:Fe,onClearFilters:D,onToggleCategory:I,onEditTask:p,onOpenTaskById:A,onCopyId:_,onToggleInProgress:M,onToggleReview:H,onToggleComplete:R,onToggleCancel:re,onSetStatus:V,onArchiveTask:ie,onBulkArchive:W,onUnarchive:Q,onDelete:ge,onDeleteAllDeleted:Me,onFetchArchive:ye,onAddTaskToCategory:Ue,supplementalTasks:pt=[],taxonomies:Ye}=e,bt=new Set(E),qe=ut.useMemo(()=>new Map(v.map(ke=>[ke.id,ke])),[v]),Qe=ut.useMemo(()=>new Map(x.map(ke=>[ke.id,ke])),[x]),$e=ut.useCallback(ke=>{const ve=ke.workstreamId&&qe.get(ke.workstreamId)||null,Re=ve?.initiativeId&&Qe.get(ve.initiativeId)||null;return{taskWorkstream:ve,taskInitiative:Re}},[Qe,qe]),He=[...r,...s,...pt],ee=!!Fe,Be=Fe,l=K??(se?"archived":"open"),rt=ee?l==="archived"?$:l==="deleted"?de:fe:fe,At=ee?l==="archived"?{Archived:$}:l==="deleted"?ue:q:q,jt=ee?l==="deleted"?"deleted":l==="archived"?"archived":null:null,It=S?Le("taskList.noMatchingTasks"):l==="archived"?"No archived tasks found.":l==="deleted"?"No deleted tasks found.":Le("taskList.noActiveTasks"),tt=o.filter(ke=>!ke.disabled),xt=o.filter(ke=>ke.disabled&&He.some(ve=>ve.category===ke.value)),Ve=[...tt,...xt.filter(ke=>!tt.some(ve=>ve.value===ke.value))].map(ke=>({value:ke.value,label:ke.disabled?`${ke.label} (Legacy)`:ke.label})),ct=c.filter(ke=>ke.status!=="retired"),ze=c.filter(ke=>ke.status==="retired"&&He.some(ve=>ve.type===ke.value)),at=[...ct,...ze.filter(ke=>!ct.some(ve=>ve.value===ke.value))].map(ke=>({value:ke.value,label:ke.status==="retired"?`${ke.label} (Retired)`:ke.label})),Rt=Kl(Ye,He).filter(ke=>ke.filterEnabled!==!1).map(ke=>({...ke,options:ip(ke,He)})),ot=ut.useMemo(()=>[{value:"created",label:Le("taskList.sortCreated")},{value:"updated",label:Le("taskList.sortUpdated")},{value:"priority",label:Le("taskList.sortPriority")},...gh(Ye,He)],[He,Le,Ye]);return t.jsxs("div",{className:m.viewTab,ref:n,children:[t.jsxs("div",{className:m.filterBar,children:[t.jsxs("div",{className:m.searchContainer,children:[t.jsx(af,{size:16,className:m.searchIcon}),t.jsx("input",{type:"text",className:m.searchInput,placeholder:Le("taskList.searchPlaceholder"),value:S,onChange:ke=>Z(ke.target.value)}),S&&t.jsx("button",{className:m.clearSearchBtn,onClick:()=>Z(""),title:Le("taskList.clearSearchTitle"),children:t.jsx(L1,{size:14})})]}),t.jsxs("div",{className:m.filterRow,children:[t.jsx(vi,{label:u?.category||Le("taskList.categoryLabel"),options:Ve,selected:y,onChange:me,variant:"value"}),t.jsx(vi,{label:u?.type||Le("taskList.typeLabel"),options:at,selected:k,onChange:G,variant:"value"})]}),t.jsxs("div",{className:m.filterRow,children:[t.jsx(vi,{label:u?.priority||Le("taskList.priorityLabel"),options:i,selected:w,onChange:Ae,variant:"value"}),t.jsx(vi,{label:Le("taskList.statusLabel"),options:oo,selected:P,onChange:he,variant:"value"}),t.jsx(vi,{label:Le("taskList.assigneeLabel"),options:h,selected:b,onChange:ke=>Ce?.(ke),variant:"value"})]}),Rt.map(ke=>t.jsx(vi,{label:ke.status==="retired"?`${ke.label} (Retired)`:ke.label,options:ke.options.map(ve=>({...ve,label:ve.status==="retired"?`${ve.label} (Retired)`:ve.label})),selected:j[ke.id]||[],onChange:ve=>le(ke.id,ve),variant:"value"},ke.id)),t.jsxs("div",{className:m.filterRow,children:[t.jsxs("div",{className:m.sortLabel,children:[t.jsx(W1,{size:14,style:{marginRight:"4px"}})," ",Le("taskList.sortByLabel")]}),t.jsx("select",{value:F,onChange:ke=>be(ke.target.value),className:`${m.filterSelect} ${m.filterSelectSort} `,children:ot.map(ke=>t.jsx("option",{value:ke.value,children:ke.label},ke.value))}),t.jsx("button",{className:`${m.resetFiltersBtn} ${m.sortDirectionBtnWidget}`,onClick:Ie,title:Le(B==="desc"?"taskList.sortDirectionDescTitle":"taskList.sortDirectionAscTitle"),children:B==="desc"?t.jsx(xf,{size:14}):t.jsx(_f,{size:14})}),t.jsx("button",{className:m.resetFiltersBtn,onClick:D,title:Le("taskList.resetFiltersTitle"),children:t.jsx(M1,{size:14})})]}),t.jsxs("div",{className:`${m.filterRow} ${m.archiveRow} `,children:[l==="open"?t.jsxs("button",{className:`${m.bulkArchiveBtn} ${r.some(ke=>ke.status==="done"||ke.status==="cancelled")?"":m.disabledBtn} `,onClick:()=>r.some(ke=>ke.status==="done"||ke.status==="cancelled")&&W(),disabled:!r.some(ke=>ke.status==="done"||ke.status==="cancelled"),title:r.some(ke=>ke.status==="done"||ke.status==="cancelled")?Le("taskList.archiveAllTitle"):Le("taskList.noTasksToArchiveTitle"),children:[t.jsx(P1,{size:12}),t.jsx("span",{children:Le("taskList.archiveFinished")})]}):l==="deleted"&&Me?t.jsx(Rh,{className:`${m.bulkArchiveBtn} ${m.taskToolbarAction} ${m.bulkDeleteBtn} ${de.length===0?m.disabledBtn:""}`,onClick:()=>de.length>0&&Me(),disabled:de.length===0,title:de.length>0?"Empty trash":"Trash is already empty",children:"Empty Trash"}):t.jsx("div",{}),ee?t.jsx(jh,{scope:l,onScopeChange:ke=>{Be?.(ke),ke==="archived"?(Ne(!0),ye()):se&&Ne(!1)},className:`${m.archiveToggle} ${m.taskScopeToggle}`}):t.jsxs("label",{className:m.archiveToggle,children:[t.jsx("input",{type:"checkbox","aria-label":"Archived",checked:se,onChange:ke=>{Ne(ke.target.checked),ke.target.checked&&ye()}}),t.jsx("span",{children:"Include Archive"})]})]})]}),N&&r.length===0?t.jsx("div",{className:m.loading,children:t.jsx(Ea,{size:24,className:m.spinner})}):rt.length===0&&!N?t.jsxs("div",{className:m.emptyState,children:[S?t.jsx(af,{size:48}):l==="deleted"?t.jsx(F1,{size:48}):t.jsx(j1,{size:48}),t.jsx("p",{children:It})]}):t.jsx("div",{className:m.taskList,style:{opacity:N?.6:1,transition:"opacity 0.2s ease"},children:Object.entries(At).map(([ke,ve])=>{if(ve.length===0)return null;const Re=te[ke];return t.jsxs("div",{className:m.categoryGroup,children:[t.jsx("div",{className:m.categoryHeader,onClick:()=>I(ke),children:t.jsxs("div",{className:m.categoryTitle,children:[Re?t.jsx(R1,{size:16}):t.jsx(E1,{size:16}),(()=>{const vt=o.find(J=>J.label===ke),Oe=vt?.icon&&Ai[vt.icon]?Ai[vt.icon]:D1,kt=ma(vt?.color)||"var(--color-purple, #8b5cf6)";return t.jsx(Oe,{size:16,className:m.categoryTitleIcon,style:{color:kt}})})(),ke,t.jsxs("span",{className:m.categoryCount,children:["(",ve.length,")"]}),Ue&&t.jsx("button",{className:m.kanbanQuickAdd,onClick:vt=>{vt.stopPropagation(),Ue(ke)},title:Le("taskList.addTaskToCategoryTitle",{category:ke}),style:{marginLeft:"auto"},disabled:jt!==null,children:t.jsx(B1,{size:14})})]})}),!Re&&t.jsx("div",{className:m.categoryItems,children:ve.map(vt=>(()=>{const{taskWorkstream:Oe,taskInitiative:kt}=$e(vt);return t.jsx(Gl,{task:vt,taskWorkstream:Oe,taskInitiative:kt,searchQuery:S,copiedId:Y,taxonomies:Ye,types:c,priorities:i,assigneeOptions:h,onClick:p,onOpenTaskById:A,onCopyId:_,onToggleInProgress:M,onToggleReview:H,onToggleComplete:R,onToggleCancel:re,onSetStatus:V,onArchiveTask:ie,onUnarchive:jt?Q:void 0,onDelete:jt?ge:void 0,categories:o,isRecentlyChanged:bt.has(vt.id),readOnlyMode:jt,showStatusLabel:z},vt.id)})())})]},ke)})}),!ee&&se&&$.length>0&&t.jsxs("div",{className:m.archiveList,children:[t.jsx("div",{className:m.archiveHeader,children:"Archived"}),$.map(ke=>(()=>{const{taskWorkstream:ve,taskInitiative:Re}=$e(ke);return t.jsx(Gl,{task:ke,taskWorkstream:ve,taskInitiative:Re,searchQuery:S,copiedId:Y,isArchived:!0,types:c,assigneeOptions:h,onClick:p,onCopyId:_,onSetStatus:V,onUnarchive:Q,onDelete:ge,deleteActionTitle:"Delete Permanently",categories:o,showStatusLabel:z},ke.id)})())]})]})});Eh.displayName="TaskList";const O1="_formNotice_12l9z_1",$1="_assigneeIndicator_12l9z_12",U1="_assigneeIndicatorAgent_12l9z_20",z1="_assigneeIndicatorUser_12l9z_24",H1="_assigneeIndicatorUnassigned_12l9z_28",G1="_markdownPreview_12l9z_32",V1="_error_12l9z_83",Z1="_keyboardHint_12l9z_92",q1="_taskFormLifecycle_12l9z_110",K1="_taskFormMetaDivider_12l9z_115",Y1="_taskFormMetaGrid_12l9z_122",J1="_compactMetaSection_12l9z_128",X1="_createWorkstreamRow_12l9z_134",Q1="_createWorkstreamDropdown_12l9z_140",eR="_compactMetaGrid_12l9z_145",tR="_compactMetaField_12l9z_151",nR="_compactMetaFieldHint_12l9z_165",aR="_formFieldsetReset_12l9z_169",rR="_formLayout_12l9z_176",sR="_formLayoutWithSidebar_12l9z_183",oR="_formMainColumn_12l9z_191",iR="_activitySidebar_12l9z_198",cR="_activitySidebarHeader_12l9z_208",lR="_activitySidebarTitle_12l9z_215",dR="_activitySidebarCount_12l9z_224",uR="_taskFormDateRow_12l9z_246",mR="_taskFormDateLabel_12l9z_253",pR="_taskFormDateValue_12l9z_261",fR="_taskFormMetaStack_12l9z_269",hR="_taskFormMetaActor_12l9z_275",gR="_taskFormDateWarning_12l9z_287",yR="_taskFormDateError_12l9z_293",kR="_helpHeader_12l9z_299",vR="_helpClose_12l9z_310",SR="_markdownHelp_12l9z_324",wR="_helpGrid_12l9z_333",bR="_helpGridItem_12l9z_339",xR="_settingsHint_12l9z_351",_R="_sectionBlock_12l9z_357",CR="_softSectionSurface_12l9z_367",AR="_stackedList_12l9z_374",TR="_stackedListSpaced_12l9z_379",IR="_checklistRow_12l9z_383",NR="_checklistRowDragging_12l9z_392",jR="_checklistHandleBtn_12l9z_396",RR="_checklistCheckboxBtn_12l9z_419",ER="_checklistCheckboxBtnChecked_12l9z_439",DR="_checklistItemText_12l9z_444",PR="_checklistItemTextCompleted_12l9z_450",MR="_checklistRemoveBtn_12l9z_455",LR="_specialistChip_12l9z_522",BR="_specialistChipActive_12l9z_545",WR="_commentPanel_12l9z_626",FR="_activitySidebarPanel_12l9z_635",OR="_commentThread_12l9z_643",$R="_emptyComments_12l9z_663",UR="_comment_12l9z_626",zR="_activityEvent_12l9z_681",HR="_activityEventSystem_12l9z_686",GR="_commentAi_12l9z_690",VR="_commentUser_12l9z_694",ZR="_commentHeader_12l9z_698",qR="_activityEventHeader_12l9z_715",KR="_commentAuthor_12l9z_721",YR="_commentTime_12l9z_729",JR="_commentText_12l9z_733",XR="_activityEventText_12l9z_773",QR="_activityEventChanges_12l9z_782",eE="_activityEventChange_12l9z_782",tE="_commentInputArea_12l9z_800",nE="_commentInput_12l9z_800",aE="_sendCommentBtn_12l9z_832",rE="_taxonomyFieldsGrid_12l9z_858",sE="_markdownPreviewContainer_12l9z_865",oE="_descriptionSurface_12l9z_870",Pe={formNotice:O1,assigneeIndicator:$1,assigneeIndicatorAgent:U1,assigneeIndicatorUser:z1,assigneeIndicatorUnassigned:H1,markdownPreview:G1,error:V1,keyboardHint:Z1,taskFormLifecycle:q1,taskFormMetaDivider:K1,taskFormMetaGrid:Y1,compactMetaSection:J1,createWorkstreamRow:X1,createWorkstreamDropdown:Q1,compactMetaGrid:eR,compactMetaField:tR,compactMetaFieldHint:nR,formFieldsetReset:aR,formLayout:rR,formLayoutWithSidebar:sR,formMainColumn:oR,activitySidebar:iR,activitySidebarHeader:cR,activitySidebarTitle:lR,activitySidebarCount:dR,taskFormDateRow:uR,taskFormDateLabel:mR,taskFormDateValue:pR,taskFormMetaStack:fR,taskFormMetaActor:hR,taskFormDateWarning:gR,taskFormDateError:yR,helpHeader:kR,helpClose:vR,markdownHelp:SR,helpGrid:wR,helpGridItem:bR,settingsHint:xR,sectionBlock:_R,softSectionSurface:CR,stackedList:AR,stackedListSpaced:TR,checklistRow:IR,checklistRowDragging:NR,checklistHandleBtn:jR,checklistCheckboxBtn:RR,checklistCheckboxBtnChecked:ER,checklistItemText:DR,checklistItemTextCompleted:PR,checklistRemoveBtn:MR,specialistChip:LR,specialistChipActive:BR,commentPanel:WR,activitySidebarPanel:FR,commentThread:OR,emptyComments:$R,comment:UR,activityEvent:zR,activityEventSystem:HR,commentAi:GR,commentUser:VR,commentHeader:ZR,activityEventHeader:qR,commentAuthor:KR,commentTime:YR,commentText:JR,activityEventText:XR,activityEventChanges:QR,activityEventChange:eE,commentInputArea:tE,commentInput:nE,sendCommentBtn:aE,taxonomyFieldsGrid:rE,markdownPreviewContainer:sE,descriptionSurface:oE};function bm({label:e,value:n,options:r,onChange:s,type:o="priority",hideLabel:c=!1,showSelectedLabel:i=!0}){const u=r.find(h=>String(h.value)===String(n));return t.jsxs("div",{className:m.field,children:[!c&&t.jsxs("div",{className:m.labelRow,children:[t.jsx("label",{className:m.label,children:e}),i&&u&&t.jsx("span",{className:m.levelLabel,style:{color:ma(u.color)||(o==="priority"?`var(--priority-${n})`:o==="complexity"?`var(--complexity-${n})`:"var(--text-secondary)"),backgroundColor:(ma(u.color)?`${ma(u.color)}25`:void 0)||(o==="priority"?`color-mix(in srgb, var(--priority-${n}), transparent 85%)`:o==="complexity"?`color-mix(in srgb, var(--complexity-${n}), transparent 85%)`:"rgba(255,255,255,0.05)")},children:u.label})]}),t.jsx("div",{className:m.levelSelect,children:r.map((h,v)=>{const x=r.findIndex(k=>String(k.value)===String(n)),S=v<=x,y=String(h.value)===String(n);return t.jsx("button",{type:"button",className:`${m.levelOption} ${S?m.levelOptionFilled:""} ${S?m[`levelOption_${o}_${h.value}`]:""} ${y?m.levelOptionSelected:""}`,onClick:()=>s(h.value),title:h.label,style:{opacity:S?1:.15,backgroundColor:S?ma(h.color)||(o==="priority"?`var(--priority-${h.value})`:o==="complexity"?`var(--complexity-${h.value})`:"var(--text-primary)"):void 0,color:S?o==="priority"&&String(h.value).toLowerCase()==="medium"?"black":"white":void 0,boxShadow:S&&(o==="priority"&&(String(h.value).toLowerCase()==="critical"||h.value===4)||o==="complexity"&&(String(h.value).toLowerCase()==="epic"||h.value===5))?`0 0 12px ${o==="priority"?"rgba(239, 68, 68, 0.6)":"rgba(217, 70, 239, 0.6)"}`:void 0}},String(h.value))})})]})}const rf=new Map;function iE(e){const n=e instanceof Date?e:new Date(e);return Number.isNaN(n.getTime())?null:n}function cE(e,n){const r=Object.entries(n).sort(([s],[o])=>s.localeCompare(o));return JSON.stringify([e,r])}function Cc(e,n,r){const s=iE(e);if(!s)return"";const o=r??qf(),c=cE(o,n);let i=rf.get(c);return i||(i=new Intl.DateTimeFormat(o,n),rf.set(c,i)),i.format(s)}const lE="D-";function dE(e){return ql(lE,e)}const Dh=[".png",".jpg",".jpeg",".webp",".gif",".pdf",".txt",".md",".csv",".json",".doc",".docx",".html",".js",".ts",".tsx",".css",".py",".java",".go",".rs",".sh"].join(","),uE=new Set(["image/png","image/jpeg","image/webp"]),mE=new Set(Dh.split(",").map(e=>e.trim().toLowerCase())),pE=10*1024*1024,fE=3500;function Ph(e){const n=e.trim().toLowerCase(),r=n.lastIndexOf(".");return r===-1?"":n.slice(r)}function xm(e){if(e.length===0)return"";const n=e.slice(0,3).join(", "),r=e.length-3;return r>0?`${n}, +${r} more`:n}function hE(e){return`${e.name.trim().toLowerCase()}::${e.size}::${e.lastModified}`}function gE(e){return new Promise((n,r)=>{const s=new FileReader;s.onload=()=>n(String(s.result||"")),s.onerror=()=>r(s.error||new Error("Failed to read file")),s.readAsDataURL(e)})}function jl(e){return/\.(png|jpe?g|webp|gif)(\?|#|$)/i.test(e)}function yE(e){const n=e.types;if(!n)return null;for(const r of Array.from(n)){const s=String(r||"").trim().toLowerCase();if(uE.has(s))return s}return null}function sf(e,n){const r=e.includes("?")?"&":"?";return`${e}${r}download=1&filename=${encodeURIComponent(n)}`}function of(e){return typeof e=="string"?e.split("/").pop()||"Context file":e.displayName||e.originalFilename||e.caption||e.fsPath||e.path.split("/").pop()||"Context file"}function kE(e){const n=typeof e=="string"?[e]:[e.originalFilename,e.displayName,e.caption,e.fsPath,e.path];for(const s of n){if(!s)continue;const o=Ph(s);if(o)return o.replace(".","").slice(0,5).toUpperCase()}const r=typeof e=="string"?e:e.path;return/^https?:\/\//i.test(r)?"LINK":"FILE"}function vE(e){const{taskId:n,taskReferenceLabel:r,workspaceId:s,contextFiles:o,onAddContextFile:c,onRemoveContextFile:i,onUpdateContextCaption:u}=e,h=a.useRef(null),[v,x]=a.useState(!1),[S,y]=a.useState(null),[k,w]=a.useState(""),[P,b]=a.useState(null),[j,F]=a.useState(null),[B,se]=a.useState(!1),[K,te]=a.useState(!1),[N,fe]=a.useState(0),$=a.useRef(new Set),q=a.useRef(new Set),de=p=>(p||"").trim(),ue=(p,A)=>{const _=[],M=de(p),H=de(A);return M&&_.push(`path:${M}`),H&&_.push(`fs:${H}`),_},Y=a.useMemo(()=>{const p=new Set;return o.forEach(A=>{if(typeof A=="string"){ue(A).forEach(_=>p.add(_));return}ue(A.path,A.fsPath).forEach(_=>p.add(_))}),p},[o]);a.useEffect(()=>{$.current=new Set(Y)},[Y]);const E=(p,A)=>A.some(_=>p.has(_)),z=(p,A)=>A.forEach(_=>p.add(_)),Z=String(s||"").trim(),me=(p="application/json")=>{const A={"Content-Type":p};return Z&&(A["x-taskforce-workspace-id"]=Z),A},G=(p,A=!0,_=$.current)=>{const M=p.trim();if(!M||!/^https?:\/\//i.test(M))return"invalid";const R=M,re=ue(R);if(E(_,re))return"duplicate";const V=M.split(/[\\/]/).pop()||M;return c({path:R,caption:V,timestamp:new Date().toISOString()}),z(_,re),A&&w(""),b(null),"added"};a.useEffect(()=>{if(!j)return;const p=window.setTimeout(()=>{F(null)},fE);return()=>window.clearTimeout(p)},[j]);const Ae=async p=>{if(p.length===0)return;y(null),F(null);const A=p,_=[],M=[],H=[],R=[],re=new Set(q.current);A.forEach(Q=>{const ge=Ph(Q.name);if(!mE.has(ge)){_.push(Q.name);return}if(Q.size>pE){M.push(Q.name);return}const Me=hE(Q);if(re.has(Me)){H.push(Q.name);return}re.add(Me),R.push({file:Q,fingerprint:Me})});const V=[];if(_.length>0&&V.push(`${_.length} unsupported file${_.length===1?"":"s"} skipped: ${xm(_)}.`),M.length>0&&V.push(`${M.length} file${M.length===1?"":"s"} over 10 MB skipped: ${xm(M)}.`),H.length>0&&V.push(`${H.length} local duplicate file${H.length===1?"":"s"} skipped before upload: ${xm(H)}.`),R.length===0){V.length>0&&F(V.join(" ")),h.current&&(h.current.value="");return}x(!0);const ie=new Set($.current);let W=0;try{for(const{file:ge,fingerprint:Me}of R){let ye=null;const Ue=await fetch("/api/taskforce/context-upload/init",{method:"POST",headers:me(),body:JSON.stringify({originalName:ge.name,mimeType:ge.type||"application/octet-stream",size:ge.size,taskId:n||null,workspaceId:Z||null})});if(Ue.ok){const Ye=await Ue.json();if(Ye?.success&&typeof Ye?.uploadUrl=="string"&&typeof Ye?.path=="string"){if(!(await fetch(Ye.uploadUrl,{method:String(Ye.method||"PUT"),headers:Ye.headers||{"Content-Type":ge.type||"application/octet-stream"},body:ge})).ok)throw new Error(`Upload failed for ${ge.name}`);const qe=await fetch("/api/taskforce/context-upload/finalize",{method:"POST",headers:me(),body:JSON.stringify({relativePath:Ye.relativePath,mimeType:ge.type||"application/octet-stream",originalName:ge.name,size:ge.size,taskId:n||null,workspaceId:Z||null})});if(!qe.ok){const Qe=await qe.json().catch(()=>({}));throw new Error(Qe?.error||`Upload failed for ${ge.name}`)}ye=await qe.json().catch(()=>null)}else Ye?.success&&typeof Ye?.path=="string"&&(ye=Ye)}if(!ye){const Ye=await gE(ge),bt=await fetch("/api/taskforce/context-upload",{method:"POST",headers:me(),body:JSON.stringify({file:Ye,originalName:ge.name,taskId:n||null,workspaceId:Z||null})});if(!bt.ok)throw new Error(`Upload failed for ${ge.name}`);ye=await bt.json()}if(!ye?.success||!ye?.path)throw new Error(`Upload failed for ${ge.name}`);const pt=ue(ye.path,ye.fsPath);if(E(ie,pt)){W+=1;continue}c({path:ye.path,fsPath:ye.fsPath,caption:typeof ye.caption=="string"&&ye.caption.trim().length>0?ye.caption:ge.name,displayName:typeof ye.displayName=="string"?ye.displayName:void 0,originalFilename:typeof ye.originalFilename=="string"?ye.originalFilename:ge.name,assetId:typeof ye.assetId=="string"?ye.assetId:void 0,referenceNumber:typeof ye.referenceNumber=="number"?ye.referenceNumber:null,referenceLabel:typeof ye.referenceLabel=="string"?ye.referenceLabel:void 0,taskId:typeof ye.taskId=="string"?ye.taskId:null,timestamp:new Date().toISOString()}),Kk({workspaceId:Z||"default",taskId:n||null,reason:"upload"}),z(ie,pt),q.current.add(Me)}const Q=[...V];W>0&&Q.push(`${W} duplicate file${W===1?"":"s"} skipped.`),F(Q.length>0?Q.join(" "):null),$.current=ie}catch(Q){y(Q instanceof Error?Q.message:"Failed to upload context file")}finally{x(!1),h.current&&(h.current.value="")}},he=async p=>{!p||p.length===0||await Ae(Array.from(p))},Ce=async()=>{if(y(null),F(null),!navigator.clipboard||typeof navigator.clipboard.read!="function"){y("Clipboard image paste is not available in this browser.");return}try{const p=await navigator.clipboard.read(),A=[];for(const _ of p){const M=yE(_);if(!M)continue;const H=await _.getType(M),R=M.toLowerCase()==="image/png"?"png":M.toLowerCase()==="image/webp"?"webp":"jpg";A.push(new globalThis.File([H],`pasted-image-${Date.now()}.${R}`,{type:M}))}if(A.length===0){y("Clipboard does not currently contain a supported image.");return}await Ae(A)}catch(p){y(p?.message||"Failed to read an image from the clipboard.")}},le=p=>{const A=new Set,_=p.dataTransfer.getData("text/uri-list")||"",M=p.dataTransfer.getData("text/plain")||"",H=`${_}
|
|
4
|
-
${M}`.split(`
|
|
5
|
-
`).map(R=>R.trim()).filter(R=>!!R&&!R.startsWith("#"));for(const R of H){if(/^file:\/\//i.test(R)){try{const re=new URL(R),V=decodeURIComponent(re.pathname||"").trim();V&&A.add(V)}catch{}continue}A.add(R)}return Array.from(A)},be=p=>{if(p.preventDefault(),p.stopPropagation(),te(!1),fe(0),y(null),b(null),F(null),p.dataTransfer.files&&p.dataTransfer.files.length>0){he(p.dataTransfer.files);return}const A=le(p);if(A.length===0){b("Drop a file or URL.");return}const _=new Set($.current);let M=0,H=0,R=0;A.forEach(V=>{const ie=G(V,!1,_);ie==="duplicate"&&(M+=1),ie==="added"&&(H+=1),ie==="invalid"&&(R+=1)});const re=[];M>0&&re.push(`${M} duplicate link${M===1?"":"s"} skipped.`),R>0&&re.push(`${R} local path${R===1?"":"s"} skipped. Upload files to attach them, or drop an http(s) URL to link.`),F(re.length>0?re.join(" "):H>0?null:j),$.current=_},Ie=p=>{p.preventDefault(),p.stopPropagation(),fe(A=>A+1),te(!0)},Ne=p=>{p.preventDefault(),p.stopPropagation(),fe(A=>{const _=Math.max(0,A-1);return _===0&&te(!1),_})},Fe=p=>{p.preventDefault(),p.stopPropagation(),p.dataTransfer.dropEffect="copy"},D=o.filter(p=>{const A=typeof p=="string"?p:p.path;return jl(A)}),I=o.filter(p=>{const A=typeof p=="string"?p:p.path;return!jl(A)});return t.jsxs("div",{className:m.specialistSection,children:[t.jsxs("div",{className:m.toggleHeading,onClick:()=>se(!B),title:B?"Hide context documents":"Show context documents",children:[t.jsxs("label",{className:m.label,children:["Context Documents ",o.length>0&&`(${o.length})`]}),B?t.jsx(Vl,{size:14}):t.jsx(Ac,{size:14})]}),B&&t.jsxs(t.Fragment,{children:[t.jsx("p",{className:m.settingsHint,children:"Upload files into task context storage, or add an external http(s) URL."}),t.jsxs("div",{className:m.contextUploadPanel,children:[t.jsxs("div",{className:m.contextUploadActions,children:[t.jsxs("button",{type:"button",className:m.secondaryHeaderBtn,onClick:()=>h.current?.click(),disabled:v,children:[v?t.jsx(Ea,{size:12,className:m.spinner}):t.jsx(dm,{size:12}),v?"Uploading...":"Upload File"]}),t.jsxs("button",{type:"button",className:m.secondaryHeaderBtn,onClick:()=>{Ce()},disabled:v,children:[t.jsx(Bl,{size:12}),"Paste Image from Clipboard"]})]}),t.jsx("input",{ref:h,type:"file",accept:Dh,multiple:!0,className:m.hiddenInput,onChange:p=>{he(p.target.files)}}),S&&t.jsx("div",{className:m.error,children:S}),t.jsxs("div",{className:m.contextLinkRow,children:[t.jsx("input",{type:"text",className:m.input,placeholder:"Add external URL (https://...)",value:k,onChange:p=>{w(p.target.value),P&&b(null),j&&F(null)}}),t.jsx("button",{type:"button",className:m.secondaryHeaderBtn,onClick:()=>{if(!k.trim()){b("Enter an http(s) URL to link.");return}const p=G(k,!0);if(p==="invalid"){b("Only external http(s) URLs can be linked here. Upload files to attach them.");return}p==="duplicate"?F("Link already exists in task context."):p==="added"&&F(null)},children:"Add URL"})]}),t.jsxs("div",{className:`${m.contextDropzone} ${K?m.contextDropzoneActive:""}`,onDragEnter:Ie,onDragLeave:Ne,onDragOver:Fe,onDrop:be,children:[t.jsx(dm,{size:14}),t.jsx("span",{children:"Drop files or URLs here"})]})]}),j&&t.jsx("div",{className:m.contextNotice,children:j}),P&&t.jsx("div",{className:m.error,children:P}),D.length>0&&t.jsx("div",{className:m.attachmentGrid,children:o.map((p,A)=>{const _=typeof p=="string"?p:p.path;if(!jl(_))return null;const M=typeof p=="string"?void 0:p.fsPath,H=typeof p=="string"?"":p.caption||"",R=of(p),re=jl(_),V=/^https?:\/\//i.test(_),ie=xh(p);return t.jsxs("div",{className:m.attachmentCard,children:[t.jsxs("div",{className:m.attachmentPreviewContainer,children:[re?t.jsx("img",{src:_,alt:H||`Context file ${A}`,onClick:()=>{zm(p,{taskId:n,taskReferenceLabel:r})||window.open(_,"_blank")},onError:W=>{W.target.style.display="none",W.target.parentElement.classList.add(m.brokenImage)}}):t.jsxs("button",{type:"button",className:m.contextFileLink,onClick:()=>{Um(p,M)||window.open(_,"_blank")},title:"Open file",children:[t.jsx(dm,{size:16}),t.jsx("span",{children:H||M||_.split("/").pop()||"Context file"})]}),t.jsxs("div",{className:m.brokenImagePlaceholder,children:[t.jsx(Tc,{size:16}),t.jsx("span",{children:"Preview unavailable"})]}),t.jsxs("div",{className:m.attachmentActions,children:[ie&&t.jsx("button",{type:"button",className:m.attachmentActionBtn,onClick:W=>{W.stopPropagation(),zm(p,{taskId:n,taskReferenceLabel:r})},title:"Annotate",children:t.jsx(xg,{size:12})}),M&&t.jsx("button",{type:"button",className:m.attachmentActionBtn,onClick:W=>{W.stopPropagation(),navigator.clipboard.writeText(M)},title:`Copy path: ${M}`,children:t.jsx(Bl,{size:12})}),!V&&t.jsx("button",{type:"button",className:m.attachmentActionBtn,onClick:W=>{W.stopPropagation(),window.open(sf(_,H||R),"_blank")},title:"Download",children:t.jsx(Ip,{size:12})}),t.jsx("button",{type:"button",className:m.attachmentActionBtn,onClick:W=>{W.stopPropagation(),i(A)},title:"Delete",children:t.jsx($l,{size:12})})]})]}),t.jsx("input",{type:"text",className:m.attachmentCaptionInput,placeholder:"Add a label...",value:H,onChange:W=>u(A,W.target.value)})]},A)})}),I.length>0&&t.jsx("div",{className:m.documentAttachmentList,children:o.map((p,A)=>{const _=typeof p=="string"?p:p.path;if(jl(_))return null;const M=typeof p=="string"?void 0:p.fsPath,H=typeof p=="string"?"":p.caption||"",R=of(p),re=kE(p),V=typeof p=="string"?"":dE(p),ie=/^https?:\/\//i.test(_);return t.jsxs("div",{className:m.documentAttachmentItem,children:[t.jsxs("div",{className:m.documentAttachmentRow,children:[t.jsxs("button",{type:"button",className:m.documentAttachmentLink,onClick:()=>{Um(p,M)||window.open(_,"_blank")},title:R,children:[t.jsxs("span",{className:m.documentAttachmentMain,children:[t.jsx("span",{className:m.documentAttachmentIcon,"aria-hidden":"true",children:t.jsx(_g,{size:13})}),t.jsxs("span",{className:m.documentAttachmentText,children:[t.jsx("span",{className:m.documentAttachmentName,children:R}),V&&t.jsx("span",{className:m.taskIdBadge,children:V})]})]}),t.jsx("span",{className:m.documentAttachmentType,children:re})]}),t.jsxs("div",{className:m.documentAttachmentActions,children:[M&&t.jsx("button",{type:"button",className:m.documentAttachmentActionBtn,onClick:()=>{navigator.clipboard.writeText(M)},title:`Copy path: ${M}`,children:t.jsx(Bl,{size:12})}),!ie&&t.jsx("button",{type:"button",className:m.documentAttachmentActionBtn,onClick:()=>{window.open(sf(_,H||R),"_blank")},title:"Download",children:t.jsx(Ip,{size:12})}),t.jsx("button",{type:"button",className:m.documentAttachmentActionBtn,onClick:()=>i(A),title:"Delete",children:t.jsx($l,{size:12})})]})]}),t.jsx("input",{type:"text",className:m.documentAttachmentCaptionInput,placeholder:"Add a label...",value:H,onChange:W=>u(A,W.target.value)})]},A)})})]})]})}function SE({id:e,item:n,onToggle:r,onRemove:s}){const{attributes:o,listeners:c,setNodeRef:i,transform:u,transition:h,isDragging:v}=Mf({id:e}),x={transform:qm.Transform.toString(u),transition:h,opacity:v?.88:1};return t.jsxs("div",{ref:i,style:x,className:`${Pe.checklistRow} ${v?Pe.checklistRowDragging:""}`.trim(),children:[t.jsx("button",{type:"button",className:Pe.checklistHandleBtn,title:"Reorder checklist item","aria-label":"Reorder checklist item",...o,...c,children:t.jsx(Tg,{size:14})}),t.jsx("button",{type:"button",className:`${Pe.checklistCheckboxBtn} ${n.isCompleted?Pe.checklistCheckboxBtnChecked:""}`.trim(),onClick:r,title:n.isCompleted?"Mark incomplete":"Mark complete","aria-label":n.isCompleted?"Mark checklist item incomplete":"Mark checklist item complete",children:n.isCompleted?t.jsx(io,{size:14,strokeWidth:2.1}):null}),t.jsx("span",{className:`${Pe.checklistItemText} ${n.isCompleted?Pe.checklistItemTextCompleted:""}`.trim(),children:n.title}),t.jsx("button",{type:"button",className:Pe.checklistRemoveBtn,onClick:s,title:"Remove checklist item","aria-label":"Remove checklist item",children:t.jsx(Ii,{size:15,strokeWidth:1.9})})]})}function _m(e,n){const r=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return r?`rgba(${parseInt(r[1],16)}, ${parseInt(r[2],16)}, ${parseInt(r[3],16)}, ${n})`:""}function Mh(e){const{editingTaskId:n,error:r,title:s,description:o,category:c,type:i,priority:u,complexity:h,manualComplexityEnabled:v=!1,assignee:x,scheduledDate:S,dueDate:y,workstreamInput:k="",checklistItems:w,comments:P,newCommentText:b,contextFiles:j,currentWorkspaceId:F,apiBaseUrl:B,descriptionFocused:se,showMarkdownHelp:K,showChecklist:te=!1,checklistEnabled:N=!0,formTaxonomies:fe,onTaxonomyChange:$,onOpenSettings:q,categories:de,types:ue,priorities:Y,taxonomyDisplayLabels:E,assigneeOptions:z,taxonomies:Z,workstreams:me=[],initiatives:G=[],copiedId:Ae,onTitleChange:he,onDescriptionChange:Ce,onCategoryChange:le,onTypeChange:be,onPriorityChange:Ie,onComplexityChange:Ne,onAssigneeChange:Fe,onScheduledDateChange:D,onDueDateChange:I,onWorkstreamInputChange:p=()=>{},onChecklistItemsChange:A,onNewCommentTextChange:_,onDescriptionFocusedChange:M,onShowMarkdownHelpChange:H,onShowChecklistChange:R=()=>{},onSubmit:re,onAddComment:V,onAddContextFile:ie,onRemoveContextFile:W,onUpdateContextCaption:Q,onCopyId:ge,onToggleInProgress:Me,onToggleReview:ye,onToggleComplete:Ue,onToggleCancel:pt,onSetStatus:Ye,onArchiveTask:bt,onUnarchive:qe,onOpenTaskById:Qe,currentTask:$e,commentsEndRef:He}=e,ee=Es($e),Be=ut.useMemo(()=>Iv(Z,fe),[Z,fe]),l=ut.useMemo(()=>{const ae=de.find(Bt=>Bt.value===_c),xe={value:_c,label:ae?.label||Cu,icon:ae?.icon||"HelpCircle",color:ae?.color||"var(--text-secondary)"},We=de.find(Bt=>Bt.value===c),ft=de.filter(Bt=>!Bt.disabled||Bt.value===We?.value).filter(Bt=>Bt.value!==_c).map(Bt=>({value:Bt.value,label:Bt.disabled?`${Bt.label} (Legacy)`:Bt.label,icon:Bt.icon,color:Bt.color}));return[xe,...ft]},[de,c]),rt=ut.useMemo(()=>{const ae=ue.find(We=>We.value===i);return ue.filter(We=>We.status!=="retired"||We.value===ae?.value).map(We=>({value:We.value,label:We.status==="retired"?`${We.label} (Retired)`:We.label,icon:We.icon||"Box",color:We.color||"violet-500"}))},[ue,i]),At=ae=>ae&&Cc(ae,{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"})||null,jt=At($e?.createdAt),It=At($e?.updatedAt||$e?.createdAt),tt=At($e?.completedAt),xt=ut.useMemo(()=>{const ae=new Date,xe=ae.getFullYear(),We=String(ae.getMonth()+1).padStart(2,"0"),wt=String(ae.getDate()).padStart(2,"0");return`${xe}-${We}-${wt}`},[]),Ve=!!(y&&S&&y<S),ct=!!(y&&y<xt&&(!$e||$e.status!=="done"&&$e.status!=="cancelled")),ze=w.filter(ae=>ae.isCompleted).length,[at,Nt]=ut.useState(""),[Rt,ot]=ut.useState(!1),ke=!!$e?.isArchived,ve=!!$e?.isDeleted,Re=ut.useMemo(()=>me.map(ae=>{const xe=yu(ae);return{value:xe||ae.id,label:xe?`${xe} · ${ae.title}`:ae.title,icon:"Folder",color:"var(--text-secondary)"}}),[me]),vt=ut.useMemo(()=>Re.some(ae=>String(ae.value)===String(k||"").trim()),[k,Re]);ut.useEffect(()=>{if(n){Rt&&ot(!1);return}if(k.trim()){if(vt&&Rt){ot(!1);return}!vt&&!Rt&&ot(!0)}},[n,vt,Rt,k]);const Oe=ke||ve,kt=ut.useRef(null),J=jf(Pm(Pf,{activationConstraint:{distance:6}}));ut.useLayoutEffect(()=>{const ae=kt.current;if(!ae)return;const xe=()=>{ae.scrollTop=0;const wt=ae.parentElement;wt&&(typeof wt.scrollTo=="function"?wt.scrollTo({top:0,left:0,behavior:"auto"}):wt.scrollTop=0)};xe();const We=window.requestAnimationFrame(xe);return()=>window.cancelAnimationFrame(We)},[n,$e?.id]);const Se=()=>{const ae=at.trim();if(!ae)return;const xe=new Date().toISOString();A([...w,{id:`checklist-draft-${xe}-${w.length}`,taskId:n||"",title:ae,isCompleted:!1,order:w.length,createdAt:xe,updatedAt:xe}]),Nt("")},Ee=ut.useCallback(ae=>{const{active:xe,over:We}=ae;if(!We||xe.id===We.id)return;const wt=w.findIndex(en=>en.id===xe.id),ft=w.findIndex(en=>en.id===We.id);if(wt<0||ft<0)return;const Bt=new Date().toISOString(),Vt=Yg(w,wt,ft).map((en,Mt)=>({...en,order:Mt,updatedAt:Bt}));A(Vt)},[w,A]),Te=ae=>{const xe=String(ae||"").trim(),We=ae.trim().replace(/^ai-profile-/i,"").replace(/[-_]+/g," ").replace(/\s+/g," ");return!We||We==="ai"||xe.toLowerCase().startsWith("ai-profile-")?"AI Agent":`AI Agent - ${We.split(" ").map(ft=>ft.charAt(0).toUpperCase()+ft.slice(1)).join(" ")}`},Ze=ek(z,x),nt=gu(x),St=Si(x,Ze),dt=ut.useMemo(()=>new Map(Ze.map(ae=>[String(ae.value),ae])),[Ze]),Et=dt.get(String(x||"unassigned")),Ut=$e?.assigneeActor?.color||Et?.color,Ht=ut.useMemo(()=>{const ae=[$e?.assigneeActor,$e?.createdByActor].filter(Boolean);return new Map(ae.map(xe=>[String(xe.id),xe]))},[$e?.assigneeActor,$e?.createdByActor]),un=ut.useMemo(()=>new Map(me.map(ae=>[ae.id,yu(ae)||ae.id])),[me]),Zt=ut.useMemo(()=>new Map(G.map(ae=>[ae.id,ph(ae)||ae.id])),[G]),Gt=ut.useMemo(()=>Array.isArray($e?.activity)&&$e.activity.length>0?$e.activity:P.map(ae=>({id:`comment:${ae.id}`,type:"comment",timestamp:ae.timestamp,comment:ae})),[P,$e?.activity]),ln=(ae,xe)=>{const We=String(xe||"").trim();if(We){if(ae==="assignee")return Si(We,Ze);if(ae==="workstreamId")return un.get(We);if(ae==="initiativeId")return Zt.get(We)}},Zn=ut.useCallback((ae,xe,We)=>{if(We&&We.trim())return We.trim();const wt=String(ae||"").trim();if(!wt)return xe==="ai"?"AI Agent":Le("taskForm.you");const ft=Ht.get(wt);if(ft?.label)return ft.label;const Bt=dt.get(wt)||dt.get(wt.toLowerCase());return Bt?.label?Bt.label:xe==="ai"?Te(wt):Si(wt,Ze)||wt},[Ht,dt,Te,Ze]),nn=ut.useMemo(()=>{const ae=Gt[0];if(!ae)return null;if(ae.type==="comment"){const We=ae.comment;return Zn(We.author,We.actor?.kind==="ai"?"ai":We.actor?.kind==="human"?"human":null,We.actor?.label||null)}const xe=ae.event;return Zn(xe.actor,xe.actorType,xe.actorProfile?.label||null)},[Zn,Gt]),Dt=ut.useMemo(()=>{if(!$e?.completedAt)return null;for(const xe of Gt){if(xe.type!=="event")continue;const We=xe.event,wt=We.details?.changes?.status?.to;if(wt==="done"||wt==="cancelled")return Zn(We.actor,We.actorType,We.actorProfile?.label||null)}return nn},[$e?.completedAt,nn,Zn,Gt]),En=$e?.createdByActor?.label||Zn($e?.createdBy||null,$e?.createdByActor?.kind==="ai"?"ai":$e?.createdByActor?.kind==="human"?"human":null,$e?.createdByActor?.label||null),Dn=nn,mn=Gt.length;ut.useLayoutEffect(()=>{if(!n)return;const ae=He.current;if(!ae)return;const xe=ae.parentElement,We=()=>{if(typeof ae.scrollIntoView=="function"){ae.scrollIntoView({block:"end"});return}xe&&(xe.scrollTop=xe.scrollHeight)};We();const wt=window.requestAnimationFrame(We);return()=>window.cancelAnimationFrame(wt)},[mn,He,$e?.id,n]);const rn=n?t.jsxs("aside",{className:Pe.activitySidebar,"aria-label":Le("taskForm.commentsSectionTitle"),children:[t.jsxs("div",{className:Pe.activitySidebarHeader,children:[t.jsx("h2",{className:Pe.activitySidebarTitle,children:Le("taskForm.commentsSectionTitle")}),t.jsx("span",{className:Pe.activitySidebarCount,children:mn})]}),t.jsxs("div",{className:`${Pe.commentPanel} ${Pe.activitySidebarPanel}`.trim(),children:[t.jsxs("div",{className:Pe.commentThread,children:[mn===0&&t.jsx("div",{className:Pe.emptyComments,children:Le("taskForm.noComments")}),Gt.map(ae=>{if(ae.type==="comment"){const yn=ae.comment,Cn=String(yn.author||"").trim(),kn=Cn.toLowerCase(),Ft=Ht.get(Cn),Bn=dt.get(Cn)||dt.get(kn),Mn=yn.actor||Ft||Bn||null,$n=yn.actor?.kind==="human"?"member":yn.actor?.kind==="ai"?"agent":Ft?.kind==="human"?"member":Ft?.kind==="ai"?"agent":Bn?.kind||(kn===""||kn==="user"||kn==="human"?"member":"agent"),_a=yn.actor?.label||Ft?.label||Bn?.label||(Cn?Si(Cn,Ze):"")||($n==="agent"?Te(Cn||"ai"):Le("taskForm.you")),Tt=yn.actor?.color||Ft?.color||Bn?.color,Jt=String(Mn?.icon||($n==="agent"?"Bot":"User")),Pa=Ai[Jt]||($n==="agent"?ru:Lo);return t.jsxs("div",{className:`${Pe.comment} ${$n==="agent"?Pe.commentAi:Pe.commentUser}`,children:[t.jsxs("div",{className:Pe.commentHeader,children:[t.jsx("span",{className:Pe.commentAuthor,style:Tt?{color:Tt}:void 0,children:t.jsxs(t.Fragment,{children:[t.jsx(Pa,{size:12,strokeWidth:1.5})," ",_a]})}),t.jsx("span",{className:Pe.commentTime,children:Cc(yn.timestamp,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]}),t.jsx("div",{className:Pe.commentText,style:Tt?{background:`linear-gradient(135deg, ${_m(Tt,.18)} 0%, ${_m(Tt,.1)} 100%)`,borderColor:_m(Tt,.35)}:void 0,children:t.jsx($m,{onTaskIdClick:Qe,children:yn.text})})]},yn.id)}const xe=ae.event,We=String(xe.actor||"").trim(),wt=We.toLowerCase(),ft=Ht.get(We),Bt=dt.get(We)||dt.get(wt),Vt=xe.actorProfile||ft||Bt||null,en=xe.actorType==="ai"?"agent":xe.actorType==="human"?"member":"system",Mt=xe.actorProfile?.label||ft?.label||Bt?.label||(en==="system"?"System":We?Si(We,Ze):en==="agent"?Te("ai"):Le("taskForm.you")),Ln=xe.actorProfile?.color||ft?.color||Bt?.color,qt=String(Vt?.icon||(en==="agent"?"Bot":en==="member"?"User":"ClipboardList")),Da=Ai[qt]||(en==="agent"?ru:en==="member"?Lo:Cg),zt=Object.entries(xe.details?.changes||{});return t.jsxs("div",{className:`${Pe.comment} ${Pe.activityEvent} ${en==="system"?Pe.activityEventSystem:""}`,children:[t.jsxs("div",{className:`${Pe.commentHeader} ${Pe.activityEventHeader}`,children:[t.jsx("span",{className:Pe.commentAuthor,style:Ln?{color:Ln}:void 0,children:t.jsxs(t.Fragment,{children:[t.jsx(Da,{size:12,strokeWidth:1.5})," ",Mt]})}),t.jsx("span",{className:Pe.commentTime,children:Cc(xe.createdAt,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]}),t.jsxs("div",{className:Pe.activityEventText,children:[t.jsx("div",{children:Th(xe,ln)}),zt.length>1&&t.jsx("div",{className:Pe.activityEventChanges,children:zt.map(([yn,Cn])=>t.jsx("span",{className:Pe.activityEventChange,children:Ah(yn,Cn,ln)},yn))})]})]},ae.id)}),t.jsx("div",{ref:He})]}),t.jsxs("div",{className:Pe.commentInputArea,children:[t.jsx("textarea",{className:Pe.commentInput,placeholder:Le("taskForm.commentPlaceholder"),value:b,onChange:ae=>_(ae.target.value),onKeyDown:ae=>{ae.key==="Enter"&&!ae.shiftKey&&(ae.preventDefault(),V())},rows:1}),t.jsx("button",{type:"button",className:Pe.sendCommentBtn,onClick:V,disabled:!b.trim(),"aria-label":"Send comment",title:"Send comment",children:t.jsx(Ag,{size:16})})]})]})]}):null;return t.jsxs("form",{ref:kt,onSubmit:re,className:`${m.form} ${m.appScrollbar} tf-scrollbar`,children:[r&&t.jsx("div",{className:Pe.error,children:r}),Oe&&t.jsx("div",{className:`${Pe.formNotice} tf-text-helper`,children:ve?"Deleted tasks are read-only. Restore the task to make changes.":"Archived tasks are read-only. Unarchive the task to make changes."}),t.jsxs("fieldset",{disabled:Oe,className:`${Pe.formFieldsetReset} ${n?Pe.formLayoutWithSidebar:Pe.formLayout}`.trim(),children:[t.jsxs("div",{className:Pe.formMainColumn,children:[t.jsxs("div",{className:m.field,children:[t.jsxs("div",{className:m.labelRow,children:[t.jsx("label",{className:m.label,children:"Title"}),x&&t.jsx("span",{title:`Assigned to: ${St}`,className:[Pe.assigneeIndicator,nt==="agent"?Pe.assigneeIndicatorAgent:nt==="member"?Pe.assigneeIndicatorUser:Pe.assigneeIndicatorUnassigned].join(" "),style:Ut?{color:Ut}:void 0,children:nt==="agent"?t.jsx(ru,{size:20}):nt==="member"?t.jsx(Lo,{size:20}):t.jsx(xi,{size:20})})]}),t.jsx("input",{type:"text",value:s,onChange:ae=>he(ae.target.value),placeholder:"What needs to be done?",className:m.input,required:!0,maxLength:255,autoFocus:!0})]}),t.jsxs("div",{className:m.field,children:[t.jsxs("div",{className:m.labelRow,children:[t.jsx("label",{className:m.label,children:"Description"}),t.jsx("button",{type:"button",className:m.helpLink,onClick:()=>H(!K),title:"Markdown Help",tabIndex:-1,children:t.jsx(xi,{size:14})})]}),K&&t.jsxs("div",{className:Pe.markdownHelp,children:[t.jsxs("div",{className:Pe.helpHeader,children:[t.jsx("span",{children:"Markdown Guide"}),t.jsx("button",{onClick:()=>H(!1),className:Pe.helpClose,children:t.jsx(Ii,{size:12})})]}),t.jsxs("div",{className:Pe.helpGrid,children:[t.jsx("div",{children:t.jsx("code",{children:"**bold**"})}),t.jsx("div",{children:t.jsx("code",{children:"_italic_"})}),t.jsx("div",{children:t.jsx("code",{children:"- list"})}),t.jsx("div",{children:t.jsx("code",{children:"1. list"})}),t.jsx("div",{className:Pe.helpGridItem,children:t.jsx("code",{children:"`inline code`"})}),t.jsxs("div",{className:Pe.helpGridItem,children:[t.jsx("code",{children:"```"}),t.jsx("br",{}),t.jsx("code",{children:"code block"}),t.jsx("br",{}),t.jsx("code",{children:"```"})]}),t.jsx("div",{children:t.jsx("code",{children:"[link](url)"})})]})]}),se||!o?t.jsx("textarea",{className:`${m.textarea} ${Pe.descriptionSurface}`,placeholder:"What needs to be done? (Markdown supported)",value:o,onChange:ae=>Ce(ae.target.value),onFocus:()=>M(!0),onBlur:()=>M(!1),rows:9,autoFocus:se}):t.jsx("div",{className:`${m.textarea} ${Pe.descriptionSurface} ${Pe.markdownPreview} ${Pe.markdownPreviewContainer}`,onClick:()=>M(!0),children:t.jsx($m,{onTaskIdClick:Qe,children:o})})]}),t.jsxs("div",{className:Pe.compactMetaSection,children:[t.jsxs("div",{className:Pe.compactMetaGrid,children:[t.jsxs("div",{className:`${m.field} ${Pe.compactMetaField}`,children:[t.jsx("label",{id:"category-label",className:m.label,children:E?.category||"Category"}),t.jsx(Pl,{value:c,options:l,onChange:ae=>le(String(ae)),required:!0,ariaLabelledBy:"category-label"})]}),t.jsxs("div",{className:`${m.field} ${Pe.compactMetaField}`,children:[t.jsx("label",{id:"type-label",className:m.label,children:E?.type||"Type"}),t.jsx(Pl,{value:i,options:rt,onChange:ae=>be(String(ae)),ariaLabelledBy:"type-label"})]}),t.jsxs("div",{className:`${m.field} ${Pe.compactMetaField}`,children:[t.jsx("label",{htmlFor:"task-form-scheduled-date",className:m.label,children:Le("taskForm.scheduledLabel")}),t.jsx("input",{id:"task-form-scheduled-date",type:"date",value:S,onChange:ae=>D(ae.target.value),className:`${m.input} ${m.taskFormDateInput}`})]}),t.jsxs("div",{className:`${m.field} ${Pe.compactMetaField}`,children:[t.jsx("label",{id:"assignee-label",className:m.label,children:"Assigned To"}),t.jsx(Pl,{value:x||"unassigned",options:Ze,onChange:ae=>Fe(String(ae)),ariaLabelledBy:"assignee-label"})]}),t.jsx("div",{className:Pe.compactMetaField,children:t.jsx(bm,{label:E?.priority||"Priority",options:Y,value:u,onChange:Ie,type:"priority",showSelectedLabel:!1})}),t.jsxs("div",{className:`${m.field} ${Pe.compactMetaField}`,children:[t.jsx("label",{htmlFor:"task-form-due-date",className:m.label,children:Le("taskForm.dueLabel")}),t.jsx("input",{id:"task-form-due-date",type:"date",value:y,onChange:ae=>I(ae.target.value),className:`${m.input} ${m.taskFormDateInput}`}),Ve&&t.jsx("span",{className:`${Pe.taskFormDateWarning} ${Pe.compactMetaFieldHint}`,children:Le("taskForm.dueBeforeScheduled")}),ct&&t.jsx("span",{className:`${Pe.taskFormDateError} ${Pe.compactMetaFieldHint}`,children:Le("taskForm.overdue")})]}),v&&t.jsx("div",{className:Pe.compactMetaField,children:t.jsx(bm,{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:h,onChange:Ne,type:"general"})})]}),!n&&t.jsxs("div",{className:Pe.createWorkstreamRow,children:[t.jsx("label",{className:m.label,children:"Attach to workstream"}),t.jsxs("div",{className:m.pathInputGroup,children:[Rt?t.jsx("input",{type:"text",className:m.input,value:k,onChange:ae=>p(ae.target.value),placeholder:"Type a workstream name or reference","aria-label":"Attach to workstream"}):t.jsx(Pl,{value:k,options:Re,onChange:ae=>p(String(ae)),placeholder:"Select workstream...",ariaLabel:"Attach to workstream",className:Pe.createWorkstreamDropdown}),t.jsx("button",{type:"button",className:m.secondaryHeaderBtn,onClick:()=>{if(Rt){ot(!1),vt||p("");return}ot(!0)},"aria-label":Rt?"Use workstream dropdown":"Enter workstream by name",title:Rt?"Use workstream dropdown":"Enter workstream by name",children:t.jsx(Ss,{size:14})})]})]})]}),t.jsxs("div",{className:Pe.sectionBlock,children:[t.jsx("div",{className:Pe.taxonomyFieldsGrid,children:Be.map(ae=>{if(ae.id==="approach"&&ae.isSystem)return null;const xe=fe[ae.id],We=Array.isArray(xe)?xe.map(ft=>String(ft)):xe!=null&&xe!==""?[String(xe)]:[],wt=ae.options.filter(ft=>ft.status!=="retired"||We.includes(String(ft.value)));return t.jsxs("div",{className:m.field,children:[t.jsx("label",{className:m.label,children:ae.label}),ae.description&&t.jsx("div",{className:`${Pe.settingsHint} tf-text-helper`,children:ae.description}),ae.widgetType==="level"?t.jsx(bm,{label:ae.label,options:wt.map(ft=>({...ft,label:ft.status==="retired"?`${ft.label} (Retired)`:ft.label})),value:fe[ae.id]||"",onChange:ft=>$(ae.id,ft),type:"general",hideLabel:!0}):ae.multiSelect?t.jsx("div",{className:`${m.dropdownList} ${Pe.softSectionSurface}`,children:wt.map(ft=>{const Bt=String(ft.value),Vt=We.includes(Bt);return t.jsxs("button",{type:"button",className:`${Pe.specialistChip} ${Vt?Pe.specialistChipActive:""}`,onClick:()=>{const en=Vt?We.filter(Mt=>Mt!==Bt):[...We,Bt];$(ae.id,en)},title:Vt?"Click to remove":"Click to add",children:[Vt&&t.jsx(io,{size:12}),ft.status==="retired"?`${ft.label} (Retired)`:ft.label]},Bt)})}):t.jsxs("div",{className:m.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 ft=ae.options.find(en=>String(en.value)===String(fe[ae.id])),Bt=ft?.icon&&ns[ft.icon]?ns[ft.icon]:xi,Vt=ft?.color||"var(--text-secondary)";return t.jsx("div",{className:m.fieldIcon,style:{color:ma(Vt)},children:t.jsx(Bt,{size:16})})})(),t.jsxs("select",{value:fe[ae.id]||"",onChange:ft=>$(ae.id,ft.target.value),className:`${m.select} ${m.field_dynamic}`,required:ae.isRequired,children:[t.jsxs("option",{value:"",children:["Select ",ae.label,"..."]}),wt.map(ft=>t.jsx("option",{value:ft.value,children:ft.status==="retired"?`${ft.label} (Retired)`:ft.label},ft.value))]})]})]},ae.id)})}),N&&t.jsxs("div",{className:m.specialistSection,children:[t.jsxs("div",{className:m.toggleHeading,onClick:()=>R(!te),title:te?"Hide checklist":"Show checklist",children:[t.jsxs("label",{className:m.label,children:["Checklist"," ",w.length>0&&`(${ze}/${w.length})`]}),te?t.jsx(Vl,{size:14}):t.jsx(Ac,{size:14})]}),te&&t.jsxs("div",{className:`${m.dropdownList} ${Pe.stackedList} ${Pe.stackedListSpaced}`,children:[t.jsxs("div",{className:m.pathInputGroup,children:[t.jsx("input",{type:"text",className:m.input,placeholder:"Add checklist item",value:at,onChange:ae=>Nt(ae.target.value),onKeyDown:ae=>{ae.key==="Enter"&&(ae.preventDefault(),Se())}}),t.jsx("button",{type:"button",className:m.secondaryHeaderBtn,onClick:Se,disabled:!at.trim(),children:"Add"})]}),w.length>0?t.jsx(Rf,{sensors:J,collisionDetection:Jg,onDragEnd:Ee,children:t.jsx(Ef,{items:w.map(ae=>ae.id),strategy:Df,children:w.map((ae,xe)=>t.jsx(SE,{id:ae.id||`checklist-${xe}`,item:ae,onToggle:()=>{const We=new Date().toISOString();A(w.map((wt,ft)=>ft===xe?{...wt,isCompleted:!wt.isCompleted,updatedAt:We}:wt))},onRemove:()=>A(w.filter((We,wt)=>wt!==xe).map((We,wt)=>({...We,order:wt})))},ae.id||`checklist-${xe}`))})}):t.jsx("div",{className:`${Pe.settingsHint} tf-text-helper`,children:"No checklist items yet."})]})]})]}),t.jsxs("div",{children:[t.jsx(vE,{taskId:n,taskReferenceLabel:ee,workspaceId:F,apiBaseUrl:B,contextFiles:j,onAddContextFile:ie,onRemoveContextFile:W,onUpdateContextCaption:Q}),t.jsx("div",{className:`${Pe.taskFormLifecycle} ${Pe.taskFormMetaDivider}`,children:t.jsx("div",{className:Pe.taskFormMetaGrid,children:$e&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:Pe.taskFormDateRow,children:[t.jsx("span",{className:Pe.taskFormDateLabel,children:Le("taskForm.createdLabel")}),t.jsxs("span",{className:Pe.taskFormMetaStack,children:[t.jsx("span",{className:Pe.taskFormDateValue,children:jt||Le("taskForm.emptyValue")}),t.jsx("span",{className:Pe.taskFormMetaActor,children:En?`by ${En}`:Le("taskForm.emptyValue")})]})]}),t.jsxs("div",{className:Pe.taskFormDateRow,children:[t.jsx("span",{className:Pe.taskFormDateLabel,children:Le("taskForm.updatedLabel")}),t.jsxs("span",{className:Pe.taskFormMetaStack,children:[t.jsx("span",{className:Pe.taskFormDateValue,children:It||Le("taskForm.emptyValue")}),t.jsx("span",{className:Pe.taskFormMetaActor,children:Dn?`by ${Dn}`:Le("taskForm.emptyValue")})]})]}),t.jsxs("div",{className:Pe.taskFormDateRow,children:[t.jsx("span",{className:Pe.taskFormDateLabel,children:Le("taskForm.completedLabel")}),t.jsxs("span",{className:Pe.taskFormMetaStack,children:[t.jsx("span",{className:Pe.taskFormDateValue,children:tt||Le("taskForm.emptyValue")}),t.jsx("span",{className:Pe.taskFormMetaActor,children:Dt?`by ${Dt}`:Le("taskForm.emptyValue")})]})]})]})})})]})]}),rn,t.jsxs("div",{className:Pe.keyboardHint,children:["Press ",t.jsx("kbd",{children:navigator.platform.includes("Mac")?"⌥":"Alt"})," to toggle"]})]})]})}function Lh({editingTaskId:e,loading:n,autoSaveState:r="idle",title:s,handleSubmit:o,resetForm:c,handleCopyId:i,copiedId:u,tasks:h,currentTask:v,currentTaskWorkstream:x,currentTaskInitiative:S,workstreamInput:y="",onWorkstreamInputChange:k,onSetWorkstreamForCurrentTask:w,handleToggleInProgress:P,handleToggleReview:b,handleToggleComplete:j,handleToggleCancel:F,handleSetStatus:B,handleArchiveTask:se,handleUnarchiveTask:K,handleRestoreDeletedTask:te,handlePermanentlyDeleteDeletedTask:N}){const[fe,$]=ut.useState(!1),q=v??(e&&h.find(he=>he.id===e)||null),de=!!q?.isArchived,ue=!!q?.isDeleted,Y=Hf(q),E=Y.label||(Y.isProvisional?"Pending":""),z=Y.isProvisional,Z=!!Y.label,me=x?yu(x)||x.id:"",G=S?vs(S)||S.id:"";ut.useEffect(()=>{x&&$(!1)},[x?.id]);const Ae=ut.useCallback(()=>{y.trim()&&w?.()},[w,y]);return t.jsx("div",{className:m.stickyActionHeader,children:e?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:m.taskHierarchyHeader,children:[t.jsxs("div",{className:m.taskHierarchyBadgeRow,children:[S?t.jsxs(t.Fragment,{children:[t.jsx(ou,{copied:u===G,onClick:he=>i(he,G),disabled:n,title:"Copy initiative reference",label:G}),t.jsx("span",{className:m.taskHierarchyDivider,children:"/"})]}):null,x?t.jsxs(t.Fragment,{children:[t.jsx(ou,{copied:u===me,onClick:he=>i(he,me),disabled:n,title:"Copy workstream reference",label:me}),t.jsx("span",{className:m.taskHierarchyDivider,children:"/"})]}):t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button",className:`${m.taskIdBadge} ${m.taskHierarchyAddBtn}`,onClick:()=>{k?.(""),$(he=>!he)},disabled:n||de||ue,title:"Attach to workstream","aria-label":"Attach to workstream",children:t.jsx(Ss,{size:13})}),t.jsx("span",{className:m.taskHierarchyDivider,children:"/"})]}),E?t.jsx(ou,{copied:Z&&u===Y.label,onClick:he=>i(he,Y.label),disabled:n||!Z,title:Z?Le("actionHeader.copyTaskIdTitle"):"Task reference pending sync",label:E}):null,z?t.jsx("span",{className:m.taskHierarchyMeta,title:"Temporary local reference until cloud sync assigns the final task number.",children:"Pending sync"}):null]}),fe&&!x?t.jsxs("div",{className:m.taskHierarchyEditor,children:[t.jsx("input",{type:"text",className:`${m.input} ${m.taskHierarchyInput}`,value:y,onChange:he=>k?.(he.target.value),placeholder:"WS-123","aria-label":"Attach workstream reference",onKeyDown:he=>{he.key==="Enter"&&(he.preventDefault(),Ae()),he.key==="Escape"&&(he.preventDefault(),k?.(""),$(!1))}}),t.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:Ae,disabled:!y.trim()||n,title:"Attach workstream","aria-label":"Attach workstream",children:t.jsx(io,{size:14})}),t.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:()=>{k?.(""),$(!1)},disabled:n,title:"Cancel workstream attach","aria-label":"Cancel workstream attach",children:t.jsx(Ii,{size:14})})]}):null]}),t.jsx("div",{className:m.taskSaveStatusCenter,children:t.jsx("div",{className:`${m.taskSaveStatus} ${r==="error"?m.taskSaveStatusError:""}`,"aria-live":"polite",children:r==="saving"?t.jsxs(t.Fragment,{children:[t.jsx(Ea,{size:14,className:m.spinner}),t.jsx("span",{children:"Saving…"})]}):r==="saved"?t.jsx("span",{children:"Saved"}):r==="error"?t.jsx("span",{children:"Save failed"}):null})}),t.jsx("div",{className:m.editActionsGroup,children:ue&&q?.deletedRecordId?t.jsxs(t.Fragment,{children:[te&&t.jsx("button",{type:"button",className:m.actionBtn,onClick:()=>te(q.deletedRecordId||""),disabled:n,title:"Restore deleted task",children:t.jsx(uu,{size:16})}),N&&t.jsx("button",{type:"button",className:`${m.actionBtn} ${m.deleteBtn}`,onClick:()=>N(q.deletedRecordId||""),disabled:n,title:"Permanently delete deleted task",children:t.jsx($l,{size:16})})]}):t.jsx(Ch,{task:q,disabled:n,statusDisabled:n||de,archiveActionMode:de?"unarchive":"auto",onSetStatus:(he,Ce)=>{if(B){B(he,Ce);return}if(Ce==="in-progress"){P(he);return}if(Ce==="review"){b(he);return}if(Ce==="done"){j(he);return}Ce==="cancelled"&&F(he)},onArchiveTask:se,onUnarchiveTask:he=>K?.(he.id)})})]}):t.jsxs(t.Fragment,{children:[t.jsxs("button",{type:"button",onClick:c,disabled:n,className:m.secondaryHeaderBtn,title:Le("actionHeader.clearFormTitle"),children:[t.jsx(uu,{size:16}),Le("actionHeader.clear")]}),t.jsxs("button",{type:"button",onClick:he=>o(he),disabled:n||!s.trim(),className:m.primaryUpdateBtn,title:Le("actionHeader.addTaskTitle"),children:[n?t.jsx(Ea,{size:16,className:m.spinner}):t.jsx(Ss,{size:16}),Le("actionHeader.addTask")]})]})})}const wE="_topNoticeLayer_1m6a1_1",bE="_topNotice_1m6a1_1",xE="_topNoticeMessage_1m6a1_32",_E="_topNoticeSuccess_1m6a1_38",CE="_topNoticeError_1m6a1_44",AE="_topNoticeInfo_1m6a1_50",TE="_topNoticeDismiss_1m6a1_56",ki={topNoticeLayer:wE,topNotice:bE,topNoticeMessage:xE,topNoticeSuccess:_E,topNoticeError:CE,topNoticeInfo:AE,topNoticeDismiss:TE};function Bh({notice:e,onDismiss:n}){if(!e)return null;const r=e.tone==="error"?ki.topNoticeError:e.tone==="success"?ki.topNoticeSuccess:ki.topNoticeInfo,s=e.tone==="error"?"alert":"status";return t.jsx("div",{className:ki.topNoticeLayer,children:t.jsxs("div",{className:`${ki.topNotice} ${r}`,role:s,"aria-live":e.tone==="error"?"assertive":"polite",children:[e.tone==="error"?t.jsx(Tc,{size:14}):e.tone==="success"?t.jsx(io,{size:14}):t.jsx(Ig,{size:14}),t.jsx("span",{className:ki.topNoticeMessage,children:e.message}),n&&t.jsx("button",{type:"button",className:ki.topNoticeDismiss,onClick:n,"aria-label":"Dismiss notice",title:"Dismiss notice",children:t.jsx(Ii,{size:14})})]})})}const IE=ut.lazy(()=>Oo(()=>import("./TaskSettings-ln0aF7xc.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.TaskSettings})));function NE(e){const{activeTab:n,setActiveTab:r,isOpen:s,setIsOpen:o,currentTheme:c,setCurrentTheme:i,saveSettings:u,pathSaved:h,keyShortcut:v,setKeyShortcut:x,jsonBackupEnabled:S,setJsonBackupEnabled:y,mcpHostRoot:k,setMcpHostRoot:w,settingsSection:P,setSettingsSection:b,projectRoot:j,projectName:F,mcpScriptPath:B,serverHostRoot:se,showFolderBrowser:K,setShowFolderBrowser:te,folders:N,files:fe,currentBrowsePath:$,fetchFolders:q,browserTarget:de,setBrowserTarget:ue,handleSelectPath:Y,handleAddPath:E,handleRemovePath:z,tasks:Z,loadingTasks:me,archivedTasks:G,deletedTasks:Ae,activeCategories:he,activeTypes:Ce,priorities:le,taxonomyDisplayLabels:be,approaches:Ie,taxonomies:Ne,searchQuery:Fe,setSearchQuery:D,filterCategories:I,setFilterCategories:p,filterTypes:A,setFilterTypes:_,filterPriorities:M,setFilterPriorities:H,filterStatus:R,setFilterStatus:re,filterAssignees:V,setFilterAssignees:ie,assigneeOptions:W,filterTaxonomies:Q,setFilterTaxonomies:ge,sortBy:Me,setSortBy:ye,sortOrder:Ue,toggleSortOrder:pt,showArchive:Ye,setShowArchive:bt,taskScope:qe,setTaskScope:Qe,clearFilters:$e,filteredTasks:He,filteredArchive:ee,groupedTasks:Be,collapsedCategories:l,setCollapsedCategories:rt,handleEdit:At,handleDelete:jt,handleCopyId:It,handleToggleComplete:tt,handleToggleCancel:xt,handleToggleInProgress:Ve,handleToggleReview:ct,handleArchiveTask:ze,handleBulkArchive:at,handleUnarchive:Nt,handleRestoreDeletedTask:Rt,handlePermanentlyDeleteDeletedTask:ot,handleEmptyDeletedTasks:ke,fetchArchive:ve,editingTaskId:Re,loading:vt,error:Oe,title:kt,setTitle:J,description:Se,setDescription:Ee,checklistItems:Te,setChecklistItems:Ze,category:nt,setCategory:St,type:dt,setType:Et,priority:Ut,setPriority:Ht,complexity:un,setComplexity:Zt,manualComplexityEnabled:Gt,checklistDropdownEnabled:ln,showTaskCardStatusLabel:Zn,approach:nn,setApproach:Dt,assignee:En,setAssignee:Dn,scheduledDate:mn,setScheduledDate:rn,dueDate:ae,setDueDate:xe,workstreamInput:We,setWorkstreamInput:wt,formTaxonomies:ft,setFormTaxonomies:Bt,comments:Vt,newCommentText:en,setNewCommentText:Mt,attachments:Ln,setAttachments:qt,setAttachmentsDirty:Da,descriptionFocused:zt,setDescriptionFocused:yn,showMarkdownHelp:Cn,setShowMarkdownHelp:kn,showChecklist:Ft,setShowChecklist:Bn,showComments:Mn,setShowComments:$n,handleSubmit:_a,resetForm:Tt,handleAddComment:Jt,handleSetWorkstreamForCurrentTask:Pa,handleOpenTaskById:In,autoSaveState:Ma,unsavedModalOpen:gr,setUnsavedModalOpen:sa,pendingNavigation:Ur,handleNavigation:Ca,handleClose:tr,scheduleWarningPrompt:Xn,confirmScheduleWarning:Qn,cancelScheduleWarning:ea,uiNotice:Rr,clearNotice:Un,taskReturnTrail:ta,clearReturnToParentTask:yr,returnToPreviousTask:gt,copiedId:zn,recentlyChangedTaskIds:Hn,tasksScrollRef:sn,setTasksScrollPos:hn,currentTask:an,currentTaskWorkstream:qn,currentTaskInitiative:La,exportEnvironment:na,setExportEnvironment:Sn,exportWorkflowsPath:kr,setExportWorkflowsPath:tn,exportResult:nr,exportingResource:Xt,availableWorkflows:pn,onExportWorkflows:Ba,availableEnvironments:Wn,handleUpdateCategory:Wa,handleRemoveCategory:Fa,handleSaveCategory:Ot,handleUpdateCategoryIcon:vr,handleUpdateCategoryColor:Oa,handleSaveType:Er,handleRemoveType:zr,handleUpdateTaxonomies:$a,handleUpdatePriorities:Ua,pathValidation:pa,validatePaths:Aa,getCategoryPaths:ar,commentsEndRef:Fn,currentWorkspaceId:Hr,settingsModel:An,onHeaderMouseDown:Sr,isDragging:rr}=e,sr=a.useRef(null),[oa,wr]=ut.useState(0);a.useLayoutEffect(()=>{if(n==="tasks"&&sn.current&&oa>0){const De=setTimeout(()=>{sn.current&&(sn.current.scrollTop=oa)},50);return()=>clearTimeout(De)}},[n,oa,Z]);const Ta=De=>{ye(De)},Gr=()=>{Ca(()=>{if(n==="add"||n==="settings"){if(n==="add"&>())return;n==="add"&&ta.length>0&&yr(),n==="add"&&Tt(),r("tasks")}else e.onClose?e.onClose():tr()})},br=()=>{sa(!1),Ur?(n==="add"&&Tt(),Ur()):r("tasks")},or=async()=>{await _a({preventDefault:()=>{}}),sa(!1),Ur&&Ur()},Vr=(De,_t)=>{Bt(on=>({...on,[De]:_t})),De==="approach"&&typeof _t=="string"&&Dt(_t)},Pn=a.useCallback(De=>{Tt(),St(De),Ca(()=>{r("add")})},[Tt,St,r,Ca]),ir=ut.useMemo(()=>Ae.map(De=>({...De.taskSnapshot,isDeleted:!0,deletedRecordId:De.id})),[Ae]),Ia=ut.useMemo(()=>new globalThis.Map(Ae.map(De=>[De.taskId,De])),[Ae]),ia=ut.useMemo(()=>{const De=Fe.toLowerCase(),_t=he.every(Kt=>I.includes(Kt.value)),on=Ce.every(Kt=>A.includes(Kt.value)),Nn=Array.from(new Set(M.map(Kt=>Number(Kt)).filter(Kt=>Number.isFinite(Kt)))),xr=le.map(Kt=>Number(Kt.value)).filter(Kt=>Number.isFinite(Kt)).every(Kt=>Nn.includes(Kt)),Dr=["task","in-progress","review","done","cancelled","on-hold"].every(Kt=>R.includes(Kt)),ha=W.length>0&&W.every(Kt=>V.includes(Kt.value)),ga=Kl(Ne,ir);return ir.filter(Kt=>{const cr=Es(Kt).toLowerCase(),ws=!De||Kt.title.toLowerCase().includes(De)||(Kt.description?.toLowerCase()||"").includes(De)||Kt.id.toLowerCase().includes(De)||cr.includes(De),O=_t||I.includes(Kt.category),Je=xr||Nn.includes(pu(Kt.priority)),$t=on||A.includes(Kt.type||jr),Pt=Dr||R.includes(Kt.status),Kn=ha||V.includes(Kt.assignee||"unassigned"),Ga=Object.entries(Q).every(([Gn,ja])=>{const Va=ga.find(it=>it.id===Gn);if(!Va||ip(Va,ir).every(it=>ja.includes(it.value)))return!0;const _e=Kt.taxonomies?.[Gn];return _e?Array.isArray(_e)?_e.some(it=>ja.includes(it)):ja.includes(_e):ja.includes("")});return ws&&O&&Je&&$t&&Pt&&Kn&&Ga}).sort((Kt,cr)=>vu(Kt,cr,Me,Ue,Ne))},[he,Ce,G,W,ir,V,I,M,R,Q,A,le,Fe,Me,Ue,Ne,Z]),fa=ut.useMemo(()=>{const De={};return ia.forEach(_t=>{const Nn=he.find(Na=>Na.value===_t.category||Na.label===_t.category)?.label||_t.category||"General";De[Nn]||(De[Nn]=[]),De[Nn].push(_t)}),De},[he,ia]),za=qe==="archived"?ee.length:qe==="deleted"?ia.length:He.length;return t.jsxs(t.Fragment,{children:[t.jsxs("div",{ref:sr,className:`${yt.modal} ${m.coreModal} ${n==="settings"?yt.settingsViewModal:""}`,"data-theme":c,children:[t.jsxs("div",{className:"tf-modal-header",onMouseDown:Sr,style:{cursor:Sr?rr?"grabbing":"grab":"default"},children:[t.jsxs("div",{className:`tf-modal-title ${dn.headerTitleWidget}`,children:["Taskforce",F&&t.jsxs(t.Fragment,{children:[t.jsx("span",{className:m.projectSlash,children:"/"}),t.jsx("span",{className:m.projectName,style:{fontSize:"14px",padding:"1px 6px"},children:F})]}),t.jsx("span",{className:m.taskCountBadge,title:`${qe.charAt(0).toUpperCase()+qe.slice(1)} tasks`,children:za})]}),t.jsxs("div",{className:yt.headerActions,children:[n==="tasks"&&t.jsx(t.Fragment,{children:t.jsx("button",{className:"tf-control-icon",onClick:()=>{Ca(()=>{Tt(),r("add")})},title:"Add New Task",children:t.jsx(Ss,{size:18})})}),t.jsx("button",{className:`tf-control-icon ${n==="settings"?"tf-control-icon-active":""}`,onClick:()=>{n!=="settings"&&Ca(()=>{r("settings")})},title:"Settings",children:t.jsx(Cf,{size:18})}),t.jsx("button",{className:"tf-control-icon",onClick:Gr,title:n==="tasks"?"Close":"Back to Tasks",children:n==="tasks"?t.jsx(Ii,{size:20}):t.jsx(Ng,{size:20})})]})]}),t.jsx(Bh,{notice:Rr,onDismiss:Un}),n==="add"&&t.jsx(Lh,{editingTaskId:Re,loading:vt,autoSaveState:Ma,title:kt,currentTask:an,currentTaskWorkstream:qn,currentTaskInitiative:La,workstreamInput:We,onWorkstreamInputChange:wt,onSetWorkstreamForCurrentTask:Pa,handleSubmit:_a,resetForm:Tt,handleCopyId:It,copiedId:zn,tasks:Z,handleToggleInProgress:Ve,handleToggleReview:ct,handleToggleComplete:tt,handleToggleCancel:xt,handleArchiveTask:ze,handleUnarchiveTask:De=>{if(an?.isDeleted){const _t=Ia.get(De);_t&&Rt(_t.id);return}Nt(De)},handleRestoreDeletedTask:De=>{Rt(De)},handlePermanentlyDeleteDeletedTask:De=>{ot(De)}}),n==="tasks"&&t.jsx(Eh,{ref:sn,tasks:Z,archivedTasks:G,categories:he,types:Ce,priorities:le,taxonomyDisplayLabels:be,taxonomies:Ne,searchQuery:Fe,filterCategories:I,filterTypes:A,filterPriorities:M,filterStatus:R,filterAssignees:V,assigneeOptions:W,filterTaxonomies:Q,sortBy:Me,sortOrder:Ue,showArchive:Ye,taskScope:qe,collapsedCategories:l,loadingTasks:me,filteredTasks:He,filteredArchive:ee,groupedTasks:Be,filteredDeletedTasks:ia,groupedDeletedTasks:fa,copiedId:zn,recentlyChangedTaskIds:Hn,showTaskCardStatusLabel:Zn,workstreams:e.workstreams,initiatives:e.initiatives,onSearchChange:D,onFilterCategoriesChange:De=>p(De),onFilterTypesChange:De=>_(De),onFilterPrioritiesChange:H,onFilterStatusChange:re,onFilterAssigneesChange:De=>ie(De),onTaxonomyFilterChange:(De,_t)=>ge(on=>({...on,[De]:_t})),onSortByChange:Ta,onSortOrderChange:pt,onShowArchiveChange:bt,onTaskScopeChange:Qe,onClearFilters:$e,onToggleCategory:De=>rt(_t=>({..._t,[De]:!_t[De]})),onEditTask:At,onOpenTaskById:In,onCopyId:It,onToggleInProgress:Ve,onToggleReview:ct,onToggleComplete:tt,onToggleCancel:xt,onArchiveTask:ze,onBulkArchive:at,onUnarchive:De=>{const _t=Ia.get(De);if(_t){Rt(_t.id);return}Nt(De)},onDelete:De=>{const _t=Ia.get(De);if(_t){ot(_t.id);return}jt(De)},onDeleteAllDeleted:()=>{ke()},onFetchArchive:ve,onAddTaskToCategory:Pn,supplementalTasks:ir}),n==="add"&&t.jsx(Mh,{editingTaskId:Re,error:Oe,title:kt,description:Se,checklistItems:Te,category:nt,type:dt,priority:Ut,complexity:un,manualComplexityEnabled:Gt,approach:nn,assignee:En,scheduledDate:mn,dueDate:ae,workstreamInput:We,formTaxonomies:ft,onTaxonomyChange:Vr,taxonomies:Ne,comments:Vt,newCommentText:en,contextFiles:Ln,currentWorkspaceId:Hr,apiBaseUrl:"",descriptionFocused:zt,showMarkdownHelp:Cn,showChecklist:Ft,checklistEnabled:ln,showComments:Mn,categories:he,types:Ce,priorities:le,taxonomyDisplayLabels:be,assigneeOptions:W,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:zn,onTitleChange:J,onDescriptionChange:Ee,onChecklistItemsChange:Ze,onCategoryChange:St,onTypeChange:Et,onPriorityChange:Ht,onComplexityChange:Zt,onApproachChange:De=>{Dt(De),Bt(_t=>({..._t,approach:De}))},onAssigneeChange:Dn,onScheduledDateChange:rn,onDueDateChange:xe,onWorkstreamInputChange:wt,onNewCommentTextChange:Mt,onDescriptionFocusedChange:yn,onShowMarkdownHelpChange:kn,onShowChecklistChange:Bn,onShowCommentsChange:$n,onOpenSettings:De=>{Ca(()=>{b(De),r("settings")})},onSubmit:_a,commentsEndRef:Fn,onAddComment:()=>Jt(en),onOpenTaskById:In,onAddContextFile:De=>{Da(!0),qt(_t=>[..._t,De])},onRemoveContextFile:async De=>{Da(!0),qt(_t=>_t.filter((on,Nn)=>Nn!==De))},onUpdateContextCaption:(De,_t)=>{Da(!0),qt(on=>on.map((Nn,Na)=>Na!==De?Nn:typeof Nn=="string"?{path:Nn,caption:_t,timestamp:new Date().toISOString()}:{...Nn,caption:_t}))},onCopyId:It,onToggleInProgress:Ve,onToggleReview:ct,onToggleComplete:tt,onToggleCancel:xt,onArchiveTask:ze,onUnarchive:De=>{if(an?.isDeleted){const _t=Ia.get(De);_t&&Rt(_t.id);return}Nt(De)},currentTask:an}),n==="settings"&&t.jsx(a.Suspense,{fallback:t.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"2rem"},children:t.jsx(Ea,{size:20,className:m.spinner})}),children:t.jsx(IE,{settingsModel:An,onSectionChange:b})})]}),K&&bi.createPortal(t.jsx("div",{className:Rn.overlay,children:t.jsxs("div",{className:Rn.browser,children:[t.jsxs("div",{className:Rn.header,children:[t.jsxs("div",{className:Rn.pathInfo,children:[t.jsx(_i,{size:14}),t.jsx("span",{children:$||"Project Root"})]}),t.jsxs("div",{className:Rn.actions,children:[$&&t.jsx("button",{className:m.helpLink,onClick:()=>{const De=$.split("/").filter(Boolean);De.pop(),q(De.length?De.join("/")+"/":"")},children:"Back"}),t.jsx("button",{className:m.helpLink,onClick:()=>te(!1),children:"Close"})]})]}),t.jsxs("div",{className:Rn.list,children:[de&&typeof de=="object"&&t.jsxs("div",{className:`${Rn.item} ${Rn.itemCurrent}`,onClick:()=>Y($),children:[t.jsx(io,{size:14})," Select Current: ./",$||"(root)"]}),N.map(De=>t.jsxs("div",{className:Rn.item,onClick:()=>q($+De+"/"),children:[t.jsx(_i,{size:14})," ",De,"/"]},De)),fe.map(De=>t.jsxs("div",{className:`${Rn.item} ${Rn.itemFile}`,onClick:()=>Y($+De),children:[t.jsx(Dm,{size:14})," ",De]},De)),N.length===0&&fe.length===0&&t.jsx("div",{className:`${Rn.item} ${Rn.empty}`,children:"No items found"})]})]})}),document.body),gr&&t.jsx("div",{className:`${yt.overlay} ${yt.unsavedOverlay}`,children:t.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${yt.modal} ${yt.unsavedModal}`,"data-theme":c,children:[t.jsx("div",{className:`tf-modal-header ${yt.unsavedHeader}`,children:t.jsxs("div",{className:`tf-modal-title ${yt.unsavedTitle}`,children:[t.jsx(Tc,{size:20}),"Unsaved Changes"]})}),t.jsx("div",{className:`${yt.form} ${yt.unsavedContent}`,children:t.jsx("p",{className:yt.unsavedText,children:"You have unsaved changes. Would you like to save them?"})}),t.jsxs("div",{className:`${yt.formActions} ${yt.unsavedActions}`,children:[t.jsx("button",{className:m.cancelBtn,onClick:()=>sa(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),t.jsx("button",{className:m.destructiveBtn,onClick:br,title:"Discard unsaved changes and leave",children:"Discard"}),t.jsxs("button",{className:m.submitBtn,onClick:or,disabled:vt,title:"Save changes and leave",children:[vt?t.jsx(Ea,{size:16,className:m.spinner}):t.jsx(Af,{size:16}),"Save"]})]})]})}),Xn&&t.jsx("div",{className:`${yt.overlay} ${yt.unsavedOverlay}`,children:t.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${yt.modal} ${yt.unsavedModal}`,"data-theme":c,children:[t.jsx("div",{className:`tf-modal-header ${yt.unsavedHeader}`,children:t.jsxs("div",{className:`tf-modal-title ${yt.unsavedTitle}`,children:[t.jsx(Tc,{size:20}),"Date Warning"]})}),t.jsxs("div",{className:`${yt.form} ${yt.unsavedContent}`,children:[t.jsx("p",{className:yt.unsavedText,children:"Due date is before scheduled date."}),t.jsxs("p",{style:{margin:0,fontSize:"12px",color:"var(--text-muted)"},children:["Due: ",Xn.dueDate," · Scheduled: ",Xn.scheduledDate]})]}),t.jsxs("div",{className:`${yt.formActions} ${yt.unsavedActions}`,children:[t.jsx("button",{className:m.cancelBtn,onClick:ea,children:"Go Back"}),t.jsx("button",{className:m.submitBtn,onClick:Qn,children:"Save Anyway"})]})]})})]})}const jE="_accountMenuWrap_xwxof_1",RE="_avatarBtn_xwxof_5",EE="_avatarBadge_xwxof_9",DE="_avatarImage_xwxof_24",PE="_avatarIcon_xwxof_30",ME="_accountMenu_xwxof_1",LE="_accountMenuItem_xwxof_48",BE="_accountMenuItemActive_xwxof_68",WE="_accountMenuSection_xwxof_73",FE="_accountMenuSectionLabel_xwxof_79",OE="_accountMenuMeta_xwxof_88",$E="_accountMenuHint_xwxof_93",UE="_accountIdentityEmail_xwxof_99",zE="_accountIdentityBlock_xwxof_104",HE="_accountIdentityMetaLine_xwxof_109",GE="_accountIdentityMetaAction_xwxof_116",VE="_accountIdentityMetaValue_xwxof_125",ZE="_accountIdentityMetaLabel_xwxof_130",qE="_accountMenuError_xwxof_159",KE="_accountHubCard_xwxof_165",YE="_profileAvatarEditor_xwxof_172",JE="_profileAvatarPreview_xwxof_178",XE="_profileAvatarImage_xwxof_194",QE="_profileAvatarActions_xwxof_200",e0="_profileAvatarInput_xwxof_206",lt={accountMenuWrap:jE,avatarBtn:RE,avatarBadge:EE,avatarImage:DE,avatarIcon:PE,accountMenu:ME,accountMenuItem:LE,accountMenuItemActive:BE,accountMenuSection:WE,accountMenuSectionLabel:FE,accountMenuMeta:OE,accountMenuHint:$E,accountIdentityEmail:UE,accountIdentityBlock:zE,accountIdentityMetaLine:HE,accountIdentityMetaAction:GE,accountIdentityMetaValue:VE,accountIdentityMetaLabel:ZE,accountMenuError:qE,accountHubCard:KE,profileAvatarEditor:YE,profileAvatarPreview:JE,profileAvatarImage:XE,profileAvatarActions:QE,profileAvatarInput:e0},t0="_authBlockedBanner_jd13o_1",n0="_loginView_jd13o_10",a0="_loginCard_jd13o_20",r0="_loginCloseBtn_jd13o_34",s0="_loginLogo_jd13o_56",o0="_authBrandRow_jd13o_62",i0="_setupHeaderRow_jd13o_68",c0="_runtimeIconBadge_jd13o_75",l0="_loginTitle_jd13o_94",d0="_loginTitleAccent_jd13o_105",u0="_loginSubtitle_jd13o_109",m0="_loginError_jd13o_115",p0="_loginField_jd13o_121",f0="_loginFieldLabel_jd13o_126",h0="_loginInput_jd13o_133",g0="_loginPrimaryBtn_jd13o_149",y0="_authPrimaryActions_jd13o_154",k0="_registerConsent_jd13o_159",v0="_registerConsentLink_jd13o_167",S0="_authModeSwitch_jd13o_177",w0="_authModeSwitchLink_jd13o_184",b0="_authModeLinks_jd13o_199",x0="_authSecondaryActions_jd13o_207",_0="_authModeLink_jd13o_199",C0="_optionGrid_jd13o_236",A0="_optionGroup_jd13o_242",T0="_optionRow_jd13o_247",I0="_inlineHint_jd13o_254",N0="_actionRowEnd_jd13o_260",pe={authBlockedBanner:t0,loginView:n0,loginCard:a0,loginCloseBtn:r0,loginLogo:s0,authBrandRow:o0,setupHeaderRow:i0,runtimeIconBadge:c0,loginTitle:l0,loginTitleAccent:d0,loginSubtitle:u0,loginError:m0,loginField:p0,loginFieldLabel:f0,loginInput:h0,loginPrimaryBtn:g0,authPrimaryActions:y0,registerConsent:k0,registerConsentLink:v0,authModeSwitch:S0,authModeSwitchLink:w0,authModeLinks:b0,authSecondaryActions:x0,authModeLink:_0,optionGrid:C0,optionGroup:A0,optionRow:T0,inlineHint:I0,actionRowEnd:N0};function j0(e={x:0,y:0}){const[n,r]=a.useState(e),[s,o]=a.useState(!1),[c,i]=a.useState({x:0,y:0}),[u,h]=a.useState(0),v=a.useRef(null),x=a.useCallback(k=>{const w=k.target;if(!(w.closest("button")||w.closest("input")||w.closest("select")||w.closest("textarea")||w.closest('[role="button"]')||w.closest(".no-drag"))){if(v.current){const P=v.current.getBoundingClientRect();h(P.top-n.y)}o(!0),i({x:k.clientX-n.x,y:k.clientY-n.y})}},[n]),S=a.useCallback(k=>{if(s){let w=k.clientX-c.x,P=k.clientY-c.y;P<-u&&(P=-u),r({x:w,y:P})}},[s,c,u]),y=a.useCallback(()=>{o(!1)},[]);return a.useEffect(()=>(s?(window.addEventListener("mousemove",S),window.addEventListener("mouseup",y)):(window.removeEventListener("mousemove",S),window.removeEventListener("mouseup",y)),()=>{window.removeEventListener("mousemove",S),window.removeEventListener("mouseup",y)}),[s,S,y]),{position:n,isDragging:s,handleMouseDown:x,modalRef:v,setPosition:r}}function uo({isOpen:e,onClose:n,title:r,children:s,footer:o,size:c="md",theme:i=mu,className:u,headerActions:h,draggable:v=!1,isSettings:x=!1,closeOnOverlayClick:S=!0}){const y=a.useRef(null),{position:k,isDragging:w,handleMouseDown:P,modalRef:b}=j0();if(a.useEffect(()=>{const F=B=>{B.key==="Escape"&&e&&n()};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[e,n]),a.useEffect(()=>(e?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[e]),!e)return null;const j={sm:yt.modalSizeSm,md:yt.modalSizeMd,mdWide:yt.modalSizeMdWide,lg:yt.modalSizeLg,xl:yt.modalSizeXl,full:yt.modalSizeFull};return bi.createPortal(t.jsx("div",{className:`${yt.overlay} ${u||""} ${yt.overlayHighZ}`,ref:y,onClick:F=>{S&&F.target===y.current&&n()},children:t.jsxs("div",{ref:b,className:`tf-surface-modal tf-modal-shell ${yt.modal} tf-scrollbar-scope ${j[c]} ${v?yt.draggableModal:""} ${x?yt.settingsViewModal:""}`,"data-theme":i,style:{transform:v?`translate(${k.x}px, ${k.y}px)`:void 0,transition:w?"none":"transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease-out"},children:[t.jsxs("div",{className:`tf-modal-header ${v?yt.draggableHeader:""}`,onMouseDown:v?P:void 0,style:{cursor:v?w?"grabbing":"grab":"default"},children:[t.jsx("div",{className:"tf-modal-title",children:r}),t.jsxs("div",{className:yt.headerActions,children:[h,t.jsx("button",{className:"tf-control-icon",onClick:n,title:"Close",children:t.jsx(Ii,{size:20})})]})]}),t.jsx("div",{className:yt.modalContent,children:s}),o&&t.jsx("div",{className:`${yt.formActions} ${yt.modalFooter}`,children:o})]})}),document.body)}const R0="_modalBody_1mute_1",E0="_mutedText_1mute_5",D0="_sectionText_1mute_10",P0="_sectionTextSpaced_1mute_15",M0="_sectionTextTop_1mute_20",L0="_errorText_1mute_25",B0="_inlineFieldLabel_1mute_29",W0="_wrapRow_1mute_35",F0="_actionRowEnd_1mute_42",O0="_modalActionsEnd_1mute_50",$0="_memberRow_1mute_56",U0="_memberTitle_1mute_62",z0="_memberActions_1mute_66",H0="_selectRole_1mute_73",G0="_selectPermission_1mute_77",V0="_inviteRow_1mute_81",Z0="_listHeading_1mute_85",q0="_auditList_1mute_90",K0="_auditPager_1mute_96",Y0="_labelFixed_1mute_103",mt={modalBody:R0,mutedText:E0,sectionText:D0,sectionTextSpaced:P0,sectionTextTop:M0,errorText:L0,inlineFieldLabel:B0,wrapRow:W0,actionRowEnd:F0,modalActionsEnd:O0,memberRow:$0,memberTitle:U0,memberActions:z0,selectRole:H0,selectPermission:G0,inviteRow:V0,listHeading:Z0,auditList:q0,auditPager:K0,labelFixed:Y0};function J0({isOpen:e,theme:n,onClose:r,onConfirm:s}){return t.jsx(uo,{isOpen:e,onClose:r,title:"New Workspace",size:"sm",theme:n,draggable:!0,footer:t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button",className:m.cancelBtn,onClick:r,children:"Cancel"}),t.jsx("button",{type:"button",className:m.submitBtn,onClick:s,children:"Start Setup"})]}),children:t.jsx("div",{className:`${yt.form} ${mt.modalBody}`,children:t.jsx("p",{className:mt.sectionText,children:"Create and configure a new workspace."})})})}const X0=new Set(["active","trialing","grace"]),cf={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."},nu={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 Ti(e){return String(e||"").trim()}function Wh(e){return Ti(e).toLowerCase()}function Q0(e){return Ti(e).toLowerCase()}function eD(e){return!!(Ti(e?.stripeCustomerId)||Ti(e?.stripeSubscriptionId))}function tD(e){const n=Ti(e?.trialEnd||e?.effectiveUntil);if(n){const r=new Date(n);if(!Number.isNaN(r.getTime()))return`Your trial is active through ${r.toLocaleString()}.`}return"Your trial is active. Continue to Taskforce or manage billing anytime."}function nD(e){return X0.has(Wh(e))}function Hm(e,n){const r=Wh(e?.entitlementState),s=Q0(e?.gate||n),o=Ti(e?.billingConflictCode).toUpperCase(),c=Ti(e?.message),i=nD(r),u=eD(e);return o==="CHECKOUT_SESSION_EXPIRED"?{entitlementState:r||null,gate:s||null,isActive:!1,allowReturnToApp:!1,statusTone:"info",message:cf.CHECKOUT_SESSION_EXPIRED,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:u,markCurrentPlan:!1}:o==="CHECKOUT_SESSION_SUPERSEDED"?{entitlementState:r||null,gate:s||null,isActive:!1,allowReturnToApp:!1,statusTone:"info",message:cf.CHECKOUT_SESSION_SUPERSEDED,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:u,markCurrentPlan:!1}:r==="trialing"?{entitlementState:r,gate:s||null,isActive:!0,allowReturnToApp:!0,statusTone:"success",message:tD(e),primaryAction:u?"manage_billing":"none",primaryLabel:u?"Manage Billing":null,showManageBilling:u,markCurrentPlan:!0}:i?{entitlementState:r||null,gate:s||null,isActive:!0,allowReturnToApp:!0,statusTone:"success",message:c||null,primaryAction:"none",primaryLabel:null,showManageBilling:u,markCurrentPlan:!0}:r==="suspended"?{entitlementState:r,gate:s||null,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:"Your access is suspended because billing needs attention. Update billing to restore access.",primaryAction:u?"manage_billing":"open_plans",primaryLabel:u?"Manage Billing":"Open Plans",showManageBilling:u,markCurrentPlan:!1}:r==="canceled"?{entitlementState:r,gate:s||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:u,markCurrentPlan:!1}:r==="pending_plan_selection"||e?.planSelectionRequired===!0||s==="plan_selection_required"?{entitlementState:r||"pending_plan_selection",gate:s||"plan_selection_required",isActive:!1,allowReturnToApp:!1,statusTone:"info",message:c||nu.planSelectionRequired,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:!1,markCurrentPlan:!1}:r==="checkout_pending"||s==="checkout_pending"?{entitlementState:r||"checkout_pending",gate:s||"checkout_pending",isActive:!1,allowReturnToApp:!1,statusTone:"info",message:c||nu.checkoutPending,primaryAction:"open_plans",primaryLabel:"Open Plans",showManageBilling:u,markCurrentPlan:!1}:s==="misconfigured"?{entitlementState:r||null,gate:s,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:nu.misconfigured,primaryAction:"none",primaryLabel:null,showManageBilling:!1,markCurrentPlan:!1}:s==="missing_entitlement"?{entitlementState:r||null,gate:s,isActive:!1,allowReturnToApp:!1,statusTone:"error",message:nu.missingEntitlement,primaryAction:"choose_plan",primaryLabel:"Choose Plan",showManageBilling:!1,markCurrentPlan:!1}:{entitlementState:r||null,gate:s||null,isActive:!1,allowReturnToApp:!1,statusTone:c?"error":"info",message:c||null,primaryAction:"none",primaryLabel:null,showManageBilling:u,markCurrentPlan:!1}}function aD({isOpen:e,theme:n,runtimeMode:r,authRequiredForApi:s,isAuthenticated:o,hasAuthIdentity:c,authIdentityLabel:i,billingLoading:u,billingError:h,billingActionError:v,billingNotice:x,billingActionBusy:S,billingIntervalChoice:y,accountProfileSummary:k,currentWorkspaceId:w,canOpenTeamManagement:P,canManageWorkspaceSync:b,workspaceCloudSyncEnabled:j,syncStatusLabel:F,workspaceSyncError:B,syncControlBusy:se,onClose:K,onOpenWorkspaceAudit:te,onBillingIntervalChange:N,onRefreshBilling:fe,onUpdateInterval:$,onManageBilling:q,onStartCheckout:de,onToggleWorkspaceSync:ue,onOpenHelp:Y}){const E=Hm(k),z=E.message,Z=E.primaryLabel||"Start Checkout",me=String(k?.planName||k?.planId||"n/a").trim()||"n/a",G=()=>{if(E.primaryAction==="manage_billing"){q();return}de()};return t.jsx(uo,{isOpen:e,onClose:K,title:"Account Hub",size:"md",theme:n,draggable:!0,children:t.jsxs("div",{className:`${yt.form} ${mt.modalBody}`,children:[t.jsx("p",{className:mt.mutedText,children:"Manage sign in, profile, and workspace controls from one place."}),t.jsxs("div",{className:lt.accountHubCard,children:[t.jsx("strong",{children:"Authentication"}),t.jsx("p",{className:mt.sectionText,children:r==="cloud"?s?o?"Signed in. API access is enabled.":"Cloud mode requires sign in before app usage.":"Cloud runtime with optional authentication.":"Local runtime allows guest usage without sign in."}),t.jsx("p",{className:mt.sectionTextSpaced,children:o?c?t.jsxs(t.Fragment,{children:["Signed in as ",t.jsx("span",{className:lt.accountIdentityEmail,children:i})]}):"Signed in":"Signed in as: not signed in"}),r==="cloud"&&s&&!o&&t.jsx("p",{className:mt.sectionTextTop,children:"Use the `/login` screen to sign in."})]}),t.jsxs("div",{className:lt.accountHubCard,children:[t.jsx("strong",{children:"Profile & Account"}),t.jsx("p",{className:mt.sectionText,children:"Profile editing and account preferences will live here."})]}),t.jsxs("div",{className:lt.accountHubCard,children:[t.jsx("strong",{children:"Billing"}),o?r!=="cloud"?t.jsx("p",{className:mt.sectionText,children:"Billing remains cloud-backed in local runtime and uses your connected cloud account."}):t.jsxs(t.Fragment,{children:[u&&t.jsx("p",{className:mt.sectionTextSpaced,children:"Loading billing status..."}),h&&t.jsx("p",{className:`${pe.loginError} ${mt.errorText}`,children:h}),v&&t.jsx("p",{className:`${pe.loginError} ${mt.errorText}`,children:v}),x&&t.jsx("p",{className:mt.errorText,children:x}),z&&t.jsx("p",{className:mt.sectionText,children:z}),t.jsxs("p",{className:mt.sectionTextSpaced,children:["Plan: ",t.jsx("code",{children:me})," · ","Entitlement: ",t.jsx("code",{children:String(k?.entitlementState||"n/a")})]}),t.jsxs("p",{className:mt.sectionText,children:["Stripe status: ",t.jsx("code",{children:String(k?.stripeStatus||"n/a")}),k?.effectiveUntil?` · Effective until ${new Date(k.effectiveUntil).toLocaleString()}`:""]}),t.jsx("div",{className:mt.wrapRow,children:t.jsxs("label",{className:`${lt.accountMenuMeta} ${mt.inlineFieldLabel}`,children:["Interval",t.jsxs("select",{className:m.input,value:y,onChange:Ae=>N(Ae.target.value==="year"?"year":"month"),disabled:S,children:[t.jsx("option",{value:"month",children:"Monthly"}),t.jsx("option",{value:"year",children:"Yearly"})]})]})}),t.jsxs("div",{className:mt.actionRowEnd,children:[t.jsx("button",{className:m.cancelBtn,onClick:fe,disabled:S||u,children:"Refresh Billing"}),t.jsx("button",{className:m.cancelBtn,onClick:$,disabled:S||!k?.stripeSubscriptionId,children:"Update Interval"}),t.jsx("button",{className:m.cancelBtn,onClick:q,disabled:S||!k?.stripeCustomerId,children:"Manage Billing"}),t.jsx("button",{className:m.submitBtn,onClick:G,disabled:S||E.primaryAction==="manage_billing"&&!k?.stripeCustomerId,children:S?"Working...":Z})]})]}):t.jsx("p",{className:mt.sectionText,children:"Sign in to manage subscription billing."})]}),t.jsxs("div",{className:lt.accountHubCard,children:[t.jsx("strong",{children:"Workspace Audit Log"}),t.jsx("p",{className:mt.sectionText,children:"Audit entries are workspace-scoped for the active workspace, not global account history."}),t.jsxs("p",{className:mt.sectionText,children:["Active workspace: ",t.jsx("code",{children:w})]}),t.jsx("div",{className:mt.actionRowEnd,children:t.jsx("button",{className:m.cancelBtn,onClick:te,disabled:!P,children:"Open Workspace Audit"})})]}),t.jsxs("div",{className:lt.accountHubCard,children:[t.jsx("strong",{children:"Workspace Cloud Sync"}),t.jsx("p",{className:mt.sectionText,children:b?j?`Enabled · ${F}`:"Disabled":"Sign in to cloud account to enable workspace sync."}),B&&t.jsx("p",{className:`${pe.loginError} ${mt.errorText}`,children:B}),t.jsx("div",{className:mt.actionRowEnd,children:t.jsx("button",{className:m.cancelBtn,disabled:!b||se,onClick:()=>ue(!j),children:j?"Disable Sync":"Enable Sync"})})]}),t.jsxs("div",{className:`${yt.formActions} ${mt.modalActionsEnd}`,children:[t.jsx("button",{className:m.cancelBtn,onClick:Y,children:"Help & Tutorial"}),t.jsx("button",{className:m.submitBtn,onClick:K,children:"Close"})]})]})})}function rD({isOpen:e,theme:n,onClose:r,onSave:s,displayName:o,email:c,avatarDisplayUrl:i,accountBadgeInitial:u,avatarInputRef:h,avatarAccept:v,avatarDraftId:x,saveBusy:S,avatarBusy:y,saveError:k,saveNotice:w,onDisplayNameChange:P,onAvatarInputChange:b,onStartAvatarUpload:j,onDiscardUpload:F,onRemovePhoto:B}){return t.jsx(uo,{isOpen:e,onClose:r,title:"Edit Profile",size:"sm",theme:n,draggable:!0,footer:t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button",className:m.secondaryButton,onClick:r,disabled:S||y,children:"Cancel"}),t.jsx("button",{type:"button",className:m.primaryUpdateBtn,onClick:s,disabled:S||y||!o.trim(),children:S?"Saving...":"Save Profile"})]}),children:t.jsxs("div",{className:`${yt.form} ${mt.modalBody}`,children:[t.jsx("p",{className:mt.sectionText,children:"Update the name shown around your account and shared workspace surfaces."}),t.jsxs("div",{className:lt.profileAvatarEditor,children:[t.jsx("div",{className:lt.profileAvatarPreview,"aria-label":"Profile photo preview",children:i?t.jsx("img",{src:i,alt:"",className:lt.profileAvatarImage}):t.jsx("span",{children:u})}),t.jsxs("div",{className:lt.profileAvatarActions,children:[t.jsx("input",{ref:h,type:"file","aria-label":"Upload profile photo",accept:v,className:lt.profileAvatarInput,onChange:se=>b(se.target.files?.[0]||null),disabled:S||y}),t.jsx("button",{type:"button",className:m.secondaryButton,onClick:j,disabled:S||y,children:y?"Uploading...":"Upload Photo"}),x&&t.jsx("button",{type:"button",className:m.secondaryButton,onClick:F,disabled:S||y,children:"Discard Upload"}),i&&t.jsx("button",{type:"button",className:m.secondaryButton,onClick:B,disabled:S||y,children:"Remove Photo"})]})]}),t.jsxs("label",{className:mt.inlineFieldLabel,children:["Display name",t.jsx("input",{className:m.input,type:"text",value:o,onChange:se=>P(se.target.value),placeholder:"Display name",disabled:S})]}),t.jsxs("label",{className:mt.inlineFieldLabel,children:["Email",t.jsx("input",{className:m.input,type:"email",value:c,readOnly:!0,disabled:!0})]}),k&&t.jsx("p",{className:`${pe.loginError} ${mt.errorText}`,children:k}),w&&!k&&t.jsx("p",{className:mt.errorText,children:w})]})})}function sD({isOpen:e,theme:n,onClose:r,onOpenSettings:s}){return t.jsx(uo,{isOpen:e,onClose:r,title:"Quick Start",size:"md",theme:n,draggable:!0,children:t.jsxs("div",{className:`${yt.form} ${mt.modalBody}`,children:[t.jsx("p",{className:mt.mutedText,children:"Use this quick guide to get productive in Taskforce dashboard mode."}),t.jsxs("div",{children:[t.jsx("strong",{children:"1. Capture work"}),t.jsxs("p",{className:mt.sectionText,children:["Click ",t.jsx("code",{children:"Add Task"}),", write a short title, and save."]})]}),t.jsxs("div",{children:[t.jsx("strong",{children:"2. Plan the board"}),t.jsxs("p",{className:mt.sectionText,children:["Use ",t.jsx("code",{children:"Sort"}),", ",t.jsx("code",{children:"Group"}),", and ",t.jsx("code",{children:"Filters"})," in the header."]})]}),t.jsxs("div",{children:[t.jsx("strong",{children:"3. Execute and stage"}),t.jsxs("p",{className:mt.sectionText,children:["Move tasks through ",t.jsx("code",{children:"Task"}),", ",t.jsx("code",{children:"In Progress"}),", ",t.jsx("code",{children:"Review"}),", and ",t.jsx("code",{children:"Done"}),"."]})]}),t.jsxs("div",{children:[t.jsx("strong",{children:"4. Archive finished work"}),t.jsx("p",{className:mt.sectionText,children:"Archive completed/cancelled tasks to keep active board signal high."})]}),t.jsxs("div",{className:`${yt.formActions} ${mt.modalActionsEnd}`,children:[t.jsx("button",{className:m.cancelBtn,onClick:s,children:"Open Settings"}),t.jsx("button",{className:m.submitBtn,onClick:r,children:"Close Tutorial"})]})]})})}function oD({prompt:e,theme:n,onClose:r,onConfirm:s}){return t.jsx(uo,{isOpen:!!e,onClose:r,title:"Date Warning",size:"sm",theme:n,draggable:!1,closeOnOverlayClick:!1,children:t.jsxs("div",{className:`${m.form} tf-inline-stack-sm`,style:{padding:"16px",gap:"12px"},children:[t.jsx("p",{className:"tf-text-body",children:"Due date is before scheduled date."}),e&&t.jsxs("p",{className:"tf-text-helper",children:["Due: ",e.dueDate," · Scheduled: ",e.scheduledDate]}),t.jsxs("div",{className:m.formActions,children:[t.jsx("button",{className:m.cancelBtn,onClick:r,children:"Go Back"}),t.jsx("button",{className:m.submitBtn,onClick:s,children:"Save Anyway"})]})]})})}const iD="_syncStatusModal_4pd1g_1",cD="_syncStatusTop_4pd1g_6",lD="_syncStatusMetaHeader_4pd1g_15",dD="_syncStatusHeaderInfo_4pd1g_22",uD="_syncToggle_4pd1g_43",mD="_syncStatusBadge_4pd1g_47",pD="_syncToggleControl_4pd1g_75",fD="_syncToggleControlEnabled_4pd1g_91",hD="_syncToggleControlDisabled_4pd1g_98",gD="_syncToggleControlBusy_4pd1g_102",yD="_syncToggleControlBlocked_4pd1g_107",kD="_syncToggleInput_4pd1g_112",vD="_syncToggleState_4pd1g_125",SD="_syncToggleStateOn_4pd1g_136",wD="_syncToggleStateOff_4pd1g_141",bD="_syncToggleThumb_4pd1g_146",xD="_syncStatusSummaryValue_4pd1g_173",_D="_syncStatusSummaryCompact_4pd1g_180",CD="_syncStatusRepairBanner_4pd1g_190",AD="_syncStatusRepairHeader_4pd1g_200",TD="_syncStatusRepairBadge_4pd1g_207",ID="_syncStatusRepairMeta_4pd1g_216",ND="_syncStatusRepairText_4pd1g_223",jD="_syncStatusLabel_4pd1g_257",RD="_syncStatusSectionHeader_4pd1g_265",ED="_syncStatusCompactGrid_4pd1g_278",DD="_syncStatusCompactItem_4pd1g_284",PD="_syncStatusValue_4pd1g_295",MD="_syncStatusValueError_4pd1g_325",LD="_syncStatusActions_4pd1g_329",BD="_syncStatusPanel_4pd1g_336",WD="_syncStatusPanelHeader_4pd1g_346",FD="_syncStatusPanelMeta_4pd1g_353",OD="_syncStatusEventsList_4pd1g_375",$D="_syncStatusEventItem_4pd1g_384",UD="_syncStatusEventItemError_4pd1g_391",zD="_syncStatusEventItemMuted_4pd1g_396",HD="_syncStatusEventLine_4pd1g_401",GD="_syncStatusSecondaryActions_4pd1g_411",VD="_syncStatusPrimaryActions_4pd1g_425",ZD="_syncStatusPrimaryActionSlot_4pd1g_432",qD="_syncStatusActionPlaceholder_4pd1g_440",Ke={syncStatusModal:iD,syncStatusTop:cD,syncStatusMetaHeader:lD,syncStatusHeaderInfo:dD,syncToggle:uD,syncStatusBadge:mD,syncToggleControl:pD,syncToggleControlEnabled:fD,syncToggleControlDisabled:hD,syncToggleControlBusy:gD,syncToggleControlBlocked:yD,syncToggleInput:kD,syncToggleState:vD,syncToggleStateOn:SD,syncToggleStateOff:wD,syncToggleThumb:bD,syncStatusSummaryValue:xD,syncStatusSummaryCompact:_D,syncStatusRepairBanner:CD,syncStatusRepairHeader:AD,syncStatusRepairBadge:TD,syncStatusRepairMeta:ID,syncStatusRepairText:ND,syncStatusLabel:jD,syncStatusSectionHeader:RD,syncStatusCompactGrid:ED,syncStatusCompactItem:DD,syncStatusValue:PD,syncStatusValueError:MD,syncStatusActions:LD,syncStatusPanel:BD,syncStatusPanelHeader:WD,syncStatusPanelMeta:FD,syncStatusEventsList:OD,syncStatusEventItem:$D,syncStatusEventItemError:UD,syncStatusEventItemMuted:zD,syncStatusEventLine:HD,syncStatusSecondaryActions:GD,syncStatusPrimaryActions:VD,syncStatusPrimaryActionSlot:ZD,syncStatusActionPlaceholder:qD};function KD({isOpen:e,theme:n,currentWorkspaceLabel:r,syncStatusMeta:s,workspaceCloudSyncEnabled:o,syncControlBusy:c,canManageWorkspaceSync:i,workspaceSyncSummary:u,workspaceSyncRepairBusy:h,referenceMismatchCount:v,syncStageLabel:x,workspaceSyncPendingChanges:S,formattedLastSyncTime:y,formattedLastPullTime:k,formattedLastPushTime:w,syncLastError:P,workspaceSyncDiagnostics:b,activeReferenceMismatchSummaries:j,syncDiagnosticsSummary:F,syncEventRows:B,syncEventsListRef:se,workspaceSyncRepairQueued:K,workspaceSyncBusy:te,workspaceSyncCopied:N,runtimeMode:fe,isAuthenticated:$,onClose:q,onToggleWorkspaceSync:de,onRepairSync:ue,onCopyReport:Y,onOpenLogin:E,onRetrySync:z}){return t.jsx(uo,{isOpen:e,onClose:q,title:"Sync Manager",size:"mdWide",theme:n,draggable:!0,children:t.jsxs("div",{className:`${yt.form} ${Ke.syncStatusModal}`,style:{gap:"10px"},children:[t.jsxs("div",{className:Ke.syncStatusTop,children:[t.jsx("div",{className:Ke.syncStatusHeaderInfo,children:t.jsxs("div",{className:Ke.syncStatusMetaHeader,children:[t.jsx("div",{className:Ke.syncStatusBadge,style:{borderColor:s.border,background:s.background,color:s.color},children:s.label}),t.jsxs("span",{className:Ke.syncStatusLabel,children:["Workspace: ",t.jsx("code",{children:r})]})]})}),t.jsx("label",{className:Ke.syncToggle,children:t.jsxs("span",{className:[Ke.syncToggleControl,o?Ke.syncToggleControlEnabled:Ke.syncToggleControlDisabled,c?Ke.syncToggleControlBusy:"",i?"":Ke.syncToggleControlBlocked].filter(Boolean).join(" "),children:[t.jsx("input",{className:Ke.syncToggleInput,type:"checkbox",role:"switch","aria-label":"Enable Sync",checked:o,disabled:!i||c,onChange:Z=>de(Z.target.checked)}),t.jsx("span",{className:`${Ke.syncToggleState} ${Ke.syncToggleStateOn}`,children:"On"}),t.jsx("span",{className:`${Ke.syncToggleState} ${Ke.syncToggleStateOff}`,children:"Off"}),t.jsx("span",{className:Ke.syncToggleThumb})]})})]}),t.jsxs("div",{className:Ke.syncStatusSummaryCompact,children:[t.jsx("span",{className:Ke.syncStatusLabel,children:"Health"}),t.jsx("span",{className:Ke.syncStatusSummaryValue,children:u})]}),h&&t.jsxs("div",{className:Ke.syncStatusRepairBanner,children:[t.jsxs("div",{className:Ke.syncStatusRepairHeader,children:[t.jsxs("div",{className:Ke.syncStatusRepairBadge,children:[t.jsx(Ea,{size:13,className:m.spinner}),t.jsx("span",{children:"Repair In Progress"})]}),t.jsx("span",{className:Ke.syncStatusRepairMeta,children:"Advanced recovery mode"})]}),t.jsx("span",{className:Ke.syncStatusRepairText,children:v>0?`Taskforce is clearing the saved sync cursor and reconciling workspace state from the cloud again, including ${v} detected reference mismatch${v===1?"":"es"}. The panel may stay busy for a while during large repairs.`:"Taskforce is clearing the saved sync cursor and reconciling workspace state from the cloud again. The panel may stay busy for a while during large repairs."})]}),t.jsx("div",{className:Ke.syncStatusSectionHeader,children:t.jsx("span",{className:Ke.syncStatusLabel,children:"Current Session"})}),t.jsxs("div",{className:Ke.syncStatusCompactGrid,children:[t.jsxs("div",{className:Ke.syncStatusCompactItem,children:[t.jsx("span",{className:Ke.syncStatusLabel,children:"Stage"}),t.jsx("span",{className:Ke.syncStatusValue,children:x})]}),t.jsxs("div",{className:Ke.syncStatusCompactItem,children:[t.jsx("span",{className:Ke.syncStatusLabel,children:"Local Changes"}),t.jsx("span",{className:Ke.syncStatusValue,children:S})]}),t.jsxs("div",{className:Ke.syncStatusCompactItem,children:[t.jsx("span",{className:Ke.syncStatusLabel,children:"Last Successful"}),t.jsx("span",{className:Ke.syncStatusValue,children:y})]})]}),t.jsx("div",{className:Ke.syncStatusSectionHeader,children:t.jsx("span",{className:Ke.syncStatusLabel,children:"Activity"})}),t.jsxs("div",{className:Ke.syncStatusCompactGrid,children:[t.jsxs("div",{className:Ke.syncStatusCompactItem,children:[t.jsx("span",{className:Ke.syncStatusLabel,children:"Last Pull"}),t.jsx("span",{className:Ke.syncStatusValue,children:k})]}),t.jsxs("div",{className:Ke.syncStatusCompactItem,children:[t.jsx("span",{className:Ke.syncStatusLabel,children:"Last Push"}),t.jsx("span",{className:Ke.syncStatusValue,children:w})]})]}),P!=="None"&&t.jsxs("div",{className:Ke.syncStatusPanel,style:{background:"rgba(239, 68, 68, 0.05)",borderColor:"rgba(239, 68, 68, 0.2)"},children:[t.jsxs("div",{className:Ke.syncStatusSectionHeader,style:{marginTop:0},children:[t.jsx(Tc,{size:12,color:"#fda4af"}),t.jsxs("span",{className:Ke.syncStatusLabel,style:{color:"#fda4af"},children:["Last Error (",b.lastErrorAt?new Date(b.lastErrorAt).toLocaleTimeString():"Recent",")"]})]}),t.jsx("span",{className:`${Ke.syncStatusValue} ${Ke.syncStatusValueError}`,children:P})]}),v>0&&t.jsxs("div",{className:Ke.syncStatusPanel,style:{background:"rgba(250, 204, 21, 0.08)",borderColor:"rgba(250, 204, 21, 0.22)"},children:[t.jsxs("div",{className:Ke.syncStatusPanelHeader,children:[t.jsx("span",{className:Ke.syncStatusLabel,style:{color:"#fde68a"},children:"Identifier Integrity"}),t.jsxs("span",{className:Ke.syncStatusPanelMeta,children:[v," mismatch",v===1?"":"es"," detected"]})]}),t.jsx("span",{className:Ke.syncStatusValue,children:"Task, document, or image reference numbers disagreed during normal sync. Cloud-backed sync preserves the incoming cloud reference and renumbers the displaced local item to the next available reference."}),j.length>0&&t.jsx("div",{style:{marginTop:"10px",display:"flex",flexDirection:"column",gap:"8px"},children:j.map(Z=>t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"2px",padding:"8px 10px",borderRadius:"8px",background:"rgba(15, 23, 42, 0.18)",border:"1px solid rgba(250, 204, 21, 0.16)"},children:[t.jsx("span",{className:Ke.syncStatusValue,style:{fontSize:"12px",wordBreak:"break-all"},children:Z.pathLabel}),Z.refsLabel?t.jsx("span",{className:Ke.syncStatusPanelMeta,children:Z.refsLabel}):null]},Z.key))})]}),t.jsxs("div",{className:Ke.syncStatusPanel,children:[t.jsxs("div",{className:Ke.syncStatusPanelHeader,children:[t.jsx("span",{className:Ke.syncStatusLabel,children:"Local Sync Diagnostics"}),t.jsx("span",{className:Ke.syncStatusPanelMeta,style:{fontSize:"10px"},children:"AI profiles & metadata"})]}),t.jsx("div",{className:Ke.syncStatusCompactGrid,style:{gridTemplateColumns:"repeat(2, 1fr)"},children:F.map(Z=>t.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",gap:"8px"},children:[t.jsx("span",{className:Ke.syncStatusLabel,style:{fontSize:"9px",textTransform:"capitalize"},children:Z.label}),t.jsx("span",{className:Ke.syncStatusValue,style:{fontSize:"11px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:Z.value})]},Z.label))})]}),t.jsxs("div",{className:Ke.syncStatusPanel,children:[t.jsx("div",{className:Ke.syncStatusPanelHeader,children:t.jsx("span",{className:Ke.syncStatusLabel,children:"Recent Events"})}),t.jsx("div",{ref:se,className:Ke.syncStatusEventsList,style:{height:"120px"},children:B.map(Z=>t.jsx("div",{className:[Ke.syncStatusEventItem,Z.tone==="error"?Ke.syncStatusEventItemError:"",Z.tone==="muted"?Ke.syncStatusEventItemMuted:""].filter(Boolean).join(" "),style:{padding:"6px 8px",borderRadius:"6px"},children:t.jsx("span",{className:Ke.syncStatusEventLine,style:{fontSize:"11px"},children:Z.text})},Z.key))})]}),t.jsxs("div",{className:`${yt.formActions} ${Ke.syncStatusActions}`,children:[t.jsxs("div",{className:Ke.syncStatusSecondaryActions,children:[t.jsx("button",{className:m.cancelBtn,onClick:ue,disabled:h,title:h?"Repair is running now.":K?"Repair is queued and will start when the current sync finishes.":te?"Queue a repair to start automatically when the current sync finishes.":"Advanced recovery: clear the saved pull cursor and re-fetch cloud state from the beginning.",children:h?t.jsxs(t.Fragment,{children:[t.jsx(Ea,{size:14,className:m.spinner}),t.jsx("span",{style:{marginLeft:"6px"},children:"Repairing..."})]}):K?"Repair Queued":"Repair"}),t.jsxs("button",{className:m.cancelBtn,onClick:Y,title:"Copy the current sync manager report for support or AI troubleshooting.",children:[t.jsx(Bl,{size:14}),t.jsx("span",{style:{marginLeft:"6px"},children:N?"Copied":"Copy Report"})]})]}),t.jsxs("div",{className:Ke.syncStatusPrimaryActions,children:[t.jsx("div",{className:Ke.syncStatusPrimaryActionSlot,children:fe==="local"&&!$?t.jsx("button",{className:m.submitBtn,onClick:E,children:"Sign In / Register"}):t.jsx("div",{className:Ke.syncStatusActionPlaceholder,"aria-hidden":"true"})}),t.jsx("div",{className:Ke.syncStatusPrimaryActionSlot,children:t.jsx("button",{className:m.submitBtn,onClick:z,disabled:te,children:te?t.jsxs(t.Fragment,{children:[t.jsx(Ea,{size:14,className:m.spinner}),"Syncing..."]}):t.jsxs(t.Fragment,{children:[t.jsx(jg,{size:14}),"Sync"]})})})]})]})]})})}function YD({isOpen:e,theme:n,teamPlanMode:r,teamMgmtError:s,teamManagementTab:o,teamUsersLoading:c,teamUsers:i,teamActionBusyUserId:u,teamInviteFeedback:h,teamInviteEmail:v,teamInviteRole:x,teamInvitePermissionMode:S,teamInviteBusy:y,pendingInvites:k,teamAuditLoading:w,teamAuditEvents:P,teamAuditPage:b,teamAuditPages:j,teamAuditHasMore:F,onClose:B,onOpenMembersTab:se,onOpenInvitesTab:K,onOpenAuditTab:te,onMemberRoleChange:N,onMemberPermissionChange:fe,onToggleMemberDisabled:$,onRevokeInvite:q,onRemoveMember:de,onInviteEmailChange:ue,onInviteRoleChange:Y,onInvitePermissionModeChange:E,onSubmitInvite:z,onLoadAuditPrevious:Z,onLoadAuditNext:me}){return t.jsx(uo,{isOpen:e,onClose:B,title:"Team Management",size:"md",theme:n,draggable:!0,children:t.jsxs("div",{className:`${yt.form} ${mt.modalBody}`,children:[r==="personal"&&t.jsx("p",{className:pe.loginError,children:"Team management is only available in TEAM accounts."}),s&&t.jsx("p",{className:pe.loginError,children:s}),t.jsxs("div",{className:`${m.settingsTabs} tf-scrollbar tf-scrollbar--track-transparent tf-scrollbar--compact`,children:[t.jsx("button",{className:`${m.settingsTabBtn} ${o==="members"?m.settingsTabBtnActive:""}`,onClick:se,children:"Members"}),t.jsx("button",{className:`${m.settingsTabBtn} ${o==="invites"?m.settingsTabBtnActive:""}`,onClick:K,children:"Invites"}),t.jsx("button",{className:`${m.settingsTabBtn} ${o==="audit"?m.settingsTabBtnActive:""}`,onClick:te,children:"Audit Log"})]}),o==="members"&&t.jsxs("div",{className:lt.accountHubCard,children:[c&&t.jsx("p",{className:mt.mutedText,children:"Loading members..."}),!c&&i.length===0&&t.jsx("p",{className:mt.mutedText,children:"No users found."}),!c&&i.map(G=>t.jsxs("div",{className:mt.memberRow,children:[t.jsx("div",{className:mt.memberTitle,children:G.displayName||G.email}),t.jsxs("div",{className:lt.accountMenuMeta,children:[G.email," · ",G.status,G.disabled?" · deactivated":""]}),t.jsxs("div",{className:mt.memberActions,children:[t.jsxs("select",{className:`${m.input} ${mt.selectRole}`,value:G.role,onChange:Ae=>N(G.userId,Ae.target.value),disabled:u===G.userId,children:[t.jsx("option",{value:"owner",children:"Owner"}),t.jsx("option",{value:"admin",children:"Admin"}),t.jsx("option",{value:"member",children:"Member"})]}),G.role==="member"&&t.jsxs("select",{className:`${m.input} ${mt.selectPermission}`,value:G.permissionMode,onChange:Ae=>fe(G.userId,Ae.target.value),disabled:u===G.userId,children:[t.jsx("option",{value:"read-write",children:"Read / Write"}),t.jsx("option",{value:"read-only",children:"Read Only"})]}),t.jsx("button",{className:m.cancelBtn,disabled:u===G.userId,onClick:()=>$(G.userId,!G.disabled),children:G.disabled?"Reactivate":"Deactivate"}),G.status==="invited"&&t.jsx("button",{className:m.cancelBtn,disabled:u===G.userId,onClick:()=>q(G.userId),children:"Revoke Invite"}),t.jsx("button",{className:m.cancelBtn,disabled:u===G.userId,onClick:()=>de(G.userId),children:"Remove"})]})]},G.userId))]}),o==="invites"&&t.jsxs("div",{className:lt.accountHubCard,children:[h&&t.jsx("p",{className:mt.sectionText,children:h}),t.jsxs("div",{className:m.pathInputGroup,children:[t.jsx("label",{className:`${m.label} ${mt.labelFixed}`,children:"Email"}),t.jsx("input",{className:m.input,value:v,onChange:G=>ue(G.target.value),placeholder:"name@company.com"})]}),t.jsxs("div",{className:m.pathInputGroup,children:[t.jsx("label",{className:`${m.label} ${mt.labelFixed}`,children:"Role"}),t.jsxs("select",{className:`${m.input} ${mt.selectRole}`,value:x,onChange:G=>Y(G.target.value==="admin"?"admin":"member"),children:[t.jsx("option",{value:"member",children:"Member"}),t.jsx("option",{value:"admin",children:"Admin"})]}),x==="member"&&t.jsxs("select",{className:`${m.input} ${mt.selectPermission}`,value:S,onChange:G=>E(G.target.value==="read-only"?"read-only":"read-write"),children:[t.jsx("option",{value:"read-write",children:"Read / Write"}),t.jsx("option",{value:"read-only",children:"Read Only"})]}),t.jsx("button",{className:m.submitBtn,disabled:y||!v.trim()||r!=="team",onClick:z,children:y?"Sending...":"Send Invite"})]}),t.jsxs("div",{className:mt.inviteRow,children:[t.jsx("div",{className:mt.listHeading,children:"Pending Invites"}),k.length===0&&t.jsx("p",{className:mt.mutedText,children:"No pending invites."}),k.map(G=>t.jsxs("div",{className:mt.memberRow,children:[t.jsx("div",{className:mt.memberTitle,children:G.displayName||G.email}),t.jsxs("div",{className:lt.accountMenuMeta,children:[G.email," · ",G.role]})]},G.userId))]})]}),o==="audit"&&t.jsxs("div",{className:lt.accountHubCard,children:[w&&t.jsx("p",{className:mt.mutedText,children:"Loading audit entries..."}),!w&&P.length===0&&t.jsx("p",{className:mt.mutedText,children:"No audit events for this workspace."}),!w&&t.jsx("div",{className:mt.auditList,children:P.map(G=>t.jsxs("div",{className:mt.memberRow,children:[t.jsx("div",{className:lt.accountMenuMeta,children:new Date(G.createdAt).toLocaleString()}),t.jsx("div",{className:mt.memberTitle,children:G.action}),t.jsxs("div",{className:lt.accountMenuMeta,children:[G.actorUserId," (",G.actorRole,")"]})]},G.id))}),t.jsxs("div",{className:mt.auditPager,children:[t.jsx("button",{className:m.cancelBtn,disabled:w||b===0,onClick:Z,children:"Previous"}),t.jsxs("span",{className:lt.accountMenuMeta,children:["Page ",b+1," of ",j]}),t.jsx("button",{className:m.cancelBtn,disabled:w||!F||b+1>=j,onClick:me,children:"Next"})]})]}),t.jsx("div",{className:`${yt.formActions} ${mt.modalActionsEnd}`,children:t.jsx("button",{className:m.cancelBtn,onClick:B,children:"Close"})})]})})}const Fh=e=>{const n=e.status||"task";return n==="done"||n==="cancelled"?"completed":n},JD=(e,n,r)=>{if(Fh(e)===n)return null;const o={status:n};return n==="task"||n==="on-hold"?(o.inProgress=!1,o.readyForReview=!1,o.completed=!1,o.cancelled=!1,o.completedAt=null,o):n==="in-progress"?(o.inProgress=!0,o.readyForReview=!1,o.completed=!1,o.cancelled=!1,o.completedAt=null,o):n==="review"?(o.inProgress=!1,o.readyForReview=!0,o.completed=!1,o.cancelled=!1,o.completedAt=null,o):n==="done"||n==="completed"?(o.status="done",o.inProgress=!1,o.readyForReview=!1,o.completed=!0,o.cancelled=!1,o.completedAt=r,o):(n==="cancelled"&&(o.status="cancelled"),o)},XD=({targetTasks:e,overTaskId:n,isBelowOverItem:r})=>{if(!n)return e.length;const s=e.findIndex(o=>o.id===n);return s<0?e.length:s+(r?1:0)},Oh=(e,n=new Map)=>{const r=new Map(n);return e.forEach((s,o)=>{r.set(s.id,{...r.get(s.id)||{},orderInDay:o})}),r},lp=e=>Array.from(e.entries()).map(([n,r])=>({taskId:n,updates:r})),$h=({sourceColumnId:e,targetColumnId:n,sourceTasks:r,updates:s})=>!e||e===n?s:Oh(r,s),QD=({activeTask:e,sourceColumnId:n,targetTasks:r,sourceTasks:s,insertAt:o})=>{const c=[...r];c.splice(o,0,e);let i=new Map;return c.forEach((u,h)=>{if(u.id===e.id){i.set(u.id,{...i.get(u.id)||{},...e.scheduledDate?{scheduledDate:null,scheduledWeekKey:null}:{},orderInDay:h});return}i.set(u.id,{...i.get(u.id)||{},orderInDay:h})}),i=$h({sourceColumnId:n,targetColumnId:"backlog",sourceTasks:s,updates:i}),lp(i)},eP=({activeTask:e,targetTasks:n,insertAt:r})=>{const s=[...n];return s.splice(r,0,e),lp(Oh(s))},tP=({activeTask:e,sourceColumnId:n,targetColumnId:r,targetTasks:s,sourceTasks:o,insertAt:c,scheduledDate:i,scheduledWeekKey:u})=>{const h=[...s];h.splice(c,0,e);let v=new Map;return h.forEach((x,S)=>{if(x.id===e.id){v.set(x.id,{...v.get(x.id)||{},scheduledDate:i,scheduledWeekKey:u,orderInDay:S});return}v.set(x.id,{...v.get(x.id)||{},orderInDay:S})}),v=$h({sourceColumnId:n,targetColumnId:r,sourceTasks:o,updates:v}),lp(v)},nP=({activeTask:e,sourceColumnId:n,targetColumnId:r,targetTasks:s,sourceTasks:o,overTaskId:c,isBelowOverItem:i,scheduleDates:u,parseToIsoWeekKey:h,todayDate:v})=>{const x=["mon","tue","wed","thu","fri","sat","sun"];if(!(r==="backlog"||r==="expired"||x.includes(r)))return null;const y=XD({targetTasks:s,overTaskId:c,isBelowOverItem:i});if(r==="expired")return n!=="expired"?null:{kind:"updates",updates:eP({activeTask:e,targetTasks:s,insertAt:y})};if(r==="backlog")return{kind:"updates",updates:QD({activeTask:e,sourceColumnId:n,targetTasks:s,sourceTasks:o,insertAt:y})};if(!x.includes(r))return null;const k=u[r];return k?!(e.status==="done"||e.status==="cancelled")&&k<v?{kind:"blocked",reason:"Only completed work can be scheduled in the past."}:{kind:"updates",updates:tP({activeTask:e,sourceColumnId:n,targetColumnId:r,targetTasks:s,sourceTasks:o,insertAt:y,scheduledDate:k,scheduledWeekKey:h(k)}),selectedDate:k}:null},iu="expired::";function aP({tasks:e,columns:n,groupBy:r,searchQuery:s,copiedId:o,taxonomies:c,types:i,priorities:u,approaches:h,assigneeOptions:v=[],onUpdateTask:x,onTaskClick:S,onOpenTaskById:y,onCopyId:k,onToggleInProgress:w,onToggleReview:P,onToggleComplete:b,onToggleCancel:j,onSetStatus:F,onArchiveTask:B,onUnarchive:se,onDelete:K,allTasks:te=[],onAddTaskToColumn:N,emptyColumnMode:fe="show",filterCategories:$=[],filterTypes:q=[],filterPriorities:de=[],filterStatus:ue=[],filterAssignees:Y=[],scheduleFilteredTaskIds:E,categories:z=[],compressed:Z=!1,readOnlyMode:me=null,recentlyChangedTaskIds:G=[],scheduleDates:Ae,onScheduleDaySelected:he,persistedScrollLeft:Ce,onScrollLeftChange:le,sortBy:be="created",sortOrder:Ie="desc",planningDropTargets:Ne=null,onAssignTaskToWorkstream:Fe,onAssignWorkstreamToInitiative:D,showTaskCardStatusLabel:I=!0,workstreams:p=[],initiatives:A=[]}){const[_,M]=a.useState(null),[H,R]=a.useState(!1),[re,V]=a.useState(!1),ie=a.useMemo(()=>new Set(G),[G]),W=a.useMemo(()=>new Map(p.map(J=>[J.id,J])),[p]),Q=a.useMemo(()=>new Map(A.map(J=>[J.id,J])),[A]),ge=a.useCallback(J=>{const Se=J.workstreamId&&W.get(J.workstreamId)||null,Ee=Se?.initiativeId&&Q.get(Se.initiativeId)||null;return{taskWorkstream:Se,taskInitiative:Ee}},[Q,W]),Me=a.useMemo(()=>new Set(e.map(J=>J.id)),[e]),ye=a.useCallback(J=>J.startsWith(iu)?J.slice(iu.length):J,[]),Ue=a.useCallback(J=>Me.has(ye(J)),[Me,ye]),pt=a.useMemo(()=>new Set(E||[]),[E]),Ye=a.useRef(null),bt=a.useCallback(J=>{const Se=J?.data?.current||{},Ee=String(J?.id||"");let Te=String(Se.taskId||""),Ze=String(Se.workstreamId||"");!Te&&Ee&&Ue(Ee)&&(Te=ye(Ee)),!Ze&&Ee.startsWith("planning-workstream:")&&(Ze=Ee.slice(20));let nt=String(Se.type||"");return nt||(Te?nt="task-card":Ze&&(nt="planning-workstream")),{activeId:Ee,type:nt,taskId:Te,workstreamId:Ze}},[ye,Ue]),qe=jf(Pm(Pf,{activationConstraint:{distance:10}}),Pm(ty,{coordinateGetter:ey})),Qe=Fh,$e=a.useMemo(()=>{const J=new Date,Se=J.getFullYear(),Ee=String(J.getMonth()+1).padStart(2,"0"),Te=String(J.getDate()).padStart(2,"0");return`${Se}-${Ee}-${Te}`},[]),He=a.useMemo(()=>{const J=Te=>{const Ze=Te.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!Ze)return null;const nt=new Date(Date.UTC(Number(Ze[1]),Number(Ze[2])-1,Number(Ze[3]))),St=nt.getUTCDay()||7;nt.setUTCDate(nt.getUTCDate()+4-St);const dt=new Date(Date.UTC(nt.getUTCFullYear(),0,1)),Et=Math.ceil(((nt.getTime()-dt.getTime())/864e5+1)/7);return`${nt.getUTCFullYear()}-W${String(Et).padStart(2,"0")}`};return{dates:{...(()=>{const Te=new Date,Ze=Te.getDay(),nt=Ze===0?-6:1-Ze,St=new Date(Te);St.setDate(Te.getDate()+nt);const dt=Ht=>{const un=Ht.getFullYear(),Zt=String(Ht.getMonth()+1).padStart(2,"0"),Gt=String(Ht.getDate()).padStart(2,"0");return`${un}-${Zt}-${Gt}`},Et={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return["mon","tue","wed","thu","fri","sat","sun"].forEach((Ht,un)=>{const Zt=new Date(St);Zt.setDate(St.getDate()+un),Et[Ht]=dt(Zt)}),Et})(),...Ae||{}},parseToIsoWeekKey:J}},[Ae]),ee=J=>{const Se=J.scheduledDate||null;return Se?new Map([[He.dates.mon,"mon"],[He.dates.tue,"tue"],[He.dates.wed,"wed"],[He.dates.thu,"thu"],[He.dates.fri,"fri"],[He.dates.sat,"sat"],[He.dates.sun,"sun"]]).get(Se)||"__offweek":"backlog"},Be=a.useMemo(()=>{const J=new Map;for(const Se of n)J.set(String(Se.value),Se),J.has(Se.label)||J.set(Se.label,Se);return J},[n]),l=a.useMemo(()=>{const J={};return n.forEach(Ee=>{J[String(Ee.value)]=0}),(te.length>0?te:e).forEach(Ee=>{let Te="";if(r==="status")Te=Qe(Ee);else if(r==="schedule")Te=ee(Ee);else{const nt=Ee[r];Te=String(nt??"")}const Ze=Be.get(Te);if(Ze&&J[String(Ze.value)]++,r==="schedule"){const nt=Ee.status==="done"||Ee.status==="cancelled";Ee.scheduledDate&&!nt&&Ee.scheduledDate<$e&&Be.has("expired")&&(J.expired=(J.expired||0)+1)}}),J},[te,e,n,r,Be,$e]),rt=a.useMemo(()=>{const J={};if(n.forEach(Se=>{J[String(Se.value)]=[]}),e.forEach(Se=>{let Ee="";if(r==="status")Ee=Qe(Se);else if(r==="schedule")Ee=ee(Se);else{const Ze=Se[r];Ee=String(Ze??"")}const Te=Be.get(Ee);if(Te){if(r==="schedule"&&String(Te.value)==="backlog"&&!pt.has(Se.id))return;J[String(Te.value)].push(Se)}if(r==="schedule"){const Ze=Se.status==="done"||Se.status==="cancelled";Se.scheduledDate&&!Ze&&Se.scheduledDate<$e&&J.expired&&J.expired.push(Se)}}),r==="schedule"){const Se=(Te,Ze)=>{const nt=typeof Te.orderInDay=="number"?Te.orderInDay:Number.MAX_SAFE_INTEGER,St=typeof Ze.orderInDay=="number"?Ze.orderInDay:Number.MAX_SAFE_INTEGER;return nt!==St?nt-St:String(Te.createdAt||"").localeCompare(String(Ze.createdAt||""))},Ee=(Te,Ze)=>vu(Te,Ze,be,Ie,c);Object.keys(J).forEach(Te=>{if(Te==="backlog"||Te==="expired"){J[Te].sort(Ee);return}J[Te].sort(Se)})}return J},[e,te,n,r,Be,pt,$e,be,Ie]),At=_?ye(_):null,jt=At?e.find(J=>J.id===At):null,It=a.useRef(null),tt=a.useRef(null),xt=a.useRef({pointerId:null,startX:0,startY:0,startScrollLeft:0,didPan:!1}),Ve=a.useRef(-1),ct=(J,Se)=>r==="category"?!$.includes(String(J)):r==="type"?!q.includes(String(J)):r==="priority"?!de.some(Ee=>Number(Ee)===Number(J)):r==="status"?String(J)==="completed"?!ue.includes("done")&&!ue.includes("cancelled"):!ue.includes(String(J)):r==="assignee"?!Y.includes(String(J)):!1,ze=a.useMemo(()=>{let Te=0;return n.forEach((Ze,nt)=>{const St=rt[String(Ze.value)]||[],dt=ct(Ze.value,Ze.label),Et=r!=="schedule"&&fe==="hide"&&St.length===0;if(dt||Et)return;const Ut=fe==="collapse"&&St.length===0;Te+=Ut?72:320,Te+=4}),Te},[n,rt,fe,r,$,q,de,ue]),at=a.useCallback(J=>{if(!le)return;const Se=Math.max(0,Math.round(J));Se!==Ve.current&&(Ve.current=Se,le(Se))},[le]);a.useEffect(()=>{const J=It.current,Se=tt.current;if(!J||!Se)return;let Ee=!1,Te=!1;const Ze=()=>{!J||Te||(Ee=!0,J.scrollLeft=Se.scrollLeft,at(Se.scrollLeft),setTimeout(()=>Ee=!1,0))},nt=()=>{!Se||Ee||(Te=!0,Se.scrollLeft=J.scrollLeft,at(J.scrollLeft),setTimeout(()=>Te=!1,0))};return Se.addEventListener("scroll",Ze),J.addEventListener("scroll",nt),()=>{Se.removeEventListener("scroll",Ze),J.removeEventListener("scroll",nt)}},[at]);const Nt=a.useRef(!1);a.useEffect(()=>{if(Nt.current)return;if(typeof Ce!="number"||!Number.isFinite(Ce)){Nt.current=!0;return}const J=It.current,Se=tt.current;if(!J||!Se)return;const Ee=Math.max(0,J.scrollWidth-J.clientWidth),Te=Math.min(Math.max(0,Ce),Ee);J.scrollLeft=Te,Se.scrollLeft=Te,Nt.current=!0},[Ce,ze]),a.useEffect(()=>{const J=()=>{const Se=It.current;if(!Se){V(!1);return}V(Se.scrollWidth>Se.clientWidth+4)};return J(),window.addEventListener("resize",J),()=>{window.removeEventListener("resize",J)}},[ze,n.length,rt]),a.useEffect(()=>{const J=Ee=>{const Te=xt.current;if(Te.pointerId===null||Te.pointerId!==Ee.pointerId)return;const Ze=Ee.clientX-Te.startX,nt=Ee.clientY-Te.startY;if(!Te.didPan){if(Math.abs(Ze)<7||Math.abs(Ze)<Math.abs(nt))return;Te.didPan=!0,R(!0),document.body.style.userSelect="none"}const St=Te.startScrollLeft-Ze;It.current&&(It.current.scrollLeft=St),tt.current&&(tt.current.scrollLeft=St),Ee.preventDefault()},Se=()=>{const Ee=xt.current;Ee.pointerId!==null&&(Ee.pointerId=null,Ee.didPan=!1,H&&(R(!1),document.body.style.userSelect=""))};return window.addEventListener("pointermove",J),window.addEventListener("pointerup",Se),window.addEventListener("pointercancel",Se),()=>{window.removeEventListener("pointermove",J),window.removeEventListener("pointerup",Se),window.removeEventListener("pointercancel",Se),document.body.style.userSelect=""}},[H]);const Rt=J=>{!re||J.target?.closest('button, a, input, select, textarea, [role="button"], [data-no-header-pan="true"]')||(xt.current.pointerId=J.pointerId,xt.current.startX=J.clientX,xt.current.startY=J.clientY,xt.current.startScrollLeft=It.current?.scrollLeft||0,xt.current.didPan=!1)},ot=J=>{M(J.active.id)},ke=J=>{const Se=bt(J.active),Ee=String(J.over?.data?.current?.type||"");Se.type==="task-card"&&Ee.startsWith("planning-")?Ye.current=`${String(J.over?.id||"")}:${Ee}`:Ye.current&&(Ye.current=null)},ve=J=>{const{active:Se,over:Ee}=J;Ye.current=null,M(null);const Te=bt(Se),Ze=Te.type,nt=String(Ee?.data?.current?.type||""),St=Te.taskId,dt=Te.workstreamId,Et=String(Ee?.data?.current?.workstreamId||""),Ut=String(Ee?.data?.current?.initiativeId||"");if(Ze==="task-card"){if(nt==="planning-workstream-target"&&St&&Et){Fe?.(St,Et);return}if(nt==="planning-task-unlink"&&St){Fe?.(St,null);return}}if(Ze==="planning-workstream"){if(nt==="planning-initiative-target"&&dt&&Ut){D?.(dt,Ut);return}if(nt==="planning-workstream-unlink"&&dt){D?.(dt,null);return}return}const Ht=String(Se.id),un=Ee?String(Ee.id):null,Zt=ye(Ht);un&&ye(un);const Gt=e.find(mn=>mn.id===Zt);if(!Gt||!un)return;const ln=Re(Ht),nn=String(Se?.data?.current?.sortable?.containerId||"")||ln,En=String(Ee?.data?.current?.sortable?.containerId||"")||Re(un);if(!En)return;const Dn=Be.get(En)||n.find(mn=>String(mn.value)===En||mn.label===En);if(Dn){if(r==="schedule"){const ae=String(Dn.value),xe=un&&Ue(un)?ye(un):null,We=Ee?.rect,ft=Se.rect.current.translated||Se.rect.current.initial,Bt=!!(We&&ft&&ft.top+ft.height/2>We.top+We.height/2),Vt=(rt[ae]||[]).filter(Ln=>Ln.id!==Zt),en=(rt[String(nn)]||[]).filter(Ln=>Ln.id!==Zt),Mt=nP({activeTask:Gt,sourceColumnId:nn,targetColumnId:ae,targetTasks:Vt,sourceTasks:en,overTaskId:xe,isBelowOverItem:Bt,scheduleDates:He.dates,parseToIsoWeekKey:He.parseToIsoWeekKey,todayDate:$e});if(!Mt)return;if(Mt.kind==="blocked"){window.alert(Mt.reason);return}Mt.updates.forEach(({taskId:Ln,updates:qt})=>x(Ln,qt)),Mt.selectedDate&&he?.(Mt.selectedDate);return}let mn=Dn.value;if(r==="status"){const ae=String(mn),xe=JD(Gt,ae,new Date().toISOString());xe&&x(Gt.id,xe);return}(r==="priority"||r==="complexity")&&(mn=Number(mn));const rn=Gt[r];if(String(rn??"")!==String(mn??"")){const ae={[r]:mn};x(Gt.id,ae)}}},Re=J=>{if(Be.has(J)){const Te=Be.get(J);return Te?String(Te.value):J}if(r==="schedule"&&J.startsWith(iu))return"expired";const Se=ye(J),Ee=e.find(Te=>Te.id===Se);if(Ee){let Te="";r==="status"?Te=Qe(Ee):r==="schedule"?Te=ee(Ee):Te=String(Ee[r]??"");const Ze=Be.get(Te);return Ze?String(Ze.value):null}return null},vt={sideEffects:ny({styles:{active:{opacity:"0"}}})},Oe=J=>{try{const Se=Qg(J);if(Se.length>0){const Ee=Se.find(Et=>String(Et.id).startsWith("planning-"));if(Ee)return[Ee];const Te=J.pointerCoordinates;if(!Te)return[Se[0]];const Ze=Se.filter(Et=>{const Ut=String(Et.id);return Ue(Ut)&&Ut!==_});if(Ze.length===0){const Ut=Se.filter(Zt=>{const Gt=String(Zt.id);return!Ue(Gt)}).find(Zt=>!!Re(String(Zt.id)))||null,Ht=Ut?Re(String(Ut.id)):null,un=(J.droppableContainers||[]).filter(Zt=>{const Gt=String(Zt.id);return!Ue(Gt)||Gt===_?!1:Ht?Re(Gt)===Ht:!0});if(un.length>0){const Zt=Rp({...J,droppableContainers:un});if(Zt.length>0)return[Zt[0]]}return Ut?[Ut]:[Se[0]]}const nt=Ze;let St=nt[0],dt=Number.POSITIVE_INFINITY;for(const Et of nt){const Ut=J.droppableRects?.get(Et.id);if(!Ut)continue;const Ht=Ut.left+Ut.width/2,un=Ut.top+Ut.height/2,Zt=Te.x-Ht,Gt=Te.y-un,ln=Zt*Zt+Gt*Gt;ln<dt&&(dt=ln,St=Et)}return[St]}return Rp(J)}catch(Se){return console.error("[TaskKanban] collision detection error",Se),[]}},kt={searchQuery:s,copiedId:o,taxonomies:c,types:i,priorities:u,approaches:h,assigneeOptions:v,onCopyId:k,onToggleInProgress:w,onToggleReview:P,onToggleComplete:b,onToggleCancel:j,onSetStatus:F,onArchiveTask:B,onUnarchive:se,onDelete:K,onOpenTaskById:y,categories:z,readOnlyMode:me,changedTaskIdSet:ie,resolveTaskHierarchy:ge,groupBy:r,showStatusLabel:I};return t.jsxs(Rf,{sensors:qe,collisionDetection:Oe,onDragStart:ot,onDragOver:ke,onDragEnd:ve,onDragCancel:J=>{Ye.current=null,M(null)},children:[Ne,t.jsxs("div",{className:m.kanbanWrapper,children:[t.jsx("div",{ref:tt,className:`${m.kanbanTopScroll} tf-scrollbar`,children:t.jsx("div",{className:m.kanbanTopScrollSpacer,style:{width:`${ze}px`}})}),t.jsx("div",{className:m.kanbanContainer,ref:It,children:n.map(J=>{const Se=rt[String(J.value)]||[],Ee=ct(J.value,J.label),Te=r!=="schedule"&&fe==="hide"&&Se.length===0,Ze=r==="schedule",nt=Ze&&n.some(Gt=>String(Gt.value)==="backlog"),St=Ze&&String(J.value)==="backlog",dt=Ze&&String(J.value)==="expired",Et=rt.backlog||[],Ht=fe==="collapse"&&Et.length===0?72:320,un=St?0:dt?nt?Ht+4:0:void 0,Zt=St?6:dt?5:void 0;return Ee||Te?null:t.jsx(rP,{id:String(J.value),title:J.label,color:J.color,icon:J.icon,tasks:Se,activeId:_,activeTaskId:At,totalCount:l[String(J.value)],onAddTask:()=>N?.(r,J.value),onTaskClick:S,commonCardProps:kt,collapseEmpty:fe==="collapse",compressed:Z,onHeaderPointerDown:Rt,isHeaderPanning:H,headerPanEnabled:re,stickyLeft:un,stickyZIndex:Zt,isPast:!!J.isPast,isSelected:!!J.isSelected,isWeekend:!!J.isWeekend,disableSorting:!1,scheduleDate:r==="schedule"?He.dates[String(J.value)]:void 0,onScheduleDaySelected:he},String(J.value))})})]}),bi.createPortal(t.jsx(Xg,{dropAnimation:vt,children:jt?(()=>{const{taskWorkstream:J,taskInitiative:Se}=ge(jt);return t.jsx(Gl,{task:jt,taskWorkstream:J,taskInitiative:Se,isOverlay:!0,...kt,isArchived:jt.isArchived,categories:z,compressed:Z,isRecentlyChanged:ie.has(jt.id)})})():null}),document.body)]})}function rP({id:e,title:n,color:r,icon:s,tasks:o,activeId:c=null,activeTaskId:i=null,totalCount:u,onAddTask:h,onTaskClick:v,commonCardProps:x,collapseEmpty:S,compressed:y,onHeaderPointerDown:k,isHeaderPanning:w=!1,headerPanEnabled:P=!1,stickyLeft:b,stickyZIndex:j,isPast:F=!1,isSelected:B=!1,isWeekend:se=!1,disableSorting:K=!1,scheduleDate:te,onScheduleDaySelected:N}){const{setNodeRef:fe}=Zl({id:e,data:{type:"Column"}}),$=S&&o.length===0,q=i?o.filter(z=>z.id!==i):o,de=typeof b=="number",ue=a.useRef(null),Y=z=>e==="expired"?`${iu}${z}`:z,E=z=>{if(!te||!N)return;const Z=z.target;Z&&(Z.closest('[data-task-card="true"]')||Z.closest(`.${m.kanbanCardWrapper}`)||N(te))};return t.jsxs("div",{ref:fe,className:`${m.kanbanColumn} ${$?m.kanbanColumnCollapsed:""} ${de?m.kanbanColumnSticky:""} ${F?m.kanbanColumnPast:""} ${B?m.kanbanColumnSelectedDay:""} ${se?m.kanbanColumnWeekend:""}`,style:de?{left:`${b}px`,zIndex:j??4}:void 0,onClick:E,children:[t.jsxs("div",{className:`${m.kanbanHeader} ${P?m.kanbanHeaderDraggable:""} ${w?m.kanbanHeaderPanning:""}`,style:{borderTopColor:ma(r)||"var(--color-purple)"},onPointerDown:k,children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",minWidth:0,overflow:"hidden"},children:[(()=>{const z=s&&Ai[s]?Ai[s]:_i,Z=ma(r)||"var(--color-purple)";return t.jsx(z,{size:16,style:{color:Z}})})(),!$&&t.jsx("span",{style:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:n})]}),t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0},children:[(!$||u>0)&&t.jsx("span",{className:m.kanbanCount,children:$?u:`${o.length} / ${u}`}),!x.readOnlyMode&&t.jsx("button",{className:"tf-control-icon tf-control-icon-compact",onClick:z=>{z.stopPropagation(),h()},title:`Add task to ${n}`,"aria-label":`Add task to ${n}`,"data-no-header-pan":"true",children:t.jsx(Ss,{size:14})})]})]}),t.jsx("div",{className:m.kanbanDroppable,children:t.jsx("div",{className:`${m.kanbanDroppableScroll} ${m.appScrollbar} tf-scrollbar`,ref:ue,children:K?q.map(z=>t.jsx("div",{className:m.kanbanCardWrapper,children:(()=>{const{taskWorkstream:Z,taskInitiative:me}=x.resolveTaskHierarchy?.(z)||{};return t.jsx(Gl,{task:z,taskWorkstream:Z,taskInitiative:me,onClick:v,...x,isArchived:z.isArchived,readOnlyMode:x.readOnlyMode||null,compressed:y,isRecentlyChanged:!1})})()},z.id)):t.jsx(Ef,{id:e,items:q.map(z=>Y(z.id)),strategy:Df,children:q.map(z=>t.jsx(sP,{sortableId:Y(z.id),task:z,onClick:v,commonCardProps:x,compressed:y,isRecentlyChanged:x.changedTaskIdSet?.has(z.id)},Y(z.id)))})})})]})}function sP({sortableId:e,task:n,onClick:r,commonCardProps:s,compressed:o,isRecentlyChanged:c=!1}){const i=!!s?.readOnlyMode,{attributes:u,listeners:h,setNodeRef:v,transform:x,transition:S,isDragging:y}=Mf({id:e,disabled:i,data:{type:"task-card",taskId:n.id}}),k={transform:qm.Transform.toString(x),transition:S,opacity:y?0:1,pointerEvents:y?"none":"auto"},w=s?.groupBy==="schedule",P=!w&&c;return t.jsx("div",{ref:v,style:k,...i?{}:u,...i?{}:h,className:`${m.kanbanCardWrapper} ${P?m.kanbanCardWrapperRaised:""}`,children:(()=>{const{taskWorkstream:b,taskInitiative:j}=s.resolveTaskHierarchy?.(n)||{};return t.jsx(Gl,{task:n,taskWorkstream:b,taskInitiative:j,onClick:r,...s,isArchived:n.isArchived,readOnlyMode:s?.readOnlyMode||null,compressed:o,isRecentlyChanged:w?!1:c})})()})}function oP(e,n,r){const s=String(n);if(e==="category"){const o=r.categories.find(c=>String(c.value)===s||c.label===s);return o?{category:o.label}:{}}if(e==="type")return{type:s};if(e==="priority")return Number.isFinite(Number(n))?{priority:Number(n)}:{};if(e==="complexity")return Number.isFinite(Number(n))?{complexity:Number(n)}:{};if(e==="approach"){const o=r.approaches.find(c=>String(c.value)===s||c.label===s);return o?{approach:o.value,taxonomyApproach:o.value}:{}}return e==="assignee"?s.trim().length>0?{assignee:s}:{}:e==="status"?s==="completed"?{status:"done"}:s==="task"||s==="on-hold"||s==="in-progress"||s==="review"||s==="done"||s==="cancelled"?{status:s}:{}:e==="schedule"?s==="backlog"||s==="expired"?{}:{scheduledDate:s}:{}}function iP(e){const n=e.runtimeMode==="local"&&e.isAuthenticated;return n?{actionable:n,status:e.workspaceSyncStatus,syncEnabledLabel:e.workspaceCloudSyncEnabled?"yes":"no",summary:e.workspaceSyncSummary,recommendedAction:e.workspaceSyncRecommendedAction,lastError:e.workspaceSyncError}:{actionable:n,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."}}const lf="/api/taskforce/account/profile-summary",cP=9e4,kc=new Map;function au(){return typeof performance<"u"?performance.now():Date.now()}function Uh(e,n){const r=String(e||"").trim();if(!r)return"";const s=String(n||"").trim();return s?`${r}::${s}`:r}function df(e,n){kc.delete(Uh(e,n?.identityKey))}async function lP(e,n){const r=String(e||"").trim(),s=Uh(e,n?.identityKey);if(!s||!r)return null;const o=n?.force===!0,c=Date.now(),i=kc.get(s);if(!o&&i?.payload!==void 0&&c-i.fetchedAt<cP)return On("account_profile_summary_cache_hit",{url:r,cacheKey:s,ageMs:c-i.fetchedAt}),i.payload;if(!o&&i?.promise)return On("account_profile_summary_request_reused",{url:r,cacheKey:s}),i.promise;const u=au(),h=(async()=>{const v=await fetch(r,{method:"GET",credentials:"include"});if(!v.ok)throw new Error(String((await v.json().catch(()=>({})))?.error||"Failed to load account summary."));const S=await v.json().catch(()=>({}))||null;return kc.set(s,{payload:S,fetchedAt:Date.now(),promise:null}),On("account_profile_summary_loaded",{url:r,cacheKey:s,durationMs:Math.round(au()-u),fromCache:!1}),S})().catch(v=>{const x=i?.payload??null;if(x)return kc.set(s,{payload:x,fetchedAt:i?.fetchedAt??Date.now(),promise:null}),On("account_profile_summary_failed",{url:r,cacheKey:s,durationMs:Math.round(au()-u),error:v instanceof Error?v.message:String(v||"Unknown error"),returnedStale:!0}),x;throw kc.delete(s),On("account_profile_summary_failed",{url:r,cacheKey:s,durationMs:Math.round(au()-u),error:v instanceof Error?v.message:String(v||"Unknown error"),returnedStale:!1}),v});return kc.set(s,{payload:i?.payload??null,fetchedAt:i?.fetchedAt??0,promise:h}),h}const Gm="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg2IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1IDg3LjY1ODkyMyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnMSIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcwogICAgIGlkPSJkZWZzMSIgLz48ZwogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMwLjk2ODgxLC04NzIuMDY2NjgpIj48ZwogICAgICAgaWQ9ImcxLTctMS02LTItMS05IgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aAogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIKICAgICAgICAgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiCiAgICAgICAgIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJUIiAvPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmVuZDtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6ZW5kO2ZpbGw6I2ZmOGEwMDtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZmOGEwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIgogICAgICAgICBkPSJtIDE1My41Mzg4OCwxNjQuNTI2NiBoIC0zLjUwNjc0IHYgLTEzLjYzNzMzIGggMTAuODEyNDUgdiAyLjcyNzQ2IGggLTcuMzA1NzEgdiAzLjIxNDUyIGggNS43NDcxNiB2IDIuNzI3NDYgaCAtNS43NDcxNiB6IgogICAgICAgICBpZD0idGV4dDEtOS04LTQtMy03LTItNyIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",zh="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iMzY2LjY3Nzg5IgogICBoZWlnaHQ9IjMzMS4zMDkzMyIKICAgdmlld0JveD0iMCAwIDk3LjAxNjg1OCA4Ny42NTg5MjMiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzEiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnMKICAgICBpZD0iZGVmczEiIC8+PGcKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcKICAgICAgIGlkPSJnMS03LTEtNi0yLTEiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCg0Ljk4MTU0NzksMCwwLDQuOTg1NTgyMiwtNjkwLjYwODc4LDQ2LjUyNDE0OCkiPjxwYXRoCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxOS40ODE5cHg7bGluZS1oZWlnaHQ6Mi41O2ZvbnQtZmFtaWx5OidSdXNzbyBPbmUnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J1J1c3NvIE9uZSBNZWRpdW0gSXRhbGljJzt0ZXh0LWFsaWduOmNlbnRlcjtsZXR0ZXItc3BhY2luZzowcHg7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTQ5LjQ0MDY2LDE2MS4xOTUwNSBoIC0zLjUwNjc0IHYgLTEwLjkwOTg2IGggLTQuMDkxMiB2IC0yLjcyNzQ3IGggMTEuNjg5MTQgdiAyLjcyNzQ3IGggLTQuMDkxMiB6IgogICAgICAgICBpZD0idGV4dDEtNC0zLTMtMS0wIgogICAgICAgICB0cmFuc2Zvcm09InNrZXdYKC0xNSkiCiAgICAgICAgIGFyaWEtbGFiZWw9IlQiIC8+PHBhdGgKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiCiAgICAgICAgIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiCiAgICAgICAgIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIKICAgICAgICAgdHJhbnNmb3JtPSJza2V3WCgtMTUpIgogICAgICAgICBhcmlhLWxhYmVsPSJGIiAvPjwvZz48L2c+PC9zdmc+Cg==",uf="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMDAwIiBoZWlnaHQ9IjEwMDAiPjxzdHlsZT4KICAgICNsaWdodC1pY29uIHsKICAgICAgZGlzcGxheTogaW5saW5lOwogICAgfQogICAgI2RhcmstaWNvbiB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewogICAgICAjbGlnaHQtaWNvbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAjZGFyay1pY29uIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICAgIH0KICAgIH0KICA8L3N0eWxlPjxnIGlkPSJsaWdodC1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODkyNTA0ODkwMzI3LDAsMCwyLjcyNzE4OTI1MDQ4OTAzMjcsMCw0OC4yMjgzNzgzMTg2MzgxOSkiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzNjYuNjc3ODkiIGhlaWdodD0iMzMxLjMwOTMzIiB2aWV3Qm94PSIwIDAgOTcuMDE2ODU4IDg3LjY1ODkyMyIgaWQ9InN2ZzEiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzIGlkPSJkZWZzMSI+PC9kZWZzPjxnIGlkPSJsYXllcjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4Ni4xOTU2MywtNzgwLjY1NTczKSI+PGcgaWQ9ImcxLTctMS02LTItMSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTY5MC42MDg3OCw0Ni41MjQxNDgpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC42MTM2MDQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIiBkPSJtIDE0OS40NDA2NiwxNjEuMTk1MDUgaCAtMy41MDY3NCB2IC0xMC45MDk4NiBoIC00LjA5MTIgdiAtMi43Mjc0NyBoIDExLjY4OTE0IHYgMi43Mjc0NyBoIC00LjA5MTIgeiIgaWQ9InRleHQxLTQtMy0zLTEtMCIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMiIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJGIj48L3BhdGg+PC9nPjwvZz48L3N2Zz48L2c+PC9nPjwvc3ZnPjwvZz48ZyBpZD0iZGFyay1pY29uIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMDAiIGhlaWdodD0iMTAwMCI+PGc+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMi43MjcxODk0NzM2MTU4ODcsMCwwLDIuNzI3MTg5NDczNjE1ODg3LDAsNDguMjI4MzQxMzU2NjMzOTA1KSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjM2Ni42Nzc4NiIgaGVpZ2h0PSIzMzEuMzA5MzMiIHZpZXdCb3g9IjAgMCA5Ny4wMTY4NSA4Ny42NTg5MjMiIGlkPSJzdmcxIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcyBpZD0iZGVmczEiPjwvZGVmcz48ZyBpZD0ibGF5ZXIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzAuOTY4ODEsLTg3Mi4wNjY2OCkiPjxnIGlkPSJnMS03LTEtNi0yLTEtOSIgdHJhbnNmb3JtPSJtYXRyaXgoNC45ODE1NDc5LDAsMCw0Ljk4NTU4MjIsLTYzNS4zODE5NiwxMzcuOTM1MTIpIj48cGF0aCBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTkuNDgxOXB4O2xpbmUtaGVpZ2h0OjIuNTtmb250LWZhbWlseTonUnVzc28gT25lJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidSdXNzbyBPbmUgTWVkaXVtIEl0YWxpYyc7dGV4dC1hbGlnbjpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6MHB4O3RleHQtYW5jaG9yOm1pZGRsZTtmaWxsOiNmZmZmZmY7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuNjEzNjA0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZCIgZD0ibSAxNDkuNDQwNjYsMTYxLjE5NTA1IGggLTMuNTA2NzQgdiAtMTAuOTA5ODYgaCAtNC4wOTEyIHYgLTIuNzI3NDcgaCAxMS42ODkxNCB2IDIuNzI3NDcgaCAtNC4wOTEyIHoiIGlkPSJ0ZXh0MS00LTMtMy0xLTAtMyIgdHJhbnNmb3JtPSJza2V3WCgtMTUpIiBhcmlhLWxhYmVsPSJUIj48L3BhdGg+PHBhdGggc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjE5LjQ4MTlweDtsaW5lLWhlaWdodDoyLjU7Zm9udC1mYW1pbHk6J1J1c3NvIE9uZSc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonUnVzc28gT25lIE1lZGl1bSBJdGFsaWMnO3RleHQtYWxpZ246ZW5kO2xldHRlci1zcGFjaW5nOjBweDt0ZXh0LWFuY2hvcjplbmQ7ZmlsbDojZmY4YTAwO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmY4YTAwO3N0cm9rZS13aWR0aDowLjYxMzYwNDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQiIGQ9Im0gMTUzLjUzODg4LDE2NC41MjY2IGggLTMuNTA2NzQgdiAtMTMuNjM3MzMgaCAxMC44MTI0NSB2IDIuNzI3NDYgaCAtNy4zMDU3MSB2IDMuMjE0NTIgaCA1Ljc0NzE2IHYgMi43Mjc0NiBoIC01Ljc0NzE2IHoiIGlkPSJ0ZXh0MS05LTgtNC0zLTctMi03IiB0cmFuc2Zvcm09InNrZXdYKC0xNSkiIGFyaWEtbGFiZWw9IkYiPjwvcGF0aD48L2c+PC9nPjwvc3ZnPjwvZz48L2c+PC9zdmc+PC9nPjwvc3ZnPg==";function dP({projectName:e,currentWorkspaceId:n,brandLabel:r="TaskForce",runtimeMode:s="local",theme:o=mu,meta:c,actions:i}){const u=$f(o)?zh:Gm,h=String(e||"").trim(),v=String(n||"").trim().toLowerCase(),x=!!(h&&(s!=="cloud"||v&&v!=="default"));return t.jsxs("div",{className:`${m.header} ${dn.standaloneHeader}`,children:[t.jsxs("div",{className:`${m.headerTitle} ${dn.standaloneTitle}`,children:[t.jsx("img",{src:u,alt:"Taskforce Logo",className:m.brandIcon,onError:S=>{const y=S.currentTarget;y.src!==uf?y.src=uf:y.style.display="none"}}),t.jsx("span",{children:r}),s==="cloud"&&t.jsx("span",{className:m.brandCloudSuffix,children:"HQ"}),x&&t.jsxs(t.Fragment,{children:[t.jsx("span",{className:m.projectSlash,children:"/"}),t.jsx("span",{className:m.projectName,title:n?`Workspace ID: ${n}`:void 0,children:h})]}),c]}),t.jsx("div",{className:m.headerActions,style:{gap:"16px"},children:i})]})}function uP({value:e,placeholder:n,active:r=!1,onChange:s,onClear:o,clearTitle:c}){return t.jsxs("div",{className:m.searchContainer,style:{width:"240px"},children:[t.jsx(Rg,{size:16,className:m.searchIcon}),t.jsx("input",{type:"text",className:`${m.searchInput} ${r?m.searchActive:""}`,placeholder:n,value:e,onChange:i=>s(i.target.value)}),e&&o&&t.jsx("button",{className:m.clearSearchBtn,onClick:o,title:c,children:t.jsx("span",{"aria-hidden":"true",children:"×"})})]})}function mf({label:e,value:n,options:r,onChange:s,trailingAction:o,width:c}){return t.jsxs("div",{className:m.groupByContainer,style:c?{width:c}:void 0,children:[t.jsx("span",{className:m.groupByLabel,children:e}),t.jsx("select",{className:`${m.select} ${m.groupBySelect}`,value:n,onChange:i=>s(i.target.value),children:r.map(i=>t.jsx("option",{value:i.value,children:i.label},String(i.value)))}),o]})}function Cm({actions:e}){return t.jsx(t.Fragment,{children:e.map(n=>t.jsx("button",{className:`tf-control-icon ${n.active?"tf-control-icon-active":""} ${n.className||""}`.trim(),onClick:n.onClick,title:n.title,disabled:n.disabled,"aria-disabled":n.ariaDisabled,children:n.icon},n.key))})}function pf(){return t.jsx("div",{className:m.headerDivider})}function mP({icon:e,label:n,onClick:r,disabled:s=!1}){return t.jsxs("button",{className:m.primaryUpdateBtn,onClick:r,disabled:s,children:[e," ",n]})}function dp({children:e}){return t.jsx("div",{className:m.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 pP(){return t.jsx(dp,{children:t.jsx("div",{"aria-hidden":"true",style:{minHeight:"32px",flex:1}})})}function fP({categoryFilterOptions:e,typeFilterOptions:n,priorities:r,taxonomyDisplayLabels:s,filterCategories:o,setFilterCategories:c,filterTypes:i,setFilterTypes:u,filterPriorities:h,setFilterPriorities:v,filterStatus:x,setFilterStatus:S,filterAssignees:y,setFilterAssignees:k,assigneeOptions:w,initiativeFilterOptions:P=[],selectedInitiativeId:b="",setSelectedInitiativeId:j=()=>{},workstreamFilterOptions:F=[],selectedWorkstreamId:B="",setSelectedWorkstreamId:se=()=>{},taskScope:K,setTaskScope:te,showArchive:N,setShowArchive:fe,fetchArchive:$,onDeleteAllDeleted:q,clearFilters:de}){return t.jsxs(t.Fragment,{children:[t.jsx(Ih,{}),t.jsx(wi,{label:s?.category||Le("standalone.categoryLabel"),options:e,selected:o,onChange:ue=>c(ue),variant:"value"}),t.jsx(wi,{label:s?.type||Le("standalone.typeLabel"),options:n,selected:i,onChange:ue=>u(ue),variant:"value"}),t.jsx(wi,{label:s?.priority||Le("standalone.priorityLabel"),options:r,selected:h,onChange:ue=>v(ue),variant:"value"}),t.jsx(wi,{label:Le("standalone.statusLabel"),options:oo,selected:x,onChange:ue=>S(ue),variant:"value"}),t.jsx(wi,{label:Le("standalone.assigneeLabel"),options:w,selected:y,onChange:ue=>k(ue),variant:"value"}),t.jsx("div",{className:m.headerDivider,style:{height:"16px",margin:"0 8px"}}),t.jsx(nf,{label:"Initiative",options:P,selected:b,onChange:j,allLabel:"All Initiatives",title:"Filter by initiative"}),t.jsx(nf,{label:"Workstream",options:F,selected:B,onChange:se,allLabel:"All Workstreams",title:"Filter by workstream"}),t.jsx(jh,{scope:K,onScopeChange:ue=>{te(ue),ue==="archived"?(fe(!0),$()):N&&fe(!1)},className:m.groupByContainer,labelClassName:m.groupByLabel}),t.jsx("div",{style:{flex:1}}),K==="deleted"&&q&&t.jsx(Rh,{onClick:q,className:`${m.bulkArchiveBtn} ${m.taskToolbarAction} ${m.bulkDeleteBtn}`,title:"Empty trash",children:"Empty Trash"}),t.jsx(Nh,{onClick:de})]})}function hP(e){return t.jsx(dp,{children:t.jsx(fP,{...e})})}const cu=[{value:"implementation-plan",label:"Plans"},{value:"review",label:"Reviews"},{value:"walkthrough",label:"Walkthroughs"},{value:"planning",label:"Planning"},{value:"other",label:"Other"}],lu=[{value:"attached",label:"Attached"},{value:"unattached",label:"Unattached"}];function gP({typeFilters:e,setTypeFilters:n,attachmentFilters:r,setAttachmentFilters:s,clearFilters:o}){return t.jsxs(dp,{children:[t.jsx(Ih,{}),t.jsx(wi,{label:"Attachment",options:lu,selected:r,onChange:c=>s(c),variant:"value"}),t.jsx(wi,{label:"Type",options:cu,selected:e,onChange:c=>n(c),variant:"value"}),t.jsx("div",{style:{flex:1}}),t.jsx(Nh,{onClick:o})]})}const yP="_drawerBody_126ut_1",kP="_paneShell_126ut_9",vP="_collapsedPaneShell_126ut_18",SP="_collapsedPaneHeader_126ut_27",wP="_collapsedPaneLabel_126ut_39",bP="_treePane_126ut_49",xP="_treePaneSplit_126ut_59",_P="_detailPane_126ut_63",CP="_paneHeader_126ut_73",AP="_paneHeaderLabel_126ut_87",TP="_paneContent_126ut_96",IP="_sectionTitle_126ut_105",NP="_sectionHeaderRow_126ut_113",jP="_sectionGroup_126ut_120",RP="_treeList_126ut_145",EP="_treeChildren_126ut_151",DP="_treeRow_126ut_159",PP="_treeRowDetailOpen_126ut_171",MP="_treeRowDropReady_126ut_177",LP="_treeRowDropActive_126ut_181",BP="_treeRowDropMode_126ut_187",WP="_treeChevron_126ut_187",FP="_rowButton_126ut_188",OP="_detailsButton_126ut_189",$P="_treeRowDragging_126ut_193",UP="_rowContent_126ut_234",zP="_rowTopRow_126ut_244",HP="_referenceBadgeButton_126ut_253",GP="_referenceBadgeStatic_126ut_259",VP="_rowTitle_126ut_280",ZP="_rowMeta_126ut_294",qP="_detailsButtonActive_126ut_322",KP="_unlinkZone_126ut_329",YP="_unlinkZoneActive_126ut_340",JP="_emptyPanel_126ut_346",XP="_emptyPanelTitle_126ut_355",QP="_emptyPanelText_126ut_361",eM="_sectionNote_126ut_367",tM="_detailHero_126ut_374",nM="_detailReferenceRow_126ut_381",aM="_detailTitle_126ut_386",rM="_detailDescription_126ut_393",sM="_detailActionRow_126ut_404",oM="_metricGrid_126ut_411",iM="_metricCard_126ut_418",cM="_editorCard_126ut_423",lM="_editorField_126ut_430",dM="_editorLabel_126ut_436",uM="_editorHint_126ut_442",mM="_editorSubActions_126ut_447",pM="_editorActions_126ut_452",fM="_metricValue_126ut_458",hM="_metricLabel_126ut_465",gM="_progressTrack_126ut_472",yM="_progressFill_126ut_480",kM="_listCard_126ut_486",vM="_sectionDropReady_126ut_495",SM="_sectionDropActive_126ut_500",wM="_sectionDropMode_126ut_506",bM="_attachReferenceRow_126ut_510",xM="_listItem_126ut_521",_M="_listItemButton_126ut_530",CM="_detailCardButton_126ut_539",AM="_listItemText_126ut_547",TM="_listItemTitle_126ut_554",IM="_listItemMeta_126ut_568",NM="_detailChildCard_126ut_573",jM="_detailChildCardTopRow_126ut_585",RM="_taskStatusIcon_126ut_594",we={drawerBody:yP,paneShell:kP,collapsedPaneShell:vP,collapsedPaneHeader:SP,collapsedPaneLabel:wP,treePane:bP,treePaneSplit:xP,detailPane:_P,paneHeader:CP,paneHeaderLabel:AP,paneContent:TP,sectionTitle:IP,sectionHeaderRow:NP,sectionGroup:jP,treeList:RP,treeChildren:EP,treeRow:DP,treeRowDetailOpen:PP,treeRowDropReady:MP,treeRowDropActive:LP,treeRowDropMode:BP,treeChevron:WP,rowButton:FP,detailsButton:OP,treeRowDragging:$P,rowContent:UP,rowTopRow:zP,referenceBadgeButton:HP,referenceBadgeStatic:GP,rowTitle:VP,rowMeta:ZP,detailsButtonActive:qP,unlinkZone:KP,unlinkZoneActive:YP,emptyPanel:JP,emptyPanelTitle:XP,emptyPanelText:QP,sectionNote:eM,detailHero:tM,detailReferenceRow:nM,detailTitle:aM,detailDescription:rM,detailActionRow:sM,metricGrid:oM,metricCard:iM,editorCard:cM,editorField:lM,editorLabel:dM,editorHint:uM,editorSubActions:mM,editorActions:pM,metricValue:fM,metricLabel:hM,progressTrack:gM,progressFill:yM,listCard:kM,sectionDropReady:vM,sectionDropActive:SM,sectionDropMode:wM,attachReferenceRow:bM,listItem:xM,listItemButton:_M,detailCardButton:CM,listItemText:AM,listItemTitle:TM,listItemMeta:IM,detailChildCard:NM,detailChildCardTopRow:jM,taskStatusIcon:RM},Ml=332,Rs=392,Am=56;function Hh(e,n,r,s,o){return(e?Am:Ml)+(n?r?Am:Rs:0)+(s?o?Am:Rs:0)}function Tm(e){return e?e.split(/[-_\s]+/g).filter(Boolean).map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" "):"No status"}function du({label:e,entityType:n,interactive:r=!0}){const[s,o]=ut.useState(!1),c=ut.useCallback(async i=>{i.stopPropagation();try{await navigator.clipboard.writeText(e),o(!0),window.setTimeout(()=>o(!1),1200)}catch{o(!1)}},[e]);return r?t.jsx(yh,{copied:s,label:e,onClick:c,title:`Copy ${n} reference`,ariaLabel:s?`Copied ${n} reference`:`Copy ${n} reference`,className:we.referenceBadgeButton,children:e}):t.jsx("span",{className:`${m.taskIdBadge} ${we.referenceBadgeStatic}`.trim(),children:t.jsx("span",{children:e})})}function Im({rowId:e,rowType:n,referenceLabel:r,title:s,meta:o,active:c,detailOpen:i=!1,canExpand:u=!1,expanded:h=!1,onToggleExpand:v,onToggleScope:x,onToggleDetails:S}){const{active:y}=_u(),k=String(y?.data?.current?.type||""),w=n==="workstream"&&k==="task-card",P=n==="initiative"&&k==="planning-workstream",b=n==="workstream"?"planning-workstream-target":"planning-initiative-target",{setNodeRef:j,isOver:F}=Zl({id:`${b}:${e}`,data:n==="workstream"?{type:b,workstreamId:e}:{type:b,initiativeId:e}}),B=n==="workstream",{attributes:se,listeners:K,setNodeRef:te,transform:N,isDragging:fe}=ay({id:`planning-workstream:${e}`,data:{type:"planning-workstream",workstreamId:e},disabled:!B}),$=B&&N?{transform:qm.Translate.toString(N)}:void 0,q=w||P;return t.jsxs("div",{ref:j,style:$,className:`${we.treeRow} ${i?we.treeRowDetailOpen:""} ${q?we.treeRowDropReady:""} ${F?we.treeRowDropActive:""} ${fe?we.treeRowDragging:""} ${q?we.treeRowDropMode:""}`,children:[u?t.jsx("button",{type:"button",className:we.treeChevron,onClick:v,title:h?"Collapse workstreams":"Expand workstreams",children:h?t.jsx(Tf,{size:15}):t.jsx(Eg,{size:15})}):t.jsx("span",{className:we.treeChevron,"aria-hidden":"true",children:t.jsx(Ac,{size:14})}),t.jsxs("div",{className:we.rowContent,children:[t.jsxs("div",{className:we.rowTopRow,children:[r?t.jsx(du,{label:r,entityType:n}):t.jsx("span",{"aria-hidden":"true"}),t.jsx("button",{type:"button",className:`${we.detailsButton} ${c?we.detailsButtonActive:""}`,onClick:x,title:c?"Clear board scope":"Scope board to this item",children:t.jsx(If,{size:14})})]}),t.jsxs("button",{type:"button",ref:B?te:void 0,className:we.rowButton,onClick:S,...B?se:{},...B?K:{},children:[t.jsx("span",{className:we.rowTitle,children:s}),t.jsx("span",{className:we.rowMeta,children:o})]})]})]})}function Nm({label:e,onExpand:n}){return t.jsx("div",{className:`${we.paneShell} ${we.collapsedPaneShell}`.trim(),children:t.jsxs("div",{className:we.collapsedPaneHeader,children:[t.jsx("button",{type:"button",className:"tf-control-icon",onClick:n,title:`Expand ${e}`,children:t.jsx(Ac,{size:16})}),t.jsx("span",{className:we.collapsedPaneLabel,children:e})]})})}function EM({targetType:e,label:n}){const{active:r}=_u(),s=String(r?.data?.current?.type||""),o=e==="task"&&s==="task-card"||e==="workstream"&&s==="planning-workstream",{setNodeRef:c,isOver:i}=Zl({id:e==="task"?"planning-task-unlink":"planning-workstream-unlink",data:{type:e==="task"?"planning-task-unlink":"planning-workstream-unlink"}});return o?t.jsx("div",{ref:c,className:`${we.unlinkZone} ${i?we.unlinkZoneActive:""}`,children:n}):null}function DM({initiatives:e,standaloneWorkstreams:n,activeInitiativeId:r,activeWorkstreamId:s,expandedInitiativeIds:o,detail:c,secondaryPane:i,onCreateInitiative:u,onCreateWorkstream:h,onToggleInitiative:v,onSelectInitiative:x,onSelectWorkstream:S,onOpenInitiativeDetails:y,onOpenWorkstreamDetails:k}){const{active:w}=_u(),b=String(w?.data?.current?.type||"")==="planning-workstream",{setNodeRef:j,isOver:F}=Zl({id:"planning-workstream-unlink",data:{type:"planning-workstream-unlink"}});return t.jsxs(t.Fragment,{children:[t.jsx(EM,{targetType:"task",label:"Drop here to make task standalone"}),t.jsxs("div",{className:we.sectionGroup,children:[t.jsxs("div",{className:we.sectionHeaderRow,children:[t.jsx("div",{className:we.sectionTitle,children:"Initiatives"}),t.jsx("button",{type:"button",className:"tf-control-icon",title:"Create initiative","aria-label":"Create initiative",onClick:u,children:t.jsx(Ss,{size:15})})]}),t.jsx("div",{className:we.treeList,children:e.length===0?t.jsxs("div",{className:we.emptyPanel,children:[t.jsx("div",{className:we.emptyPanelTitle,children:"No initiatives yet"}),t.jsxs("div",{className:we.emptyPanelText,children:["Initiatives give larger efforts a clear home without crowding the task board. Use the ",t.jsx("code",{children:"+"})," action above to create the first one."]})]}):e.map(B=>{const se=o.has(B.id),K=`${B.workstreamCount||0} workstreams • ${B.taskCount} tasks${B.isArchived?" • archived":""}`;return t.jsxs("div",{children:[t.jsx(Im,{rowId:B.id,rowType:"initiative",referenceLabel:vs(B),title:B.title,meta:K,active:r===B.id&&!s,detailOpen:c?.type==="initiative"&&c.item.id===B.id,canExpand:B.workstreams.length>0,expanded:se,onToggleExpand:()=>v(B.id),onToggleScope:()=>x(B.id),onToggleDetails:()=>{if(c?.type==="initiative"&&c.item.id===B.id){y("");return}y(B.id)}}),se&&B.workstreams.length>0&&t.jsx("div",{className:we.treeChildren,children:B.workstreams.map(te=>t.jsx(Im,{rowId:te.id,rowType:"workstream",referenceLabel:so(te),title:te.title,meta:`${te.taskCount} tasks • ${te.progressPercent}% complete${te.isArchived?" • archived":""}`,active:s===te.id,detailOpen:c?.type==="workstream"&&c.item.id===te.id||i?.kind==="detail"&&i.detail.item.id===te.id,onToggleScope:()=>S(te.id,B.id),onToggleDetails:()=>{if(i?.kind==="detail"&&i.detail.item.id===te.id){k("");return}if(c?.type==="workstream"&&c.item.id===te.id){k("");return}k(te.id)}},te.id))})]},B.id)})})]}),t.jsxs("div",{ref:j,className:`${we.sectionGroup} ${b?we.sectionDropReady:""} ${F?we.sectionDropActive:""}`.trim(),children:[t.jsxs("div",{className:we.sectionHeaderRow,children:[t.jsx("div",{className:we.sectionTitle,children:"Workstreams"}),t.jsx("button",{type:"button",className:"tf-control-icon",title:"Create workstream","aria-label":"Create workstream",onClick:h,children:t.jsx(Ss,{size:15})})]}),t.jsx("div",{className:we.treeList,children:n.length===0?t.jsxs("div",{className:we.emptyPanel,children:[t.jsx("div",{className:we.emptyPanelTitle,children:"No standalone workstreams yet"}),t.jsxs("div",{className:we.emptyPanelText,children:["Smaller projects can still use workstreams without needing initiative-level structure. Use the ",t.jsx("code",{children:"+"})," action above to add one."]})]}):n.map(B=>t.jsx(Im,{rowId:B.id,rowType:"workstream",referenceLabel:so(B),title:B.title,meta:`${B.taskCount} tasks • ${B.progressPercent}% complete${B.isArchived?" • archived":""}`,active:s===B.id,detailOpen:c?.type==="workstream"&&c.item.id===B.id||i?.kind==="detail"&&i.detail.item.id===B.id,onToggleScope:()=>S(B.id,null),onToggleDetails:()=>{if(c?.type==="workstream"&&c.item.id===B.id){k("");return}k(B.id)}},B.id))})]})]})}function ff({detail:e,onOpenNestedWorkstreamDetails:n,onEdit:r,onArchive:s,onUnarchive:o,onCreateTaskInWorkstream:c,onCreateWorkstreamInInitiative:i,onOpenTaskById:u,onAttachTaskToWorkstreamByReference:h,onAttachWorkstreamToInitiativeByReference:v}){const[x,S]=ut.useState(""),{active:y}=_u(),k=String(y?.data?.current?.type||""),w=e.type==="workstream"&&k==="task-card",P=e.type==="initiative"&&k==="planning-workstream",b=e.type==="initiative"?"planning-initiative-target":"planning-workstream-target",{setNodeRef:j,isOver:F}=Zl({id:`${b}:detail:${e.item.id}`,data:e.type==="initiative"?{type:b,initiativeId:e.item.id}:{type:b,workstreamId:e.item.id}}),B=e.type==="initiative"?"Workstreams":"Tasks",se=e.type==="initiative"?e.item.workstreams:[],K=e.type==="initiative"?"Initiative":"Workstream",te=e.type==="initiative"?vs(e.item):so(e.item);return ut.useEffect(()=>{S("")},[e.item.id,e.type]),t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:we.detailHero,children:[te?t.jsx("div",{className:we.detailReferenceRow,children:t.jsx(du,{label:te,entityType:e.type})}):null,t.jsx("h3",{className:we.detailTitle,children:e.item.title}),t.jsx("p",{className:we.detailDescription,children:e.item.description?.trim()||(e.type==="initiative"?"A top-level planning container that groups related workstreams.":"A coordination lane that groups related tasks and keeps execution organized.")}),t.jsx("div",{className:we.progressTrack,"aria-label":`${e.item.progressPercent}% complete`,children:t.jsx("div",{className:we.progressFill,style:{width:`${e.item.progressPercent}%`}})}),t.jsxs("div",{className:we.detailActionRow,children:[t.jsx("button",{type:"button",className:m.secondaryHeaderBtn,onClick:r,children:t.jsxs("span",{children:["Edit ",K]})}),e.item.isArchived?t.jsx("button",{type:"button",className:m.secondaryHeaderBtn,onClick:o,children:t.jsx("span",{children:"Unarchive"})}):t.jsx("button",{type:"button",className:m.secondaryHeaderBtn,onClick:s,children:t.jsx("span",{children:"Archive"})})]})]}),t.jsxs("div",{className:we.metricGrid,children:[t.jsxs("div",{className:we.metricCard,children:[t.jsx("span",{className:we.metricValue,children:e.item.taskCount}),t.jsx("span",{className:we.metricLabel,children:"Tasks in scope"})]}),t.jsxs("div",{className:we.metricCard,children:[t.jsx("span",{className:we.metricValue,children:e.item.completedTaskCount}),t.jsx("span",{className:we.metricLabel,children:"Done / terminal"})]}),t.jsxs("div",{className:we.metricCard,children:[t.jsx("span",{className:we.metricValue,children:e.item.ownerLabel||"Unassigned"}),t.jsx("span",{className:we.metricLabel,children:"Owner"})]}),t.jsxs("div",{className:we.metricCard,children:[t.jsx("span",{className:we.metricValue,children:(e.item.commentCount||0)+(e.item.attachmentCount||0)}),t.jsx("span",{className:we.metricLabel,children:"Context items"})]})]}),t.jsxs("div",{ref:j,className:`${we.listCard} ${w||P?we.sectionDropReady:""} ${F?we.sectionDropActive:""} ${w||P?we.sectionDropMode:""}`.trim(),children:[t.jsxs("div",{className:we.sectionHeaderRow,children:[t.jsx("div",{className:we.sectionTitle,children:B}),e.type==="initiative"?t.jsx("button",{type:"button",className:"tf-control-icon",title:"Create workstream in this initiative","aria-label":"Create workstream in this initiative",onClick:()=>i?.(e.item.id),children:t.jsx(Ss,{size:15})}):t.jsx("button",{type:"button",className:"tf-control-icon",title:"Create task in this workstream","aria-label":"Create task in this workstream",onClick:()=>c?.(e.item.id),children:t.jsx(Ss,{size:15})})]}),t.jsxs("div",{className:we.attachReferenceRow,children:[t.jsx("input",{type:"text",className:m.input,placeholder:e.type==="initiative"?"Paste workstream reference (e.g. WS-123)":"Paste task reference (e.g. T-123)",value:x,onChange:N=>S(N.target.value)}),t.jsx("button",{type:"button",className:m.secondaryHeaderBtn,onClick:()=>{const N=x.trim();N&&(e.type==="initiative"?v?.(e.item.id,N):h?.(e.item.id,N),S(""))},children:"Attach"})]}),e.type==="initiative"?se.length>0?se.map(N=>t.jsx("button",{type:"button",className:`${we.listItemButton} ${we.detailCardButton}`.trim(),onClick:()=>n?.(N.id),children:t.jsxs("div",{className:`${we.listItem} ${we.detailChildCard}`.trim(),children:[t.jsx("div",{className:we.detailChildCardTopRow,children:N.referenceNumber?t.jsx(du,{label:so(N),entityType:"workstream"}):t.jsx("span",{"aria-hidden":"true"})}),t.jsxs("div",{className:we.listItemText,children:[t.jsx("span",{className:we.listItemTitle,children:N.title}),t.jsxs("span",{className:we.listItemMeta,children:[N.taskCount," tasks • ",N.progressPercent,"% complete"]})]})]})},N.id)):t.jsxs("div",{className:we.emptyPanel,children:[t.jsx("div",{className:we.emptyPanelTitle,children:"No workstreams yet"}),t.jsx("div",{className:we.emptyPanelText,children:"Add the first workstream to break the initiative into clearer lanes of execution."})]}):e.item.tasks&&e.item.tasks.length>0?[...e.item.tasks].sort((N,fe)=>{const $=Wl(N.status).value==="done",q=Wl(fe.status).value==="done";return $===q?0:$?1:-1}).map(N=>{const fe=N.referenceNumber?`T-${N.referenceNumber}`:"",$=Wl(N.status),q=Ai[$.icon||"Square"],de=ma($.color)||"var(--text-secondary)";return t.jsx("button",{type:"button",className:`${we.listItemButton} ${we.detailCardButton}`.trim(),onClick:()=>u?.(N.id),children:t.jsxs("div",{className:`${we.listItem} ${we.detailChildCard}`.trim(),children:[t.jsxs("div",{className:we.detailChildCardTopRow,children:[fe?t.jsx(du,{label:fe,entityType:"task"}):t.jsx("span",{"aria-hidden":"true"}),t.jsx("span",{className:we.taskStatusIcon,style:{color:de},"aria-label":$.shortLabel||Tm(N.status),title:$.shortLabel||Tm(N.status),children:q?t.jsx(q,{size:18,strokeWidth:2.4}):null})]}),t.jsxs("div",{className:we.listItemText,children:[t.jsx("span",{className:we.listItemTitle,children:N.title}),t.jsx("span",{className:we.listItemMeta,children:Tm(N.status)})]})]})},N.id)}):t.jsxs("div",{className:we.sectionNote,children:["No tasks are linked to this workstream yet. Use the ",t.jsx("code",{children:"+"})," action above to add the first one."]})]}),t.jsxs("div",{className:we.listCard,children:[t.jsx("div",{className:we.sectionTitle,children:"Context"}),t.jsx("div",{className:we.sectionNote,children:"Comments, attachments, and planning notes can live here without pushing that context down into task cards."})]})]})}function hf({editor:e,draftTitle:n,draftDescription:r,draftOwner:s,draftInitiativeId:o,assigneeOptions:c,draftInitiativeSummary:i,onChangeDraftTitle:u,onChangeDraftDescription:h,onChangeDraftOwner:v,onChangeDraftInitiativeId:x,onCancel:S,onSubmit:y,onAssignInitiativeToWorkstream:k}){const w=e.entityType==="initiative"?"Initiative":"Workstream",P=e.mode==="create"?`Create ${w}`:`Save ${w}`;return t.jsx(t.Fragment,{children:t.jsxs("div",{className:we.editorCard,children:[t.jsxs("div",{className:we.editorField,children:[t.jsx("label",{className:we.editorLabel,children:"Title"}),t.jsx("input",{className:m.input,value:n,onChange:b=>u(b.target.value),placeholder:e.entityType==="initiative"?"Q3 Product Launch":"Content Production"})]}),t.jsxs("div",{className:we.editorField,children:[t.jsx("label",{className:we.editorLabel,children:"Description"}),t.jsx("textarea",{className:m.textarea,value:r,onChange:b=>h(b.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"&&t.jsxs("div",{className:we.editorField,children:[t.jsx("label",{className:we.editorLabel,children:"Initiative"}),i&&t.jsxs("div",{className:we.editorHint,children:["Current: ",i.title]}),t.jsxs("div",{className:m.pathInputGroup,children:[t.jsx("input",{type:"text",className:m.input,placeholder:"Paste initiative reference (e.g. IN-123)",value:o,onChange:b=>x(b.target.value)}),e.mode==="edit"&&t.jsx("button",{type:"button",className:m.secondaryHeaderBtn,onClick:()=>k?.(e.targetId),children:"Set Initiative"})]}),e.mode==="edit"&&t.jsx("div",{className:we.editorSubActions,children:t.jsx("button",{type:"button",className:m.secondaryHeaderBtn,onClick:()=>k?.(e.targetId,null),children:"Clear Initiative"})})]}),t.jsxs("div",{className:we.editorField,children:[t.jsx("label",{className:we.editorLabel,children:"Owner"}),t.jsxs("select",{className:`${m.select} ${m.groupBySelect}`,value:s,onChange:b=>v(b.target.value),children:[t.jsx("option",{value:"",children:"Unassigned"}),c.map(b=>t.jsx("option",{value:b.value,children:b.label},b.value))]})]}),t.jsxs("div",{className:we.editorActions,children:[t.jsx("button",{type:"button",className:m.secondaryHeaderBtn,onClick:S,children:"Cancel"}),t.jsx("button",{type:"button",className:m.primaryUpdateBtn,onClick:y,children:P})]})]})})}function PM({open:e,leftOffset:n=0,initiatives:r,standaloneWorkstreams:s,activeInitiativeId:o,activeWorkstreamId:c,expandedInitiativeIds:i,detail:u,editor:h,secondaryPane:v,assigneeOptions:x,draftInitiativeSummary:S,draftTitle:y,draftDescription:k,draftOwner:w,draftInitiativeId:P,onChangeDraftTitle:b,onChangeDraftDescription:j,onChangeDraftOwner:F,onChangeDraftInitiativeId:B,onCollapseTreePane:se,onExpandTreePane:K,onCollapsePrimaryPane:te,onExpandPrimaryPane:N,onCollapseSecondaryPane:fe,onExpandSecondaryPane:$,onBackFromSecondary:q,treeCollapsed:de,primaryCollapsed:ue,secondaryCollapsed:Y,onCancelEditor:E,onSubmitEditor:z,onCreateInitiative:Z,onCreateWorkstream:me,onToggleInitiative:G,onSelectInitiative:Ae,onSelectWorkstream:he,onOpenInitiativeDetails:Ce,onOpenWorkstreamDetails:le,onOpenNestedWorkstreamDetails:be,onEditInitiative:Ie,onEditWorkstream:Ne,onArchiveInitiative:Fe,onUnarchiveInitiative:D,onArchiveWorkstream:I,onUnarchiveWorkstream:p,onCreateTaskInWorkstream:A,onCreateWorkstreamInInitiative:_,onAssignInitiativeToWorkstream:M,onOpenTaskById:H,onAttachTaskToWorkstreamByReference:R,onAttachWorkstreamToInitiativeByReference:re}){const V=!!(u||h),ie=!!v,W=Hh(de,V,ue,ie,Y),Q=h?h.entityType==="initiative"?h.mode==="create"?"New Initiative":"Edit Initiative":h.mode==="create"?"New Workstream":"Edit Workstream":u?.type==="initiative"?"Initiative":"Workstream",ge=v?.kind==="editor"?v.editor.mode==="create"?"New Workstream":"Edit Workstream":"Workstream";return t.jsx("aside",{style:{position:"absolute",top:0,left:e?`${n}px`:`${n-W-24}px`,bottom:0,width:`${W}px`,minWidth:`${W}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:t.jsxs("div",{className:we.drawerBody,children:[de?t.jsx(Nm,{label:"Planning",onExpand:K}):t.jsxs("div",{className:`${we.paneShell} ${m.appScrollbar} tf-scrollbar ${we.treePane} ${V&&!ue?we.treePaneSplit:""}`.trim(),style:{flex:`0 0 ${Ml}px`,width:`${Ml}px`,minWidth:`${Ml}px`,maxWidth:`${Ml}px`},children:[t.jsxs("div",{className:we.paneHeader,children:[t.jsx("span",{className:we.paneHeaderLabel,children:"Planning"}),t.jsx("button",{type:"button",className:"tf-control-icon",onClick:se,children:t.jsx(xc,{size:16})})]}),t.jsx("div",{className:we.paneContent,children:t.jsx(DM,{initiatives:r,standaloneWorkstreams:s,activeInitiativeId:o,activeWorkstreamId:c,expandedInitiativeIds:i,detail:u,secondaryPane:v,onCreateInitiative:Z,onCreateWorkstream:me,onToggleInitiative:G,onSelectInitiative:Ae,onSelectWorkstream:he,onOpenInitiativeDetails:Ce,onOpenWorkstreamDetails:le})})]}),V&&(ue?t.jsx(Nm,{label:Q,onExpand:N}):t.jsxs("div",{className:`${we.paneShell} ${m.appScrollbar} tf-scrollbar ${we.detailPane}`.trim(),style:{flex:`0 0 ${Rs}px`,width:`${Rs}px`,minWidth:`${Rs}px`,maxWidth:`${Rs}px`},children:[t.jsxs("div",{className:we.paneHeader,children:[t.jsx("span",{className:we.paneHeaderLabel,children:Q}),t.jsx("button",{type:"button",className:"tf-control-icon",onClick:te,children:t.jsx(xc,{size:16})})]}),t.jsx("div",{className:we.paneContent,children:h?t.jsx(hf,{editor:h,draftTitle:y,draftDescription:k,draftOwner:w,draftInitiativeId:P,assigneeOptions:x,draftInitiativeSummary:S,onChangeDraftTitle:b,onChangeDraftDescription:j,onChangeDraftOwner:F,onChangeDraftInitiativeId:B,onCancel:E,onSubmit:z,onAssignInitiativeToWorkstream:M}):u?t.jsx(ff,{detail:u,onOpenNestedWorkstreamDetails:u.type==="initiative"?be:void 0,onCreateTaskInWorkstream:u.type==="workstream"?A:void 0,onCreateWorkstreamInInitiative:u.type==="initiative"?_:void 0,onOpenTaskById:u.type==="workstream"?H:void 0,onAttachTaskToWorkstreamByReference:u.type==="workstream"?R:void 0,onAttachWorkstreamToInitiativeByReference:u.type==="initiative"?re:void 0,onEdit:()=>u.type==="initiative"?Ie(u.item.id):Ne(u.item.id),onArchive:()=>u.type==="initiative"?Fe(u.item.id):I(u.item.id),onUnarchive:()=>u.type==="initiative"?D(u.item.id):p(u.item.id)}):null})]})),ie&&(Y?t.jsx(Nm,{label:ge,onExpand:$}):t.jsxs("div",{className:`${we.paneShell} ${m.appScrollbar} tf-scrollbar ${we.detailPane}`.trim(),style:{flex:`0 0 ${Rs}px`,width:`${Rs}px`,minWidth:`${Rs}px`,maxWidth:`${Rs}px`},children:[t.jsxs("div",{className:we.paneHeader,children:[t.jsx("span",{className:we.paneHeaderLabel,children:ge}),t.jsx("button",{type:"button",className:"tf-control-icon",onClick:fe,children:t.jsx(xc,{size:16})})]}),t.jsx("div",{className:we.paneContent,children:v?.kind==="editor"?t.jsx(hf,{editor:v.editor,draftTitle:y,draftDescription:k,draftOwner:w,draftInitiativeId:P,assigneeOptions:x,draftInitiativeSummary:S,onChangeDraftTitle:b,onChangeDraftDescription:j,onChangeDraftOwner:F,onChangeDraftInitiativeId:B,onCancel:q,onSubmit:z,onAssignInitiativeToWorkstream:M}):v?t.jsx(ff,{detail:v.detail,onCreateTaskInWorkstream:A,onOpenTaskById:H,onAttachTaskToWorkstreamByReference:R,onEdit:()=>Ne(v.detail.item.id),onArchive:()=>I(v.detail.item.id),onUnarchive:()=>p(v.detail.item.id)}):null})]}))]})})}const MM={"annotated_attachments.workspace_access":{enabled:!0,description:"Annotated Attachment workspace readiness gate.",owner:"taskforce",removalMilestone:"Annotated Attachment GA"},"documents.workspace_access":{enabled:!0,description:"Document Manager/editor workspace readiness gate.",owner:"taskforce",removalMilestone:"Document Manager GA"},"workflows.workspace_access":{enabled:!1,description:"Workflow workspace readiness gate.",owner:"taskforce",removalMilestone:"Workflow workspace GA"},"agents.workspace_access":{enabled:!0,description:"Agents workspace readiness gate.",owner:"taskforce",removalMilestone:"Agents workspace GA"},"initiatives.workspace_access":{enabled:!0,description:"Initiatives workspace readiness gate.",owner:"taskforce",removalMilestone:"Initiatives workspace GA"}},Fl="annotated_attachments.workspace_access",Ol="documents.workspace_access",bu="workflows.workspace_access",xu="agents.workspace_access",gf="initiatives.workspace_access",LM=Object.entries(MM).reduce((e,[n,r])=>(e[n]={key:n,enabled:!!r.enabled,description:String(r.description||""),owner:String(r.owner||""),removalMilestone:String(r.removalMilestone||"")},e),{});function BM(e){const n=String(e||"").trim();return n&&LM[n]||null}function WM(e){const n=BM(e);return n?n.enabled?{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 Rl(e){return WM(e.featureKey)}const FM=["tasks","docs","annotate","workflows","agents"];function OM(e){const n=e?.featureAccess||{},r={tasks:{id:"tasks",label:"Tasks",featureKey:null,enabled:!0,fallbackModuleId:"tasks"},docs:{id:"docs",label:"Documents",featureKey:Ol,enabled:n[Ol]?.allowed??!0,fallbackModuleId:"tasks"},annotate:{id:"annotate",label:"Image Notes",featureKey:Fl,enabled:n[Fl]?.allowed??!1,fallbackModuleId:"tasks"},workflows:{id:"workflows",label:"Workflows",featureKey:bu,enabled:n[bu]?.allowed??!1,fallbackModuleId:"tasks"},agents:{id:"agents",label:"Agents",featureKey:xu,enabled:n[xu]?.allowed??!1,fallbackModuleId:"tasks"}};return FM.map(s=>r[s])}function $M(e){switch(e){case"docs":return{mode:e,moduleId:"docs",layoutVariant:"docs-minimal",headerSections:[],filterBar:{kind:"document-filters"},primaryAction:null};case"annotate":return{mode:e,moduleId:"annotate",layoutVariant:"annotated-module",headerSections:[],filterBar:{kind:"empty"},primaryAction:null};case"workflows":return{mode:e,moduleId:"workflows",layoutVariant:"workflows-module",headerSections:[],filterBar:{kind:"empty"},primaryAction:null};case"agents":return{mode:e,moduleId:"agents",layoutVariant:"agents-module",headerSections:[],filterBar:{kind:"empty"},primaryAction:null};default:return{mode:"tasks",moduleId:"tasks",layoutVariant:"tasks-default",headerSections:["search","sort","divider-primary","grouping","divider-secondary","task-display-actions"],filterBar:{kind:"task-filters"},primaryAction:"add-task"}}}function yf(e,n){const r=n.find(s=>s.id===e);return r?r.enabled?r.id:r.fallbackModuleId:"tasks"}const UM="_weekLabel_vet2o_1",zM="_sectionTitle_vet2o_6",HM="_calendarHeader_vet2o_11",GM="_monthLabel_vet2o_18",VM="_weekdayGrid_vet2o_23",ZM="_weekdayLabel_vet2o_30",qM="_calendarGrid_vet2o_36",KM="_calendarDay_vet2o_42",YM="_calendarDayDot_vet2o_55",JM="_jumpRow_vet2o_67",XM="_displaySection_vet2o_73",QM="_toggleLabel_vet2o_79",eL="_expiredSummary_vet2o_87",tL="_actionButton_vet2o_95",xa={weekLabel:UM,sectionTitle:zM,calendarHeader:HM,monthLabel:GM,weekdayGrid:VM,weekdayLabel:ZM,calendarGrid:qM,calendarDay:KM,calendarDayDot:YM,jumpRow:JM,displaySection:XM,toggleLabel:QM,expiredSummary:eL,actionButton:tL},kf=["mon","tue","wed","thu","fri","sat","sun"],nL={mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat",sun:"Sun"};function bc(e){const n=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${n}-${r}-${s}`}function Ll(e){const n=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!n)return null;const r=new Date(Number(n[1]),Number(n[2])-1,Number(n[3]));return Number.isNaN(r.getTime())?null:r}function Vm(e,n){const r=e.getDay(),s=n==="sunday"?-r:r===0?-6:1-r,o=new Date(e);return o.setHours(0,0,0,0),o.setDate(o.getDate()+s),o}function aL(e,n){return n==="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 Gh(e,n){const r=new Date(e);return r.setDate(e.getDate()+n),r}function rL(e){const n=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!n)return null;const r=new Date(Date.UTC(Number(n[1]),Number(n[2])-1,Number(n[3]))),s=r.getUTCDay()||7;r.setUTCDate(r.getUTCDate()+4-s);const o=new Date(Date.UTC(r.getUTCFullYear(),0,1)),c=Math.ceil(((r.getTime()-o.getTime())/864e5+1)/7);return`${r.getUTCFullYear()}-W${String(c).padStart(2,"0")}`}const Zm=320;function sL({open:e,onClose:n,scheduleSelectedDate:r,setScheduleSelectedDate:s,scheduleCalendarMonth:o,setScheduleCalendarMonth:c,scheduleShowWeekends:i,setScheduleShowWeekends:u,scheduleShowBacklog:h,setScheduleShowBacklog:v,scheduleOnlyExpired:x,setScheduleOnlyExpired:S,expiredScheduledCount:y,overdueDueCount:k,expiredLeafCandidates:w,expiredRecoveryCandidates:P,onMoveExpiredToSelectedWeek:b,onMoveExpiredToBacklog:j,scheduleBulkBusy:F,globalWeekStartsOn:B,resolvedLocale:se,todayDateOnly:K,scheduleBaseTasks:te,scheduleWeekStart:N,scheduleWeekLabel:fe}){const $=ut.useMemo(()=>{const[E,z]=o.split("-"),Z=Number(E),me=Number(z);if(!Number.isInteger(Z)||!Number.isInteger(me)||me<1||me>12){const G=Ll(r)||new Date;return new Date(G.getFullYear(),G.getMonth(),1)}return new Date(Z,me-1,1)},[o,r]),q=ut.useMemo(()=>Cc($,{month:"long",year:"numeric"},se),[$,se]),de=ut.useMemo(()=>{const E=Vm($,B);return Array.from({length:42},(z,Z)=>Gh(E,Z))},[$,B]),ue=ut.useMemo(()=>{const E=new Map;for(const z of te){const Z=z.scheduledDate||"";if(!Z)continue;const G=!(z.status==="done"||z.status==="cancelled")&&Z<K,Ae=E.get(Z);Ae?(Ae.count+=1,G&&(Ae.hasExpired=!0)):E.set(Z,{count:1,hasExpired:G})}return E},[te,K]),Y=ut.useMemo(()=>B==="sunday"?["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]:["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],[B]);return t.jsxs("aside",{className:`${m.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:`${Zm}px`,minWidth:`${Zm}px`},children:[t.jsxs("div",{className:"tf-sidebar-header",children:[t.jsxs("div",{className:"tf-sidebar-title",children:[t.jsx(Dg,{size:16}),t.jsx("span",{children:"Schedule Controls"})]}),t.jsx("button",{type:"button",className:"tf-control-icon",onClick:n,title:"Hide Schedule Sidebar",children:t.jsx(Ac,{size:16})})]}),t.jsxs("div",{className:xa.weekLabel,children:["Week of ",fe]}),t.jsxs("div",{className:"tf-sidebar-section tf-surface-panel",children:[t.jsxs("div",{className:xa.calendarHeader,children:[t.jsx("button",{className:"tf-control-icon",onClick:()=>{const E=new Date($);E.setMonth($.getMonth()-1),c(`${E.getFullYear()}-${String(E.getMonth()+1).padStart(2,"0")}`)},title:"Previous month",children:t.jsx(xc,{size:14})}),t.jsx("div",{className:xa.monthLabel,children:q}),t.jsx("button",{className:"tf-control-icon",onClick:()=>{const E=new Date($);E.setMonth($.getMonth()+1),c(`${E.getFullYear()}-${String(E.getMonth()+1).padStart(2,"0")}`)},title:"Next month",children:t.jsx(Ac,{size:14})})]}),t.jsx("div",{className:xa.weekdayGrid,children:Y.map(E=>t.jsx("div",{className:xa.weekdayLabel,children:E},E))}),t.jsx("div",{className:xa.calendarGrid,children:de.map(E=>{const z=bc(E),Z=E.getMonth()!==$.getMonth(),me=Vm(E,B),G=bc(me)===bc(N),Ae=z===r,he=z===K,Ce=z<K,le=ue.get(z),be=!!le,Ie=!!le?.hasExpired;return t.jsxs("button",{onClick:()=>{s(z),c(`${E.getFullYear()}-${String(E.getMonth()+1).padStart(2,"0")}`)},className:xa.calendarDay,style:{"--calendar-day-border":Ae?"1px solid #2563eb":he?"1px solid rgba(245, 158, 11, 0.95)":"1px solid transparent","--calendar-day-background":Ae?"rgba(59,130,246,0.22)":he?"rgba(245,158,11,0.16)":G?"rgba(59,130,246,0.18)":"transparent","--calendar-day-color":Z?"var(--text-helper)":"var(--text-primary)","--calendar-day-font-weight":Ae||he?700:500,"--calendar-day-opacity":Ce?.42:1},title:`${he?`${z} (Today)`:z}`+(be?` • ${le?.count} scheduled`:"")+(Ie?" • includes expired":""),children:[E.getDate(),be&&t.jsx("span",{className:xa.calendarDayDot,style:{"--calendar-dot-background":Ie?"#ef4444":"#3b82f6","--calendar-dot-opacity":Z?.6:.95}})]},z)})}),t.jsx("div",{className:xa.jumpRow,children:t.jsx("button",{className:"tf-control-icon",onClick:()=>{const E=new Date;s(bc(E)),c(`${E.getFullYear()}-${String(E.getMonth()+1).padStart(2,"0")}`)},title:"Jump to current week",children:"Today"})})]}),t.jsxs("div",{className:`tf-sidebar-section tf-surface-panel ${xa.displaySection}`,children:[t.jsx("div",{className:xa.sectionTitle,children:"Display"}),t.jsxs("label",{className:xa.toggleLabel,children:[t.jsx("input",{type:"checkbox",checked:i,onChange:E=>u(E.target.checked)}),"Show weekends"]}),t.jsxs("label",{className:xa.toggleLabel,children:[t.jsx("input",{type:"checkbox",checked:h,onChange:E=>v(E.target.checked)}),"Show backlog"]}),t.jsxs("label",{className:xa.toggleLabel,children:[t.jsx("input",{type:"checkbox",checked:x,onChange:E=>S(E.target.checked)}),"Only expired/overdue"]})]}),y>0&&t.jsxs("div",{className:"tf-sidebar-section tf-surface-panel",children:[t.jsx("div",{className:xa.sectionTitle,children:"Expired Tasks"}),t.jsxs("div",{className:xa.expiredSummary,children:[t.jsxs("span",{children:[y," expired"]}),t.jsxs("span",{children:[k," overdue"]})]}),t.jsx("button",{className:`tf-control-icon ${xa.actionButton}`,onClick:b,disabled:F||w.length===0,title:"Move expired leaf tasks to the selected week while keeping weekday alignment",children:F?"Working...":"Schedule to selected week"}),t.jsx("button",{className:`tf-control-icon ${xa.actionButton}`,onClick:j,disabled:F||P.length===0,title:"Unschedule expired/overdue tasks back to backlog",children:F?"Working...":"Unschedule to backlog"})]})]})}function Vh(e,n){return e&&(n==="owner"||n==="admin")}function oL(e,n,r){return Vh(e,n)&&r==="team"}const iL=ut.lazy(()=>Oo(()=>import("./TaskSettings-ln0aF7xc.js"),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.TaskSettings}))),cL=ut.lazy(()=>Oo(()=>import("./AnnotatedAttachmentWorkspace-BG6P_GVW.js"),__vite__mapDeps([7,1,2,3,4,5,8])).then(e=>({default:e.AnnotatedAttachmentWorkspaceShell}))),lL=ut.lazy(()=>Oo(()=>import("./DocumentWorkspace-DRbDMwh8.js"),__vite__mapDeps([9,1,2,3,4,5,10])).then(e=>({default:e.DocumentWorkspaceShell}))),dL=ut.lazy(()=>Oo(()=>import("./WorkflowsModule-BcS4afRn.js"),__vite__mapDeps([11,1,2,3,4,5])).then(e=>({default:e.WorkflowsModule}))),uL=ut.lazy(()=>Oo(()=>import("./AgentsModule-N2MnQBZk.js"),__vite__mapDeps([12,1,2,3,4,5])).then(e=>({default:e.AgentsModule})));ut.lazy(()=>Oo(()=>import("./InitiativesModule-Dhm7M8e7.js"),__vite__mapDeps([13,1,2,3,4,5])).then(e=>({default:e.InitiativesModule})));const mL=ut.lazy(()=>Oo(()=>import("./PlansPage-Cq0zXj3I.js"),__vite__mapDeps([14,1,2,5,3,4,15])).then(e=>({default:e.PlansPage}))),pL="image/png,image/jpeg,image/webp,image/gif",fL=5*1024*1024,hL=e=>e;function Nc(e,n=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(),JSON.stringify(e.details||null),String(n)].join("|")}function gL(e,n,r=15){const s=new Map;for(const[o,c]of e.entries())s.set(Nc(c,o),c);for(const[o,c]of n.entries())s.set(Nc(c,o),c);return Array.from(s.values()).sort((o,c)=>String(c.occurredAt||"").localeCompare(String(o.occurredAt||""))).slice(0,Math.max(1,r))}function yL(e,n){if(e.length!==n.length)return!1;for(let r=0;r<e.length;r+=1)if(Nc(e[r],r)!==Nc(n[r],r))return!1;return!0}function kL(e){let n=0;for(const r of e){if(String(r.errorMessage||"").toLowerCase().includes("reference number mismatch")){n+=1;continue}if(String(r.status||"").toLowerCase()==="success")break}return n}function vL(e){const n=[];for(const r of e){if(String(r.errorMessage||"").toLowerCase().includes("reference number mismatch")){n.push(r);continue}if(String(r.status||"").toLowerCase()==="success")break}return n}function SL(e,n){const r=Au(e);if(r)return Pp(r).label.toUpperCase();for(const s of n){const o=String(s||"").trim();if(!o)continue;const c=Qm(o);if(c)return Pp(c).label.toUpperCase();let i=o.toLowerCase();try{i=new URL(o.includes("://")?o:`https://${o}`).hostname.toLowerCase()}catch{i=o.toLowerCase()}if(!(i.includes("localhost")||i.includes("127.0.0.1")||i.includes("::1")))return i.toUpperCase()}return"UNKNOWN"}function El(){return typeof performance<"u"?performance.now():Date.now()}function wL(e){const s=Lf(),o=Bf(),c=a.useMemo(()=>new URLSearchParams(o.search),[o.search]),i=String(c.get("screen")||"").trim().toLowerCase()==="plans",u=a.useCallback(d=>{const g=new URLSearchParams(o.search);g.set("screen","plans");for(const[T,ne]of Object.entries(d||{}))ne==null||String(ne).trim()===""?g.delete(T):g.set(T,String(ne));s(`/?${g.toString()}${o.hash||""}`)},[o.hash,o.search,s]),h=a.useCallback(()=>{const d=new URLSearchParams(o.search);d.delete("screen"),d.delete("gate"),d.delete("checkout"),d.delete("planId"),d.delete("planVersionId"),d.delete("interval");const g=d.toString();s(`${o.pathname==="/"?"/":o.pathname}${g?`?${g}`:""}${o.hash||""}`)},[o.hash,o.pathname,o.search,s]),{activeTab:v,setActiveTab:x,activeCategories:S,groupBy:y,setGroupBy:k,activeWorkspaceModule:w,setActiveWorkspaceModule:P,emptyColumnMode:b,setEmptyColumnMode:j,zenMode:F,setZenMode:B,filterStatus:se,setFilterStatus:K,tasks:te,handleEdit:N,handleSubmit:fe,resetForm:$,handleUpdateTask:q,editingTaskId:de,loading:ue,error:Y,title:E,setTitle:z,description:Z,setDescription:me,checklistItems:G,setChecklistItems:Ae,category:he,setCategory:Ce,type:le,setType:be,priority:Ie,setPriority:Ne,complexity:Fe,setComplexity:D,setStatus:I,approach:p,setApproach:A,assignee:_,setAssignee:M,scheduledDate:H,setScheduledDate:R,dueDate:re,setDueDate:V,workstreamInput:ie,setWorkstreamInput:W,manualComplexityEnabled:Q,checklistDropdownEnabled:ge,showTaskCardStatusLabel:Me,formTaxonomies:ye,setFormTaxonomies:Ue,comments:pt,newCommentText:Ye,setNewCommentText:bt,attachments:qe,setAttachments:Qe,setAttachmentsDirty:$e,descriptionFocused:He,setDescriptionFocused:ee,showMarkdownHelp:Be,setShowMarkdownHelp:l,showChecklist:rt,setShowChecklist:At,showComments:jt,setShowComments:It,handleAddComment:tt,handleSetWorkstreamForCurrentTask:xt,handleOpenTaskById:Ve,taxonomies:ct,activeTypes:ze,priorities:at,taxonomyDisplayLabels:Nt,approaches:Rt,copiedId:ot,handleCopyId:ke,handleToggleInProgress:ve,handleToggleComplete:Re,handleToggleReview:vt,handleToggleCancel:Oe,handleArchiveTask:kt,handleDelete:J,handleUnarchive:Se,handleRestoreDeletedTask:Ee,handlePermanentlyDeleteDeletedTask:Te,handleEmptyDeletedTasks:Ze,fetchTasks:nt,searchQuery:St,setSearchQuery:dt,filterCategories:Et,setFilterCategories:Ut,filterTypes:Ht,setFilterTypes:un,filterPriorities:Zt,setFilterPriorities:Gt,filterAssignees:ln,setFilterAssignees:Zn,assigneeOptions:nn,taskScope:Dt,setTaskScope:En,sortBy:Dn,setSortBy:mn,clearFilters:rn,settingsModel:ae,configLoaded:xe,currentTheme:We,setCurrentTheme:wt,pathSaved:ft,saveSettings:Bt,keyShortcut:Vt,setKeyShortcut:en,globalWeekStartsOn:Mt,locale:Ln,jsonBackupEnabled:qt,setJsonBackupEnabled:Da,mcpHostRoot:zt,setMcpHostRoot:yn,settingsSection:Cn,setSettingsSection:kn,runtimeMode:Ft,workspaceSwitchingEnabled:Bn,cloudAuthConfigured:Mn,authRequiredForApi:$n,authBlocked:_a,isAuthenticated:Tt,authUserId:Jt,authWorkspaceId:Pa,authUserEmail:In,authUserDisplayName:Ma,authUserAvatarUrl:gr,authSessionResolved:sa,realtimeSyncEnabled:Ur,realtimeSyncFlagSource:Ca,workspaceCloudSyncEnabled:tr,workspaceSyncPhase:Xn,workspaceSyncStatus:Qn,workspaceSyncSummary:ea,workspaceSyncRecommendedAction:Rr,workspaceSyncBusy:Un,workspaceSyncPendingChanges:ta,saveWorkspaceCloudSyncSettings:yr,pushNotice:gt,userGlobalSyncStatus:zn,workspaceLastSuccessfulSyncAt:Hn,workspaceLastPullAt:sn,workspaceLastPushAt:hn,workspaceLastErrorAt:an,userGlobalSyncError:qn,workspaceLastErrorMessage:La,retryWorkspaceCloudSync:na,resetWorkspaceSyncCursorAndPull:Sn,getWorkspaceSyncDiagnostics:kr,currentWorkspaceId:tn,currentWorkspaceRole:nr,availableWorkspaces:Xt,switchWorkspace:pn,updateCurrentUserProfile:Ba,resolveCloudAuthUrl:Wn=hL,logout:Wa,projectRoot:Fa,projectName:Ot,mcpScriptPath:vr,serverHostRoot:Oa,showFolderBrowser:Er,setShowFolderBrowser:zr,folders:$a,files:Ua,currentBrowsePath:pa,fetchFolders:Aa,browserTarget:ar,setBrowserTarget:Fn,handleSelectPath:Hr,handleAddPath:An,handleRemovePath:Sr,handleUpdateCategory:rr,handleRemoveCategory:sr,handleSaveCategory:oa,handleUpdateCategoryIcon:wr,handleUpdateCategoryColor:Ta,handleSaveType:Gr,handleRemoveType:br,handleUpdateTaxonomies:or,handleUpdatePriorities:Vr,pathValidation:Pn,exportEnvironment:ir,setExportEnvironment:Ia,exportWorkflowsPath:ia,setExportWorkflowsPath:fa,exportResult:za,exportingResource:De,availableWorkflows:_t,onExportWorkflows:on,fetchWorkflows:Nn,availableEnvironments:Na,initiativeTemplates:xr,fetchInitiativeTemplates:Ha,createInitiativeFromTemplate:Dr,uiNotice:ha,clearNotice:ga,taskReturnTrail:Kt,clearReturnToParentTask:cr,returnToPreviousTask:ws,tasksScrollRef:O,setTasksScrollPos:Je,commentsEndRef:$t,autoSaveState:Pt,unsavedModalOpen:Kn,setUnsavedModalOpen:Ga,pendingNavigation:Gn,handleNavigation:ja,currentTask:Va,currentTaskWorkstream:Zr,currentTaskInitiative:C,scheduleWarningPrompt:_e,confirmScheduleWarning:it,cancelScheduleWarning:Ct}=e,U=Ln||qf();a.useEffect(()=>{const d=String(Ot||"").trim();document.title=d?`Taskforce - ${d}`:"Taskforce"},[Ot]);const je=()=>{Ga(!1),Gn?(v==="add"&&$(),Gn()):(v==="add"&&$(),x("tasks"))},ca=async()=>{await fe({preventDefault:()=>{}}),Ga(!1),Gn&&Gn()},[wn,_r]=a.useState(!1),[Za,mo]=a.useState(!1),[qa,po]=a.useState(!0),[Cr,qr]=a.useState(!1),[bs,as]=a.useState(!0),[Ka,Rc]=a.useState(bc(new Date)),[Ec,Dc]=a.useState(()=>{const d=new Date;return`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,"0")}`}),[Ps,Ni]=a.useState(0),[la,ji]=a.useState(!1),[Ms,Pc]=a.useState(!1),[Ar,Ls]=a.useState(!1),[Bs,$o]=a.useState(!1),[fo,rs]=a.useState(!1),[Uo,lr]=a.useState(!1),[bn,Ya]=a.useState(""),[Tr,gn]=a.useState(""),[Mc,ss]=a.useState(new Set),[aa,Kr]=a.useState(null),[ho,ya]=a.useState(null),[dr,os]=a.useState(null),[Ws,Yr]=a.useState(null),[Fs,is]=a.useState(""),[Jr,Os]=a.useState(""),[Ri,xs]=a.useState(""),[Xr,Qr]=a.useState(""),[cs,Ir]=a.useState(()=>cu.map(d=>d.value)),[Qt,fn]=a.useState(()=>lu.map(d=>d.value)),[ls,zo]=a.useState(null),[Ho,Ei]=a.useState(null),[ka,_s]=a.useState(null),[vn,Go]=a.useState(null),[Yl,Jl]=a.useState(0),[$s,Iu]=a.useState({}),[Xl,Ql]=a.useState(!1),ed=a.useRef(""),Lc=a.useRef(null),Vo=a.useRef(null),Bc=a.useRef(new Set),go=a.useMemo(()=>{const d={},g=String(tn||"").trim();return Ft==="cloud"&&g&&g!=="default"&&(d["x-taskforce-workspace-id"]=g),d},[Ft,tn]),Zo=a.useMemo(()=>`${Ft}:${String(tn||"default").trim()||"default"}`,[Ft,tn]),Di=a.useMemo(()=>`taskforce:annotate-layout:${Zo}`,[Zo]),Wc=a.useMemo(()=>Ft==="cloud"?sa:xe,[sa,xe,Ft]);a.useEffect(()=>{Lc.current=ka},[ka]),a.useEffect(()=>{Vo.current=vn},[vn]);const Pi=a.useMemo(()=>({[Ol]:Rl({featureKey:Ol}),[Fl]:Rl({featureKey:Fl}),[bu]:Rl({featureKey:bu}),[xu]:Rl({featureKey:xu}),[gf]:Rl({featureKey:gf})}),[Ft]),Us=a.useMemo(()=>OM({featureAccess:Pi}),[Pi]),Yn=a.useMemo(()=>yf(w,Us),[w,Us]),qo=Pi[Ol]?.allowed??!1,Fc=Pi[Fl]?.allowed??!1,Mi="Documents is not available in this build yet.",td="Annotate is not available in this build yet.";a.useEffect(()=>{const d=g=>{const T=g,ne=T.detail?.fsPath,ce=String(T.detail?.assetId||"").trim()||null;if(!(!ne&&!ce)){if(T.preventDefault(),!qo){gt(Mi,"error");return}zo(ne||null),Ei(ce),P("docs")}};return window.addEventListener("taskforce:open-markdown-document",d),()=>{window.removeEventListener("taskforce:open-markdown-document",d)}},[qo,Mi,gt,P]),a.useEffect(()=>{Yn!==w&&P(Yn)},[w,Yn,P]),a.useEffect(()=>{Yn==="docs"&&qo||(zo(null),Ei(null))},[qo,Yn]),a.useEffect(()=>{if(!(typeof window>"u"))try{const d=window.sessionStorage.getItem(Di);if(!d)return;const g=JSON.parse(d);g?.annotatedTarget&&typeof g.annotatedTarget=="object"&&_s(g.annotatedTarget),typeof g?.annotatedSessionId=="string"&&Go(g.annotatedSessionId.trim()||null)}catch{}},[Di]),a.useEffect(()=>{if(ed.current===Zo)return;ed.current=Zo,Ql(!1);let d=!1;return(async()=>{try{const T=await fetch("/api/taskforce/ui-state?key=layout",{method:"GET",credentials:"include",headers:go});if(!T.ok)return;const ne=await T.json().catch(()=>({})),ce=ne?.state&&typeof ne.state=="object"?ne.state:null;if(!ce||d)return;if(typeof ce.scheduleShowWeekends=="boolean"&&mo(ce.scheduleShowWeekends),typeof ce.scheduleShowBacklog=="boolean"&&po(ce.scheduleShowBacklog),typeof ce.scheduleOnlyExpired=="boolean"&&qr(ce.scheduleOnlyExpired),typeof ce.scheduleSidebarOpen=="boolean"&&as(ce.scheduleSidebarOpen),typeof ce.scheduleSelectedDate=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(ce.scheduleSelectedDate)&&Rc(ce.scheduleSelectedDate),typeof ce.scheduleCalendarMonth=="string"&&/^\d{4}-\d{2}$/.test(ce.scheduleCalendarMonth)&&Dc(ce.scheduleCalendarMonth),typeof ce.scheduleScrollLeft=="number"&&Number.isFinite(ce.scheduleScrollLeft)&&ce.scheduleScrollLeft>=0&&Ni(ce.scheduleScrollLeft),typeof ce.showFilters=="boolean"&&ji(ce.showFilters),Array.isArray(ce.documentTypeFilters)&&Ir(ce.documentTypeFilters),Array.isArray(ce.documentAttachmentFilters)&&fn(ce.documentAttachmentFilters),typeof ce.planningDrawerOpen=="boolean"&&Ls(ce.planningDrawerOpen),typeof ce.planningTreeCollapsed=="boolean"&&$o(ce.planningTreeCollapsed),typeof ce.planningPrimaryCollapsed=="boolean"&&rs(ce.planningPrimaryCollapsed),typeof ce.planningSecondaryCollapsed=="boolean"&&lr(ce.planningSecondaryCollapsed),Array.isArray(ce.planningExpandedInitiativeIds)&&ss(new Set(ce.planningExpandedInitiativeIds.map(Lt=>String(Lt||"").trim()).filter(Boolean))),ce.planningDrawerDetail&&typeof ce.planningDrawerDetail=="object"&&(ce.planningDrawerDetail.type==="initiative"||ce.planningDrawerDetail.type==="workstream")&&typeof ce.planningDrawerDetail.id=="string"){const Lt=ce.planningDrawerDetail.id.trim();Kr(Lt?{type:ce.planningDrawerDetail.type,id:Lt}:null)}else ce.planningDrawerDetail===null&&Kr(null);typeof ce.planningNestedWorkstreamDetailId=="string"?ya(ce.planningNestedWorkstreamDetailId.trim()||null):ce.planningNestedWorkstreamDetailId===null&&ya(null);const st=ce.annotatedTarget;st&&typeof st=="object"&&(Lc.current||_s(st)),typeof ce.annotatedSessionId=="string"&&(Vo.current||Go(ce.annotatedSessionId.trim()||null))}catch{}finally{d||Ql(!0)}})(),()=>{d=!0}},[Zo,go]),a.useEffect(()=>{if(!Xl)return;const d=window.setTimeout(async()=>{try{await tp({stateKey:"layout",workspaceId:tn,headers:go,patch:{scheduleShowWeekends:Za,scheduleShowBacklog:qa,scheduleOnlyExpired:Cr,scheduleSidebarOpen:bs,scheduleSelectedDate:Ka,scheduleCalendarMonth:Ec,scheduleScrollLeft:Ps,showFilters:la,documentTypeFilters:cs,documentAttachmentFilters:Qt,planningDrawerOpen:Ar,planningTreeCollapsed:Bs,planningPrimaryCollapsed:fo,planningSecondaryCollapsed:Uo,planningExpandedInitiativeIds:Array.from(Mc),planningDrawerDetail:aa,planningNestedWorkstreamDetailId:ho,annotatedTarget:ka,annotatedSessionId:vn}})}catch{}},250);return()=>window.clearTimeout(d)},[Xl,Za,qa,Cr,bs,Ka,Ec,Ps,la,cs,Qt,Ar,Bs,fo,Uo,Mc,aa,ho,ka,vn,go]),a.useEffect(()=>{if(!(typeof window>"u"))try{window.sessionStorage.setItem(Di,JSON.stringify({annotatedTarget:ka,annotatedSessionId:vn}))}catch{}},[Di,vn,ka]),a.useEffect(()=>{y==="schedule"&&as(!0)},[y]);const{showArchive:ur,setShowArchive:nd,fetchArchive:ad,filteredArchive:rd}=e,Li=a.useMemo(()=>rd.map(d=>({...d,isArchived:!0})),[rd]),va=a.useMemo(()=>e.archivedTasks.map(d=>({...d,isArchived:!0})),[e.archivedTasks]),es=a.useMemo(()=>[...e.searchAgnosticTasks,...va],[va,e.searchAgnosticTasks]),Oc=a.useCallback(d=>{const g=String(d||"").trim();if(!g)return"";const T=es.find(ne=>ne.id===g);return Es(T)||""},[es]),$c=a.useCallback(d=>{const g=String(d||"").trim();if(!g)return"";const T=String($s[g]||"").trim();if(T)return T;for(const ne of es)for(const ce of ne.attachments||[]){if(!ce||typeof ce!="object"||String(ce.assetId||"").trim()!==g)continue;const st=wh({referenceNumber:typeof ce.referenceNumber=="number"?ce.referenceNumber:null,referenceLabel:String(ce.referenceLabel||"").trim()||null});if(st)return st}return""},[es,$s]);a.useEffect(()=>{const d=g=>{const T=g,ne=Xp(T.detail,es);if(ne){if(T.preventDefault(),!Fc){gt(td,"error");return}_s(ne),Go(null),Jl(ce=>ce+1),P("annotate")}};return window.addEventListener("taskforce:open-annotated-attachment",d),()=>{window.removeEventListener("taskforce:open-annotated-attachment",d)}},[es,Fc,td,gt,P]),a.useEffect(()=>{if(!ka)return;const d=Xp(ka,es);d&&(d.taskReferenceLabel===ka.taskReferenceLabel&&d.imageReferenceLabel===ka.imageReferenceLabel||_s(d))},[es,ka]),a.useEffect(()=>{const d=Lc.current,g=String(d?.assetId||"").trim();if(!g)return;const T=String($s[g]||"").trim();T&&T!==String(d?.imageReferenceLabel||"").trim()&&_s(ne=>!ne||String(ne.assetId||"").trim()!==g?ne:{...ne,imageReferenceLabel:T})},[$s,ka]),a.useEffect(()=>{if(!Wc)return;const g=String(ka?.assetId||"").trim();if(!g||Bc.current.has(g)||String($s[g]||"").trim())return;let T=!1;Bc.current.add(g);const ne=String(tn||"default").trim()||"default",ce=new URLSearchParams({workspaceId:ne});return(async()=>{try{const Lt=await fetch(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(g)}?${ce.toString()}`,{method:"GET",credentials:"include",headers:go});if(!Lt.ok)return;const Tn=await Lt.json().catch(()=>({})),cn=String(Tn?.target?.imageReferenceLabel||"").trim();if(!cn||T)return;Iu(ks=>ks[g]===cn?ks:{...ks,[g]:cn})}catch{}finally{Bc.current.delete(g)}})(),()=>{T=!0}},[Wc,$s,tn,ka,go]);const da=a.useMemo(()=>e.deletedTasks.map(d=>({...d.taskSnapshot,isDeleted:!0,deletedRecordId:d.id})),[e.deletedTasks]),ds=a.useMemo(()=>{const d=new Map;return e.deletedTasks.forEach(g=>{d.set(g.taskSnapshot.id,g)}),d},[e.deletedTasks]),yo=a.useMemo(()=>{const d=da,g=St.trim().toLowerCase(),T=S.every(cn=>Et.includes(cn.value)),ne=ze.every(cn=>Ht.includes(cn.value)),ce=new Set(Zt.map(cn=>String(cn))),st=at.every(cn=>ce.has(String(cn.value))),Lt=new Set(se.map(cn=>String(cn))),Tn=oo.every(cn=>Lt.has(String(cn.value)));return d.filter(cn=>{const ks=(Es(cn)||cn.id).toLowerCase(),Il=!g||cn.title.toLowerCase().includes(g)||String(cn.description||"").toLowerCase().includes(g)||cn.id.toLowerCase().includes(g)||ks.includes(g),lm=T||Et.includes(cn.category),Wt=ne||Ht.includes(cn.type||jr),Fr=st||ce.has(String(cn.priority)),no=Tn||Lt.has(String(cn.status)),Or=ln.length===0||ln.includes(cn.assignee||"unassigned");return Il&&lm&&Wt&&Fr&&no&&Or})},[S,ze,da,ln,Et,Zt,se,Ht,at,St]),ko=a.useMemo(()=>[...e.tasks,...va,...da],[va,da,e.tasks]),Uc=a.useMemo(()=>{const d=S.filter(T=>!T.disabled).map(T=>({value:T.value,label:T.label})),g=S.filter(T=>T.disabled&&ko.some(ne=>ne.category===T.value)).map(T=>({value:T.value,label:`${T.label} (Legacy)`}));return[...d,...g]},[S,ko]),zc=a.useMemo(()=>{const d=ze.filter(T=>T.status!=="retired").map(T=>({value:T.value,label:T.label})),g=ze.filter(T=>T.status==="retired"&&ko.some(ne=>(ne.type||jr)===T.value)).map(T=>({value:T.value,label:`${T.label} (Retired)`}));return[...d,...g]},[ze,ko]),zs=a.useMemo(()=>Dt==="archived"?Li:Dt==="deleted"?yo:ur?[...e.filteredTasks,...Li]:e.filteredTasks,[Li,yo,e.filteredTasks,ur,Dt]),Bi=a.useMemo(()=>Dt==="open"?e.tasks.filter(d=>!d.isArchived):zs,[zs,e.tasks,Dt]),sd=a.useMemo(()=>new Set(zs.map(d=>d.id)),[zs]),Wi=a.useMemo(()=>Dt==="archived"?va:Dt==="deleted"?da:ur?[...e.tasks,...va]:e.tasks,[va,da,e.tasks,ur,Dt]),Ko=a.useMemo(()=>{const d=new Map;for(const g of va)d.set(g.id,g);for(const g of da)d.set(g.id,g);for(const g of e.tasks)d.set(g.id,g);return Array.from(d.values())},[va,da,e.tasks]),Yo=a.useMemo(()=>{const d=new Map;return Ko.forEach(g=>d.set(g.id,g)),d},[Ko]),Fi=a.useMemo(()=>{const d=new Map;nn.forEach(ne=>{d.set(String(ne.value),ne.label)});const g=String(Jt||"").trim(),T=String(Ma||In||"").trim();return g&&T&&d.set(g,T),d},[nn,Ma,In,Jt]),ht=a.useMemo(()=>{const d=Dt==="archived"?va:Dt==="deleted"?da:e.tasks.filter(Wt=>!Wt.isArchived),g=Wt=>{const Fr=Wt.length,no=Wt.filter(Or=>Or.isArchived||Or.status==="done"||Or.status==="cancelled").length;return{progressPercent:Fr>0?Math.round(no/Fr*100):0,taskCount:Fr,completedTaskCount:no}},T=new Map,ne=new Map,ce=new Map,st=new Map,Lt=new Map,Tn=Wt=>{const Fr=d.filter(ba=>(ba.workstreamId||null)===Wt.id),no=Fr.map(ba=>({id:ba.id,referenceNumber:ba.referenceNumber??null,title:ba.title,status:ba.status||null})),Or={id:Wt.id,referenceNumber:Wt.referenceNumber??null,title:Wt.title,description:String(Wt.description||"").trim()||void 0,ownerLabel:Wt.ownerId?Fi.get(String(Wt.ownerId))||String(Wt.ownerId):null,...g(Fr),initiativeId:Wt.initiativeId||null,commentCount:Array.isArray(Wt.comments)?Wt.comments.length:0,attachmentCount:Array.isArray(Wt.attachments)?Wt.attachments.length:0,isArchived:!!Wt.isArchived,tasks:no};return T.set(Wt.id,Fr.map(ba=>ba.id)),Wt.initiativeId&&ne.set(Wt.id,Wt.initiativeId),st.set(Or.id,Or),Or},cn=e.workstreams.map(Tn),ks=e.initiatives.map(Wt=>{const Fr=cn.filter(ba=>(ba.initiativeId||null)===Wt.id),no=Fr.flatMap(ba=>T.get(ba.id)||[]).map(ba=>Yo.get(ba)).filter(ba=>!!ba),Or={id:Wt.id,referenceNumber:Wt.referenceNumber??null,title:Wt.title,description:String(Wt.description||"").trim()||void 0,ownerLabel:Wt.ownerId?Fi.get(String(Wt.ownerId))||String(Wt.ownerId):null,...g(no),workstreamCount:Fr.length,workstreams:Fr,commentCount:Array.isArray(Wt.comments)?Wt.comments.length:0,attachmentCount:Array.isArray(Wt.attachments)?Wt.attachments.length:0,isArchived:!!Wt.isArchived};return ce.set(Wt.id,no.map(ba=>ba.id)),Lt.set(Or.id,Or),Or}),Il=Dt==="deleted"?[]:ks.filter(Wt=>Dt==="archived"?!!Wt.isArchived:!Wt.isArchived),lm=cn.filter(Wt=>!Wt.initiativeId).filter(Wt=>Dt==="deleted"?!1:Dt==="archived"?!!Wt.isArchived:!Wt.isArchived);return{initiatives:Il,standaloneWorkstreams:lm,workstreamTaskIds:T,workstreamInitiativeIds:ne,initiativeTaskIds:ce,workstreamById:st,initiativeById:Lt}},[va,Fi,da,Yo,e.initiatives,e.tasks,e.workstreams,Dt]),Hc=a.useMemo(()=>ht.initiatives.map(d=>{const g=vs(d);return{value:d.id,label:g||d.title}}),[ht.initiatives]),Gc=a.useMemo(()=>{const g=(bn?ht.initiativeById.get(bn)?.workstreams||[]:ht.initiatives.flatMap(ne=>ne.workstreams)).map(ne=>{const ce=so(ne);return{value:ne.id,label:ce||ne.title}}),T=bn?[]:ht.standaloneWorkstreams.map(ne=>{const ce=so(ne);return{value:ne.id,label:ce||ne.title}});return[...g,...T]},[ht.initiativeById,ht.initiatives,ht.standaloneWorkstreams,bn]),us=a.useMemo(()=>Tr?new Set(ht.workstreamTaskIds.get(Tr)||[]):bn?new Set(ht.initiativeTaskIds.get(bn)||[]):null,[ht.initiativeTaskIds,ht.workstreamTaskIds,bn,Tr]),Vc=a.useMemo(()=>{if(!aa)return null;if(aa.type==="initiative"){const g=ht.initiativeById.get(aa.id);return g?{type:"initiative",item:g}:null}const d=ht.workstreamById.get(aa.id)||ht.standaloneWorkstreams.find(g=>g.id===aa.id);return d?{type:"workstream",item:d}:null},[aa,ht.initiativeById,ht.standaloneWorkstreams,ht.workstreamById]),Jo=a.useMemo(()=>{if(!ho)return null;const d=ht.workstreamById.get(ho)||ht.standaloneWorkstreams.find(g=>g.id===ho);return d?{type:"workstream",item:d}:null},[ho,ht.standaloneWorkstreams,ht.workstreamById]),Zc=a.useMemo(()=>Ws?{kind:"editor",editor:Ws}:Jo?{kind:"detail",detail:Jo}:null,[Jo,Ws]),qc=Hh(Bs,!!(Vc||dr),fo,!!Zc,Uo),od=a.useMemo(()=>{if(!Xr.trim())return null;const d=ht.initiativeById.get(Xr);return d||km(ht.initiatives,Xr)},[Xr,ht.initiativeById,ht.initiatives]);a.useEffect(()=>{bn&&!ht.initiativeById.has(bn)&&Ya(""),Tr&&!ht.workstreamById.has(Tr)&&gn("")},[ht.initiativeById,ht.workstreamById,bn,Tr]);const mr=a.useMemo(()=>y==="schedule"?Bi:zs,[y,zs,Bi]),Vn=a.useMemo(()=>{const d=new Date,g=d.getFullYear(),T=String(d.getMonth()+1).padStart(2,"0"),ne=String(d.getDate()).padStart(2,"0");return`${g}-${T}-${ne}`},[]),vo=a.useMemo(()=>y!=="schedule"||!Cr?mr:mr.filter(d=>{if(d.status==="done"||d.status==="cancelled")return!1;const T=!!d.scheduledDate&&d.scheduledDate<Vn,ne=!!d.dueDate&&d.dueDate<Vn;return T||ne}),[y,Cr,mr,Vn]),id=a.useMemo(()=>!us||us.size===0?vo:vo.filter(d=>us.has(d.id)),[vo,us]),Kc=a.useMemo(()=>!us||us.size===0?Wi:Wi.filter(d=>us.has(d.id)),[Wi,us]),Hs=a.useMemo(()=>y!=="schedule"?[]:mr.filter(d=>{if(d.status==="done"||d.status==="cancelled")return!1;const T=!!d.scheduledDate&&d.scheduledDate<Vn,ne=!!d.dueDate&&d.dueDate<Vn;return T||ne}),[y,mr,Vn]),cd=a.useMemo(()=>y!=="schedule"?0:mr.filter(d=>d.status==="done"||d.status==="cancelled"?!1:!!d.scheduledDate&&d.scheduledDate<Vn).length,[y,mr,Vn]),Yc=a.useMemo(()=>y!=="schedule"?0:mr.filter(d=>d.status==="done"||d.status==="cancelled"?!1:!!d.dueDate&&d.dueDate<Vn).length,[y,mr,Vn]),Pr=String(Jt||"").trim(),ld=a.useMemo(()=>!Pr||Pr==="anonymous"?0:te.filter(d=>d.status==="done"||d.status==="cancelled"?!1:String(d.assignee||"").trim()===Pr).length,[Pr,te]),dd=a.useMemo(()=>!Pr||Pr==="anonymous"?0:te.filter(d=>d.status==="done"||d.status==="cancelled"||String(d.assignee||"").trim()!==Pr?!1:!!d.dueDate&&d.dueDate<Vn).length,[Pr,te,Vn]),Oi=a.useMemo(()=>y!=="schedule"?[]:mr.filter(d=>d.status==="done"||d.status==="cancelled"?!1:!!d.scheduledDate&&d.scheduledDate<Vn),[y,mr,Vn]),So=Hs,[ms,Xo]=a.useState(!1),$i=()=>{ja(()=>{ws()||(v==="add"&&Kt.length>0&&cr(),Pc(!1),v==="add"&&$(),x("tasks"))})};a.useEffect(()=>{v!=="add"&&Pc(!1)},[v]);const Ui=a.useCallback((d,g)=>{if(d.status!==g){if(g==="in-progress"){ve(d);return}if(g==="review"){vt(d);return}if(g==="done"){Re(d);return}if(g==="cancelled"){Oe(d);return}q(d.id,{status:g,completedAt:null})}},[ve,vt,Re,Oe,q]),zi=a.useCallback((d,g)=>{$();const T=oP(d,g,{categories:S,approaches:Rt});T.category&&Ce(T.category),T.type&&be(T.type),typeof T.priority=="number"&&Ne(T.priority),typeof T.complexity=="number"&&D(T.complexity),T.approach&&A(T.approach);const ne=T.taxonomyApproach;typeof ne=="string"&&ne.length>0&&Ue(ce=>({...ce,approach:ne})),T.assignee&&M(T.assignee),T.status&&I(T.status),T.scheduledDate&&R(T.scheduledDate),x("add")},[$,S,Rt,Ce,be,Ne,D,I,A,M,R,Ue,x]);ut.useEffect(()=>{se&&!se.includes("done")&&K(d=>[...d,"done"])},[]);const[Jc,wo]=a.useState(!1),[ps,Ra]=a.useState(!1),[bo,Gs]=a.useState(!1),[Hi,Qo]=a.useState(!1),[Gi,Vi]=a.useState(!1),[Nu,Zi]=a.useState(!1),[Xc,Qc]=a.useState(null),[Cs,qi]=a.useState(!1),[Ki,Yi]=a.useState(!1),[ud,el]=a.useState(!1),[Sa,tl]=a.useState([]),[Ji,nl]=a.useState(!1),[al,md]=a.useState(null),rl=a.useRef(null),sl=a.useRef(null),[Xi,pd]=a.useState(!1),[fd,ol]=a.useState(""),[il,ei]=a.useState(!1),[ju,hd]=a.useState(!1),[Ru,ti]=a.useState("members"),[Qi,ec]=a.useState(null),[tc,ni]=a.useState("unknown"),[gd,ai]=a.useState(!1),[Eu,ua]=a.useState(null),[Ja,pr]=a.useState(null),[nc,ac]=a.useState(!1),[xo,cl]=a.useState([]),[ri,_o]=a.useState(null),[Vs,Co]=a.useState(""),[fs,si]=a.useState("member"),[oi,rc]=a.useState("read-write"),[sc,Zs]=a.useState(!1),[yd,Ao]=a.useState(null),[qs,Du]=a.useState(0),[Pu,kd]=a.useState(!1),[Mu,Lu]=a.useState([]),[vd,Bu]=a.useState(!1),[Wu,Fu]=a.useState(1),[wa,ii]=a.useState(null),[oc,Sd]=a.useState(!1),[wd,hs]=a.useState(null),[ci,xn]=a.useState(!1),[Ks,ts]=a.useState(null),[As,fr]=a.useState(!1),[Ou,Ys]=a.useState(null),[li,$u]=a.useState("month"),[ll,dl]=a.useState(""),[ul,Js]=a.useState(""),[hr,To]=a.useState(null),[Uu,bd]=a.useState(!1),[zu,ml]=a.useState(!1),[Hu,Mr]=a.useState(null),[Gu,Lr]=a.useState(null),pl=25,xd=a.useRef(null),di=a.useRef(null),ui=a.useRef(null),fl=a.useRef({billing:!1,teamManagement:!1}),hl=a.useRef(null);a.useEffect(()=>{hl.current=wa},[wa]),a.useEffect(()=>{if(!ps)return;const d=g=>{xd.current?.contains(g.target)||Ra(!1)};return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[ps]);const Vu=Ft==="cloud"&&Bn&&Tt,Io=Tt&&(Ft==="cloud"||Mn),ic=Ft==="local"&&Tt,_d=a.useCallback(async d=>{if(!ic)return;Qc(null),Zi(!0);const g=await yr({enabled:d});g.success||Qc(g.error||(d?"Failed to enable sync.":"Failed to disable sync.")),Zi(!1)},[ic,yr]),Cd=Nu,Ad=a.useMemo(()=>{const d=Xt.find(ne=>ne.id===tn),g=String(d?.name||"").trim();if(g)return g;if(Ft==="local"){const ne=String(Ot||"").trim();if(ne)return ne}return String(tn||"").trim()||"Workspace"},[Xt,tn,Ot,Ft]),mi=Vh(Io,Qi),No=oL(Io,Qi,tc),jo=String(Ma||"").trim(),Xa=String(gr||"").trim(),Ro=String(In||"").trim(),cc=jo||Ro,Td=cc.length>0,lc=Ro.length>0,Id=(cc||Ro||"").trim(),dc=Tt&&sa&&Id.length>0?Id.charAt(0).toUpperCase():"",Nd=Xa,jd=Tt&&sa&&Nd.length>0,Rd=String(ul||Xa).trim(),uc=String(wa?.planName||wa?.planId||"").trim(),Ed=uc.length>0,gs=String(wa?.workspaceId||Pa||tn||"").trim(),Dd=Ft==="cloud"?"CLOUD":"LOCAL",Pd=e.config?.apiBaseUrl||"",Md=a.useMemo(()=>SL(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]),gl=Mn&&!sa;a.useEffect(()=>{Hi&&(dl(jo),Js(Xa),To(null),Mr(null),Lr(null))},[Xa,jo,Hi]);const ys=a.useCallback(async d=>{const g=String(d||"").trim();if(!(!g||!Mn))try{const T=Ft==="local"?e.config?.cloudAuthBaseUrl||e.config?.apiBaseUrl||"":e.config?.apiBaseUrl||e.config?.cloudAuthBaseUrl||"";await hm("/api/taskforce/auth/profile/avatar/discard",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:g})},T)}catch{}},[Mn,e.config?.apiBaseUrl,e.config?.cloudAuthBaseUrl,Ft]),Ld=a.useCallback(()=>{const d=hr;Qo(!1),Mr(null),Lr(null),To(null),Js(Xa),d&&ys(d)},[Xa,ys,hr]),Bd=a.useCallback(async d=>{if(!(!d||!Mn)){if(!d.type.startsWith("image/")){Mr("Profile photo must be an image file."),Lr(null);return}if(d.size>fL){Mr("Profile photo must be 5 MB or smaller."),Lr(null);return}bd(!0),Mr(null),Lr(null);try{const g=Ft==="local"?e.config?.cloudAuthBaseUrl||e.config?.apiBaseUrl||"":e.config?.apiBaseUrl||e.config?.cloudAuthBaseUrl||"",T=await hm("/api/taskforce/auth/profile/avatar/init",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({originalName:d.name,mimeType:d.type,size:d.size})},g),ne=await T.json().catch(()=>({}));if(!T.ok||!ne?.success||typeof ne?.uploadUrl!="string"||typeof ne?.relativePath!="string")throw new Error(ne?.error||"Failed to start avatar upload.");if(!(await fetch(ne.uploadUrl,{method:String(ne.method||"PUT"),headers:ne.headers||{"Content-Type":d.type||"application/octet-stream"},body:d})).ok)throw new Error("Failed to upload avatar.");const st=await hm("/api/taskforce/auth/profile/avatar/finalize",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({draftId:ne.draftId,relativePath:ne.relativePath})},g),Lt=await st.json().catch(()=>({}));if(!st.ok||!Lt?.success||typeof Lt?.draftId!="string")throw new Error(Lt?.error||"Failed to finalize avatar upload.");const Tn=hr;To(Lt.draftId),Js(typeof Lt?.avatarUrl=="string"?Lt.avatarUrl:""),Lr("Profile photo ready to save."),Tn&&Tn!==Lt.draftId&&ys(Tn)}catch(g){Mr(g instanceof Error?g.message:"Failed to upload profile photo.")}finally{bd(!1),di.current&&(di.current.value="")}}},[Mn,ys,hr,e.config?.apiBaseUrl,e.config?.cloudAuthBaseUrl,Ft]),Wd=a.useCallback(()=>{if(!hr)return;const d=hr;To(null),Js(Xa),Lr(null),Mr(null),ys(d)},[Xa,ys,hr]),qu=a.useCallback(()=>{const d=hr;To(null),Js(""),Lr(Xa?"Profile photo will be removed when you save.":null),Mr(null),d&&ys(d)},[Xa,ys,hr]),Ku=a.useCallback(async()=>{const d=ll.trim();if(!d){Mr("Display name is required."),Lr(null);return}ml(!0),Mr(null),Lr(null);const g=await Ba({displayName:d,avatarDraftId:hr,clearAvatar:!hr&&!ul&&!!Xa});if(!g.success){Mr(g.error||"Failed to update profile."),ml(!1);return}Lr("Profile updated."),To(null),Js(""),ml(!1),Qo(!1)},[Xa,hr,ul,ll,Ba]),Nr=a.useCallback(()=>{const d={},g=String(gs||"").trim();g&&(d["x-taskforce-workspace-id"]=g);const T=Qi||nr;return(T==="owner"||T==="admin"||T==="member"||T==="read-only")&&(d["x-taskforce-workspace-role"]=T),d},[nr,gs,Qi]),Eo=a.useCallback(d=>{const g=Tt,T=Io;ui.current=El(),fl.current={billing:g,teamManagement:T},On("account_surface_opened",{surface:d,expectsBilling:g,expectsTeamManagement:T}),!g&&!T&&(On("account_surface_ready",{surface:d,durationMs:0,teamManagementVisible:!1,billingPlanId:null}),ui.current=null)},[Io,Tt]),Do=a.useCallback(d=>{const g=fl.current;if(g[d]=!1,g.billing||g.teamManagement)return;const T=ui.current;T!==null&&(On("account_surface_ready",{surface:bo?"account_hub":ps?"account_menu":"closed",durationMs:Math.round(El()-T),teamManagementVisible:No,billingPlanId:String(wa?.planId||"").trim()||null}),ui.current=null)},[wa?.planId,No,bo,ps]),Br=a.useCallback(async d=>{const g=Wn(lf);if(!Tt)return ii(null),hs(null),ec(null),ni("unknown"),ai(!1),ua(null),df(g,{identityKey:Jt}),Do("billing"),Do("teamManagement"),null;const T=El();Sd(!0),hs(null),ai(Io),ua(null);try{const ne=await lP(g,{identityKey:Jt,force:d?.force===!0}),ce=ne?.workspaceRole==="owner"||ne?.workspaceRole==="admin"||ne?.workspaceRole==="member"||ne?.workspaceRole==="read-only"?ne.workspaceRole:null,st=ne?.teamPlanMode==="team"||ne?.teamPlanMode==="personal"?ne.teamPlanMode:"unknown";return ii(ne),ec(ce),ni(st),ua(null),On("account_profile_summary_resolved",{durationMs:Math.round(El()-T),planId:String(ne?.planId||"").trim()||null,gate:String(ne?.gate||"").trim()||null,teamManagementAllowed:ne?.teamManagementAllowed===!0}),ne}catch(ne){const ce=ne instanceof Error?ne.message:"Failed to load account summary.",st=!!hl.current;return hs(ce),st?ua(null):(ec(null),ni("unknown"),ua(ce)),On("account_profile_summary_failed",{durationMs:Math.round(El()-T),error:ce,preservedSummary:st}),hl.current}finally{Sd(!1),ai(!1),Do("billing"),Do("teamManagement")}},[Jt,Io,Tt,Do,Wn]),Yu=a.useCallback(d=>{ii(d);const g=d?.workspaceRole==="owner"||d?.workspaceRole==="admin"||d?.workspaceRole==="member"||d?.workspaceRole==="read-only"?d.workspaceRole:null,T=d?.teamPlanMode==="team"||d?.teamPlanMode==="personal"?d.teamPlanMode:"unknown";ec(g),ni(T)},[]),pi=a.useMemo(()=>Hm(wa).allowReturnToApp,[wa]),Fd=a.useCallback(async()=>{const d=new URLSearchParams;d.set("screen","plans"),d.set("interval",li);const g=String(wa?.planId||"").trim(),T=String(wa?.planVersionId||"").trim();g&&d.set("planId",g),T&&d.set("planVersionId",T),s(`/?${d.toString()}`)},[wa?.planId,wa?.planVersionId,li,s]),Od=a.useCallback(async()=>{ts(null),Ys(null),xn(!0);try{const d=await fetch(Wn("/api/taskforce/billing/portal-session"),{method:"POST",credentials:"include"}),g=await d.json().catch(()=>({}));if(!d.ok){ts(String(g?.error||"Failed to create portal session."));return}const T=String(g?.url||"").trim();if(!T){ts("Portal session did not return a redirect URL.");return}window.location.assign(T)}catch{ts("Failed to open billing portal.")}finally{xn(!1)}},[Wn]),Ju=a.useCallback(async()=>{ts(null),Ys(null),xn(!0);try{const d=String(wa?.planVersionId||"").trim();if(!d){ts("No active plan version is linked to this account.");return}const g=await fetch(Wn("/api/taskforce/billing/subscription"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({planVersionId:d,interval:li})}),T=await g.json().catch(()=>({}));if(!g.ok){ts(String(T?.error||"Failed to update subscription interval."));return}Ys("Subscription updated."),df(Wn(lf),{identityKey:Jt}),await Br()}catch{ts("Failed to update subscription interval.")}finally{xn(!1)}},[wa?.planVersionId,Jt,li,Br,Wn]);a.useEffect(()=>{!Tt||!sa||Br()},[sa,Tt,Br]),a.useEffect(()=>{!bo&&!ps||Br()},[Br,bo,ps]);const fi=a.useCallback(async()=>{if(mi){ac(!0),pr(null);try{const d=await fetch("/api/taskforce/admin/users",{method:"GET",credentials:"include",headers:Nr()}),g=await d.json().catch(()=>({}));if(!d.ok){pr(g?.error||"Failed to load workspace users.");return}const T=Array.isArray(g?.users)?g.users:[],ne={owner:0,admin:1,member:2,"read-only":3},ce=T.map(st=>({userId:String(st?.userId||""),email:String(st?.email||""),displayName:typeof st?.displayName=="string"?st.displayName:null,role:st?.role==="owner"||st?.role==="admin"||st?.role==="member"||st?.role==="read-only"?st.role:"member",permissionMode:st?.permissionMode==="read-only"?"read-only":"read-write",status:String(st?.status||"active"),disabled:st?.disabled===!0}));ce.sort((st,Lt)=>{const Tn=(ne[st.role]??99)-(ne[Lt.role]??99);return Tn!==0?Tn:(st.displayName||st.email).localeCompare(Lt.displayName||Lt.email,void 0,{sensitivity:"base"})}),cl(ce)}catch{pr("Failed to load workspace users.")}finally{ac(!1)}}},[mi,Nr]),Xs=a.useCallback(async d=>{if(!mi)return;const g=Math.max(0,Math.floor(d));kd(!0),pr(null);try{const T=g*pl,ne=await fetch(`/api/taskforce/admin/workspace-audit-logs?limit=${pl}&offset=${T}`,{method:"GET",credentials:"include",headers:Nr()}),ce=await ne.json().catch(()=>({}));if(!ne.ok){pr(ce?.error||"Failed to load workspace audit log.");return}const st=Array.isArray(ce?.events)?ce.events:[];Lu(st.map(Tn=>({id:String(Tn?.id||""),action:String(Tn?.action||""),actorUserId:String(Tn?.actorUserId||""),actorRole:String(Tn?.actorRole||""),createdAt:String(Tn?.createdAt||Tn?.ts||"")}))),Du(g);const Lt=Math.max(1,Number(ce?.pages||1));Fu(Lt),Bu(g+1<Lt)}catch{pr("Failed to load workspace audit log.")}finally{kd(!1)}},[mi,Nr]),mc=a.useCallback(async()=>{await Promise.all([fi(),Xs(qs)])},[fi,Xs,qs]),pc=a.useCallback((d="login")=>{const g=`${o.pathname}${o.search}${o.hash}`,T=!g||g==="/login"||!g.startsWith("/")?"/":g;Ra(!1),Gs(!1),Vi(!1),s(`/login?mode=${d}&next=${encodeURIComponent(T)}`)},[o.hash,o.pathname,o.search,s]),Qs=a.useCallback(d=>{Ra(!1),ei(!1);const g=new URLSearchParams({step:"workspace"});d?.intent==="create-workspace"&&g.set("intent","create-workspace"),s(`/setup?${g.toString()}`,{replace:!0})},[s]),fc=a.useCallback(async()=>{if(As)return;if(!Tt){h();return}const d=await Br({force:!0});if(Hm(d).allowReturnToApp){fr(!0);try{const g=await e.continueAfterCommercialOnboarding();if(!g.success){gt(g.error||"Unable to finish onboarding.","error"),g.destination==="login"&&s("/login",{replace:!0});return}if(g.destination==="setup"){Qs();return}h()}finally{fr(!1)}}},[h,Tt,Br,s,Qs,As,e,gt]),yl=a.useCallback(async d=>{if(!(!d||Xi)){ol(""),pd(!0);try{const g=await pn(d);if(!g.success){if(g.code==="WORKSPACE_NOT_FOUND"||g.code==="WORKSPACE_ID_REQUIRED"){Qs();return}ol(g.error||"Failed to switch workspace.");return}await nt(!0),Ra(!1)}finally{pd(!1)}}},[pn,Xi,nt,Qs]),hc=a.useCallback(async()=>{Ra(!1),hd(!0),ti("members"),((await Br())?.teamManagementAllowed??No)&&(await fi(),await Xs(0))},[No,Br,Xs,fi]),eo=a.useCallback(async(d,g)=>{pr(null),_o(d);try{const T=await g(),ne=await T.json().catch(()=>({}));if(!T.ok){pr(ne?.error||"Team management action failed.");return}await mc()}catch{pr("Team management action failed.")}finally{_o(null)}},[mc]),kl=a.useCallback(async()=>{const d=Vs.trim();if(d){Zs(!0),pr(null),Ao(null);try{const g=await fetch("/api/taskforce/admin/users/invite",{method:"POST",headers:{"Content-Type":"application/json",...Nr()},credentials:"include",body:JSON.stringify({workspaceId:gs,email:d,role:fs,permissionMode:fs==="member"?oi:"read-write"})}),T=await g.json().catch(()=>({}));if(!g.ok){pr(T?.error||"Failed to send invite.");return}Co(""),T?.inviteEmailSent===!1?Ao(`Invite created, but email delivery failed${T?.inviteEmailError?`: ${String(T.inviteEmailError)}`:"."}`):Ao("Invite sent."),await mc()}catch{pr("Failed to send invite.")}finally{Zs(!1)}}},[tn,mc,Nr,Vs,oi,fs]),vl=a.useMemo(()=>St.trim().length>0,[St]),Xu=a.useMemo(()=>xo.filter(d=>d.status==="invited"),[xo]),Sl=a.useMemo(()=>{const d=Et.length!==S.length,g=Ht.length!==ze.length,T=Zt.length!==at.length,ne=se.length!==oo.length,ce=ln.length!==nn.length,st=bn.length>0,Lt=Tr.length>0;return d||g||T||ne||ce||st||Lt},[S.length,ze.length,nn.length,ln.length,Et.length,Zt.length,se.length,Ht.length,at.length,bn,Tr]),$d=a.useMemo(()=>cs.length!==cu.length||Qt.length!==lu.length,[Qt.length,cs.length]),Ud=Yn,Ts=a.useMemo(()=>$M(Ud),[Ud]),wl=a.useMemo(()=>{switch(Ts.filterBar.kind){case"task-filters":return Sl;case"document-filters":return $d;default:return!1}},[$d,Sl,Ts.filterBar.kind]),zd=vl||Sl,bl=Dt==="archived"?va.length:Dt==="deleted"?da.length:te.length,Qu=Dt==="archived"?Li.length:Dt==="deleted"?yo.length:e.filteredTasks.length,xl=zd?`${Qu}/${bl}`:`${bl}`,em=zd?`${Dt.charAt(0).toUpperCase()+Dt.slice(1)} tasks matching current filters`:`${Dt.charAt(0).toUpperCase()+Dt.slice(1)} tasks`,tm=Ft==="local"&&Tt,Po=a.useCallback(d=>{if(!d)return"Never";const g=new Date(d);return Number.isNaN(g.getTime())?"Never":g.toLocaleString()},[]),gc=a.useMemo(()=>Po(Hn),[Po,Hn]),_l=a.useMemo(()=>Po(sn),[Po,sn]),Cl=a.useMemo(()=>Po(hn),[Po,hn]),Hd=Xc||La||qn||"None",Is=a.useMemo(()=>iP({runtimeMode:Ft,isAuthenticated:Tt,workspaceSyncStatus:Qn,workspaceCloudSyncEnabled:tr,workspaceSyncSummary:ea,workspaceSyncRecommendedAction:Rr,workspaceSyncError:Hd}),[Ft,Tt,Qn,tr,ea,Rr,Hd]),Al=Is.lastError,[Gd,nm]=a.useState(Is.status),f=a.useMemo(()=>{if(Cs)return"Repairing";if(Un&&Xn==="error")return"Recovering";switch(Xn){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"}},[Xn,Cs]),L=kr(),X=a.useMemo(()=>[{label:"AI profile snapshot",value:`${L.aiProfileSnapshotCount} local profile${L.aiProfileSnapshotCount===1?"":"s"}`},{label:"AI profile raw response",value:`${L.aiProfileSnapshotRawCount} from route`},{label:"Last pushed AI profiles",value:`${L.lastPushedAiProfileCount} tracked`},{label:"AI watermark map",value:`${L.lastPushedAiProfileWatermarkCount} tracked`},{label:"Document snapshot",value:`${L.documentSnapshotCount} local doc${L.documentSnapshotCount===1?"":"s"}`},{label:"Asset snapshot",value:`${L.assetSnapshotCount} local asset${L.assetSnapshotCount===1?"":"s"}`},{label:"Queued full AI sync",value:L.forceFullAiProfilePushQueued?"Yes":"No"},{label:"AI snapshot last fetch",value:L.aiProfileSnapshotLastFetchAt?new Date(L.aiProfileSnapshotLastFetchAt).toLocaleString():"Never"},{label:"AI snapshot fetch error",value:L.aiProfileSnapshotLastFetchError||"None"},{label:"AI snapshot skip reason",value:L.aiProfileSnapshotLastSkipReason||"None"}],[L]),oe=Is.actionable&&Qn==="syncing"&&Xn==="active"&&ta===0;a.useEffect(()=>{if(!oe){nm(Is.status);return}const d=window.setTimeout(()=>{nm(Is.status)},1200);return()=>window.clearTimeout(d)},[Is.status,oe]);const Xe=a.useCallback(d=>{const g=typeof d.occurredAt=="string"&&d.occurredAt.trim().length>0?d.occurredAt:"unknown-time",T=typeof d.eventType=="string"&&d.eventType.trim().length>0?d.eventType.trim():"sync",ne=d.status==="error"?"failed":"succeeded",ce=Number(d.changeCount),st=Number.isFinite(ce)?` (${Math.max(0,Math.floor(ce))} change${Math.floor(ce)===1?"":"s"})`:"",Lt=Number(d.requestMs),Tn=Number.isFinite(Lt)?` in ${Math.max(0,Math.floor(Lt))}ms`:"",cn=Number(d.statusCode),ks=Number.isFinite(cn)?` [${Math.floor(cn)}]`:"",Il=typeof d.errorMessage=="string"&&d.errorMessage.trim().length>0?`: ${d.errorMessage.trim()}`:"";return`${g} ${T} ${ne}${st}${Tn}${ks}${Il}`},[]),Ge=a.useMemo(()=>Ji&&Sa.length===0?[{key:"loading",text:"Loading recent sync events...",tone:"muted"}]:al?[{key:"error",text:al,tone:"error"}]:Sa.length===0?[{key:"empty",text:"No recent sync events recorded.",tone:"muted"}]:Sa.map((d,g)=>({key:Nc(d,g),text:Xe(d),tone:d.status==="error"?"error":"default"})),[Xe,Sa,al,Ji]),et=a.useMemo(()=>kL(Sa),[Sa]),_n=a.useMemo(()=>vL(Sa),[Sa]),jn=a.useMemo(()=>_n.map((d,g)=>{const T=d.details&&typeof d.details=="object"?d.details:null,ne=String(T?.path||"").trim(),ce=String(T?.referenceLabel||"").trim(),st=String(T?.taskTitle||T?.existingTaskTitle||"").trim(),Lt=Number(T?.existingReferenceNumber),Tn=Number(T?.incomingReferenceNumber),cn=ne||st||ce||`Mismatch ${g+1}`,ks=Number.isFinite(Lt)||Number.isFinite(Tn)?`Existing ${Number.isFinite(Lt)?Lt:"?"} vs incoming ${Number.isFinite(Tn)?Tn:"?"}`:ce?`Both claimed ${ce}`:null;return{key:Nc(d,g),pathLabel:cn,refsLabel:ks}}),[_n]);a.useLayoutEffect(()=>{const d=sl.current,g=rl.current;if(!d||!g)return;const T=g.scrollHeight-d.scrollHeight;g.scrollTop=d.scrollTop+Math.max(0,T),sl.current=null},[Sa]);const ra=a.useCallback(async()=>{const d=await fetch(`/api/taskforce/sync/events?workspace_id=${encodeURIComponent(tn)}&limit=15`,{method:"GET",credentials:"include"});if(!d.ok)throw new Error(`Failed to load sync events (${d.status})`);const g=await d.json().catch(()=>({}));return Array.isArray(g?.events)?g.events.filter(T=>T&&typeof T=="object"):[]},[tn]);a.useEffect(()=>{if(!Gi)return;let d=!1;const g=Sa.length===0;return g&&nl(!0),ra().then(T=>{if(d)return;const ne=rl.current;sl.current=ne&&ne.scrollTop>8?{scrollTop:ne.scrollTop,scrollHeight:ne.scrollHeight}:null,tl(ce=>{const st=ce.length===0?T:gL(ce,T,15);return yL(ce,st)?ce:st}),md(null)}).catch(T=>{if(d)return;const ne=T instanceof Error&&T.message.trim().length>0?T.message.trim():"Unable to load recent sync events.";md(ne),g&&tl([])}).finally(()=>{d||g&&nl(!1)}),()=>{d=!0}},[Gi,ra,Sa.length,hn,sn,an,Qn]);const Jn=a.useMemo(()=>{switch(Gd){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"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)"}}},[Gd]),Wr=a.useCallback(async()=>{const d=["Taskforce Sync Manager",`Workspace ID: ${tn}`,`Status: ${Jn.label}`,`Summary: ${Is.summary}`,`Last successful sync: ${gc}`,`Last pull from cloud: ${_l}`,`Last push to cloud: ${Cl}`,`Last error at: ${L.lastErrorAt?new Date(L.lastErrorAt).toLocaleString():"Never"}`,`Pending local changes: ${ta}`,`Last error: ${Al}`,`Sync stage: ${f}`,`AI profile snapshot: ${L.aiProfileSnapshotCount}`,`AI profile raw response: ${L.aiProfileSnapshotRawCount}`,`Last pushed AI profiles tracked: ${L.lastPushedAiProfileCount}`,`AI profile watermarks tracked: ${L.lastPushedAiProfileWatermarkCount}`,`AI snapshot last fetch: ${L.aiProfileSnapshotLastFetchAt?new Date(L.aiProfileSnapshotLastFetchAt).toLocaleString():"Never"}`,`AI snapshot fetch error: ${L.aiProfileSnapshotLastFetchError||"None"}`,`AI snapshot skip reason: ${L.aiProfileSnapshotLastSkipReason||"None"}`,`Document snapshot: ${L.documentSnapshotCount}`,`Asset snapshot: ${L.assetSnapshotCount}`,`Reference mismatches detected: ${et}`,`Queued full AI sync: ${L.forceFullAiProfilePushQueued?"Yes":"No"}`];try{const T=(Sa.length>0?Sa:await ra()).map(ce=>Xe(ce)),ne=[...d,"","Recent sync events",...T.length>0?T:["No recent sync events recorded."]].join(`
|
|
6
|
-
`);await navigator.clipboard.writeText(ne),el(!0),window.setTimeout(()=>{el(!1)},1800),gt("Sync details copied to clipboard.","success")}catch{el(!1),gt("Failed to copy sync details.","error")}},[tn,Jn.label,Is.summary,gc,_l,Cl,L,ta,Al,f,et,gt,Sa,ra,Xe]),Ns=a.useCallback(async()=>{Yi(!1),qi(!0);try{await Sn()}finally{qi(!1)}},[Sn]),Vd=a.useCallback(()=>{if(!Cs){if(Un){Yi(!0);return}Ns()}},[Ns,Un,Cs]);a.useEffect(()=>{Ki&&(Un||Cs||Ns())},[Ns,Un,Cs,Ki]);const up=a.useMemo(()=>Ll(Ka)||new Date,[Ka]),hi=a.useMemo(()=>Vm(up,Mt),[up,Mt]),to=a.useMemo(()=>{const d={mon:"",tue:"",wed:"",thu:"",fri:"",sat:"",sun:""};return kf.forEach(g=>{const T=aL(g,Mt);d[g]=bc(Gh(hi,T))}),d},[hi,Mt]),mp=a.useCallback(d=>{const g=Ll(d);if(!g)return to.mon;const T=g.getDay();return to[T===1?"mon":T===2?"tue":T===3?"wed":T===4?"thu":T===5?"fri":T===6?Za?"sat":"fri":Za?"sun":"fri"]||to.mon},[to,Za]),qh=a.useCallback(async()=>{if(!(ms||So.length===0)){Xo(!0);try{for(const d of So){const g=d.scheduledDate||d.dueDate||Vn,T=mp(g);await q(d.id,{scheduledDate:T,scheduledWeekKey:rL(T),orderInDay:null})}await nt(!0)}finally{Xo(!1)}}},[ms,So,Vn,mp,q,nt]),Kh=a.useCallback(async()=>{if(!(ms||Hs.length===0)){Xo(!0);try{for(const d of Hs)await q(d.id,{scheduledDate:null,scheduledWeekKey:null,orderInDay:null});await nt(!0)}finally{Xo(!1)}}},[ms,Hs,q,nt]),Yh=a.useMemo(()=>Cc(hi,{month:"short",day:"numeric",year:"numeric"},U),[hi,U]),pp=a.useMemo(()=>{const T=(Za?Mt==="sunday"?["sun","mon","tue","wed","thu","fri","sat"]:kf:["mon","tue","wed","thu","fri"]).map(ce=>{const st=Ll(to[ce])||hi,Lt=to[ce],Tn=ce==="sat"||ce==="sun";return{value:ce,label:`${nL[ce]} ${Cc(st,{month:"short",day:"numeric"},U)}`,color:Tn?"#1e3a8a":"#3b82f6",icon:"Calendar",date:Lt,isPast:Lt<Vn,isSelected:Lt===Ka,isWeekend:Tn}}),ne=Oi.length>0;return[...qa?[{value:"backlog",label:"Backlog",color:"#64748b",icon:"Inbox"}]:[],...ne?[{value:"expired",label:"Expired",color:"#ef4444",icon:"AlertTriangle"}]:[],...T]},[Za,qa,to,hi,Oi.length,Vn,Ka,Mt,U]),fp=a.useMemo(()=>{switch(y){case"category":return S;case"type":return(ze||[]).map(d=>({...d,icon:d.icon||ku[d.value]?.icon,color:d.color||ku[d.value]?.color}));case"priority":return at;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"approach":return Rt;case"assignee":return nn.map(d=>({value:d.value,label:d.label,icon:d.icon==="HelpCircle"?"Circle":d.icon,color:d.color}));case"status":return[...oo.filter(d=>d.value!=="done"&&d.value!=="cancelled"),{value:"completed",label:"Completed",icon:Wl("done").icon,color:Wl("done").color}];case"schedule":return pp;default:return S}},[y,S,ze,at,Rt,nn,pp]),Jh=t.jsxs("div",{className:lt.accountMenuWrap,ref:xd,children:[t.jsx("button",{className:`tf-control-icon ${lt.avatarBtn}`,onClick:()=>{Ra(d=>{const g=!d;return g?Eo("account_menu"):(ui.current=null,fl.current={billing:!1,teamManagement:!1}),g})},title:Tt?"Account":"Account (Not signed in)","aria-label":Tt?"Account":"Account (Not signed in)","aria-haspopup":"menu","aria-expanded":ps,children:t.jsx("span",{className:lt.avatarBadge,"aria-hidden":"true",children:jd?t.jsx("img",{src:Nd,alt:"",className:lt.avatarImage}):dc||t.jsx(Lo,{size:14,className:lt.avatarIcon})})}),ps&&t.jsxs("div",{className:lt.accountMenu,role:"menu","aria-label":"Account menu",children:[t.jsxs("div",{className:lt.accountMenuSection,children:[t.jsx("div",{className:lt.accountMenuSectionLabel,children:"Account"}),t.jsx("div",{className:lt.accountMenuHint,children:gl?"Checking sign-in status...":Tt?t.jsx(t.Fragment,{children:Td?t.jsx(t.Fragment,{children:t.jsxs("span",{className:lt.accountIdentityBlock,children:[t.jsx("span",{className:lt.accountIdentityEmail,children:cc}),lc&&jo&&t.jsxs("span",{className:lt.accountIdentityMetaLine,children:[t.jsx("span",{className:lt.accountIdentityMetaLabel,children:"Email"}),t.jsx("span",{className:lt.accountIdentityMetaValue,children:Ro})]}),oc?t.jsxs("span",{className:lt.accountIdentityMetaLine,children:[t.jsx("span",{className:lt.accountIdentityMetaLabel,children:"Subscription"}),t.jsx("span",{className:lt.accountIdentityMetaValue,children:"Loading…"})]}):Ed?t.jsxs("button",{"aria-label":`Subscription ${uc}`,className:`${lt.accountIdentityMetaLine} ${lt.accountIdentityMetaAction}`,onClick:()=>{Ra(!1),u()},type:"button",children:[t.jsx("span",{className:lt.accountIdentityMetaLabel,children:"Subscription"}),t.jsx("span",{className:lt.accountIdentityMetaValue,children:uc})]}):wd?t.jsxs("span",{className:lt.accountIdentityMetaLine,children:[t.jsx("span",{className:lt.accountIdentityMetaLabel,children:"Subscription"}),t.jsx("span",{className:lt.accountIdentityMetaValue,children:"Unavailable"})]}):null,t.jsxs("span",{className:lt.accountIdentityMetaLine,children:[t.jsx("span",{className:lt.accountIdentityMetaLabel,children:"Runtime"}),t.jsx("span",{className:lt.accountIdentityMetaValue,children:Dd})]}),t.jsxs("span",{className:lt.accountIdentityMetaLine,children:[t.jsx("span",{className:lt.accountIdentityMetaLabel,children:"Environment"}),t.jsx("span",{className:lt.accountIdentityMetaValue,children:Md})]})]})}):"Signed in"}):"Not signed in"})]}),Vu&&t.jsxs("div",{className:lt.accountMenuSection,children:[t.jsx("div",{className:lt.accountMenuSectionLabel,children:"Workspaces (Owned + Invited)"}),Xt.length===0&&t.jsx("div",{className:lt.accountMenuHint,children:"No workspaces found for this account yet."}),Xt.map(d=>t.jsxs("button",{className:`${lt.accountMenuItem} ${d.id===tn?lt.accountMenuItemActive:""}`,onClick:()=>yl(d.id),role:"menuitem",disabled:Xi||d.id===tn,title:d.description||d.name,children:[t.jsx(_i,{size:15}),t.jsxs("span",{style:{display:"flex",flexDirection:"column",gap:"2px"},children:[t.jsx("span",{children:d.name}),t.jsx("span",{className:lt.accountMenuMeta,children:d.role})]})]},d.id)),t.jsxs("button",{className:lt.accountMenuItem,onClick:()=>{ol(""),ei(!0),Ra(!1)},role:"menuitem",disabled:Xi,children:[t.jsx(Ss,{size:15}),"Create Workspace"]}),fd&&t.jsx("div",{className:lt.accountMenuError,children:fd})]}),gd?t.jsx("div",{className:lt.accountMenuHint,children:"Resolving team management access..."}):No?t.jsxs("button",{className:lt.accountMenuItem,onClick:()=>{hc()},role:"menuitem",children:[t.jsx(Pg,{size:15}),"Team Management"]}):Eu?t.jsx("div",{className:lt.accountMenuHint,children:"Team Management unavailable right now."}):null,Tt&&t.jsxs("button",{className:lt.accountMenuItem,onClick:()=>{Ra(!1),Qo(!0)},role:"menuitem",children:[t.jsx(Lo,{size:15}),"Edit Profile"]}),t.jsxs("button",{className:lt.accountMenuItem,onClick:()=>{Ra(!1),u()},role:"menuitem",children:[t.jsx(Em,{size:15}),"Plans"]}),t.jsxs("button",{className:lt.accountMenuItem,onClick:()=>{Ra(!1),Eo("account_hub"),Gs(!0)},role:"menuitem",children:[t.jsx(Lo,{size:15}),"Account Hub"]}),t.jsxs("button",{className:lt.accountMenuItem,onClick:()=>{Ra(!1),wo(!0)},role:"menuitem",children:[t.jsx(xi,{size:15}),"Help & Tutorial"]}),Ft==="local"&&!Tt&&!gl&&t.jsxs("button",{className:lt.accountMenuItem,onClick:()=>{pc("login")},role:"menuitem",children:[t.jsx(Lo,{size:15}),"Sign In / Register"]}),Tt&&t.jsxs("button",{className:lt.accountMenuItem,onClick:async()=>{Ra(!1),await Wa(),Ft==="cloud"&&s("/login",{replace:!0})},role:"menuitem",children:[t.jsx(Mg,{size:15}),"Sign Out"]})]})]}),hp=a.useCallback(()=>{j(d=>d==="show"?"collapse":d==="collapse"?"hide":"show")},[j]),gp=a.useCallback(()=>{$(),P("tasks"),x("add")},[$,x,P]),Xh=a.useCallback(d=>{const g=e.workstreams.find(T=>T.id===d);$(),W(so(g)||d),P("tasks"),x("add")},[e.workstreams,$,x,P,W]),yp=a.useCallback(d=>{os(d),rs(!1),Yr(null),lr(!1),is(""),Os(""),xs("");const g=d.entityType==="workstream"&&bn&&ht.initiativeById.get(bn)||null;Qr(g?vs(g):""),ya(null)},[ht.initiativeById,bn]),kp=a.useCallback((d,g)=>{Yr(d),lr(!1),is(""),Os(""),xs("");const T=d.entityType==="workstream"&&((g?ht.initiativeById.get(g):null)||bn&&ht.initiativeById.get(bn))||null;Qr(T?vs(T):""),ya(null)},[ht.initiativeById,bn]),am=a.useCallback(()=>{os(null),is(""),Os(""),xs(""),Qr("")},[]),vp=a.useCallback(()=>{Yr(null),is(""),Os(""),xs(""),Qr("")},[]),Qh=a.useCallback(async()=>{const d=Ws||dr;if(!d)return;const g=!!Ws,T=Ri.trim()||null;try{if(d.entityType==="initiative")if(d.mode==="edit")await e.updateInitiative(d.targetId,{title:Fs.trim()||"Untitled Initiative",description:Jr.trim()||null,ownerId:T}),Kr({type:"initiative",id:d.targetId}),ya(null),gt("Initiative updated","success");else{const ne=await e.createInitiative({title:Fs.trim()||"Untitled Initiative",description:Jr.trim()||null,ownerId:T});Kr({type:"initiative",id:ne.id}),ya(null),gt("Initiative created","success")}else{const ne=Xr.trim(),ce=ne.length===0?null:km(ht.initiatives,ne);if(ne.length>0&&!ce){gt("Initiative not found by that reference.","error");return}const st={title:Fs.trim()||"Untitled Workstream",description:Jr.trim()||null,ownerId:T,initiativeId:ce?.id||null};if(d.mode==="edit")await e.updateWorkstream(d.targetId,st),g?ya(d.targetId):(Kr({type:"workstream",id:d.targetId}),ya(null)),gt("Workstream updated","success");else{const Lt=await e.createWorkstream(st);g?ya(Lt.id):(Kr({type:"workstream",id:Lt.id}),ya(null)),gt("Workstream created","success")}}g?vp():am()}catch(ne){gt(ne instanceof Error?ne.message:"Failed to save planning item.","error")}},[am,vp,Jr,Xr,Ri,Fs,dr,Ws,ht.initiatives,e,gt]),eg=a.useCallback(d=>{ss(g=>{const T=new Set(g);return T.has(d)?T.delete(d):T.add(d),T})},[]),tg=a.useCallback(d=>{Ya(g=>g===d?"":d),gn("")},[]),ng=a.useCallback((d,g)=>{gn(T=>{const ne=T===d?"":d;return Ya(ne&&g||""),ne})},[]),ag=a.useCallback(d=>{os(null),Yr(null),rs(!1),lr(!1),Kr(d?{type:"initiative",id:d}:null),ya(null)},[]),rg=a.useCallback(d=>{os(null),Yr(null),rs(!1),lr(!1),Kr(d?{type:"workstream",id:d}:null),ya(null)},[]),sg=a.useCallback(d=>{Yr(null),lr(!1),ya(d)},[]),rm=a.useMemo(()=>{const d=new Map;return nn.forEach(g=>{d.set(g.label,String(g.value))}),d},[nn]),sm=a.useCallback((d,g)=>{if(d==="workstream"&&g){kp({mode:"create",entityType:"workstream"},g);return}if(yp({mode:"create",entityType:d}),d==="workstream"){const T=(g?ht.initiativeById.get(g):null)||(bn?ht.initiativeById.get(bn):null)||null;Qr(T?vs(T):"")}},[yp,kp,ht.initiativeById,bn]),Sp=a.useCallback((d,g)=>{if(d==="initiative"){const T=ht.initiativeById.get(g);if(!T)return;os({mode:"edit",entityType:"initiative",targetId:g}),is(T.title),Os(T.description||""),xs(T.ownerLabel&&rm.get(T.ownerLabel)||""),Qr("")}else{const T=ht.workstreamById.get(g)||ht.standaloneWorkstreams.find(ce=>ce.id===g);if(!T)return;os({mode:"edit",entityType:"workstream",targetId:g}),is(T.title),Os(T.description||""),xs(T.ownerLabel&&rm.get(T.ownerLabel)||"");const ne=T.initiativeId&&ht.initiativeById.get(T.initiativeId)||null;Qr(ne?vs(ne):"")}ya(null)},[rm,ht.initiativeById,ht.standaloneWorkstreams,ht.workstreamById]),Zd=a.useCallback(async(d,g)=>{const T=e.workstreams.find(Lt=>Lt.id===d);if(!T){gt("Workstream not found.","error");return}const ne=typeof g=="string"?g.trim():g===null?"":Xr.trim(),ce=ne.length===0?null:km(ht.initiatives,ne);if(ne.length>0&&!ce){gt("Initiative not found by that reference.","error");return}const st=ce?.id||null;if((T.initiativeId||null)===st){gt(st?"Workstream already belongs to that initiative.":"Workstream is already standalone.","info");return}try{await e.updateWorkstream(d,{initiativeId:st}),Qr(ce?vs(ce):""),gt(st?"Initiative set":"Initiative removed","success")}catch{gt("Failed to set initiative.","error")}},[Xr,ht.initiatives,e,gt]),om=a.useCallback(async(d,g)=>{const T=Yo.get(d);if(!T){gt("Task not found.","error");return}const ne=g||null;if(ht.initiativeById.has(d)||ht.workstreamById.has(d)){gt("Only execution tasks can be moved into workstreams.","error");return}if(ne&&!ht.workstreamById.has(ne)){gt("Workstream not found.","error");return}if((T.workstreamId||null)===ne){gt(ne?"Task already belongs to that workstream.":"Task is already standalone.","info");return}try{const ce=await fetch(`/api/taskforce/task/${d}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({workstreamId:ne})});if(!ce.ok){const st=await ce.json().catch(()=>({}));gt(st?.error||"Failed to set workstream.","error");return}await ce.json().catch(()=>null),await nt(!0),gt(ne?"Workstream set":"Workstream removed","success")}catch{gt("Failed to set workstream.","error")}},[nt,Yo,ht.initiativeById,ht.workstreamById,gt]),og=a.useCallback(async(d,g)=>{const T=g.trim();if(!T){gt("Enter a task reference.","error");return}const ne=zf(T),ce=Ko.find(st=>st.id===T||Es(st)===T||ne!==null&&st.referenceNumber===ne);if(!ce){gt("Task not found by that reference.","error");return}await om(ce.id,d)},[om,Ko,gt]),ig=a.useCallback(async(d,g)=>{const T=g.trim();if(!T){gt("Enter a workstream reference.","error");return}const ne=ht.initiativeById.get(d);if(!ne){gt("Initiative not found.","error");return}const ce=mh(T),st=e.workstreams.find(Lt=>Lt.id===T||so(Lt)===T||ce!==null&&Lt.referenceNumber===ce);if(!st){gt("Workstream not found by that reference.","error");return}await Zd(st.id,vs(ne))},[Zd,ht.initiativeById,e.workstreams,gt]),wp=a.useCallback(d=>{Ya(d),gn("")},[]),bp=a.useCallback(d=>{gn(d),Ya(d&&ht.workstreamInitiativeIds.get(d)||"")},[ht.workstreamInitiativeIds]),im=a.useCallback(d=>{const g=yf(d,Us);if(g!==d){const T=Us.find(ne=>ne.id===d)?.label||"That module";gt(`${T} is not available in this build yet.`,"error");return}P(g)},[gt,P,Us]),xp=a.useCallback(()=>{if(Yn==="tasks"&&Ar){Ls(!1),Kr(null),ya(null),os(null);return}if(Yn!=="tasks"){P("tasks"),Ls(!0);return}Ls(d=>!d)},[Ar,Yn,P]),cg=a.useCallback(d=>{P("tasks"),Ve(d)},[Ve,P]),lg=a.useCallback((d,g)=>{_s(d),Go(g?.sessionId??null),Jl(T=>T+1),P("annotate")},[P]),dg=a.useCallback(({target:d,sessionId:g})=>{_s(T=>!T&&!d||T&&d&&T.taskId===d.taskId&&T.taskReferenceLabel===d.taskReferenceLabel&&T.assetId===d.assetId&&T.imageReferenceLabel===d.imageReferenceLabel&&T.path===d.path&&T.displayName===d.displayName?T:d),Go(T=>T===g?T:g)},[]),_p=a.useMemo(()=>[{value:"created",label:Le("standalone.sortCreated")},{value:"updated",label:Le("standalone.sortUpdated")},{value:"priority",label:Le("standalone.sortPriority")},{value:"complexity",label:Le("standalone.sortComplexity")},...gh(ct,[...e.searchAgnosticTasks,...va])],[va,e.searchAgnosticTasks,ct]),Cp=a.useMemo(()=>[{value:"category",label:Le("standalone.groupCategory")},{value:"type",label:Le("standalone.groupType")},{value:"priority",label:Le("standalone.groupPriority")},{value:"complexity",label:Le("standalone.groupComplexity")},{value:"assignee",label:Le("standalone.groupAssignee")},{value:"status",label:Le("standalone.groupStatus")},{value:"schedule",label:Le("standalone.groupSchedule")}],[]),Ap=a.useMemo(()=>Us.filter(d=>d.enabled),[Us]),Tp=a.useMemo(()=>[{key:"empty-columns",icon:b==="show"?t.jsx(Np,{size:16}):b==="collapse"?t.jsx(jp,{size:16}):t.jsx(Lg,{size:16}),title:Le(b==="show"?"standalone.showEmptyColumns":b==="collapse"?"standalone.compressEmptyColumns":"standalone.hideEmptyColumns"),onClick:hp,active:b!=="show"},{key:"compressed-cards",icon:wn?t.jsx(Tf,{size:16}):t.jsx(Bg,{size:16}),title:Le(wn?"standalone.expandCards":"standalone.compressCards"),onClick:()=>_r(!wn),active:wn}],[wn,hp,b]),ug=a.useMemo(()=>[{key:"filter-toggle",icon:t.jsx(If,{size:16}),title:Le("standalone.toggleFilters"),onClick:()=>ji(!la),active:la,className:wl?m.filterGlow:""}],[wl,ji,la]),mg=a.useMemo(()=>{switch(Ts.filterBar.kind){case"task-filters":return t.jsx(hP,{categoryFilterOptions:Uc,typeFilterOptions:zc,priorities:at,taxonomyDisplayLabels:Nt,filterCategories:Et,setFilterCategories:Ut,filterTypes:Ht,setFilterTypes:un,filterPriorities:Zt,setFilterPriorities:Gt,filterStatus:se,setFilterStatus:K,filterAssignees:ln,setFilterAssignees:Zn,assigneeOptions:nn,initiativeFilterOptions:Hc,selectedInitiativeId:bn,setSelectedInitiativeId:wp,workstreamFilterOptions:Gc,selectedWorkstreamId:Tr,setSelectedWorkstreamId:bp,taskScope:Dt,setTaskScope:En,showArchive:ur,setShowArchive:nd,fetchArchive:ad,onDeleteAllDeleted:()=>{const d=da.length;d===0||!window.confirm(`Permanently delete ${d} deleted task${d===1?"":"s"}? This cannot be undone.`)||Ze()},clearFilters:()=>{rn(),Ya(""),gn("")}});case"document-filters":return t.jsx(gP,{typeFilters:cs,setTypeFilters:Ir,attachmentFilters:Qt,setAttachmentFilters:fn,clearFilters:()=>{Ir(cu.map(d=>d.value)),fn(lu.map(d=>d.value))}});default:return t.jsx(pP,{})}},[nn,Uc,rn,da.length,Qt,cs,ln,Et,Zt,se,Ht,wp,bp,Hc,at,bn,Tr,fn,Ir,Zn,Ut,Gt,K,un,Ya,gn,nd,En,ur,Dt,Nt,zc,Gc,Ts.filterBar.kind,ad,Ze]),pg=a.useMemo(()=>[{key:"zen-toggle",icon:t.jsx(Wg,{size:16,fill:F?"currentColor":"none"}),title:Le(F?"standalone.exitZenMode":"standalone.enterZenMode"),onClick:()=>B(),active:F}],[F,B]),fg=a.useMemo(()=>({search:t.jsx(uP,{value:St,placeholder:Le("standalone.searchPlaceholder"),active:vl,onChange:dt,onClear:()=>dt(""),clearTitle:Le("standalone.clearSearchTitle")}),sort:t.jsx(mf,{label:t.jsxs(t.Fragment,{children:[t.jsx(Fg,{size:12})," ",Le("standalone.sortLabel")]}),value:Dn,options:_p,onChange:d=>mn(d),trailingAction:t.jsx("button",{className:`tf-control-icon ${m.sortDirectionBtn}`,onClick:()=>e.toggleSortOrder(),title:e.sortOrder==="desc"?Le("standalone.sortDirectionDescTitle"):Le("standalone.sortDirectionAscTitle"),children:e.sortOrder==="desc"?t.jsx(xf,{size:14}):t.jsx(_f,{size:14})})}),"divider-primary":t.jsx(pf,{}),grouping:t.jsx(mf,{label:t.jsxs(t.Fragment,{children:[t.jsx(Em,{size:12})," ",Le("standalone.groupLabel")]}),value:y,options:Cp,onChange:d=>k(d)}),"divider-secondary":t.jsx(pf,{}),"task-display-actions":t.jsx(Cm,{actions:Tp})}),[y,Cp,im,vl,e,St,k,dt,mn,Dn,_p,Tp,Ts.moduleId]),hg=a.useMemo(()=>({"add-task":t.jsx(mP,{icon:t.jsx(Ss,{size:16}),label:Le("standalone.addTask"),onClick:gp}),"add-document":null}),[gp]),Tl=a.useMemo(()=>{const d={tasks:t.jsx(Gg,{size:18}),docs:t.jsx(Dm,{size:18}),annotate:t.jsx(Hg,{size:18}),workflows:t.jsx(zg,{size:18}),agents:t.jsx(ru,{size:18})};return t.jsxs("aside",{className:dn.workspaceToolRail,"aria-label":"Workspace tools",children:[t.jsxs("div",{className:dn.workspaceToolRailMain,children:[t.jsx("button",{type:"button",className:`${dn.workspaceToolButton} ${Yn==="tasks"&&Ar?dn.workspaceToolButtonActive:""}`.trim(),onClick:xp,title:Yn==="tasks"&&Ar?"Collapse planning trays":"Planning","aria-label":Yn==="tasks"&&Ar?"Collapse planning trays":"Planning",children:Yn==="tasks"&&Ar?t.jsx(xc,{size:18}):t.jsx(Og,{size:18})}),t.jsx("div",{className:dn.workspaceToolRailDivider}),Ap.map(g=>t.jsx("button",{type:"button",className:`${dn.workspaceToolButton} ${Yn===g.id?dn.workspaceToolButtonActive:""}`.trim(),onClick:()=>im(g.id),title:g.label,"aria-label":g.label,children:d[g.id]},g.id))]}),t.jsxs("div",{className:dn.workspaceToolRailBottom,children:[t.jsx("div",{className:dn.workspaceToolRailDivider}),t.jsx("button",{type:"button",className:`${dn.workspaceToolButton} ${v==="settings"?dn.workspaceToolButtonActive:""}`.trim(),onClick:()=>{kn("general"),x("settings")},title:"Workspace Settings","aria-label":"Workspace Settings",children:t.jsx(Cf,{size:18})})]})]})},[v,im,xp,Ar,Yn,kn,x,Ap]),cm=a.useRef(null),gg=t.jsx(PM,{open:Ar,leftOffset:56,initiatives:ht.initiatives,standaloneWorkstreams:ht.standaloneWorkstreams,activeInitiativeId:bn,activeWorkstreamId:Tr,expandedInitiativeIds:Mc,detail:Vc,editor:dr,secondaryPane:Zc,assigneeOptions:nn.map(d=>({value:String(d.value),label:d.label})),draftInitiativeSummary:od,draftTitle:Fs,draftDescription:Jr,draftOwner:Ri,draftInitiativeId:Xr,onChangeDraftTitle:is,onChangeDraftDescription:Os,onChangeDraftOwner:xs,onChangeDraftInitiativeId:Qr,onCollapseTreePane:()=>$o(!0),onExpandTreePane:()=>$o(!1),onCollapsePrimaryPane:()=>rs(!0),onExpandPrimaryPane:()=>rs(!1),onCollapseSecondaryPane:()=>lr(!0),onExpandSecondaryPane:()=>lr(!1),onBackFromSecondary:()=>{Yr(null),ya(null)},treeCollapsed:Bs,primaryCollapsed:fo,secondaryCollapsed:Uo,onCancelEditor:am,onSubmitEditor:Qh,onCreateInitiative:()=>sm("initiative"),onCreateWorkstream:()=>sm("workstream"),onCreateTaskInWorkstream:Xh,onCreateWorkstreamInInitiative:d=>sm("workstream",d),onAssignInitiativeToWorkstream:Zd,onOpenTaskById:Ve,onAttachTaskToWorkstreamByReference:og,onAttachWorkstreamToInitiativeByReference:ig,onToggleInitiative:eg,onSelectInitiative:tg,onSelectWorkstream:ng,onOpenInitiativeDetails:ag,onOpenWorkstreamDetails:rg,onOpenNestedWorkstreamDetails:sg,onEditInitiative:d=>Sp("initiative",d),onEditWorkstream:d=>Sp("workstream",d),onArchiveInitiative:d=>{e.archiveInitiative(d).then(()=>{gt("Initiative archived","success")}).catch(g=>{gt(g instanceof Error?g.message:"Failed to archive initiative.","error")})},onUnarchiveInitiative:d=>{e.unarchiveInitiative(d).then(()=>{gt("Initiative unarchived","success")}).catch(g=>{gt(g instanceof Error?g.message:"Failed to unarchive initiative.","error")})},onArchiveWorkstream:d=>{e.archiveWorkstream(d).then(()=>{gt("Workstream archived","success")}).catch(g=>{gt(g instanceof Error?g.message:"Failed to archive workstream.","error")})},onUnarchiveWorkstream:d=>{e.unarchiveWorkstream(d).then(()=>{gt("Workstream unarchived","success")}).catch(g=>{gt(g instanceof Error?g.message:"Failed to unarchive workstream.","error")})}}),yg=Ts.headerSections.map(d=>{const g=fg[d];return g?t.jsx(ut.Fragment,{children:g},d):null}).filter(Boolean),kg=Ts.primaryAction?hg[Ts.primaryAction]:null;return t.jsxs("div",{className:`${dn.standaloneWrapper} ${F?m.zenModeEnabled:""}`,"data-theme":We,children:[t.jsx(dP,{projectName:Ot,currentWorkspaceId:tn,runtimeMode:Ft,theme:We,meta:i?null:t.jsxs(t.Fragment,{children:[t.jsx("span",{className:m.taskCountBadge,title:em,children:xl}),Pr&&Pr!=="anonymous"&&t.jsxs(t.Fragment,{children:[t.jsxs("span",{className:m.taskCountBadge,title:"Tasks assigned to me",children:[t.jsx(Lo,{size:13,className:m.taskCountBadgeIcon,"aria-hidden":"true"}),ld]}),t.jsxs("span",{className:`${m.taskCountBadge} ${dd>0?m.taskCountBadgeAlert:""}`.trim(),title:"Tasks overdue",children:[t.jsx($g,{size:13,className:m.taskCountBadgeIcon,"aria-hidden":"true"}),dd]})]}),tm&&t.jsx("button",{className:"tf-control-icon",onClick:()=>Vi(!0),title:`Sync manager: ${Jn.label} | Last success: ${gc}`,style:{marginLeft:"6px",height:"24px",width:"24px",padding:0,borderRadius:"999px",border:`1px solid ${Jn.border}`,background:Jn.background,color:Jn.color,display:"inline-flex",alignItems:"center",justifyContent:"center"},children:Jn.icon==="off"?t.jsx(Ug,{size:16}):t.jsx(Nf,{size:16})})]}),actions:t.jsxs(t.Fragment,{children:[i&&t.jsx("button",{className:"tf-control-icon",onClick:()=>{fc()},title:Tt&&!pi?"Choose a plan to continue.":"Continue to Taskforce",disabled:As||Tt&&!pi,children:pi?"Take Me to Taskforce":"Back"}),!i&&t.jsxs(t.Fragment,{children:[yg,kg]}),!i&&t.jsx(Cm,{actions:pg}),!i&&t.jsx(Cm,{actions:ug}),Jh]})}),t.jsx(Bh,{notice:ha,onDismiss:ga}),_a&&t.jsx("div",{className:pe.authBlockedBanner,children:"Authentication required for this environment. Use the Account menu to sign in."}),!i&&la&&mg,i?t.jsx("div",{className:`${dn.standalonePage} ${dn.standaloneContent} ${m.appScrollbar} tf-scrollbar`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflowY:"auto",overflowX:"hidden",scrollbarGutter:"stable"},children:t.jsx(a.Suspense,{fallback:t.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:t.jsx(Ea,{size:20,className:m.spinner})}),children:t.jsx(mL,{...e,currentTheme:We,projectName:Ot,currentWorkspaceId:tn,authUserId:Jt,apiBaseUrl:Pd,connectedEnvironmentSource:e.config?.cloudAuthBaseUrl||e.config?.apiBaseUrl||"",resolveCloudAuthUrl:Wn,embedded:!0,shellOwnsScroll:!0,onAccountProfileSummaryChange:Yu,onContinueToTaskforce:fc,continueBusy:As})})}):Yn==="docs"&&qo?t.jsxs("div",{className:`${dn.standalonePage} ${dn.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Tl,t.jsx(a.Suspense,{fallback:t.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:t.jsx(Ea,{size:20,className:m.spinner})}),children:t.jsx(lL,{tasks:te,runtimeMode:Ft,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",typeFilters:cs,attachmentFilters:Qt,onTypeFiltersChange:Ir,onAttachmentFiltersChange:fn,requestedDocPath:ls,requestedDocAssetId:Ho,onRequestedDocHandled:()=>{zo(null),Ei(null)},enableTaskGeneration:!0})})]}):Yn==="annotate"&&Fc?t.jsxs("div",{className:`${dn.standalonePage} ${dn.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Tl,t.jsx(a.Suspense,{fallback:t.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:t.jsx(Ea,{size:20,className:m.spinner})}),children:t.jsx(cL,{runtimeMode:Ft,apiBaseUrl:e.config?.apiBaseUrl||"",cloudAuthBaseUrl:e.config?.cloudAuthBaseUrl||"",workspaceId:tn,sessionLoadReady:Wc,requestedTarget:ka,requestedSessionId:vn,requestedOpenVersion:Yl,resolveTaskReferenceLabel:Oc,resolveImageReferenceLabel:$c,onOpenTarget:lg,onContextChange:dg,onBackToTask:cg})})]}):Yn==="workflows"?t.jsxs("div",{className:`${dn.standalonePage} ${dn.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Tl,t.jsx(a.Suspense,{fallback:t.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:t.jsx(Ea,{size:20,className:m.spinner})}),children:t.jsx(dL,{availableWorkflows:_t,availableEnvironments:Na,exportEnvironment:ir,exportWorkflowsPath:e.exportWorkflowsPath,exportingResource:De,exportResult:za,onExportEnvironmentChange:e.setExportEnvironment,onExportWorkflows:on,onRefreshWorkflows:Nn,onFetchWorkflowTemplate:e.fetchWorkflowTemplate,onFetchWorkflowOverrideNames:e.fetchWorkflowOverrideNames,onSaveWorkflowTemplateDraft:e.saveWorkflowTemplateDraft,onResetWorkflowTemplateDraft:e.resetWorkflowTemplateDraft})})]}):Yn==="agents"?t.jsxs("div",{className:`${dn.standalonePage} ${dn.standaloneContent}`,style:{position:"relative",display:"flex",flex:1,minHeight:0,overflow:"hidden",paddingLeft:"56px"},children:[Tl,t.jsx(a.Suspense,{fallback:t.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},children:t.jsx(Ea,{size:20,className:m.spinner})}),children:t.jsx(uL,{workspaceId:tn})})]}):t.jsxs("div",{className:`${dn.standalonePage} ${dn.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:Ar?`${56+qc+6}px`:"62px",paddingRight:y==="schedule"&&bs?`${Zm}px`:0},children:[Tl,t.jsx("div",{ref:cm,style:{position:"absolute",inset:0,zIndex:35,pointerEvents:"none"}}),t.jsxs("div",{style:{position:"relative",width:"100%",minWidth:0,flex:1,minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[e.loadingTasks&&vo.length>0&&t.jsx("div",{className:m.boardRefreshIndicator,"aria-live":"polite","aria-label":"Refreshing tasks",children:t.jsx(Ea,{size:14,className:m.spinner})}),t.jsx(aP,{tasks:id,allTasks:Kc,columns:fp,groupBy:y,scheduleDates:to,searchQuery:St,filterCategories:Et,filterTypes:Ht,filterPriorities:Zt,filterStatus:se,filterAssignees:ln,assigneeOptions:nn,scheduleFilteredTaskIds:Array.from(sd),copiedId:ot,taxonomies:ct,types:ze,priorities:at,onUpdateTask:q,onTaskClick:d=>N(d),onOpenTaskById:Ve,onCopyId:ke,onToggleInProgress:ve,onToggleReview:vt,onToggleComplete:Re,onToggleCancel:Oe,onSetStatus:Ui,onArchiveTask:kt,onAddTaskToColumn:zi,showTaskCardStatusLabel:Me,onScheduleDaySelected:d=>{Rc(d);const g=Ll(d);g&&Dc(`${g.getFullYear()}-${String(g.getMonth()+1).padStart(2,"0")}`)},persistedScrollLeft:y==="schedule"?Ps:void 0,onScrollLeftChange:d=>{y==="schedule"&&Ni(d)},emptyColumnMode:b,categories:S,compressed:wn,readOnlyMode:Dt==="deleted"?"deleted":Dt==="archived"?"archived":null,recentlyChangedTaskIds:e.recentlyChangedTaskIds,sortBy:Dn,sortOrder:e.sortOrder,planningDropTargets:cm.current?bi.createPortal(gg,cm.current):null,onAssignTaskToWorkstream:om,onAssignWorkstreamToInitiative:Zd,workstreams:e.workstreams,initiatives:e.initiatives,onUnarchive:d=>{if(Dt==="deleted"){const g=ds.get(d);if(!g)return;Ee(g.id);return}Se(d)},onDelete:d=>{if(Dt==="deleted"){const g=ds.get(d);if(!g||!window.confirm("Permanently delete this task? This cannot be undone."))return;Te(g.id);return}J(d)}},`${y}-${fp.map(d=>String(d.value)).join("|")}-${to.mon}`),y==="schedule"&&!bs&&t.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>{Kr(null),as(!0)},title:"Show Schedule Sidebar",style:{position:"absolute",top:"10px",right:"10px",zIndex:20},children:t.jsx(xc,{size:16})})]}),y==="schedule"&&t.jsx(sL,{open:bs,onClose:()=>as(!1),scheduleSelectedDate:Ka,setScheduleSelectedDate:Rc,scheduleCalendarMonth:Ec,setScheduleCalendarMonth:Dc,scheduleShowWeekends:Za,setScheduleShowWeekends:mo,scheduleShowBacklog:qa,setScheduleShowBacklog:po,scheduleOnlyExpired:Cr,setScheduleOnlyExpired:qr,expiredScheduledCount:cd,overdueDueCount:Yc,expiredLeafCandidates:So,expiredRecoveryCandidates:Hs,onMoveExpiredToSelectedWeek:qh,onMoveExpiredToBacklog:Kh,scheduleBulkBusy:ms,globalWeekStartsOn:Mt,resolvedLocale:U,todayDateOnly:Vn,scheduleBaseTasks:Bi,scheduleWeekStart:hi,scheduleWeekLabel:Yh})]}),t.jsxs(uo,{isOpen:v==="add",onClose:$i,title:de?Va?.isDeleted?"Deleted Task":"Edit Task":"New Task",size:Ms?"full":"xl",theme:We,headerActions:t.jsx("button",{className:"tf-control-icon",onClick:()=>Pc(d=>!d),title:Ms?"Exit full screen":"Enter full screen","aria-label":Ms?"Exit full screen":"Enter full screen",children:Ms?t.jsx(jp,{size:18}):t.jsx(Np,{size:18})}),draggable:!Ms,closeOnOverlayClick:!1,children:[t.jsx(Lh,{editingTaskId:de,loading:ue,autoSaveState:Pt,title:E,currentTask:Va,currentTaskWorkstream:Zr,currentTaskInitiative:C,workstreamInput:ie,onWorkstreamInputChange:W,onSetWorkstreamForCurrentTask:xt,handleSubmit:fe,resetForm:$,handleCopyId:ke,copiedId:ot,tasks:te,handleToggleInProgress:ve,handleToggleReview:vt,handleToggleComplete:Re,handleToggleCancel:Oe,handleSetStatus:Ui,handleArchiveTask:kt,handleUnarchiveTask:d=>{if(Va?.isDeleted){const g=ds.get(d);if(!g)return;Ee(g.id);return}Se(d)},handleRestoreDeletedTask:Va?.deletedRecordId?d=>{Ee(d)}:void 0,handlePermanentlyDeleteDeletedTask:Va?.deletedRecordId?d=>{window.confirm("Permanently delete this task? This cannot be undone.")&&(Te(d),$(),x("tasks"))}:void 0}),t.jsx(Mh,{editingTaskId:de,error:Y,title:E,description:Z,checklistItems:G,category:he,type:le,priority:Ie,complexity:Fe,manualComplexityEnabled:Q,approach:p,assignee:_,scheduledDate:H,dueDate:re,workstreamInput:ie,formTaxonomies:ye,onTaxonomyChange:(d,g)=>Ue(T=>({...T,[d]:g})),taxonomies:ct,comments:pt,newCommentText:Ye,contextFiles:qe,currentWorkspaceId:tn,apiBaseUrl:Pd,descriptionFocused:He,showMarkdownHelp:Be,showChecklist:rt,checklistEnabled:ge,showComments:jt,categories:S,types:ze,priorities:at,taxonomyDisplayLabels:Nt,assigneeOptions:nn,workstreams:e.workstreams,initiatives:e.initiatives,copiedId:ot,onTitleChange:z,onDescriptionChange:me,onChecklistItemsChange:Ae,onCategoryChange:Ce,onTypeChange:be,onPriorityChange:Ne,onComplexityChange:D,onApproachChange:d=>{A(d),Ue(g=>({...g,approach:d}))},onAssigneeChange:M,onScheduledDateChange:R,onDueDateChange:V,onWorkstreamInputChange:W,onNewCommentTextChange:bt,onDescriptionFocusedChange:ee,onShowMarkdownHelpChange:l,onShowChecklistChange:At,onShowCommentsChange:It,onOpenSettings:d=>{kn(d),x("settings")},onSubmit:fe,commentsEndRef:$t,onAddComment:()=>tt(Ye),onOpenTaskById:Ve,onAddContextFile:d=>{let g=qe;Qe(T=>(g=[...T,d],g)),$e(!0),de&&q(de,{attachments:g})},onRemoveContextFile:async d=>{let g=qe;Qe(T=>(g=T.filter((ne,ce)=>ce!==d),g)),$e(!0),de&&q(de,{attachments:g})},onUpdateContextCaption:(d,g)=>{let T=qe;Qe(ne=>(T=ne.map((ce,st)=>st!==d?ce:typeof ce=="string"?{path:ce,caption:g,timestamp:new Date().toISOString()}:{...ce,caption:g}),T)),$e(!0),de&&q(de,{attachments:T})},onCopyId:ke,onToggleInProgress:ve,onToggleReview:vt,onToggleComplete:Re,onToggleCancel:Oe,onSetStatus:Ui,onArchiveTask:kt,onUnarchive:d=>{if(Va?.isDeleted){const g=ds.get(d);if(!g)return;Ee(g.id);return}Se(d)},currentTask:Va})]}),t.jsx(uo,{isOpen:v==="settings",onClose:$i,title:"Settings",size:"xl",theme:We,draggable:!0,isSettings:!0,closeOnOverlayClick:!1,children:t.jsx(a.Suspense,{fallback:t.jsx("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"2rem"},children:t.jsx(Ea,{size:20,className:m.spinner})}),children:t.jsx(iL,{settingsModel:ae,onSectionChange:kn})})}),t.jsx(oD,{prompt:_e,theme:We,onClose:Ct,onConfirm:it}),t.jsx(sD,{isOpen:Jc,theme:We,onClose:()=>wo(!1),onOpenSettings:()=>{wo(!1),x("settings"),kn("general")}}),t.jsx(rD,{isOpen:Hi,theme:We,onClose:Ld,onSave:()=>{Ku()},displayName:ll,email:Ro,avatarDisplayUrl:Rd,accountBadgeInitial:dc,avatarInputRef:di,avatarAccept:pL,avatarDraftId:hr,saveBusy:zu,avatarBusy:Uu,saveError:Hu,saveNotice:Gu,onDisplayNameChange:dl,onAvatarInputChange:d=>{Bd(d)},onStartAvatarUpload:()=>di.current?.click(),onDiscardUpload:Wd,onRemovePhoto:qu}),t.jsx(aD,{isOpen:bo,theme:We,runtimeMode:Ft,authRequiredForApi:$n,isAuthenticated:Tt,hasAuthIdentity:Td,authIdentityLabel:cc,billingLoading:oc,billingError:wd,billingActionError:Ks,billingNotice:Ou,billingActionBusy:ci,billingIntervalChoice:li,accountProfileSummary:wa,currentWorkspaceId:tn,canOpenTeamManagement:No,canManageWorkspaceSync:ic,workspaceCloudSyncEnabled:tr,syncStatusLabel:Jn.label,workspaceSyncError:Xc,syncControlBusy:Cd,onClose:()=>Gs(!1),onOpenWorkspaceAudit:()=>{Gs(!1),hc(),ti("audit")},onBillingIntervalChange:$u,onRefreshBilling:()=>{Br()},onUpdateInterval:()=>{Ju()},onManageBilling:()=>{Od()},onStartCheckout:()=>{Fd()},onToggleWorkspaceSync:d=>{_d(d)},onOpenHelp:()=>{Gs(!1),wo(!0)}}),t.jsx(YD,{isOpen:ju,theme:We,teamPlanMode:tc,teamMgmtError:Ja,teamManagementTab:Ru,teamUsersLoading:nc,teamUsers:xo,teamActionBusyUserId:ri,teamInviteFeedback:yd,teamInviteEmail:Vs,teamInviteRole:fs,teamInvitePermissionMode:oi,teamInviteBusy:sc,pendingInvites:Xu,teamAuditLoading:Pu,teamAuditEvents:Mu,teamAuditPage:qs,teamAuditPages:Wu,teamAuditHasMore:vd,onClose:()=>hd(!1),onOpenMembersTab:()=>{ti("members"),fi()},onOpenInvitesTab:()=>ti("invites"),onOpenAuditTab:()=>{ti("audit"),Xs(qs)},onMemberRoleChange:(d,g)=>{eo(d,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(d)}/role`,{method:"PATCH",headers:{"Content-Type":"application/json",...Nr()},credentials:"include",body:JSON.stringify({workspaceId:gs,role:g})}))},onMemberPermissionChange:(d,g)=>{eo(d,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(d)}/permission-mode`,{method:"PATCH",headers:{"Content-Type":"application/json",...Nr()},credentials:"include",body:JSON.stringify({workspaceId:gs,mode:g})}))},onToggleMemberDisabled:(d,g)=>{eo(d,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(d)}/disable`,{method:"PATCH",headers:{"Content-Type":"application/json",...Nr()},credentials:"include",body:JSON.stringify({workspaceId:gs,disabled:g})}))},onRevokeInvite:d=>{eo(d,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(d)}/invite/revoke`,{method:"POST",headers:{"Content-Type":"application/json",...Nr()},credentials:"include",body:JSON.stringify({workspaceId:gs})}))},onRemoveMember:d=>{eo(d,async()=>fetch(`/api/taskforce/admin/users/${encodeURIComponent(d)}?workspaceId=${encodeURIComponent(gs)}`,{method:"DELETE",headers:Nr(),credentials:"include"}))},onInviteEmailChange:Co,onInviteRoleChange:si,onInvitePermissionModeChange:rc,onSubmitInvite:()=>{kl()},onLoadAuditPrevious:()=>{Xs(qs-1)},onLoadAuditNext:()=>{Xs(qs+1)}}),t.jsx(J0,{isOpen:il,theme:We,onClose:()=>ei(!1),onConfirm:()=>Qs({intent:"create-workspace"})}),t.jsx(KD,{isOpen:Gi,theme:We,currentWorkspaceLabel:Ad,syncStatusMeta:Jn,workspaceCloudSyncEnabled:tr,syncControlBusy:Cd,canManageWorkspaceSync:ic,workspaceSyncSummary:ea,workspaceSyncRepairBusy:Cs,referenceMismatchCount:et,syncStageLabel:f,workspaceSyncPendingChanges:ta,formattedLastSyncTime:gc,formattedLastPullTime:_l,formattedLastPushTime:Cl,syncLastError:Al,workspaceSyncDiagnostics:L,activeReferenceMismatchSummaries:jn,syncDiagnosticsSummary:X,syncEventRows:Ge,syncEventsListRef:rl,workspaceSyncRepairQueued:Ki,workspaceSyncBusy:Un,workspaceSyncCopied:ud,runtimeMode:Ft,isAuthenticated:Tt,onClose:()=>Vi(!1),onToggleWorkspaceSync:d=>{_d(d)},onRepairSync:Vd,onCopyReport:()=>{Wr()},onOpenLogin:()=>{pc("login")},onRetrySync:()=>{na()}}),Kn&&bi.createPortal(t.jsx("div",{className:`${yt.overlay} ${yt.unsavedOverlay}`,style:{zIndex:2e3},children:t.jsxs("div",{className:`tf-surface-modal tf-modal-shell ${yt.modal} ${yt.unsavedModal}`,"data-theme":We,children:[t.jsx("div",{className:`tf-modal-header ${yt.unsavedHeader}`,children:t.jsxs("div",{className:`tf-modal-title ${yt.unsavedTitle}`,children:[t.jsx(Tc,{size:20}),"Unsaved Changes"]})}),t.jsx("div",{className:`${yt.form} ${yt.unsavedContent}`,children:t.jsx("p",{className:yt.unsavedText,children:"You have unsaved changes. Would you like to save them?"})}),t.jsxs("div",{className:`${yt.formActions} ${yt.unsavedActions}`,children:[t.jsx("button",{className:m.cancelBtn,onClick:()=>Ga(!1),title:"Close dialog and continue editing",children:"Keep Editing"}),t.jsx("button",{className:m.destructiveBtn,onClick:je,title:"Discard unsaved changes and leave",children:"Discard"}),t.jsxs("button",{className:m.submitBtn,onClick:ca,disabled:ue,title:"Save changes and leave",children:[ue?t.jsx(Ea,{size:16,className:m.spinner}):t.jsx(Af,{size:16}),"Save"]})]})]})}),document.body),Er&&bi.createPortal(t.jsx("div",{className:Rn.overlay,children:t.jsxs("div",{className:Rn.browser,children:[t.jsxs("div",{className:Rn.header,children:[t.jsxs("div",{className:Rn.pathInfo,children:[t.jsx(_i,{size:14}),t.jsx("span",{children:pa||"Project Root"})]}),t.jsxs("div",{className:Rn.actions,children:[pa&&t.jsx("button",{className:m.helpLink,onClick:()=>{const d=pa.split("/").filter(Boolean);d.pop(),Aa(d.length?d.join("/")+"/":"")},children:"Back"}),t.jsx("button",{className:m.helpLink,onClick:()=>zr(!1),children:"Close"})]})]}),t.jsxs("div",{className:Rn.list,children:[ar&&typeof ar=="object"&&t.jsxs("div",{className:`${Rn.item} ${Rn.itemFile} ${Rn.itemCurrent}`,onClick:()=>Hr(pa),children:[t.jsx(io,{size:14})," Select Current: ./",pa||"(root)"]}),$a.map(d=>t.jsxs("div",{className:Rn.item,onClick:()=>Aa(pa+d+"/"),children:[t.jsx(_i,{size:14})," ",d,"/"]},d)),Ua.map(d=>t.jsxs("div",{className:`${Rn.item} ${Rn.itemFile}`,onClick:()=>Hr(pa+d),children:[t.jsx(Dm,{size:14})," ",d]},d)),$a.length===0&&Ua.length===0&&t.jsx("div",{className:`${Rn.item} ${Rn.empty}`,children:"No items found"})]})]})}),document.body)]})}function bL(e){const n=e.setupState,r=e.runtimeMode,s=e.isAuthenticated,o=!!(n&&r==="cloud"&&s&&n.globalSetupState==="missing"),c=!!(n&&r==="local"&&n.globalSetupState==="missing"),i=!!(n&&r==="cloud"&&s&&n.workspaceSetupState==="missing"),u=!!(n&&r==="local"&&n.workspaceSetupState==="missing"),h=!!(n&&(n.forceSetup||n.forceGlobalSetup||n.forceWorkspaceSetup||o||i||c||u));if(!h)return{setupGateActive:!1,needsGlobalSetup:!1,needsWorkspaceSetup:!1,hasSetupReadError:!1,phase:"ready"};const v=!!(n&&(n.forceSetup||n.forceGlobalSetup||o||c)),x=!!(n&&(n.forceSetup||n.forceWorkspaceSetup||i||u)),S=!!(v&&n?.globalSetupState==="missing"),y=!!(x&&n?.workspaceSetupState==="missing"),k=!!(v&&n?.globalSetupState==="unreadable"),w=!!(x&&n?.workspaceSetupState==="unreadable"),P=k||w;return{setupGateActive:h,needsGlobalSetup:S,needsWorkspaceSetup:y,hasSetupReadError:P,phase:P?"setup-read-error":S?"needs-global-setup":y?"needs-workspace-setup":"ready"}}const jm="/taskforce/assets/taskforce-BxLPokNB.png";function vf(e){return{categories:!!e?.categories?.length,types:!!e?.types?.length,priorities:!!e?.priorities?.length}}function Rm(e){return(Array.isArray(e)?e:[]).map(n=>String(n.label||n.value||"").trim()).filter(Boolean).join(", ")}function Sf(e={}){const n=new URLSearchParams;n.set("screen","plans");for(const[r,s]of Object.entries(e)){const o=String(s||"").trim();o&&n.set(r,o)}return`/?${n.toString()}`}function wf({config:e={},initialTaskId:n,onTaskCountChange:r,onHeaderMouseDown:s,isDragging:o,onClose:c,mode:i="standalone"}){const u=Bf(),h=a.useMemo(()=>new URLSearchParams(u.search),[u.search]),v=String(h.get("planId")||"").trim(),x=String(h.get("planVersionId")||"").trim(),S=String(h.get("interval")||"").trim(),y=u.pathname==="/pricing",k=u.pathname==="/plans",w=u.pathname==="/"&&String(h.get("screen")||"").trim().toLowerCase()==="plans",P=Sf({gate:"plan_selection_required"}),b=Lf(),[j,F]=a.useState(""),[B,se]=a.useState(""),[K,te]=a.useState(""),[N,fe]=a.useState("login"),[$,q]=a.useState(""),[de,ue]=a.useState(!1),[Y,E]=a.useState(null),[z,Z]=a.useState(null),[me,G]=a.useState(null),[Ae,he]=a.useState(""),[Ce,le]=a.useState(""),[be,Ie]=a.useState(null),[Ne,Fe]=a.useState(null),[D,I]=a.useState("unknown"),[p,A]=a.useState(!1),[_,M]=a.useState(null),[H,R]=a.useState(null),[re,V]=a.useState(null),[ie,W]=a.useState(!1),[Q,ge]=a.useState(0),[Me,ye]=a.useState(0),[Ue,pt]=a.useState(()=>Date.now()),[Ye,bt]=a.useState("core"),[qe,Qe]=a.useState(!1),[$e,He]=a.useState(null),[ee,Be]=a.useState(null),[l,rt]=a.useState(""),[At,jt]=a.useState(""),[It,tt]=a.useState("local"),[xt,Ve]=a.useState("details"),[ct,ze]=a.useState([]),[at,Nt]=a.useState(""),[Rt,ot]=a.useState(!1),[ke,ve]=a.useState(null),[Re,vt]=a.useState(!1),[Oe,kt]=a.useState(null),[J,Se]=a.useState(!1),Ee=a.useRef(!1),Te=a.useMemo(()=>fh(),[]),[Ze,nt]=a.useState(Te),[St,dt]=a.useState(()=>Te.find(O=>O.isDefaultStarter)?.id||Te[0]?.id||""),[Et,Ut]=a.useState(()=>vf(Te.find(O=>O.isDefaultStarter)||Te[0]||null)),[Ht,un]=a.useState(!1),[Zt,Gt]=a.useState(null),[ln,Zn]=a.useState(!1),[nn,Dt]=a.useState(null),[En,Dn]=a.useState(!1),mn=aS({config:e,initialTaskId:n,onTaskCountChange:r,onClose:c}),{runtimeMode:rn,workspaceSwitchingEnabled:ae,currentWorkspaceId:xe,configLoaded:We,cloudAuthConfigured:wt,authRequiredForApi:ft,authBlocked:Bt,isAuthenticated:Vt,hasBetaAccess:en,authSessionResolved:Mt,workspaceBootstrapPending:Ln,bootstrapPhase:qt,bootstrapError:Da,setupState:zt,runtimeCapabilities:yn,refreshSetupContext:Cn,retryBootstrapChecks:kn,createWorkspace:Ft,saveWorkspaceProfile:Bn,fetchWorkspaces:Mn,applyWorkspaceSyncStateSnapshot:$n,workspaceCloudSyncEnabled:_a,workspaceSyncPhase:Tt,workspaceSyncSetupIntent:Jt,workspaceSyncSummary:Pa,workspaceSyncRecommendedAction:In,workspaceSyncBusy:Ma,workspaceLastErrorMessage:gr,retryWorkspaceCloudSync:sa,settingsModel:Ur,fetchTasks:Ca,loginWithCredentials:tr,registerWithCredentials:Xn,requestEmailVerification:Qn,confirmEmailVerification:ea,requestPasswordReset:Rr,confirmPasswordReset:Un,inspectInviteAcceptance:ta,acceptInviteWithToken:yr,joinInviteWithToken:gt,authUserEmail:zn,currentTheme:Hn,logout:sn}=mn,hn=a.useCallback(async(O,Je)=>{const $t=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:O,stateKey:"workspace-sync",patch:Je})}),Pt=await $t.json().catch(()=>({}));if(!$t.ok||Pt?.success===!1)throw new Error(Pt?.error||`Failed to configure workspace sync (${$t.status})`);return Pt},[]),an=a.useMemo(()=>Ze.find(O=>O.id===St)||Ze.find(O=>O.isDefaultStarter)||Ze[0]||null,[St,Ze]);$f(Hn);const qn=Gm,La=a.useMemo(()=>{const O=String(e.cloudAuthBaseUrl||e.apiBaseUrl||"").trim();return O?O.replace(/\/+$/,""):""},[e.apiBaseUrl,e.cloudAuthBaseUrl]),na=rn==="cloud"||yn?.runtimeMode==="cloud",Sn=!na&&wt&&!!La,kr=typeof window<"u"&&/^app\./i.test(window.location.hostname),tn=rn==="cloud"&&ft,nr=rn==="cloud"&&Bt,Xt=u.pathname==="/login",pn=u.pathname==="/setup",Ba=u.pathname==="/coming-soon",Wn="/setup?step=workspace&source=cloud&postAuth=select-cloud-workspace",Wa=!na&&It==="cloud",Fa=Wa&&Sn,Ot=a.useMemo(()=>{if(Oe)return Oe;if(Jt!=="attach-cloud-import")return null;const O=String(xe||"").trim();if(!O||O.toLowerCase()==="default")return null;const Je=ct.find($t=>$t.id===O);return{workspaceId:O,name:Je?.name||O}},[ct,xe,Oe,Jt]),vr=!!(Ot&&xe===Ot.workspaceId),Oa=!!(Ot&&vr&&Tt==="error"),Er=!!(Ot&&vr&&_a&&Tt==="active"&&!Ma),zr=a.useMemo(()=>{if(!Ot)return[];const O=qe?"In progress":"Complete",Je=Oa?"Needs attention":Ma||Tt==="attach-cloud"?"In progress":Tt==="active"?"Complete":"Waiting",$t=J?"In progress":Er?"Ready":"Waiting";return[`Connect workspace: ${O}`,`Import cloud data: ${Je}`,`Open local workspace: ${$t}`]},[Ot,qe,Oa,Ma,Tt,J,Er]),$a=kr?(!Vt||Bt)&&!y&&!k&&!w:(tn&&!Vt||nr)&&!y&&!k&&!w,Ua=rn==="cloud"&&Vt&&!en&&!y&&!k&&!w,pa=rn==="cloud"&&Vt&&Mt&&nn?.canAccessApp===!1&&nn?.canAccessPlans!==!1&&!y&&!k&&!w,Aa=wt,ar=a.useMemo(()=>{switch(N){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"}},[N]),Fn=a.useMemo(()=>String(new URLSearchParams(u.search).get("step")||"").trim().toLowerCase(),[u.search]),Hr=a.useMemo(()=>String(new URLSearchParams(u.search).get("intent")||"").trim().toLowerCase(),[u.search]),An=pn&&Fn==="workspace"&&Hr==="create-workspace",Sr=i!=="widget"&&!Mt&&!Xt&&!pn&&!y&&!k&&!w&&(rn==="cloud"||kr),rr=a.useMemo(()=>bL({setupState:zt?{globalSetupState:zt.globalSetupState,workspaceSetupState:zt.workspaceSetupState,runtimeMode:zt.runtimeMode,workspaceId:zt.workspaceId,mode:zt.mode,forceSetup:zt.forceSetup,forceGlobalSetup:zt.forceGlobalSetup,forceWorkspaceSetup:zt.forceWorkspaceSetup}:null,runtimeMode:rn,isAuthenticated:Vt}),[zt,rn,Vt]),sr=rr.setupGateActive,oa=rr.needsGlobalSetup,wr=rr.needsWorkspaceSetup,Ta=rr.hasSetupReadError,Gr=i!=="widget"&&Mt&&!$a&&!Ua&&!y&&!k&&!w&&(!We||Ln||qt==="stalled")&&(pn||rn==="cloud"||kr),br=a.useMemo(()=>qt==="auth"?"Verifying session...":qt==="workspace"?"Resolving workspace access...":qt==="config"?"Loading configuration...":"Checking account, workspace access, and setup status...",[qt]),or=a.useCallback((O,Je,$t)=>{const Pt=String(O||"").trim().toLowerCase(),Kn=String(Je||"").trim().toLowerCase();return!!(!Pt||Pt==="system default workspace"||Kn&&Pt===Kn)},[]);a.useEffect(()=>{const O=zt?.mode==="operations"?"operations":"core";bt(O)},[zt?.mode]),a.useEffect(()=>{if(rn!=="cloud"||!Vt||!Mt){Dt(null),Dn(!1);return}Dt(null),Dn(!1);let O=!1;return(async()=>{try{const Je=await fetch("/api/taskforce/account/access-status",{method:"GET",credentials:"include"}),$t=await Je.json().catch(()=>({}));if(O)return;if(!Je.ok){Dt(null),Dn(!0);return}const Pt=String($t?.gate||"").trim().toLowerCase();if(Pt!=="ok"&&Pt!=="plan_selection_required"&&Pt!=="checkout_pending"&&Pt!=="misconfigured"&&Pt!=="missing_entitlement"){Dt(null),Dn(!0);return}Dt({gate:Pt,canAccessApp:$t?.canAccessApp===!0,canAccessPlans:$t?.canAccessPlans!==!1,message:typeof $t?.message=="string"?$t.message:null}),Dn(!0)}catch{O||(Dt(null),Dn(!0))}})(),()=>{O=!0}},[Mt,Vt,rn,u.pathname,u.search]),a.useEffect(()=>{if(An){rt(""),jt("");return}if(!zt)return;const O=String(zt.workspace?.name||"").trim(),Je=String(zt.suggestedWorkspaceName||"").trim(),$t=or(O,zt.workspaceId,zt.workspace?.description)?Je:O;rt($t||Je||O),jt(String(zt.workspace?.description||""))},[zt?.workspace?.name,zt?.workspace?.description,zt?.suggestedWorkspaceName,zt?.workspaceId,An,or]),a.useEffect(()=>{if(!pn||Fn!=="workspace")return;if(Ve("details"),Ot&&Sn){tt("cloud"),vt(!1);return}if(String(new URLSearchParams(u.search).get("source")||"").trim().toLowerCase()==="cloud"&&Sn){tt("cloud"),vt(!1);return}tt("local")},[Ot,Sn,pn,u.search,Fn]);const Vr=a.useCallback(async()=>{if(!Sn||!Vt){ze([]),Nt("");return}ot(!0),ve(null);try{const O=await fetch(`${La}/api/taskforce/workspaces`,{method:"GET",credentials:"include"}),Je=await O.json().catch(()=>({}));if(!O.ok||Je?.success===!1){ze([]),Nt(""),ve(Je?.error||`Failed to load cloud projects (${O.status})`);return}const $t=Array.isArray(Je?.workspaces)?Je.workspaces.map(Pt=>({id:String(Pt?.id||"").trim(),name:String(Pt?.name||Pt?.id||"").trim(),description:typeof Pt?.description=="string"?Pt.description:null})).filter(Pt=>Pt.id.length>0):[];ze($t),Nt(Pt=>Pt&&$t.some(Kn=>Kn.id===Pt)?Pt:$t[0]?.id||"")}catch{ze([]),Nt(""),ve("Failed to load cloud projects.")}finally{ot(!1)}},[Sn,Vt,La]);a.useEffect(()=>{It==="cloud"&&Vr()},[Vr,It]),a.useEffect(()=>{if(!pn||Fn!=="workspace"||It==="cloud")return;let O=!1;return un(!0),Gt(null),fetch("/api/taskforce/taxonomy-library",{method:"GET",credentials:"include"}).then(async Je=>{if(!Je.ok)throw new Error(`Failed to load setup libraries (${Je.status})`);const $t=await Je.json().catch(()=>({})),Pt=Array.isArray($t?.packs)?$t.packs:[];O||Pt.length===0||(nt(Pt),dt(Kn=>Pt.some(Ga=>Ga.id===Kn)?Kn:Pt.find(Ga=>Ga.isDefaultStarter)?.id||Pt[0]?.id||""))}).catch(Je=>{O||(nt(Te),Gt(Je instanceof Error?Je.message:"Failed to load setup libraries."))}).finally(()=>{O||un(!1)}),()=>{O=!0}},[Te,pn,Fn,It]),a.useEffect(()=>{Ut(vf(an))},[St,an]),a.useEffect(()=>{It==="cloud"&&Ve("details")},[It]),a.useEffect(()=>{Fa||(kt(null),Se(!1),Ee.current=!1)},[Fa]),a.useEffect(()=>{!Oa||!Ot||(Be(null),He(gr||`Failed to import "${Ot.name}" from cloud. Retry import to continue.`))},[Ot,Oa,gr]),a.useEffect(()=>{if(!Er||!Ot||Ee.current)return;let O=!1;return Ee.current=!0,Se(!0),He(null),Be(`Workspace import complete. Opening ${Ot.name}...`),(async()=>{try{if(await Cn(),await Promise.all([Mn(),Ca(!0)]),O)return;await hn(Ot.workspaceId,{setupIntent:null}),$n({enabled:_a,phase:Tt,setupIntent:null}),kt(null),b("/",{replace:!0})}catch{if(O)return;Be(null),He(`Imported "${Ot.name}" but failed to finish opening it.`),Se(!1),Ee.current=!1}})(),()=>{O=!0}},[Ot,$n,Ca,Mn,Er,b,hn,Cn]);const Pn=a.useMemo(()=>{const O=new URLSearchParams(u.search).get("next")||"/";return!O.startsWith("/")||O==="/login"?"/":O},[u.search]),ir=a.useMemo(()=>{try{const O=new URL(Pn,"https://taskforce.local");return O.pathname==="/setup"&&O.searchParams.get("step")==="workspace"&&O.searchParams.get("source")==="cloud"&&O.searchParams.get("postAuth")==="select-cloud-workspace"}catch{return!1}},[Pn]),Ia=a.useCallback(()=>ir?Wn:"/setup?step=workspace",[ir]),ia=S==="year"?"year":"month",fa=a.useCallback(O=>!!(O?.planSelectionRequired||O?.checkoutPending||O?.commercialState==="pending_plan_selection"||O?.commercialState==="checkout_pending"),[]),za=a.useCallback(O=>O?.planSelectionRequired||O?.commercialState==="pending_plan_selection"?P:O?.checkoutPending||O?.commercialState==="checkout_pending"?Sf({gate:"checkout_pending",checkout:x?"start":null,planId:v||null,planVersionId:x||null,interval:x?ia:null}):Pn,[Pn,P,ia,v,x]),De=a.useMemo(()=>{const O=String(new URLSearchParams(u.search).get("mode")||"").trim().toLowerCase();return O==="register"?Aa?"register":"login":O==="verify"||O==="forgot"||O==="reset"||O==="invite"?O:"login"},[Aa,u.search]),_t=a.useMemo(()=>String(new URLSearchParams(u.search).get("token")||"").trim(),[u.search]),on=a.useCallback(O=>{const Je=new URLSearchParams(u.search),$t=O==="register"&&!Aa?"login":O;$t==="login"?Je.delete("mode"):Je.set("mode",$t);const Pt=Je.toString();b(`/login${Pt?`?${Pt}`:""}`,{replace:!0})},[Aa,u.search,b]);a.useEffect(()=>{Xt&&(fe(De),De==="verify"&&_t&&q(_t),De==="reset"&&_t&&he(_t),De==="invite"&&_t&&le(_t))},[Xt,De,_t]),a.useEffect(()=>{N!=="verify"&&(Xt&&De==="verify"||(ue(!1),E(null),Z(null)))},[N,Xt,De]),a.useEffect(()=>{!Xt||!me||!Mt||!Vt||rn==="cloud"&&!me.commercialOnboardingGate&&!En||(!me.commercialOnboardingGate&&me.workspaceSetupRequired?b(Ia(),{replace:!0}):b(me.path,{replace:!0}),F(""),se(""),te(""),G(null))},[En,Mt,Vt,Xt,b,me,Ia,rn]),a.useEffect(()=>{Xt&&(document.title=ar)},[ar,Xt]),a.useEffect(()=>{if(!Xt||N!=="invite"||!Ce.trim())return;let O=!0;return(async()=>{const Je=await ta(Ce);if(O)if(Je.success){Ie(Je.email||null),Fe(Je.workspaceId||null),A(Je.passwordRequired===!0);const $t=!!(Vt&&zn&&Je.email&&zn.trim().toLowerCase()===Je.email.trim().toLowerCase()),Pt=Je.passwordRequired===!0?"new_user":$t?"existing_user_ready":"existing_user_signed_out";I(Pt),M(Pt==="new_user"?"Create your account password to join this workspace.":Pt==="existing_user_ready"?"Invite ready. Confirm to join this workspace.":"Sign in with the invited account to join this workspace."),R(null),V(null)}else Ie(null),Fe(null),I("invalid"),A(!1),R(Dr(Je)),V(Je.code||Je.state||null)})(),()=>{O=!1}},[Xt,N,Ce,ta,Vt,zn]),a.useEffect(()=>{N==="invite"&&D==="existing_user_signed_out"&&be&&F(O=>O.trim()?O:be)},[N,D,be]),a.useEffect(()=>{if(!(Q>Date.now()||Me>Date.now()))return;const Je=window.setInterval(()=>pt(Date.now()),1e3);return()=>window.clearInterval(Je)},[Q,Me]);const Nn=Math.max(0,Math.ceil((Q-Ue)/1e3)),Na=Math.max(0,Math.ceil((Me-Ue)/1e3)),xr=Nn>0,Ha=Na>0,Dr=O=>{const Je=O.error||"Request failed.",$t=O.code||O.state;return $t?`[${$t}] ${Je}`:Je},ha=O=>O?.deliveryAttempted===!1?O?.intro||"If that account exists and still needs verification, we sent an email.":O?.emailSent===!1?`Verification email failed to send. ${O?.emailError||"Try Resend Verification again."}`:"Verification email resent.",ga=O=>O?.deliveryAttempted===!1?"If that account exists, we sent password reset instructions.":O?.emailSent===!1?`Password reset email failed to send. ${O?.emailError||"Try again in a minute."}`:"Password reset instructions sent.";a.useEffect(()=>{if(i!=="widget"&&!Ln){if(Ua){Ba||b("/coming-soon",{replace:!0});return}if(Ba&&!Ua){b("/",{replace:!0});return}if($a){if(!Xt){const O=`${u.pathname}${u.search}${u.hash}`;b(`/login?next=${encodeURIComponent(O||"/")}`,{replace:!0});return}return}else{const O=Xt&&N==="invite"&&Ce.trim().length>0;if(Xt&&Vt&&!O&&(!!me||Ln||N==="register"||N==="verify"||rn==="cloud"&&(!We||!En)))return;Xt&&Vt&&!O&&b(Pn,{replace:!0})}if(!(Xt&&!Vt)){if(pa){if(!w){const O=encodeURIComponent(String(nn?.gate||"plan_selection_required"));b(`/?screen=plans&gate=${O}`,{replace:!0})}return}if(Ot){pn&&Fn==="workspace"&&new URLSearchParams(u.search).get("source")==="cloud"||b(Wn,{replace:!0});return}if(sr){if(Ta){(!pn||Fn!=="error")&&b("/setup?step=error",{replace:!0});return}if(oa){(!pn||Fn!=="global")&&b("/setup?step=global",{replace:!0});return}if(wr){(!pn||Fn!=="workspace")&&b(Ia(),{replace:!0});return}pn&&b("/",{replace:!0});return}pn&&zt&&!An&&b("/",{replace:!0})}}},[i,$a,Ua,pa,Xt,pn,Ba,k,w,nn?.gate,En,N,sr,zt,Ta,An,Ot,oa,wr,Fn,Ln,We,rn,Ce,u.pathname,u.search,u.hash,b,Pn,me,Wn]),a.useEffect(()=>{if(i==="widget"||rn!=="local"||!We||Xt||pn)return;const O=String(xe||"").trim().toLowerCase();(!O||O==="default")&&b("/setup?step=workspace",{replace:!0})},[i,rn,We,Xt,pn,xe,b]);const Kt=a.useCallback(async()=>{Zn(!0);try{await kn()}finally{Zn(!1)}},[kn]),cr=a.useCallback(async()=>{await sn(),b("/login",{replace:!0})},[sn,b]);if(i==="widget")return t.jsx(NE,{...mn,onHeaderMouseDown:s,isDragging:o,onClose:c});if(y){const O=new URLSearchParams(u.search);return O.set("screen","plans"),t.jsx(Ep,{to:`/?${O.toString()}${u.hash||""}`,replace:!0})}if(k){const O=new URLSearchParams(u.search);return O.set("screen","plans"),t.jsx(Ep,{to:`/?${O.toString()}${u.hash||""}`,replace:!0})}if(Sr)return t.jsx("div",{className:dn.standaloneWrapper,"data-theme":Hn,children:t.jsx("div",{className:pe.loginView,children:t.jsxs("div",{className:pe.loginCard,children:[t.jsxs("div",{className:pe.authBrandRow,children:[t.jsx("img",{src:qn,alt:"Taskforce",className:pe.loginLogo}),t.jsx("h1",{className:pe.loginTitle,children:"Loading Taskforce"})]}),t.jsx("p",{className:pe.loginSubtitle,children:"Checking your session..."})]})})});if(Gr)return t.jsx("div",{className:dn.standaloneWrapper,"data-theme":Hn,children:t.jsx("div",{className:pe.loginView,children:t.jsxs("div",{className:pe.loginCard,children:[t.jsxs("div",{className:pe.authBrandRow,children:[t.jsx("img",{src:qn,alt:"Taskforce",className:pe.loginLogo}),t.jsx("h1",{className:pe.loginTitle,children:"Loading Taskforce"})]}),t.jsx("p",{className:pe.loginSubtitle,children:br}),qt==="stalled"&&t.jsxs(t.Fragment,{children:[t.jsx("p",{className:pe.loginError,children:Da||"Startup checks timed out."}),t.jsx("button",{className:m.submitBtn,disabled:ln,onClick:Kt,children:ln?"Retrying...":"Retry checks"}),na&&t.jsx("button",{className:m.cancelBtn,disabled:ln,onClick:cr,children:"Go to sign-in"})]})]})})});if(Xt)return t.jsx("div",{className:dn.standaloneWrapper,"data-theme":Hn,children:t.jsx("div",{className:pe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${jm})`},children:t.jsxs("div",{className:pe.loginCard,children:[!na&&!$a&&t.jsx("button",{className:pe.loginCloseBtn,"aria-label":"Close sign in","data-testid":"auth-close-button",onClick:()=>b(Pn,{replace:!0}),children:"×"}),t.jsxs("div",{className:pe.authBrandRow,children:[t.jsx("img",{src:qn,alt:"Taskforce",className:pe.loginLogo}),t.jsxs("h1",{className:pe.loginTitle,children:["TASKFORCE ",t.jsx("span",{className:pe.loginTitleAccent,children:"HQ"})]})]}),t.jsxs("p",{className:pe.loginSubtitle,children:[N==="login"&&"Sign in with your account credentials.",N==="register"&&"Create your Taskforce account.",N==="verify"&&"Enter your verification token.",N==="forgot"&&"Request a password reset link.",N==="reset"&&"Set a new password using your reset token.",N==="invite"&&(D==="existing_user_ready"?`You've been invited to join ${Ne||"this workspace"}.`:D==="existing_user_signed_out"?"Sign in to join this workspace.":"Create your account to join this workspace.")]}),(N==="login"||N==="register"||N==="verify"||N==="forgot"||N==="invite"&&D==="existing_user_signed_out")&&t.jsxs("label",{className:pe.loginField,children:[t.jsx("span",{className:pe.loginFieldLabel,children:"Email"}),t.jsx("input",{className:`${m.input} ${pe.loginInput}`,type:"email",value:j,placeholder:"Email",autoComplete:"email","data-testid":"auth-email-input",onChange:O=>F(O.target.value)})]}),N==="register"&&t.jsxs("label",{className:pe.loginField,children:[t.jsx("span",{className:pe.loginFieldLabel,children:"Display name"}),t.jsx("input",{className:`${m.input} ${pe.loginInput}`,type:"text",value:B,placeholder:"Display name",autoComplete:"nickname","data-testid":"auth-display-name-input",onChange:O=>se(O.target.value)})]}),(N==="login"||N==="register"||N==="reset"||N==="invite"&&(p||D==="existing_user_signed_out"))&&t.jsxs("label",{className:pe.loginField,children:[t.jsx("span",{className:pe.loginFieldLabel,children:N==="reset"?"New password":N==="invite"&&p?"Create password":"Password"}),t.jsx("input",{className:`${m.input} ${pe.loginInput}`,type:"password",value:K,placeholder:N==="reset"?"New password":N==="invite"&&p?"Create password":"Password",autoComplete:N==="register"||N==="reset"||N==="invite"&&p?"new-password":"current-password","data-testid":"auth-password-input",onChange:O=>te(O.target.value)})]}),N==="verify"&&t.jsxs("label",{className:pe.loginField,children:[t.jsx("span",{className:pe.loginFieldLabel,children:"Verification token"}),t.jsx("input",{className:`${m.input} ${pe.loginInput}`,type:"text",value:$,placeholder:"Verification token",autoComplete:"one-time-code","data-testid":"auth-verification-token-input",onChange:O=>q(O.target.value)})]}),N==="reset"&&t.jsxs("label",{className:pe.loginField,children:[t.jsx("span",{className:pe.loginFieldLabel,children:"Reset token"}),t.jsx("input",{className:`${m.input} ${pe.loginInput}`,type:"text",value:Ae,placeholder:"Reset token",autoComplete:"one-time-code","data-testid":"auth-reset-token-input",onChange:O=>he(O.target.value)})]}),N==="invite"&&t.jsxs(t.Fragment,{children:[t.jsxs("label",{className:pe.loginField,children:[t.jsx("span",{className:pe.loginFieldLabel,children:"Invite token"}),t.jsx("input",{className:`${m.input} ${pe.loginInput}`,type:"text",value:Ce,placeholder:"Invite token","data-testid":"auth-invite-token-input",onChange:O=>le(O.target.value)})]}),be&&t.jsxs("p",{className:pe.loginSubtitle,children:["Invite for: ",t.jsx("strong",{children:be}),Ne?` · Workspace: ${Ne}`:""]})]}),_&&t.jsx("p",{className:pe.loginSubtitle,children:_}),H&&t.jsx("p",{className:pe.loginError,children:H}),N==="login"&&re==="EMAIL_NOT_VERIFIED"&&j.trim()&&t.jsx("button",{className:pe.authModeLink,disabled:ie||xr,onClick:async()=>{W(!0),M(null);const O=await Qn(j);O.success?(ge(Date.now()+3e4),on("verify"),O.verificationToken&&q(O.verificationToken),M(ha(O)),R(null),V(null)):R(Dr(O)),W(!1)},children:xr?`Resend in ${Nn}s`:"Resend Verification Email"}),t.jsx("div",{className:pe.authPrimaryActions,role:"group","aria-label":"Primary authentication action",children:t.jsx("button",{className:`${m.submitBtn} ${pe.loginPrimaryBtn}`,disabled:ie||N==="forgot"&&Ha,"data-testid":"auth-submit-button",onClick:async()=>{if(W(!0),M(null),R(null),V(null),N==="register"&&!B.trim()){R("Display name is required."),W(!1);return}let O={success:!1};if(N==="login"?O=await tr(j,K):N==="register"?O=await Xn(j,K,{displayName:B,planId:v||void 0,planVersionId:x||void 0,interval:S||void 0}):N==="verify"?O=await ea($):N==="forgot"?O=await Rr(j):N==="reset"?O=await Un(Ae,K):N==="invite"&&(D==="existing_user_signed_out"?O=await tr(j,K):O=p?await yr(Ce,K):await gt(Ce)),O.success)if(N==="register"){const Je=za(O),$t=fa(O);O.verificationRequired?(ue(!!O.workspaceSetupRequired),E($t?String(O.commercialState||"").trim()||(O.planSelectionRequired?"pending_plan_selection":"checkout_pending"):null),Z(Je),O.verificationToken&&q(O.verificationToken),ge(Date.now()+3e4),on("verify"),M(O.emailSent===!1?`Account created, but verification email failed to send. ${O.emailError||"Try Resend Verification again."}`:"Account created. Check your email for verification instructions.")):G({path:Je,workspaceSetupRequired:!!O.workspaceSetupRequired,commercialOnboardingGate:$t})}else if(N==="verify")await kn(),G({path:z||Pn,workspaceSetupRequired:de,commercialOnboardingGate:Y==="pending_plan_selection"||Y==="checkout_pending"});else if(N==="forgot"){const Je=O.deliveryAttempted===!0&&O.emailSent===!1;O.resetToken&&he(O.resetToken),M(ga(O)),Je||(ye(Date.now()+3e4),on("reset"))}else if(N==="reset")on("login"),M("Password updated. Sign in with your new password.");else if(N==="invite"){if(D==="existing_user_signed_out"){const Je=String(be||"").trim().toLowerCase(),$t=j.trim().toLowerCase();if(Je&&$t===Je){fe("invite"),I("existing_user_ready"),te(""),M("Signed in. Review the invite details to continue."),R(null),V(null),W(!1);return}Je&&F(be||""),I("existing_user_signed_out"),te(""),M(Je?`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."),R("Sign in with the invited account to join this workspace."),V("INVITE_ACCOUNT_MISMATCH"),W(!1);return}if(O.workspaceSetupRequired){b(Ia(),{replace:!0}),W(!1);return}b(Pn,{replace:!0})}else if(N==="login"){if(Ce.trim()){fe("invite"),te(""),M("Signed in. Review the invite details to continue."),W(!1);return}if(O.workspaceSetupRequired){b(Ia(),{replace:!0}),W(!1);return}F(""),se(""),te(""),b(Pn,{replace:!0})}else F(""),se(""),te(""),b(Pn,{replace:!0});else{if(N==="register"&&(O.code==="SIGNUP_PLAN_NOT_ENABLED"||O.code==="SIGNUP_PLAN_VERSION_NOT_FOUND"||O.code==="SIGNUP_PLAN_VERSION_REQUIRED")){b(P,{replace:!0}),W(!1);return}if(R(Dr(O)),V(O.code||null),N==="login"&&(O.code==="WORKSPACE_NOT_FOUND"||O.code==="WORKSPACE_ID_REQUIRED")){b("/setup?step=workspace",{replace:!0}),W(!1);return}if(N==="login"&&O.code==="EMAIL_NOT_VERIFIED"&&j.trim()){const Je=await Qn(j);Je.success&&(ge(Date.now()+3e4),on("verify"),Je.verificationToken&&q(Je.verificationToken),M(ha({...Je,intro:"If that account exists and still needs verification, we sent an email."})),R(null),V(null))}N==="register"&&O.code==="EMAIL_ALREADY_EXISTS_UNVERIFIED"&&j.trim()&&(ge(Date.now()+3e4),on("verify"),O.verificationToken&&q(O.verificationToken),M(O.emailSent===!1?`This email already has an unverified account, but verification email delivery failed. ${O.emailError||"Try Resend Verification again."}`:"This email already has an unverified account. Check your email for verification instructions."),R(null),V(null))}W(!1)},children:ie?"Working...":N==="login"?"Sign In":N==="register"?"Create Account":N==="verify"?"Verify Email":N==="forgot"?Ha?`Retry in ${Na}s`:"Send Reset Link":N==="reset"?"Reset Password":D==="existing_user_signed_out"?"Sign In to Continue":p?"Create Account and Join":"Join Workspace"})}),N==="register"&&t.jsxs("p",{className:pe.registerConsent,children:["By creating an account, you agree to the"," ",t.jsx("a",{className:pe.registerConsentLink,href:"https://taskforcehq.com/legal/terms",target:"_blank",rel:"noopener noreferrer",children:"Terms of Service"})," ","and acknowledge the"," ",t.jsx("a",{className:pe.registerConsentLink,href:"https://taskforcehq.com/legal/privacy",target:"_blank",rel:"noopener noreferrer",children:"Privacy Policy"}),"."]}),t.jsxs("div",{className:pe.authSecondaryActions,role:"group","aria-label":"Authentication navigation",children:[Aa&&(N==="login"||N==="register")&&t.jsxs("p",{className:pe.authModeSwitch,children:[N==="login"?"Need an account?":"Already have an account?"," ",t.jsx("button",{className:pe.authModeSwitchLink,disabled:ie,"data-testid":"auth-switch-mode-button",onClick:()=>{R(null),V(null),M(null),on(N==="login"?"register":"login")},children:N==="login"?"Register":"Sign In"})]}),t.jsxs("div",{className:pe.authModeLinks,children:[(N==="login"||N==="register")&&t.jsxs(t.Fragment,{children:[t.jsx("button",{className:pe.authModeLink,disabled:ie||Ha,"data-testid":"auth-forgot-password-button",onClick:()=>{R(null),V(null),M(null),on("forgot")},children:Ha?`Forgot Password (${Na}s)`:"Forgot Password"}),t.jsx("button",{className:pe.authModeLink,disabled:ie||xr,"data-testid":"auth-resend-verification-button",onClick:()=>{R(null),V(null),M(null),on("verify")},children:xr?`Resend Verification (${Nn}s)`:"Resend Verification"}),t.jsx("button",{className:pe.authModeLink,disabled:ie,"data-testid":"auth-accept-invite-button",onClick:()=>{R(null),V(null),M(null),on("invite")},children:"Accept Invite"})]}),N!=="login"&&N!=="register"&&t.jsxs(t.Fragment,{children:[N==="verify"&&t.jsx("button",{className:pe.authModeLink,disabled:ie||xr||!j.trim(),"data-testid":"auth-resend-verification-button",onClick:async()=>{W(!0),M(null),R(null),V(null);const O=await Qn(j);O.success?(ge(Date.now()+3e4),O.verificationToken&&q(O.verificationToken),M(ha(O))):R(Dr(O)),W(!1)},children:xr?`Resend Verification (${Nn}s)`:"Resend Verification"}),t.jsx("button",{className:pe.authModeLink,disabled:ie,"data-testid":"auth-return-sign-in-button",onClick:()=>{R(null),V(null),M(null),on("login")},children:N==="verify"?"Back to Sign In":"Sign In"}),Aa&&N!=="verify"&&t.jsx("button",{className:pe.authModeLink,disabled:ie,"data-testid":"auth-return-register-button",onClick:()=>{R(null),V(null),M(null),on("register")},children:"Register"}),N==="reset"&&t.jsx("button",{className:pe.authModeLink,disabled:ie||Ha,"data-testid":"auth-return-forgot-password-button",onClick:()=>{R(null),V(null),M(null),on("forgot")},children:Ha?`Forgot Password (${Na}s)`:"Forgot Password"})]})]})]})]})})});if($a&&!Xt)return t.jsx("div",{className:dn.standaloneWrapper,"data-theme":Hn,children:t.jsx("div",{className:pe.loginView,children:t.jsxs("div",{className:pe.loginCard,children:[t.jsxs("div",{className:pe.authBrandRow,children:[t.jsx("img",{src:qn,alt:"Taskforce",className:pe.loginLogo}),t.jsx("h1",{className:pe.loginTitle,children:"Loading Taskforce"})]}),t.jsx("p",{className:pe.loginSubtitle,children:"Redirecting to sign in..."})]})})});if(Ba&&Ua)return t.jsx("div",{className:dn.standaloneWrapper,"data-theme":Hn,children:t.jsx("div",{className:pe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${jm})`},children:t.jsxs("div",{className:pe.loginCard,children:[t.jsxs("div",{className:pe.authBrandRow,children:[t.jsx("img",{src:qn,alt:"Taskforce",className:pe.loginLogo}),t.jsx("h1",{className:pe.loginTitle,children:"Private Beta"})]}),t.jsx("p",{className:pe.loginSubtitle,children:"You are signed in, but your account is not in the beta allowlist yet."}),t.jsx("p",{className:pe.loginSubtitle,children:"You will see the full app as soon as beta access is enabled."}),t.jsx("button",{className:m.cancelBtn,onClick:async()=>{await mn.logout(),b("/login",{replace:!0})},children:"Sign Out"})]})})});if(An||pn&&!!Ot||pn&&sr&&(Ta||oa||wr)){const O=!An&&(Ta||Fn==="error"),Je=!An&&!O&&(oa||Fn==="global"),$t=Le(O?"setup.headingCheckFailed":Je?"setup.headingGlobalRequired":"setup.headingWorkspaceRequired"),Pt=O?Le("setup.subtitleUnreadable"):Je?Le("setup.subtitleGlobalRequired"):null,Kn="Workspace",Ga=na||It!=="cloud",Gn=Ga&&xt==="details",ja=Ga&&xt==="library",Va=!na&&Sn&&Gn&&!Ot,Zr=yn?.runtimeMode==="cloud"?Nf:Vg,C=an?Rm(an.categories):"",_e=an?Rm(an.types):"",it=an?Rm(an.priorities):"",Ct=qe?Le("setup.saving"):Wa?Ot?Oa?"Retry Import":"Importing Workspace...":"Connect Workspace":Gn?"Continue":ja?"Create Workspace":"Connect Workspace";return t.jsx("div",{className:dn.standaloneWrapper,"data-theme":Hn,children:t.jsx("div",{className:pe.loginView,style:{backgroundImage:`linear-gradient(rgba(15, 15, 26, 0.88), rgba(15, 15, 26, 0.9)), url(${jm})`},children:t.jsxs("div",{className:pe.loginCard,children:[t.jsxs("div",{className:pe.setupHeaderRow,children:[t.jsxs("div",{className:pe.authBrandRow,children:[t.jsx("img",{src:qn,alt:"Taskforce",className:pe.loginLogo}),t.jsxs("h1",{className:pe.loginTitle,children:["TASKFORCE ",t.jsx("span",{className:pe.loginTitleAccent,children:"HQ"})]})]}),yn&&t.jsx("span",{className:pe.runtimeIconBadge,title:yn.runtimeMode==="cloud"?"Cloud runtime":"Local runtime","aria-label":yn.runtimeMode==="cloud"?"Cloud runtime":"Local runtime",children:ut.createElement(Zr,{size:16,"aria-hidden":!0})})]}),t.jsx("p",{className:pe.loginSubtitle,children:t.jsx("strong",{children:$t})}),Pt?t.jsx("p",{className:pe.loginSubtitle,children:Pt}):null,ee&&t.jsx("p",{className:pe.loginSubtitle,children:ee}),$e&&t.jsx("p",{className:pe.loginError,children:$e}),Je&&t.jsxs("div",{className:pe.optionGrid,children:[t.jsxs("label",{className:`${pe.authModeLink} ${pe.optionRow}`,children:[t.jsx("input",{type:"radio",name:"setup-mode",value:"core",checked:Ye==="core",onChange:()=>bt("core"),disabled:qe}),t.jsx("span",{children:Le("setup.coreModeOption",{workspaceLabel:Kn})})]}),t.jsxs("label",{className:`${pe.authModeLink} ${pe.optionRow}`,children:[t.jsx("input",{type:"radio",name:"setup-mode",value:"operations",checked:Ye==="operations",onChange:()=>bt("operations"),disabled:qe}),t.jsx("span",{children:Le("setup.operationsModeOption")})]})]}),!O&&!Je&&t.jsxs("div",{className:pe.optionGrid,children:[Va&&t.jsxs("div",{className:pe.optionGroup,children:[t.jsxs("label",{className:`${pe.authModeLink} ${pe.optionRow}`,children:[t.jsx("input",{type:"radio",name:"workspace-setup-source",value:"local",checked:It==="local",onChange:()=>tt("local"),disabled:qe}),t.jsxs("span",{children:["Create new local ",Kn.toLowerCase()]})]}),t.jsxs("label",{className:`${pe.authModeLink} ${pe.optionRow}`,children:[t.jsx("input",{type:"radio",name:"workspace-setup-source",value:"cloud",checked:It==="cloud",onChange:()=>tt("cloud"),disabled:qe}),t.jsxs("span",{children:["Sync existing cloud ",Kn.toLowerCase()]})]})]}),Wa?t.jsxs("div",{className:pe.optionGroup,children:[!Ot&&!Sn&&t.jsx("p",{className:pe.loginError,children:"Cloud workspace sync is unavailable right now. Switch back to local setup or refresh runtime configuration."}),!Ot&&Sn&&!Vt&&t.jsxs(t.Fragment,{children:[t.jsx("p",{className:pe.inlineHint,children:"Sign in to choose one of your cloud projects."}),t.jsxs("div",{className:pe.actionRowEnd,children:[t.jsx("button",{className:m.cancelBtn,disabled:qe,onClick:()=>{b(`/login?mode=login&next=${encodeURIComponent(Wn)}`,{replace:!0})},children:"Sign In"}),Aa&&t.jsx("button",{className:m.submitBtn,disabled:qe,onClick:()=>{b(`/login?mode=register&next=${encodeURIComponent(Wn)}`,{replace:!0})},children:"Register"})]})]}),!Ot&&Sn&&Vt&&t.jsxs(t.Fragment,{children:[t.jsxs("select",{className:m.input,value:at,onChange:U=>Nt(U.target.value),disabled:qe||Rt||ct.length===0,children:[ct.length===0&&t.jsx("option",{value:"",children:Rt?"Loading cloud projects...":"No cloud projects found"}),ct.map(U=>t.jsxs("option",{value:U.id,children:[U.name," (",U.id,")"]},U.id))]}),t.jsx("div",{className:pe.actionRowEnd,children:t.jsx("button",{className:m.cancelBtn,disabled:qe||Rt,onClick:()=>{Vr()},children:"Refresh Cloud Projects"})}),ke&&t.jsx("p",{className:pe.loginError,children:ke})]}),Ot&&t.jsxs(t.Fragment,{children:[t.jsxs("p",{className:pe.inlineHint,children:['Importing "',Ot.name,'" from cloud into local.']}),t.jsx("div",{className:pe.optionGroup,children:zr.map(U=>t.jsx("p",{className:pe.inlineHint,children:U},U))}),t.jsx("p",{className:pe.inlineHint,children:J?"Finishing setup and opening your workspace.":Pa||"Pulling tasks, taxonomies, and settings into local."}),!J&&In&&t.jsx("p",{className:pe.inlineHint,children:In})]})]}):t.jsxs(t.Fragment,{children:[Gn&&t.jsxs(t.Fragment,{children:[t.jsx("p",{className:pe.loginSubtitle,children:"Workspace name"}),t.jsx("input",{className:m.input,type:"text",value:l,placeholder:"Workspace name",onChange:U=>rt(U.target.value),disabled:qe}),t.jsx("p",{className:pe.loginSubtitle,children:"Workspace description"}),t.jsx("textarea",{className:m.textarea,value:At,placeholder:"Workspace description (optional)",onChange:U=>jt(U.target.value),disabled:qe,rows:4})]}),ja&&t.jsxs("div",{className:pe.optionGroup,children:[t.jsx("p",{className:pe.loginSubtitle,children:"What are you working on?"}),t.jsxs("select",{className:m.input,value:St,onChange:U=>dt(U.target.value),disabled:qe||Ht||Ze.length===0,children:[Ze.length===0&&t.jsx("option",{value:"",children:Ht?"Loading setup options...":"No setup options available"}),Ze.map(U=>t.jsx("option",{value:U.id,children:U.label},U.id))]}),an?t.jsx(t.Fragment,{children:an.description?t.jsx("p",{className:pe.inlineHint,children:an.description}):null}):null,t.jsxs("div",{className:pe.optionGroup,children:[t.jsx("p",{className:pe.loginSubtitle,children:"Apply Setup Sections"}),t.jsxs("label",{className:`${pe.authModeLink} ${pe.optionRow}`,children:[t.jsx("input",{type:"checkbox",checked:Et.categories,onChange:()=>Ut(U=>({...U,categories:!U.categories})),disabled:qe||!an?.categories.length}),t.jsx("span",{children:"Categories"})]}),C?t.jsx("p",{className:pe.inlineHint,children:C}):null,t.jsxs("label",{className:`${pe.authModeLink} ${pe.optionRow}`,children:[t.jsx("input",{type:"checkbox",checked:Et.types,onChange:()=>Ut(U=>({...U,types:!U.types})),disabled:qe||!an?.types.length}),t.jsx("span",{children:"Task Types"})]}),_e?t.jsx("p",{className:pe.inlineHint,children:_e}):null,t.jsxs("label",{className:`${pe.authModeLink} ${pe.optionRow}`,children:[t.jsx("input",{type:"checkbox",checked:Et.priorities,onChange:()=>Ut(U=>({...U,priorities:!U.priorities})),disabled:qe||!an?.priorities.length}),t.jsx("span",{children:"Priorities"})]}),it?t.jsx("p",{className:pe.inlineHint,children:it}):null]}),Ht?t.jsx("p",{className:pe.inlineHint,children:"Loading setup options…"}):null,Zt?t.jsx("p",{className:pe.loginError,children:Zt}):null]}),!na&&Sn&&Vt&&Gn&&t.jsxs("div",{className:pe.optionGroup,children:[t.jsxs("label",{className:`${pe.authModeLink} ${pe.optionRow}`,children:[t.jsx("input",{type:"checkbox",checked:Re,onChange:U=>vt(U.target.checked),disabled:qe}),t.jsx("span",{children:"Sync to cloud after setup"})]}),t.jsx("p",{className:pe.inlineHint,children:"When enabled, this project will connect to cloud sync as soon as setup finishes."})]})]})]}),t.jsxs("div",{className:pe.authModeLinks,children:[ja?t.jsx("button",{className:m.cancelBtn,onClick:()=>{He(null),Be(null),Ve("details")},children:"Back"}):An?t.jsx("button",{className:m.cancelBtn,onClick:()=>{He(null),Be(null),b("/",{replace:!0})},children:"Cancel"}):rn==="cloud"?t.jsx("button",{className:m.cancelBtn,onClick:async()=>{await mn.logout(),b("/login",{replace:!0})},children:Le("setup.signOut")}):null,Je?t.jsx("button",{className:m.submitBtn,disabled:qe||Fa&&!!Ot&&!Oa,onClick:async()=>{Qe(!0),Be(null),He(null);try{const U=await fetch("/api/taskforce/global-settings",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({setup:{mode:Ye}})}),je=await U.json().catch(()=>({}));!U.ok||je?.success===!1?He(je?.error||Le("setup.saveFailedWithStatus",{status:U.status})):(Be(Le("setup.globalSetupSaved")),await Cn())}catch{He(Le("setup.saveFailed"))}finally{Qe(!1)}},children:Le(qe?"setup.saving":"setup.saveGlobalSetup")}):O?t.jsx("button",{className:m.submitBtn,disabled:qe,onClick:Cn,children:Le("setup.retrySetupCheck")}):t.jsx("button",{className:m.submitBtn,disabled:qe||Fa&&!Ot&&!Vt,onClick:async()=>{if(Fa&&Ot){if(!Oa)return;Qe(!0),Be(`Retrying import for ${Ot.name}...`),He(null);try{await sa()}catch{Be(null),He(`Failed to retry import for "${Ot.name}".`)}finally{Qe(!1)}return}if(Wa){if(!Sn){He("Cloud workspace sync is unavailable right now."),Qe(!1);return}if(!Vt){He("Sign in is required before syncing a cloud project."),Qe(!1);return}const U=ct.find(wn=>wn.id===at);if(!U){He("Select a cloud project to sync."),Qe(!1);return}const je=await Bn({workspaceId:U.id,name:U.name||U.id,description:U.description||void 0});if(!je.success){He(je.error||Le("setup.saveWorkspaceFailed")),Qe(!1);return}const ca=String(je.workspaceId||U.id||"").trim();if(!ca){He("Failed to resolve workspace id for sync setup."),Qe(!1);return}try{await hn(ca,{version:2,enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null,lastErrorMessage:null})}catch(wn){He(wn instanceof Error?wn.message:"Failed to configure workspace sync."),Qe(!1);return}$n({enabled:!0,phase:"attach-cloud",setupIntent:"attach-cloud-import",pullCursor:null}),await Cn(),kt({workspaceId:ca,name:U.name||U.id}),Se(!1),Be(`Importing ${U.name||U.id} from cloud...`),Qe(!1);return}if(Gn){if(!l.trim()){He("Workspace name is required before continuing.");return}He(null),Be(null),Ve("library");return}Qe(!0),Be(null),He(null);{const U=An||zt?.workspaceSetupState==="missing",je=An||ae&&U,ca=je?await Ft(l,At||void 0):null,wn=je?null:await Bn({workspaceId:U?void 0:zt?.workspaceId,name:l,description:At}),_r=ca||wn;if(!_r?.success)He(_r?.error||Le("setup.saveWorkspaceFailed"));else{const Za=String(ca?.workspace?.id||wn?.workspaceId||zt?.workspaceId||"").trim();if(!Za){He("Failed to resolve workspace id for setup."),Qe(!1);return}if(It==="local"&&!!an&&(Et.categories||Et.types||Et.priorities)&&an){const bs=await Ur.onApplySystemTaxonomyPack({pack:an,sections:Et,remapExistingValuesToDefault:!0,workspaceIdOverride:Za});if(!bs?.success){He(bs?.error||"Failed to apply setup library."),Qe(!1);return}}const qa=!!(!na&&Re&&Sn&&Vt),Cr=await fetch("/api/taskforce/ui-state",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:Za,stateKey:"workspace-sync",patch:{version:2,enabled:qa,phase:qa?"provision-local":"idle",setupIntent:null,pullCursor:null,lastPullAt:null,lastPushAt:null,lastSyncedAt:null}})}),qr=await Cr.json().catch(()=>({}));if(!Cr.ok||qr?.success===!1){He(qr?.error||`Failed to configure workspace sync (${Cr.status})`),Qe(!1);return}$n({enabled:qa,phase:qa?"provision-local":"idle",setupIntent:null,pullCursor:null}),Be(qa?`${Kn} setup saved. Cloud sync enabled.`:Le("setup.workspaceSetupSaved",{workspaceLabel:Kn})),An&&(await Cn(),await Ca(!0),b("/",{replace:!0}))}}Qe(!1)},children:Ct})]})]})})})}return t.jsx(wL,{...mn,onHeaderMouseDown:s,isDragging:o,onClose:c})}function xL(e){return ry()?t.jsx(wf,{...e}):t.jsx(sy,{children:t.jsx(wf,{...e})})}const Zh={},bf="STAGING_MARKER_2026_02_24";typeof window<"u"&&(window.__TASKFORCE_BUILD_MARKER=bf,console.info(`[Taskforce] Build marker: ${bf}`));function _L(){return ep(Zh).apiBaseUrl||void 0}function CL(e){const n=ep(Zh),r=n.cloudAuthBaseUrl;if(r)if(typeof window<"u"){const s=window.location.hostname.toLowerCase(),o=s==="localhost"||s==="127.0.0.1"||s==="::1",c="".trim().toLowerCase()==="true";if(!o&&!c)try{const i=new URL(r,window.location.origin);if(i.origin!==window.location.origin)console.warn(`[Taskforce] Ignoring cross-origin cloud auth base in hosted runtime: ${i.origin}`);else return r}catch{}else return r}else return r;if(n.baseUrl)return n.baseUrl;if(e)return e}function AL(){const e=_L(),n=CL(e);return t.jsx(oy,{children:t.jsx(xL,{mode:"standalone",config:{apiEndpoint:"/api/taskforce/task",apiBaseUrl:e,cloudAuthBaseUrl:n}})})}vg.createRoot(document.getElementById("root")).render(t.jsx(ut.StrictMode,{children:t.jsx(AL,{})}));export{BL as A,Hm as B,lf as C,_c as D,df as E,lP as F,dP as G,Ai as I,uo as M,WL as P,yh as R,Pl as T,Cu as a,jr as b,Gy as c,yy as d,On as e,hm as f,ou as g,a1 as h,Lv as i,FL as j,r1 as k,fh as l,dE as m,Pe as n,dk as o,ih as p,cu as q,ma as r,lu as s,m as t,ML as u,DL as v,LL as w,PL as x,nD as y,Qm as z};
|